All Versions
Latest Version
Avg Release Cycle
141 days
Latest Release

Changelog History
Page 1

  • v3.4.0 Changes

    ๐Ÿš€ This release drops support for Python 3.6, which has reached end-of-life in December 2021.

    ๐Ÿ”„ Changes

    • ๐Ÿ”— Links and image URLs in markdown text are now, by default, resolved via the Lektor database. Previously, they were not. Note that this behavior may be customized on a per-datamodel-field basis if one wants to get the old behavior back. (#992)

    • ๐Ÿ‘ Lektor now supports either [mistune][] 2.x or mistune 0.x. The configuration API of mistune 2.x differs significantly from that of mistune 0.x. If you are using a plugin that customizes the markdown rendering, you will likely have to update the plugin to support the newer mistune, or pin mistune to the older version. (#992)

    ๐Ÿ› Bugs

    Admin Server
    • ๐Ÿ”จ Refactor and fix numerous buglets in the admin http server. (#987)
    Admin Frontend
    • ๐Ÿ— Use esbuild rather than webpack/babel to build the admin js code. (#1012)
    • โšก๏ธ Update frontend deps. (#1025)
    ๐Ÿ— Builder
    • ๐Ÿ— The asseturl filter was not propery tracking build dependencies resulting in stale hashes in the asset URL if the asset was updated. (#1020)
    • ๐Ÿ›  Fixes for click==8.1.3. (#1031, #1033)
    • ๐Ÿ›  Fixes for werkzeug>=2.1.0. (#1019, #1018)
    • โšก๏ธ Update npm package minimist. (#1021)
    • โšก๏ธ Update pre-commit config to use black==22.3.0 to avoid breakage caused by click>=8.1.0. (#1019)
    • โšก๏ธ Updateto pylint=2.13.4. (#1025)

    ๐Ÿ”จ Refactorings

    • โœ‚ Removed unused cruft. (#1009)

    โœ… [mistune]:

  • v3.3.2 Changes

    March 01, 2022

    ๐Ÿ”‹ Features

    ๐Ÿ’ป Command Line
    • Enabled the [Jinja debug extension][jinja-dbg-ext] when the LEKTOR_DEV env var is set to 1 and lektor server is used. (#984)


    ๐Ÿ› Bugs

    Markdown Renderer
    • ๐Ÿ›  Fix overzealous HTML-entity escaping of link and image attributes. (#989)
    Admin API
    • Fix a bug in make_editor_session when editing non-existant pages with a non-primary alt. (#964)
    • ๐Ÿ›  Fix the ability to add an initial flowblock to a page. (Broken in 3.3.1.)
    • ๐Ÿ”จ Refactor API views to move business logic back into the Tree adapter (#967). This fixes #962.
    ๐Ÿ’ป Admin UI
    • ๐Ÿ”„ Changed the structure of the URLs used by the GUI single-page app (#976). This fixes problems with the "edit" pencil when using alternatives (#975), and issues when page ids include colons (#610).
    • ๐Ÿ”จ Other React refactors and fixes (#988).
    • Fix Attachment.url_path when alternatives are in use. There is only one copy of each attachment emitted โ€” the url_path should always be that corresponding to the primary alternative. (#958)
    • Pad.get, if not passed an explicit value for the alt parameter, now returns the record for the primary alternative rather than the fallback record. Similarly, Pad.root now returns the root record for the primary alternative. (#958, #965)
    • ๐Ÿ›  Fix for uncaught OSError(error=EINVAL) on Windows when Pad.get was called with a path containing characters which are not allowed in Windows filenames (e.g. <>*?|\/":).
    ๐Ÿ— Builder
    • ๐Ÿ— Pages now record a build dependency on their datamodel .ini file.
    • ๐Ÿ›  Fix sqlite version detection so that we use "without rowid" optimization with current versions of sqlite. (#1002)
    ๐Ÿ’ป Command Line
    • When running lektor dev new-theme: fix check for ability to create symlinks under Windows. (#996)
    • Fix rsync publisher when deletion enabled on macOS. (#946, #954)
    โœ… Tests
    • ๐Ÿ›  Fix for test failures when git is not installed. (#998, #1000)

    ๐Ÿ”จ Refactorings

    • Cleaned up EditorSession to split mapping methods (for access to record data) to a separate class, now available as (#969)
    โœ… Testing
    • ๐Ÿ‘• Cleaned up and moved our pylint and coverage configuration to pyproject.toml. (#990, #991)
    ๐Ÿ’ป Admin UI
    • ๐Ÿšš Move frontend source from lektor/admin/static/ to frontend/. Compiled frontend code moved from lektor/admin/static/gen/ to 'lektor/admin/static/`. (#1003)
    • Omit example subdirectory, frontend source code, developer-centric config files, as well as other assorted cruft from sdist. (#986)

    โœ… [jinja-dbg-ext]:

  • v3.3.1 Changes

    January 09, 2022

    ๐Ÿ› Bugs Fixed

    • ๐Ÿ›  Fixed an import cycle which caused in ImportError if lektor.types was imported before lektor.environemnt. #974
    ๐Ÿ—„ Deprecations
    • ๐Ÿ—„ Disuse deprecated Thread.setDaemon(). #979
    ๐Ÿ’ป Admin UI
    • ๐Ÿ›  Fix spastic scroll behavior when editing flow elements. #640
    • ๐Ÿ›  Fix admin GUI when page contains an unknown flowblock type. #968
    • ๐Ÿ›  Fix admin GUI layout on mobile devices. #981
    โœ… Tests
    • โœ… Increased timeout in test_watcher.IterateInThread to prevent random spurious failures during CI testing.
    • Fix tests/ so as to allow running multiple test runs in parallel.
    • โœ… Use per-testenv coverage files to prevent contention when running tox --parallel.
    • โœ… Mark tests that require a working internet connections with pytest mark requiresinternet. #983

    ๐Ÿ”จ Refactors

    ๐Ÿ’ป Admin UI
    • Finish rewriting React class-based components to function-based components. #977
    • Finish adding types for all API endpoints. #980
    • โœ‚ Remove disused event-source polyfill.
  • v3.3.0 Changes

    December 14, 2021

    ๐Ÿš€ This release drops support for versions of Python before 3.6. ๐Ÿ‘ In particular, Python 2.7 is no longer supported.

    ๐Ÿš€ Quite a few bugs have been fixed since the previous release.

    ๐ŸŽ The Admin UI has seen a major refactor and various performance optimisations. โšก๏ธ It has been rewritten in Typescript, and updated to use v5 of the Bootstrap CSS framework.

    ๐Ÿ› Bugs Fixed

    • ๐Ÿ›  Fix queries with offset but without a limit. #827
    • ๐Ÿ›  Fix the handling of deferred (descriptor-type) model fields when used in slug_format and when used as a sort key. #789
    • โš  Refrain from issuing warning about future change in implicit image upscaling behavior in cases that do not involve upscaling. #885
    • ๐Ÿ›  Fix bug with translation fallback of record label. #897
    Data Modelling
    • ๐Ÿ›  Fixed pagination issue which caused child-less paginated pages to not be built. #952
    • ๐Ÿ‘ Allow rsync deployment to a local path. #830
    • ๐Ÿ›  Clean up subprocess handling in lektor.publisher. This fixes "ResourceWarning: unclosed file" warnings which were being emitted when using the rsync publisher, as well as possible other buglets. #896
    ๐Ÿ’ป Command Line
    • ๐Ÿ›  Fix circular imports in lektor.cli to allow its use as an executable module (python -m lektor.cli). #682, #856
    • 0๏ธโƒฃ Fall back to watchdog PollingObserver if default Observer type fails to start. This fixes "OSError: inotify watch limit reached" and perhaps other similar failures. #861, #886
    ๐Ÿ”Œ Plugins
    • ๐Ÿ›  Fix the Plugin.emit method so that it works. #859
    • ๐Ÿ‘ป Reword the (previously incomprehensible) exception message emitted when attempting to load a plugin from an improperly named distribution. #875, #879
    ๐Ÿ‘ท Build System
    • ๐Ÿ›  Fix bug in lektor.sourcesearch.find_files which was causing intermittent exceptions. #895, #897
    • ๐Ÿ›  Fix reference cycle in Environment. #882
    • ๐Ÿ›  Fix "unclosed file" ResourceWarnings. #898
    ๐Ÿ’ป Admin UI
    • ๐Ÿ›  Fix the checkboxes widget. They were broken so as to be uncheckable. #812, #817
    • ๐Ÿ”„ Fix page data being incorrectly marked as changed when flow block is expanded/collapsed in the edit UI. #828, #842
    • ๐Ÿ›  Fix encoding of URLs when opening the admin UI from the pencil button. #815, #837
    • ๐Ÿ’ป Rename a CSS class in the admin UI to prevent breakage by ad blockers. The class add-block was being blocked by the EasyList FR ad blocker. #785, #841
    • ๐Ÿ˜Œ Relax URL checking to allow all valid URLs in URL fields. #793, #840, #864
    • โšก๏ธ Preview iframe was not always updating when it should. #844, #846
    • ๐Ÿ‘‰ Make the "Save" button always visible (without need to scroll on long pages). #43, #870
    • Disable the "Save" button unless there are changes. #872
    • โž• Add "<ctl>-e" hotkey shortcut to edit page. #876
    • โšก๏ธ Update UI to Bootstrap v4. (This fixes a layout issue with the date picker.) #648, #884
    • ๐Ÿ›  Fix edit page failure for select and checkbox widgets with no choices. #890, #900
    • โšก๏ธ Update UI to Bootstrap v5. #917, #926
    • โž• Add missing translation strings, show error dialogs on top of other dialogs #934.

    Internal changes

    Python code
    • โฌ‡๏ธ Drop python 2 compatibility. #822, #850, #871, #920, #922
    • โฌ‡๏ธ Drop python 3.5 compatibility. #878, #880
    • ๐Ÿ‘Œ Support python 3.10. #938
    • ๐Ÿ— Switch to PEP-518-compatible (pyproject.toml) build process. #933, #942
    • Code beautification/reformatting. We now use black, reorder-python-imports, [flake8][], and [pylint][]. #823, #916, #925, #936
    • ๐Ÿ”จ Refactor rsync publisher tests. #836
    • Restructure code to prevent circular imports. #856, #871, #873
    • ๐Ÿ›  Minor docstring fixes. #874
    • ๐Ÿ‘• Enabled pylint's no-self-use policy. #887
    JS code
    • We now require node >= 14. #940
    • โšก๏ธ Update NPM/JS dependencies. Update to webpack v5. #816, #834, #848, #852, #860, #905, #917, #926, #945, #957
    • ๐Ÿ’… Use prettier and [eslint][] for JS (and YAML) beautification and style enforcement. #825, #936
    • โœ… Disuse unmaintained jsdomify to prevent hanging tests. #839
    • Disuse jQuery. #851
    • ๐Ÿ”จ Convert JS code to Typescript. Various other refactoring and cleanups. #857, #869, #872
    • ๐Ÿ”จ Refactor code to handle hotkeys. #876


    • ๐Ÿ˜Œ Relax werkzeug<1 to werkzeug<3. #829, #833, #911, #923
    • โฌ‡๏ธ Drop support for Python 2. #818, #819
    • We now require Jinja2>=3.0. #921

    โœ… Testing/CI

    • โœ… Use tox for local testing. #824
    • ๐Ÿ‘• Pin version of pylint used for tests. #891
    • โœ… Complete rewrite of the tests for lektor.pluginsystem to increase coverage and reduce running time. #881.
    • โœ… Test under Python 3.9. #845
    • โœ… Test under Node v14 and v16. #852, #927
    • โšก๏ธ Do not run brew update in MacOS CI workflow. #853
    • CI workflow simplification. #927

    ๐Ÿ‘• [pylint]:

    โœ… [flake8]:

    ๐Ÿ‘• [eslint]:

  • v3.2.3 Changes

    December 11, 2021


    • โช Restore python 2.7 compatibility. It was broken in leketor 3.2.2. #951
    • ๐Ÿ“Œ Pin inifile>=0.4.1 to support python 3.10 #943, #953
  • v3.2.2 Changes

    September 18, 2021


    • ๐Ÿ›  Fixes a problem with the uploaded wheel in 3.2.1.


    • ๐Ÿ›  Fixes to support werkzeug 2.x. [#911][]
  • v3.2.1 Changes

    September 18, 2021


    • โœ… Pin pytest-click<1 for python 2.7. #924
    • ๐Ÿ›  Fixes to support werkzeug 1.x. [#833][]

    ๐Ÿ› Bugs

    • ๐Ÿ‘ Allow rsync deployment to a local path. [#830][], [#836][]
    • ๐Ÿ›  Fix queries with offset but without a limit. [#827][]

    ๐Ÿ’ป Admin UI

    • ๐Ÿ›  Fix select and checkboxes widgets when choices is empty. [#900][]
    • โšก๏ธ Update npm packages. [#848][], [#834][], [#816][]
    • ๐Ÿ›  Fix updating of the preview iframe. [#846][]
    • ๐Ÿ‘ Allow ftps: and mailto: URLs in url fields. [#840][]
    • ๐Ÿ›  Fix the toggling of flow widgets in the admin UI to not mark the content as changed. [#842][]
    • ๐Ÿ“‡ Rename CSS class to prevent conflict with EasyList FR adblock list. [#841][]
    • ๐Ÿ›  Fix the handling of the URLs when opening the admin UI from the pencil button. [#837][]
    • ๐Ÿ›  Fix the checkboxes widget in the admin UI. [#817][]

    โœ… Testing / CI

    • โœ… Test under python 3.9. [#845][]
    • ๐Ÿ‘ท Various CI test fixes. #932, [#839][], #832, #826
    • โž• Added a tox.ini. [#824][]

    Code Reformatting

    • Blackify, reorder-python-imports, flake8. [#823][]
    • Reformatted js code with prettier. [#825][]
    • โšก๏ธ Update pylint config. [#822][]
  • v3.2.0 Changes

    August 20, 2020

    ๐Ÿš€ Release date 20th of August, 2020

    • Fix off-by-one error in pagintaion's iter_pages in the interpretation of the right_current argument, and adding an appropriate trailing None for some uses.
    • โž• Add support for setting an output_path in the project file.
    • Replaced the slugify backend to handle unicode more effectively. This may break some slugs built from unicode.
    • ๐ŸŽ Several modernization and performance improvements to the admin UI
    • ๐Ÿ‘Œ Improved speed of source info updates.
    • Set colorspace to sRGB for thumbnails.
    • Now stripping profiles and comments from thumbnails.
    • โž• Added support for deleting and excluding files for the rsync deployment publisher.
    • ๐Ÿ‘Œ Improved speed of flow rendering in the admin UI.
    • ๐Ÿ›  Bugfix to correctly calculate relative urls from slugs that contain dots.
    • ๐Ÿ›  Bugfix to allow negative integers in integer fields in the admin UI.
    • ๐Ÿ‘Œ Improved image-heavy build speeds by reducing the amount of data extracted from EXIFs.
    • โž• Added the ability to collapse flow elements in the admin UI.
    • ๐Ÿ”Œ Now extra_flags is passed to all plugin events.
    • Extra flags can now be passed to the clean and dev shell CLI commands.
    • Bugfix where lektor plugins reinstall triggered on_setup_env instead of just reinstalling plugins.
    • โž• Added the ability to generate video thumbnails with ffmpeg.
    • โž• Added mode and upscale thumbnail arguments, changing the preferred method to crop to using mode. mode can be crop, fit, or stretch. upscale=False can now prevent upscaling.
    • โž• Added a new CLI command lektor dev new-theme.
    • ๐Ÿ›  Made admin use full UTF-8 version of RobotoSlab. Fixes missing glyphs for some languages
    • โฌ†๏ธ Bumped minimum Jinja2 version to 2.11
    • โฌ†๏ธ Bumped filetype dependency to 1.0.7 because of API changes
    • Relative urls are now as short as possible.
    • ๐Ÿ”„ Changed default slug creation to use slugify. This should mean greater language support, but this may produce slightly different results than before for some users
    • ๐Ÿ”ง Automatically include setup.cfg configured for universal wheels when creating plugins
  • v3.2.dev0

    August 14, 2020
  • v3.1.3 Changes

    January 27, 2019

    ๐Ÿš€ Release date 26th of January, 2019

    • ๐Ÿš€ Release with universal build.