⚠️ New maintainer
🎉 This OctoPrint plugin now has a new maintainer: @jacopotediosi
🔗 The repository has also moved to a new location: https://github.com/jacopotediosi/OctoPrint-PrettyGCode
Huge thanks to the previous maintainer (@Kragrathea) for their great work on the project.
Feel free to open issues and pull requests on the new repo!
⚠️ Major refactor – bugs may be present
This plugin hadn't seen significant changes since 2021, so it was time for a refresh. This release includes extensive rewrites throughout the codebase (~10k lines of code added, ~9k removed), which means new bugs may have been introduced.
If you hit any, please report them via the Issues tab. If they disrupt your workflow, you can temporarily roll back to the previous version while waiting for the next release: go to OctoPrint Settings -> Plugin Manager -> Get More and install the plugin from this URL:
https://github.com/jacopotediosi/OctoPrint-PrettyGCode/archive/refs/tags/v1.2.4.zip
⚠️ New compatibility requirements
To support exciting new features and keep the code cleaner and more maintainable, this plugin now requires at least:
- OctoPrint 1.4.0 (released March 4, 2020)
- Python 3.7 (released June 27, 2018)
If you're still running older versions, it's time to update - new plugin versions cannot run in such outdated environments.
✋ Breaking changes
Custom CSS injection has been removed. As far as I understand, it was mostly used to resize the overlays (dashboard and webcam windows); you can now resize those windows directly by dragging their edges. If you were using CSS injection for any other reason, please open a feature request describing your use case.
♻️ Main changes
✨ Features & improvements
- Improved the accuracy of the 3D view and its sync with the live print:
- Rewrote the entire nozzle simulation: the nozzle now moves more smoothly, with more realistic position and speed relative to the actual print.
- Each layer is now revealed/extruded in the 3D view only as the nozzle passes over it.
- Line thickness is now based on the real nozzle size.
- Added support for more slicer features (e.g., overhang, tower, bridge, ironing). For now the color palette matches PrusaSlicer's; future versions will make it fully customizable.
- Added support for the G4, G28, M82, and M83 commands.
- Added support for R-form arcs.
- Improved the UI:
- The camera can now move freely, even below the print bed horizon.
- Added dark mode.
- Fixed the maximized view: some buttons were unreachable and some page elements (e.g. the OctoPrint footer) appeared on top of the view.
- Added a button to enter "true" fullscreen mode.
- Added the ability to resize the dashboard and webcam overlays by dragging the window edges.
- Improved UI-Customizer support: some page elements appeared, semi-transparent, on top of the maximized view.
- Added new settings:
- Enable/disable dark mode
- Show/hide the temperature status bar
- Enable/disable highlighting of the topmost layer
🐛 Bug fixes
- Fixed numerous reported issues with webcams not working on OctoPrint 1.9.0+ and in certain setups (e.g., behind reverse proxies, on octo4a, running OctoPrint from within a subfolder, etc). OctoPrint's webcam container is now re-docked into PrettyGCode's overlay, so every webcam feature OctoPrint supports works here too (HLS streams, multiple webcams, etc).
- Fixed a crash on OctoPrint 1.10.0+.
- Added compatibility with OctoPrint 2.0.0 (migration to pyproject, implementation of
is_template_autoescaped, adaptation to the new log prefixes). - Fixed the wrong layer count in the layer slider.
- Fixed model mirroring on the print bed so the reflection no longer extends beyond the bed surface.
- Toggling antialiasing no longer requires a page refresh.
- The 3D view is now skipped when the PrettyGCode tab isn't shown, to save resources.
🤓 Internal (developer experience) improvements
- Rewrote the frontend from scratch in TypeScript, split into independent modules, greatly improving readability and maintainability.
- Removed ~1500 lines of dead code from the previous messy JavaScript monofile.
- Added docstrings to all frontend functions.
- Added pre-commit hooks and CI actions to enforce linting and code correctness.
- Updated libraries: replaced the unmaintained dat-gui with lil-gui 0.21.0, three.js from r108 to r184, and camera-controls from 1.14.0 to 3.1.2.
ℹ️ More information
Full changelog (commit-level): v1.2.4...v2.0.0