Skip to content

Releases: OctoPrint/OctoPrint

1.5.3

19 Jan 10:33
Compare
Choose a tag to compare

This is a bugfix release to fix two bugs in 1.5.x which seem to cause a noticeable amount of support overhead.

The heads-ups from 1.5.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!

Bug fixes

  • #3849 - Fix plugin install errors (e.g. due to undervoltage) not being properly reported to the client.
  • #3886 - Fix handling of 404 errors upon plugin install

Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release, especially @cp2004 and @kantlivelong for their PRs!

More information

  • Commits
  • As this is a bugfix release, there were no release candidates

1.5.2 (stable release)

10 Dec 12:38
Compare
Choose a tag to compare

This is a hotfix release to fix a bug in 1.5.x that sadly only was reported after release of 1.5.1, and to work around a backwards incompatible update of a third party dependency.

The heads-ups from 1.5.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!

Bug fixes

  • #3855 & #3867 - Fix settings merging on the frontend causing issues with array values.
  • Pin watchdog dependency to 0.10.4 to work around backwards incompatibility with the just release 0.10.5 under Python 3.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this hotfix release!

More information

  • Commits
  • As this is a hotfix release, there were no release candidates

1.5.1 (stable release)

04 Dec 10:51
Compare
Choose a tag to compare

This is a hotfix release to fix two bugs in 1.5.0 that sadly only were reported after the release candidate phase for 1.5.0.

The heads-ups from 1.5.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!

Bug fixes

  • #3844 - Fix api/files/<origin>/<path> not returning children for folders
  • #3852 - Fix service discovery messing with hostname resolution. Still unclear on how that even happens and unable to reproduce, but at least simply completely ignoring loopback devices seems to do the trick.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this hotfix release, especially to @Spybyte for helping to debug!

More information

  • Commits
  • As this is a hotfix release, there were no release candidates

1.5.0

30 Nov 14:54
Compare
Choose a tag to compare

Heads-up: Access Control is now mandatory and no longer can be disabled

If you so far had Access Control disabled, upon upgrading to 1.5.0, OctoPrint will prompt you to create a user name and password for the (first) admin user. This step was sadly necessary as too many people still will happily expose their completely unsecured OctoPrint instance on the public internet, causing additional support overhead from both attacked users and security researchers. See this guide for a way to have OctoPrint log you in automatically when connecting from an internal IP.

Heads-up: Known plugin incompatibilities

The following plugins are confirmed to have issues with OctoPrint 1.5.0, as revealed during the RC phase. Their authors have been informed of this but no fixed version was available at the time of release:

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 of M33 to fetch all long names). Please note: That's the only way M33 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 an atomic_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 set daemon=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 via git 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 in config.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 for octoprint.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 and plugintimings.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 var OCTOPRINT_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.
    ...
Read more

1.5.0rc3 (release candidate)

18 Nov 15:19
Compare
Choose a tag to compare
Pre-release

⚠️ 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!

Heads-up: Access Control is now mandatory and no longer can be disabled

If you so far had Access Control disabled, upon upgrading to 1.5.0, OctoPrint will prompt you to create a user name and password for the (first) admin user. This step was sadly necessary as too many people still will happily expose their completely unsecured OctoPrint instance on the public internet, causing additional support overhead from both attacked users and security researchers. See this guide for a way to have OctoPrint log you in automatically when connecting from an internal IP.

Bug fixes

  • #3825 (regression) - Plugin installation broken under Windows and Python 2.7

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.5.0rc2 (release candidate)

17 Nov 14:49
Compare
Choose a tag to compare
Pre-release

⚠️ 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!

Heads-up: Access Control is now mandatory and no longer can be disabled

If you so far had Access Control disabled, upon upgrading to 1.5.0, OctoPrint will prompt you to create a user name and password for the (first) admin user. This step was sadly necessary as too many people still will happily expose their completely unsecured OctoPrint instance on the public internet, causing additional support overhead from both attacked users and security researchers. See this guide for a way to have OctoPrint log you in automatically when connecting from an internal IP.

Improvements

  • #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

Bug fixes

  • #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)

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 @cp2004 for his PR!

More information

1.5.0rc1 (release candidate)

10 Nov 14:37
Compare
Choose a tag to compare
Pre-release

⚠️ 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!

Heads-up: Access Control is now mandatory and no longer can be disabled

