After 3 years on 1.3.x and over 3 months of release candidate testing, it’s finally time to release 1.4.0!

As every single release (and release candidate) of OctoPrint ever since early 2016 this was made possible only through your continued support of my work 💕

The full changelog is packed with new features, improvements and fixes of existing functionality. Some highlights:

  • 1.4.0 introduces a new granular permission system that allows you to fully customize which users (and - new! - user groups) are allowed to access which functionality. See the screenshots below for an idea of how all this looks visually. Special thanks to @Salandora for a lot of the legwork on this!
  • If you’ve followed me on OctoPrint On Air or paid some closer attention to the output of plugin manager or software updater in OctoPrint, you’ll have heard about the pending end of life of Python 2 in favor of the new version Python 3. OctoPrint so far only supported running under Python 2 - this has changed now with 1.4.0 which allows OctoPrint to run problem free under both Python 2 and 3!

    And to all the plugin authors among you, please also take note of the heads-up in the changelog and also quoted below. Huge thanks to everyone who helped in the adjustment effort needed to make this possible, especially @ByReaL, @razerraz, @smurfix & @tedder! Wouldn’t have been possible without y’all!

  • Additionally to the somewhat anachronistic MPEG2 format, OctoPrint now also supports to create timelapse recordings in H264. Special thanks to @koenkooi for this!
  • If the underlying render engine supports it there’ll be a progress bar for ongoing timelapse rendering now thanks to @ZachNo!
  • A bunch of new events and plugin hooks allow for even more possibilities in regards to customization through plugins.
  • The Software Updater can now be configured to track Github Commits for OctoPrint right from the UI. A new version check pypi_release allows checking the Python Package Index for new releases of a package, and this is also used to optionally allow to keep pip updated right from within OctoPrint itself instead of having to go through the command line for that. Note that this is disabled by default since I do not control pip updates and hence cannot guarantee trouble free updates.
  • The Plugin Manager now has a search function and some filters to make it easier to navigate through the list of installed plugins. See the screenshot below. Additionally it will now offer to delete plugin data from plugins about to be uninstalled, and also offers a general clean-up function for left-over plugin data.
  • After a lot of begging in that regard, the Software Updater and the Plugin Manager both can now be configured to ignore the throttle state of the Pi by setting ignore_throttled in config.yaml for either or both. Note that this setting is intentionally not exposed in the UI since too many people would use it to shoot themselves into the foot. Updating on a throttled system has caused corrupt installs in the past, same goes for new plugin installs, don’t say I didn’t warn you.
  • There have of course also been a bunch of fixes for bugs reported in older versions, like a fix of a potential dead lock when cancelling an SD print, overzealous filtering of history entries on the /printer/{tool|bed|chamber} API endpoints, G2 and G3 arcs being misinterpreted in the GCODE viewer and more.
  • … and more.

Due to the new Python 3 compatibility there’s a heads-up for plugin authors:

This release officially adds support to run OctoPrint under Python 3 instead of 2, which has become EOL as of January 1st 2020. However, most third party plugins probably do not yet support Python 3. In order to allow Plugin Authors to test and if necessary adjust their plugins first before OctoPrint tries to load them under Python 3, a new plugin property __plugin_pythoncompat__ has been introduced. Plugins should define the compatibly Python version via this property which OctoPrint will check on load and only proceed with loading the plugin under Python 3 if it signals compatibility.

Additionally, the Plugin Repository has been expanded to include a new field compatibility.python which signals Python compatibility on the listing as well so that OctoPrint’s Plugin Manager will only show such plugins from the repository as installable under Python 3 which are configured as such.

Please see this guide in the documentation on how to go about compatibility testing and how to modify existing plugins to work with OctoPrint when running under Python 3.

By default, OctoPrint will assume compatibility to Python 2 only.

You can find the full changelog and release notes as usual on Github.

Also see the Further Information and Links below for more information, where to find help and how to roll back.

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports and pull requests, especially balassy, ByReaL, cameroncros, CapnBry, cbxbiker61, dforsi, eyal0, FHeilmann, fieldOfView, jammi, justfalter, kantlivelong, kevans91, koenkooi, mkobler, noahsmartin, povlhp, razerraz, RyuzakiKK, Salandora, smurfix, tedder & ZachNo for their PRs!

And last but not least, another special Thank you! to everyone who reported back on the release candidates this time: @1n5aN1aC, @Andy-ABTec, @BerndJM, @bzed, @CapnBry, @ChrisHeerschap, @ciordia9, @CRCinAU, @Demigod001, @Deneteus, @devildant, @dragonflybog, @elfelton, @Farami, @fieldOfView, @FormerLurker, @gcurtis79, @gdombiak, @gege2b, @gferon, @jbjones27, @jim-thompson, @jneilliii, @JohnOFCII, @kazibole, @krpepe, @Lantoit, @loskexos, @louispires, @MatejSpindler, @mbelley, @MSeal, @NerdyProjects, @NovaViper, @OllisGit, @PlasmaSoftUK, @reloxx13, @rmoravcik, @santond, @schnello, @schumar, @sebaminguez & @willhoh.

If you are interested in some numbers, here’s some data extracted from the anonymous usage tracking for the six RCs that went before 1.4.0’s stable release:

  • 1.4.0rc1: 123 instances, 58h or 2d accumulative printing time
  • 1.4.0rc2: 152 instances, 347h or 14d accumulative printing time
  • 1.4.0rc3: 668 instances, 22200h or 2.5y accumulative printing time
  • 1.4.0rc4: 760 instances, 16000h or 1.8y accumulative printing time
  • 1.4.0rc5: 808 instances, 19400h or 2.2y accumulative printing time
  • 1.4.0rc6: 614 instances, 6570h or 0.75y accumulative printing time

Further Information

It may take up to 24h for your update notification to pop up, so don’t be alarmed if it doesn’t show up immediately after reading this. You can force the update however via Settings > Software Update > Advanced options > Force check for update.

If you get an error about “no suitable distribution” during update, please read this.

If you have any problems with your OctoPrint installation, please seek support on the community forum.

Images

User management
User editor
Group management
Group editor
Filters & search in Plugin Manager

Discuss!