<rss version="2.0">
 <channel>
  <title>Zine Changelog</title>
  <link>https://zine-ssg.io/</link>
  <description>Curated list of changes to Zine</description>
  <generator>Zine -- https://zine-ssg.io</generator>
  <language>en-us</language>
  <lastBuildDate>Fri, 21 Nov 2025 14:21:16 +0000</lastBuildDate>
  
   
  
   
    <item>
     <pubDate>Fri, 21 Nov 2025 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.11.2</link>
     <guid>https://zine-ssg.io/log/#v0.11.2</guid>
     <title>v0.11.2</title>
     <description>&lt;div id=&quot;v0.11.2&quot;&gt;&lt;p&gt;This release fixes some bugs that were discovered since the last and should not require any change for existing websites.&lt;/p&gt;&lt;p&gt;The next release will merge a new version of Ziggy (the data language used in SuperMD frontmatters) that instead will require you to change your content files, so brace for upcoming impact :^) In exchange though, the Ziggy language has improved a lot and you will finally be able to get great code intelligence, which will help you get your frontmatters right more easily. More on that in the next release.&lt;/p&gt;&lt;p&gt;Fixes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Fixed rendering of links to alternatives when absolute paths are involved.&lt;/li&gt;&lt;li&gt;&lt;code&gt;zine init&lt;/code&gt; template files were created back before superhtml had good autoformatting support, resulting in a bunch of code moving around when you saved the file for the first time (using a new build of superhtml w/ more refined autoformatting behavior). Now the template files embedded in Zine have been formatted, giving you a better out-of-the-box experience.&lt;/li&gt;&lt;li&gt;Linking to the site homepage from SuperMD was impossible because of a bug and because of a missing feature. You can now use either vanilla syntax (&lt;code&gt;[home](/)&lt;/code&gt;) or explicit Scripty syntax (&lt;code&gt;$link.site()&lt;/code&gt;, just added in this release).&lt;/li&gt;&lt;li&gt;Zig build system integration: the serve step now correctly uses a prebuilt zine if you specify the &lt;code&gt;path&lt;/code&gt; option, previously it would ignore the setting and default to building Zine from scratch always.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Sat, 26 Jul 2025 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.11.1</link>
     <guid>https://zine-ssg.io/log/#v0.11.1</guid>
     <title>v0.11.1</title>
     <description>&lt;div id=&quot;v0.11.1&quot;&gt;&lt;p&gt; Another round of bug fixes, with this release all known bugs have been solved!&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The &lt;code&gt;release&lt;/code&gt; and &lt;code&gt;serve&lt;/code&gt; commands dealt with some asset paths in an inconsistent manner, resulting in the situation where an asset path would work with only one of them at a time, depending on whether it was absolute or relative. Now all paths are normalized before being used.&lt;/li&gt;&lt;li&gt;An absolute install path given to a static asset would be interpreted as a absolute path by &lt;code&gt;release&lt;/code&gt;, resulting in an attempt to install assets outside of the output directory which is, generally speaking, not optimal. We now normalize paths to ensure we don’t try to override your &lt;code&gt;/etc/shadow&lt;/code&gt; (or &lt;code&gt;~/.ssh/id_rsa&lt;/code&gt;) by mistake :^)&lt;/li&gt;&lt;li&gt;Fixed some invalid memory accesses when deiniting a website build. These bugs shouldn’t have impacted the user experience and were in fact caught by CI.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.11.0</link>
     <guid>https://zine-ssg.io/log/#v0.11.0</guid>
     <title>v0.11.0</title>
     <description>&lt;div id=&quot;v0.11.0&quot;&gt;&lt;p&gt; This release brings minor backwards compatibility breakage and a few good bug fixes.&lt;/p&gt;&lt;h3&gt;Breaking change&lt;/h3&gt;&lt;p&gt;Zine will now refuse to output a website release to a non-empty directory. This solves the problem of users being surprised that old files are somehow still “being rendered” when they’re actually not, and this also seems a better choice than defaulting to emtpying the output dir, as that could have catastrophic consequences.&lt;/p&gt;&lt;p&gt;You can use &lt;code&gt;--force&lt;/code&gt; (or &lt;code&gt;-f&lt;/code&gt;) to ignore the presence of other files.&lt;/p&gt;&lt;p&gt;Related to this change &lt;code&gt;--install&lt;/code&gt; has been renamed to &lt;code&gt;--output&lt;/code&gt; since Zine now refuses to “install” releases.&lt;/p&gt;&lt;h3&gt;Bugfixes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Added missing check to &lt;code&gt;nextPage?&lt;/code&gt;, &lt;code&gt;prevPage?&lt;/code&gt;, &lt;code&gt;hasNext&lt;/code&gt;, &lt;code&gt;hasPrev&lt;/code&gt; when the target page is the root index. The Zine section model defines the index page of a section to not be part of the section, consequently the root index cannot have any sibling. A proper error will be reported now.&lt;/li&gt;&lt;li&gt;Ziggy parsing code failed to report syntax errors in string escapes, resulting in the confusing situation where an error is being reported but the list of diagnostics is empty. This is now reported correctly.&lt;/li&gt;&lt;li&gt;SuperMD would mistake &lt;code&gt;![](https://foo.com/myphoto.jpg)&lt;/code&gt; (i.e. remote url in vanilla image syntax) for a local asset. This has now been fixed.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Wed, 16 Jul 2025 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.10.4</link>
     <guid>https://zine-ssg.io/log/#v0.10.4</guid>
     <title>v0.10.4</title>
     <description>&lt;div id=&quot;v0.10.4&quot;&gt;&lt;p&gt; This release upgrades Zine to Zig 0.15.0-dev (post Writergate) and fixes two silly bugs about build assets:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;The Zine live server will now correctly serve build assets (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/162&quot; target=&quot;_blank&quot;&gt;#162&lt;/a&gt;, thanks llyrical-island!).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Up until now Zine failed to install all build assets when making a site release. Turns out that we were missing the required code entirely, whoops!&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As an upgrade suggestion, if you have a website that uses build.zig and you don’t want to upgrade your own code to Zig 0.15.0-dev (post Writergate), then consider using in your build.zig &lt;code&gt;.zine = .{ .path = null }&lt;/code&gt; (it’s a field of &lt;code&gt;zine.Options&lt;/code&gt;), which will allow you to use a system-provided build of Zine.&lt;/p&gt;&lt;p&gt;Of course that won’t solve potential CI issues, but you will at least be able to try it out locally. If you’re in that situation, do try to upgrade your code it’s going to be worth it, especially in preparation for the upcoming async I/O redesign coming soon to Zig!&lt;/p&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Mon, 07 Jul 2025 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.10.3</link>
     <guid>https://zine-ssg.io/log/#v0.10.3</guid>
     <title>v0.10.3</title>
     <description>&lt;div id=&quot;v0.10.3&quot;&gt;&lt;p&gt; After hiatus of a few months, I’m resuming development of Zine. This release contains bug fixes and minor improvements.&lt;/p&gt;&lt;p&gt;This new Zine development season will focus on two main new big features:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;SuperHTML snippets, so the ability to create reusable components&lt;/li&gt;&lt;li&gt;LSP support for Scripty&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;New changes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Zine development server:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Added ipv6 support (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/146&quot; target=&quot;_blank&quot;&gt;#146&lt;/a&gt;, thanks Spiffyk!).&lt;/li&gt;&lt;li&gt;Fixed a crash when trying to some paths with a missing trailing slash.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;SuperHTML:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Added &lt;code&gt;str()&lt;/code&gt; to &lt;code&gt;Int&lt;/code&gt; to make it possible to use them in formatting (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/140&quot; target=&quot;_blank&quot;&gt;#140&lt;/a&gt;, thanks knutwalker!).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Tue, 22 Apr 2025 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.10.2</link>
     <guid>https://zine-ssg.io/log/#v0.10.2</guid>
     <title>v0.10.2</title>
     <description>&lt;div id=&quot;v0.10.2&quot;&gt;&lt;ul&gt;&lt;li&gt;SuperHTML:&lt;ul&gt;&lt;li&gt;Fixed a crash when using &lt;code&gt;$page.alternative()&lt;/code&gt;, in the refactoting to standalone I forgot to wire back some state management, resulting in a reliable crash when using that function. Sorry! Now it’s fixed though.&lt;/li&gt;&lt;li&gt;DateTime: introduced the ability to add and subtract time durations to a DateTime.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;SuperMD:&lt;ul&gt;&lt;li&gt;Fixed a crash when providing a URL to the root path in some directives.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Zine Development Server:&lt;ul&gt;&lt;li&gt;The hot reload script injected to your pages now has a &lt;code&gt;defer&lt;/code&gt; attribute which helps simplify local performance testing of your website.&lt;/li&gt;&lt;li&gt;Fixed websocket disconnections when the client sent long headers, particularly felt on Windows ((&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/139&quot; target=&quot;_blank&quot;&gt;#139&lt;/a&gt;) thanks Scott!).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Added nix flake ((&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/143&quot; target=&quot;_blank&quot;&gt;#143&lt;/a&gt;) thanks sreehax!)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Thu, 10 Apr 2025 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.10.1</link>
     <guid>https://zine-ssg.io/log/#v0.10.1</guid>
     <title>v0.10.1</title>
     <description>&lt;div id=&quot;v0.10.1&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;SuperMD:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Added support for &lt;a href=&quot;/docs/supermd/scripty/#Image.size&quot;&gt;&lt;code&gt;$image.size()&lt;/code&gt;&lt;/a&gt;&lt;br&gt;(specify image size manually)&lt;/li&gt;&lt;li&gt;Added support for fragments in Markdown vanilla link syntax. Now &lt;code&gt;[](/my/page/#my-ref)&lt;/code&gt; will correctly translate to &lt;code&gt;$link.page(&amp;apos;my/page&amp;apos;).ref(&amp;apos;my-ref&amp;apos;)&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;SuperHTML:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Added support for &lt;a href=&quot;/docs/superhtml/scripty/#Date.in&quot;&gt;&lt;code&gt;Date.in()&lt;/code&gt;&lt;/a&gt;&lt;br&gt;(change tz of a date based on a location string)&lt;/li&gt;&lt;li&gt;Added support for &lt;a href=&quot;/docs/superhtml/scripty/#String.startsWith&quot;&gt;&lt;code&gt;String.startsWith()&lt;/code&gt;&lt;/a&gt;&lt;br&gt;(&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/137&quot; target=&quot;_blank&quot;&gt;#137&lt;/a&gt;, thanks illfygli!)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Bugfixes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Fixed one memory corruption bug that could cause Zine to crash on startup (&lt;a href=&quot;https://github.com/kristoff-it/zine/commit/fc0b117f43d1ab985cc06b0c9a0639bd4479cd47&quot; target=&quot;_blank&quot;&gt;fc0b117&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Fixed some path manipulation inconsistencies on Windows, now CI is green also for the greatest OS ever made.&lt;/li&gt;&lt;li&gt;The help menu wrongly suggested to use &lt;code&gt;--output&lt;/code&gt; to specify an install path, while the correct string is &lt;code&gt;--install&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Zine checks for output path collisions but a bug in how page aliases were handled in the code could cause false positives.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Tue, 08 Apr 2025 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.10.0</link>
     <guid>https://zine-ssg.io/log/#v0.10.0</guid>
     <title>v0.10.0</title>
     <description>&lt;div id=&quot;v0.10.0&quot;&gt;&lt;h3&gt;Standalone Zine is here!&lt;/h3&gt;&lt;p&gt;It’s finally time to release the standalone version of Zine:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;it’s &lt;em&gt;stupid&lt;/em&gt; fast&lt;/li&gt;&lt;li&gt;it’s more strict than before&lt;/li&gt;&lt;li&gt;it removed almost all limitations (e.g. rendering other pages via scripty)&lt;/li&gt;&lt;li&gt;&lt;em&gt;it might have added new bugs as many things were reimplemented, sorry!&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/kristoff-it/zine/releases/&quot; target=&quot;_blank&quot;&gt;Download&lt;/a&gt; a prebuilt version to try it out.&lt;/p&gt;&lt;div class=&quot;block warning&quot;&gt;&lt;h1&gt;WARNING&lt;/h1&gt;&lt;p&gt;We have updated the suggested way of deploying to GitHub Pages, and for all GitHub based deployments you will want to check out &lt;a href=&quot;https://github.com/marketplace/actions/setup-zine&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;kristoff-it/setup-zine&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;If you’re a new user of Zine, I highly recommend you start by running &lt;code&gt;zine init&lt;/code&gt; in an empty folder to get a sample website bootstrapped for you by Zine.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;For existing users, here’s the upgrade guide after you have downloaded Zine and put it in PATH:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Create a &lt;code&gt;zine.ziggy&lt;/code&gt; file in your website’s root directory. Every option your original build.zig can be ported over except &lt;code&gt;build_assets&lt;/code&gt; (but &lt;a href=&quot;/docs/zig/&quot;&gt;build.zig integration still exists&lt;/a&gt; if you need that), here’s an example:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;ziggy&quot;&gt;&lt;span class=&quot;error&quot;&gt;Site &lt;/span&gt;&lt;span class=&quot;error punctuation_bracket&quot;&gt;{&lt;/span&gt;
   .&lt;span class=&quot;field&quot;&gt;title&lt;/span&gt; &lt;span class=&quot;punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;quot;Zine - Static Site Generator&amp;quot;&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
   .&lt;span class=&quot;field&quot;&gt;host_url&lt;/span&gt; &lt;span class=&quot;punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;quot;https://zine-ssg.io&amp;quot;&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
   .&lt;span class=&quot;field&quot;&gt;content_dir_path&lt;/span&gt; &lt;span class=&quot;punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
   .&lt;span class=&quot;field&quot;&gt;layouts_dir_path&lt;/span&gt; &lt;span class=&quot;punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;quot;layouts&amp;quot;&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
   .&lt;span class=&quot;field&quot;&gt;assets_dir_path&lt;/span&gt; &lt;span class=&quot;punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;quot;assets&amp;quot;&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
   .&lt;span class=&quot;field&quot;&gt;static_assets&lt;/span&gt; &lt;span class=&quot;punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;[&lt;/span&gt;
      &lt;span class=&quot;comment_line&quot;&gt;// omitted for brevity
&lt;/span&gt;   &lt;span class=&quot;punctuation_bracket&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;error punctuation_bracket&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;&lt;li&gt;&lt;p&gt;Run &lt;code&gt;zine&lt;/code&gt; to activate the development server and watch the errors that it reports. Zine has become a bit more strict when it comes to paths and it might complain about absolute paths in locations where it previously accepted them. Most errors should be straight forward to fix. The only breaking change that will silently cause issues is that previously &lt;code&gt;aliases&lt;/code&gt; and &lt;code&gt;alternatives&lt;/code&gt; output paths were always relative to the website root, while now a relative path will place the alias / alternative in a subdir of the current page if the output path provided is relative.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;If your website is complex enough, you might want to diff the new version against the old. Assuming you have a build in &lt;code&gt;zig-out/&lt;/code&gt; or a similar location, you can run these commands to get a diff:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;&lt;span class=&quot;constant operator function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;constant function&quot;&gt; &lt;/span&gt;&lt;span class=&quot;constant property function&quot;&gt;zine&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;release&lt;/span&gt;
&lt;span class=&quot;constant operator function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;constant function&quot;&gt; &lt;/span&gt;&lt;span class=&quot;constant property function&quot;&gt;git&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;diff&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;--word-diff=color&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;--no-index&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;zig-out&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;public&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first command will output your website to &lt;code&gt;public/&lt;/code&gt; which then you can diff against an older build of your website. &lt;strong&gt;You should not expect the diff to be perfectly empty&lt;/strong&gt;, as some minor rendering details have changed, &lt;strong&gt;but all the changes should be positive once you inspect them&lt;/strong&gt;. If you see a change that seems wrong, please open an issue with a reproducer. We don’t need the full diff, just the sources to produce the new output and an indication of what is wrong (and why you think the output is wrong).&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;This release adds a ton of improvements to Zine, here are just a couple highlights for brevity:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The official docs have been rewritten to reflect the changes, and most importantly I’ve finally added navigation to the Scripty references. Go take a look, they’re pretty cool in my opinion :^)&lt;/li&gt;&lt;li&gt;Added support for math formulas in SuperMD via &lt;code&gt;$mathtex&lt;/code&gt;. Unfortunately we depend on JavaScript for runtime rendering, but eventually we will have our own parser to do everything at build time.&lt;/li&gt;&lt;li&gt;TreeSitter highlighting now captures more classes for tokens thanks to Willians Faria (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/131&quot; target=&quot;_blank&quot;&gt;#131&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Tue, 11 Mar 2025 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.9.0</link>
     <guid>https://zine-ssg.io/log/#v0.9.0</guid>
     <title>v0.9.0</title>
     <description>&lt;div id=&quot;v0.9.0&quot;&gt;&lt;div class=&quot;block warning&quot;&gt;&lt;h1&gt;NEW ZINE&lt;/h1&gt;&lt;p&gt;At some point after the last release I started working on a standalone version of Zine that doesn’t depend on the Zig build system anymore, meaning that you will be able to download a &lt;span class=&quot;important &quot;&gt;&lt;code&gt;zine&lt;/code&gt;&lt;/span&gt; executable and run &lt;span class=&quot;important &quot;&gt;&lt;code&gt;zine serve&lt;/code&gt;&lt;/span&gt; without even needing to have Zig installed. I will write more on it once the work is done, but you should expect plenty of improvement with no downsides as it will still be optionally possible to integrate with the Zig build system as needed. &lt;span class=&quot;important &quot;&gt;ETA is a few weeks from now&lt;/span&gt;.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;THIS MEANS&lt;/strong&gt; that this is the last big release of Zine in its current form. Unless current users of Zine report regressions, I will focus entirely on the new standalone version.&lt;/p&gt;&lt;h4&gt;Let’s start with the BREAKING CHANGES:&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Zine now depends on Zig 0.14.0&lt;/strong&gt;, which means that you will also need to change your website’s &lt;code&gt;build.zig.zon&lt;/code&gt;. &lt;span class=&quot;important &quot;&gt;Starting from the next version of Zine this will not be necessary anymore as you will only need a &lt;code&gt;zine.ziggy&lt;/code&gt; file to define your website’s configuration&lt;/span&gt;. That said, here are the changes you will need to make to your &lt;code&gt;build.zig.zon&lt;/code&gt; for this version of Zine after upgrading to Zig 0.14.0:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Change &lt;code&gt;name&lt;/code&gt; from a string to a Zig enum, like so: &lt;code&gt;.name = .site&lt;/code&gt;. Note that this field is required by Zig but not used by Zine so any valid value is fine.&lt;/li&gt;&lt;li&gt;Run &lt;code&gt;zig build&lt;/code&gt; after fixing the name field and watch the compiler report a new error. This error will tell you that you need to add a &lt;code&gt;fingerprint&lt;/code&gt; field. What’s important is that &lt;strong&gt;it will also suggest a value&lt;/strong&gt; to give to the new field. Copy it and paste it into your Zon file (right below &lt;code&gt;version&lt;/code&gt; is a good place where to put it) like so: &lt;code&gt;.fingerprint = 0xAAAAAAAAAA&lt;/code&gt; (where &lt;code&gt;0xAAAAAAAAAA&lt;/code&gt; is the value suggested by Zig).&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;$page.prevPage()&lt;/code&gt; and &lt;code&gt;$page.nextPage()&lt;/code&gt; have been renamed to &lt;code&gt;$page.prevPage?()&lt;/code&gt; and &lt;code&gt;$page.nextPage?()&lt;/code&gt; respectively. The policy in Zine is to have all builtin functions that return an &lt;code&gt;Optional&lt;/code&gt; to end with a question mark.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Other &lt;span class=&quot;important &quot;&gt;new features&lt;/span&gt; in Zine:&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Zine is now MIT licensed. It was actually intended to be that from the start but I forgot to add the file. Consider this a reverse rugpull where from proprietary we went to open source. A rug has been pushed under your feet, in a sense.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Zine can now render footnotes in SuperMD files! Note that you will need to change your SuperHTML templates to explicitly print footnotes (if present). See &lt;a href=&quot;/docs/superhtml/scripty/#Page.footnotes?&quot;&gt;&lt;code&gt;$page.footnotes?()&lt;/code&gt;&lt;/a&gt; for more info. This change was contributed by Brandon in &lt;a href=&quot;https://github.com/kristoff-it/zine/pull/90&quot; target=&quot;_blank&quot;&gt;#90&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Introduced opt-in automated image size attributes for local images! When enabled, this feature will make Zine add automatically &lt;code&gt;height&lt;/code&gt; and &lt;code&gt;width&lt;/code&gt; attributes to image assets embedded in SuperMD files. Doing so will mean that the browser will be able to know the size of all images even before downloading them, completely removing the need for reflowing the page, and overall giving the impression of a much faster page load. See &lt;a href=&quot;/docs/assets/#autosize&quot;&gt;this section&lt;/a&gt; for more info on how to enable it. This feature was contributed in &lt;a href=&quot;https://github.com/kristoff-it/zine/pull/88&quot; target=&quot;_blank&quot;&gt;#88&lt;/a&gt;, thank you pfg!&lt;/p&gt;&lt;div class=&quot;block&quot;&gt;&lt;h1&gt;NOTE&lt;/h1&gt;&lt;p&gt;If you were using main branch Zine, this might be perceived as a breaking change because this feature was enabled by default when first added (but it was never part of a full release so it’s not listed under breaking changes).&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Added &lt;code&gt;Array.first?()&lt;/code&gt; and &lt;code&gt;Array.last?()&lt;/code&gt;, which will return the first and last item in an array, respectively, or &lt;code&gt;null&lt;/code&gt; if the array is empty. This can be useful to implement advanced prev-next page navigation that crosses site section boundaries, &lt;a href=&quot;/docs/frequent/#prev-next&quot;&gt;as explained here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Added in SuperMD &lt;a href=&quot;/docs/supermd/scripty/#Link.alternative&quot;&gt;&lt;code&gt;$link.alternative&lt;/code&gt;&lt;/a&gt;, which allows linking to an alternative version specified in the target page (by using the &lt;code&gt;alternatives&lt;/code&gt; frontmatter field).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The Zine dev server now implements debouncing in order to avoid issuing a flurry of rebuilds when an editor splits a file save operation into multiple file system level events. The dev server has a new related CLI flag, run &lt;code&gt;zig build help&lt;/code&gt; for more info.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;New version of flow-syntax by neurocyte brings syntax highlighting support for:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Gleam&lt;/li&gt;&lt;li&gt;CMake (to make it easier for you to port CMake to build.zig using &lt;a href=&quot;https://github.com/neurocyte/flow&quot; target=&quot;_blank&quot;&gt;flow&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Astro (not sure what that’s used for, probably nothing interesting)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Here are the bugfixes:&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Git information parsing would error out when a repo only had one commit in it. This has been fixed in &lt;a href=&quot;https://github.com/kristoff-it/zine/pull/85&quot; target=&quot;_blank&quot;&gt;#85&lt;/a&gt;, thank you Brandon!&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The Zig stdlib has a bug that causes the webserver to deadlock on Windows, Zine has a temporary workaround in it but I had left a mistake in the code that was fixed in &lt;a href=&quot;https://github.com/kristoff-it/zine/pull/86&quot; target=&quot;_blank&quot;&gt;#89&lt;/a&gt;, thank you again Brandon!&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Added support for query parameters in URLs in Zine’s dev server (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/87]&quot; target=&quot;_blank&quot;&gt;#87&lt;/a&gt;), thank you Techatrix!&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Zine now uses a new version of &lt;a href=&quot;https://github.com/rockorager/zeit&quot; target=&quot;_blank&quot;&gt;Zeit&lt;/a&gt; by rockorarger which fixes a couple minor bugs in date time handling (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/91&quot; target=&quot;_blank&quot;&gt;#91&lt;/a&gt;).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Links generated for page &lt;code&gt;alternatives&lt;/code&gt; would erroneously add a trailing slash, fixed in (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/103&quot; target=&quot;_blank&quot;&gt;#103&lt;/a&gt;) by Anthon, thanks!&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Fixed hot-reloading support in the Zine dev server on Windows in (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/116&quot; target=&quot;_blank&quot;&gt;#116&lt;/a&gt;), thanks MiXiPi!&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Previously, defining a page alias that contained new directories would cause an error when outputting the website. This has been fixed in (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/122&quot; target=&quot;_blank&quot;&gt;#122&lt;/a&gt;), thanks deevus!&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Mon, 28 Oct 2024 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.8.0</link>
     <guid>https://zine-ssg.io/log/#v0.8.0</guid>
     <title>v0.8.0</title>
     <description>&lt;div id=&quot;v0.8.0&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Page alternatives now require you to set the &lt;code&gt;name&lt;/code&gt; field.&lt;/strong&gt; You will get a build error if the name is not defined. It would previously default to an empty string, but now it’s mandatory because of the newly added builtins.&lt;/li&gt;&lt;li&gt;SuperMD&lt;ul&gt;&lt;li&gt;Added some error checking to SuperMD builtins that relate to links, like trying to use &lt;code&gt;$link.ref&lt;/code&gt; in combination with &lt;code&gt;$link.url&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;&lt;code&gt;$link.alternative(&amp;apos;rss&amp;apos;)&lt;/code&gt; to link to a page alternative&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;SuperHTML&lt;ul&gt;&lt;li&gt;Fixed documentation for &lt;code&gt;linkRef&lt;/code&gt;, which wrongly reported it did not accept any argument.&lt;/li&gt;&lt;li&gt;Added &lt;code&gt;$page.alternative(&amp;apos;rss&amp;apos;)&lt;/code&gt; which allows you to obtain an &lt;code&gt;Alternative&lt;/code&gt; value by name (instead of looping over all &lt;code&gt;$page.alternatives&lt;/code&gt;).&lt;/li&gt;&lt;li&gt;Added &lt;code&gt;link()&lt;/code&gt; to &lt;code&gt;Alternative&lt;/code&gt; so you can now link to RSS feeds like so:&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;ctx&lt;/span&gt; &lt;span class=&quot;attribute&quot;&gt;alt&lt;/span&gt;=&amp;quot;&lt;span class=&quot;string&quot;&gt;$page.alternative(&amp;apos;rss&amp;apos;)&lt;/span&gt;&amp;quot;&lt;span class=&quot;punctuation_bracket&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;punctuation_bracket&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;attribute&quot;&gt;href&lt;/span&gt;=&amp;quot;&lt;span class=&quot;string&quot;&gt;$ctx.alt.link()&lt;/span&gt;&amp;quot; &lt;span class=&quot;attribute&quot;&gt;type&lt;/span&gt;=&amp;quot;&lt;span class=&quot;string&quot;&gt;$ctx.alt.type&lt;/span&gt;&amp;quot;&lt;span class=&quot;punctuation_bracket&quot;&gt;&amp;gt;&lt;/span&gt;
    RSS feed
  &lt;span class=&quot;punctuation_bracket&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;punctuation_bracket&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
(the Frequently Asked Questions section was updated accordingly)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Fri, 25 Oct 2024 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.7.2</link>
     <guid>https://zine-ssg.io/log/#v0.7.2</guid>
     <title>v0.7.2</title>
     <description>&lt;div id=&quot;v0.7.2&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Windows should now work well. A path-related bug that caused assets to not be detected correctly has now been fixed, and a second bug that caused the webserver to fail to update when a new change happened has also been “fixed” (it’s actually an annoying networking bug unrelated to Zine, so we implemented a workaround). In any case, &lt;strong&gt;Windows should now be a first-class citizen for Zine&lt;/strong&gt; so please consider &lt;em&gt;rawdogging&lt;/em&gt; Zine on Windows instead of using Docker/WSL (also report any issue you find!).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;In the previous release I added by mistake some debug logs that could not be silenced and that caused the webserver to show your the error window even when no error had happened, this is now fixed, sorry!&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Creating duplicate ids inside of a content file is now properly reported as an error by Zine. Some ids would also not be correctly recorded (for the purpose of deeplinking) before, and that too has been fixed now.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;New SuperHTML Scripty builtins:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;$page.linkRef(&amp;apos;foo&amp;apos;)&lt;/code&gt; can be used to deep-link from SuperHTML templates&lt;/li&gt;&lt;li&gt;&lt;code&gt;sriHash()&lt;/code&gt; can be called on assets to generate a hash for &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity&quot; target=&quot;_blank&quot;&gt;Subresource Integrity&lt;/a&gt;, thanks Shardion (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/73&quot; target=&quot;_blank&quot;&gt;#73&lt;/a&gt;)!&lt;/li&gt;&lt;li&gt;&lt;code&gt;$build.git()&lt;/code&gt; can be used to access repo information when in a repository, see the SuperHTML Scripty reference for more information, thanks Sc3l3t0n (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/77&quot; target=&quot;_blank&quot;&gt;#77&lt;/a&gt;)!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Wed, 16 Oct 2024 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.7.1</link>
     <guid>https://zine-ssg.io/log/#v0.7.1</guid>
     <title>v0.7.1</title>
     <description>&lt;div id=&quot;v0.7.1&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;When using the simplified &lt;code&gt;website()&lt;/code&gt; / &lt;code&gt;multilingualWebsite()&lt;/code&gt; interface, you can now pass &lt;code&gt;-Dinclude-drafts&lt;/code&gt; flag to enable rendering of content pages that have &lt;code&gt;.draft = true&lt;/code&gt; set in their frontmatter. Thank you nihklas (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/70&quot; target=&quot;_blank&quot;&gt;#70&lt;/a&gt;).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;New SuperHTML Scripty builtin functions:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;$page.hasContentSection&lt;/code&gt;: You can now query a page to see if it contains a content section with a given id. Thanks nihklas (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/76&quot; target=&quot;_blank&quot;&gt;#76&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;&lt;code&gt;$page.subpagesAlphabetic&lt;/code&gt;: lists sub pages sorted in alphabetic order. Unblocks rockorager’s &lt;a href=&quot;https://culver.house/recipes/&quot; target=&quot;_blank&quot;&gt;recipe website&lt;/a&gt;. Recipe websites are good, make more of them.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;New SuperMD Scripty directive:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;$text&lt;/code&gt;, which can be used to give an id and attributes to a inline piece of text.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Fri, 11 Oct 2024 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.7.0</link>
     <guid>https://zine-ssg.io/log/#v0.7.0</guid>
     <title>v0.7.0</title>
     <description>&lt;div id=&quot;v0.7.0&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Introduced actual arrays in Zine. Previously we would immediately evaluate Scripty expressions into iterators, which made it awkward to implement bulitin functions such as &lt;code&gt;sort&lt;/code&gt;. Zine now has a real concept of Array with dedicated builtins, you can read more in the reference for &lt;a href=&quot;/docs/superhtml/scripty/#Array&quot;&gt;&lt;code&gt;[any]&lt;/code&gt;&lt;/a&gt;. Note that arrays don’t yet offer a sorting builtin (figuring out the interface to expose to the user has been left as work for a subsequent release), but they do support other basic stuff like slicing. I’m happy to work with users to implement functions that would unblock them, even if the design of the function will have to be changed in the future.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Zine currently has a limitation that prevents it from correctly rendering (calling &lt;code&gt;content()&lt;/code&gt; on) pages that have been loaded through Scripty. Over time this limitation has been mitigated, but it’s not fully gone yet. Unfortunately the check that told you that this was the case was not working correctly, and has now been fixed. The most likely situation where you might encounter this problem is when trying to render the content of various pages in an RSS template. Previously it might have worked for simple cases and caused a panic in others, now you will get a consistent error message that tells you that the feature is not available yet.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The webserver now properly parses percent encoding in URLs, used whenever files have funky names. Thank you GigaGrunch! (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/65&quot; target=&quot;_blank&quot;&gt;#65&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Paths with spaces were not handled correctly when tracking dependencies, causing some failures that might have looked like cache issues, now fixed thanks to brandondyck (&lt;a href=&quot;https://github.com/kristoff-it/zine/pull/68&quot; target=&quot;_blank&quot;&gt;#68&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Thu, 19 Sep 2024 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.6.3</link>
     <guid>https://zine-ssg.io/log/#v0.6.3</guid>
     <title>v0.6.3</title>
     <description>&lt;div id=&quot;v0.6.3&quot;&gt;&lt;ul&gt;&lt;li&gt;When iterating &lt;strong&gt;content sections&lt;/strong&gt; with &lt;code&gt;$page.contentSections()&lt;/code&gt;, you can now obtain the section’s attached heading by calling &lt;a href=&quot;/docs/superhtml/scripty/#ContentSection.heading&quot;&gt;&lt;code&gt;heading&lt;/code&gt;&lt;/a&gt; or &lt;a href=&quot;/docs/superhtml/scripty/#ContentSection.heading?&quot;&gt;&lt;code&gt;heading?&lt;/code&gt;&lt;/a&gt; on it. This was added mainly to support the usecase of giving titles to RSS entries generated from sections.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Tue, 17 Sep 2024 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.6.2</link>
     <guid>https://zine-ssg.io/log/#v0.6.2</guid>
     <title>v0.6.2</title>
     <description>&lt;div id=&quot;v0.6.2&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;$image.linked()&lt;/code&gt; is now implemented and allows you to quickly create an image that links to itself.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Sat, 07 Sep 2024 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.6.1-vscode</link>
     <guid>https://zine-ssg.io/log/#v0.6.1-vscode</guid>
     <title>v0.6.1-vscode</title>
     <description>&lt;div id=&quot;v0.6.1-vscode&quot;&gt;&lt;ul&gt;&lt;li&gt;The VSCode marketplace now has a &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=LorisCro.supermd&quot; target=&quot;_blank&quot;&gt;SuperMD Extension&lt;/a&gt; that gives you syntax highlighting for SuperMD files (no LSP for it yet though, sorry!).&lt;/li&gt;&lt;li&gt;Similarly, the VSCode &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=LorisCro.superhtml&quot; target=&quot;_blank&quot;&gt;SuperHTML Extension&lt;/a&gt; would not provide you with syntax highlighting before, but now it does.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Sat, 07 Sep 2024 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.6.1</link>
     <guid>https://zine-ssg.io/log/#v0.6.1</guid>
     <title>v0.6.1</title>
     <description>&lt;div id=&quot;v0.6.1&quot;&gt;&lt;ul&gt;&lt;li&gt;Updated &lt;a href=&quot;https://github.com/rockorager/zeit&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;rockorager/zeit&lt;/code&gt;&lt;/a&gt;, which now includes full support for date formatting strings based on the Go magic date. Previously Zine hardcoded only a very small subset of possible formatting styles. See the reference docs for &lt;a href=&quot;https://zine-ssg.io/docs/superhtml/scripty#Date.format&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;Date.format&lt;/code&gt;&lt;/a&gt; for more info.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Fri, 06 Sep 2024 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.6.0</link>
     <guid>https://zine-ssg.io/log/#v0.6.0</guid>
     <title>v0.6.0</title>
     <description>&lt;div id=&quot;v0.6.0&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Added &lt;code&gt;Page.parentSection()&lt;/code&gt; in SuperHTML.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The website now has a docs section &lt;a href=&quot;https://zine-ssg.io/docs/editors/&quot; target=&quot;_blank&quot;&gt;for editor support&lt;/a&gt;.&lt;br&gt;Follow those instructions to get syntax highlighting and LSP support in your favorite editor.&lt;br&gt;&lt;strong&gt;If you have trouble setting up your editor feel free to &lt;a href=&quot;https://zine-ssg.io/community/&quot; target=&quot;_blank&quot;&gt;ask for help in the community&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Wed, 04 Sep 2024 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.5.1</link>
     <guid>https://zine-ssg.io/log/#v0.5.1</guid>
     <title>v0.5.1</title>
     <description>&lt;div id=&quot;v0.5.1&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Added typst syntax highlighting support.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;On the topic of RSS feeds, this page &lt;a href=&quot;https://zine-ssg.io/log/index.xml&quot; target=&quot;_blank&quot;&gt;now has an RSS feed&lt;/a&gt; that you can subscribe to. Every entry in this devlog will become an entry in the RSS feed. If you’re curious to see how this is implemented, clone this repo and see how &lt;code&gt;content/log.smd&lt;/code&gt; and &lt;code&gt;layouts/log.xml&lt;/code&gt; work together to make it happen (see &lt;a href=&quot;/quickstart/&quot;&gt;Get Started&lt;/a&gt; for more info).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;Page&lt;/code&gt; in SuperHTML gained the ability to loop over sections defined by a Page.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;SuperMD Directives can now store data (key-value fields) that can then be accessed programmtically by SuperHTML.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Sun, 01 Sep 2024 00:00:00 +0000</pubDate>
     <link>https://zine-ssg.io/log/#v0.5.0</link>
     <guid>https://zine-ssg.io/log/#v0.5.0</guid>
     <title>v0.5.0</title>
     <description>&lt;div id=&quot;v0.5.0&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Added &lt;a href=&quot;/docs/superhtml/scripty/#Build&quot;&gt;&lt;code&gt;$build.generated&lt;/code&gt;&lt;/a&gt; which evaluates to the date in which the build is taking place. It doesn’t add a dependency on the current date so a page will only display a newer date if it actually gets regenerated.&lt;/p&gt;&lt;p&gt;Useful for example to set &lt;code&gt;lastBuildDate&lt;/code&gt; in RSS feeds. Note that without caching the date will always be updated, potentially resulting in unwanted behavior.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
   
  
 </channel>
</rss>
