Nikola v8.1.2 is out!

On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.1.2. This release has a bunch of new features, fixes some bugs, and improves compatibility with some dependencies and Windows.

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 for multiple authors per post — comma-separated, enabled by MULTIPLE_AUTHORS_PER_POST setting (Issue #3252)

  • Add navbar_custom_bg theme option to bootstrap4 and document options for bootstrap4 better (Issue #3443)

  • Add Marathi translation

  • Restore caps typogrify filter (wraps strings of capital letters with <span class="caps"> (via Issue #3405)

  • Improve nikola auto performance with rate-limiting, support -n argument to pass to nikola build (Issue #3401)

  • Add support for the Utterances comment system

Bugfixes

  • Fix previewimages (post- and root-relative) in bootblog4/galleries featured posts for non-server-root sites (Issue #3471)

  • Windows: Also fix symlinks when installing from source with pip; if possible, enable Developer Mode and run git config --global core.symlinks true before cloning the Nikola repo

  • Fix clicking on links to image files. baguetteBox now requires a link (<a>) to have an <img> as a child in order to make the link activate the lightbox. (Issue #3472)

  • Fix LINK_CHECK_WHITELIST having issues due to mixing Unicode and bytestrings (Issue #3466)

  • Add support for nbconvert>=6.0.0 (Issue #3457)

  • Read files as utf-8-sig to allow BOM in input files

  • Don’t break slugs with slashes in doc directive (Issue #3450)

  • Avoid warnings from type annotations in auto caused by missing aiohttp (Issue #3451)

  • Ensure query strings and fragments are kept with URL_TYPE = "full_path" (Issue #3448)

  • Don’t run typogrify filters on <title> tag to avoid adding extra tags (Issue #3405)

  • Fix handling of duplicate plugins on Windows

  • Allow else clause in post-list plugin. (Issue #3436)

  • Ensure type metadata value from plugins is preserved (Issue 3445)

  • Fix path handlers with slashes on Windows

Nikola v8.1.1 is out!

On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.1.1. This release is mainly due to an incorrect PGP key being used for the PyPI artifacts; three regressions were also fixed in this release.

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

Bugfixes

  • Default to no line numbers in code blocks, honor CodeHilite requesting no line numbers. Listing pages still use line numbers (Issue #3426)

  • Remove duplicate MathJax config in bootstrap themes (Issue #3427)

  • Fix doit requirement to doit>=0.32.0 (Issue #3422)

Nikola v8.1.0 is out!

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()

Automating Nikola rebuilds with GitHub Actions

In this guide, we’ll set up GitHub Actions to rebuild a Nikola website and host it on GitHub Pages.

Why?

By using GitHub Actions to build your site, you can easily blog from anywhere you can edit text files. Which means you can blog with only a web browser and GitHub.com. You also won’t need to install Nikola and Python to write. You won’t need a real computer either — a mobile phone could probably access GitHub.com and write something.

Caveats

  • The build might take a couple minutes to finish (1:30 for the demo site; YMMV)

  • When you commit and push to GitHub, the site will be published unconditionally. If you don’t have a copy of Nikola for local use, there is no way to preview your site.

What you need

  • A computer for the initial setup that can run Nikola. You can do it with any OS (Linux, macOS, *BSD, but also Windows).

  • A GitHub account (free)

Setting up Nikola

Start by creating a new Nikola site and customizing it to your liking. Follow the Getting Started guide. You might also want to add support for other input formats, namely Markdown, but this is not a requirement.

After you’re done, you must configure deploying to GitHub in Nikola. There are a few important things you need to take care of:

  • Make your first deployment from your local computer and make sure your site works right. Don’t forget to set up .gitignore.

  • The GITHUB_COMMIT_SOURCE and GITHUB_REMOTE_NAME settings are overridden, so you can use values appropriate for your local builds.

  • Ensure that the correct branch for GitHub Pages is set on GitHub.com.

If everything works, you can make some change to your site (so you see that rebuilding works), but don’t commit it just yet.

Setting up GitHub Actions

Next, we need to set up GitHub Actions. This is really straightforward.

On your source branch, create a file named .github/workflows/main.yml with the following contents:

github-workflow.yml (Source)

on: [push]
jobs:
  nikola_build:
    runs-on: ubuntu-latest
    name: 'Deploy Nikola to GitHub Pages'
    steps:
    - name: Check out
      uses: actions/[email protected]
    - name: Build and Deploy Nikola
      uses: getnikola/[email protected]

There might be a newer version of the action available, you can check the latest version in the getnikola/nikola-action repo on GitHub.

By default, the action will install the latest stable release of Nikola[extras]. If you want to use the bleeding-edge version from master, or want to install some extra dependencies, you can provide a requirements.txt file in the repository.

Commit everything to GitHub:

git add .
git commit -am "Automate builds with GitHub Actions"

Hopefully, GitHub will build your site and deploy. Check the Actions tab in your repository or your e-mail for build details. If there are any errors, make sure you followed this guide to the letter.

Nikola v8.0.4 is out!

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 and extra_footer from base theme due to incompatibility with Mako. The blocks are still available in bootstrap4 and bootblog4. (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)

Nikola v8.0.3 is out!

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 and extra_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 '.'

Nikola v8.0.2 is out!

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)

Nikola v8.0.1 is out!

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 and nikola serve clickable (Issue #3166)

Bugfixes

  • Pandoc compiler was passing deleted argument (Issue #3171)
  • Make nikola version --check work again (Issue #3170)
  • Set logging level for reST to warning in order to limit noise
  • Fix docinfo removal for sites that use reST docinfo metadata (Issue #3167)

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.tmpl to ui_helper.tmpl and the breadcrumbs bar function to breadcrumbs (your templates may need changing as well)
  • Rename post.is_mathjax to post.has_math. Themes using post.is_mathjax must be updated; it is recommended that they are changed to use math_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 change RSS_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 of image-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 and nikola 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 to index for existing sites, but feed 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 and mathjax are no longer treated special if USE_TAG_METADATA is set to False (default for new sites) (Issue #2761)
  • Replace draft and private tags with a status meta field (supports published, featured, draft, private) and mathjax with .. has_math: yes (Issue #2761)
  • Rename TAG_PAGES_TITLESTAG_TITLES, TAG_PAGES_DESCRIPTIONSTAG_DESCRIPTIONS.
  • Rename CATEGORY_PAGES_TITLESCATEGORY_TITLES, CATEGORY_PAGES_DESCRIPTIONSCATEGORY_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 with justified-layout.js by Flickr (does not require jQuery!)
  • bootblog4 is the new default theme (Issue #2964)
  • New bootstrap4 and bootblog4 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 of rst_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_TITLESFILE_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 if USE_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 to DISABLE_INDEXES and DISABLE_INDEXES_PLUGIN_RSS_FEED to DISABLE_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 — use nikola 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) and generate_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.json generation to a separate tagcloud plugin (Issue #1696)
  • The webassets library is no longer required, we now manually bundle files (Issue #3074)

Nikola v8.0.0rc1 is out!

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 if USE_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

  • Moved tag_cloud_data.json generation to a separate tagcloud plugin (Issue #1696)
  • The webassets library is no longer required, we now manually bundle files (Issue #3074)