If you so far had Access Control disabled, upon upgrading to 1.5.0, OctoPrint will prompt you to create a user name and password for the (first) admin user. This step was sadly necessary as too many people still will happily expose their completely unsecured OctoPrint instance on the public internet, causing additional support overhead from both attacked users and security researchers. See this guide for a way to have OctoPrint log you in automatically when connecting from an internal IP.

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 of M33 to fetch all long names). Please note: That's the only way M33 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 an atomic_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 set daemon=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 via git 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 in config.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.
  • 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 for octoprint.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 and plugintimings.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 var OCTOPRINT_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.
  • ...
Read more

1.4.2 (stable release)

06 Aug 11:53
Compare
Choose a tag to compare

This is a hotfix release to fix three bugs in 1.4.1 that sadly only were reported after the release candidate phase for 1.4.1.

The heads-ups from 1.4.1 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!

Bug fixes

  • #3674 - Fix a bug that prevents plugin installation via upload for plugins over 1MB in size.
  • #3676 - Work around an issue in a third party dependency causing server startup to fail if there are files in the watched folder and polling of the watched folder is enabled. Also further hardening against similar issues interfering with server startup.
  • #3678 - Fix a bug that prevents plugin installation via URL from servers that enclose the filename option in the Content-Disposition HTTP header in double quotes. Affected some plugins not hosted on Github.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this hotfix release, especially to @osubuu for their PR!

More information

  • Commits
  • As this is a hotfix release, there were no release candidates

1.4.1 (stable release)

04 Aug 09:50
Compare
Choose a tag to compare

Heads-up for users of the Telegram plugin v1.5.0 or lower (and possibly other plugins that use long deprecated flask.ext imports)

The Telegram plugin up until the currently latest version 1.5.0 from August 7th 2019 is incompatible to OctoPrint 1.4.1 and later (see this ticket). The reason for that is that OctoPrint had to update its third party Flask dependency for security reasons, and this plugin (and possibly others) still use an import syntax related to that dependency that has been deprecated and warned about for several years now and which finally has been removed in current versions of Flask.

A fix has been provided to the Telegram plugin maintainers and has been merged, but so far no new release has been pushed out.

If you notice the Telegram plugin or another third party plugin no longer loading under OctoPrint 1.4.1 with an error logged to octoprint.log that looks similar to

  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/plugin/core.py", line 972, in _import_plugin
    module = _load_module(module_name, spec)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/plugin/core.py", line 71, in _load_module
    return imp.load_module(name, f, filename, details)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint_telegram/__init__.py", line 5, in <module>
    from flask.ext.babel import gettext
ImportError: No module named ext.babel

then this outdated import syntax is the reason. That is something that needs to be fixed by the plugin maintainers by pushing out a new release. Please do not open issues about this on the OctoPrint repository, I cannot do anything about this.

Heads-up for users of the TouchUI plugin v0.3.14 or lower

The TouchUI plugin up until the currently latest version 0.3.14 from March 11 2020 is incompatible to OctoPrint as it makes assumptions about the structure of the UI that are no longer true, leading to the plugin breaking the OctoPrint UI when active.

A fix is ready but no release has been pushed out yet. Until a fixed version is released it is suggested to disable the plugin under 1.4.1.

See also the ticket here.

Heads-up for plugin authors: Jinja2 update has one backwards incompatibility, please read

Current Jinja versions no longer allow modifying variables set outside of for loops inside them. So something like:

{% set mark_active = True %}
{% for item in items %}
    # do something
    {% if mark_active %}
        # do something more
        {% set mark_active = False %}
    {% endif %}
{% endfor %}

no longer works - mark_active will be reset on every iteration of the loop to its initial value False. The fix is to use namespaces to hold the modifiable values instead:

{% set ns = namespace(mark_active = True) %}
{% for item in items %}
    # do something
    {% if ns.mark_active %}
        # do something more
        {% set ns.mark_active = False %}
    {% endif %}
{% endfor %}

See also #1697 and https://jinja.palletsprojects.com/en/2.11.x/templates/#assignments

The Jinja dependency upgrade thus introduces a breaking change for plugins as well. However, it was necessary for security reasons: older versions have a bug that could allow template authors to break out of the template sandbox. Not a huge risk in the context of OctoPrint (plugins already have a lot more power than Jinja would give them), but still overdue to fix.

Heads-up for plugin authors: awesome-slugify is now bundled as octoprint.vendor.awesome_slugify, update your imports!

