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