github OctoPrint/OctoPrint 1.2.0
1.2.0 (stable)

latest releases: 1.10.0, 1.10.0rc4, 1.10.0rc3...
8 years ago

Note for Upgraders

  • The Cura integration has changed in such a way that OctoPrint now calls the
    CuraEngine directly instead of depending on the full Cura installation. See
    the wiki for instructions on how to change your setup to
    accommodate the new integration.

New Features

  • OctoPrint now has a plugin system which allows extending its
    core functionality.
  • Added internationalization of UI. Translations of OctoPrint are being crowd sourced via Transifex.
    Language Packs for both the core application as well as installed plugins can be uploaded through a new management
    dialog in Settings > Appearance > Language Packs. A translation into German is included, further language packs
    will soon be made available.
  • Printer Profiles: Printer properties like print volume, extruder offsets etc are now managed via Printer Profiles. A
    connection to a printer will always have a printer profile associated.
  • File management now supports STL files as first class citizens (including UI adjustments to allow management of
    uploaded STL files including removal and reslicing) and also allows folders (not yet supported by UI). STL files
    can be downloaded like GCODE files.
  • Slicing has been greatly improved:
    • It now allows for a definition of slicing profiles to use for slicing plus overrides which can be defined per slicing
      job (defining overrides is not yet part of the UI but it's on the roadmap).
    • A new slicing dialog has been added which allows (re-)slicing uploaded STL files (which are now displayed in the file list
      as well). The slicing profile and printer profile to use can be specified here as well as the file name to which to
      slice to and the action to take after slicing has been completed (none, selecting the sliced GCODE for printing or
      starting to print it directly)
    • The slicing API allows positioning the model to slice on the print bed (Note: this is not yet available in the UI).
    • Slicers themselves are integrated into the system via SlicingPlugins.
    • Bundled Cura Plugin allows slicing through CuraEngine up
      to and including 15.04. Existing Cura slicing profiles can be imported through the web interface.
  • New file list: Pagination is gone, no more (mobile incompatible) pop overs, instead scrollable and with instant
    search
  • You can now define a folder (default: ~/.octoprint/watched) to be watched for newly added GCODE (or -- if slicing
    support is enabled -- STL) files to automatically add.
  • New type of API key: App Session Keys for trusted applications
  • OctoPrint now supports action:... commands received via debug messages (// action:...) from the printer. Currently supported are
    • action:pause: Pauses the current job in OctoPrint
    • action:resume: Resumes the current job in OctoPrint
    • action:disconnect: Disconnects OctoPrint from the printer
      Plugins can add supported commands by hooking into the
      octoprint.comm.protocol.action hook
  • Mousing over the webcam image in the control tab enables key control mode, allowing you to quickly move the axis of your
    printer with your computer's keyboard (#610):
    • arrow keys: X and Y axes
    • W, S / PageUp, PageDown: Z axes
    • Home: Home X and Y axes
    • End: Home Z axes
    • 1, 2, 3, 4: change step size used (0.1, 1, 10, 100mm)
  • Controls for adjusting feed and flow rate factor added to Controls (#362)
  • Custom controls now also support slider controls
  • Custom controls now support a row layout
  • Users can now define custom GCODE scripts to run upon starting/pausing/resuming/success/failure of a print or for
    custom controls (#457, #347)
  • Bundled Discovery Plugin allows discovery of OctoPrint
    instances via SSDP/UPNP and optionally also via ZeroConf/Bonjour/Avahi.
  • Bundled Software Update Plugin takes care of notifying
    about new OctoPrint releases and also allows updating if configured as such. Plugins may register themselves with the
    update notification and application process through a new hook "octoprint.plugin.softwareupdate.check_config".

Improvements

  • Logging is now configurable via config file
  • Added last print time to additional GCODE file information
  • Better error handling for capture issues during timelapse creation & more robust handling of missing images during
    timelapse creation
  • Start counting the layers at 1 instead of 0 in the GCODE viewer
  • Upgraded Font Awesome to version 3.2.1
  • Better error reporting for timelapse rendering and system commands
  • Custom control can now be defined so that they show a Confirm dialog with configurable text before executing
    (#532 and #590)
  • Serial communication: Also interpret lines starting with "!!" as errors
  • Added deletion of pyc files to the python setup.py clean command
  • Settings now show a QRCode for the API Key (#637)
  • Username in UI is no longer enclosed in scare quotes (#595)
  • Username in login dialog is not automatically capitalized on mobile devices anymore (#639)
  • "Slicing Done" and "Streaming Done" notifications now have a green background (#558)
  • Files that are currently in use, be it for slicing, printing or whatever, are now tracked and can not be deleted as
    long as they are in use
  • Settings in UI get refreshed when opening settings dialog
  • New event "SettingsUpdated"
  • "Print time left" is now not displayed until it becomes somewhat stable. Display in web interface now also happens
    in a fuzzy way instead of the format hh:mm:ss, to not suggest a high accuracy anymore where the can't be one. Additionally
    OctoPrint will use data from prior prints to enhance the initial print time estimation.
  • Added handler for uncaught exceptions to make sure those get logged, should make the logs even more useful for analysing
    bug reports
  • The server now tracks the modification date of the configuration file and reloads it prior to saving the config if
    it has been changed during runtime by external editing, hence no config settings added manually while the server
    was running should be overwritten anymore.
  • Display a "Please Reload" overlay when a new server version or a change in installed plugins is detected after a
    reconnect to the server.
  • Better handling of errors on the websocket - no more logging of the full stack trace to the log, only a warning
    message for now.
  • Daemonized OctoPrint now cleans up its pidfile when receiving a TERM signal (#711)
  • Added serial types for OpenBSD (#551)
  • Improved behaviour of terminal:
    • Disabling autoscrolling now also stops cutting off the log while it's enabled, effectively preventing log lines from
      being modified at all (#735)
    • Applying filters displays [...] where lines where removed and doesn't cause scrolling on filtered lines
      anymore (#286)
    • Added a link to scroll to the end of the terminal log (useful for when autoscroll is disabled)
    • Added a link to select all current contents of the terminal log for easy copy-pasting
    • Added a display of how many lines are displayed, how many are filtered and how many are available in total
  • Frame rate for timelapses can now be configured per timelapse (#782)
  • Added an option to specify the amount of encoding threads for FFMPEG (#785)
  • "Disconnected" screen now is not shown directly after a close of the socket, instead the client first tries to
    directly reconnect once, and only if that doesn't work displays the dialog. Should reduce short popups of the dialog
    due to shaky network connections and/or weird browser behaviour when downloading things from the UI.
  • Development dependencies can now be installed with pip -e .[develop]
  • White and transparent colors ;) are supported for the navigation bar (#789)
  • Drag-n-drop overlay for file uploads now uses the full available screen space, improving usability on high resolution
    displays (#187)
  • OctoPrint server should no longer hang when big changes in the system time happen, e.g. after first contact to an
    NTP server on a Raspberry Pi image. Achieved through monkey patching Tornado with
    this PR.
  • Serial ports matching /dev/ttyAMA* are not anymore listed by default (this was the reason for a lot of people
    running into problems while attempting to connect to their printer on their Raspberry Pis, on which /dev/ttyAMA0
    is the OS's serial console by default). Added configuration of additional ports to the Serial Connection section in
    the Settings to make it easier for those people who do indeed have their printer connected to /dev/ttyAMA0.
  • Better behaviour of the settings dialog on low-width devices, navigation and content also now scroll independently
    from each other (see also #823)
  • Renamed "Temperature Timeout" and "SD Status Timeout" in Settings to "Temperature Interval" and "SD Status Interval"
    to better reflect what those values are actually used for.
  • Added support for rectangular printer beds with the origin in the center (#682
    and #852). Printer profiles now contain a new settings volume.origin
    which can either be lowerleft or center. For circular beds only center is supported.
  • Made baudrate detection a bit more solid, still can't perform wonders.
  • Only show configuration options for additional extruders if more than one is available, and don't include offset
    configuration for first nozzle which acts as reference for the other offsets (#677).
  • Cut off of the temperature graph is now not based on the number of data points any more but on the actual time of the
    data points. Anything older than n minutes will be cut off, with n defaulting to 30min. This value can be
    changed under "Temperatures" in the Settings (#343).
  • High-DPI support for the GCode viewer (#837).
  • Stop websocket connections from multiplying (#888).
  • New setting to rotate webcam by 90° counter clockwise (#895 and
    #906)
  • System commands now be set to a) run asynchronized by setting their async property to true and b) to ignore their
    result by setting their ignore property to true.
  • Various improvements of newly introduced features over the course of development:
    • File management: The new implementation will migrate metadata from the old one upon first startup after upgrade from
      version 1.1.x to 1.2.x. That should speed up initial startup.
    • File management: GCODE Analysis backlog processing has been throttled to not take up too many resources on system
      startup. Freshly uploaded files should still be analyzed at full speed.
    • Plugins: SettingsPlugins may track versions of configuration format stored in config.yaml, including a custom
      migration method getting called when a mismatch between the currently stored configuration format version and the one
      reported by the plugin as current is detected.
    • Plugins: Plugins may now have a folder for plugin related data whose path can be retrieved from the plugin itself
      via its new method get_plugin_data_folder.
    • Plugin Manager: Don't allow plugin management actions (like installing/uninstalling or enabling/disabling) while the
      printer is printing (see also unreproduced issue #936).
    • Plugin Manager: More options to try to match up installed plugin packages with discovered plugins.
    • Plugin Manager: Display a more friendly message if after the installation of a plugin it could not be correctly
      identifier.
    • Software Update: Enforce refreshing of available updates after any changes in enabled plugins.

Bug Fixes

  • #435 - Always interpret negative duration (e.g. for print time left)
    as 0
  • #516 - Also require API key even if ACL is disabled.
  • #556 - Allow login of the same user from multiple browsers without
    side effects
  • #612 - Fixed GCODE viewer in zoomed out browsers
  • #633 - Correctly interpret temperature lines from multi extruder
    setups under Smoothieware
  • #680 - Don't accidentally include a newline from the MIME headers
    in the parsed multipart data from file uploads
  • #709 - Properly initialize time estimation for SD card transfers too
  • #715 - Fixed an error where Event Triggers of type command caused
    and exception to be raised due to a misnamed attribute in the code
  • #717 - Use shutil.move instead of os.rename to avoid cross
    device renaming issues
  • #752 - Fix error in event handlers sending multiple gcode commands.
  • #780 - Always (re)set file position in SD files to 0 so that reprints
    work correctly
  • #784 - Also include requirements.txt in files packed up for
    python setup.py sdist
  • #330 - Ping pong sending to fix potential acknowledgement errors.
    Also affects #166, #470
    and #490. A big thank you to all people involved in these tickets
    in getting to the ground of this.
  • #825 - Fixed "please visualize" button of large GCODE files
  • Various fixes of bugs in newly introduced features and improvements:
    • #625 - Newly added GCODE files were not being added to the analysis
      queue
    • #664 - Fixed jog controls again
    • #677 - Fixed extruder offsets not being properly editable in
      printer profiles
    • #678 - SockJS endpoints is now referenced by relative URL
      using url_for, should solve any issues with IE11.
    • #683 - Fixed heated bed option not being properly displayed in
      printer profiles
    • #685 - Quoted file name for Timelapse creation to not make
      command hiccup on ~ in file name
    • #709 - Fixed file sending to SD card
    • #714 - Fixed type validation of printer profiles
    • Heating up the heated bed (if present) was not properly configured in CuraEngine plugin
    • #720 - Fixed translation files not being properly copied over
      during install
    • #724 - Fixed timelapse deletion for timelapses with non-ascii
      characters in their name
    • #726 - Fixed babel_refresh command
    • #759 - Properly initialize counter for template plugins of type
      "generic"
    • #775 - Error messages in javascript console show the proper name
      of the objects
    • #795 - Allow adding slicing profiles for unconfigured slicers
    • #809 - Added proper form validation to printer profile editor
    • #824 - Settings getting lost when switching between panes in
      the settings dialog (fix provided by #879)
    • #892 - Preselected baudrate is now properly used for auto detected
      serial ports
    • #909 - Fixed Z-Timelapse for Z changes on G1 moves.
    • Fixed another instance of a missing branch field in version dicts generated by versioneer (compare
      #634). Caused an issue when installing from source archive
      downloaded from Github.
    • #931 - Adjusted octoprint_setuptools to be compatible to older
      versions of setuptools potentially site-wide installed on hosts.
    • #942 - Settings can now be saved again after installing a new
      plugin. Plugins must not use super anymore to call parent implementation of SettingsPlugin.on_settings_save but
      should instead switch to SettingsPlugin.on_settings_save(self, ...). Settings API will capture related
      TypeErrors and log a big warning to the log file indicating which plugin caused the problem and needs to be
      updated. Also updated all bundled plugins accordingly.
    • Software Update: Don't persist more check data than necessary in the configuration. Solves an issue where persisted
      information overrode updated check configuration reported by plugins, leading to a "an update is available" loop.
      An auto-migration function was added that should remove the redundant data.
  • Various fixes without tickets:
    • GCODE viewer now doesn't stumble over completely extrusionless GCODE files
    • Do not deliver the API key on settings API unless user has admin rights
    • Don't hiccup on slic3r filament_diameter comments in GCODE generated for multi extruder setups
    • Color code successful or failed print results directly in file list, not just after a reload
    • Changing Timelapse post roll activates save button
    • Timelapse post roll is loaded properly from config
    • Handling of files on the printer's SD card contained in folders now works correctly
    • Don't display a "Disconnected" screen when trying to download a timelapse in Firefox
    • Fixed handling of SD card files in folders
    • Fixed refreshing of timelapse file list upon finished rendering of a new one
    • Fixed /api/printer which wasn't adapter yet to new internal offset data model
    • Made initial connection to printer a bit more responsive: Having to wait for the first serial timeout before sending
      the first M105 even when not waiting for seeing a "start" caused unnecessary wait times for reaching the
      "Operational" state.
    • Log cancelled prints only once (thanks to @imrahil for the headsup)

More information

Don't miss a new OctoPrint release

NewReleases is sending notifications on new releases.