Skip to main content

Springheel Changelog

Version 7.0.0 “Chilchuck”

Date: 2021-06-21

It’s Springheel’s biggest release yet! I’ve changed or improved almost every aspect of the program, so there’s almost too much to describe.

New Features

  • Springheel now accepts metadata, transcript, and character files in JSON format. It expects the extensions “.meta.json” and “.transcript.json” for the former (respectively); character files can be named whatever you like, as they’re specified in the comic configuration. Set json_mode in conf.ini to True to try it out. The tutorial has detailed syntax examples. Note that generation may behave erratically if some input files are JSON and others are not; if you’re going to use JSON mode, make sure to convert all metadata, transcript, and character files to JSON format first.

  • A new command line script, springheel-addimg, will automatically generate metadata files for strip images.

  • Springheel now automatically detects sizes for all images, removing the need to manually specify them in metadata. Dimensions are also stated in the output HTML, so page elements do not move or jitter as images load. This feature and springheel-addimg add Pillow as a dependency.

  • You can now create “webtoon”-style comics with multiple image files per strip! Set mode to “webtoon” in both the comic .conf and the strip’s metadata, then add a list of image filenames to the latter as pieces:, à la pieces: panel2.png, panel3.png.

  • Springheel now contains proper documentation built with Sphinx. It’s the future! The rst files can be found in docsource when you download Springheel’s source code, but they’re mostly just automodule stuff, so I don’t know how useful they’ll be. I also built them with my own customized theme, so locally-produced output may vary. Note that you’ll need the numpydoc extension to build the docs from source.

  • Springheel can now generate “about” pages with long descriptions of comics, optionally with a subset of HTML. To use it, set about to True in conf.ini and define the about section in the relevant .conf file with “about =”. You can include line breaks by writing \n where needed. This feature adds a new dependency on html-sanitizer.

  • Some non-integer page numbers – decimals (like “6.5”) and double-page ranges (like “116–117”; en dashes and hyphens both work) – are now accepted.

  • Alt text on navigation arrows includes numbers, so assistive tech users can more quickly tell where they are actually going (without having to look at other areas of the page, identify relevant bits of long URLs, etc.).

  • Added a new “chapter view” – if chapters are enabled, you can generate pages for each chapter that show all that chapter’s strips (and the appropriate metadata) and allow navigation between chapters; as with individual comics, navigation will not appear if there is only one chapter. On sufficiently wide screens, two pages appear side by side, much like pages of a physical book.

  • The separator between stat line elements is now a translatable template string, so you can edit it locally if you want a different one.

  • Allow setting raw HTML copyright/license statements with license_html in .conf files.

  • The date formatting string is now editable in strings.json. Caveats: for compatibility, there is no single string passed directly to strftime. Instead, the values of strf_format (default: “%Y{y}%m{m}%d{d}”) and date_format (list of 3 strings, can be “”) are combined. Warning: because of the variety of different areas of the code where dates are used, substantial changes to strf_format may cause unpredictable problems during build.

  • The extras page now indicates the size of downloadable files in bytes, kibibytes, or mebibytes.

  • You can now manually specify slugs. For categories, add a line like slug = desired-slug to the .conf file. For strips, add title_slug: desired-slug to the .meta file. (Strip slugs are only used in image rename patterns.) This is especially useful for non-ASCII languages that get odd output from the existing slug system.

  • Added rudimentary support for OpenGraph and Twitter Card tags.

  • If a comic is based on an existing work, you can now add a link to the source in its .meta file à la source: https://example.com, and it will appear in the statline.

  • Springheel’s command-line messages are now translatable with gettext, making the program easier to use in other languages.

  • Type hints have been added to all functions.

New Default Themes

  • “elemental” subthemes “electricity”, “ice”, “wood”, and “metal”.

  • “staples”

  • “meikai”

  • “berryheart”

  • “blacktea”

