Releases: OctoPrint/OctoPrint
1.10.3
✋ Heads-ups
The heads-ups from 1.10.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!
The same applies to the heads-up from 1.10.1.
⛈ 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.
♻ Changes
🔒 Security fixes
-
Severity Moderate (5.5): OctoPrint versions up until and including 1.10.2 are vulnerable to reflected XSS vulnerabilities through its Jinja2 template system, as this is not configured to enforce automatic escaping. This affects, among other places, the login dialog and the standalone application key confirmation dialog.
An attacker who successfully talked a victim into clicking on or through a malicious third party app successfully redirected a victim to a specially crafted link could use this to retrieve or modify sensitive configuration settings, interrupt prints or otherwise interact with the OctoPrint instance in a malicious way.
The above mentioned specific vulnerabilities of the login dialog and the standalone application key confirmation dialog have been fixed in 1.10.3 by individual escaping of the detected locations. A global change throughout all of OctoPrint's templating system with the upcoming 1.11.0 release will handle this further, switching to globally enforced automatic escaping and thus reducing the attack surface in general.
The latter will also improve the security of third party plugins. During a transition period, third party plugins will be able to opt into the automatic escaping. With OctoPrint 1.13.0, automatic escaping will be switched over to be enforced even for third party plugins, unless they explicitly opt-out.
See also the GitHub Security Advisory and CVE-2024-49377.
-
Severity Moderate (5.3): OctoPrint versions up until and including 1.10.2 contain a vulnerability that allows an attacker that has gained temporary control over an authenticated victim's OctoPrint browser session to retrieve/recreate/delete the user's or - if the victim has admin permissions - the global API key without having to reauthenticate by re-entering the user account's password.
An attacker could use a stolen API key to access OctoPrint through its API, or disrupt workflows depending on the API key they deleted.
See also the GitHub Security Advisory and CVE-2024-51493.
Minor Security fixes
-
Core, PR#5070: Use
secrets
lib to generate Flask secret key, API keys and user session IDs. -
Discovery Plugin: Removed version number from
discovery.xml
of SSDP discovery. Combats information leakage. -
GCODE Viewer Plugin: Limited access to
skip_until
check API to availableGCODE_VIEWER
andFILES_DOWNLOAD
permissions. Combats information leakage.
🐛 Bug fixes
Core
- #5036: Fixed a typo where the config setting
server.reverseProxy.trustedUpstream
was used instead ofserver.reverseProxy.trustedDownstream
. Also made the SockJS trusted proxy check align with that of Flask & Tornado. - #5049: Fixed file list cache being created before all extension tree providing plugins have had a chance to act.
Plugin Manager
🎉 Special thanks to all the contributors!
Special thanks to everyone who contributed to this bugfix release, especially to @jneilliii and @jacopotediosi for their PRs!
Also a big thank you to @jacopotediosi for responsibly disclosing the security vulnerabilities fixed in this release.
🔗 More information
- Commits
- Release candidates:
- As this is a bugfix release, there were no release candidates
1.10.2
✋ Heads-ups
The heads-ups from 1.10.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!
The same holds true for the heads-ups from 1.10.1 which you can find here.
⛈ 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.
♻ Changes
🐛 Bug fixes
Core
- #5002: Fix a translation string in the german translation.
- #5019: Fix/workaround for a third party dependency change, breaking the
octoprint dev plugin:new
command. - #5021: Fix behaviour of "Hide successful prints" filter in the file list. Folders will be shown as long as they have at least one file in them that has not been printed successfully yet, and they will also be shown if they contain the currently selected file, regardless of the amount of successful prints.
- Fix an import to be compatible to Jinja2>=3.1.3.
- Pin pydantic to 1.10.16 to work around an issue with Python 3.12.4.
Achievements Plugin
- #5017: Fix a string in the german translation that caused the Achievements overview to not correctly render if german language was selected.
- #5027: Fix description of the Adventurer achievement
- Fix event processing if the backup or plugin manager plugins are disabled.
🎉 Special thanks to all the contributors!
Special thanks to everyone who contributed to this bugfix release!
🔗 More information
- Commits
- Release candidates:
- As this is a bugfix release, there were no release candidates
1.10.1
✋ Heads-ups
The heads-ups from 1.10.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!
These heads-ups were added:
🔒 If you use autologin and have additional reverse proxies in front of OctoPrint, make sure they are configured correctly
If you have autologin enabled (which means OctoPrint will log you in automatically if you are accessing it from a local address), it is of utmost importance to properly configure any reverse proxies in front of OctoPrint so that the client IP can be determined correctly.
If you are accessing OctoPrint through haproxy as shipped on OctoPi, or behind a reverse proxy configured following one of the reverse proxy example configurations, there should be no issue. However, if you yourself have added any additional reverse proxies in front of OctoPrint, make sure those are configured correctly.
Please read more about this in the FAQ.
⛈ 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.
♻ Changes
🔒 Security fixes
-
Severity High (7.1): It was possible for an unauthenticated attacker to completely bypass the authentication if the
autologinLocal
option was enabled within the Access Control configuration, even if they came from networks that were not configured aslocalNetworks
, by spoofing their IP via theX-Forwarded-For
header.Please note that this does not affect you unless you've enabled the
autologinLocal
feature (it ships as disabled by default and requires adjusting theconfig.yaml
file to enable, or the installation of a third party plugin that does this for you). It likely also doesn't affect you if you have enabled said feature but have OctoPrint only accessible on a trusted network.If you have
autologinLocal
enabled and your OctoPrint instance is reachable from a hostile network like the internet, e.g. through a port forward, this does affect you and you need to update ASAP. Until you are able to update, it is strongly recommended to disable the autologin feature and/or make your instance inaccessible from potentially hostile networks.See also the GitHub Security Advisory and CVE-2024-32977.
✨ Features & improvements
Core
- #4975: Reserved temperature identifiers not confirmed as supported but still sent by the printer's firmware will now only cause a warning log entry in
octoprint.log
on their first occurrence during a connection, not every time a temperature report is received. This is to combat log spam in case of firmware bugs and misconfiguration. - #5003: Make the ticks on the temperature graph's timeline automatically scale with the cutoff to keep the graph readable even with several hours of history.
- Revert back to the
netifaces
dependency. Whilenetifaces2
as used in 1.10.0 works well, it is sadly causing some build issues in the field. In the interest of giving as many people as possible access to any bug and especially security fixes, we are thus reverting to the (unmaintained) netifaces for now and keeping an eye on the wheel availability and compatibility ofnetifaces2
for a future rollout.
Achievements Plugin
- #5007: Clarify the requirement to properly configure the timezone and allow to reset all or only the time based achievements.
- Clarify that the Achievements Plugin is a plugin that can be disabled, if one doesn't want to have achievements.
🐛 Bug fixes
Core
- #4952: Uploading multiple files through the web interface will now also work if printer side SD support has been disabled (see also PR#4953).
- #4993: Fix resource consumption and server performance issues caused by a busy loop in the GCODE analysis.
- PR#4996: Fix screenreader role on tabs to enable keyboard navigation
- #5004: Fix drag'n'drop file uploading in Safari.
- #5005: Fix netmask & external address detection.
Achievements Plugin
- Fix the quote of the "One small step for (a) man" achievement to match NASA's official transcript.
- Use configured timezone for internal stats as well.
Application Keys Plugin
- #5001: Fix regular user's (non-admins) not being able to revoke application keys.
🎉 Special thanks to all the contributors!
Special thanks to everyone who contributed to this bugfix release, especially to @cp2004 and @dawidpieper for their PRs!
Also a big thank you to @jacopotediosi for responsibly disclosing the security vulnerability fixed in this release.
🔗 More information
- Commits
- Release candidates:
- As this is a bugfix release, there were no release candidates
1.10.0
✋ Heads-ups
🔒 You will now be expected to re-enter your password on critical operations
This version of OctoPrint requires you to reauthenticate with your password every five minutes on various critical operations you might do on your installation, e.g. adding, changing and deleting users, adding, changing and deleting groups, installing plugins, revealing the deprecated global API key, generating, revoking, revealing and granting application keys, accessing the recovery page and downloading or restoring backups. This change matches best practices with regards to security of web applications and was done in order to protect you from various potential attack vectors.
If you do not want this reauthentication requirement, you can find information on how to disable it in the configuration docs. Be aware though that by doing so you'll negatively impact your installation's security!
☝️ Slow update if your Pi is still running pip <= 20.3 (e.g. as shipped on early OctoPi 0.18 preview versions)
During the release candidate phase we found that if your OctoPrint installation still is using a pip
version below 20.3, updating to this version will take slightly longer than usual due to having to compile a third party dependency that got updated (zeroconf
), as these ancient pip
versions are not fetching the precompiled version from piwheels in this scenario. If you are affected, plan ahead accordingly and allow some time for the update or alternatively update pip (you can do that via the Software Update plugin's settings). Most of you however should not be affected by this at all. If you are not running a prerelease version of OctoPi 0.18.0 (the stable release of 0.18.0 is fine!), you are likely not affected by this.
⛈ 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.
♻ Changes
🔒 Security fixes
-
Severity Moderate (4.2): It was possible for admins to perform password changes for their own account or others via the Settings dialog without having to re-enter their password. A malicious administrator or an attacker having taken over an administrator's session could have used this to effectively lock out users from their accounts.
This has now been fixed by introducing a reauthentication requirement on changing passwords in the Settings. Unless the user has authenticated with their password (and other credentials possibly in the future) in the past 5min of their login session, a reauthentication dialog to re-enter the credentials will be shown, and only after that has done properly will the request work. This reauthentication dialog has also been added to other critical operations (adding, changing and deleting users, adding, changing and deleting groups, installing plugins, revealing the deprecated global API key, generating, revoking, revealing and granting application keys, accessing the recovery page). The reauthentication timeout of 5min is configurable via
config.yaml
, see the documentation.See also the GitHub Security Advisory and CVE-2024-23637.
-
Severity Moderate (4.0): It was possible for a malicious admin to configure or to talk a victim with admin rights into configuring a webcam snapshot URL which when tested through the "Test" button included in the web interface would execute JavaScript code in the victim's browser when attempting to render the snapshot image. An attacker who successfully talked a victim with admin rights into performing a snapshot test with such a crafted URL could use this to retrieve or modify sensitive configuration settings, interrupt prints or otherwise interact with the OctoPrint instance in a malicious way.
This has now been fixed by properly sanitizing the data received from the snapshot URL.
See also the GitHub Security Advisory and CVE-2024-28237.
✨ Features & improvements
Core
- #4586: Added the capability report of the firmware as returned from
M115
tooctoprint.log
and also the systeminfo bundle in shape of a newm115.txt
file that gets generated if the bundle gets created while there's an active printer connection. - #4617: Added a manual refresh button to the webcam view that allows to reload the underlying webcam stream (if webcam plugin supports that by having implemented
onWebcamRefresh
in its viewmodel, otherwise the button will be a no-op). Only gets made visible when hovering over the webcam. - #4681: Added information on old and new file to the "file already exists dialog". See also PR#4721.
- #4685: Implemented a custom versioning tool to replace the so far used customized version of
versioneer
that has gotten quite long in the tooth. It should behave the same, but with way less code to keep maintained. - #4714: Added a new dialog that gets displayed when the printer reports an unrecoverable error, containing the error message, what happened due to that error (print cancellation, disconnect), if available a link to an FAQ entry, the last lines of communication and a big reminder that printer errors are printer errors and not OctoPrint's fault. The dialog will be automatically opened on connected clients, however it can also be accessed later by clicking on the new error icon added to the printer state panel.
- #4747: Made temperature graph time axis always show the configured cutoff interval. That should prevent any jumping of events.
- #4760: Made OctoPrint compatible to Python 3.12.
- #4764: Refactored the Tornado/WSGI interface based on the current Tornado code to make it async. That fixed the issue with connection reuse and as a very welcome side effect also very much increased the performance of the internal web server in general. Long running Flask endpoints now should no longer be able to fully block Tornado, and requests can get parallelized by the frontend, leading to a large reduction of time needed to fully load the UI.
- #4838: Improved performance of the internal settings data structure, reducing the initial settings fetch right after a server start from 2s+ to 400-700ms.
- #4843: Made the upload drop zone an optional feature that can be disabled in the settings. See also PR#4853.
- #4866: Added axis labels to model size info. See also PR#4898.
- #4880: Removed
scripts
folder from repo. - #4881: Display an error popup in case of startup issues due to inaccessible application directories.
- #4892: Keep tool change controls enabled while printing.
- #4921: Added graph markers for the
Connected
andDisconnected
events to the temperature graph. - PR#4743: Migrate from
netifaces
to the pretty much drop-in replacementnetifaces2
, since the former has been abandoned. - PR#4752: Send initial history message when the web socket subscription is changed.
- PR#4820: Added file and print head position to paused and cancel event & log entries.
- PR#4833: Improved first run wizard safety hints. They are now visually more alerting and the wizard now also requires the user to acknowledge having read and understood each warning by checking a checkbox.
- PR#4874: Added new
Thermal Malfunction
error to recognized as a kill inducing error on Marlin. - PR#4899: Removed the upper version pin for the
argon2-cffi
dependency. - PR#4918: Made target temperature lines in the temperature graph dashed. Improves accessibility for color blind users.
- PR#4928: Further improve screen reader accessibility.
- Use a file
<basefolder>/.incomplete_startup
to flag an incomplete startu...
1.10.0rc4
⚠️ Important note on release candidates
This is a Release Candidate of OctoPrint. It is not a stable release: severe bugs can occur, and they can be bad enough that they make a manual downgrade to an earlier version necessary - maybe even from the command line.
You should be comfortable with and capable of possibly having to do this before installing an RC.
🔁 Feedback on this RC
Please provide general feedback on this RC in this ticket. An "All is working fine" is valuable feedback as well because it tells me people are actually testing this RC and just not finding problems with it.
If you run into any obvious bugs, 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.
Thanks!
Things to take a closer look at
For this RC, these things should get a closer look while testing, if possible (things newly added in this follow-up RC marked with 🆕):
- Proper behaviour when using the included web interface as well as any third party clients at your disposal.
- User and group management functioning as expected.
- Plugin installation functioning as expected.
- Application key management functioning as expected. Authentication workflow with third party clients at your disposal (e.g. slicers) works as it should.
- Backup creation, download and restore functioning as expected
✨ Features & improvements
Core
- Improve JS error reporting in Firefox.
- Fix a potential race condition that might have caused some build errors recently.
Achievements Plugin
- Added unlocked achievements to the Anonymous Usage Tracking. Of course, this can be disabled, and if you have not opted into tracking in the first place, nothing will be tracked, as always. Achievement stats are available on data.octoprint.org.
🐛 Bug fixes
Core
- #4980: Fix missing temperature history for anything but the first extruder. This was actually not a regression, but the bug only could be seen now after extending the timeline of the temperature graph to the full available history.
- #4983 (regression): Fix prefix caching for custom defaults. Manifested in no longer being able to select release channels in the Software Update plugin.
- #4987 (regression): Fix creation of the static version file during installation of sdist under Windows.
Achievements Plugin
- #4984: Make the "Mass Production" achievement detect modifications of the file.
- Fix the "Heavy Chonker" achievement.
- Fix the default groups for the achievement permission.
GCODE Viewer
- #4978: Fix reloading of the same file. First thought to be a regression, turned out to not be one but was a low hanging fruit.
🎉 Special thanks to all the contributors!
Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!
🔗 More information
1.10.0rc3
⚠️ Important note on release candidates
This is a Release Candidate of OctoPrint. It is not a stable release: severe bugs can occur, and they can be bad enough that they make a manual downgrade to an earlier version necessary - maybe even from the command line.
You should be comfortable with and capable of possibly having to do this before installing an RC.
🔁 Feedback on this RC
Please provide general feedback on this RC in this ticket. An "All is working fine" is valuable feedback as well because it tells me people are actually testing this RC and just not finding problems with it.
If you run into any obvious bugs, 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.
Thanks!
Things to take a closer look at
For this RC, these things should get a closer look while testing, if possible (things newly added in this follow-up RC marked with 🆕):
- Proper behaviour when using the included web interface as well as any third party clients at your disposal.
- User and group management functioning as expected.
- Plugin installation functioning as expected.
- Application key management functioning as expected. Authentication workflow with third party clients at your disposal (e.g. slicers) works as it should.
- Backup creation, download and restore functioning as expected
🔒 Security fixes
-
Severity Moderate (4.0): It was possible for a malicious admin to configure or to talk a victim with admin rights into configuring a webcam snapshot URL which when tested through the "Test" button included in the web interface would execute JavaScript code in the victim's browser when attempting to render the snapshot image. An attacker who successfully talked a victim with admin rights into performing a snapshot test with such a crafted URL could use this to retrieve or modify sensitive configuration settings, interrupt prints or otherwise interact with the OctoPrint instance in a malicious way.
This has now been fixed by properly sanitizing the data received from the snapshot URL.
See also the GitHub Security Advisory and CVE-2024-28237.
✨ Features & improvements
Core
- #4957: Bump
websocket-client
dependency to version 1.6.1, after verifying that it should still work with Python 3.7 in this version, to enable third party plugins to use bug fixes included in that version. - PR#4964: Harden the filename sanitization in the
download_file
function against possible path traversal issue in future use cases. - Use
aria-label
androle
instead ofsr-only
headings, resolving issues with the UI Customizer Plugin or other heavy CSS manipulation. - Use a reload popup instead of a blocking overlay modal on UI plugin and/or settings change. That should reduce the annoyance of the reload overlay popping up due to settings updates in the background. It should also help with the reload prompts sometimes observed during the newly introduced reauthentication workflow.
🐛 Bug fixes
Core
- #4966 (regression): Fix handling of the reauthentication workflow for external users created & logged in from a configured header.
- #4969 (regression): Fix the final page of the firstrun wizard interfering with the completion of arbitrary wizards from plugins, when not even shown.
- Properly reflect that users logged in from a configured header can't log out through the logout button but rather must log out by closing the browser.
Action Command Notification Plugin
- #4967 (regression): Fix the filter logic so that an empty filter regex won't lead to all notifications to be filtered out.
🎉 Special thanks to all the contributors!
Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports, and especially to @jacopotediosi for their PR and the responsible disclosure of the security vulnerability fixed in this release!
🔗 More information
1.10.0rc2
⚠️ Important note on release candidates
This is a Release Candidate of OctoPrint. It is not a stable release: severe bugs can occur, and they can be bad enough that they make a manual downgrade to an earlier version necessary - maybe even from the command line.
You should be comfortable with and capable of possibly having to do this before installing an RC.
🔁 Feedback on this RC
Please provide general feedback on this RC in this ticket. An "All is working fine" is valuable feedback as well because it tells me people are actually testing this RC and just not finding problems with it.
If you run into any obvious bugs, 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.
Thanks!
Things to take a closer look at
For this RC, these things should get a closer look while testing, if possible (things newly added in this follow-up RC marked with 🆕):
- Proper behaviour when using the included web interface as well as any third party clients at your disposal.
- User and group management functioning as expected.
- Plugin installation functioning as expected.
- Application key management functioning as expected. Authentication workflow with third party clients at your disposal (e.g. slicers) works as it should.
- Backup creation, download and restore functioning as expected 🆕
✨ Features & improvements
Backup Plugin
- Require credential recheck for download & restore.
Testing & CI
- #4908: Also automatically publish source tarball on GitHub releases.
🐛 Bug fixes
Core
- #4939 (regression): Fix drag'n'drop initialization.
- #4940 (regression): Make
octoprint._version
backward compatible enough again to work around use on OctoPi images and third party plugins out there. - #4941 (regression): Fix some syntax under Python 3.7 & 3.8.
- #4942 (regression): Fix handling of setting an empty dict on the configuration. Also added a unit test for this.
- #4943 (regression): Fix fetching of file details for the existence check, preventing the "file already exists" dialog from making the correct checks.
- Removed a left-over from the Access Control settings panel.
🎉 Special thanks to all the contributors!
Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!
🔗 More information
1.10.0rc1
⚠️ Important note on release candidates
This is a Release Candidate of OctoPrint. It is not a stable release: severe bugs can occur, and they can be bad enough that they make a manual downgrade to an earlier version necessary - maybe even from the command line.
You should be comfortable with and capable of possibly having to do this before installing an RC.
🔁 Feedback on this RC
Please provide general feedback on this RC in this ticket. An "All is working fine" is valuable feedback as well because it tells me people are actually testing this RC and just not finding problems with it.
If you run into any obvious bugs, 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.
Thanks!
Things to take a closer look at
For this RC, these things should get a closer look while testing, if possible:
- Proper behaviour when using the included web interface as well as any third party clients at your disposal.
- User and group management functioning as expected.
- Plugin installation functioning as expected.
- Application key management functioning as expected. Authentication workflow with third party clients at your disposal (e.g. slicers) works as it should.
🔒 Security fixes
-
Severity Moderate (4.2): It was possible for admins to perform password changes for their own account or others via the Settings dialog without having to re-enter their password. A malicious administrator or an attacker having taken over an administrator's session could have used this to effectively lock out users from their accounts.
This has now been fixed by introducing a reauthentication requirement on changing passwords in the Settings. Unless the user has authenticated with their password (and other credentials possibly in the future) in the past 5min of their login session, a reauthentication dialog to re-enter the credentials will be shown, and only after that has done properly will the request work. This reauthentication dialog has also been added to other critical operations (adding, changing and deleting users, adding, changing and deleting groups, installing plugins, revealing the deprecated global API key, generating, revoking, revealing and granting application keys, accessing the recovery page). The reauthentication timeout of 5min is configurable via
config.yaml
, see the documentation.See also the GitHub Security Advisory and CVE-2024-23637.
✨ Features & improvements
Core
- #4586: Added the capability report of the firmware as returned from
M115
tooctoprint.log
and also the systeminfo bundle in shape of a newm115.txt
file that gets generated if the bundle gets created while there's an active printer connection. - #4617: Added a manual refresh button to the webcam view that allows to reload the underlying webcam stream (if webcam plugin supports that by having implemented
onWebcamRefresh
in its viewmodel, otherwise the button will be a no-op). Only gets made visible when hovering over the webcam. - #4681: Added information on old and new file to the "file already exists dialog". See also PR#4721.
- #4685: Implemented a custom versioning tool to replace the so far used customized version of
versioneer
that has gotten quite long in the tooth. It should behave the same, but with way less code to keep maintained. - #4714: Added a new dialog that gets displayed when the printer reports an unrecoverable error, containing the error message, what happened due to that error (print cancellation, disconnect), if available a link to an FAQ entry, the last lines of communication and a big reminder that printer errors are printer errors and not OctoPrint's fault. The dialog will be automatically opened on connected clients, however it can also be accessed later by clicking on the new error icon added to the printer state panel.
- #4747: Made temperature graph time axis always show the configured cutoff interval. That should prevent any jumping of events.
- #4760: Made OctoPrint compatible to Python 3.12.
- #4764: Refactored the Tornado/WSGI interface based on the current Tornado code to make it async. That fixed the issue with connection reuse and as a very welcome side effect also very much increased the performance of the internal web server in general. Long running Flask endpoints now should no longer be able to fully block Tornado, and requests can get parallelized by the frontend, leading to a large reduction of time needed to fully load the UI.
- #4838: Improved performance of the internal settings data structure, reducing the initial settings fetch right after a server start from 2s+ to 400-700ms.
- #4843: Made the upload drop zone an optional feature that can be disabled in the settings. See also PR#4853.
- #4866: Added axis labels to model size info. See also PR#4898.
- #4880: Removed
scripts
folder from repo. - #4881: Display an error popup in case of startup issues due to inaccessible application directories.
- #4892: Keep tool change controls enabled while printing.
- #4921: Added graph markers for the
Connected
andDisconnected
events to the temperature graph. - PR#4743: Migrate from
netifaces
to the pretty much drop-in replacementnetifaces2
, since the former has been abandoned. - PR#4752: Send initial history message when the web socket subscription is changed.
- PR#4820: Added file and print head position to paused and cancel event & log entries.
- PR#4833: Improved first run wizard safety hints. They are now visually more alerting and the wizard now also requires the user to acknowledge having read and understood each warning by checking a checkbox.
- PR#4874: Added new
Thermal Malfunction
error to recognized as a kill inducing error on Marlin. - PR#4899: Removed the upper version pin for the
argon2-cffi
dependency. - PR#4918: Made target temperature lines in the temperature graph dashed. Improves accessibility for color blind users.
- PR#4928: Further improve screen reader accessibility.
- Use a file
<basefolder>/.incomplete_startup
to flag an incomplete startup instead of aconfig.yaml
entry. Makes it easier to reconfigure the server in CI situations. - Improved the UX of the systeminfo CLI.
octoprint systeminfo
will now generate a bundle in the current directory even without an explicitly added.
parameter.octoprint systeminfo --short
has been added to generated an abridged version directly on the command line. This should clear up issues we saw in the past where people forgot the.
and then just pasted the abridged text only version when in fact a bundle was needed and requested. - Added
progress
toPrintFailed
,PrintCancelled
andPrintPaused
events. - Added
operation
toFileRemoved
event. Allows distinguishing between a removal due to an actualremove
or amove
. - Added a funding banner to the About dialog and a funding link to the footer.
Achievement Plugin (✨ New!)
Added a new bundled Achievements plugin! OctoPrint will now internally record some instance stats and monitor some events and based on that give out various achievements. This version contains 36 achievements, 22 of which are hidden and for you to be discovered. Additionally, the instance stats are also being recorded per year to make it possible in the future to give you some yearly stats overview of your OctoPrint and printing use.
Action Command Notification Plugin
- #4326: Added ability to ignore incoming printer notifications based on a filter regex. This is to combat notification spam by firmwares which abuse the feature. Please talk to your firmware provider about not abusing the notification action command for things triggered by the user, e.g. mirroring
M117
commands! See also PR#4886.
Application Keys Plugin
Classic Webcam Plugin
...
1.9.3
✋ Heads-ups
The heads-ups from 1.9.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!
⛈ 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.
♻ Changes
🔒 Security fixes
-
Severity Medium (6.4): It was possible for a malicious admin to configure a specially crafted GCODE script through the Settings that would allow code execution during rendering of that script. An attacker could have used this to extract data managed by OctoPrint, or manipulate data managed by OctoPrint, as well as execute arbitrary commands with the rights of the OctoPrint process on the server system.
Please note that GCODE files uploaded to be printed were not affected! This vulnerability exclusively affected GCODE Scripts to be executed on connection to the printer, print pause, resume etc, as described in the documentation, to be found under Settings > GCODE Scripts and configurable only by users with the
ADMIN
permission.See also the GitHub Security Advisory and CVE-2023-41047.
🐛 Bug fixes
- #4849 & PR#4860: Fix for not being able to extrude/retract from the control panel in the UI after editing the extrusion speed in the printer profile.
- #4893: Pin pydantic dependency to 1.10.12. This works around an issue existing in some environments with pydantic version 1.10.13, which was released on September 26 2023. Said issue causes OctoPrint to no longer be able to start. See also pydantic/pydantic#7689.
🎉 Special thanks to all the contributors!
Special thanks to everyone who contributed to this bugfix release, especially to @srLinux for their PR!
Also a big thank you to tianxin Wu (Bearcat), Vulnerability Researcher at Numen Cyber Labs, Singapore, for responsibly disclosing the security vulnerability that was fixed in this release.
🔗 More information
- Commits
- As this is a bugfix release, there were no release candidates
1.9.2
✋ Heads-ups
The heads-ups from 1.9.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!
⛈ 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.
♻ Changes
🐛 Bug fixes
- #4779 & PR#4780: Work around
argon2
password hashing algorithm not working reliably on Rock64/aarch64 - no error is produced, but the hash verification just fails. Fall back topbkdf2_sha256
if this happens. Backported from 1.10.0.dev. - #4806: Fix the
httpheader
software update check type. Backported from 1.10.0.dev. - #4854: Upgrade PyYaml dependency to 6.0.1+. This works around an issue existing in PyYaml versions 5.4.0 to 6.0.0 with its dependency Cython in version 3.0, which was released on July 17th 2023. Said issue renders OctoPrint uninstallable due to PyYaml's install failing.
🎉 Special thanks to all the contributors!
Special thanks to everyone who contributed to this bugfix release, especially to @cperrin88 for their PR!
🔗 More information
- Commits
- As this is a bugfix release, there were no release candidates