Due to a necessary dependency update of a third party dependency pulling in a different slugify library ("python-slugify") that clashes with awesome-slugify, the latter has been bundled. If you use import slugify anywhere in your code, please be aware that that will now possibly pull in the aforementioned other library or possibly a partially overwritten awesome-slugify. Plugin authors are advised to update the imports of awesome-slugify like this:

### old

# example 1
import slugify

# example 2
from slugify import Slugify

### new

# example 1
try:
  # OctoPrint>=1.4.1
  import octoprint.vendor.awesome_slugify as slugify 
except ImportError:
  # OctoPrint<=1.4.0
  import slugify

# example 2
try:
  # OctoPrint>=1.4.1
  from octoprint.vendor.awesome_slugify import Slugify
except ImportError:
  # OctoPrint<=1.4.0
  from slugify import Slugify

That will also guarantee backwards compatibility if installed under OctoPrint versions prior to 1.4.1. Alternatively switch fully to the 1.4.1 version and adjust your plugin listing to a minimum OctoPrint version of 1.4.1.

Heads-up for developers: The included virtual printer has had its settings migrated to a different location in config.yaml

The bundled Virtual Printer plugin has finally been turned fully isolated into a self contained plugin and thus its settings have been moved from devel.virtualPrinter to plugins.virtual_printer in config.yaml. An auto migration is in place that should take care of moving anything already configured on first start under 1.4.1+, however should you be somehow manipulating config.yaml through automation or something in order to change virtual printer settings, you'll have to update your workflows.

Improvements

  • #216 - New control on Temperature tab to set all heaters to temperatures from a configured temperature profile with one click (see also #3617)
  • #2312 - Software Update: Refuse to update if there is insufficient disk scape to do so. Disk space threshold is configurable and defaults to at least 150MB of free space in the Python package installation folder, the internal plugin folder and the system's temporary files folder. This value might be revisited and increased if it proves to be too small still.
  • #2451 - Add support for sub folders on the watched folder (see also #3557)
  • #3344 - Don't invalidate server side cache on hard reload while printing. Should combat performance issues on low powered systems.
  • #3410 - Add bundled "File Check" plugin to sanity check uploaded files and warn about potential issues. Currently the plugin only detects {travel_speed} place holders left in GCODE. Read more in the plugin's README.
  • #3411 - GCode viewer: Show retracts, moves and head position only for the current layer to reduce visual noise.
  • #3415 - Backup: Allow to specify path to backup to create on CLI: octoprint plugins backup:backup --path /path/to/my/backup.zip
  • #3420 - Add manifest.json and link from web UI to allow styling of homepage shortcuts on mobile devices as UI-less browser window.
  • #3433 - Allow sorting of file list by last print date.
  • #3471 - Reword buttons on print cancel confirmation to avoid misunderstandings.
  • #3479 - Configuration option to disable SD print detection, to work around misbehaving firmware variants (e.g. Ultimaker 2/2+, for which that setting will also now get applied automatically)
  • #3482 - Configuration options to configure SameSite and SecureCookie headers. Might be needed for certain environments where OctoPrint gets embedded into a third party page, together with switching to https.
  • #3496 - Add option to restore from a backup right at the start of the first run setup wizard.
  • #3497 - Performance improvements for static assets: introduce gzip encoding, whitespace removal, assetpreloading, request count reduction & also update some frontend dependencies.
  • #3506 - Allow to inject custom temperature from plugins into the data collection in the backend. Note that this will not have custom temperature magically appear in the UI, this is only the first step towards that.
  • #3526 - Set LC_ALL and LANG environment variables in bundled startup files.
  • #3534 - Add optional request profiler. Can be enabled by starting the server with --debug and adding the perfprofile query parameter to any request.
  • #3567 - Clean up workaround for #2166 that is no longer needed
  • #3569 - Properly reflect on the UI that feed rate and flow rate modifiers are write-only ephemeral values that cannot be read back from the firmware by removing permanent display.
  • #3590 - Add M82 and M83 to extrude/retract commands to make sure the extruder really is switcher to relative and ...
Read more

1.4.1rc4 (Release candidate)

29 Jul 10:10
Compare
Choose a tag to compare
Pre-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 a Release Candidate.

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!

Improvements

  • #3661: Protect against invalid input data extracted from Github in plugin repository browser

Bug fixes

  • #3653 (regression): Fixed disconnect during auto connect hanging indefinitely or not getting properly reported to frontend
  • #3655 (regression): Fixed broken /api/files/local API
  • Fixed a duplicated ID in the generated HTML (regression)

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

More information