OctoPrint is the snappy web interface for your 3D printer!
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 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.
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.
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 as localNetworks
, by spoofing their IP via the X-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 the config.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.
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.netifaces
dependency. While netifaces2
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 of netifaces2
for a future rollout.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.
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!
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.
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.
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.
M115
to octoprint.log
and also the systeminfo bundle in shape of a new m115.txt
file that gets generated if the bundle gets created while there's an active printer connection.onWebcamRefresh
in its viewmodel, otherwise the button will be a no-op). Only gets made visible when hovering over the webcam.versioneer
that has gotten quite long in the tooth. It should behave the same, but with way less code to keep maintained.scripts
folder from repo.Connected
and Disconnected
events to the temperature graph.netifaces
to the pretty much drop-in replacement netifaces2
, since the former has been abandoned.Thermal Malfunction
error to recognized as a kill inducing error on Marlin.argon2-cffi
dependency.<basefolder>/.incomplete_startup
to flag an incomplete startup instead of a config.yaml
entry. Makes it easier to reconfigure the server in CI situations.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.progress
to PrintFailed
, PrintCancelled
and PrintPaused
events.operation
to FileRemoved
event. Allows distinguishing between a removal due to an actual remove
or a move
.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.
Unlocked achievements are also tracked via 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.
The goal of these achievements is not to gamify OctoPrint, but rather to give you something fun while also making it more visible how this project is funded and how you can help. If you are not interested in achievements, just disable the bundled Achievements plugin via the plugin manager.
M117
commands! See also PR#4886.video
tag.zeroconf
dependency.M115
.SettingsPlugin
mixin that updating settings will trigger a reload screen.node-qunit-puppeteer
version to combat some JS unit test flakyness.playwright
used for the E2E tests.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.download_file
function against possible path traversal issue in future use cases.aria-label
and role
instead of sr-only
headings, resolving issues with the UI Customizer Plugin or other heavy CSS manipulation.printTimeOrigin
instead of the correct printTimeLeftOrigin
).octoprint systeminfo .
octoprint get
not properly returning sub trees for plugin settings hierarchies, due to a missing initialization.awesome-slugify
dependency.httpheader
check type. It was not storing its current value properly.G4
and wait
.logsViewModel
dependency.PrinterInterface.set_temperature
to reflect the current implementation.simple
or colored
formatters for the console log output, this still needed to get properly documented.octoprint._version
backward compatible enough again to work around use on OctoPi images and third party plugins out there.Special thanks to everyone who contributed to this RC, especially to @0r31, @bigfoxtail, @CMR-DEV, @cociweb, @cperrin88, @credomane, @crysxd, @danielkucera, @dawidpieper, @eumiro, @evanwurden, @hynek, @jatin-47, @jneilliii , @kaenguruhs, @mad73923, @max246, @MichaIng, @mintsoft, @neod123 and @thinkyhead for their PRs!
And an extra shoutout to our 13 first time contributors: @bigfoxtail, @CMD-DEV, @cociweb, @cperrin88, @credomane, @danielkucera, @evanwurden, @hynek, @jatin-47, @kaenguruhs, @mad73923, @mintsoft and @neod123! 🎉
Also a big thank you to @tkruppert and @jacopotediosi for responsibly disclosing the security vulnerabilities fixed in this release.
The following issues were discovered in earlier versions, but too late to still be fixed in this version, and are going to get a fix in an upcoming bugfix release.
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.
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!
For this RC, these things should get a closer look while testing, if possible (things newly added in this follow-up RC marked with :new:):
Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!
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.
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!
For this RC, these things should get a closer look while testing, if possible (things newly added in this follow-up RC marked with :new:):
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.
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.download_file
function against possible path traversal issue in future use cases.aria-label
and role
instead of sr-only
headings, resolving issues with the UI Customizer Plugin or other heavy CSS manipulation.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!
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.
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!
For this RC, these things should get a closer look while testing, if possible (things newly added in this follow-up RC marked with :new:):
octoprint._version
backward compatible enough again to work around use on OctoPi images and third party plugins out there.Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!
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.
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!
For this RC, these things should get a closer look while testing, if possible:
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.
M115
to octoprint.log
and also the systeminfo bundle in shape of a new m115.txt
file that gets generated if the bundle gets created while there's an active printer connection.onWebcamRefresh
in its viewmodel, otherwise the button will be a no-op). Only gets made visible when hovering over the webcam.versioneer
that has gotten quite long in the tooth. It should behave the same, but with way less code to keep maintained.scripts
folder from repo.Connected
and Disconnected
events to the temperature graph.netifaces
to the pretty much drop-in replacement netifaces2
, since the former has been abandoned.Thermal Malfunction
error to recognized as a kill inducing error on Marlin.argon2-cffi
dependency.<basefolder>/.incomplete_startup
to flag an incomplete startup instead of a config.yaml
entry. Makes it easier to reconfigure the server in CI situations.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.progress
to PrintFailed
, PrintCancelled
and PrintPaused
events.operation
to FileRemoved
event. Allows distinguishing between a removal due to an actual remove
or a move
.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.
M117
commands! See also PR#4886.video
tag.zeroconf
dependency.M115
.SettingsPlugin
mixin that updating settings will trigger a reload screen.node-qunit-puppeteer
version to combat some JS unit test flakyness.playwright
used for the E2E tests.printTimeOrigin
instead of the correct printTimeLeftOrigin
).octoprint systeminfo .
octoprint get
not properly returning sub trees for plugin settings hierarchies, due to a missing initialization.awesome-slugify
dependency.httpheader
check type. It was not storing its current value properly.G4
and wait
.logsViewModel
dependency.PrinterInterface.set_temperature
to reflect the current implementation.simple
or colored
formatters for the console log output, this still needed to get properly documented.Special thanks to everyone who contributed to this RC, especially to @0r31, @bigfoxtail, @CMR-DEV, @cociweb, @cperrin88, @credomane, @crysxd, @danielkucera, @dawidpieper, @eumiro, @evanwurden, @hynek, @jatin-47, @jneilliii , @kaenguruhs, @mad73923, @max246, @MichaIng, @mintsoft, @neod123 and @thinkyhead for their PRs!
And an extra shoutout to our 13 first time contributors: @bigfoxtail, @CMD-DEV, @cociweb, @cperrin88, @credomane, @danielkucera, @evanwurden, @hynek, @jatin-47, @kaenguruhs, @mad73923, @mintsoft and @neod123! 🎉
Also a big thank you to Timothy "TK" Ruppert for responsibly disclosing the security vulnerability that was fixed in this release.
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!
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.
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.
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.
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!
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.
argon2
password hashing algorithm not working reliably on Rock64/aarch64 - no error is produced, but the hash verification just fails. Fall back to pbkdf2_sha256
if this happens. Backported from 1.10.0.dev.httpheader
software update check type. Backported from 1.10.0.dev.Special thanks to everyone who contributed to this bugfix release, especially to @cperrin88 for their PR!
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!
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.
M20
until after the capability report has been received by default, instead of defaulting to sending it right away. Most firmwares out there now should be sending capability reports, and for those that don't, the setting can still be manually set to false
.SortablePlugin
s and non sortable plugins gets processed in the same sorting context.http://example.com/octoprint
), now it does.Special thanks to everyone who contributed to this bugfix release, especially to @cp2004 and @JoveToo for their PRs!
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/.
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.
octoprint_setuptools
has been extractedIn 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 pyproject.toml
:
[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 plugin developers are strongly advised to test installing their plugin under 1.9.0 if not already done during the release candidate phase.
secure
flag.M118
on virtual printer.last_fan_speed
for use in GCODE scripts, just like last_position
and last_temperature
.octoprint.plugin.backup.before_backup
, octoprint.plugin.backup.after_backup
, octoprint.plugin.backup.before_restore
, octoprint.plugin.backup.after_restore
. Those will allow plugins to perform additional tasks right before/after backup and right before/after restore, e.g. copying additional files from the file system into the plugin's data folder, and moving it around after.LFN_WRITE
capability is set.black
.black
config to pyproject.toml
.octoprint.
module.devmode
query parameter in the URL. It sadly happened too often that people only shared the abridged overview instead of a full bundle. This should hopefully help.helpers.js
.octoprint dev css:build
.G90
/G91
or M82
/M83
) can break the visualization.M20 L T
if EXTENDED_M20
support is reported by the firmware. Also extend file list parser to be able to parse timestamps.octoprint dev css:build
to the docs.StorageError
s by providing __str__
method. Get rid of left-over StorageError.message
references.WebcamProviderPlugin
mixins provide information about and configuration of available cameras, as well as access to snapshots. A new template type webcam
allows plugins to embed webcam streams into OctoPrint's control view through custom HTML. This should allow to quickly add support for new types of webcam servers and streaming protocols. See also #4717.No media
SD card initialization failure message from Marlin 2.1.x.TIMELAPSE_{LIST|DOWNLOAD|DELETE}
will now only apply to finished timelapses, TIMELAPSE_ADMIN
will be only related to configuration access, and a new TIMELAPSE_MANAGE_UNRENDERED
permission allows listing, deleting and rendering of unrendered timelapses.ChartMarked
that allows to inject custom chart markers into the temperature graph. For an example of how this can be used, the BedCooldown plugin utilizes this starting with version 0.6.0 and uses it to inject an additional "Cooldown" marker into the graph. See also #4738.operation
to the FILE_ADDED
event to allow event hooks to distinguish whether the event was caused by adding (add
), copying (copy
) or moving (move
) a file.wheel
to ensure it is installed, since a lack of it might cause issues with certain plugin setups and new pip
versions.R
parameter in temperature commands when applying temperature offsets.removeMessage
to the socket client to allow to unsubscribe a handler for messages again.pydantic
.X-Forwarded-Prefix
header.codespell
to pre-commit to add automatic spell checking.octoprint.util.files.search_in_file
that will search whether a regular expression match is contained in a file, using grep
if available and falling back to a pure python implementation if not.__plugin_privacypolicy__
and modified the Plugin Manager to add a link to that on plugins making use of it. Repository plugins can also report this via a new privacypolicy
property which will show the link even in the repository browser without having to install the plugin first.LFN_WRITE
.CommandlineCaller
to not have it log its output.tornado.log
is an access log for the embedded tornado web server and logs all requests (as logged on the tornado.access
target). auth.log
logs successful and failed logins via credentials, remember me cookie, headers or autologin, as well as logouts. This should allow auditing OctoPrint access, and also make it possible to use something like fail2ban if so desired.ERROR
lines are logged in octoprint.log
while running the E2E tests, this will now cause a test failure.Settings.checkBaseFolder(self, type)
to check whether a base folder already exists, without creating it.unittest
to pytest
in the hopes that this fixes some flakiness issues observed in CI.mm/s
in documentation.G2
/G3
moves in the GCODE viewer.M20
until first capability report has been received and thus it can be determined whether the printer supports the L
parameter or not.%
.Settings
object thread safe.octoprint_setuptools
into its own pypi package to allow pyproject.toml
based plugins to depend on it by adding this to pyproject.toml
:
[build-system]
requires = ["setuptools>=40.8.0", "wheel", "octoprint-setuptools"]
build-backend = "setuptools.build_meta"
ZeroDivisionError
due to firmware retraction in GCODE analyser.sys.version
to check for Python 3+.G2
/G3
arc length for estimating print time.G02
/G03
(leading 0
) in the GCODE viewer.onEventFileDeselected
not firing on printer disconnect.gettext
to assist in dynamic translation based on observable values.SLICING_STARTED
event in the UI.CONFIG_ACCESS_CONTROL_ACTIVE
.setup.cfg
for flake8 configuration, to avoid issues if the user has a local config in ~/.config/flake8
already.POST
requests with chunked transfer encoding.ok
for non-GCODE commands" not saving from the UI.data
was not set.octoprint_setuptools
package, since installing the one provided by OctoPrint-Setuptools apparently won't work on updates from OctoPrint versions where OctoPrint provides that package, breaking plugin installs in the process.python setup.py scan_deps
dev tool breaking when encountering a non PEP440-compliant version number (regression)Special thanks to everyone who contributed to this RC, especially to @040medien, @arekm, @arrdem, @cclauss, @CoReYeDe, @cp2004, @crysxd, @dawidpieper, @FedericoNembrini, @frenck, @j7126, @jneilliii, @Josef-MrBeam, @JoveToo, @kForth, @luzpaz, @max246, @msrasheed, @rfinnie, @richardsondev, @sgsunder, @smartin015, @the-ress, @tommywienert and @vector76 for their PRs!
And an extra shoutout to our 16 first time contributors: @040medien, @arekm, @arrdem, @CoReYeDe, @dawidpieper, @Josef-MrBeam, @kForth, @luzpaz, @max246, @msrasheed, @nmattis, @Patrick-Ames, @sgsunder, @smartin015, @the-ress and @tommywienert! 🎉