Nov 302020
Vor wenigen Minuten wurde eine neue Octoprint Version veröffentlicht, welche nun auch endlich in der finalen 1.50 Version vorliegt. Der Changelog hat es in sich und diesen hier zu übersetzen würde zu lange dauern. Daher wie immer der Changelog auf englisch.
Kleiner Tipp nebenbei falls Euch das Update nicht angezeigt wird. Geht auf Einstellungen, dann auf Software Update und speichert ab. Bei mir wurde erst dann das Update zum installieren angezeigt. Viel Erfolg. 😉
Features & improvements
- #1600 – Support reading the long filename from
M20
if included or adding it from a plugin (e.g. one that utilizes a storm ofM33
to fetch all long names). Please note: That’s the only wayM33
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. - #2051 – Add a media player for MP4 timelapses. See also #3625.
- #3502 – Set default timeout for websocket connection to 30s to work around loading time issues observed by some users.
- #3636 – Option to turn off internal filename display (see also #3783).
- #3646 – A new recovery page is available now under
/recovery
, that allows accessing system commands, basic printer control and backup functionality even if the main interface is no longer functional, e.g. due to an errant plugin. - #3647 – Support for HLS webcams.
- #3659 – Enable checksums when manually streaming to the printer as some firmware variants apparently require this.
- #3664 – Discovery: Remove dependency on the unmaintained and not Python 3 compatible pybonjour for zeroconf support in favor of python-zeroconf. For Python 2, this library has been vendor bundled and patched with some bug fixes only available in later, Python 3 only, releases.
- #3672 – Warn users if there’s a certain amount of resend requests detected, indicating a lot of noise on the line.
- #3696 – Clarify in Settings dialog that most of the serial settings require a reconnect to the printer to become effective. See also #3703.
- #3700 – Support non standard pip executable locations in Plugin Manager, Software Update and Backup.
- #3718 – Printer Notifications: Set a maximum height for the list of notifications.
- #3719 – Hint mkstemp used in
atomic_write
to create temporary files in the destination directory. This ensures that the final move operation upon write completion and thus file overwriting stays atomic even if the system wide temporary directory and the destination directory of anatomic_write
operation are on different partitions and thus avoids potential race conditions causing file corruption. - #3720 – Backup: Allow plugins to flag data managed by them to exclude from backups through a new hook
octoprint.plugin.backup.additional_excludes
. - #3726 – Better resilience against broken analysis queues in third party plugins.
- #3727 – Add terminal filter for busy protocol. 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
. - #3728 – Backup: Added a new event
plugin_backup_backup_created
that 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. - #3733 – Allow to permanently ignore update notifications from individual update checks.
- #3738 – Clarify currently selected tool cannot be displayed and only show tool selector if the current printer profile has more than one tool configured.
- #3744 – Discovery: Add unique ID TXT record to zeroconf service.
- #3745 – Add pyenv local version to
.gitignore
. - #3754 – Detect duplicate configured folder paths, warn the user, refuse to safe them, and as a final line of defense refuse startup if such an invalid configuration is detected.
- #3756 – Add support for authentication via
Authorization: Bearer <apikey>
header. - #3760 – Make
octoprint.util.ResettableTimer
setdaemon=True
by default. - #3762 – 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 viagit config blame.ignoreRevsFile .git-blame-ignore-revs
. - #3766 – Include user name or plugin identifier of who/what started/paused/resumed/cancelled a print job.
- #3768 – Printer Notifications: Add additional „clear notifications“ button to panel header and allow to change sorting order.
- #3772 – Virtual Printer: Add EEPROM support.
- #3777 – Software Update: Warning message if a rate limit is preventing a version check to succeed. Also support configuring a GitHub Personal Access Token to be configured via
plugins.softwareupdate.credentials.github
inconfig.yaml
to increase rate limit restrictions. - #3782 – Update FontAwesome to 5.15.1. A compatibility option for backwards compatibility to the former bundled version 4.7.0 is active so that this should not cause issues for third party plugins.
- #3785 – Update KnockoutJS to 3.5.1
- #3791 – Discovery: Allow to restrict network interfaces and addresses network discovery will be enabled for.
- #3804 – Improve handling of corrupt
users.yaml
file and refuse server start if broken and default file based UserManager is configured. - #3811 – Only start tracking resend ratio after a set amount of lines has been transmitted.
- #3822 – Prevent circumvention of access control through admin subgroups/permissions
- Don’t try to send
beforeDisconnect
script when not properly connected yet. - Default to libx264/mp4 for timelapses.
- Try up to three times to check for network connectivity before declaring offline state.
- Add support for the
start
action command to allow triggering of the active print job from the printer LCD. - Add support for removing settings overlays.
- Add support for settings overlays added by plugins.
- New hook:
octoprint.printer.additional_state_data
(see also OctoPrint/plugins.octoprint.org#553). - Add socket authentication to the bundled client.
- Add
in_place
option foroctoprint.util.dict_merge
and use where it makes sense to improve performance, idea by @amrsoll - Disable logout button in case of login via auth header or API key.
- New plugin timings logging feature. If enabled (via Settings > Server > Debug options) this will write two new files to the logging dir,
plugintimings.log
andplugintimings.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. - New API endpoint
/server
that returns version and safe mode status. - New upload state in the UI, „Refreshing list“, the will hopefully allow to debug any further performance issues with file management.
- Converted code base to use dict and set literals over constructors where applicable. See also #3762.
- Make Access Control mandatory.
- Use monospace font for GCODE Scripts editor in the settings.
- New system information collection page & CLI. Will dump a whole lot of all that environmental data that is required for debugging/support, and can easily be copy/pasted. Once 1.5.0 has been out for a while, a copy of this will become mandatory for bug reports and support tickets on the forums.
- Add 64bit flag to environmental data.
- Announcements: Use feedparser >= 6.0.2 under Python 3.
- Backup: Add config flag
restore_unsupported
/env varOCTOPRINT_BACKUP_RESTORE_UNSUPPORTED
to mark restore as unsupported. - Pi Support: The plugin will now prominently display a warning message if OctoPrint is detected as running on a Raspberry Pi Zero/Zero W. This hardware has never been recommended due to severe performance issues that are not just caused by low powered CPU and RAM, contrary to what some sources on the internet might have claimed otherwise.
- Pi Support: Include throttle state in environmental data.
- Pi Support: Add support for file flag to enable local debug.
- Plugin Manager: Support version ranges for plugin notices from plugins.octoprint.org.
- Software Update: Support release channels for third party plugins.
- Software Update: Support update check overlay from plugins.octoprint.org.
- Software Update: Improve pip caller caching behaviour, speed up startup.
- Tracking: Include 32/64bit info in
ping
andpong
tracking events. - Virtual Printer: Implemented
M600
with busy wait & prompt. - Virtual Printer: Format strings for temperature report to simulate broken temperature formats.
- Virtual Printer: Support noise simulation on the line.
- Docs: Added version added info to hooks and API.
- Docs: More docs for
octoprint.plugin.core.*
. - Various dependency updates.
- Various refactorings.
Bug fixes
- #3571 – Set sensible permissions on file uploads and work around restrictive permissions imposed by
tempfile
. - #3649 – Only ever send one line on
continue_sending
. Otherwise we might spam our send queue, leading to a bunch of lines piling up inside it, making cancelling/pausing take longer and longer. - #3658 – Application Keys: Fix typo in API documentation.
- #3679 – Fix issue causing saving of settings to not work if the serial communication timeout has been modified.
- #3668 – Plugin Manager: Turn plugin install asynchronous to not run into request timeouts during lengthy installation processes.
- #3686 – Fix default extrusion length display on the Control tab.
- #3687 – Fix matching of natively supported action commands to not take potential command parameters into account, like encountered on Marlin’s filament runout detection.
- #3689 – Fix server side handling of SockJS errors, leading to exception spam in Tornado due to unretrieved future exceptions.
- #3698 – Plugin Manager: Fix plugins provided in gzip no longer being supported. See also #3707.
- #3699 – Fix
M876
not being force-sent while printing - #3701 – Plugin Manager: Fix
file://
URL generation for plugin installs under Windows - #3702 – Application Keys: Fix manual key registration not showing when no keys are yet registered.
- #3704 – Fix JS error handling to not work when error tracking is disabled. See also #3706.
- #3705 – Fix watchdog not triggering on file renames in the watched folder, only on creation.
- #3722 – Backup: Fix issue with restore on some Python 3 setups.
- #3729 – Plugin Manager: Performance improvements and fixed memory leak in the frontend.
- #3731 – Fix exception on log download upon file change by switching to chunked encoding.
- #3740 – Remove default submit from settings forms.
- #3742 – Fix link to language packs.
- #3743 – GCODE viewer: Fix layer tooltip location.
- #3769 – Fix detection of virtual environments on newer versions of
virtualenv
that do not setsys.real_prefix
. - #3790 – Plugin Manager: Fix an uncaught
TypeError
when setting „Force the use of the--user
flag withpip install
„. - #3796 – Fix handling of webcam permission, see also #3797.
- #3805 (regression) – Fix an internal server error on
GET /api/files/local/<filename>
- #3812 (regression) – Backup: Fix an
AttributeError
on CLI usage - #3813 (regression) – Discovery: Fix zeroconf discovery under Python 2
- #3814 – Fix an error on language pack upload under Python 3; not a regression, but still included due to being minimally invasive (see also #3815)
- #3825 (regression) – Plugin installation broken under Windows and Python 2.7
- Don’t drop state messages on the socket, even if rate limiting is active. Otherwise we might drop a final switch to Offline and hence still displayed as connected when we are not.
- Gracefully handle non existing
Accept-Encoding
header. - Treat wss/ws protocol as https/http in websocket origin check, see also this forum post.
- Double check download folder in
octoprint.util.net.download_file
. - Fix settings overlays, they were not merging the defaults.
- Make settings remove behave identical to get and set regarding defaults.
- Protect against a potential deadlock in
LocalFileStorage
. - Prefer
collections.abc
overcollections
imports, as the latter will no longer be supported in Python 3.9. - Get rid of an unnecessary double load of plugins during server startup.
- Discovery: Send three SSDP notify messages as defined in the spec, not just one.
- Software Update: Fix CLI.
- Various code fixes as pointed out by static analysis tools.