Improvements

  • File copying and similar features are now performed asynchronously, so they should be considerably faster. This increases the minimum Python version required to 3.7.

  • Previous/next buttons are no longer displayed if there is only one more strip in that direction (i.e., first/previous or next/last have the same value), to avoid having multiple buttons going to the same page.

  • If only one strip (or chapter) exists in a category, navigation is not generated at all.

  • Figure captions are no longer displayed if nothing has been set for them. (Of course actual alt text is present for the images themselves.)

  • “Permalink” has been added to the stat line.

  • Chapters no longer must have titles (this was intended to be the case already, but I forgot).

  • Transcript parsing is much neater and cleaner, and accepts more line endings.

  • Lots of fixes to make the code faster and cleaner.

  • Tuned up all themes and templates significantly. They are cleaner and more accessible all around.

  • The “twothousand” theme in particular has been almost entirely rewritten. It should be less ugly and more faithful to the era it evokes.

  • Category/chapter/page information has been moved to the stat line (“Posted by Jane Smith on such-and-such date”), and links to the chapter-view page if applicable.

  • Copyright footer information is more detailed, especially when strips in the same category have different authors.

  • Copyright years are now listed as a range from the original posting date to the current year as of site-generation time.

  • Meta lines include links to transcript files, instead of just metadata files.

  • Springheel now fails to build if a page without a chapter specified is in a category that is divided into chapters. (At present, Springheel is not designed to allow this.)

  • Post dates are now displayed in archives.

  • On Japanese sites, dates now appear formatted like “[year]年[month]月[day]日”, as this isn’t substantially different from ISO 8601.

  • Table of contents generation has been expanded to include non-chaptered comics.

  • The scrollto preference has been removed, as it was causing issues with other necessary features.

  • Comics without transcripts no longer display a message to that effect on generated pages. I reasoned that it was confusing to have a “transcript” heading if there was in fact no transcript present. The JSON endpoints file will still contain transcript_c: "<p>The author has not provided a transcript for this comic.</p>" (or the equivalent in the site language) for consistency.

  • In the same vein, comics without commentary do not display the “no commentary” message and have the “Commentary” heading switched out for “Metadata”.

  • The links to metadata and transcript files now indicate the approximate type of file they are. In default mode, this will be “YAML” for metadata and “TXT” for transcripts, and in JSON mode, “JSON” for both.

  • Made it less annoying to add new fields to strings.json.

  • Logging has been improved and now defaults to off. To enable it, just add --logging as an argument to springheel-build.

  • Skip-navigation links are now always visible in all themes, rather than being visually hidden until activated.

  • The “home” link in top navigation has been removed, and the header image is now a link to the home page.

Bugfixes

  • Finally switched the meanings of “header” and “banner” in configuration files and templates, and renamed the banner_filename option in conf.ini to header_filename. This is a backwards-incompatible change. (I originally got them the wrong way around by mistake, and was waiting for a major version to fix it.)

  • Navigation goes only to existent pages, to avoid 404 errors from numbering gaps.

  • If multiple comics on a multi-theme site use the same theme, that theme is no longer relentlessly duplicated by the stylesheet concatenation process.

  • Comics are now sorted consistently on index and archive pages.

  • Chapter titles no longer contain trailing newlines.

  • If a comic has multiple authors, this is reflected in the JSON Feed.

  • Characters are attributed to the correct comics in the site JSON endpoints file.

  • Commentaries no longer contain empty <p> elements.

No matter how many times the Sun rises or the Moon sets, like the lodestar above that guides us, may the winds of fortune ever blow your way.

Version 6.0.3

Date: 2020-07-26

  • Fixed a bug that kept headers and banners from copying to output under some circumstances.

Version 6.0.2

Date: 2020-07-18

  • Removing some accidental JSON debug output from building. ^_^;;

Version 6.0.1

Date: 2020-07-18

  • Replaced awesome-slugify with python-slugify, as the former is no longer actively developed.

  • Minor updates to JSON Feed generation to comply with version 1.1 of the spec.

Version 6.0.0 “Ukyou”

