Skip to content

Releases: tclssg/tclssg

v2.3.0

11 May 12:19
Compare
Choose a tag to compare

This release introduces Tcl 9 compatibility.

Tclssg

Fixes

  • Fixed incorrect HTML-entities encoding of & as &amp (without the semicolon).

Features

  • Tclssg works in Tcl 9.0b2rc2.
  • Performance has been improved, especially for large websites. The recommendation to have under 1000 pages no longer applies.

DustMote-Snit

  • DustMote-Snit also works in Tcl 9.0b2rc2.
  • The server will redirect /dir to /dir/. This is necessary for browsers to handle relative links in the directory listings correctly. See https://stackoverflow.com/a/16445016.
  • The license is now MIT No Attribution. It is better to use a standard public-domain-equivalent license than a custom public domain dedication.

v2.2.1

11 Oct 09:13
Compare
Choose a tag to compare

Tclssg

Fixes

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

DustMote-Snit

  • The web server log now includes timestamps.

v2.2.0

02 Sep 17:26
Compare
Choose a tag to compare

This releases focuses on news feeds.

Tclssg

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.

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.

v2.1.2

01 Sep 12:33
Compare
Choose a tag to compare

Tclssg

Fixes

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

DustMote-Snit

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

v2.1.1

30 Aug 12:52
Compare
Choose a tag to compare

Tclssg

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. 🤦 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.

DustMote-Snit

  • Internal improvements to the web server.

v2.1.0

14 Aug 13:35
Compare
Choose a tag to compare

Tclssg

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.

Features

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

v2.0.0-beta-6

23 Feb 11:42
Compare
Choose a tag to compare

New in this release

⚠️ 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

10 Apr 15:24
Compare
Choose a tag to compare

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-5

11 Feb 13:40
Compare
Choose a tag to compare

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

11 Dec 11:46
Compare
Choose a tag to compare

This release:

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