Work on OctoPrint continues on even though the world out there is crazier and scarier than the normal, and I’m happy to hereby present you the first release candidate of the upcoming 1.5.0 release.

“Wait, 1.5.0 already?” you might say, “You just released 1.4.0 earlier this year!” That’s correct - OctoPrint’s versioning has slightly changed and now fully adheres to the ideas behind semantic versioning, as-in, the so called PATCH number (the 0 in 1.5.0) will now only increase for releases containing bugfixes only. Instead, for the usual maintenance releases that contain improvements, fixes and the one or other new feature, the MINOR number (the 5 in 1.5.0) will increase from now on. Finally, backwards incompatible changes will increase the MAJOR number (the 1 in 1.5.0) - in OctoPrint’s specific case that will mean dropping Python 2 support in the not so distant future.

So, from 1.4.2 to 1.5.0 this makes a MINOR number increase and thus you can expect more than just bug fixes in this one :) Let’s have a look at some of the highlights from the changelog, shall we?

  • Access Control is now mandatory and no longer can be disabled. If you so far had it disabled, upon upgrading to 1.5.0, OctoPrint will prompt you to create a username and password for the (first) admin user. This step was sadly necessary as too many people still will happily expose their completely unsecured OctoPrint instance on the public internet, causing additional support overhead from both attacked users and security researchers.
  • A new recovery page is available under /recovery/ that gives access to configured system commands, backups, basic printer controls and the new system information (see below), even if the main UI is no longer functional. This will hopefully help in case of a third party plugin or a misconfiguration messing with the core UI so much it is no longer usable.
  • A new system information screen is available from footer, settings dialog and recovery page. It provides information on the system OctoPrint is running on that’s invalubale for support and issue analysis and will soon be asked for in support requests and bug reports. A one-click copy-paste link is provided.
  • OctoPrint will now detect when there are too many resend requests being generated by the printer (default: more than 10% of transmitted lines getting a resend request as response) and display a prominent warning to help identify communication issues causing print failures.
  • The bundled Software Update plugin now supports release channels for third party plugins, individually disabling notifications per update check and also update information overlays served from plugins.octoprint.org that will make future maintainer changes of plugins less cumbersome for all involved. Plugin developers probably want to take a look at the docs to learn how to make use of release channels.
  • A new event plugin_backup_backup_created will be triggered on backup creation. Allows third party plugins to perform certain actions on backup creation, e.g. saving them to a cloud provider like GDrive as displayed by the Google Drive Backup plugin.
  • A terminal filter configuration for the busy protocol now comes preconfigured. If you have modified your stock terminal filters, you’ll have to add this manually, using name “Suppress processing responses” and regex Recv: (echo:\s*)?busy:\s*processing.
  • Support has been added for reading the long filename from M20 if included or adding it from a plugin (e.g. one that utilizes a storm of M33 to fetch all long names, proof of concept here). Please note: That’s the only way M33 will ever be supported in OctoPrint, as it is utterly the wrong way to go about fetching long names for a list of files of unknown size, so stop asking about it now please ;)
  • The whole code base now uses black, prettier, isort, pre-commit and a bunch of custom pre-commit hooks to ensure consistent formatting and enforcement thereof. For anyone doing development, a file containing revs to ignore by git blame is included so this should hopefully not nuke the usefulness of that as long as a current git version is used, set it up via git config blame.ignoreRevsFile .git-blame-ignore-revs.
  • New plugin timings logging feature. If enabled (via Settings > Server > Debug options) this will write two new files to the logging dir, plugintimings.log and plugintimings.csv, which contain timing information for each and every hook or implementation call on plugins registered with OctoPrint. This should be helpful to debug any kind of performance issues caused by third party plugins. It should also be a valuable tool to debug performance issues with bundled plugins.
  • Several dependencies have been upgraded, most prominently Font Awesome, which is now bundled in version 5. A compatibility layer should ensure that plugins still relying on 4.x icon and class names will continue to work as expected.
  • A big number of bug fixes, among which is a fix for cancelling/pausing taking too long, a fix in the plugin manager to remove timeout issues when installing huge plugins, a fix for M876 not force sending while printing, a fix for installation of tar.gz plugins and plugin installation under Windows, several performance improvements and much much more.

Please also take a look at the following heads-ups:

Heads-up: Access Control is now mandatory and no longer can be disabled

If you so far had Access Control disabled, upon upgrading to 1.5.0, OctoPrint will prompt you to create a user name and password for the (first) admin user. This step was sadly necessary as too many people still will happily expose their completely unsecured OctoPrint instance on the public internet, causing additional support overhead from both attacked users and security researchers. See this guide for a way to have OctoPrint log you in automatically when connecting from an internal IP.

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

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports, you help making the next release as stable as possible! And a big Thank You to @chudsaviet, @coldtobi, @cp2004, @frenck, @j7126, @jneilliii, @ManuelMcLure, @mjrider, @OllisGit, @shaver, @Sophist-UK and @urish for their PRs!

As the past RCs have shown me that a lot of people appear to be unaware of this: Please do not install this RC if you expect a fully stable version. It is not a stable release, it is a release candidate: severe bugs may occur, and they might be bad enough that they make a manual downgrade to an earlier version necessary - maybe even from the command line.

You should feel comfortable with and capable of possibly having to do this before installing an RC.

If you want to and can help test this release candidate, you can find information on how to switch to the "Maintenance RCs" release channel in this guide if not already done (also linked below).

Please provide feedback on this RC. For general feedback you can use this ticket on the tracker. The information that everything works fine for you is also valuable feedback 😄. For bug reports please follow How to file a bug report - I need logs and reproduction steps to fix issues, not just the information that something doesn't work so make sure to fill out all fields of the issue template.

Thanks!

Depending on the feedback regarding this version I'll look into fixing any observed regressions and bugs and pushing out a follow-up version as soon as possible and necessary.

Images

Release channels for third party plugins and individual notice configuration.
New system information screen gives access to help in support and bug reports.
Recovery dialog gives access to system commands, backups and system info, as well as basic printer control (if connected).
Timelapse player for mp4 timelapses, thanks to @jneilliii.

Discuss!