Next

  The most notable changes are introduction of signal-slot architecture and
  changes in the interface between Stag and plugins. Stag is also able to
  generate RSS feeds now thanks to the new XML plugin.

  [Breaking changes]
  - Signals, Plugins: signal-slot architecture replaces the old list of readers,
    generators and writers. Plugins should subscribe to one of the available
    signals from stag.signals.signals via connect() method of a chosen signal.
  - Signals: due to above change, plugins.base module is removed.
  - Plugins: plugins must supply a register_plugin() function inside their
    Python module file
  - Taxonomies: instead of page.list, list of terms can be now accessed as
    page.taxonomy.terms and list of pages in a term can be accessed as
    page.term.pages. page.list is removed.
  - Taxonomies: renamed page.taxonomy.key to page.taxonomy.name
  - Plugins, Config: plugins configurations must be now registered directly
    through config module; this can be done by calling config.update_plugin_table()
  - Config: [plugins.template] changed to [template]
  - Page.url now returns a full (absolute) URL. To get the old relative URL
    ("path"), Page.relurl should be used
  - Site.add_page() renamed to make_page(). This method becomes a factory
    which creates pages instead of storing already created ones. It accepts
    relative URLs and makes sure that Pages are created with absolute URLs.
    Similarily, Site.get_or_create_page() is renamed to get_or_make_page().

  [Added]
  - Plugins: new built-in plugin: XML, which handles XMLs with optional front
    matter. Its original purpose is to be used for generating RSS feeds and
    sitemaps.
  - Signals: setting components of Page automatically sends appropriate signals
  - Plugins: plugins can reister URL handlers by calling
    reading.readers.register_reader(). URL handlers are used by stag to decide
    non-standard paths for pages handled by specific plugins.
  - Plugins: front matter is more flexible now: it can be any string built from
    consecutive repeated characters.
  - Plugins: created plugins common helper functions: stag.plugins._helpers
  - Templates: new Jinja filters: rfc822format, pagetype
  - Config: Added timezone field to the configuration, which for now is just a
    string appended to the formatted date in rfc822format
  - Stag will now prioritize command-line switches for the options which are
    also configured in config.toml.
  - Added --output switch to build and serve subcommands.
  - site.subpages_of() receives a new parameter which allows a recursive search
    of subpages.

  [Changed]
  - Plugins: template rendering (Jinja) and file reading are no longer plugins

  [Fixed]
  - Templates: Renderer doesn't suppose pretty URLs for all of the files it
    processes anymore
  - Templates: files with non-pretty paths (i.e. the ones not finishing with
    index.<ext>) are no longer rendered to the incorrect path.

0.1.0: 2021-09-16

  This is the initial release of stag.

  [Added]
  - stag build subcommand to generate static website
  - stag serve subcommand to generate static website and then serve it locally
    with a light HTTP server
  - handling configuration in TOML format
  - plugin-based architecture which allows endless extensibility
  - support for Jinja themes
  - support for static files
  - support for input in Markdown with TOML front-matter
  - support for "macros" (shortcodes)
  - auto-generating taxonomies
