Releases: tclssg/tclssg
v2.3.0
This release introduces Tcl 9 compatibility.
Tclssg
Fixes
- Fixed incorrect HTML-entities encoding of
&
as&
(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
v2.2.0
This releases focuses on news feeds.
Tclssg
Fixes
- RSS:
- Setting
rss enable
andrss 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.
- Setting
- 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 deprecatesrss
. Therss
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
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
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
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
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'sdate
andmodified
when they don't contain a time zone as well as to add a time zone to the attributedatetime
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
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 nowcustomCSS
). Some settings have been deleted or had their possible values changed. Many website settings have become page settings for more granular configuration. The migration tooltools/migrate.tcl
is provided to handle these changes. - Presets give you a standard way to reuse page settings selectively.
blogPostSettings
andpageSettings
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 intools/
. 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
orhello-world/index.html
) are collected on one tag page. - Blog post dates can include a time zone.
v2.0.0-beta-5
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
This release:
- Fixes a page encoding problem.
- Adds support for dates with time zones.