Releases: barebaric/rayforge
Release 0.27.1
This is a maintenance release.
- Major Performance Boost for SVG import: Importing complex SVG files is now significantly faster. This is achieved by intelligently simplifying paths during the import process, reducing the number of nodes without compromising visual fidelity.
- Invalid Clipping Fixed: An issue where SVG files with complex or invalid clipping paths would be rendered incorrectly has been resolved.
- Sketcher Fill Toggling Restored: Fixed a bug where fills in sketches loaded from disk could no longer be toggled on or off.
- Theme-Aware Colors: The sketcher line colors now use the default line color defined in the current theme for a more consistent visual experience.
- Laser Dot Position: Corrected the on-screen position of the laser dot, which was not properly taking the machine's configured origin into account.
Release 0.27
Sketcher Enhancements & Parametric Control
The parametric 2D sketcher receives a major upgrade, becoming more powerful and intuitive.
- Expressions and Parameters: Sketches now fully support expressions and user-defined parameters. Define variables within your sketches and use them to drive geometry with advanced mathematical expressions.
- Expression Editor: A new expression editor with syntax highlighting and auto-completion makes creating and managing expressions easy.
- Instance Parameters: Each instance of a sketch placed on the surface can now have its input parameters set separately, allowing for flexible design variations from a single sketch template.
- Filled Shapes: The sketcher now supports creating and displaying filled shapes, opening up new possibilities for complex designs.
- New Rounded Rectangle Tool: A dedicated tool has been added for creating rounded rectangles.
- Improved Constraint Visualization: Constraint markers and geometry now provide clearer visual feedback.
- Selected constraints are drawn with an underlay.
- Fully constrained sketches are drawn in a darker green.
- Improved location for tangential constraint markers and better hover highlighting for symmetry constraints.
- Improved hit detection for constraints and clearer color changes on selection.
- Drag-Select: Easily select multiple sketch elements with a new drag-select feature.
- Refined Workflow:
- Sketches are now treated as "templates" that can be placed on the surface multiple times, each with independent parameters.
- Sketch parameters have their own dedicated section in the properties panel for a cleaner layout.
- Input parameters can be set separately per sketch instance.
- Construction line dash lengths are now measured in pixels for a consistent look regardless of zoom level.
- Double-clicking stock now opens stock properties.
Ctrl+Nnow provides a quick shortcut for creating a new sketch.
Machine Connectivity & Control
This release focuses on making Rayforge more reliable and adaptable to various GRBL machines.
- Robust GRBL Serial Driver:
- Improved recovery from command timeouts, ensuring more stable connections.
- Added safety fallbacks to prevent issues during operation.
- Gracefully handles multiple machines configured to the same port.
- Fixes issues where the driver would not attempt to connect after initial configuration.
- Variable Substitutions in G-Code: Added support for variable substitutions in preamble and postscript G-code sections (
#105). - Flexible Machine Origins: Added support for machines with top-right and bottom-right origins, expanding compatibility.
- Negative Axis Support: Rayforge now supports machines with negative axis configurations.
- Configurable Single-Axis Homing: An option is now available to turn off single-axis home controls (
#98). - Machine Hours Recording: Added support for recording machine operating hours (
#92). - Boolean Setting Fixes: Fixed issues where boolean settings and variables were not correctly normalized or applied to devices (
#94).
User Interface & Experience
Numerous refinements and fixes enhance the overall usability and visual consistency of Rayforge.
- Icon Refresh: Many icons throughout the application have been replaced with built-in icons for a more consistent and polished look (
#86).- This includes icons in asset settings, the timer, connection/device status widgets, and dialect management.
- New Machine Settings Dialog: The machine settings dialog has been redesigned for a clearer and more user-friendly layout.
- Dark Mode Improvements: Fixed text readability issues in dark mode for key simulations (
#95) and camera alignment popovers (#90). - Streamlined Settings:
- "Preferences" has been renamed to "Settings" (
#89). - The "Edit Recipe" dialog now uses three tabs for better organization: General, Applicability, and Settings to Apply (
#81). ESCandCtrl+Wnow close machine settings.- The machine settings menu entry has been cleaned up by removing "..." (
#91).
- "Preferences" has been renamed to "Settings" (
- Improved Input Handling:
- Spin row values are now correctly applied when editing with the keyboard (
#100). - Rows in item properties can now reliably retrieve focus.
- Spin row values are now correctly applied when editing with the keyboard (
- Asset Management: The stock list and sketch list have been merged into a single, unified asset list.
- Workflow & Usability:
- The "New Sketch" button has been removed from the main toolbar.
- The raster import dialog has been renamed to the "Import Dialog" to reflect its support for all file types.
- When exporting a sketch, the default location is now the original import location.
- The log dialog width has been slightly reduced (
#84). - Added an intro video to the homepage.
- The main window no longer updates unnecessarily on workpiece transforms, improving responsiveness.
- Improved spacing in the expression editor to avoid dialog layout shifts during typing.
- An error is now shown when an empty sketch is dropped onto the surface.
- Refactored Internals: Significant internal refactoring of the sketcher, undo models, asset handling, and job runner improves maintainability, testability, and lays the groundwork for future features.
Bug Fixes
- Fixed the import dialog not working correctly for many file formats (
#106). - Fixed various focus-related bugs in the sketcher, including the view not always being in focus on open.
- Fixed sketches being un-resizable using drag and drop.
- Fixed an issue where editing a sketch would reset the instance's size on the canvas.
- Fixed distance constraints not being selectable or highlighting on hover.
- Fixed arcs going in the wrong direction in sketch-generated geometry.
- Resolved an issue where titles from varset were not properly escaped.
- Fixed the "reverse axis" setting affecting G-code output; it now only affects the on-screen display.
- Addressed a potential race condition in the GRBL serial driver.
- Fixed an issue where boolean variables in device settings were not applied (
#94). - Corrected text of key in simulation mode not readable in dark mode (
#95). - Fixed popover not readable in dark mode in camera alignment dialog (
#90). - Resolved an issue where the laser dot was drawn too large.
- Fixed varset variables with type Var that are not subclassed showing as "unsupported" in the UI (
#94). - Corrected menu not closing when clicking the surface (
#86). - Fixed missing icons on some Linux distributions (
#86). - Addressed a race condition in a tasker test.
- Fixed the expression editor not closing when pressing enter.
- Fixed sketch not using input parameters (
4b6b3f0). - Fixed varset out of sync after var key rename.
- Resolved dragging sketches to surface failing.
- Fixed step list drag & drop reordering being broken.
- Fixed sketches not positioned at the center of the sketcher surface when re-editing.
- Fixed excessive linearization precision causing lag.
- Fixed pyright detecting an invalid
strargument in machine dialect definition. - Improved hit detection for the perpendicular constraint (
3f43754). - Fixed radius constraints not always recognized, leading to incorrect "constrained" status (
a77aec2). - Fixed constrained geometry not being green after loading a sketch (
cd91c0b).
Enjoy the new and improved Rayforge!
Release 0.26
Parametric 2D Sketcher
The most significant new feature in this release is the ability to create and edit precise, constraint-based 2D designs directly within Rayforge.
- Create 2D Geometry: Draw lines, circles, and arcs as the basis for your parts.
- Parametric Constraint System: Define your geometry with a comprehensive set of constraints: Coincident, Vertical, Horizontal, Tangent, Perpendicular, Point on Line/Shape, Symmetry, and dimensional constraints like Distance, Diameter, Radius, and Equal Length/Radius.
- Import/Export Sketches: Save your 2D sketches to a file and import them back into any workspace, with all parametric constraints preserved.
- Efficient Workflow: A new context-aware pie menu provides quick access to tools. Keyboard shortcuts are inspired by FreeCAD (e.g.,
Hfor Horizontal,Vfor Vertical,Tfor Tangent). - Robust Editing: Full undo/redo support saves the entire sketch state. The cursor also changes to reflect the active drawing tool.
Please consider this feature "experimental". Geometric sketch solving is difficult and complex, and even though I've written hundreds of tests you may still encounter bugs. Reporting them helps make Rayforge better for everyone!
Performance and Memory Optimizations
Significant effort went into making the app faster and more responsive, especially when working with complex vector files for CAM operations.
- Reduced Memory Usage: Significantly lowered memory consumption, making it easier to work on large projects with many objects.
- Faster Operations: Improved performance when moving, scaling, or rotating geometry.
- Responsive with Complex Files: The application now handles complex vector files (like SVGs or DXFs with many shapes) much more smoothly during toolpath generation.
Bugfixes
- Critical Fix: Fixed the 3D view and G-code output being mirrored when using a Y-down machine configuration.
- Drivers: Fixed several issues with the Smoothieware driver, improving machine compatibility.
- Imports: Fixed
.dxffiles not being visible in the import dialog (#74), improving DXF file support. - UI: The save button is now correctly disabled when the workflow is empty, preventing accidental saves of empty projects (#79).
- Numerous internal bugs in the new sketcher were also fixed during its development.
UI and Other Improvements
- The grid on the work surface now uses adaptive precision based on the zoom level, making it cleaner at a distance and more detailed up close.
- Added a machine profile for the Makera Carvera Air CNC machine (#75).
- Changed the default cut mode for vector CAM operations to 'Centerline'.
Release 0.25.1
This is a bugfix release:
- Fix: Depth engraving step result not shown in the UI.
- Fix: Debian package not published to PPA
Release 0.25
This release introduces a significant overhaul to the import workflow, adds powerful new tools for managing object geometry, and opens up the system to custom G-code dialects.
Major Focus Areas
New Import Experience & Tracing Controls
The import process has been redesigned to give users more control before an asset hits the canvas.
- Interactive Import Dialog: A new dialog now appears when importing files, allowing users to configure specific settings immediately.
- Enhanced Tracing Configuration: Image tracing settings can now be configured directly within the import dialog.
- Contour Operations: Added a threshold slider to the contour operation for fine-tuning edge detection.
- Transparent Images: Tracing logic has been improved specifically to handle transparent images better.
- DXF Layer Support: When importing DXF files, layers can now be imported as Groups, preserving the organizational structure of the original design.
Object Management: Splitting and Grouping
Managing complex designs is now easier with new commands for breaking down and organizing workpieces.
- Split Workpiece Command: Added a new "Object -> Split Workpiece" command to separate a single asset into multiple distinct parts.
- Performance Improvements: Significant performance optimizations have been made regarding the splitting of workpieces, ensuring the UI remains responsive even with complex operations.
- Group Sizing: Groups now possess a "natural size" property, and their size can be reset via the properties panel.
Custom G-Code Dialects
Rayforge is now more adaptable to different machine requirements.
- Custom Configuration: Added support for configuring custom G-code dialects, allowing users to tailor output for machines that do not strictly adhere to standard GRBL conventions (#7).
Fixes and General Improvements
Cutting and Path Logic
- Inner Edges First: The contour operation now processes inner edges before outer edges by default to prevent parts from shifting during a cut. This behavior is configurable in the settings (#69).
- Centerline Geometry: Fixed an issue where geometry was incorrectly removed from vector inputs if the cut side was not set to "centerline" (#71).
- Workpiece Scaling: Fixed a logic error where items were scaled down upon import even if they fit the machine area, specifically when the size exceeded 90% of the machine bounds.
User Interface and Stability
- UI Responsiveness: Implemented debouncing in the processing pipeline to make the interface feel snappier during edits.
- Power Display Bug: Fixed a bug where the step box would consistently display 0% power regardless of the actual setting (#72).
- Grouping Visuals: Resolved an issue where workpiece operations were not drawn correctly when grouping or ungrouping items.
- Image Masks: Imported images are now displayed with "masks", e.g. background removed depending on how they were imported.
- Notification Cleanup: Notifications are now automatically cleared when the user begins editing items on the canvas.
Release 0.24
This release focuses on significantly improving stability and performance for Windows users. It also comes with a major new feature: Recipe support allows saving operation settings, along with several other improvements.
Major Focus Areas
Improved Windows Support
This release includes numerous changes to improve the native experience on Windows platforms, focusing on speed and stability:
- Improved Startup Speed: The Windows distribution now utilizes the "onedir" installer bundle. This drastically reduces application startup time.
- Critical Crash Fixes: Resolved various issues causing application crashes on Windows systems.
- Logging Reliability: Improved logging stability by ensuring all logs are flushed and written to the session file before the application exits.
- Session Logging: Introduced a new session-based log file system for easier troubleshooting and debugging.
New Feature: Operation Recipes
Operation settings can now be saved and instantly reused as Recipes.
- A Recipe stores common configuration settings (laser head, speed, power, kerf) for a specific operation type (e.g. "Cut 6 mm Plywood").
- Presets are selected automatically when creating a new step, based on the selected operation type, machine, stock material, and thickness.
New Features and Workflow Improvements
- Reorganized Step Settings: The step settings dialog now has tabs, separating post-processing settings from other settings.
- Simplified Focusing: Added a dedicated option to toggle the laser on at low power for easy focusing of the material.
- Direct Macro Execution: Macros can now be executed directly from the main application menu (Machine -> Macros).
- Image Metadata View: A new dialog is available to display metadata associated with imported images.
- New Machine Profile: Added a dedicated profile for the xTool D1 Pro, complete with updated start G-code macros (M17 and M106).
- GRBL Port Configuration: Added support for configuring specific port numbers for Grbl connections.
Fixes and General Improvements
Stability and Core Operations
- Resolved issues that caused application exits or tracebacks under various error conditions.
- Fixed a race condition in the logging setup that could occasionally lead to duplicate log entries.
- Corrected a bug where workpieces retained stale operation settings after being cut and pasted to a new layer.
- Fixed an issue where the "Remove inner edges" function failed to execute correctly.
- Fixed multiple issues related to paths and tabs, including tracebacks when copying elements with tabs and incorrect tab placement during shrinkwrap or frame operations.
- Fixed a bug causing a segmentation fault during certain import scenarios.
User Interface and Machine Interaction
- The task bar no longer remains visible after completing import operations.
- Corrected an issue where global shortcuts (e.g., Shift+Cursor, Delete) were incorrectly captured while editing text fields within the workpiece properties panel.
- The about dialog now allows the application version number to be copied easily.
- Machine branding strings have been updated from "Xtool" to the proper "xTool" capitalization.
Release 0.23.2
This is a bugfix release:
- Fixed: Crashes on Windows due to Gtk 4 API incompatibility.
- Fixed: Crash when sending job due to not running event loop.
Release 0.23.1
This bugfix release focuses on improving stability and performance, with a particular emphasis on the Windows platform.
Windows Improvements
- Installer and Build Process: A new Windows installer has been added, and the build process has been improved by fixing path detection.
- User Experience: A bug that caused the a git command line to be briefly opened when opening the app on Windows has been fixed.
- Bug Fixes: Several Windows-specific bugs have been addressed, including fixes for the test suite.
General Fixes and Improvements
- File Handling: A bug where the "reset to natural size" buttons did not work for workpieces imported from DXF and Ruida files has been fixed. A warning for resizing on import has also been made persistent until dismissed.
- UI and UX: The UI has been improved with debouncing for some step settings, and a fix for a bug where two events in rapid succession could cause stale operations.
Code Refactoring
- RayforgeContext: Several parts were re-structured to introduce a new
RayforgeContextobject. This is in preparation of providing an official API for automation. - ArtifactStore: The
ArtifactStorehas also been refactored.
Release 0.23
I am proud to announce the biggest release of Rayforge so far! It is absolutely PACKED with new features! And of course everything is completely free and open source.
Release 0.23 is not only feature-rich, it is also MUCH faster, supports more device features, more image formats, has better installation methods, and comes with many other improvements.
New Homepage and Documentation
Rayforge now has a dedicated homepage on rayforge.org! @heathkh has created vast amounts of documentation - and with the ever growing number of features it really helps! Let us know if you find anything missing - or click the "edit this page" button in the docs to submit improvements.
New Features
- G-code Viewer & Simulator: The new G-code viewer not only allows you to inspect toolpaths but also includes a full simulation playback. You can visualize the machine's movements over time, synchronized with the G-code text. Thank you to @heathkh for this feature.
- New Operations: Three new toolpath operations are now available:
- Depth Engraver: Creates multi-pass engravings with varying depths.
- Shrink Wrap: Generates a form-fitting contour around designs.
- Frame: Adds a rectangular frame around the workpiece.
- Material Test Grid: A new tool to generate a grid of test patterns has been added. This helps you easily find the optimal power and speed settings for a new material by running a matrix of varying parameters in a single job. Thank you to @heathkh for this feature.
- Material Manager: In the settings you can now manage material libraries and materials. You can then assign each material to stock.
- Flip & Mirror Tools: New tools have been added to the toolbar to quickly flip selected objects horizontally or vertically.
- Engraving Overscan: Engraving operations now have an overscan option, which extends the laser path beyond the design's edges. This helps maintain constant velocity during engraving to improve quality and prevent burnt edges.
- Offset and Kerf Compensation: Cutting operations (Contour, Frame, Shrink Wrap) now support offsets and kerf compensation for precise dimensional control.
- Expanded Image Support: Added native importers for JPEG, full-color PNG, and BMP files.
- Jog Controls: A new dialog allows for controlling the laser position manually.
- Multi-Head Laser Support: Steps can now be assigned to a specific laser head, enabling support for machines with multiple lasers.
- Cross-Hatch Fill: The Raster Engraving operation now includes a cross-hatch fill option. Thank you to @heathkh for this contribution.
Performance
The backend was almost completely redesigned, with the primary goal of improving performance. Rayforge is now much, much faster!
- New Task Manager: The task manager was redesigned around a process pool, increasing performance for toolpath generation, with a particularly large speed-up on Windows.
- Faster Optimizer: The toolpath optimizer is significantly faster and is now enabled by default for all operations, ensuring efficient paths without manual intervention.
- Faster Data Transfer: The rendering pipeline now uses shared memory to transfer generated toolpath data to the user interface. This significantly reduces latency and improves responsiveness, especially when working with complex jobs.
- Upgraded Tracing Engine: The tracing engine was switched to
vtracer, which is faster and provides higher-quality vectorization than the previous engine. - UI Responsiveness: Improved rendering performance for operations and when dragging tab handles.
Other Improvements
- Stock Handling Overhaul: The management of stock material has been completely redesigned. It is now possible to define and assign different stock materials to individual layers within a single job.
- Machining Time Estimate: The estimated time for the entire job is now displayed in the status bar, providing a quick overview of the expected machining duration. During job execution, progress and ETA are also indicated.
- New Preferences: Users can now set a preferred length unit (e.g., mm or inches) in the application preferences and define machine acceleration values in machine profiles.
- UI Polish: List widgets throughout the application, such as in the machine settings dialog, have been restyled for better clarity and usability.
- Tab Processing: The method for applying tabs has been rewritten to be path-aware. This prevents unrelated cutting paths that happen to pass through a tab's area from being incorrectly removed.
- Vector Imports: Imported vectors now have invisible micro-gaps automatically closed to prevent errors from open paths.
- Snap to Grid: Objects can now be snapped to the grid in the canvas by holding the
Ctrlkey while moving or rotating. - Rasterizer Controls: The rasterizer now has an adjustable threshold setting, and all its settings support undo/redo.
- Simplified Operations: The "Edge" and "Outline" producers have been merged into a single "Contour" operation.
- French translation: @yoyey provided a French translation. Rayforge is now avaliable in English, French, German, Spanish, and Brazilian Portuguese!
- Serial Connection: Added support for higher baud rates, thanks to a contribution from @loneregister.
- Streaming support: GRBL's streaming protocol is now supported. This means much higher performance for jobs that execute many small commands on a machine, such as the new depth engraving feature.
Bug Fixes
- Package Installation: Fixed an issue where dependencies were not correctly installed when installing Rayforge with
pip. - 3D View: Fixed several issues where the 3D view would not update correctly, such as when toggling step visibility or when a job was updated after the preview was already open.
- Contour Operation: The Contour (formerly Edge) producer will now produce a path even if offsetting fails due to open geometry.
- UI Stability: Fixed an issue that could cause a traceback on the command line when zooming very far into a large workpiece.
- Importer Alignment: Resolved various alignment issues across all importers by normalizing vectors to a unified coordinate system.
- PDF Importer: Fixed a bug where incorrect cropping logic could cause the clipping direction to be wrong.
- SVG Importer: Corrected vector alignment problems during SVG import.
Installation
- Build System: Numerous updates to packaging for Debian and Windows were made.
- Flatpak: Rayforge now be installed unsing Flatpak! Thanks to @fllmn for creating the package. The package is available on Flathub.
The other installation methods (Apt for Ubuntu 24.04 and derivatives, EXE for Windows, Snap, Python Wheel) are still available, too!
Development & Internal Changes
- Pipeline Refactoring: The processing pipeline has been completely refactored.
- Code Organization: The
importerandtracingmodules have been improved and reorganized. - Geometry Class: Introduced a new internal
Geometryclass to centralize geometric calculations, using thepyclipperlibrary to provide the new offsetting capabilities.
Release 0.22
[NOTE: This is only created as a documentation. The release was published on September 20th, but due to an issue with MingW at the time this release was never made for Windows, and these release docs were not created. The next release will be available for Windows again!]
This is a release with tons of new features and performance improvements. Highlights: Support for holding tabs, support for G-code macros, and direct vector import from SVG files. But much more was done.
New Features
Tabbing System
A new system for adding tabs to hold parts in place during cutting has been implemented.
- Flexible Configuration: Tabs can be enabled and configured globally for a workpiece or overridden for specific cutting steps.
- Automatic Placement: Automatically add a set number of tabs or place them at a specific distance.
- Manual Control: Add and remove tabs individually via the context menu.
- Interactive Editing: Tab handles can be dragged to new positions directly on the workpiece whenever they are visible.
- Smart Application: Tabs are correctly applied to vector cutting operations and do not affect raster jobs.
G-Code Macros and Hooks
Support for user-defined G-code macros and G-code hooks has been added. This allows for executing custom G-code at different stages of a job, such as at the job start or on a layer change. The G-code templates also support variable substitution for dynamic commands.
Direct SVG Vector Import
SVG files are now optionally imported as true vector geometry instead of being rasterized—you are asked during import. This improves import quality, processing speed, and the precision of resulting toolpaths.
Improvements
Performance
Significant performance optimizations have been made in several areas:
- Work surface panning is smoother.
- Grouping and ungrouping complex objects is substantially faster.
- Other performance improvements were also made.
UI & UX
- The main menu and toolbar have been reorganized, and many new keyboard shortcuts have been added for common actions. You can find them all in the menu.
- A global preference for UI speed units (e.g.,
mm/minvsmm/s) is now available. - The step settings dialog can now be closed with
EscorCtrl+W. - Position reset buttons have been added to the workpiece properties panel.
- A workpiece that is too large to fit on the surface is automatically scaled down on import.
Importers & Tools
- DXF and Ruida Importers: When importing DXF or Ruida files, objects are now automatically pre-split into component parts and grouped together. This allows the user to simply ungroup the import to manipulate individual shapes if needed.
- Auto-Layouter: The auto-layouter now correctly handles groups, runs faster, and a 90° rotation bug has been fixed. The biggest improvement is that it now respects stock: You can define a stock area, and the layouter will place parts only on the stock.
- PDF Auto-Cropping: The PDF importer now also auto-crops imported pages to their content, in line with all other importers.
Bug Fixes
Select All(Ctrl+A) now correctly selects groups.- For serial drivers pointing to a non-existent port, the main window no longer shows the misleading error "incorrect configuration". This is because the port may just not exist due to the laser being shut off.
- Fixed a task manager warning that could occur on shutdown.
Internal Changes & Developer Notes
This release includes a major internal refactoring aimed at improving code structure, testability, and maintainability.
- Lots of refactoring accompanied by a significant increase in unit test coverage.
- The build system can now correctly find the GIR path from pkg-config, thanks to a community contribution from Github user fllmn.