1# Changelog 2 3## 0.16.0 (unreleased) 4 5 6## 0.15.2 (2021-12-10) 7 8- Fix HTML shortcodes 9 10## 0.15.1 (2021-12-08) 11 12- Fix markdown shortcodes not being rendered correctly 13- Fix config data not getting to the templates 14 15## 0.15.0 (2021-12-05) 16 17- Fix config file watching 18- Support custom syntax highlighting themes 19- Add a `required` argument to taxonomy template functions to allow them to return empty taxonomies 20- Support colocating subfolders 21- Shortcodes and `anchor-link.html` can now access the `lang` context 22- Add prompt before replacing the output directory with `zola build` if the `output-dir` flag is given 23- Shortcode handling has been completely rewritten, solving many issues 24- Also add internal links starting with `#` without any internal Zola link 25 26## 0.14.1 (2021-08-24) 27 28- HTML minification now respects HTML spec (it still worked before because browsers can handle invalid HTML well and minifiers take advantage of it) 29- Show all errors on `zola serve` 30- `zola serve` now properly returns a 404 31- Fix `zola serve` having issues with config files in separate dir 32- Fix code blocks content not being escaped when not using syntax highlighting 33- Add missing `draft` attribute to the `section` variable in templates 34 35## 0.14.0 (2021-07-19) 36 37### Breaking 38 39- Newlines are now required after the closing `+++` of front-matter 40- `resize_image` now returns an object: `{url, static_path}` instead of just the URL so you can follow up with other functions on the new file if needed 41- `get_file_hash` now has the `base64` option set to `true` by default (from `false`) since it's mainly used for integrity hashes which are base64 42- i18n rework: languages now have their sections in `config.toml` to set up all their options 43 1. taxonomies don't have a `lang` anymore in the config, you need to declare them in their respective language section 44 2. the `config` variable in templates has been changed and is now a stripped down language aware version of the previous `config` 45 object 46 3. Search settings are now language specific 47 4. Translations are now nested in the languages table 48- Paths unification: 49 1. `get_url` does not load automatically from the `static` folder anymore 50 2. New path resolving logic for all on-disk files: replace `@/` by `content/`, trim leading `/` and 51 search in $BASE_DIR + $path, $BASE_DIR + static + $path and $BASE_DIR + content + $path 52 3. `get_file_hash` now returns base64 encoded hash by default 53 4. all functions working on files can now only load files in the Zola directory 54 5. `resize_image` return value has changed 55 6. `page.assets` now start with a `/` to match `section.assets` and other paths 56 57### Other 58 59- Internal links are now resolved in the `markdown` filter in the templates (#1296 #1316) 60- Add a `required` argument to `load_data` so it can be allowed to fail 61- `get_file_hash` now supports returning the base64 encoded hash 62- The `markdown` filter not renders shortcodes 63- Image processing now supports WebP 64- Fix `zola serve` failing for some static files 65- Fix `zola serve` not picking up directory renaming 66- Add `path` to the taxonomy terms to be on par with pages and sections 67- Add the `base16-aterlierdune-light` syntax highlight theme 68- Improve link checking: less concurrency and try to not overload the servers 69- Allow using POST for `load_data`, along with a body to POST and allow it to fail 70- Add Zig and Protobuf syntax highlighting 71- Footnotes links are now stripped from summaries - they were not linking to anything. 72- `get_url` and `get_taxonomy_url` are now marked as safe, no need to call `| safe` on their output 73- Add `allow_missing` optional argument to `get_image_metadata` to not error if the file is not found 74- Add `permalink` to `Taxonomy` in templates 75- Syntax highlighting improvements, see documentation for details on each 76 1. Add CSS class based syntax highlighting 77 2. Allow hiding specific lines 78 3. Allow showing line numbers 79 80 81 82## 0.13.0 (2021-01-09) 83 84- Enable HTML minification 85- Support `output_dir` in `config.toml` 86- Allow sections to be drafted 87- Allow specifying default language in filenames 88- Render emoji in Markdown content if the `render_emoji` option is enabled 89- Enable YouTube privacy mode for the YouTube shortcode 90- Add language as class to the `<code>` block and as `data-lang` 91- Add bibtex to `load_data` 92- Add a `[markdown]` section to `config.toml` to configure rendering 93- Add `highlight_code` and `highlight_theme` to a `[markdown]` section in `config.toml` 94- Add `external_links_target_blank`, `external_links_no_follow` and `external_links_no_referrer` 95- Add a `smart_punctuation` option in the `[markdown]` section in `config.toml` to turn elements like dots and dashes 96into their typographic forms 97- Add iteration count variable `nth` for shortcodes to know how many times a shortcode has been invoked in a given 98content 99- Update some highlighting syntaxes and the TS syntax will now be used instead of JS due to issues with it 100- Remove `zola serve --watch-only`: since we build the HTML in memory and not on disk, it doesn't make sense anymore 101- Update clojure syntax 102- Prefer extra syntaxes to the default ones if we have a match for language 103- Fix `zola serve` having issues with non-ascii paths 104- 404 page now gets the site default language as `lang` 105 106## 0.12.2 (2020-09-28) 107 108- Fix `zola serve` being broken on reload 109 110## 0.12.1 (2020-09-27) 111 112- Add line highlighting in code blocks 113- Fix the new `zola serve` being broken on Windows 114- Fix slugified taxonomies not being rendered at the right path 115- Fix issues with shortcodes with newlines and read more 116 117## 0.12.0 (2020-09-04) 118 119### Breaking 120 121- All paths like `current_path`, `page.path`, `section.path` (except colocated assets) now have a leading `/` 122- Search index generation for Chinese and Japanese has been disabled by default as it leads to a big increase in 123binary size 124 125### Other 126 127- Add 2 syntax highlighting themes: `green` and `railsbase16-green-screen-dark` 128- Enable task lists in Markdown 129- Add support for SVG in `get_image_metadata` 130- Fix parsing of dates in arrays in `extra` 131- Add a `--force` argument to `zola init` to allow creating a Zola site in a non-empty directory 132- Make themes more flexible: `include` can now be used 133- Make search index generation configurable, see docs for examples 134- Fix Sass trying to load folders starting with `_`, causing issues with frameworks 135- Update livereload.js version 136- Add Markdown-outputting shortcodes 137- Taxonomies with the same name but different casing are now merged, eg Author and author 138 139## 0.11.0 (2020-05-25) 140 141### Breaking 142- RSS feed support has been altered to allow, *and default to*, Atom feeds, Atom being technically superior and just as widely-supported in normal use cases. 143 - New config value `feed_filename`, defaulting to `atom.xml` (change to `rss.xml` to reinstate the old behaviour) 144 - Config value `rss_limit` is renamed to `feed_limit` 145 - Config value `languages.*.rss` is renamed to `languages.*.feed` 146 - Config value `generate_rss` is renamed to `generate_feed` 147 - Taxonomy value `rss` is renamed to `feed` 148 149 Users with existing feeds should either set `feed_filename = "rss.xml"` in config.toml to keep things the same, or set up a 3xx redirect from rss.xml to atom.xml so that existing feed consumers aren’t broken. 150 151- The feed template variable `last_build_date` is renamed to `last_updated` to more accurately reflect its semantics 152- The sitemap template’s `SitemapEntry` type’s `date` field has been renamed to `updated` to reflect that it will use the `updated` front-matter field if available, rather than `date` 153- Code blocks are now wrapped in `<pre><code>` instead of just `<pre>` 154 155### Other 156- Add `updated` front-matter field for pages, which sitemap templates will use for the `SitemapEntry.date` field instead of the `date` front-matter field, and which the default Atom feed template will use 157- Add `lang` to the feed template context 158- Add `taxonomy` and `term` to the feed template context for taxonomy feeds 159- Fix link checker not looking for anchor with capital id/name 160- Pass missing `lang` template parameter to taxonomy list template 161- Fix default index section not having its path set to '/' 162- Change cachebust strategy to use SHA256 instead of timestamp 163 164## 0.10.1 (2020-03-12) 165 166- Set user agent for HTTP requests 167- Add nyx-bold highlight theme 168- Add lyric and subtitles highlighting 169- Enable strikethrough in markdown filter 170 171## 0.10.0 (2020-02-17) 172 173### Breaking 174- Remove `toc` variable in section/page context and pass it to `page.toc` and `section.toc` instead so they are 175accessible everywhere 176 177### Other 178- Add zenburn syntax highlighting theme 179- Fix `zola init .` 180- Add `total_pages` to paginator 181- Do not prepend URL prefix to links that start with a scheme 182- Allow skipping anchor checking in `zola check` for some URL prefixes 183- Allow skipping prefixes in `zola check` 184- Check for path collisions when building the site 185- Fix bug in template extension with themes 186- Use Rustls instead of openssl 187- The continue reading HTML element is now a `<span>` instead of a `<p>` 188- Update livereload.js 189- Add --root global argument 190 191## 0.9.0 (2019-09-28) 192 193### Breaking 194 195- Add `--drafts` flag to `build`, `serve` and `check` to load drafts. Drafts are never loaded by default anymore 196- Using `fit` in `resize_image` on an image smaller than the given height/width is now a no-op and will not upscale images anymore 197 198### Other 199- Add `--open` flag to open server URL in default browser 200- Fix sitemaps namespace & do not urlencode URLs 201- Update livereload 202- Add `hard_link_static` config option to hard link things in the static directory instead of copying 203- Add warning for old style internal links since they would still function silently 204- Print some counts when running `zola check` 205- Re-render all pages/sections when `anchor-link.html` is changed 206- Taxonomies can now have the same name in multiple languages 207- `zola init` can now be create sites inside the current directory 208- Fix table of contents generation for deep heading levels 209- Add `lang` in all templates context except sitemap, robots 210- Add `lang` parameter to `get_taxonomy` and `get_taxonomy_url` 211- Rebuild whole site on changes in `themes` changes 212- Add one-dark syntax highlighting theme 213- Process images on changes in `zola serve` if needed after change 214 215## 0.8.0 (2019-06-22) 216 217### Breaking 218 219- Allow specifying heading IDs. It is a breaking change in the unlikely case you are using `{#..}` in your heading 220- Internal links are now starting by `@/` rather than `./` to avoid confusion with relative links 221- Latest Tera version now cares about where the `safe` filter is, always put it at the end of an expression. 222 223### Other 224 225- Fix image processing not happening if called from the template 226- Add a `zola check` command to that validates the site and checks all external links 227- Sections can have `aliases` as well 228- Anchors in internal links are now checked for existence 229 230## 0.7.0 (2019-04-28) 231 232### Breaking 233- Remove --base-path option, it broke `serve` on Windows and wasn't properly tested 234 235### Other 236- Strip wrapping whitespaces from shortcodes 237- Sort sitemap elements by `permalink` 238 239## 0.6.0 (2019-03-25) 240 241### Breaking 242- `earlier/later` and `lighter/heavier` are not set anymore on pages when rendering 243a section 244- The table of content for a page/section is now only available as the `toc` variable when 245rendering it and not anymore on the `page`/`section` variable 246- Default directory for `load_data` is now the root of the site instead of the `content` directory 247- Change variable sent to the sitemap template, see documentation for details 248 249### Other 250- Add support for content in multiple languages 251- Lower latency on serve before rebuilding from 2 to 1 second 252- Allow processing PNG and produced images are less blurry 253- Add an id (`zola-continue-reading`) to the paragraph generated after a summary 254- Add Dracula syntax highlighting theme 255- Fix using inline styles in headers 256- Fix sections with render=false being shown in sitemap 257- Sitemap is now split when there are more than 30 000 links in it 258- Add link to sitemap in robots.txt 259- Markdown rendering is now fully CommonMark compliant 260- `load_data` now defaults to loading file as plain text, unless `format` is passed 261or the extension matches csv/toml/json 262- Sitemap entries get an additional `extra` field for pages only 263- Add a `base-path` command line option to `build` and `serve` 264 265 266## 0.5.1 (2018-12-14) 267 268- Fix deleting markdown file in `zola serve` 269- Fix pagination for taxonomies being broken and add missing documentation for it 270- Add missing pager pages from the sitemap 271- Allow and parse full RFC339 datetimes in filenames 272- Live reload is now enabled for the 404 page on serve 273 274 275## 0.5.0 (2018-11-17) 276 277### Breaking 278 279- Gutenberg has changed name to `zola`! 280- The `pagers` variable of Paginator objects has been removed 281- `section.subsections` is now an array of paths to be used with the `get_section` 282Tera function 283- Table of content now strips HTML from the titles to avoid various issues 284- `gutenberg-anchor` CSS class has been renamed `zola-anchor` 285- `data` is now a reserved variable name in templates, it is unused right now but 286might change soon. 287 288### Others 289- Many many times faster (x5-x40) for most sites 290- Update dependencies, fixing a few bugs with templates 291- Load only .html files in themes from the templates folder 292- Background colour is set fewer times when highlighting syntaxes, resulting in smaller HTML filesize 293- Link checker will not try to validate email links anymore 294- Load table and footnote markdown extensions in `markdown` filter 295- `get_url` now defaults to not adding a trailing slash 296- Fix `--base-url` not overriding processed images URLs 297- Add more Emacs temp file to the ignored patterns in `gutenberg serve` 298- Files starting with `.` are not considered pages anymore even if they end with `.md` 299- `_processed_images` folder for image processing has been renamed `processed_images` to avoid issues with GitHub Pages 300- Syntax highlighting default was mistakenly `true`, it has been set to `false` 301- Add NO_COLOR and CLICOLOR support for having colours or not in CLI output 302- Fix `robots.txt`template not being used 303- RSS feed now takes all available articles by default instead of limiting to 10000 304- `templates` directory is now optional 305- Add Reason and F# syntax highlighting 306- Add `ancestors` to pages and sections pointing to the relative path of all ancestor 307sections up to the index to be used with the `get_section` Tera function 308- Add a `load_data` Tera function to load local CSV/TOML/JSON files 309- Add `relative_path` to pages and sections in templates 310- Do not have a trailing slash for the RSS permalinks 311- `serve` will now try to find other ports than 1111 rather than panicking 312- Ensure content directory exists before rendering aliases 313- Do not include drafts in pagination 314- Pages filenames starting by a date will now use that date as page date if there isn't one defined in frontmatter 315- Accept markdown files starting with BOM 316- Add a `watch-only` flag to the `serve` command for when you don't want a webserver 317- Add `transparent` sections, for when you want to separate content by sections but want to group them at a higher level (think a `posts` folder with years 318that want to use pagination on the index). 319- Add `page_template` to section front-matter for when you want to specify the template to use for every page under it 320- Improves to `zola serve`: now handles directories renaming 321 322## 0.4.2 (2018-09-03) 323 324- Add assets to section indexes 325- Allow users to add custom highlighting syntaxes 326- Add Swift, MiniZinc syntaxes and update others 327- Handle post summaries better: no more cutting references 328 329## 0.4.1 (2018-08-06) 330 331- Fix live reload of a section content change getting no pages data 332- Fix critical bug in `serve` in some OSes 333- Update deps, should now build and work correctly on BSDs 334 335## 0.4.0 (2018-08-04) 336 337### Breaking 338 339- Taxonomies have been rewritten from scratch to allow custom ones with RSS and pagination 340- `order` sorting has been removed in favour of only having `weight` 341- `page.next/page.previous` have been renamed to `page.later/page.earlier` and `page.heavier/page.lighter` depending on the sort method 342 343### Others 344- Fix `serve` not working with the config flag 345- Websocket port on `live` will not get the first available port instead of a fixed one 346- Rewrite markdown rendering to fix all known issues with shortcodes 347- Add array arguments to shortcodes and allow single-quote/backtick strings 348- Co-located assets are now permalinks 349- Words are now counted using unicode rather than whitespaces 350- Aliases can now be pointing directly to specific HTML files 351- Add `year`, `month` and `day` variables to pages with a date 352- Fix panic when live reloading a change on a file without extensions 353- Add image resizing support 354- Add a 404 template 355- Enable preserve-order feature of Tera 356- Add an external link checker 357- Add `get_taxonomy` global function to return the full taxonomy 358 359## 0.3.4 (2018-06-22) 360 361- `cargo update` as some dependencies didn't compile with current Rust version 362- Add CMake syntax highlighting and update other syntax highlighting 363 364## 0.3.3 (2018-03-29) 365 366- Fixed config flag in CLI 367- Sitemap entries are now sorted by permalinks to avoid random ordering 368- Preserve directory structure from sass folder when copying compiled css files 369to the public directory 370- Do not require themes to have a static folder 371- Now supports indented Sass syntax 372- Add search index building 373- Update Tera: now has `break` and `continue` in loops 374- Gutenberg now creates an anchor link at the position of the `<!-- more -->` tag if you 375want to link directly to it 376- Fix many shortcode parsing issues 377- Correctly copy themes shortcodes so they are useable in content 378- Fix internal links not working for markdown files directly in `content` directory 379 380## 0.3.2 (2018-03-05) 381 382- Fix `serve` command trying to read all files as markdown 383- Add many syntax highlighting themes 384- Fix date being serialised incorrectly in page `extra` section of front-matter 385 386## 0.3.1 (2018-02-15) 387 388- Update Tera and other dependencies 389- Add option for inline (ie no `<p>...</p>` wrapping) in markdown filter 390- Allow to specify both interface and base_url in `gutenberg serve` for usage in Docker 391 392## 0.3.0 (2018-01-25) 393 394### Breaking 395- Change names of individual taxonomies to be plural (ie `tags/my-tag` instead of `tag/my-tag`) 396- Front matter now uses TOML dates rather strings: remove quotes from your date value to fix it. 397For example: `date = "2001-10-10"` becomes `date = 2001-10-10` 398- `language_code` has been renamed `default_language` in preparations of i18n support 399 400### Others 401- Add `get_taxonomy_url` to retrieve the permalink of a tag/category 402- Fix bug when generating permalinks for taxonomies 403- Update to Tera 0.11 404- Better UX on first `serve` thanks to some default templates. 405- Add `output-dir` to `build` and `serve` to generate the site in a folder other than `public` 406- Add Prolog syntax highlighting and update all current syntaxes 407- Live reloading now works on shortcode template changes 408- `gutenberg serve` now reloads site on `config.toml` changes: you will need to F5 to see any changes though 409- Add a `trans` global function that will get return the translation of the given key for the given lang, defaulting 410to `config.default_language` if not given 411- `gutenberg serve` cleans after itself and deletes the output directory on CTRL+C 412 413## 0.2.2 (2017-11-01) 414 415- Fix shortcodes without arguments being ignored 416- Fix shortcodes with markdown chars (_, *, etc) in name and args being ignored 417- Fix subsections of index not being filled without a `_index.md` 418- Fix generated index section not found in `get_section` global function 419- Fix permalink generation for index page 420- Add Nim syntax highlighting 421- Allow static folder to be missing 422- Fix shortcodes args being only passed as strings 423- Add `page.components` and `section.components` that are equivalent to `path.split('/')` 424- Expose `page.draft` in the template 425 426## 0.2.1 (2017-10-17) 427 428- Fix `base-url` argument to `gutenberg build` being called `base` 429- Add syntaxes: Crystal, Elixir, Kotlin 430 431## 0.2.0 (2017-10-05) 432 433- Fix `section.subsections` not being filled correctly 434- `section.subsections` can now be sorted by a `weight` attribute on a section front-matter 435- Do nothing on directory adding/removal in livereload 436- Add back `draft` on pages that was wrongly removed 437- Page and Section `path` field is not starting with a `/` anymore 438- All Tera global fns are now rebuilt on changes 439- Use flags for port/interface in `gutenberg serve` 440- Fix various issues with headers markdown rendering 441- Rename `insert_anchor` in section front-matter to `insert_anchor_links` 442- Remove `insert_anchor_links` from the config: it wasn't used 443- Add `class` variable to `gist` shortcode 444- Add reading analytics to sections content 445- Add config to sitemap template 446- Add `permalink` to all taxonomy items (tags & categories) 447- Tags in the tags page are now sorting alphabetically instead of by number of pages in them 448- Remove deprecated `link` param of `get_url` 449- Add 1337 color scheme 450- Defaults to compressed Sass output 451- Fix regression wrt co-located assets slug detecting 452- Rename `url` from page front-matter to `path` to be consistent 453- Add a `base-url` flag to the `build` command to override the URL from config.toml 454 455## 0.1.3 (2017-08-31) 456 457- Add themes support 458 459 460## 0.1.2 (2017-08-10) 461 462- Add `redirect_to` to section front matter to redirect when landing on section 463root page 464- Make `title` in config optional 465- Improved `gutenberg init` UX and users first experience 466- Make `get_url` work for any path with optional cachebusting. 467- Deprecates `link` param of `get_url` in favour of `path` to be consistent 468 469## 0.1.1 (2017-07-16) 470 471- Fix RSS feed not behaving (https://github.com/Keats/gutenberg/issues/101) 472 473## 0.1.0 (2017-07-14) 474 475- Parallelize all the things 476- Add weight sorting 477- Remove `section` from the `page` rendering context: this is too expensive. Use 478the global function `get_section` if you need to get it 479- Put back a 20 page limit on rss feed by default (configurable) 480- Remove index page getting all sections: use the `get_section` global fn instead to 481only get the ones you need 482- Remove pages from pagers in pagination: they were not supposed to be there 483- Add built-in Sass compilation support 484 485 486## 0.0.7 (2017-06-19) 487 488- Sort individual tag/category pages by date 489- Add extra builtin shortcode for Streamable videos 490- `path` and `permalink` now end with a `/` 491- Generate table of contents for each page 492- Add `section` to a page Tera context if there is one 493- Add `aliases` to pages for when you are changing urls but want to redirect 494to the new one 495- Name the homepage section `index` (previously empty string) 496 497## 0.0.6 (2017-05-24) 498 499- Fix missing serialized data for sections 500- Change the single item template context for categories/tags 501- Add a `get_url` and a `get_section` global Tera function 502- Add a config option to control how many articles to show in RSS feed 503- Move `insert_anchor_links` from config to being a section option and it can 504now be insert left or right 505 506 507## 0.0.5 (2017-05-15) 508 509- Fix XML templates overriding and reloading 510- `title` and `description` are now optional in the front matter 511- Add GenericConfig, Vim, Jinja2 syntax 512- Add `_index.md` for homepage as well and make that into a normal section 513- Allow sorting by `none`, `date` and `order` for sections 514- Add pagination 515- Add a `get_page` global function to tera 516- Revamp index page, no more `pages` variables 517- Fix livereload stopping randomly 518- Smarter re-rendering in `serve` command 519 520## 0.0.4 (2017-04-23) 521 522- Fix RSS feed link and description 523- Renamed `Page::url` and `Section::url` to `Page::path` and `Section::path` 524- Pass `current_url` and `current_path` to every template 525- Add id to headers to allow anchor linking 526- Make relative link work with anchors 527- Add option to render an anchor link automatically next to headers 528- Only copy the static files that changed, not the whole directory in `gutenberg serve` 529- Use summary if available in RSS feed 530- Add tables and footnotes support in markdown 531- Add more language syntaxes 532- Only load templates ending by `.html` 533 534## 0.0.3 (2017-04-05) 535 536- Add some colours in console 537- Allow using a file other than config.toml for config 538- Add sections to the index page context 539- Fix page rendering not working when containing `+++` 540- Add shortcodes (see README for details) 541- Allow relative links to other content in markdown links 542- Add `markdown`, `base64_encode` and `base64_decode` filters to the Tera instance of Gutenberg 543- Work on Windows! 544