Date: 2020-05-27

  • Added new themes “fluff”, “crystal”, and “elemental” (which is configurable, like “seasonal”).

  • Added progress bars for time-consuming parts of site generation, like finding images and creating tag index pages. This feature adds tdqm as a dependency.

  • Added rudimentary JSON Feed support. I hacked this together myself based on existing JSON endpoint bits; it validates, but should be considered experimental.

  • Added feature to generate tables of contents on archive pages if the comic has chapters.

  • Improvements to the “book”, “fairy”, “gothic”, and “city” themes.

  • Optimized some graphics slightly. There should be little or no visual difference.

  • Cut some unneeded mixin imports from the theme SCSS files.

  • Fixed an error in the default conf.ini – scrollto was mistakenly listed as skipto and so did not work.

  • Fixed several bugs in non-chaptered comic archives.

  • Changed the recommended alternate value of scrollto from “comic” to “topbox” so that above-strip navigation can still be accessed. “comic” is still accepted as a valid value for scrollto.

  • Added scrollto to archive links as well.

  • Allow disabling scrollto by setting it to False.

  • Added classes and I.D.s to some elements that did not have them.

  • Added social button for Mastodon.

  • RSS feed generation bugfixes: less hacky output selection and comment creation, and strips with a more recent date will appear closer to the top of the XML file.

  • Cleaned up social media icon code and markup a bit.

  • Removed trailing spaces that were accidentally inserted after speaker identifiers in transcripts.

  • Many improvements to the HOWTO.md tutorial file.

  • Adding page URL as an argument to format() when generating pages. If you want to add something like a “share” button to your page templates (per the “Extending Springheel Sites” section of HOWTO.md), you can use {url} in place of a static permalink. Springheel will now replace that with the page’s URL.

  • The default alt text that appears when alt is unset is now more informative.

  • Page numbering now sensibly allows for page number 0. (It previously started from 1.) This allows for cover pages and the like without creating confusing constructions like “Page #2 ‘Page 1’”.

  • If they exist, some non-strip assets (e.g. stylesheets, site graphics, navigation arrows) are no longer rewritten when building, to avoid them being copied and re-copied over and over. Delete output/assets and output/arrows if you do want to overwrite these files.

Version 5.2.4

Date: 2019-12-29

  • Alt text for comic pages is now a translated string.

  • Extra images now have alt text, allowing screen readers on some platforms to announce their captions properly.

Version 5.2.3

Date: 2019-12-29

  • Finally accepted that my paltry attempt to support favicons was in error. Users who want to add favicons should edit their site’s local templates (the old/bad favicon code has been replaced with a comment indicating where to insert the output from a dedicated favicon generator) and manually copy the appropriate files into output.

  • Fixed a couple of minor HTML errors in templates (mostly extra whitespace and single-quoted elements) and the processing of same.

Version 5.2.2

Date: 2019-12-16

  • Improved metadata parsing a bit.

  • Added missing docstrings.

  • Fixed some quirks in page-footer copyright statements.

  • Cleaned up some unused functions.

  • Updated HOWTO.md

Version 5.2.1

Date: 2019-10-31

  • Removed the langcodes dependency. Multi-language site linking should work the same as before, if not better.

  • Added display of the original language code as a fallback if Springheel doesn’t know the proper name for a language during multi-language site linking.

Version 5.2.0 “Bossun”

Date: 2019-10-27

  • Made it possible to insert links to your Springheel site in other languages in the site footer, using the new multilang config option. Notably, this adds langcodes as a dependency (to display the language names correctly).

  • Added functionality to generate a JSON file (output/site.json) with detailed information about the site, including URL endpoints. This should theoretically make it easier to extend Springheel sites with other programs.

  • Fixed an error in social icon spacing. (Re-init any existing site templates.)

  • Updated HOWTO.md

Version 5.1.0 “Senku”

