Nikola v8.0.0 is out!
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.tmpltoui_helper.tmpland the breadcrumbsbarfunction tobreadcrumbs(your templates may need changing as well)Rename
post.is_mathjaxtopost.has_math. Themes usingpost.is_mathjaxmust 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_METADATAnow (Issue #2987)RSS feeds might have changed their places due to
RSS_PATHbehavior 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 nowDate 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_METADATAis 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
updatedtimestamp 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_FANCINESSoption.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 servecan't find a file (i.e. when an 404 error occurs).Better error messages for JSON download failures in
nikola pluginandnikola theme(Issue getnikola/plugins#282)Use Babel instead of the locale module to better handle localizations (Issues #2606, #3121)
Change
DATE_FORMATformats to CLDR formats (Issue #2606)Add
NAVIGATION_ALT_LINKSoption, 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_CONFIGsetting that themes can use in any wayUse youtube-nocookie.com for better privacy in
youtubereST directive and improve the appearance of the playerSupport hackerthemes.com themes and renamed bootswatch_theme command subtheme (Issue #3049)
Add
DISABLE_MAIN_ATOM_FEEDsetting (Issue #3016, Issue #3039)Add
ATOM_FILENAME_BASEsetting (defaults toindexfor existing sites, butfeedfor new sites) (Issue #3016)Add
CATEGORY_DESTPATH_AS_DEFAULT,CATEGORY_DESTPATH_TRIM_PREFIX,CATEGORY_DESTPATH_FIRST_DIRECTORY_ONLYsettings, as part of replacing sections with categories (Issue #2833)Tags
draft,privateandmathjaxare no longer treated special ifUSE_TAG_METADATAis set toFalse(default for new sites) (Issue #2761)Replace
draftandprivatetags with astatusmeta field (supportspublished,featured,draft,private) andmathjaxwith.. 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.ymlfile (Issue #3017, Issue #3050, Issue #2837)New
ATOM_PATHsetting (Issue #2971)Make
crumbsavailable to all pagesAllowing to customize RSS and Atom feed extensions with
RSS_EXTENSION,ATOM_EXTENSIONsettings (Issue #3041)Allowing to customize filename base appended to RSS_PATH with
RSS_FILENAME_BASEsetting (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_MAPPINGsetting to allow for flexible global modification of metadata (Issue #3025)New
smartjointemplate 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.jswithjustified-layout.jsby Flickr (does not require jQuery!)bootblog4is the new default theme (Issue #2964)New
bootstrap4andbootblog4themes (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
thumbnailshortcode similar to the reStructuredTextthumbnaildirective (via Issue #2809)Rewrite
nikola autowith asyncio and aiohttp (Issue #2850)New
listingsshortcode similar to the reStructuredText listings directive (Issue #2868)Switch to reStructuredText’s new HTML 5 renderer (Issue #2874)
Deprecate
html4css1.cssin favor ofrst_base.css(Issue #2874)Add support for
MetadataExtractorplugins 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_TRACEBACKSenvironment variable that shows full tracebacks instead of one-line summariesUse
PRETTY_URLSby default on all sites (Issue #1838)Feed link generation is completely refactored (Issue #2844)
Let path handlers return absolute URLs (Issue #2876)
Add
BLOG_EMAILto 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_METADATAis disabled (Issue #3124)Remove
NO_DOCUTILS_TITLE_TRANSFORMsetting, this is now default behavior ifUSE_REST_DOCINFO_METADATAis 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_CONFIGSproperly (Issue #2970)Ignore
.DS_Storewhen processing listings (Issue #3099)Remove redundant check for tag similarity (Mentioned in Issue #3123)
Improve appearance of
bootblog4on mobile (Issue #3069)Make
smartjoinmore flexible (Issue #3080)Make post-list and post_list synonymous (Issue #3083)
Support
CATEGORY_DESTPATH_NAMESwith pages following destpathMake
CATEGORY_PAGES_FOLLOW_DESTPATHmore resilient (Issue #3081)Guard against null items in gallery meta files (Issues #3076, #3077)
Respect
USE_FILENAME_AS_TITLEin galleries with a meta fileFix gallery metadata for multilingual sites (Issue #3078)
Fixes behavior for posts not available in default language (Issues #2956 and #3073)
Always follow
FEED_LENGTHfor Atom feedsApply 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_FEEDtoDISABLE_INDEXESandDISABLE_INDEXES_PLUGIN_RSS_FEEDtoDISABLE_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_NAVIGATIONwith Jinja templates (Issue #2960)Prevent crashes due to Windows-specific code in
autorunning 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_ALLto posts only (Issue #2921)Restore version number to Bootswatch URLs (Issue #2916)
Do not strip trailing slash in
slugmagic linksIgnore empty tags in HTML metadata reader (Issue #2890)
Do not remove doctype if
add_header_permalinksordeduplicate_idsare usedHandle empty slug metadata (Issue #2887)
Fix crash when compiling empty
.htmlposts (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_postfailsUse 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 = TrueSITEMAP_INCLUDE_FILELESS_DIRS = TrueUSE_OPEN_GRAPH = TrueUSE_BASE_TAG = False
Removed features¶
Removed Colorbox, baguetteBox is used instead (Issue #2777)
Removed
googlepluscomments (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 themeinsteadDroppped 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)
Moved
tag_cloud_data.jsongeneration to a separatetagcloudplugin (Issue #1696)The
webassetslibrary is no longer required, we now manually bundle files (Issue #3074)
Comments
Comments powered by Disqus