New release: 1.9.0
Everyone, it makes me happy to finally introduce you to 1.9.0! This release was originally planned for late 2022 or early 2023, but a sudden rush of security reports and consequently fixes in late summer of 2022 meant focusing on 1.8.x for a while and thus pushing this back. The good thing about this is that a number of new features now made it into 1.9.0 after all which otherwise wouldn’t have been ready to be merged yet!
Like every single release (and release candidate) of OctoPrint ever since 2016, this release was made possible only through your continued support of my work 💕
The full changelog contains a long list of new features, improvements and bug fixes. But before we come to the highlights, let me first get one big announcement out of the way (that is also included in the heads-ups below!):
- OctoPrint’s web interface now requires ES9 (EcmaScript 2018) support in your browser. As further detailed in the heads-up post below, 98.96% of all instances sending in data via the Anonymous Tracking Plugin support ES9. Being able to use modern language features allows things like the big performance improvements included in the GCODE Viewer in this release, and also makes development and maintenance easier overall. Given that, the decision was made to allow ES9 features in OctoPrint’s core UI and bundled plugins. All but the most ancient browsers found on really old devices should already be supporting everything needed, but just in case you can check whether your chosen browser supports all the features that OctoPrint uses in core & bundled plugins by going to the new check page at octoprint.org/browser-check/.
With that out of the way, on to the highlights!
- The Webcam integration now offers a plugin interface and the existing webcam support has been extracted into its own (bundled) “Classic Webcam” plugin. Third party plugins will now be able to offer new webcam providers for snapshots, and also webcam templates for embedding streams. This also includes native multi cam support in the core UI - if there’s more than one plugin providing webcam templates, they will be offered to switch to, see this GIF. You have to thank @crysxd for this, who did the bulk of the work on this feature.
- With 1.9.0 plugins can now customize the temperature chart markers introduced in 1.8.0, thanks to the work by @rfinnie, who also promptly utilized it in recent versions of his BedCooldown plugin as can be seen in the below screenshot.
- Thanks to a ton of work by @JoveToo, the memory footprint of the GCODE viewer has been greatly reduced, thanks to utilizing (optional) compression and asynchronous loading of the data. This should make the GCODE viewer much more usable on lower end devices, and also make it possible to load larger files without running into memory issues.
- While no printer connection is yet established, OctoPrint will now automatically poll for serial ports and if new ones are found refresh the UI accordingly. This should improve user experience, as you will no longer have to manually refresh the UI to see new ports (and potentially get rid of the “no ports detected” warning added in 1.8.0). Contrary to the PortLister plugin, this will also work on Windows servers and for any kind of virtual ports. You can see this in action below.
- You can now enqueue plugin installs from the plugin manager thanks to work by @jneilliii.
- The plugin manager now also supports installing multiple plugins from an export or simple json list either uploaded or passed in as an URL. This should make it easier to install a bunch of plugins at once.
- In a similar vain, you can also now upload multiple files at once, thanks to work by @cp2004.
- Announcements will now no longer trigger a popup (unless from a priority 1 channel like Important) but instead cause an unread counter to be rendered on the notification icon (1-9 and infinity symbol for more). The announcement reader has been extended by a default “Unread” tab that shows all unread news items, and a Mark All Read button has been added to quickly get rid of the unread counter altogether.
- As always, there have also been a ton of bug fixes. Examples include fixing the permissions of anonymous API access (they were too strict), including line endings when copy-pasting from the plugin manager or software update log output, and more.
Issues while updating?
On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.
Heads-up: OctoPrint's web interface now requires ES9 (EcmaScript 2018) support in your browser
Up until now OctoPrint still supported running its UI on browsers that only supported EcmaScript 5 as released in 2009. However, given that based on data about used browsers from the Anonymous Usage Tracking 98.96% of all browsers used to access OctoPrint support ES9 and being able to use these features allows things like asynchronous GCODE loading in the viewer (see #4559) and in general very much improves development experience and speed, the decision has been made to greenlight the use of these features in OctoPrint’s JS code base.
Given that pretty much all common browsers have had the required support for several years now, this change should not affect ~99% of all of you. For those 0.15% of you accessing the OctoPrint web interface with ancient browsers that don’t yet have support this means it is time to upgrade. For those 0.89% of you accessing the OctoPrint web interface with browsers for which we do not know about support, it might also be time to upgrade.
In any case, you can check whether your chosen browser supports all the features that OctoPrint uses in core & bundled plugins by going to the new check page at octoprint.org/browser-check/.
Heads-up for plugin and third party application developers: Webcam integration has moved to a plugin interface
OctoPrint 1.9.0 has been refactored to extract the webcam integration into a new plugin type
WebcamProvider as well as a
_webcam template type. You may find the documentation of these here:
A new bundled plugin
Classic Webcam has been created that implements the existing webcam integration (mjpg/hls/beta webrtc support as well as snapshotting).
A consequence of this refactoring is that there’s no longer a general webcam configuration in the settings but rather now there are
WebcamProviderPlugin specific settings per plugin. A backwards compatible compatibility layer has been added so that plugin’s accessing any of the formerly available global webcam settings should still be able to access and change the data, however it should be considered deprecated and warnings will be logged. Please check your plugins and adjust as necessary when running on OctoPrint 1.9.0.
Heads-up for plugin developers: `octoprint_setuptools` has been extracted
In order to support plugin’s that want to use
pyproject.toml, in which case current
pip versions will build their package in isolated mode, leading to the required
octoprint_setuptools dependency not being available and thus the install failing,
octoprint_setuptools was extracted into its own pypi package to allow
pyproject.toml based plugins to depend on it by adding this to
[build-system] requires = ["setuptools>=40.8.0", "wheel", "octoprint-setuptools"] build-backend = "setuptools.build_meta"
This should not affect plugins that don’t use
pyproject.toml, however like with every OctoPrint release candidate plugin developers are strongly advised to test installing their plugin under 1.9.0.
Thanks to everyone who contributed to this release and provided full, analyzable bug reports, suggestions and feedback!
A special Thank You! to these 25 fine people for their PRs, and an extra warm welcome to our 16 first-time contributors! 🎉
And last but not least, a big shoutout to everyone who reported back on the release candidates this time: @b-morgan, @benlye, @Bradford1040, @ChrisHeerschap, @crysxd, @dan-and, @jneilliii, @JohnOCFII, @kj5wi, @LazeMSS, @LightningShark25, @N0YHR, @NewsGuyTor, @pwhelan, @r3Fuze, @Ruhel786, @Silverstar, @The-EG, @TheMedGeek and @Thisismydigitalself.
If you are interested in some numbers, here's some data extracted from the anonymous usage tracking for the RCs that went before 1.9.0's stable release:
- 1.9.0rc3 (2023-03-22): 893 instances, 27635h or 3.2 years of accumulative printing time
- 1.9.0rc4 (2023-04-12): 195 instances, 1351h or 1.9 months of accumulative printing time
- 1.9.0rc5 (2023-04-13): 1035 instances, 42893h or 4.9 years of accumulative printing time
- 1.9.0rc6 (2022-05-08): 780 instances, 14869h or 1.7 years of accumulative printing time
- 1.9.0rc1 (2023-03-07)
- 1.9.0rc2 (2023-03-07)
Overall there were 1683 instances that participated in the RC testing phase and which collectively completed 103811h or 11.9 years of print jobs.
If connected to the internet, OctoPrint will allow you to apply this update automatically via an update notification. It may take up to 24h for this 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 have any problems with your OctoPrint installation, please seek support on the community forum.
- Changelog and Release Notes
- FAQ entry "My OctoPrint update fails" (Read in case of any update problems!)
- Community forum
- Discord Server
- Contribution Guidelines (also relevant for creating bug reports!)
- How to file a bug report
- How to roll back to an earlier release (OctoPi)
- How to roll back to an earlier release (manual install)
- 23 May 2023