⚠️ 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.
Heads-up Plugin Authors: Python 2's EOL and Python 3
This release candidate officially adds support to run OctoPrint under Python 3 instead of 2. 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 post on the OctoPrint Community Forums 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.
- #485 - Add a progress bar for timelapse rendering. Special thanks to @ZachNo! See also #2586.
- #1110 - Switch to a new granular permission system which allows fine control over permissions per user and newly introduced groups. That way you should be able to fully adjust OctoPrint to your permission needs. Special thanks to @Salandora! See also #2198.
- #2373 - Support to create timelapse recordings in H264 as as well as the legacy MPEG2. Special thanks to @koenkooi! See also #2410.
- #2722 - Make OctoPrint Python 3 compatible and thus future proof now that Python 2 is EOL and about to die for good. Special thanks to @ByReaL, @razerraz, @smurfix & @tedder! See also #1416, #2731, #2733, #2807, #2828, #2840, #2851, #2924, #2926, #2928, #2929, #2930, #2931, #2932, #2933, #2934, #2936, #2937, #2938, #3032
- #783 - New events
UserLoggedOut, on the push socket only available to admin users.
- #935 - Support alternative source file types in
- #1665 - Include
/dev/ttyS*in serial port pattern.
- #1703 - Clarify some source code comments.
- #1748 - Add
sameDevicefield to slicing API.
- #1854 - New plugin hooks
octoprint.timelapse.capture.[pre/post]to allow plugins to react to capturing happening.
- #2328 - Grammar fix.
- #3006 - Add options to allow gcode analysis, only when idle (default, former behaviour) or disable altogether. See also #3337.
- #3210 - Clarify documentation on when the
Errorevent will fire.
- #3212 - Mark serial port file handle as not inheritable in order to avoid issues with spawned sub processes keeping a lock on the port vs "exclusive" open mode.
- #3287 - Action Command Prompt: More flexibility for command definition for better compatibility with Klipper.
- #3288 - Plugin Manager: Make plugin list filterable by bundled/third party and enabled/disabled and add a search box..
- #3292 - Action Command Prompt: Support multi line option buttons.
- #3295 - SWU: Added support for
github_committracking configuration the the UI.
- #3299 - Plugin Manager: Option to remove the settings and data of a plugin during plugin uninstall, on click and also to clean up any left overs from by now uninstalled plugins in the settings and data folders.
- #3318 - Improve performance of the server side gcode interpreter.
- #3326 - Adjust the toolbar color on Android based on the selected navbar background color.
- #3342 - Prerender included markdown (AUTHORS.md, SUPPORTERS.md, THIRDPARTYLICENSES.md) and remove changelog (CHANGELOG.md) from About dialog, instead redirect to Github release page which has the full changelog.
- Strip the
ClientOpenedevents pushed via the websocket to guests.
- Loading animation to better communicate when the interface has actually successfully loaded and can be used. Can also be disabled via the settings.
- Improved logging in case of plugin syntax errors.
- Sanitized & reconfigured some HTTP headers:
X-Content-Type-Optionsis now set to
X-Frame-Optionsis not set to
sameoriginunless configured otherwise
JSESSIONIDcookie removed from SockJS
- Clarify use of printer profile fields.
- PMGR/SWU: Added flag to ignore the throttle state. Will allow people to circumvent the shoot-yourself-into-the-foot-countermeasures that prevent software updates & plugin installs while in a throttled state by editing
- SWU: Do not persist check providers across reboots.
- SWU: Add
pypi_releaseversion check type
- SWU: Option to
pipauto update right from within OctoPrint. Opt-in since
pipupdates can and have broken backwards compatibility in the past.
- Do not refresh site source on hard refresh if we are currently printing but print warning to log to use
_refreshif it's actually required. See also #3344 for further discussion.
- Various dependency updates. See also #1536.
- Various documentation fixes and improvements. See also #2804, #3305, #3233, #3325, #3328.
- Various typo fixes. See also #3297, #3330
- #3125 - Fix potential dead lock when cancelling an SD print.
- #3202 - Fix a "dictionary changed size during iteration" error.
- #3267 - Fix OctoPrint not attempting to autoconnect to printer if port is set to
- #3278 - Plugin Manager: Disable plugin management while printer is busy (e.g. paused), not just when actively printing.
- #3295 - SWU: Fix a link to the documentation.
- #3301 - Fix a race condition in SD print detection that could cause a just cancelled print to "start again".
- #3302 - Timelapse: "Save as default" checkbox should always be enabled, regardless of printer state.
- #3309 - Fix overzealous filtering of history entries on the
- #3311 - Fix a wording issue.
- #3319 - Virtual printer: Do not assume that an
Sparameter must be present on
M220(and then crash when it's not).
- #3327 - Fix a wrong used HTTP status code on the
- #3334 - GCODE Viewer: Fix G2 and G3 arcs being misinterpreted.
- #3335 - Fix another "dictionary changed size during iteration" error.
- Fix syncing of commands with
okresponses. Thanks to @KevinOConner for the idea. See also #2599.
- Fix the unrendered timelapse list being visible when empty.
- SockJS iframe fallback no longer embeds SockJS library from a CDN.
- Aggressively escape return values of the server in the UI.
Special thanks to all the contributors!
Special thanks to everyone who contributed to this RC, especially to balassy, ByReaL, cameroncros, CapnBry, cbxbiker61, dforsi, eyal0, FHeilmann, jammi, justfalter, kantlivelong, kevans91, koenkooi, mkobler, noahsmartin, povlhp, razerraz, RyuzakiKK, Salandora, smurfix, tedder & ZachNo for their PRs!