Nikola v7.5.1 is out!

On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v7.5.1. It features some bugfixes and new 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 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: http://getnikola.com/

Downloads

Get it on GitHub and PyPI.

Changes

Features

  • Suggest misspelled commands (Issue #1807)
  • New implementation of the nikola auto command.
  • requests is now required for all Nikola sites
  • New nikola version --check option (Issue #1767)

Bugfixes

  • Support pure markdown posts in WP import (Issue #484)
  • Make auto shutdown with ctrl-c (Issue #1811)
  • Log properly in nikola auto (Issue #1812)
  • Handle rare gettz failure (Issue #1806)
  • Handle missing dependencies better in auto plugin (Issues #1803, #1809)
  • IDNA mixing unicode/bytes in python 3 (Issue #1802)
  • Cleaner splitting of metadata in onefile posts (Issue #973)
  • It's markdown extra, not extras (Issue #1799)

Version 7.5.0 Released

On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v7.5.0. It features several bugfixes and 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 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: http://getnikola.com/

Changes

Features

  • Make default themes more accessible (Issue #377)
  • Add ipython support to the default themes (Issue #1782)
  • Automatically mark ipynb posts/pages as requiring mathjax (Issue #1782)
  • New --get-path option for nikola install_theme (Issue #1762)
  • New nikola rst2html command (Issue #1710)
  • New nikola status command (Issue #1740)
  • Support [code] in wordpress importers (Issue #1186)
  • Cleaner formatting of HTML output
  • Allowing category hierarchies via new option CATEGORY_ALLOW_HIERARCHIES (Issue #1520)

Bugfixes

  • Dropped empty languages (fil, tl, zh_TW)
  • Extract nikola check target list from actual task list instead of parsing (Issue #1758)
  • Treat special-purpose “draft” tag case-insensitive
  • Avoid some rebuild loops (Issue #1747)
  • Better error if two posts/pages output conflict (Issue #1749)
  • Scanning of posts refactored out of core (Issue #1700)
  • github_deploy records lastdeploy timestamp like regular deploy
  • Use a global directory for gallery images, ignoring translations (Issue #1726)
  • The post-list directive only triggers rebuilds if timeline changes (Issue #1688)
  • Don’t check the same remote URL more than once (Issue #1732)
  • All remotely checked links resulted in incorrect warnings (nikola check -lr)
  • Exclude <meta content="noindex" name="robots"> from sitemaps
  • new_post paths are now relative to CWD (Issue #1325)

Nikola v7.4.1 is out!

On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v7.4.1. It features some bugfixes and very minor 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 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: http://getnikola.com/

Downloads

Get it on GitHub and PyPI.

Changes

Features

  • Better handling of missing/unconfigured compilers (Issue #1704)
  • New -r option for the link checker to check remote links (Issue #1684)
  • Use static navbars in bootstrap3 and bootstrap themes

Bugfixes

  • Handle strange URLs, like ed2k:// (Issue #1695)
  • Fix very old metadata format support (Issue #1689)

Nikola version 7.4.0 is out!

On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v7.4.0. It features some bugfixes and new 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 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: http://getnikola.com/

Changes

Features

  • Substitutions for RSS_LINKS_APPEND_QUERY for identifying the source feed (feedRelUri) and the kind of feed (feedFormat).
  • New option GENERATE_ATOM, off by default – learn more about Atom feeds in Nikola
  • Current and archive Atom feeds for indexes; category, tag, and archive indexes (RFC-4287 and RFC-5005)
  • Atom feed auto-discovery in HTML indexes and category/tag indexes
  • .atom included in the sitemap index
  • New post metadata "updated", inherits "date" if unset
  • Allow IPv6 in nikola auto (Issue #1682)
  • Allow IPv6 in nikola serve (Issue #1682)
  • Set default new site URL to https://example.com/
  • Plugins can manipulate task dependencies (Issue #1679)
  • LINK_CHECK_WHITELIST now works with output relative and full fs paths
  • Four new filters: html_tidy_nowrap, html_tidy_wrap, html_tidy_wrap_attr, and html_tidy_mini for prettification and minification. Requires tidy5.
  • Multilingual sitemaps (Issue #1610)
  • Compatibility with doit v0.28.0 (Issue #1655)
  • AddThis is no longer added by default to users’ sites
  • New translations (az, fil, tl, uk, zh_TW)
  • Add reStructuredText transform support (Issue #1647)
  • Produce Unicode output in nikola init (via Issue #1644)
  • Add HIDDEN_TAGS and HIDDEN_CATEGORIES settings to hide some tags and categories (eg. mathjax) from view (Issue #1640)
  • Instruct browsers to prefetch newest post when visiting the front page
  • Add a sort parameter to the post-list directive to sort posts in the list using natsort. (Issue #1635)

Bugfixes

  • Make .islink work properly (via Issue #1536)
  • RSS_LINKS_APPEND_QUERY not working in RSS feeds for tags
  • nikola check -l didn’t scan posts
  • Don’t use sets for FAVICONS (Issue #1674)
  • Posts/Pages that use post-list will never be up to date (Issue #1671)
  • Support using post.text() in post_list_directive.tmpl (Issue #1671)
  • Avoid recursive dep when using post-list in a post (Issue #1671)
  • Encode IDNs to Punycode in nikola init and in links; show an error if the site URL is not Punycode (Issue #1644)
  • Make images the default output directory for IMAGE_FOLDERS (Issue #1663)
  • Don't default to any swatch in bootswatch_theme (Issue #1656)
  • Fix nikola check -l for absolute and full-path URL styles (Issue #1650)
  • Really add missing trailing slashes in BASE_URL (Issue #1651)
  • Check if files exists before adding them as post-list dependencies (Issue #1646)
  • Fix build command in nikola auto (Issue #1641)
  • Update Bootstrap to v3.3.4
  • Update jquery-colorbox
  • Fix symlinks for moment.js in Windows
  • Fix code.css bundling in Windows
  • Listings in posts now work in Windows (Issue #1631)
  • Add 20 seconds to reading time per embedded media

Nikola v7.3.1 is out!

On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v7.3.1. It features some bugfixes and new 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 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: http://getnikola.com/

Downloads

Get it on GitHub and PyPI.

Changes

Features

  • Separate new option IMAGE_THUMBNAIL_SIZE for setting size of thumbnails created by scale_images plugin (Issue #1606)
  • Don't create larger thumbnails for panorama images in scale_images (Issue #1606)
  • Added root path handler (via Issues #1008, #1573)
  • Added RSS feeds to gallery HEAD (part of Issue #786)

Bugfixes

  • Use pyphen properly when there are no dictionaries for this language (Issue #1613)
  • Fix nikola deploy when there is no cache (Issue #1615)
  • Report issues in scale_images properly (Issue #1598)
  • Correctly read sub-timezones in nikola init (via Issue #1599)
  • Fix zoneinfo reading in nikola init (Issue #1599)
  • Fix .islink detection for galleries (via Issue #1536)
  • Links to languages point to site root and not the blog (Issue #1008)
  • Brand link is now language-specific (Issue #1573)
  • Fixed compatibility with IPython 3.x (Issue #1581)
  • Compilers mark tasks as out of date if compiler-specific options and plugins change (Issue #1523)

Nikola v7.3.0 is out!

On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v7.3.0. It features many bugfixes, and also some new useful 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 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: http://getnikola.com/

Downloads

Get it on GitHub and PyPI.

Changes

Features

  • Added -a, --author option to set post author field
  • Added option INDEXES_PRETTY_PAGE_URL to make URLs for indexes pages more pretty. (Issue #1548)
  • Added -i, --import argument to new_post for importing existing post contents (Issue #1385)
  • Added warning about password in posts being insecure (Issue #1547)
  • INDEXES_TITLE and INDEXES_PAGES are translatable (Issue #1544)
  • Added new option ARCHIVES_ARE_INDEXES which allows archive pages which list posts to be rendered with the post contents. (Issue #1537)
  • Added new option INDEXES_STATIC which allows to define the page ordering for indexes (Issue #1537). Also, if tag pages are created as indexes, they will behave more close to the default indexes.
  • Use table line-numbering style with reST code, making copy-pasting code possible (Issue #1285)
  • Tag and category pages are now more separated. The prefix for category pages can be changed and the folder can be modified independently of the tags' folder. (Issue #1535)
  • Writing the tag cloud data file can now be disabled. Will be disabled by default in the future. (Issue #1535)
  • The utils.config_changed function now takes an optional extra argument, identifier, used to identify the source of a specific dependency save. As such, ALL your files will be rebuilt after upgrading. (Issue #1526 via #1521)
  • New option GALLERY_FOLDERS replacing GALLERY_PATH (Issue #1511)
  • New PANDOC_OPTIONS option (Issue #1492)
  • New tab-width option in code-block directive (Issue #1514)
  • New option TAG_PAGES_DESCRIPTIONS for optionally making individual tag pages more unique and interesting (Issue #1486)
  • New option LISTINGS_FOLDERS (which replaces LISTINGS_FOLDER) which allows to separate input and output folder names for listings, and allows to have more than one listings folder (Issue #1499)
  • ReST listing directive now honors alternative listings folder names (Issue #1499)
  • New command line option --conf= to specify the configuration file (default is conf.py) (Issue #1501)
  • Added Arabic translation (by darkwise)
  • Added Danish translation (by mikkelkristiansen)
  • Added Indonesian translation (by Willy Sudiarto Raharjo)
  • Added Korean translation (by Dong Geun)
  • Added Serbian translation (by Ivan Radeljic)
  • Added Swedish translation (by Johan Sommerfeld)
  • New advanced option RSS_LINKS_APPEND_QUERY for tracking traffic from RSS subscribers
  • Add robots meta tag with value noindex for drafts (Issue #1489)
  • New option TAGLIST_MINIMUM_POSTS allows hiding unpopular tags from the tag index page (Issue #1484)
  • New options CREATE_FULL_ARCHIVES and CREATE_DAILY_ARCHIVE which allow to create non-hierarchical archives and archives for days, respectively (Issue #1494)
  • New plugin for creating image thumbnails, and a corresponding reST plugin (Issue #1527)

Bugfixes

  • Handle over-and-under-lined titles in rst for guessing title (Issue #1539)
  • Don't apply colorbox to figures if they are of islink class. (Issue #1536)
  • Turned minify_lines into a no-op (Issue #1497)
  • Don’t classify unpublished posts as pages (Issue #1577)
  • Fixed a TranslatableSetting.langformat race condition
  • Fixed TranslatableSetting instantiation in TranslatableSetting.langformat (Issue #1571)
  • Fixed rss.xsl path for blogs not deployed to server root (Issue #1563)
  • Respect SHOW_UNTRANSLATED_POSTS = False in archives and for untranslated source files (Issue #1360)
  • Make sure drafts don’t appear in sitemaps with multiple languages (Issue #1489)
  • Make site.posts_per_file cover all languages (Issues #1270, #1489)
  • Fix ANNOTATIONS not working at all (Issue #1477)
  • Fix asking questions with Unicode chars in Python 2 (Issue #1476)
  • Use ADDITIONAL_METADATA with the two-file format (Issue #1471)
  • Make previewimage compatible with sites deployed to subdirectories (Issue #1473)
  • Make sitemaps work on sites deployed to subdirectories (Issue #1472)

Nikola v7.2.0 is out!

On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v7.2.0. It features many bugfixes, and also some new useful 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 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: http://getnikola.com/

Downloads

Get it on GitHub and PyPI.

Changes

Features

  • Added support for fancy dates via moment.js (Issue #1256)
  • Updates: jQuery v1.11.1, Bootstrap v3.3.0
  • Allow presets usage with nikola deployDEPLOY_COMMANDS is now a dict of {preset: commands} (Issue #1452)
  • New GLOBAL_CONTEXT_FILLER setting, functions listed there will be called with the local context and the template name before template rendering. (Issue #1451)
  • New USE_CDN_WARNING setting to block warnings about potential USE_CDN misuse (defaults to True)
  • nikola check -l will warn about mixed-security (HTTP on HTTPS)
  • New ConfigPlugin category (without any specific behavior by default)
  • New meta property “previewimage” for use with Open Graph (Issue #1421)
  • Expose publishing date, tags, and more in Open Graph
  • XSL Transform RSS into pretty and helpful webpages when opened in browsers (Issue #1411)

Bugfixes

  • Don’t pull by default in github_deploy (Issue #1464)
  • disabled hyphenation for paragraphs with inline math (Issue #1461)
  • Support filters for all tasks (Issue #1459)
  • Don’t check cache/ in nikola check -l (Issue #1447)
  • Fix new_post for pandoc format (Issue #1445)
  • Fix STORY_INDEX generation (Issue #1444)
  • Fix bootswatch creation version check (Issue #1441)
  • Never rebase while pulling in github_deploy
  • Handle better new_post --format=pandoc when pandoc is not defined (Issue #1422)
  • Open Graph properly uses latest RDFa in HTML – fixes validation
  • Fix sitemap generation (Issue #1397 via #1032)
  • Use destination folder names as titles for titleless listings
  • Fixed problems with installation from .tar.gz under Windows (Issue #1417)
  • Fixed encoding problems in WordPress urlmap writer (Issue #1416)
  • Added back atom:link in RSS feeds
  • Fixed Nikola-based page redirects in Python 2 (Issue #1414)
  • Fixed files/*.php (skip post/story-specific filters) (Issue #1403)
  • Warn about missing / in BASE_URL differently (explicit request to fix the config file)
  • Fix broken auto -b option (Issue #1437)

5000 commits to Nikola!

Nikola, the static site genrator, has just hit 5000 commits! The lucky commit was a99ef7a, with the message Document new previewimage metadata and was authored by Daniel Aleksandersen (Aeyoun).

During 2.5 years, 103 different people committed to the project. The top 10 committers are:

Top 10 Nikola committers Roberto Alsina0.05Chris “Kwpolska” Warrick0.15Daniel Aleksandersen0.25Niko Wenselowski0.35Puneeth Chaganti0.45Damián Avila0.55Claudio Canepa0.65Ivan Teoh0.75schettino720.85Areski Belaid0.950200400600800100012001400160018002000220024002526262.6199.59615384615384Roberto Alsina1320142.04774346793351179.01923076923077Chris “Kwpolska” Warrick22432.491132224861445158.44230769230768Daniel Aleksandersen19329.39235946159937137.86538461538458Niko Wenselowski6516.59742676167855117.28846153846153Puneeth Chaganti5215.29794140934283796.71153846153847Damián Avila4614.6981789390340576.13461538461539Claudio Canepa3413.49865399841647255.557692307692335Ivan Teoh3713.79853523357086534.98076923076921schettino723713.79853523357086514.40384615384617Areski BelaidTop 10 Nikola committersCommits

According to OpenHub.Net, there are 54 active developers contributing code in the past year — making Nikola a large open source project, with its contributors count being in the top 2% of all OpenHub teams.

Using data generated by David A. Wheeler’s SLOCCount, 12,002 source lines of code were produced (including tests and internal code). 95.1% of codebase is Python, with the remaining 4.9% split between JavaScript, CSS, Shell, and XSLT.

Over the years, a total of 1426 issues were opened, 778 of which are already closed. 38 versions were released, including the most recent one, v7.1.0, released 15 days ago. The first ever release was version v1.1. It already contained many features still present to this day, and it also used the doit tool to do its job. Here’s a screenshot of the original page:

Nikola v1.1 Demo Site

In celebration of this milestone, the demo site from version 1.1 is now online.

Thanks for all the commits — and here’s to the next five thousand!

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

Nikola v7.1.0 released!

On behalf of the Nikola team, I am pleased to announce the release of Nikola v7.1.0.

Nikola v7.1.0 is a bugfix/feature release. It fixes quite a few bugs of v7.0.1 discovered in the intervening 3 months (sorry it took so long!), and also adds a few more features.

Get it!

Nikola v7.1.0 is available for download at GitHub and PyPI.

Changelog

Features

  • Error out when reST gists cannot be downloaded (Issue #1402)
  • Added a “Skip to content” link for accessibility (Issue #1345)
  • Added minify_lines filter to strip leading whitespace and empty lines
  • Added Google Closure Compiler JavaScript filter
  • Print full tracebacks for conf.py errors
  • Added USE_SLUGIFY (defaults to True). If it’s False, Nikola allows and generates almost any Unicode character in page URLs (Issue #1321)
  • sources for .html files are now copied as .src.html (Issue #1354)
  • Copy files/*.html verbatim (skip filters)
  • Don’t generate STORY_INDEX if there is a conflicting story
  • Added support for enclosures (via optional enclosure metadata tag) (Issue #1322)

Bugfixes

  • Fixed some margins for RTL text (Issue #1399)
  • Fixed sitemapindex filtering of non-sitemap XMLs
  • rebuild posts when metadata changes (Issue #1319)
  • Allow + in slugs (Issue #1344)
  • fix error message when tags that are too similar are found (Issues #1343, #1344)
  • serve .svgz with content-encoding: gzip (Issue #1380)
  • html5.js file for ancient IE now works outside of / (Issue #1372)
  • PHP compiler now removes metadata comments the usual way (Issue #1374)
  • PHP compiler’s permalinks were .html instead of .php (Issue #1373)
  • Fixed importing WordPress blogs outside of / (Issue #1368)
  • Fixed importing WordPress blogs without slugs (Issue #1364)
  • don’t forget query parts of links (Issue #1369)
  • Made posts that are directive-only work properly (Issue #1351)
  • Made mathjax work with stories (Issue #1355)
  • Fixed regeneration after change of NAVIGATION_LINKS
  • Made nikola bootswatch_theme compatible with Jinja themes
  • Fixed submenus in Jinja themes (Issue #1327)
  • Quietly ignore empty lines in bundles files
  • Fixed wrong filter order in post_list plugin (Issue #1365)