Tclssg Versions Save

A static site generator

v2.2.1

3 years ago

Fixes

  • data*.md filenames no longer result in an error.

Features

  • The built-in web server log now includes timestamps.

v2.2.0

3 years ago

This releases focuses on news feeds.

Features

  • Feeds:
    • Two new types of feed are introduced: JSON Feed and twtxt.
    • The new feeds setting is added in the website config. This setting deprecates rss. The rss setting will continue to work in new releases of Tclssg v2.
  • Templates: Template procs now ignore unknown named arguments. This will help with template extensibility.

Fixes

  • RSS:
    • Setting rss enable and rss tagFeeds to false has an effect.
    • Feeds contain correct absolute links to the feed itself and to its corresponding page (blog index or tag page).
    • The feed content is quoted correctly with CDATA.
  • Tcl 8.5 incompatibilities are fixed. Tcl 8.5 will continue to be supported until the next major version release of Tclssg.

v2.1.2

3 years ago

Fixes

  • Markdown: Fixed a bug that caused markup after an HTML block to not be converted.
  • Process pages without frontmatter.

Features

  • The logging channel has been made configurable in the built-in Web server.
  • The Web server lets your know it's shutting down when you visit /bye.

v2.1.1

3 years ago

Fixes

  • Fixed a template bug that applied <meta name="robots" content="noindex"> to all pages. If you were wondering why Google wasn't indexing your website, this is why. :facepalm: It is recommended that users rebuild and redeploy their Tclssg v2 website projects.
  • The built-in Web server now handles resumed downloads correctly.

Features

  • Internal improvements to ::tclssg::utils and the bulit-in Web server.

v2.1.0

3 years ago

Features

  • Markdown: Add class="language-foo" to ```foo ...``` code blocks to help with syntax highlighting.
  • Template interpreter: Allow plugins to register new aliases. Example.

Fixes

  • CLI: Run when started from a different folder on Windows.
  • Markdown: Do not remove empty lines in HTML blocks. That was non-standard and inconvenient.

v2.0.0

4 years ago

This release completes the release cycle of Tclssg 2.0. Version 1.0 is now deprecated and won't be supported.

Below is a summary of the changes to Tclssg since version 1.0. It will be familiar to you if you have followed the beta releases of Tclssg 2.0.


This release brings major changes to Tclssg. You will need to migrate your version 1.0 project. See the migration guide. Projects created with Tclssg v2.0.0-beta-1 through Tclssg v2.0.0-beta-5 will likely need a minor update.

Summary

  • Templates have been unified. There is no more separate article and document template. The document template calls the article template as a function.
  • The build process has been refactored into a pipeline. This improves the modularity and generally the performance on larger website projects.
  • Tclssg projects can include plugins.
  • Settings have been renamed and grouped for improved consistency, clarity and aesthetics. (For example, customCss is now customCSS). Some settings have been deleted or had their possible values changed. Many website settings have become page settings for more granular configuration. The migration tool tools/migrate.tcl is provided to handle these changes.
  • Presets give you a standard way to reuse page settings selectively. blogPostSettings and pageSettings in the website config are subsumed into presets.
  • The website config is validated against a schema and must not have extraneous keys. Page settings, including presets, still allow unknown keys. These can be used, e.g., by plugins.
  • More convention over configuration. For example, the blog index page path and the debug directory path are now predefined and fixed. This allows us to remove a lot of complexity.
  • The absoluteLinks feature has been scraped. Tclssg has a strong point in generating relative links that are portable between hosts and paths, and supporting both absolute and relative links complicated templates.
  • The new logger produces a more human-readable, less repetitious output. See the updated sample session. A log search tool with color highlighting that understands this format better than grep is included in tools/. The output of the search tool is very close to the old log format.
  • Data files are a new feature with which you can, for example, generate tables from CSV files using macros.
  • Index page URLs have changed:
    • /tag-foo-2/ -> /tag-foo/page/2/
    • /index-2/ -> /page/2/
  • Tclssg can run tidy-html5 on its HTML output.
  • "HELLO WORLD" and "Hello, World!" are treated as the same tag. Blog posts that have a tag with the same tag page "slug" (the last part of the output path, for example, hello-world.html or hello-world/index.html) are collected on one tag page.
  • Blog post dates can include a time zone.

v2.0.0-beta-6

4 years ago

New in this release

:warning: Breaking changes

The config setting sortTagsBy has become a page setting.

Migration: replace sortTagsBy xyz in website.conf with {sidebar tagCloud sortBy} in presets/default with the same value.

The config setting websiteTitle has become a page setting.

Migration: move websiteTitle foo from website.conf to presets/default.

The config setting timezone has been removed. There are new page settings to replace it.

Migration: replace timezone in website.conf with {timezone date} in presets/default with the same value.

The new settings are:

  • {timezone date} — if set, used for scanning the page's date and modified when they don't contain a time zone as well as to add a time zone to the attribute datetime of the <time> tags of the article.
  • {timezone text} — a human-readable time zone name;
  • {timezone show} — whether to show {timezone text}.

The page setting moreText has been split into two.

Migration: rename the key moreText in $inputDir/presets/blog to {more markup}.

The new settings are {more markup} for the HTML markup with variables $link (as before) and $text (new) and {more text} for the human-readable customizable text like "read more". For example,

moreText {(<a href="$link">read more</a>)}

should be replaced with

{more markup} {(<a href="$link">read more</a>)}

or

more {
    markup {(<a href="$link">$text</a>)}
    text {read more}
}

Build

  • Fixes to the debugger.

Document

  • {bootstrap theme} can now be a link, not just a path.
  • The new page setting {sidebar tagCloud hide} allows you to hide certain tags.

v2.0.0-beta-5

4 years ago

New in this release

Build

  • Significantly improved build performance after a regression caused by the new tag collation in v2.0.0-beta-3.
  • Fixed a Markdown CR(-LF) newline conversion bug.
  • You can put Markdown files in $inputDir/data/.

Templates

  • A new named argument -articleScript in ::document::render.

v2.0.0-beta-4

4 years ago

This release:

  • Fixes a page encoding problem.
  • Adds support for dates with time zones.

v2.0.0-beta-3

4 years ago

This release:

  • Starts treating "HELLO WORLD" and "Hello, World!" as the same tag instead of throwing an error when both are present. Blog posts that have a tag with the same tag page "slug" (the last part of the output path, for example, hello-world.html or hello-world/index.html) will be collected on one tag page.
  • Improves Windows compatibility.
  • Fixes an HTML entities bug when tidy-html5 is enabled.