Date: 2019-10-23

  • Added a configuration option for skip links and comic navigation to scroll directly to the comic image, instead of to the page title.

  • Fixed an error that was preventing sites’ local strings.json files from being used.

  • Completely rewrote comic navigation.

  • Started work on a Spanish translation. It’s incomplete and likely weird in many places; I don’t actually speak Spanish. (The translation is based entirely on poking around on Spanish webcomic sites to see how they render the common terms, double-checking with several dictionaries.)

  • Started a French translation in the same way, although I’m even less sure of this one’s accuracy.

  • Removed references to GitHub from setup.py and templates in protest of their contract with ICE.

Version 5.0.3

Date: 2019-10-10

  • Fixed a major bug where comics on multi-comic sites were added to the wrong chapters.

  • Corrected the error message that appears if “status” is unset.

Version 5.0.2

Date: 2019-10-2

  • Fixed a bug where tag page results weren’t being sorted correctly.

  • Archive page titles for single-comic sites are now translatable.

  • Fixed an error where colons couldn’t be used in some metadata fields.

  • Removed the long-unnecessary language prompt when running springheel-init.

  • Lots of improvements to all themes. (Make sure to re-run springheel-init to update your stylesheets)

Version 5.0.1

Date: 2019-09-19

  • Started escaping most things that will appear as HTML.

Version 5.0.0 “Azumane”

Date: 2019-09-3

  • Added proper tagging system.

  • Added option for zero-padding page numbers.

  • Cleared out some unused stuff from archive and navigation generation + the default conf.ini

  • Fixed some issues with image renaming.

  • Fixed error where chaptered works sometimes appeared twice on archive pages.

  • Started naming major/minor versions [STRIKEOUT:after hot anime dudes]

Version 4.1.0

Date: 2019-07-23

  • Springheel now generates XML site maps of comic sites.

  • Cleaned up logging a bit.

Version 4.0.0

Date: 2019-06-20

  • Added new themes “revolution”, “fairy”, “sysadmin”, and “might”.

  • Separated traits from descriptions on character pages.

  • Fixed major error where a multi-comic site wouldn’t generate if some comics had a characters file and some didn’t.

  • Fixed bug where slugs were not URL-safe.

  • Fixed bug where the archive page’s main heading wasn’t getting translated.

  • Fixed bug where extras pages used a comic’s title and banner, instead of the sitewide ones.

  • Slight improvements to “seasonal” and “showtime” themes.

Version 3.0.3

Date: 2019-06-15

  • Fixed a very stupid copy+paste error that caused public domain comics to be described as published from a U.R.L. (instead of their respective country).

Version 3.0.2

Date: 2019-06-15

  • Did a better job fixing the character bug from the previous version.

  • Fixed an error where non-transcribed comics wouldn’t generate on Windows.

  • Fiddled with the markdown in HOWTO.md because it was displaying strangely in some programs.

Version 3.0.1

Date: 2019-05-25

  • Fixed a bug where archives weren’t generating correctly for non-chaptered comics.

  • Fixed a bug where the ordering of character attributes changed randomly every time the page was regenerated.

  • Updated some information in the default conf.ini file.

Version 3.0.0

Date: 2019-05-10

  • Added extras page functionality

  • Added new theme “showtime”

  • Corrected <title> elements for character pages

  • Improved logging

Version 2.0.0

Date: 2019-02-9

  • Condensed template files into one

  • Improved accessibility

  • Updated translations

Version 1.0.2

Date: 2019-01-25

  • Fixed a bug where archives couldn’t be generated for multi-comic sites.

Version 1.0.1

Date: 2019-01-25

  • Fixed the parts of the readme that said arrow was a dependency (it isn’t).

  • Fixed a bug where .sass-cache was getting installed as if it were a theme.

Version 1.0.0

Date: 2019-01-24

  • First public release!

  • Streamlined config files.

  • Tidied up all stylesheets and templates.

  • Added some more translation strings.

  • Refactored a whole lot of code and made it neater.

  • Fixed miscellaneous bugs.

  • Added new themes “rock” and “western”.

  • Added better arrows for some themes.