rayforge 1.3.2__tar.gz → 1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rayforge-1.4/PKG-INFO +115 -0
- rayforge-1.4/data/org.rayforge.rayforge.metainfo.xml +531 -0
- rayforge-1.4/rayforge/addon_mgr/addon_manager.py +1733 -0
- rayforge-1.4/rayforge/addon_mgr/lazy_loader.py +148 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/ai_workpiece_generator/generator.py +104 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/ai_workpiece_generator/widgets/dialog.py +281 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/ai_workpiece_generator.pot +64 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/de/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/de/LC_MESSAGES/ai_workpiece_generator.po +70 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/en/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/en/LC_MESSAGES/ai_workpiece_generator.po +67 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/es/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/es/LC_MESSAGES/ai_workpiece_generator.po +69 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/fr/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/fr/LC_MESSAGES/ai_workpiece_generator.po +69 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/pt/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/pt/LC_MESSAGES/ai_workpiece_generator.po +68 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/uk/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/uk/LC_MESSAGES/ai_workpiece_generator.po +69 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/zh_CN/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/zh_CN/LC_MESSAGES/ai_workpiece_generator.po +63 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/backend.py +89 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/commands/material_test_cmd.py +190 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/producers/material_test_grid_producer.py +481 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/steps/contour_step.py +78 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/steps/frame_step.py +72 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/steps/shrinkwrap_step.py +75 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-laser/tests/steps/test_contour_step.py +192 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/de/LC_MESSAGES/post_processors.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/de/LC_MESSAGES/post_processors.po +313 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/en/LC_MESSAGES/post_processors.po +303 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/es/LC_MESSAGES/post_processors.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/es/LC_MESSAGES/post_processors.po +311 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/fr/LC_MESSAGES/post_processors.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/fr/LC_MESSAGES/post_processors.po +315 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/post_processors.pot +303 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/pt/LC_MESSAGES/post_processors.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/pt/LC_MESSAGES/post_processors.po +309 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/uk/LC_MESSAGES/post_processors.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/uk/LC_MESSAGES/post_processors.po +310 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/zh_CN/LC_MESSAGES/post_processors.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/locale/zh_CN/LC_MESSAGES/post_processors.po +302 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/post_processors/backend.py +39 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/post_processors/transformers/__init__.py +32 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/post_processors/transformers/merge_lines_transformer.py +473 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/post_processors/widgets/__init__.py +27 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/post_processors/widgets/merge_lines_widget.py +104 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-post/tests/transformers/test_merge_lines_transformer.py +252 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/de/LC_MESSAGES/sketcher.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/de/LC_MESSAGES/sketcher.po +678 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/en/LC_MESSAGES/sketcher.po +678 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/es/LC_MESSAGES/sketcher.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/es/LC_MESSAGES/sketcher.po +678 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/fr/LC_MESSAGES/sketcher.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/fr/LC_MESSAGES/sketcher.po +681 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/pt/LC_MESSAGES/sketcher.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/pt/LC_MESSAGES/sketcher.po +678 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/sketcher.pot +697 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/uk/LC_MESSAGES/sketcher.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/uk/LC_MESSAGES/sketcher.po +679 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/zh_CN/LC_MESSAGES/sketcher.mo +0 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/locale/zh_CN/LC_MESSAGES/sketcher.po +678 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/__init__.py +93 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/base.py +205 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/bezier.py +463 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/ellipse.py +298 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/fill.py +72 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/items.py +250 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/point.py +228 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/distance.py +299 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/equal_distance.py +234 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/equal_length.py +329 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/symmetry.py +288 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/entities/__init__.py +19 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/entities/ellipse.py +234 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/entities/entity.py +184 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/entities/line.py +131 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/registry.py +252 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/sketch.py +1490 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/snap/__init__.py +24 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/snap/engine.py +235 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/snap/producers/__init__.py +20 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/snap/producers/centers.py +97 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/snap/producers/entity_points.py +60 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/snap/producers/equidistant.py +168 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/snap/producers/intersections.py +279 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/snap/producers/midpoints.py +77 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/snap/producers/on_entity.py +161 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/snap/spatial.py +90 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/snap/types.py +183 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/image/importer.py +189 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/image/renderer.py +333 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/hittest.py +254 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/renderer.py +1110 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/sketchcanvas.py +465 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/sketchelement.py +402 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/studio.py +546 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/__init__.py +123 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/arc_tool.py +336 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/base.py +160 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/circle_tool.py +196 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/coincident_constraint_tool.py +97 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/fill_tool.py +87 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/path_tool.py +624 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/rectangle_tool.py +303 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/select_tool.py +888 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/snap_mixin.py +512 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_ellipse_cmd.py +451 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_fill_cmd.py +163 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_equal_length_constraint.py +504 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/entities/test_ellipse_entity.py +377 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/snap/producers/test_producer_centers.py +361 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/snap/producers/test_producer_entity_points.py +328 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/snap/producers/test_producer_equidistant.py +476 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/snap/producers/test_producer_intersections.py +538 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/snap/producers/test_producer_midpoints.py +338 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/snap/producers/test_producer_on_entity.py +434 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/snap/test_snap_engine.py +399 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/snap/test_snap_spatial.py +377 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/snap/test_snap_types.py +289 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/test_sketch_fill_methods.py +211 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/test_sketcher_sketch.py +1248 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/image/test_sketch_importer.py +418 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_arc_tool.py +160 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_circle_tool.py +634 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_path_tool.py +312 -0
- rayforge-1.4/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_rectangle_tool.py +245 -0
- rayforge-1.4/rayforge/camera/calibration/__init__.py +10 -0
- rayforge-1.4/rayforge/camera/calibration/calibrator.py +240 -0
- rayforge-1.4/rayforge/camera/calibration/charuco.py +208 -0
- rayforge-1.4/rayforge/camera/calibration/result.py +135 -0
- rayforge-1.4/rayforge/camera/controller.py +728 -0
- rayforge-1.4/rayforge/camera/models/camera.py +575 -0
- rayforge-1.4/rayforge/core/ai/__init__.py +21 -0
- rayforge-1.4/rayforge/core/ai/ai_service.py +240 -0
- rayforge-1.4/rayforge/core/ai/openai_provider.py +159 -0
- rayforge-1.4/rayforge/core/ai/provider.py +152 -0
- rayforge-1.4/rayforge/core/asset.py +103 -0
- rayforge-1.4/rayforge/core/config.py +284 -0
- rayforge-1.4/rayforge/core/geo/contours.py +465 -0
- rayforge-1.4/rayforge/core/geo/polygon.py +869 -0
- rayforge-1.4/rayforge/core/geo/transform.py +632 -0
- rayforge-1.4/rayforge/core/geometry_provider.py +65 -0
- rayforge-1.4/rayforge/core/layer.py +294 -0
- rayforge-1.4/rayforge/core/ops/__init__.py +62 -0
- rayforge-1.4/rayforge/core/ops/commands.py +542 -0
- rayforge-1.4/rayforge/core/ops/container.py +1616 -0
- rayforge-1.4/rayforge/core/stock.py +275 -0
- rayforge-1.4/rayforge/core/vectorization_spec.py +100 -0
- rayforge-1.4/rayforge/core/workflow.py +140 -0
- rayforge-1.4/rayforge/core/workpiece.py +1487 -0
- rayforge-1.4/rayforge/doceditor/editor.py +538 -0
- rayforge-1.4/rayforge/doceditor/layer_cmd.py +251 -0
- rayforge-1.4/rayforge/image/material_test_grid_renderer.py +167 -0
- rayforge-1.4/rayforge/image/pdf/__init__.py +5 -0
- rayforge-1.4/rayforge/image/pdf/importer.py +85 -0
- rayforge-1.4/rayforge/image/pdf/pdf_trace.py +231 -0
- rayforge-1.4/rayforge/image/pdf/pdf_vector.py +701 -0
- rayforge-1.4/rayforge/image/pdf/renderer.py +159 -0
- rayforge-1.4/rayforge/image/structures.py +361 -0
- rayforge-1.4/rayforge/image/svg/svg_base.py +514 -0
- rayforge-1.4/rayforge/image/svg/svgutil.py +350 -0
- rayforge-1.4/rayforge/locale/de/LC_MESSAGES/rayforge.mo +0 -0
- rayforge-1.4/rayforge/locale/es/LC_MESSAGES/rayforge.mo +0 -0
- rayforge-1.4/rayforge/locale/fr/LC_MESSAGES/rayforge.mo +0 -0
- rayforge-1.4/rayforge/locale/pt/LC_MESSAGES/rayforge.mo +0 -0
- rayforge-1.4/rayforge/locale/uk/LC_MESSAGES/rayforge.mo +0 -0
- rayforge-1.4/rayforge/locale/zh_CN/LC_MESSAGES/rayforge.mo +0 -0
- rayforge-1.4/rayforge/machine/cmd.py +418 -0
- rayforge-1.4/rayforge/machine/driver/driver.py +542 -0
- rayforge-1.4/rayforge/machine/driver/dummy.py +255 -0
- rayforge-1.4/rayforge/machine/driver/grbl.py +806 -0
- rayforge-1.4/rayforge/machine/driver/grbl_serial.py +1296 -0
- rayforge-1.4/rayforge/machine/driver/grbl_util.py +989 -0
- rayforge-1.4/rayforge/machine/driver/smoothie.py +479 -0
- rayforge-1.4/rayforge/machine/models/controller.py +641 -0
- rayforge-1.4/rayforge/machine/models/dialect/base.py +228 -0
- rayforge-1.4/rayforge/machine/models/dialect/grbl.py +36 -0
- rayforge-1.4/rayforge/machine/models/dialect/grbl_dynamic.py +36 -0
- rayforge-1.4/rayforge/machine/models/dialect/mach4_m67.py +37 -0
- rayforge-1.4/rayforge/machine/models/dialect/marlin.py +35 -0
- rayforge-1.4/rayforge/machine/models/dialect/smoothieware.py +33 -0
- rayforge-1.4/rayforge/machine/models/dialect_manager.py +157 -0
- rayforge-1.4/rayforge/machine/models/laser.py +164 -0
- rayforge-1.4/rayforge/machine/models/machine.py +1337 -0
- rayforge-1.4/rayforge/machine/models/manager.py +243 -0
- rayforge-1.4/rayforge/machine/models/profile.py +355 -0
- rayforge-1.4/rayforge/machine/models/rotary_module.py +132 -0
- rayforge-1.4/rayforge/pipeline/coordspace.py +751 -0
- rayforge-1.4/rayforge/pipeline/encoder/gcode.py +613 -0
- rayforge-1.4/rayforge/pipeline/encoder/vertexencoder.py +288 -0
- rayforge-1.4/rayforge/pipeline/pipeline.py +1297 -0
- rayforge-1.4/rayforge/pipeline/stage/step_compute.py +307 -0
- rayforge-1.4/rayforge/resources/icons/image-x-generic-symbolic.svg +43 -0
- rayforge-1.4/rayforge/resources/icons/rotary-symbolic.svg +76 -0
- rayforge-1.4/rayforge/resources/icons/terminal-symbolic.svg +39 -0
- rayforge-1.4/rayforge/shared/gcodeedit/highlighter.py +194 -0
- rayforge-1.4/rayforge/shared/util/versioning.py +235 -0
- rayforge-1.4/rayforge/ui_gtk/actions.py +741 -0
- rayforge-1.4/rayforge/ui_gtk/addon_manager/addon_dialog.py +282 -0
- rayforge-1.4/rayforge/ui_gtk/addon_manager/addon_list.py +495 -0
- rayforge-1.4/rayforge/ui_gtk/camera/calibration_wizard.py +714 -0
- rayforge-1.4/rayforge/ui_gtk/camera/camera_preferences_page.py +379 -0
- rayforge-1.4/rayforge/ui_gtk/camera/display_widget.py +164 -0
- rayforge-1.4/rayforge/ui_gtk/camera/image_settings_dialog.py +329 -0
- rayforge-1.4/rayforge/ui_gtk/canvas/axis.py +544 -0
- rayforge-1.4/rayforge/ui_gtk/canvas/worldsurface.py +423 -0
- rayforge-1.4/rayforge/ui_gtk/canvas2d/elements/axis_extent_frame.py +87 -0
- rayforge-1.4/rayforge/ui_gtk/canvas2d/elements/rotary_surface.py +97 -0
- rayforge-1.4/rayforge/ui_gtk/canvas2d/surface.py +1369 -0
- rayforge-1.4/rayforge/ui_gtk/canvas3d/axis_renderer_3d.py +492 -0
- rayforge-1.4/rayforge/ui_gtk/canvas3d/canvas3d.py +1262 -0
- rayforge-1.4/rayforge/ui_gtk/canvas3d/cylinder_renderer.py +121 -0
- rayforge-1.4/rayforge/ui_gtk/canvas3d/scene_assembler.py +84 -0
- rayforge-1.4/rayforge/ui_gtk/canvas3d/texture_renderer.py +546 -0
- rayforge-1.4/rayforge/ui_gtk/doceditor/asset_list_view.py +240 -0
- rayforge-1.4/rayforge/ui_gtk/doceditor/edit_recipe_dialog.py +342 -0
- rayforge-1.4/rayforge/ui_gtk/doceditor/import_dialog.py +601 -0
- rayforge-1.4/rayforge/ui_gtk/doceditor/layer_list.py +156 -0
- rayforge-1.4/rayforge/ui_gtk/doceditor/layer_settings_dialog.py +131 -0
- rayforge-1.4/rayforge/ui_gtk/doceditor/layer_view.py +276 -0
- rayforge-1.4/rayforge/ui_gtk/doceditor/material_library_list.py +324 -0
- rayforge-1.4/rayforge/ui_gtk/doceditor/material_list.py +313 -0
- rayforge-1.4/rayforge/ui_gtk/doceditor/property_providers/transform.py +601 -0
- rayforge-1.4/rayforge/ui_gtk/doceditor/recipe_list.py +214 -0
- rayforge-1.4/rayforge/ui_gtk/doceditor/workflow_view.py +197 -0
- rayforge-1.4/rayforge/ui_gtk/machine/control_panel.py +535 -0
- rayforge-1.4/rayforge/ui_gtk/machine/device_settings_page.py +404 -0
- rayforge-1.4/rayforge/ui_gtk/machine/dialect_editor.py +301 -0
- rayforge-1.4/rayforge/ui_gtk/machine/dialect_list.py +213 -0
- rayforge-1.4/rayforge/ui_gtk/machine/general_preferences_page.py +329 -0
- rayforge-1.4/rayforge/ui_gtk/machine/hardware_page.py +416 -0
- rayforge-1.4/rayforge/ui_gtk/machine/laser_preferences_page.py +627 -0
- rayforge-1.4/rayforge/ui_gtk/machine/macro_list.py +145 -0
- rayforge-1.4/rayforge/ui_gtk/machine/rotary_module_page.py +531 -0
- rayforge-1.4/rayforge/ui_gtk/machine/settings_dialog.py +259 -0
- rayforge-1.4/rayforge/ui_gtk/machine/template_selector.py +99 -0
- rayforge-1.4/rayforge/ui_gtk/main_menu.py +280 -0
- rayforge-1.4/rayforge/ui_gtk/mainwindow.py +2155 -0
- rayforge-1.4/rayforge/ui_gtk/project_cmd.py +296 -0
- rayforge-1.4/rayforge/ui_gtk/settings/ai_settings_page.py +562 -0
- rayforge-1.4/rayforge/ui_gtk/settings/machine_settings_page.py +234 -0
- rayforge-1.4/rayforge/ui_gtk/shared/expander.py +167 -0
- rayforge-1.4/rayforge/ui_gtk/shared/icon_tab_widget.py +85 -0
- rayforge-1.4/rayforge/ui_gtk/toolbar.py +395 -0
- rayforge-1.4/rayforge/ui_gtk/varset/varsetwidget.py +287 -0
- rayforge-1.4/rayforge/ui_gtk/view_mode_cmd.py +110 -0
- rayforge-1.4/rayforge/worker_init.py +171 -0
- rayforge-1.4/rayforge.egg-info/PKG-INFO +115 -0
- rayforge-1.4/rayforge.egg-info/SOURCES.txt +1103 -0
- rayforge-1.4/rayforge.egg-info/requires.txt +31 -0
- rayforge-1.4/requirements.txt +24 -0
- rayforge-1.3.2/PKG-INFO +0 -114
- rayforge-1.3.2/data/org.rayforge.rayforge.metainfo.xml +0 -460
- rayforge-1.3.2/rayforge/addon_mgr/addon_manager.py +0 -1474
- rayforge-1.3.2/rayforge/addon_mgr/lazy_loader.py +0 -137
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/ai_workpiece_generator/generator.py +0 -122
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/ai_workpiece_generator/widgets/dialog.py +0 -284
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/ai_workpiece_generator.pot +0 -101
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/de/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/de/LC_MESSAGES/ai_workpiece_generator.po +0 -109
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/en/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/en/LC_MESSAGES/ai_workpiece_generator.po +0 -104
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/es/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/es/LC_MESSAGES/ai_workpiece_generator.po +0 -107
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/fr/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/fr/LC_MESSAGES/ai_workpiece_generator.po +0 -106
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/pt/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/pt/LC_MESSAGES/ai_workpiece_generator.po +0 -105
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/uk/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/uk/LC_MESSAGES/ai_workpiece_generator.po +0 -106
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/zh_CN/LC_MESSAGES/ai_workpiece_generator.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-ai-workpiece/locale/zh_CN/LC_MESSAGES/ai_workpiece_generator.po +0 -100
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/backend.py +0 -84
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/commands/material_test_cmd.py +0 -165
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/producers/material_test_grid_producer.py +0 -478
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/steps/contour_step.py +0 -73
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/steps/frame_step.py +0 -67
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/steps/shrinkwrap_step.py +0 -70
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-laser/tests/steps/test_contour_step.py +0 -191
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/de/LC_MESSAGES/post_processors.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/de/LC_MESSAGES/post_processors.po +0 -278
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/en/LC_MESSAGES/post_processors.po +0 -271
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/es/LC_MESSAGES/post_processors.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/es/LC_MESSAGES/post_processors.po +0 -279
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/fr/LC_MESSAGES/post_processors.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/fr/LC_MESSAGES/post_processors.po +0 -280
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/post_processors.pot +0 -271
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/pt/LC_MESSAGES/post_processors.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/pt/LC_MESSAGES/post_processors.po +0 -277
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/uk/LC_MESSAGES/post_processors.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/uk/LC_MESSAGES/post_processors.po +0 -277
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/zh_CN/LC_MESSAGES/post_processors.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/locale/zh_CN/LC_MESSAGES/post_processors.po +0 -270
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/post_processors/backend.py +0 -37
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/post_processors/transformers/__init__.py +0 -30
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-post/post_processors/widgets/__init__.py +0 -24
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/de/LC_MESSAGES/sketcher.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/de/LC_MESSAGES/sketcher.po +0 -655
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/en/LC_MESSAGES/sketcher.po +0 -655
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/es/LC_MESSAGES/sketcher.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/es/LC_MESSAGES/sketcher.po +0 -655
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/fr/LC_MESSAGES/sketcher.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/fr/LC_MESSAGES/sketcher.po +0 -658
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/pt/LC_MESSAGES/sketcher.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/pt/LC_MESSAGES/sketcher.po +0 -655
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/sketcher.pot +0 -674
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/uk/LC_MESSAGES/sketcher.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/uk/LC_MESSAGES/sketcher.po +0 -656
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/zh_CN/LC_MESSAGES/sketcher.mo +0 -0
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/locale/zh_CN/LC_MESSAGES/sketcher.po +0 -655
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/__init__.py +0 -90
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/base.py +0 -192
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/bezier.py +0 -461
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/fill.py +0 -56
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/items.py +0 -245
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/point.py +0 -215
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/distance.py +0 -286
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/equal_distance.py +0 -148
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/equal_length.py +0 -294
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/symmetry.py +0 -282
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/entities/__init__.py +0 -17
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/entities/entity.py +0 -160
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/entities/line.py +0 -129
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/registry.py +0 -216
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/sketch.py +0 -1394
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/image/importer.py +0 -189
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/image/renderer.py +0 -229
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/hittest.py +0 -250
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/renderer.py +0 -901
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/sketchcanvas.py +0 -459
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/sketchelement.py +0 -379
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/studio.py +0 -467
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/__init__.py +0 -121
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/arc_tool.py +0 -299
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/base.py +0 -151
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/circle_tool.py +0 -235
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/coincident_constraint_tool.py +0 -97
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/fill_tool.py +0 -54
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/path_tool.py +0 -568
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/rectangle_tool.py +0 -268
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/select_tool.py +0 -812
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_fill_cmd.py +0 -163
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_equal_length_constraint.py +0 -301
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/test_sketch_fill_methods.py +0 -211
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/test_sketcher_sketch.py +0 -1248
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/tests/image/test_sketch_importer.py +0 -406
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_arc_tool.py +0 -148
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_circle_tool.py +0 -164
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_path_tool.py +0 -301
- rayforge-1.3.2/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_rectangle_tool.py +0 -207
- rayforge-1.3.2/rayforge/camera/controller.py +0 -718
- rayforge-1.3.2/rayforge/camera/models/camera.py +0 -395
- rayforge-1.3.2/rayforge/core/ai/__init__.py +0 -20
- rayforge-1.3.2/rayforge/core/ai/ai_service.py +0 -246
- rayforge-1.3.2/rayforge/core/ai/openai_provider.py +0 -132
- rayforge-1.3.2/rayforge/core/ai/provider.py +0 -106
- rayforge-1.3.2/rayforge/core/asset.py +0 -103
- rayforge-1.3.2/rayforge/core/config.py +0 -294
- rayforge-1.3.2/rayforge/core/geo/contours.py +0 -443
- rayforge-1.3.2/rayforge/core/geo/polygon.py +0 -828
- rayforge-1.3.2/rayforge/core/geo/transform.py +0 -621
- rayforge-1.3.2/rayforge/core/geometry_provider.py +0 -64
- rayforge-1.3.2/rayforge/core/layer.py +0 -254
- rayforge-1.3.2/rayforge/core/ops/__init__.py +0 -60
- rayforge-1.3.2/rayforge/core/ops/commands.py +0 -530
- rayforge-1.3.2/rayforge/core/ops/container.py +0 -1610
- rayforge-1.3.2/rayforge/core/stock.py +0 -275
- rayforge-1.3.2/rayforge/core/vectorization_spec.py +0 -94
- rayforge-1.3.2/rayforge/core/workflow.py +0 -134
- rayforge-1.3.2/rayforge/core/workpiece.py +0 -1489
- rayforge-1.3.2/rayforge/doceditor/editor.py +0 -476
- rayforge-1.3.2/rayforge/doceditor/layer_cmd.py +0 -249
- rayforge-1.3.2/rayforge/image/material_test_grid_renderer.py +0 -168
- rayforge-1.3.2/rayforge/image/pdf/__init__.py +0 -3
- rayforge-1.3.2/rayforge/image/pdf/importer.py +0 -262
- rayforge-1.3.2/rayforge/image/pdf/renderer.py +0 -119
- rayforge-1.3.2/rayforge/image/structures.py +0 -339
- rayforge-1.3.2/rayforge/image/svg/svg_base.py +0 -501
- rayforge-1.3.2/rayforge/image/svg/svgutil.py +0 -324
- rayforge-1.3.2/rayforge/locale/de/LC_MESSAGES/rayforge.mo +0 -0
- rayforge-1.3.2/rayforge/locale/es/LC_MESSAGES/rayforge.mo +0 -0
- rayforge-1.3.2/rayforge/locale/fr/LC_MESSAGES/rayforge.mo +0 -0
- rayforge-1.3.2/rayforge/locale/pt/LC_MESSAGES/rayforge.mo +0 -0
- rayforge-1.3.2/rayforge/locale/uk/LC_MESSAGES/rayforge.mo +0 -0
- rayforge-1.3.2/rayforge/locale/zh_CN/LC_MESSAGES/rayforge.mo +0 -0
- rayforge-1.3.2/rayforge/machine/cmd.py +0 -381
- rayforge-1.3.2/rayforge/machine/driver/driver.py +0 -518
- rayforge-1.3.2/rayforge/machine/driver/dummy.py +0 -242
- rayforge-1.3.2/rayforge/machine/driver/grbl.py +0 -788
- rayforge-1.3.2/rayforge/machine/driver/grbl_serial.py +0 -1239
- rayforge-1.3.2/rayforge/machine/driver/grbl_util.py +0 -965
- rayforge-1.3.2/rayforge/machine/driver/smoothie.py +0 -461
- rayforge-1.3.2/rayforge/machine/models/controller.py +0 -619
- rayforge-1.3.2/rayforge/machine/models/dialect/base.py +0 -224
- rayforge-1.3.2/rayforge/machine/models/dialect/grbl.py +0 -35
- rayforge-1.3.2/rayforge/machine/models/dialect/grbl_dynamic.py +0 -35
- rayforge-1.3.2/rayforge/machine/models/dialect/mach4_m67.py +0 -36
- rayforge-1.3.2/rayforge/machine/models/dialect/marlin.py +0 -34
- rayforge-1.3.2/rayforge/machine/models/dialect/smoothieware.py +0 -32
- rayforge-1.3.2/rayforge/machine/models/dialect_manager.py +0 -119
- rayforge-1.3.2/rayforge/machine/models/laser.py +0 -136
- rayforge-1.3.2/rayforge/machine/models/machine.py +0 -1314
- rayforge-1.3.2/rayforge/machine/models/manager.py +0 -235
- rayforge-1.3.2/rayforge/machine/models/profile.py +0 -327
- rayforge-1.3.2/rayforge/pipeline/coordspace.py +0 -694
- rayforge-1.3.2/rayforge/pipeline/encoder/gcode.py +0 -558
- rayforge-1.3.2/rayforge/pipeline/encoder/vertexencoder.py +0 -174
- rayforge-1.3.2/rayforge/pipeline/pipeline.py +0 -1285
- rayforge-1.3.2/rayforge/pipeline/stage/step_compute.py +0 -293
- rayforge-1.3.2/rayforge/pipeline/steps/__init__.py +0 -7
- rayforge-1.3.2/rayforge/shared/gcodeedit/highlighter.py +0 -194
- rayforge-1.3.2/rayforge/shared/util/versioning.py +0 -234
- rayforge-1.3.2/rayforge/ui_gtk/actions.py +0 -747
- rayforge-1.3.2/rayforge/ui_gtk/addon_manager/addon_dialog.py +0 -268
- rayforge-1.3.2/rayforge/ui_gtk/addon_manager/addon_list.py +0 -481
- rayforge-1.3.2/rayforge/ui_gtk/camera/camera_preferences_page.py +0 -379
- rayforge-1.3.2/rayforge/ui_gtk/camera/display_widget.py +0 -164
- rayforge-1.3.2/rayforge/ui_gtk/camera/image_settings_dialog.py +0 -313
- rayforge-1.3.2/rayforge/ui_gtk/canvas/axis.py +0 -538
- rayforge-1.3.2/rayforge/ui_gtk/canvas/worldsurface.py +0 -418
- rayforge-1.3.2/rayforge/ui_gtk/canvas2d/elements/axis_extent_frame.py +0 -88
- rayforge-1.3.2/rayforge/ui_gtk/canvas2d/surface.py +0 -1327
- rayforge-1.3.2/rayforge/ui_gtk/canvas3d/axis_renderer_3d.py +0 -490
- rayforge-1.3.2/rayforge/ui_gtk/canvas3d/canvas3d.py +0 -1053
- rayforge-1.3.2/rayforge/ui_gtk/canvas3d/scene_assembler.py +0 -76
- rayforge-1.3.2/rayforge/ui_gtk/canvas3d/texture_renderer.py +0 -282
- rayforge-1.3.2/rayforge/ui_gtk/doceditor/asset_list_view.py +0 -265
- rayforge-1.3.2/rayforge/ui_gtk/doceditor/edit_recipe_dialog.py +0 -342
- rayforge-1.3.2/rayforge/ui_gtk/doceditor/import_dialog.py +0 -575
- rayforge-1.3.2/rayforge/ui_gtk/doceditor/layer_list.py +0 -184
- rayforge-1.3.2/rayforge/ui_gtk/doceditor/layer_view.py +0 -257
- rayforge-1.3.2/rayforge/ui_gtk/doceditor/material_library_list.py +0 -326
- rayforge-1.3.2/rayforge/ui_gtk/doceditor/material_list.py +0 -313
- rayforge-1.3.2/rayforge/ui_gtk/doceditor/property_providers/transform.py +0 -601
- rayforge-1.3.2/rayforge/ui_gtk/doceditor/recipe_list.py +0 -214
- rayforge-1.3.2/rayforge/ui_gtk/doceditor/workflow_view.py +0 -226
- rayforge-1.3.2/rayforge/ui_gtk/machine/control_panel.py +0 -526
- rayforge-1.3.2/rayforge/ui_gtk/machine/device_settings_page.py +0 -404
- rayforge-1.3.2/rayforge/ui_gtk/machine/dialect_editor.py +0 -248
- rayforge-1.3.2/rayforge/ui_gtk/machine/dialect_list.py +0 -250
- rayforge-1.3.2/rayforge/ui_gtk/machine/general_preferences_page.py +0 -329
- rayforge-1.3.2/rayforge/ui_gtk/machine/hardware_page.py +0 -415
- rayforge-1.3.2/rayforge/ui_gtk/machine/laser_preferences_page.py +0 -512
- rayforge-1.3.2/rayforge/ui_gtk/machine/macro_list.py +0 -145
- rayforge-1.3.2/rayforge/ui_gtk/machine/settings_dialog.py +0 -249
- rayforge-1.3.2/rayforge/ui_gtk/main_menu.py +0 -283
- rayforge-1.3.2/rayforge/ui_gtk/mainwindow.py +0 -2238
- rayforge-1.3.2/rayforge/ui_gtk/project_cmd.py +0 -283
- rayforge-1.3.2/rayforge/ui_gtk/settings/ai_settings_page.py +0 -562
- rayforge-1.3.2/rayforge/ui_gtk/settings/machine_settings_page.py +0 -234
- rayforge-1.3.2/rayforge/ui_gtk/shared/expander.py +0 -142
- rayforge-1.3.2/rayforge/ui_gtk/toolbar.py +0 -403
- rayforge-1.3.2/rayforge/ui_gtk/varset/varsetwidget.py +0 -287
- rayforge-1.3.2/rayforge/ui_gtk/view_mode_cmd.py +0 -105
- rayforge-1.3.2/rayforge/worker_init.py +0 -169
- rayforge-1.3.2/rayforge.egg-info/PKG-INFO +0 -114
- rayforge-1.3.2/rayforge.egg-info/SOURCES.txt +0 -1059
- rayforge-1.3.2/rayforge.egg-info/requires.txt +0 -30
- rayforge-1.3.2/requirements.txt +0 -23
- {rayforge-1.3.2 → rayforge-1.4}/LICENSE +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/MANIFEST.in +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/README.md +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/data/org.rayforge.rayforge.desktop +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/data/org.rayforge.rayforge.xml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/pyproject.toml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/addon_mgr/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/addon_mgr/addon.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/addon_mgr/manifest.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/addon_mgr/update_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/app.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-ai-workpiece/ai_workpiece_generator/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-ai-workpiece/ai_workpiece_generator/backend.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-ai-workpiece/ai_workpiece_generator/controller.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-ai-workpiece/ai_workpiece_generator/frontend.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-ai-workpiece/ai_workpiece_generator/widgets/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-ai-workpiece/rayforge-addon.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/commands/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/frontend.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/producers/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/producers/contour_producer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/producers/frame_producer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/producers/raster_producer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/producers/raster_util.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/producers/shrinkwrap_producer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/steps/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/steps/material_test.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/steps/raster_step.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/widgets/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/widgets/contour_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/widgets/frame_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/widgets/material_test_grid_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/widgets/raster_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/laser_essentials/widgets/shrinkwrap_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/de/LC_MESSAGES/laser_essentials.mo +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/de/LC_MESSAGES/laser_essentials.po +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/en/LC_MESSAGES/laser_essentials.mo +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/en/LC_MESSAGES/laser_essentials.po +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/es/LC_MESSAGES/laser_essentials.mo +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/es/LC_MESSAGES/laser_essentials.po +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/fr/LC_MESSAGES/laser_essentials.mo +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/fr/LC_MESSAGES/laser_essentials.po +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/laser_essentials.pot +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/pt/LC_MESSAGES/laser_essentials.mo +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/pt/LC_MESSAGES/laser_essentials.po +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/uk/LC_MESSAGES/laser_essentials.mo +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/uk/LC_MESSAGES/laser_essentials.po +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/zh_CN/LC_MESSAGES/laser_essentials.mo +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/locale/zh_CN/LC_MESSAGES/laser_essentials.po +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/rayforge-addon.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/tests/conftest.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/tests/producers/test_contour_producer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/tests/producers/test_material_test_grid_producer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/tests/producers/test_raster_producer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/tests/producers/test_raster_util.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/tests/steps/test_frame_step.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/tests/steps/test_material_test_step.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/tests/steps/test_raster_step.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-laser/tests/steps/test_shrinkwrap_step.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/core_materials/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/core_materials/backend.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/__library__.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/abs.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/acrylic.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/acrylic_black.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/acrylic_blue.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/acrylic_gray.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/acrylic_green.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/acrylic_orange.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/acrylic_pink.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/acrylic_purple.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/acrylic_red.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/acrylic_white.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/acrylic_yellow.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/aluminum.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/ash.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/bamboo.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/birch.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/brass.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/bronze.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/cardboard.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/cedar.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/ceramic.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/cherry.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/copper.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/cork.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/ebony.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/elm.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/fabric_canvas.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/fabric_cotton.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/fabric_denim.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/fabric_felt.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/foam.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/galvanized_steel.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/glass.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/granite.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/hdpe.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/hickory.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/lead.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/leather.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/mahogany.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/maple.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/marble.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/mdf.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/nickel.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/nylon.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/oak.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/paper.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/petg.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/pine.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/pla.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/plywood.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/polycarbonate.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/polyethylene.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/polypropylene.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/ptfe.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/pvc.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/rosewood.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/rubber.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/slate.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/slate_blue.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/spruce.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/stainless_steel.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/steel.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/stone.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/teak.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/titanium.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/walnut.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/materials/zinc.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-materials/rayforge-addon.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/locale/en/LC_MESSAGES/post_processors.mo +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/frontend.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/transformers/crop_transformer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/transformers/multipass_transformer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/transformers/optimize_transformer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/transformers/overscan_transformer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/transformers/smooth_transformer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/transformers/tabs_transformer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/widgets/crop_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/widgets/multipass_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/widgets/optimize_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/widgets/overscan_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/post_processors/widgets/smooth_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/rayforge-addon.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/tests/conftest.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/tests/transformers/test_crop_transformer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/tests/transformers/test_multipass_transformer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/tests/transformers/test_optimize_transformer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/tests/transformers/test_overscan_transformer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-post/tests/transformers/test_smooth_transformer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/locale/en/LC_MESSAGES/sketcher.mo +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/rayforge-addon.yaml +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/backend.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/angle_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/arc.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/chamfer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/circle.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/constraint_create.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/construction.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/dimension.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/distance_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/equal_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/fillet.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/grid.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/line.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/live_text_edit.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/rectangle.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/rounded_rect.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/straighten.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/symmetry_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/tangent_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/text_box.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/text_property.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/commands/waypoint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/angle.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/aspect_ratio.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/base.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/coincident.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/collinear.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/diameter.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/drag.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/horizontal.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/parallelogram.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/perpendicular.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/point_on_line.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/radius.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/tangent.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/constraints/vertical.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/entities/arc.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/entities/bezier.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/entities/circle.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/entities/point.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/entities/text_box.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/params.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/selection.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/solver.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/core/types.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/frontend.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/image/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/image/exporter.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/asset_row_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/conflicts_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/editor.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/font_properties.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/menu.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/piemenu.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/property_provider.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/sketch_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/sketch_mode_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/angle_constraint_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/aspect_ratio_constraint_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/chamfer_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/construction_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/delete_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/diameter_constraint_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/dimension_input.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/distance_constraint_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/equal_constraint_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/fillet_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/grid_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/horizontal_constraint_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/perpendicular_constraint_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/radius_constraint_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/rounded_rect_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/straighten_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/symmetry_constraint_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/tangent_constraint_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/text_box_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/vertical_constraint_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/waypoint_sharp_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/waypoint_smooth_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/sketcher/ui_gtk/tools/waypoint_symmetric_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/conftest.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_angle_constraint_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_arc_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_base_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_chamfer_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_circle_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_constraint_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_constraint_create_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_construction_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_distance_constraint_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_equal_constraint_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_fillet_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_grid_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_items_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_line_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_live_text_edit_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_point_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_rectangle_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_rounded_rect_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_straighten_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_symmetry_constraint_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_tangent_constraint_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_text_box_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/commands/test_text_property_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_angle_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_aspect_ratio_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_coincident_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_collinear_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_diameter_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_distance_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_drag_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_equal_distance_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_horizontal_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_parallelogram_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_perpendicular_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_point_on_line_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_radius_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_symmetry_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_tangent_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/constraints/test_vertical_constraint.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/entities/test_arc_entity.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/entities/test_bezier_entity.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/entities/test_circle_entity.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/entities/test_entity_registry.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/entities/test_line_entity.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/entities/test_point.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/entities/test_text_box_entity.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/sketcherapp.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/test_constraint_conflicts.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/test_sketch_from_geometry.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/test_sketch_properties.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/test_sketcher_params.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/test_sketcher_selection.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/core/test_sketcher_solver.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/image/test_sketch_exporter.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/test_sketcher_asset_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/test_sketcher_commands.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/test_sketcher_file_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/test_sketcher_workpiece.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/test_text_box.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_base_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_fill_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_grid_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_rounded_rect_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_select_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/builtin_addons/rayforge-addon-sketcher/tests/ui_gtk/tools/test_text_box_tool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/camera/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/camera/manager.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/camera/models/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/config.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/const.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/context.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/addon_config.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/ai/config.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/asset_registry.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/capability.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/doc.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/expression/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/expression/context.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/expression/errors.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/expression/evaluator.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/expression/parser.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/expression/tokenizer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/expression/validator.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/analysis.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/cleanup.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/clipping.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/constants.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/fitting.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/font_config.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/geometry.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/intersect.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/linearize.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/minkowski.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/primitives.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/query.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/simplify.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/smooth.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/split.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/text.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/geo/types.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/group.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/hooks.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/item.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/library_manager.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/material.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/material_library.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/matrix.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/ops/flip.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/ops/group.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/ops/timing.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/recipe.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/recipe_manager.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/source_asset.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/source_asset_segment.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/step.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/step_registry.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/stock_asset.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/tab.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/undo/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/undo/command.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/undo/composite_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/undo/dict_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/undo/history.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/undo/list_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/undo/property_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/undo/setter_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/baudratevar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/boolvar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/choicevar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/floatvar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/hostnamevar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/intvar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/portvar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/serialportvar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/textareavar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/urlvar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/var.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/core/varset/varset.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/debug.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/asset_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/command_registry.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/edit_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/file_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/group_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/layout/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/layout/align.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/layout/auto.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/layout/base.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/layout/registry.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/layout/spread.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/layout_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/split_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/step_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/stock_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/tab_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/doceditor/transform_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/assembler.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/base_exporter.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/base_importer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/base_renderer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/bmp/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/bmp/importer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/bmp/parser.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/bmp/renderer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/denoise.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/dither.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/dxf/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/dxf/exporter.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/dxf/importer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/dxf/renderer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/engine.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/hull.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/jpg/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/jpg/importer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/jpg/renderer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/ops_renderer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/png/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/png/importer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/png/renderer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/procedural/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/procedural/importer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/procedural/renderer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/registry.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/ruida/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/ruida/importer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/ruida/job.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/ruida/parser.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/ruida/renderer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/svg/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/svg/exporter.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/svg/importer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/svg/renderer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/svg/svg_fallback.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/svg/svg_trace.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/svg/svg_vector.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/tracing.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/util/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/util/grayscale.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/util/transparency.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/util/unit.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/image/util/vips.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/license/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/license/gumroad_provider.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/license/patreon_provider.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/license/provider.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/license/validator.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/locale/en/LC_MESSAGES/rayforge.mo +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/logging_setup.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/driver/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/driver/ruida/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/driver/ruida/ruida_framing.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/driver/ruida/ruida_maps.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/driver/ruida/ruida_util.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/job_monitor.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/models/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/models/colors.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/models/dialect/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/models/machine_hours.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/models/macro.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/transport/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/transport/http.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/transport/serial.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/transport/serial_server.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/transport/telnet.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/transport/transport.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/transport/udp.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/transport/udp_server.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/transport/validators.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/machine/transport/websocket.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/artifact/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/artifact/base.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/artifact/handle.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/artifact/job.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/artifact/key.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/artifact/lifecycle.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/artifact/manager.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/artifact/step_ops.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/artifact/step_render.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/artifact/store.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/artifact/workpiece.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/artifact/workpiece_view.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/context.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/coord.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/dag/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/dag/graph.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/dag/node.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/dag/scheduler.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/encoder/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/encoder/base.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/encoder/cairoencoder.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/encoder/context.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/encoder/textureencoder.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/producer/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/producer/base.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/producer/placeholder.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/producer/registry.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/stage/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/stage/base.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/stage/job_compute.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/stage/job_runner.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/stage/job_stage.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/stage/step_runner.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/stage/step_stage.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/stage/workpiece_compute.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/stage/workpiece_runner.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/stage/workpiece_stage.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/transformer/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/transformer/base.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/transformer/placeholder.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/transformer/registry.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/view/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/view/view_compute.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/view/view_manager.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/pipeline/view/view_runner.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/3d-rotation-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/3d-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/add-stock-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/add-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/addon-builtin-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/addon-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/ai-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/alarm-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/align-bottom-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/align-horizontal-center-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/align-left-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/align-right-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/align-top-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/align-vertical-center-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/arrow-east-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/arrow-north-east-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/arrow-north-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/arrow-north-west-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/arrow-south-east-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/arrow-south-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/arrow-south-west-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/arrow-west-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/arrow-z-down-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/arrow-z-up-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/auto-layout-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/batch-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/bottom-left-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/bottom-right-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/camera-off-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/camera-on-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/center-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/check-circle-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/check-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/chevron-right-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/clear-alarm-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/clear-layers-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/clear-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/close-document-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/close-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/code-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/compass-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/copy-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/crosshairs-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/crown-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/cut-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/cycle-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/delete-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/distribute-horizontal-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/distribute-vertical-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/door-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/download-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/drag-handle-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/edit-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/engrave-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/eraser-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/error-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/export-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/fast-forward-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/fast-rewind-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/flip-horizontal-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/flip-vertical-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/frame-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/gcode-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/general-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/go-down-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/go-next-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/go-previous-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/go-up-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/hardware-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/home-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/home-x-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/home-y-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/home-z-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/homing-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/hourglass-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/info-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/jog-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/laps-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/laser-off-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/laser-on-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/laser-path-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/layer-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/license-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/lock-open-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/lock-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/locked-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/machine-settings-advanced-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/machine-settings-general-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/material-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/next-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/open-in-new-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/open-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/org.rayforge.rayforge.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/pan-down-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/pause-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/play-arrow-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/post-processor-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/preliminary-check-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/preview-off-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/preview_off-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/previous-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/publish-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/query-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/question-box-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/question-mark-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/queued-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/rayforge.icns +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/recipe-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/redo-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/refresh-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/reset-stock-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/resume-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/save-as-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/save-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/save_as-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/score-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/send-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/settings-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/siren-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-add-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-arc-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-bezier-sharp-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-bezier-smooth-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-bezier-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-bezier-symmetric-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-chamfer-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-circle-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-constrain-angle-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-constrain-aspect-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-constrain-equal-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-constrain-horizontal-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-constrain-perpendicular-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-constrain-point-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-constrain-symmetric-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-constrain-tangential-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-constrain-vertical-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-constrain-verticalhorizontal-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-construction-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-diameter-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-distance-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-edit-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-fill-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-fillet-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-grid-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-line-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-radius-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-rect-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-rounded-rect-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-select-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sketch-text-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/skip-forward-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/skip-previous-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/sleep-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/status-check-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/status-connected-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/status-connecting-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/status-idle-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/status-offline-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/step-settings-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/stock-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/stop-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/tabs-equidistant-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/tabs-visible-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/test-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/timeline-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/timer-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/tool-change-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/top-left-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/top-right-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/travel-path-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/ui-settings-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/undo-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/unlocking-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/variable-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/visibility-off-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/visibility-on-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/warning-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/zero-here-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/zoom-fit-best-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/zoom-in-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/resources/icons/zoom-out-symbolic.svg +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/gcodeedit/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/gcodeedit/editor.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/gcodeedit/viewer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/tasker/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/tasker/context.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/tasker/manager.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/tasker/pool.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/tasker/progress.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/tasker/proxy.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/tasker/task.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/units/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/units/definitions.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/units/engine.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/units/formatter.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/util/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/util/cache.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/util/colors.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/util/debug.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/util/glib.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/util/localized.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/util/once.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/util/po_compiler.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/util/size.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/util/template.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/shared/util/time_format.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/about.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/action_registry.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/addon_manager/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/addon_manager/license_dialog.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/camera/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/camera/alignment_dialog.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/camera/point_bubble_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/camera/properties_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/camera/selection_dialog.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas/canvas.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas/cursor.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas/element.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas/hittest.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas/intersect.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas/multiselect.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas/overlays.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas/region.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas/shrinkwrap.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas/transform.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/context_menu.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/drag_drop_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/elements/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/elements/camera_image.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/elements/dot.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/elements/group.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/elements/layer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/elements/simulation_overlay.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/elements/step.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/elements/stock.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/elements/tab_handle.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/elements/work_origin.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/elements/workpiece.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/simulation_controls.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas2d/simulator_cmd.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas3d/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas3d/camera.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas3d/gl_utils.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas3d/ops_renderer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas3d/plane_renderer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas3d/shaders.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas3d/sphere_renderer.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/canvas3d/text_renderer_3d.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/add_material_dialog.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/add_tabs_popover.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/asset_row_factory.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/asset_row_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/file_dialogs.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/image_metadata_dialog.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/import_handler.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/item_properties.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/material_selector.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/missing_features_dialog.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/property_providers/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/property_providers/base.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/property_providers/workpiece.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/recipe_control_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/recipe_selector_dialog.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/step_box.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/step_settings/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/step_settings/base.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/step_settings/placeholder.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/step_settings_dialog.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/doceditor/stock_properties_dialog.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/icons.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/advanced_preferences_page.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/connection_status_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/console.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/gcode_editor.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/gcode_settings_page.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/hook_list.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/hooks_macros_page.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/jog_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/machine_selector.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/maintenance_page.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/profile_selector.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/machine/status_widget.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/settings/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/settings/addon_manager_page.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/settings/general_preferences_page.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/settings/license_settings_page.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/settings/material_manager_page.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/settings/recipe_manager_page.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/settings/settings_dialog.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/adwfix.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/direction_preview.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/draglist.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/expression_entry.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/gtk.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/gtk_color.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/histogram_preview.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/key.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/keyboard.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/optional_spin_row.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/patched_dialog_window.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/piemenu.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/popover_menu.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/preferences_group.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/preferences_page.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/progress_bar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/round_button.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/shortcut.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/slider.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/splitbutton.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/status_bar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/undo_button.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/unit_spin_row.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/shared/usage_consent_dialog.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/task_bar.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/varset/__init__.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/varset/var_row_factory.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/ui_gtk/varset/varset_editor.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/uiscript.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/usage.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge/version.py +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge.egg-info/dependency_links.txt +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge.egg-info/entry_points.txt +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/rayforge.egg-info/top_level.txt +0 -0
- {rayforge-1.3.2 → rayforge-1.4}/setup.cfg +0 -0
rayforge-1.4/PKG-INFO
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rayforge
|
|
3
|
+
Version: 1.4
|
|
4
|
+
Summary: A desktop application for laser cutting and engraving
|
|
5
|
+
Author-email: Samuel Abels <knipknap@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/barebaric/rayforge
|
|
8
|
+
Project-URL: Bug Tracker, https://github.com/barebaric/rayforge/issues
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
11
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
12
|
+
Classifier: Intended Audience :: Manufacturing
|
|
13
|
+
Requires-Python: >=3.10
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: aiohttp==3.13.3
|
|
17
|
+
Requires-Dist: asyncudp==0.11.0
|
|
18
|
+
Requires-Dist: blinker==1.9.0
|
|
19
|
+
Requires-Dist: ezdxf==1.4.2
|
|
20
|
+
Requires-Dist: GitPython==3.1.44
|
|
21
|
+
Requires-Dist: numpy==2.3.4
|
|
22
|
+
Requires-Dist: opencv_python
|
|
23
|
+
Requires-Dist: platformdirs==4.3.6
|
|
24
|
+
Requires-Dist: pluggy==1.6.0
|
|
25
|
+
Requires-Dist: pycairo==1.28.0
|
|
26
|
+
Requires-Dist: pyclipper==1.3.0.post6
|
|
27
|
+
Requires-Dist: PyGObject==3.50.0
|
|
28
|
+
Requires-Dist: PyMuPDF==1.27.2.2
|
|
29
|
+
Requires-Dist: PyOpenGL==3.1.10
|
|
30
|
+
Requires-Dist: PyOpenGL_accelerate==3.1.10
|
|
31
|
+
Requires-Dist: pypdf==6.9.1
|
|
32
|
+
Requires-Dist: pyserial_asyncio==0.6
|
|
33
|
+
Requires-Dist: pyvips==3.0.0
|
|
34
|
+
Requires-Dist: PyYAML==6.0.2
|
|
35
|
+
Requires-Dist: scipy==1.16.3
|
|
36
|
+
Requires-Dist: semver==3.0.2
|
|
37
|
+
Requires-Dist: svgelements==1.9.6
|
|
38
|
+
Requires-Dist: vtracer==0.6.11
|
|
39
|
+
Requires-Dist: websockets==14.2
|
|
40
|
+
Provides-Extra: test
|
|
41
|
+
Requires-Dist: pytest; extra == "test"
|
|
42
|
+
Requires-Dist: pytest-asyncio; extra == "test"
|
|
43
|
+
Requires-Dist: pytest-mock; extra == "test"
|
|
44
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
45
|
+
Requires-Dist: pygobject-stubs; extra == "test"
|
|
46
|
+
Dynamic: license-file
|
|
47
|
+
|
|
48
|
+
[](https://github.com/barebaric/rayforge/releases/)
|
|
49
|
+
[](https://pypi.org/project/rayforge/)
|
|
50
|
+
[](https://snapcraft.io/rayforge)
|
|
51
|
+
[](https://launchpad.net/~knipknap/+archive/ubuntu/rayforge)
|
|
52
|
+
[](https://opensource.org/licenses/MIT)
|
|
53
|
+
|
|
54
|
+
[](https://snapcraft.io/rayforge)
|
|
55
|
+
<a href="https://flathub.org/apps/org.rayforge.rayforge"><img alt="Get it from Flathub" src="website/static/images/flathub-badge.svg" height="55"/></a>
|
|
56
|
+
<a href="https://www.patreon.com/c/knipknap"><img src="https://c5.patreon.com/external/logo/become_a_patron_button.png" alt="Become a Patron" height="55"/></a>
|
|
57
|
+
|
|
58
|
+
# Rayforge
|
|
59
|
+
|
|
60
|
+
Rayforge is a modern, cross-platform 2D CAD, G-code sender and control software for GRBL-based laser cutters and engravers.
|
|
61
|
+
Built with Gtk4 and Libadwaita, it provides a clean, native interface for Linux and Windows, offering a full suite of tools
|
|
62
|
+
for both hobbyists and professionals.
|
|
63
|
+
|
|
64
|
+

|
|
65
|
+
|
|
66
|
+
You can also check the [official Rayforge homepage](https://rayforge.org).
|
|
67
|
+
We also have a [Discord](https://discord.gg/sTHNdTtpQJ).
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## Key Features
|
|
71
|
+
|
|
72
|
+
| Feature | Description |
|
|
73
|
+
| :--------------------------- | :--------------------------------------------------------------------------------------------------------------- |
|
|
74
|
+
| **Modern UI** | Polished and modern UI built with Gtk4 and Libadwaita. Supports system, light, and dark themes. |
|
|
75
|
+
| **Parametric Sketch Editor** | Create precise, constraint-based 2D designs with geometric and dimensional constraints. |
|
|
76
|
+
| **Multi-Layer Operations** | Assign different operations (e.g., engrave then cut) to layers in your design. |
|
|
77
|
+
| **Versatile Operations** | Supports Contour, Raster Engraving (with cross-hatch fill), Shrink Wrap, and Depth Engraving. |
|
|
78
|
+
| **Overscan & Kerf Comp.** | Improve engraving quality with overscan and ensure dimensional accuracy with kerf compensation. |
|
|
79
|
+
| **2.5D Cutting** | Perform multi-pass cuts with a configurable step-down between each pass for thick materials. |
|
|
80
|
+
| **3D G-code Preview** | Visualize G-code toolpaths in 3D to verify the job before sending it to the machine. |
|
|
81
|
+
| **Multi-Machine Profiles** | Configure and instantly switch between multiple machine profiles. |
|
|
82
|
+
| **GRBL Firmware Settings** | Read and write firmware parameters (`$$`) directly from the UI. |
|
|
83
|
+
| **Comprehensive 2D Canvas** | Full suite of tools: alignment, transformation, measurement, zoom, pan, and more. |
|
|
84
|
+
| **Advanced Path Generation** | High-quality image tracing, travel time optimization, path smoothing, and spot size interpolation. |
|
|
85
|
+
| **Holding Tabs** | Add tabs to contour cuts to hold pieces in place. Supports manual and automatic placement. |
|
|
86
|
+
| **G-code Macros & Hooks** | Run custom G-code snippets before/after jobs. Supports variable substitution. |
|
|
87
|
+
| **Broad File Support** | Import from SVG, DXF, PDF, JPEG, PNG, BMP, and even Ruida files (`.rd`). |
|
|
88
|
+
| **Multi-Laser Operations** | Choose different lasers for each operation in a job |
|
|
89
|
+
| **Camera Integration** | Use a USB camera for workpiece alignment, positioning, and background tracing. |
|
|
90
|
+
| **Cross-Platform** | Native builds for Linux and Windows. |
|
|
91
|
+
| **Extensible** | Open development model makes it easy to [add support for new devices](website/docs/developer/driver.md). |
|
|
92
|
+
| **Multi-Language** | Available in English, Portuguese, Spanish, German, French, and Chinese. |
|
|
93
|
+
| **G-code Dialects** | Supports GRBL, Smoothieware, and other GRBL-compatible firmwares. |
|
|
94
|
+
|
|
95
|
+
## Device Support
|
|
96
|
+
|
|
97
|
+
| Device Type | Connection Method | Notes |
|
|
98
|
+
| :--------------- | :---------------------- | :------------------------------------------------------------- |
|
|
99
|
+
| **GRBL** | Serial Port | Supported since version 0.13. The most common connection type. |
|
|
100
|
+
| **GRBL** | Network (WiFi/Ethernet) | Connect to any GRBL device on your network. |
|
|
101
|
+
| **Smoothieware** | Telnet | Supported since version 0.15. |
|
|
102
|
+
|
|
103
|
+
## Installation
|
|
104
|
+
|
|
105
|
+
For installation instructions [refer to our homepage](https://rayforge.org/docs/getting-started/installation).
|
|
106
|
+
|
|
107
|
+
## Development
|
|
108
|
+
|
|
109
|
+
For detailed information about developing for Rayforge, including setup instructions,
|
|
110
|
+
testing, and contribution guidelines, please see the
|
|
111
|
+
[Developer Documentation](https://rayforge.org/docs/latest/developer/getting-started/).
|
|
112
|
+
|
|
113
|
+
## License
|
|
114
|
+
|
|
115
|
+
This project is licensed under the **MIT License**. See the `LICENSE` file for details.
|
|
@@ -0,0 +1,531 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<component type="desktop-application">
|
|
3
|
+
<id>org.rayforge.rayforge</id>
|
|
4
|
+
<developer id="org.rayforge">
|
|
5
|
+
<name translate="no">Samuel Abels</name>
|
|
6
|
+
</developer>
|
|
7
|
+
<content_rating type="oars-1.1" />
|
|
8
|
+
<url type="homepage">https://rayforge.org</url>
|
|
9
|
+
<url type="bugtracker">https://github.com/barebaric/rayforge/issues</url>
|
|
10
|
+
<url type="vcs-browser">https://github.com/barebaric/rayforge</url>
|
|
11
|
+
|
|
12
|
+
<name>Rayforge</name>
|
|
13
|
+
<summary>A desktop application for laser cutting and engraving</summary>
|
|
14
|
+
|
|
15
|
+
<categories>
|
|
16
|
+
<category>Utility</category>
|
|
17
|
+
<category>Engineering</category>
|
|
18
|
+
</categories>
|
|
19
|
+
|
|
20
|
+
<metadata_license>MIT</metadata_license>
|
|
21
|
+
<project_license>MIT</project_license>
|
|
22
|
+
|
|
23
|
+
<description>
|
|
24
|
+
<p>
|
|
25
|
+
Rayforge is a desktop application for laser cutting and engraving.
|
|
26
|
+
It provides an intuitive interface to create and manage laser
|
|
27
|
+
cutting projects.
|
|
28
|
+
Rayforge support communicating with GRBL based laser cutters.
|
|
29
|
+
Rayforge supports importing SVG, DXF, PDF, and PNGs, and provides
|
|
30
|
+
advanced features such as multi step jobs, automatic path
|
|
31
|
+
optimization, interpolation based on laser dot size, and much more.
|
|
32
|
+
</p>
|
|
33
|
+
</description>
|
|
34
|
+
|
|
35
|
+
<launchable type="desktop-id">org.rayforge.rayforge.desktop</launchable>
|
|
36
|
+
|
|
37
|
+
<provides>
|
|
38
|
+
<mediatype>application/x-rayforge-project</mediatype>
|
|
39
|
+
<mediatype>application/x-rayforge-sketch</mediatype>
|
|
40
|
+
<mediatype>application/x-ruida</mediatype>
|
|
41
|
+
<mediatype>image/png</mediatype>
|
|
42
|
+
<mediatype>image/bmp</mediatype>
|
|
43
|
+
<mediatype>image/jpeg</mediatype>
|
|
44
|
+
<mediatype>image/svg+xml</mediatype>
|
|
45
|
+
<mediatype>image/vnd.dxf</mediatype>
|
|
46
|
+
</provides>
|
|
47
|
+
|
|
48
|
+
<recommends>
|
|
49
|
+
<control>keyboard</control>
|
|
50
|
+
<control>pointing</control>
|
|
51
|
+
<display_length compare="ge">768</display_length>
|
|
52
|
+
</recommends>
|
|
53
|
+
|
|
54
|
+
<icon type="remote">https://raw.githubusercontent.com/barebaric/rayforge/refs/heads/main/rayforge/resources/icons/org.rayforge.rayforge.svg</icon>
|
|
55
|
+
|
|
56
|
+
<branding>
|
|
57
|
+
<color type="primary" scheme_preference="light">#efb0a1</color>
|
|
58
|
+
<color type="primary" scheme_preference="dark">#373f43</color>
|
|
59
|
+
</branding>
|
|
60
|
+
|
|
61
|
+
<screenshots>
|
|
62
|
+
<screenshot type="default">
|
|
63
|
+
<caption>The main window of Rayforge.</caption>
|
|
64
|
+
<image type="source" width="2522" height="1772">https://raw.githubusercontent.com/barebaric/rayforge/main/website/static/screenshots/main-standard.png</image>
|
|
65
|
+
</screenshot>
|
|
66
|
+
</screenshots>
|
|
67
|
+
|
|
68
|
+
<releases>
|
|
69
|
+
<release version="1.4" date="2026-03-29">
|
|
70
|
+
<description>
|
|
71
|
+
<p>Rotary Axis Support, PDF Layer Import, and Camera Calibration</p>
|
|
72
|
+
<p>Major Changes:</p>
|
|
73
|
+
<ul>
|
|
74
|
+
<li>Full rotary axis support with 3D visualization</li>
|
|
75
|
+
<li>PDF direct vector import with layer support</li>
|
|
76
|
+
<li>Camera de-distortion with Charuco calibration wizard</li>
|
|
77
|
+
<li>Sketcher: ellipse tool replacing circle tool</li>
|
|
78
|
+
</ul>
|
|
79
|
+
<p>Rotary Axis:</p>
|
|
80
|
+
<ul>
|
|
81
|
+
<li>Full 3D visualization for rotary mode</li>
|
|
82
|
+
<li>Support for multiple rotary modules</li>
|
|
83
|
+
<li>Configurable rotary mode per layer</li>
|
|
84
|
+
<li>Rotary icon displayed on rotary layers</li>
|
|
85
|
+
</ul>
|
|
86
|
+
<p>PDF Improvements:</p>
|
|
87
|
+
<ul>
|
|
88
|
+
<li>Direct vector import for PDF files</li>
|
|
89
|
+
<li>PDF importer now supports layers</li>
|
|
90
|
+
<li>Split PDF based workpieces into layers</li>
|
|
91
|
+
</ul>
|
|
92
|
+
<p>Camera Calibration:</p>
|
|
93
|
+
<ul>
|
|
94
|
+
<li>Improved five factor de-distortion algorithm</li>
|
|
95
|
+
<li>Charuco card based calibration wizard</li>
|
|
96
|
+
<li>Guided calibration setup process</li>
|
|
97
|
+
</ul>
|
|
98
|
+
<p>Sketcher Improvements:</p>
|
|
99
|
+
<ul>
|
|
100
|
+
<li>Ellipse tool replaces circle tool for more flexibility</li>
|
|
101
|
+
<li>Many tools automatically constrain geometry during creation</li>
|
|
102
|
+
<li>Magnetic snap now works while creating geometry</li>
|
|
103
|
+
<li>Replaced snap to grid with smarter magnetic snap</li>
|
|
104
|
+
<li>Equality constraint now works on ellipses</li>
|
|
105
|
+
</ul>
|
|
106
|
+
<p>Frame Feature:</p>
|
|
107
|
+
<ul>
|
|
108
|
+
<li>Configure frame speed in laser head settings</li>
|
|
109
|
+
<li>Corner dwell time setting for framing</li>
|
|
110
|
+
<li>Repeat count setting for framing</li>
|
|
111
|
+
</ul>
|
|
112
|
+
<p>Post-Processors:</p>
|
|
113
|
+
<ul>
|
|
114
|
+
<li>New merge lines post-processor to avoid double cutting</li>
|
|
115
|
+
</ul>
|
|
116
|
+
<p>UI Improvements:</p>
|
|
117
|
+
<ul>
|
|
118
|
+
<li>More compact left panel layout with add buttons in group headers</li>
|
|
119
|
+
<li>G-code viewer moved into the bottom panel</li>
|
|
120
|
+
<li>3D canvas performance improvements</li>
|
|
121
|
+
</ul>
|
|
122
|
+
<p>Other Improvements:</p>
|
|
123
|
+
<ul>
|
|
124
|
+
<li>Machine profile for Acmer S1 added</li>
|
|
125
|
+
<li>GRBL buffer size tracking improved</li>
|
|
126
|
+
<li>Dialects are now isolated copies (templates)</li>
|
|
127
|
+
<li>Dialects support separate laser on command for focusing</li>
|
|
128
|
+
<li>Texture dimension limit prevents memory exhaustion</li>
|
|
129
|
+
</ul>
|
|
130
|
+
<p>Fixed:</p>
|
|
131
|
+
<ul>
|
|
132
|
+
<li>Material test producer bugs (issues #181 and #182)</li>
|
|
133
|
+
<li>GRBL position reporting for machines with only X and Y axes (#179)</li>
|
|
134
|
+
<li>Sketcher: Distance constraint shadowing the line</li>
|
|
135
|
+
<li>Texture renderer memory exhaustion on large images</li>
|
|
136
|
+
<li>Race condition in worker initialization</li>
|
|
137
|
+
</ul>
|
|
138
|
+
</description>
|
|
139
|
+
</release>
|
|
140
|
+
<release version="1.3.2" date="2026-03-24">
|
|
141
|
+
<description>
|
|
142
|
+
<p>Bug fix release</p>
|
|
143
|
+
<ul>
|
|
144
|
+
<li>Raster step settings now display angle numerically</li>
|
|
145
|
+
<li>Fixed import issues on Windows</li>
|
|
146
|
+
<li>Unknown G-code dialects now fall back to Grbl</li>
|
|
147
|
+
<li>Fixed duplicate error notifications from the driver</li>
|
|
148
|
+
</ul>
|
|
149
|
+
</description>
|
|
150
|
+
</release>
|
|
151
|
+
<release version="1.3.1" date="2026-03-24">
|
|
152
|
+
<description>
|
|
153
|
+
<p>Bug fix release</p>
|
|
154
|
+
<ul>
|
|
155
|
+
<li>Fixed icon sizing issues on systems with Gtk 4.21</li>
|
|
156
|
+
<li>Fixed Windows and macOS build issues</li>
|
|
157
|
+
<li>Fixed conflicting menu shortcuts in the sketcher</li>
|
|
158
|
+
</ul>
|
|
159
|
+
</description>
|
|
160
|
+
</release>
|
|
161
|
+
<release version="1.3" date="2026-03-23">
|
|
162
|
+
<description>
|
|
163
|
+
<p>Bezier Curves in Sketcher and Modular Architecture</p>
|
|
164
|
+
<p>Major Changes:</p>
|
|
165
|
+
<ul>
|
|
166
|
+
<li>Full bezier curve support in the parametric sketcher</li>
|
|
167
|
+
<li>Sketcher moved to an optional add-on</li>
|
|
168
|
+
<li>New unified path tool combining lines and curves</li>
|
|
169
|
+
<li>More compact G-code output</li>
|
|
170
|
+
</ul>
|
|
171
|
+
<p>Sketcher Improvements:</p>
|
|
172
|
+
<ul>
|
|
173
|
+
<li>Intuitive bezier editing with drag handles</li>
|
|
174
|
+
<li>Connect curves to existing geometry</li>
|
|
175
|
+
<li>Smooth or symmetric endpoints for connected paths</li>
|
|
176
|
+
<li>Straighten tool to convert beziers to lines</li>
|
|
177
|
+
<li>Grid tool for visual reference</li>
|
|
178
|
+
<li>Show/hide construction geometry and constraints</li>
|
|
179
|
+
<li>Hold Shift to constrain movement to axis</li>
|
|
180
|
+
<li>Conflicting constraints shown in panel</li>
|
|
181
|
+
</ul>
|
|
182
|
+
<p>G-code Improvements:</p>
|
|
183
|
+
<ul>
|
|
184
|
+
<li>Unchanged coordinates now omitted for smaller files</li>
|
|
185
|
+
<li>G-code viewer shows line count and byte size</li>
|
|
186
|
+
<li>Raster operation gains sample interval and power levels settings</li>
|
|
187
|
+
</ul>
|
|
188
|
+
<p>Fixed:</p>
|
|
189
|
+
<ul>
|
|
190
|
+
<li>Most icons not displayed on systems with Gtk > 4.21</li>
|
|
191
|
+
<li>Fillet and chamfer tools not working correctly</li>
|
|
192
|
+
<li>Texture encoder drawing spaced dots instead of lines</li>
|
|
193
|
+
<li>Loading project files with unknown assets</li>
|
|
194
|
+
</ul>
|
|
195
|
+
</description>
|
|
196
|
+
</release>
|
|
197
|
+
<release version="1.2.1" date="2026-03-19">
|
|
198
|
+
<description>
|
|
199
|
+
<p>Bug fix release</p>
|
|
200
|
+
<p>New Features:</p>
|
|
201
|
+
<ul>
|
|
202
|
+
<li>Buttons to move to center, bottom/left and top/right of workpiece</li>
|
|
203
|
+
<li>Support for setting a "tab power"</li>
|
|
204
|
+
<li>Sketcher: allow entering dimensions while adding geometry</li>
|
|
205
|
+
</ul>
|
|
206
|
+
<p>Improvements:</p>
|
|
207
|
+
<ul>
|
|
208
|
+
<li>Better button layout in the control panel</li>
|
|
209
|
+
<li>Sketcher: circle now uses diameter constraint consistently</li>
|
|
210
|
+
<li>Laser dot now always drawn on top, not obscured by workpieces</li>
|
|
211
|
+
</ul>
|
|
212
|
+
<p>Fixed:</p>
|
|
213
|
+
<ul>
|
|
214
|
+
<li>Builtin addon yaml files not included in .snap</li>
|
|
215
|
+
<li>Imprecise tab location while dragging the tab handle</li>
|
|
216
|
+
<li>Tabs not working on beziers</li>
|
|
217
|
+
</ul>
|
|
218
|
+
</description>
|
|
219
|
+
</release>
|
|
220
|
+
<release version="1.2" date="2026-03-18">
|
|
221
|
+
<description>
|
|
222
|
+
<p>Addon System Rewrite and AI Workpiece Generation</p>
|
|
223
|
+
<p>Major Changes:</p>
|
|
224
|
+
<ul>
|
|
225
|
+
<li>AI workpiece generation</li>
|
|
226
|
+
<li>Complete addon system rewrite and refactoring</li>
|
|
227
|
+
<li>Built-in addons: laser-essentials, core materials, post-processors, layout</li>
|
|
228
|
+
<li>Path optimizer now also optimizes inter-workpiece travel</li>
|
|
229
|
+
<li>Stock is now a document-level concept - no more stock per layer</li>
|
|
230
|
+
</ul>
|
|
231
|
+
<p>New Features:</p>
|
|
232
|
+
<ul>
|
|
233
|
+
<li>Camera image enhancement with temporal noise reduction</li>
|
|
234
|
+
<li>Fisheye lens distortion correction</li>
|
|
235
|
+
<li>Zoom, pan and keyboard navigation in camera alignment dialog</li>
|
|
236
|
+
<li>Tons of new materials in core materials addon</li>
|
|
237
|
+
<li>Mach4 G-code dialect</li>
|
|
238
|
+
<li>Post-processor: crop-to-stock</li>
|
|
239
|
+
<li>Click canvas to set zero feature</li>
|
|
240
|
+
<li>Support for configuring cut/raster colors per laser</li>
|
|
241
|
+
<li>Support for duplicating stock and non-rectangular stock</li>
|
|
242
|
+
<li>Convert workpiece to stock (right-click menu)</li>
|
|
243
|
+
<li>Machine profile for OMTech K40+</li>
|
|
244
|
+
<li>Navigation and zoom icons for UI controls</li>
|
|
245
|
+
</ul>
|
|
246
|
+
<p>Sketcher Improvements:</p>
|
|
247
|
+
<ul>
|
|
248
|
+
<li>Live preview for line tool</li>
|
|
249
|
+
<li>Dimension display while adding geometry</li>
|
|
250
|
+
<li>Snap-to-grid on Ctrl press</li>
|
|
251
|
+
<li>Hover highlighting for entities and constraints</li>
|
|
252
|
+
<li>Toolbar shows currently available shortcuts</li>
|
|
253
|
+
<li>Shift+Double click selects connected geometry</li>
|
|
254
|
+
<li>Arc radius can be changed while adding second endpoint</li>
|
|
255
|
+
<li>Selection preserved when creating lines, arcs, or circles</li>
|
|
256
|
+
</ul>
|
|
257
|
+
<p>Other Improvements:</p>
|
|
258
|
+
<ul>
|
|
259
|
+
<li>Imported items and stock aligned with WCS origin by default</li>
|
|
260
|
+
<li>Improved camera selection dialog (left/right indicators, keyboard support)</li>
|
|
261
|
+
<li>Sketcher symmetry constraint click order aligns with FreeCAD</li>
|
|
262
|
+
<li>Maximum laser G-code power increased to 100.000</li>
|
|
263
|
+
<li>Context lazy loads most services for better performance</li>
|
|
264
|
+
<li>RAYFORGE_DISABLE_3D environment variable</li>
|
|
265
|
+
</ul>
|
|
266
|
+
<p>Fixed:</p>
|
|
267
|
+
<ul>
|
|
268
|
+
<li>Undoing text box left entries in history manager stack</li>
|
|
269
|
+
<li>Y axis drawn on wrong side of canvas</li>
|
|
270
|
+
<li>Auto layout for rotated stock</li>
|
|
271
|
+
<li>SVG exporter stacking multiple workpieces on top of each other</li>
|
|
272
|
+
<li>Text color in Sketcher while editing</li>
|
|
273
|
+
<li>Default laser assignment when project references non-existent laser</li>
|
|
274
|
+
<li>Text box rotating while typing on Windows</li>
|
|
275
|
+
<li>Addon handling issues on Windows</li>
|
|
276
|
+
<li>macOS app menu window narrowed to MainWindow</li>
|
|
277
|
+
<li>macOS app menu actions</li>
|
|
278
|
+
</ul>
|
|
279
|
+
</description>
|
|
280
|
+
</release>
|
|
281
|
+
<release version="1.1.2" date="2026-02-28">
|
|
282
|
+
<description>
|
|
283
|
+
<p>Bug fix release</p>
|
|
284
|
+
<ul>
|
|
285
|
+
<li>Fixed text box rotating while typing in sketcher</li>
|
|
286
|
+
<li>Fixed assets cannot be deleted after loading from a project file</li>
|
|
287
|
+
<li>Fixed empty sketches showing as black squares after loading from project</li>
|
|
288
|
+
<li>Maybe: Fixed pie menu not opening in correct location on Windows</li>
|
|
289
|
+
</ul>
|
|
290
|
+
</description>
|
|
291
|
+
</release>
|
|
292
|
+
<release version="1.1.1" date="2026-02-27">
|
|
293
|
+
<description>
|
|
294
|
+
<p>Bug fix release</p>
|
|
295
|
+
<ul>
|
|
296
|
+
<li>Fixed screenshot link in appstream causing Flatpak build to fail</li>
|
|
297
|
+
</ul>
|
|
298
|
+
</description>
|
|
299
|
+
</release>
|
|
300
|
+
<release version="1.1" date="2026-02-27">
|
|
301
|
+
<description>
|
|
302
|
+
<p>Pipeline Rewrite and Unified Raster Operations</p>
|
|
303
|
+
<p>Version 1.1 brings a complete backend rewrite and unified raster
|
|
304
|
+
operations:</p>
|
|
305
|
+
<p>Major Changes:</p>
|
|
306
|
+
<ul>
|
|
307
|
+
<li>Complete data pipeline backend rewrite with improved
|
|
308
|
+
performance and memory management</li>
|
|
309
|
+
<li>Unified raster operations - old "raster", "depth", and
|
|
310
|
+
"dither" operations merged into one</li>
|
|
311
|
+
<li>New G-code console replacing the log view with a fully
|
|
312
|
+
featured terminal</li>
|
|
313
|
+
<li>SVG and DXF export support for documents and selected
|
|
314
|
+
objects</li>
|
|
315
|
+
<li>Angle constraints now available in the sketcher</li>
|
|
316
|
+
<li>New "Raster (Dither)" operation with configurable
|
|
317
|
+
algorithms</li>
|
|
318
|
+
<li>Built-in G-code dialect supporting dynamic power mode</li>
|
|
319
|
+
<li>Configurable axis extents, work surface, and soft limits
|
|
320
|
+
per machine</li>
|
|
321
|
+
</ul>
|
|
322
|
+
<p>Improvements:</p>
|
|
323
|
+
<ul>
|
|
324
|
+
<li>Auto thresholding for Variable Power and Multipass raster
|
|
325
|
+
modes</li>
|
|
326
|
+
<li>Histogram in depth engraver for easier threshold
|
|
327
|
+
setting</li>
|
|
328
|
+
<li>Symbolic visualization of raster direction</li>
|
|
329
|
+
<li>Configurable line distance in all raster operations</li>
|
|
330
|
+
<li>Machine selector moved to window header</li>
|
|
331
|
+
<li>Workpiece properties now show WCS coordinates</li>
|
|
332
|
+
<li>Imported images placed at reference origin by default</li>
|
|
333
|
+
<li>Ukrainian translation added</li>
|
|
334
|
+
<li>Material files now support translations</li>
|
|
335
|
+
<li>New --config CLI argument for custom config path</li>
|
|
336
|
+
<li>Optional anonymous usage statistics (opt-in)</li>
|
|
337
|
+
<li>Re-assigned Alt key bindings to avoid clashing with
|
|
338
|
+
main menu actions</li>
|
|
339
|
+
<li>Improved contour offset algorithm for intersecting
|
|
340
|
+
geometry</li>
|
|
341
|
+
</ul>
|
|
342
|
+
<p>Fixed:</p>
|
|
343
|
+
<ul>
|
|
344
|
+
<li>Multiple memory leaks in the data pipeline</li>
|
|
345
|
+
<li>Race conditions in worker pool and pipeline</li>
|
|
346
|
+
<li>Camera device scanning crash on Windows</li>
|
|
347
|
+
<li>Various macOS-specific issues</li>
|
|
348
|
+
<li>Rasterizer angle distortion</li>
|
|
349
|
+
<li>Unresponsive serial port handling</li>
|
|
350
|
+
<li>Simulation preview strokes constant across zoom levels</li>
|
|
351
|
+
<li>Speed in Jog dialog correctly converted to base units</li>
|
|
352
|
+
<li>Icons not appearing in snap on non-GNOME environments</li>
|
|
353
|
+
<li>GRBL connection handshake timeout with backoff retry</li>
|
|
354
|
+
</ul>
|
|
355
|
+
</description>
|
|
356
|
+
</release>
|
|
357
|
+
<release version="1.0.1" date="2026-02-01">
|
|
358
|
+
<description>
|
|
359
|
+
<p>Bug fix release</p>
|
|
360
|
+
<ul>
|
|
361
|
+
<li>Fixed some strings not being translatable</li>
|
|
362
|
+
<li>Reformatted the 1.0 release notes to not trip the Flatpak build up</li>
|
|
363
|
+
</ul>
|
|
364
|
+
</description>
|
|
365
|
+
</release>
|
|
366
|
+
<release version="1.0" date="2026-02-01">
|
|
367
|
+
<description>
|
|
368
|
+
<p>It's Rayforge's Birthday Release!</p>
|
|
369
|
+
<p>Version 1.0 brings some exciting features and enhancements to the
|
|
370
|
+
Rayforge experience:</p>
|
|
371
|
+
<p>Major Additions:</p>
|
|
372
|
+
<ul>
|
|
373
|
+
<li>Full project save/load support</li>
|
|
374
|
+
<li>Sketcher now supports text, with advanced options</li>
|
|
375
|
+
<li>Jog dialog and log view have been merged into a new bottom
|
|
376
|
+
panel</li>
|
|
377
|
+
<li>Aspect ratio constraints now available in the sketcher</li>
|
|
378
|
+
<li>Engraving steps can now be inverted</li>
|
|
379
|
+
<li>Raster engraver gains support for setting engraving angle in
|
|
380
|
+
degrees</li>
|
|
381
|
+
<li>Recent files menu added for easier access to your last
|
|
382
|
+
projects</li>
|
|
383
|
+
<li>Installers for all platforms now register .ryp (project) and
|
|
384
|
+
.rfs (sketch) file extensions</li>
|
|
385
|
+
</ul>
|
|
386
|
+
<p>Changes:</p>
|
|
387
|
+
<ul>
|
|
388
|
+
<li>CLI update: `--direct-vector` renamed to `--vector`; added
|
|
389
|
+
`--trace` to enforce trace mode (vector import is now default)</li>
|
|
390
|
+
<li>Import errors are now collected and shown in the import
|
|
391
|
+
dialog</li>
|
|
392
|
+
<li>Importers rewritten for better testability and stability</li>
|
|
393
|
+
<li>Sketcher solver now biases points towards their previous
|
|
394
|
+
position, improving dragging stability</li>
|
|
395
|
+
<li>Simulation mode keyboard shortcut changed to F11 to avoid
|
|
396
|
+
conflict with "Save as..."</li>
|
|
397
|
+
<li>Improved G-code view and control panel state retention across
|
|
398
|
+
sessions</li>
|
|
399
|
+
<li>Precision of power sliders and display digits has been
|
|
400
|
+
increased</li>
|
|
401
|
+
<li>Import dialog now displays number of vectors per layer</li>
|
|
402
|
+
<li>Error message added when attempting to delete a dialect in
|
|
403
|
+
use</li>
|
|
404
|
+
<li>Chinese translations added to improve localization</li>
|
|
405
|
+
</ul>
|
|
406
|
+
<p>Fixed:</p>
|
|
407
|
+
<ul>
|
|
408
|
+
<li>Traceback when adding a constraint in the sketcher
|
|
409
|
+
(Windows only)</li>
|
|
410
|
+
<li>Potential memory leak and stale operations display</li>
|
|
411
|
+
<li>Improved multi-layer DXF import handling</li>
|
|
412
|
+
<li>Numerous alignment bugs in importers</li>
|
|
413
|
+
<li>Traceback when using invert switch in the import dialog</li>
|
|
414
|
+
<li>Sketches not centered on the surface after import</li>
|
|
415
|
+
</ul>
|
|
416
|
+
<p>Documentation:</p>
|
|
417
|
+
<ul>
|
|
418
|
+
<li>Updated importer developer documentation</li>
|
|
419
|
+
</ul>
|
|
420
|
+
</description>
|
|
421
|
+
</release>
|
|
422
|
+
<release version="0.28.4" date="2026-01-22">
|
|
423
|
+
<description>
|
|
424
|
+
<p>Bug fix release</p>
|
|
425
|
+
<ul>
|
|
426
|
+
<li>Fixed traceback when dialect contained deprecated attributes</li>
|
|
427
|
+
<li>Fixed debian package missing asyncudp dependency</li>
|
|
428
|
+
</ul>
|
|
429
|
+
</description>
|
|
430
|
+
</release>
|
|
431
|
+
<release version="0.28.3" date="2026-01-18">
|
|
432
|
+
<description>
|
|
433
|
+
<p>Bug fix release</p>
|
|
434
|
+
<ul>
|
|
435
|
+
<li>Added option to enable/disable WCS injection in G-code dialect</li>
|
|
436
|
+
<li>Fixed depth engraver not respecting master power setting</li>
|
|
437
|
+
<li>Fixed traceback when using invert image in import dialog</li>
|
|
438
|
+
</ul>
|
|
439
|
+
</description>
|
|
440
|
+
</release>
|
|
441
|
+
<release version="0.28.2" date="2026-01-17">
|
|
442
|
+
<description>
|
|
443
|
+
<p>Bug fix release</p>
|
|
444
|
+
<ul>
|
|
445
|
+
<li>Fixed test that depended on specific version string</li>
|
|
446
|
+
</ul>
|
|
447
|
+
</description>
|
|
448
|
+
</release>
|
|
449
|
+
<release version="0.28.1" date="2026-01-17">
|
|
450
|
+
<description>
|
|
451
|
+
<p>Bug fix release</p>
|
|
452
|
+
<ul>
|
|
453
|
+
<li>Fixed invalid ampersand in appstream XML</li>
|
|
454
|
+
</ul>
|
|
455
|
+
</description>
|
|
456
|
+
</release>
|
|
457
|
+
<release version="0.28" date="2026-01-17">
|
|
458
|
+
<description>
|
|
459
|
+
<p>Work Coordinate Systems, True Arcs, and a New Package Manager</p>
|
|
460
|
+
<ul>
|
|
461
|
+
<li>Full support for Work Coordinate Systems (WCS) G54-G59</li>
|
|
462
|
+
<li>True arc support with superior geometry handling</li>
|
|
463
|
+
<li>New Package Manager for extensibility</li>
|
|
464
|
+
<li>New sketcher tools: Rectangle, Fillet, and Chamfer</li>
|
|
465
|
+
<li>Optimized G-code output and improved GRBL driver</li>
|
|
466
|
+
<li>Always-active Cancel button and improved UI</li>
|
|
467
|
+
<li>Numerous bug fixes and performance improvements</li>
|
|
468
|
+
</ul>
|
|
469
|
+
</description>
|
|
470
|
+
</release>
|
|
471
|
+
<release version="0.27.1" date="2025-01-03">
|
|
472
|
+
<description>
|
|
473
|
+
<p>Maintenance release with performance improvements</p>
|
|
474
|
+
<ul>
|
|
475
|
+
<li>Major performance boost for SVG imports</li>
|
|
476
|
+
<li>Fixed invalid clipping paths in SVG files</li>
|
|
477
|
+
<li>Restored sketcher fill toggling</li>
|
|
478
|
+
<li>Theme-aware sketcher line colors</li>
|
|
479
|
+
<li>Corrected laser dot position</li>
|
|
480
|
+
</ul>
|
|
481
|
+
</description>
|
|
482
|
+
</release>
|
|
483
|
+
<release version="0.27" date="2025-01-02">
|
|
484
|
+
<description>
|
|
485
|
+
<p>Enhanced Sketching, Machine Control & UI Refinements</p>
|
|
486
|
+
<ul>
|
|
487
|
+
<li>Expressions and parameters in parametric sketcher</li>
|
|
488
|
+
<li>Filled shapes support in sketcher</li>
|
|
489
|
+
<li>Improved constraint visualization and drag-select</li>
|
|
490
|
+
<li>Robust GRBL serial driver with better recovery</li>
|
|
491
|
+
<li>Variable substitutions in G-code</li>
|
|
492
|
+
<li>Flexible machine origins and negative axis support</li>
|
|
493
|
+
<li>Icon refresh and redesigned machine settings dialog</li>
|
|
494
|
+
<li>Dark mode improvements and streamlined settings</li>
|
|
495
|
+
</ul>
|
|
496
|
+
</description>
|
|
497
|
+
</release>
|
|
498
|
+
<release version="0.26" date="2025-11-30">
|
|
499
|
+
<description>
|
|
500
|
+
<p>Parametric 2D Sketcher & Major Performance Upgrades</p>
|
|
501
|
+
<ul>
|
|
502
|
+
<li>Parametric 2D sketcher with constraint system</li>
|
|
503
|
+
<li>Import/export sketches with parametric constraints</li>
|
|
504
|
+
<li>Significantly reduced memory usage</li>
|
|
505
|
+
<li>Faster operations with complex vector files</li>
|
|
506
|
+
<li>Fixed 3D view and G-code mirroring with Y-down machines</li>
|
|
507
|
+
<li>Improved Smoothieware driver compatibility</li>
|
|
508
|
+
<li>Added Makera Carvera Air machine profile</li>
|
|
509
|
+
</ul>
|
|
510
|
+
</description>
|
|
511
|
+
</release>
|
|
512
|
+
<release version="0.25" date="2025-11-22">
|
|
513
|
+
<description>
|
|
514
|
+
<p>New Import Experience & Object Management</p>
|
|
515
|
+
<ul>
|
|
516
|
+
<li>Interactive import dialog with tracing controls</li>
|
|
517
|
+
<li>Split workpiece command for separating assets</li>
|
|
518
|
+
<li>Custom G-code dialects support</li>
|
|
519
|
+
<li>Inner edges first in contour operations</li>
|
|
520
|
+
<li>Improved UI responsiveness with debouncing</li>
|
|
521
|
+
<li>Fixed power display bug and grouping visuals</li>
|
|
522
|
+
</ul>
|
|
523
|
+
</description>
|
|
524
|
+
</release>
|
|
525
|
+
<release version="0.22" date="2025-09-20">
|
|
526
|
+
<description>
|
|
527
|
+
<p>This is the initial release.</p>
|
|
528
|
+
</description>
|
|
529
|
+
</release>
|
|
530
|
+
</releases>
|
|
531
|
+
</component>
|