Releases: getnikola/nikola
v8.1.0
On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.1.0. This release makes a few feature changes, improvements, and fixes a few bugs.
What is Nikola?
Nikola is a static site and blog generator, written in Python.
It can use Mako and Jinja2 templates, and input in many popular markup formats, such as reStructuredText and Markdown — and can even turn Jupyter Notebooks into blog posts! It also supports image galleries, and is multilingual. Nikola is flexible, and page builds are extremely fast, courtesy of doit (which is rebuilding only what has been changed).
Find out more at the website: https://getnikola.com/
Downloads
Install using pip install Nikola
.
Changes
Features
- Support posts without titles (Issue #3408)
- Support WebP image scaling (Issue #3399)
- Use Luxon instead of Moment for fancy dates to make it more lightweight, going from 328k to 68k (Issue #3232)
- New
nikola console -s script.py
option to run scripts that access your site (Issue #3385) - Allow preview images to be relative to posts for bootblog4 featured posts
- Change the listings formatting to support word wrap with line numbers and improve appearance
- Put the current language’s feed links first so that feed readers prefer it (Issue #3248)
- Added support for default preview image for posts (Issue #3326)
- Added support for thumbnails in gallery lists (Issue #1771)
Bugfixes
- Support directory names in
REDIRECTIONS
(Issue #3421) - Return a non-zero error code when
nikola github_deploy
fails - Refactored scale_image causing performance increasing in image resizing.
- Don’t force absolute links for brand/languages (Issue #3229)
- Fix RTL mirroring in base theme (
:dir()
pseudo-class is Firefox only) (Issue #3353) - Work around Bootstrap 4 alignment bug for RTL languages (Issue #3353)
- Handle multiple level of inherit/import nesting in Mako templates correctly (Issue #3349)
- Output a more informative error when files are missing due to broken symlinks or incorrect
TRANSLATIONS_PATTERN
values - Avoid installing
tests
package to site-packages, remove it from your environment if it was inadvertently added (Issue #3348) - Sometimes hyphenation added hyphens at the beginning of words (Issue #3362)
- Mark gallery images as "dirty" if EXIF configuration changes (Issue #3357)
- Fix regression in gallery titles being "index" if there was a index.txt and no title (Issue #3360)
- Make gallery indexes depend on destination images to avoid multithreading race condition (Issue #3361)
- Mark gallery thumbnails as lazy loading (Issue #2918)
- Don't consider JPEG images with EXIF thumbnails as animated (Issue #3332)
- Use correct language for hyphenation in posts that are not translated to all languages (Issue #3377)
Internal
- Added Post.source() method to get a Post's object unprocessed contents.
- Added Post.save() method to modify Post contents.
- Made is_two_file a property that uses save()
v8.0.4
On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.0.4. This release fixes a few small bugs, including a date glitch that appeared around New Year’s Eve.
What is Nikola?
Nikola is a static site and blog generator, written in Python.
It can use Mako and Jinja2 templates, and input in many popular markup formats, such as reStructuredText and Markdown — and can even turn Jupyter Notebooks into blog posts! It also supports image galleries, and is multilingual. Nikola is flexible, and page builds are extremely fast, courtesy of doit (which is rebuilding only what has been changed).
Find out more at the website: https://getnikola.com/
Downloads
Install using pip install Nikola
.
Changes
Nikola now supports Python 3.5 or newer. If you are on 3.4, please upgrade to a newer release of Python.
Bugfixes
- Fix hiding future posts in sitemaps for posts without pretty URLs (Issue #3339)
- Pass the correct parameters to shortcodes in jupyter notebooks
- Fix handling of conflicts between posts/pages and indexes generated by
CATEGORY_PAGES_FOLLOW_DESTPATH
- Fix default date format to
yyyy-MM-dd
to avoid bug with ISO years (Issue #3337) - Remove
extra_header
andextra_footer
frombase
theme due to incompatibility with Mako. The blocks are still available inbootstrap4
andbootblog4
. (Issue #3319 via #3291) - Show tracebacks when
conf.py
cannot be imported - Fix loading complex config files that import modules (Issue #3314)
- Fix behavior of header demotion for negative values
- If
FILE_METADATA_REGEXP
is set, load metadata from the filename first, then continue with the other sources (Issue #3344)
v8.0.3
On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.0.3. This release fixes a few bugs, including a notable one with galleries not working on mobile.
What is Nikola?
Nikola is a static site and blog generator, written in Python.
It can use Mako and Jinja2 templates, and input in many popular markup formats, such as reStructuredText and Markdown — and can even turn Jupyter Notebooks into blog posts! It also supports image galleries, and is multilingual. Nikola is flexible, and page builds are extremely fast, courtesy of doit (which is rebuilding only what has been changed).
Find out more at the website: https://getnikola.com/
Downloads
Install using pip install Nikola
.
Changes
Features
- Add Friulian translation by aoanla
- Add
extra_header
andextra_footer
blocks to templates (Issue #3291) - Add
REST_FILE_INSERTION_ENABLED
config option to enable or disable reST external file inclusion directives (Issue #3311)
Bugfixes
- Support Markdown v3.x (Issue #3173)
- Fix galleries in Firefox Mobile and when resizing window (Issue #3258)
- Output
<code>
tag for double backticks in reST (Issue #3276) - Fully switch to HTML5 writer for reST (Issue #3276, getnikola/plugins#294)
- Make ipynb listings work again
- Correctly link to listings with spaces in their names
- import_wordpress plugin doesn't require anymore a translation and can use nikola's default if none provided
- Wordpress+qtranslate import (--qtranslate option) now works with more recent versions of plugins from the qtranslate family (namely qtranslate-X)
- Fixed a wordpress import exception when image metadata has floats formated with ',' instead of '.'
v8.0.2
On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.0.2. This is a quality-of-life release with a handful of bug fixes, two new translations and a few extra features.
What is Nikola?
Nikola is a static site and blog generator, written in Python.
It can use Mako and Jinja2 templates, and input in many popular markup formats, such as reStructuredText and Markdown — and can even turn Jupyter Notebooks into blog posts! It also supports image galleries, and is multilingual. Nikola is flexible, and page builds are extremely fast, courtesy of doit (which is rebuilding only what has been changed).
Find out more at the website: https://getnikola.com/
Downloads
Install using pip install Nikola
. (Python 3-only since v8.0.0.)
Changes
- Make
ARCHIVE_PATH
,ARCHIVE_FILENAME
translatable (Issue #3234) - Support configuring Isso via
GLOBAL_CONTEXT['isso_config']
(Issue #3225) - Handle fragments in doc role (Issue #3212)
- Slugify references in doc role.
- Add Interlingua translation by Alberto Mardegan
- Add Afrikaans translation by Friedel Wolff
- Support for docutils.conf (Issue #3188)
Bugfixes
- Avoid random rebuilds with sites whose locales are not fullly supported, and random rebuilds on multilingual sites using Python 3.4/3.5 (Issue #3216)
- Apply modifications to
default_metadata
before copying it to other languages - Make Commento comments work (Issue #3198)
- Correctly handle separators in the relative path given to "ignored_assets" key in theme meta files (Issue #3210)
- Fix error when
nikola new_post
receives directory name as path (Issue #3207) - Add slashes to paths with query strings in
nikola serve
only if there isn’t one before?
- Read listings files as UTF-8
- Set one-file status basing on default language only (Issue #3191)
- Don’t warn if post status is set to
published
explicitly (Issue #3181) - Remove mention of Twitter cards requiring an opt-in. This is not true anymore - anyone can use them.
- fancydates now workwith listdate items (eg. archives)
- bootstrap4 and bootblog4 themes no longer load moment.js when fancydates are off. (Issue #3231)
v8.0.1
On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.0.1. Some bugs were fixed; more importantly, we pinned down the Markdown package version due to incompatibilities.
What is Nikola?
Nikola is a static site and blog generator, written in Python.
It can use Mako and Jinja2 templates, and input in many popular markup formats, such as reStructuredText and Markdown — and can even turn Jupyter Notebooks into blog posts! It also supports image galleries, and is multilingual. Nikola is flexible, and page builds are extremely fast, courtesy of doit (which is rebuilding only what has been changed).
Find out more at the website: https://getnikola.com/
Downloads
Install using pip install Nikola
. (Python 3-only since v8.0.0.)
Changes
- Not compatible with Markdown 3.x yet, this release pins the requirement down to 2.x (until we get 3.x support done)
Features
- Make URL displayed by
nikola auto
andnikola serve
clickable (Issue #3166)
Bugfixes
v8.0.0
On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.0.0. After 15 months in development, we’ve created our best release ever, with new features, many bugs squashed, and some improvements under the hood.
What is Nikola?
Nikola is a static site and blog generator, written in Python.
It can use Mako and Jinja2 templates, and input in many popular markup formats, such as reStructuredText and Markdown — and can even turn Jupyter Notebooks into blog posts! It also supports image galleries, and is multilingual. Nikola is flexible, and page builds are extremely fast, courtesy of doit (which is rebuilding only what has been changed).
Find out more at the website: https://getnikola.com/
Downloads
Install using pip install Nikola==8.0.0
.
If you want to upgrade to Nikola v8, make sure to read the Upgrading blog post.
Changes
Important compatibility changes
- Rename
crumbs.tmpl
toui_helper.tmpl
and the breadcrumbsbar
function tobreadcrumbs
(your templates may need changing as well) - Rename
post.is_mathjax
topost.has_math
. Themes usingpost.is_mathjax
must be updated; it is recommended that they are changed to usemath_helper.tmpl
. - Reading reST docinfo metadata, including first heading as title, requires
USE_REST_DOCINFO_METADATA
now (Issue #2987) - RSS feeds might have changed their places due to
RSS_PATH
behavior changes (you may need to changeRSS_PATH
,RSS_FILENAME_BASE
) - Atom feeds for archives and Atom pagination are no longer supported (Issue #3016)
- Sections are replaced by categories (Issue #2833)
- You need
<a class="reference">
(instead ofimage-reference
) to activate the lightbox now - Date formatting now uses the Babel library, you might need to change
BABEL_FORMAT
(Issues #2606, 3121) - The first heading in a reST document is not removed anymore by default unless
USE_REST_DOCINFO_METADATA
is enabled (Issues #2382, #3124)
Features
- Add Malayalam translation by Nemo Dicto
- Add Vietnamese translation by Hoai-Thu Vuong
- Don’t generate gallery index if the destination directory is site root and it would conflict with blog index (Issue #3133)
- All built-in themes now support
updated
timestamp fields in posts. The update time, if it is specified and different from the posting time, will be displayed as "{postDate} (${messages("updated")} {updateDate})". If no update time is specified, the posting time will be displayed alone. - All built-in themes now support the
DATE_FANCINESS
option. - Theme bundles are now parsed using the configparser module and can support newlines inside entries as well as comments
- Make bootstrap4 navbar color configurable with
THEME_CONFIG['navbar_light']
(Issue #2863) - New data_file option for chart shortcode and directive (Issue #3129)
- Show the filename of the missing file when
nikola serve
can't find a file (i.e. when an 404 error occurs). - Better error messages for JSON download failures in
nikola plugin
andnikola theme
(Issue getnikola/plugins#282) - Use Babel instead of the locale module to better handle localizations (Issues #2606, #3121)
- Change
DATE_FORMAT
formats to CLDR formats (Issue #2606) - Add
NAVIGATION_ALT_LINKS
option, displayed on the right side in bootstrap4/bootblog4 (Issue #3030) - Added documentation of Post objects to list of template variables (Issue #3003)
- Support featured posts in bootblog4 (Issue #2964)
- Add
THEME_CONFIG
setting that themes can use in any way - Use youtube-nocookie.com for better privacy in
youtube
reST directive and improve the appearance of the player - Support hackerthemes.com themes and renamed bootswatch_theme command subtheme (Issue #3049)
- Add
DISABLE_MAIN_ATOM_FEED
setting (Issue #3016, Issue #3039) - Add
ATOM_FILENAME_BASE
setting (defaults toindex
for existing sites, butfeed
for new sites) (Issue #3016) - Add
CATEGORY_DESTPATH_AS_DEFAULT
,CATEGORY_DESTPATH_TRIM_PREFIX
,CATEGORY_DESTPATH_FIRST_DIRECTORY_ONLY
settings, as part of replacing sections with categories (Issue #2833) - Tags
draft
,private
andmathjax
are no longer treated special ifUSE_TAG_METADATA
is set toFalse
(default for new sites) (Issue #2761) - Replace
draft
andprivate
tags with astatus
meta field (supportspublished
,featured
,draft
,private
) andmathjax
with.. has_math: yes
(Issue #2761) - Rename
TAG_PAGES_TITLES
→TAG_TITLES
,TAG_PAGES_DESCRIPTIONS
→TAG_DESCRIPTIONS
. - Rename
CATEGORY_PAGES_TITLES
→CATEGORY_TITLES
,CATEGORY_PAGES_DESCRIPTIONS
→CATEGORY_DESCRIPTIONS
. - Produce a better error message when a template referenced in another template is missing (Issue #3055)
- Support captioned images and image ordering in galleries, as well as arbitrary metadata through a new
metadata.yml
file (Issue #3017, Issue #3050, Issue #2837) - New
ATOM_PATH
setting (Issue #2971) - Make
crumbs
available to all pages - Allowing to customize RSS and Atom feed extensions with
RSS_EXTENSION
,ATOM_EXTENSION
settings (Issue #3041) - Allowing to customize filename base appended to RSS_PATH with
RSS_FILENAME_BASE
setting (Issue #3041) - Use basic ipynb template by default for slightly better appearance and behavior
- Fixing behavior of RSS_PATH to do what the documentation says it does (Issue #3024)
- Add support for fragments in path handlers (Issue #3032)
- New
METADATA_VALUE_MAPPING
setting to allow for flexible global modification of metadata (Issue #3025) - New
smartjoin
template function/filter that joins lists and leaves strings as-is (Issue #3025) - Explain index.html conflicts better (Issue #3022)
- Recognize both TEASER_END and (new) END_TEASER (Issue #3010) (warning: if you perform manual splits, the regex change means new indexes must be used)
- New MARKDOWN_EXTENSION_CONFIGS setting (Issue #2970)
- Replace
flowr.js
withjustified-layout.js
by Flickr (does not require jQuery!) bootblog4
is the new default theme (Issue #2964)- New
bootstrap4
andbootblog4
themes (Issue #2964) - New Thai translation by Narumol Hankrotha and Jean Jordaan
- Support for Commento comment system (Issue #2773)
- New PRESERVE_ICC_PROFILES option to control whether ICC profiles are preserved when copying images.
- Use baguetteBox in Bootstrap theme (part of Issue #2777)
- New default-config command to generate a clean configuration.
- New
thumbnail
shortcode similar to the reStructuredTextthumbnail
directive (via Issue #2809) - Rewrite
nikola auto
with asyncio and aiohttp (Issue #2850) - New
listings
shortcode similar to the reStructuredText listings directive (Issue #2868) - Switch to reStructuredText’s new HTML 5 renderer (Issue #2874)
- Deprecate
html4css1.css
in favor ofrst_base.css
(Issue #2874) - Add support for
MetadataExtractor
plugins that allow custom, extensible metadata extraction from posts (Issue #2830) - Support YAML and TOML metadata in 2-file posts (via Issue #2830)
- Renamed
UNSLUGIFY_TITLES
→FILE_METADATA_UNSLUGIFY_TITLES
(Issue #2840) - Add
NIKOLA_SHOW_TRACEBACKS
environment variable that shows full tracebacks instead of one-line summaries - Use
PRETTY_URLS
by default on all sites (Issue #1838) - Feed link generation is completely refactored (Issue #2844)
- Let path handlers return absolute URLs (Issue #2876)
- Add
BLOG_EMAIL
to global context to make it available for templates (Issue #2968)
Bugfixes
- Use UTF-8 instead of system encoding for gallery metadata.yml file
- Do not remove first heading in document (reST document title) if
USE_REST_DOCINFO_METADATA
is disabled (Issue #3124) - Remove
NO_DOCUTILS_TITLE_TRANSFORM
setting, this is now default behavior ifUSE_REST_DOCINFO_METADATA
is disabled (Issue #2382, #3124) - Enforce trailing slash for directories in
nikola auto
(Issue #3140) - Galleries with baguetteBox don’t glitch out on the first image anymore (Issue #3141)
- Pass arguments to youtube directive unchanged (Issue #3150)
- Fix listing installed themes if theme directory is missing.
- Watch correct output folder in
nikola auto
(Issue #3119) - Fix post fragment dependencies when posts are only available in a non-default language (Issue #3112)
- Implement
MARKDOWN_EXTENSION_CONFIGS
properly (Issue #2970) - Ignore
.DS_Store
when processing listings (Issue #3099) - Remove redundant check for tag similarity (Mentioned in Issue #3123)
- Improve appearance of
bootblog4
on mobile (Issue #3069) - Make
smartjoin
more flexible (Issue #3080) - Make post-list and post_list synonymous (Issue #3083)
- Support
CATEGORY_DESTPATH_NAMES
with pages following destpath - Make
CATEGORY_PAGES_FOLLOW_DESTPATH
more resilient (Issue #3081) - Guard against null items in gallery meta files (Issues #3076, #3077)
- Respect
USE_FILENAME_AS_TITLE
in galleries with a meta file - Fix gallery metadata for multilingual sites (Issue #3078)
- Fixes behavior for posts not available in default language (Issues #2956 and #3073)
- Always follow
FEED_LENGTH
for Atom feeds - Apply filters to all Atom feeds
- Read file metadata if compiler metadata exists and prefer it over compiler metadata (Issue #3008)
- Rename
DISABLE_INDEXES_PLUGIN_INDEX_AND_ATOM_FEED
toDISABLE_INDEXES
andDISABLE_INDEXES_PLUGIN_RSS_FEED
toDISABLE_MAIN_RSS_FEED
(Issue #3039) - Make chart shortcode its own plugin and make the reST directive depend on it.
- Put post_list shortcode in its own plugin and make the reST directive depend on it.
- Don’t silence syntax errors and other exceptions that occur while reading metadata
- Use documented dateutil API for time zone list (Issue #3006)
- Handle trailing slash redirects with query strings correctly in
nikola serve
(Issue #3000) - Fix w3c validation errors for itemscope entries in default themes
- Hide “Incomplete language” message for overrides of complete languages...
v8.0.0rc1
On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.0.0rc1. This is the end of the road to Nikola version 8. Within 48 hours, assuming there are no grave bugs reported in that timeframe, we intend to release v8 final.
What is Nikola?
Nikola is a static site and blog generator, written in Python.
It can use Mako and Jinja2 templates, and input in many popular markup formats, such as reStructuredText and Markdown — and can even turn Jupyter Notebooks into blog posts! It also supports image galleries, and is multilingual. Nikola is flexible, and page builds are extremely fast, courtesy of doit (which is rebuilding only what has been changed).
Find out more at the website: https://getnikola.com/
Downloads
Install using pip install Nikola==8.0.0rc1
.
If you want to upgrade to Nikola v8, make sure to read the Upgrading blog post.
Changes
Features
- Add Vietnamese translation by Hoai-Thu Vuong
- Don’t generate gallery index if the destination directory is site root and it would conflict with blog index (Issue #3133)
- All built-in themes now support
updated
timestamp fields in posts. The update time, if it is specified and different from the posting time, will be displayed as "{postDate} (${messages("updated")} {updateDate})". If no update time is specified, the posting time will be displayed alone. - All built-in themes now support the
DATE_FANCINESS
option. - Theme bundles are now parsed using the configparser module and can support newlines inside entries as well as comments
- Make bootstrap4 navbar color configurable with
THEME_CONFIG['navbar_light']
(Issue #2863)
Bugfixes
- Use UTF-8 instead of system encoding for gallery metadata.yml file
- Do not remove first heading in document (reST document title) if
USE_REST_DOCINFO_METADATA
is disabled (Issue #3124) - Remove
NO_DOCUTILS_TITLE_TRANSFORM
setting, this is now default behavior ifUSE_REST_DOCINFO_METADATA
is disabled (Issue #2382, #3124) - Enforce trailing slash for directories in
nikola auto
(Issue #3140) - Galleries with baguetteBox don’t glitch out on the first image anymore (Issue #3141)
Removed features
v8.0.0b3
On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.0.0b3. This is the third and hopefully final beta of Nikola v8. The big change in this release is the adoption of Babel to handle date translations (instead of relying on system locale, which didn’t work well for us). Other issues and bugs were fixed.
Many themes in our Index have been ported for Nikola v8, but some of them are not yet there.
What is Nikola?
Nikola is a static site and blog generator, written in Python.
It can use Mako and Jinja2 templates, and input in many popular markup formats, such as reStructuredText and Markdown — and can even turn Jupyter Notebooks into blog posts! It also supports image galleries, and is multilingual. Nikola is flexible, and page builds are extremely fast, courtesy of doit (which is rebuilding only what has been changed).
Find out more at the website: https://getnikola.com/
Downloads
Install using pip install Nikola==8.0.0b3
.
If you want to upgrade to Nikola v8, make sure to read the Upgrading blog post.
Changes
Features
- New data_file option for chart shortcode and directive (Issue #3129)
- Show the filename of the missing file when
nikola serve
can't find a file (i.e. when an 404 error occurs). - Better error messages for JSON download failures in
nikola plugin
andnikola theme
(Issue getnikola/plugins#282) - Use Babel instead of the locale module to better handle localizations (Issues #2606, #3121)
- Change
DATE_FORMAT
formats to CLDR formats (Issue #2606)
Bugfixes
- Fix listing installed themes if theme directory is missing.
- Watch correct output folder in
nikola auto
(Issue #3119) - Fix post fragment dependencies when posts are only available in a non-default language (Issue #3112)
- Implement
MARKDOWN_EXTENSION_CONFIGS
properly (Issue #2970) - Ignore
.DS_Store
when processing listings (Issue #3099) - Remove redundant check for tag similarity (Mentioned in Issue #3123)
v8.0.0b2
On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.0.0b2. This release fixes some bugs found in v8.0.0b1, and adds a few new appearance features (featured posts, alternate navigation links)
The final version of Nikola v8 should be out in early June. We welcome everyone to test it with their site and report any issues to make it the best release ever.
What is Nikola?
Nikola is a static site and blog generator, written in Python.
It can use Mako and Jinja2 templates, and input in many popular markup formats, such as reStructuredText and Markdown — and can even turn Jupyter Notebooks into blog posts! It also supports image galleries, and is multilingual. Nikola is flexible, and page builds are extremely fast, courtesy of doit (which is rebuilding only what has been changed).
Find out more at the website: https://getnikola.com/
Downloads
Install using pip install Nikola==8.0.0.b2
.
Changes
Important compatibility changes not mentioned previously
- You need
<a class="reference">
(instead ofimage-reference
) to activate the lightbox now
Features
- Add
NAVIGATION_ALT_LINKS
option, displayed on the right side in bootstrap4/bootblog4 (Issue #3030) - Added documentation of Post objects to list of template variables (Issue #3003)
- Support featured posts in bootblog4 (Issue #2964)
- Add
THEME_CONFIG
setting that themes can use in any way - Use youtube-nocookie.com for better privacy in
youtube
reST directive and improve the appearance of the player
Featured post details: https://getnikola.com/handbook.html#featured-posts
Bugfixes
- Improve appearance of
bootblog4
on mobile (Issue #3069) - Make
smartjoin
more flexible (Issue #3080) - Make post-list and post_list synonymous (Issue #3083)
- Support
CATEGORY_DESTPATH_NAMES
with pages following destpath - Make
CATEGORY_PAGES_FOLLOW_DESTPATH
more resilient (Issue #3081) - Guard against null items in gallery meta files (Issues #3076, #3077)
- Respect
USE_FILENAME_AS_TITLE
in galleries with a meta file - Fix gallery metadata for multilingual sites (Issue #3078)
v8.0.0b1
On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.0.0b1.
Nikola v8.0.0b1 (Beta 1) is the first test release of the v8 series. The v8 series adds a ton of new features and fixes bugs, while also breaking backwards compatibility.
What is Nikola?
Nikola is a static site and blog generator, written in Python.
It can use Mako and Jinja2 templates, and input in many popular markup
formats, such as reStructuredText and Markdown — and can even turn
Jupyter (IPython) Notebooks into blog posts! It also supports image
galleries, and is multilingual. Nikola is flexible, and page builds
are extremely fast, courtesy of doit (which is rebuilding only what
has been changed).
Find out more at the website: https://getnikola.com/
Downloads
Install using pip install Nikola==8.0.0.beta1
.
Before upgrading to Nikola v8, make sure to read the “Upgrading” document.
Changes in v8.0.0b1
Important compatibility changes
- Rename
crumbs.tmpl
toui_helper.tmpl
and the breadcrumbs
bar
function tobreadcrumbs
(your templates may need
changing as well) - Rename
post.is_mathjax
topost.has_math
. Themes using
post.is_mathjax
must be updated; it is recommended that they are
changed to usemath_helper.tmpl
. - Reading reST docinfo metadata, including first heading as title,
requiresUSE_REST_DOCINFO_METADATA
now (Issue #2987) - RSS feeds might have changed their places due to
RSS_PATH
behavior changes (you may need to changeRSS_PATH
,
RSS_FILENAME_BASE
) - Atom feeds for archives and Atom pagination are no longer supported
(Issue #3016) - Sections are replaced by categories (Issue #2833)
Features
- Support hackerthemes.com themes and renamed bootswatch_theme command subtheme (Issue #3049)
- Add
DISABLE_MAIN_ATOM_FEED
setting (Issue #3016, Issue #3039) - Add
ATOM_FILENAME_BASE
setting (defaults toindex
for
existing sites, butfeed
for new sites) (Issue #3016) - Add
CATEGORY_DESTPATH_AS_DEFAULT
,CATEGORY_DESTPATH_TRIM_PREFIX
,
CATEGORY_DESTPATH_FIRST_DIRECTORY_ONLY
settings, as part of
replacing sections with categories (Issue #2833) - Tags
draft
,private
andmathjax
are no longer treated
special ifUSE_TAG_METADATA
is set toFalse
(default for
new sites) (Issue #2761) - Replace
draft
andprivate
tags with astatus
meta field
(supportspublished
,featured
,draft
,private
)
andmathjax
with.. has_math: yes
(Issue #2761) - Rename
TAG_PAGES_TITLES
→TAG_TITLES
,
TAG_PAGES_DESCRIPTIONS
→TAG_DESCRIPTIONS
. - Rename
CATEGORY_PAGES_TITLES
→CATEGORY_TITLES
,
CATEGORY_PAGES_DESCRIPTIONS
→CATEGORY_DESCRIPTIONS
. - Produce a better error message when a template referenced in another
template is missing (Issue #3055) - Support captioned images and image ordering in galleries, as well as
arbitrary metadata through a newmetadata.yml
file (Issue #3017,
Issue #3050, Issue #2837) - New
ATOM_PATH
setting (Issue #2971) - Make
crumbs
available to all pages - Allowing to customize RSS and Atom feed extensions with
RSS_EXTENSION
,ATOM_EXTENSION
settings (Issue #3041) - Allowing to customize filename base appended to RSS_PATH
withRSS_FILENAME_BASE
setting (Issue #3041) - Use basic ipynb template by default for slightly better appearance
and behavior - Fixing behavior of RSS_PATH to do what the documentation
says it does (Issue #3024) - Add support for fragments in path handlers (Issue #3032)
- New
METADATA_VALUE_MAPPING
setting to allow for flexible global
modification of metadata (Issue #3025) - New
smartjoin
template function/filter that joins lists and
leaves strings as-is (Issue #3025) - Explain index.html conflicts better (Issue #3022)
- Recognize both TEASER_END and (new) END_TEASER (Issue #3010)
(warning: if you perform manual splits, the regex change means new
indexes must be used) - New MARKDOWN_EXTENSION_CONFIGS setting (Issue #2970)
- Replace
flowr.js
withjustified-layout.js
by Flickr
(does not require jQuery!) bootblog4
is the new default theme (Issue #2964)- New
bootstrap4
andbootblog4
themes (Issue #2964) - New Thai translation by Narumol Hankrotha and Jean Jordaan
- Support for Commento comment system (Issue #2773)
- New PRESERVE_ICC_PROFILES option to control whether ICC profiles are
preserved when copying images. - Use baguetteBox in Bootstrap theme (part of Issue #2777)
- New default-config command to generate a clean configuration.
- New
thumbnail
shortcode similar to the reStructuredText
thumbnail
directive (via Issue #2809) - Rewrite
nikola auto
with asyncio and aiohttp (Issue #2850) - New
listings
shortcode similar to the reStructuredText listings
directive (Issue #2868) - Switch to reStructuredText’s new HTML 5 renderer (Issue #2874)
- Deprecate
html4css1.css
in favor ofrst_base.css
(Issue
#2874) - Add support for
MetadataExtractor
plugins that allow custom,
extensible metadata extraction from posts (Issue #2830) - Support YAML and TOML metadata in 2-file posts (via Issue #2830)
- Renamed
UNSLUGIFY_TITLES
→FILE_METADATA_UNSLUGIFY_TITLES
(Issue #2840) - Add
NIKOLA_SHOW_TRACEBACKS
environment variable that shows
full tracebacks instead of one-line summaries - Use
PRETTY_URLS
by default on all sites (Issue #1838) - Feed link generation is completely refactored (Issue #2844)
- Let path handlers return absolute URLs (Issue #2876)
- Add
BLOG_EMAIL
to global context to make it available for
templates (Issue #2968)
Bugfixes
- Fixes behavior for posts not available in default language
(Issues #2956 and #3073) - Always follow
FEED_LENGTH
for Atom feeds - Apply filters to all Atom feeds
- Read file metadata if compiler metadata exists and prefer it over
compiler metadata (Issue #3008) - Rename
DISABLE_INDEXES_PLUGIN_INDEX_AND_ATOM_FEED
toDISABLE_INDEXES
andDISABLE_INDEXES_PLUGIN_RSS_FEED
toDISABLE_MAIN_RSS_FEED
(Issue #3039) - Make chart shortcode its own plugin and make the reST directive
depend on it. - Put post_list shortcode in its own plugin and make the reST
directive depend on it. - Don’t silence syntax errors and other exceptions that occur while
reading metadata - Use documented dateutil API for time zone list (Issue #3006)
- Handle trailing slash redirects with query strings correctly in
nikola serve
(Issue #3000) - Fix w3c validation errors for itemscope entries in default themes
- Hide “Incomplete language” message for overrides of complete
languages - Handle '/' and other absolute paths better in POSTS / PAGES / TRANSLATIONS
(Issue #2982) - Fix loading non-default languages
- Support KaTeX for reST display math (Issue #2888)
- Use npm for asset management instead of bower, which was deprecated
(Issue #2790) - Properly handle
SHOW_INDEX_PAGE_NAVIGATION
with Jinja templates
(Issue #2960) - Prevent crashes due to Windows-specific code in
auto
running on
all platforms (Issue #2940) - Don’t run hyphenate on
<pre>
blocks (Issue #2939) - Make errors in reST display in logs again
- Unquote paths given to
link://
magic URLs (Issue #2934) - Specify UTF-8 input encoding for Mako as default (Issue #2930)
- Don't trigger rebuilds in auto mode for files it's safe to ignore
(Issue #2906) - Fix padding for Jupyter code blocks (Issue #2927)
- Apply
SCHEDULE_ALL
to posts only (Issue #2921) - Restore version number to Bootswatch URLs (Issue #2916)
- Do not strip trailing slash in
slug
magic links - Ignore empty tags in HTML metadata reader (Issue #2890)
- Do not remove doctype if
add_header_permalinks
or
deduplicate_ids
are used - Handle empty slug metadata (Issue #2887)
- Fix crash when compiling empty
.html
posts (Issue #2851) - Make failures to get source commit hash non-fatal in
github_deploy
(Issue #2847) - Less cryptic error when guessing format from extension in
new_post
fails - Use Jupyter name more consistently in docs
- Support CODE_COLOR_SCHEME in Jupyter notebooks (Issue #2093)
- Language was not passed to title and link generation for page indexes
- Addressed issue with snaps not allowing certain functions to work properly.
Removed conf.py settings
The following settings have been removed. Nikola will now always
behave as if the value was what is displayed afer the setting name.
FEED_PREVIEWIMAGE = True
SITEMAP_INCLUDE_FILELESS_DIRS = True
USE_OPEN_GRAPH = True
USE_BASE_TAG = False
Removed features
- Removed Colorbox, baguetteBox is used instead (Issue #2777)
- Removed
googleplus
comments (no longer supported) (Issue #635) - Removed the slides directive for docutils, it will now be a separate plugin.
- Dropped Python 2 and Python 3.3 support (oldest supported version is 3.4)
- Removed
nikola install_theme
— usenikola theme
instead - Droppped insecure post “encryption” feature
- Stopped supporting all deprecated config options
- Dropped annotations support (annotateit.org closed down in March 2017)
- Removed taxonomy option
also_create_classifications_from_other_languages
(Issue #2785) andgenerate_atom_feeds_for_post_lists
(Issue
#3016) - Removed old 7-line metadata format (Issue #2839)
- Atom feeds are now limited to one page (Issue #3016)
- Removed sections (replaced by improved categories) (Issue #2833)