fiberpath 0.7.1__tar.gz → 0.7.3__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.
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.github/actions/setup-node/action.yml +1 -1
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.github/actions/setup-python/action.yml +3 -3
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.github/actions/setup-rust/action.yml +1 -1
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.github/workflows/backend-ci.yml +4 -4
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.github/workflows/ci-check.yml +16 -22
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.github/workflows/dependency-audit.yml +3 -3
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.github/workflows/gui-ci.yml +3 -8
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.github/workflows/gui-e2e-smoke.yml +1 -1
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.github/workflows/gui-packaging.yml +11 -2
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.github/workflows/release.yml +9 -61
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.gitignore +0 -6
- {fiberpath-0.7.1 → fiberpath-0.7.3}/CHANGELOG.md +71 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/PKG-INFO +29 -31
- {fiberpath-0.7.1 → fiberpath-0.7.3}/README.md +27 -26
- fiberpath-0.7.3/docs/.pages +13 -0
- fiberpath-0.7.3/docs/architecture/.pages +3 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/architecture/overview.md +1 -2
- fiberpath-0.7.3/docs/development/.pages +8 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/development/ci-cd.md +14 -19
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/development/contributing.md +8 -5
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/development/dependency-policy.md +20 -3
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/development/release-process.md +2 -2
- fiberpath-0.7.3/docs/development/roadmap.md +154 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/getting-started.md +2 -2
- fiberpath-0.7.3/docs/guides/.pages +5 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/guides/wind-format.md +2 -2
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/index.md +9 -9
- fiberpath-0.7.3/docs/reference/.pages +4 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/troubleshooting.md +3 -3
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/execution/marlin.py +30 -65
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/gcode/generator.py +1 -6
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/planning/exceptions.py +0 -5
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/planning/helpers.py +0 -6
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/planning/layer_strategies.py +1 -12
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/simulation/simulator.py +2 -2
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/visualization/plotter.py +4 -8
- fiberpath-0.7.3/fiberpath_api/main.py +34 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_api/path_policy.py +30 -10
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_api/routes/stream.py +5 -1
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_cli/interactive.py +21 -42
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/README.md +1 -1
- fiberpath-0.7.3/fiberpath_gui/docs/.pages +7 -0
- fiberpath-0.7.3/fiberpath_gui/docs/architecture/.pages +5 -0
- fiberpath-0.7.3/fiberpath_gui/docs/guides/.pages +4 -0
- fiberpath-0.7.3/fiberpath_gui/docs/reference/.pages +2 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/package-lock.json +414 -377
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/package.json +18 -18
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/MenuBar.tsx +1 -1
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/canvas/VisualizationCanvas.tsx +3 -3
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/dialogs/AboutDialog.tsx +2 -2
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/dialogs/CliUnavailableDialog.tsx +8 -5
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/dialogs/ExportConfirmationDialog.tsx +4 -4
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useFileOperations.test.tsx +1 -2
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useFileOperations.ts +5 -6
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/main.tsx +3 -8
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/tests/renderWithProviders.tsx +3 -6
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/types/converters.test.ts +17 -4
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/types/converters.ts +20 -17
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/types/project.ts +15 -9
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/Cargo.lock +208 -84
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/Cargo.toml +2 -2
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/src/main.rs +94 -23
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/src/marlin.rs +26 -51
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/tauri.conf.json +1 -1
- {fiberpath-0.7.1 → fiberpath-0.7.3}/pyproject.toml +2 -7
- fiberpath-0.7.3/renovate.json +4 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/scripts/freeze_cli.py +0 -4
- fiberpath-0.7.3/tests/api/test_path_policy.py +247 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/api/test_plan_route.py +49 -8
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/api/test_simulate_route.py +27 -9
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/api/test_stream_route_errors.py +11 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/execution/test_marlin_streamer.py +69 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/uv.lock +10 -382
- fiberpath-0.7.1/.github/dependabot.yml +0 -122
- fiberpath-0.7.1/.github/workflows/docs-ci.yml +0 -35
- fiberpath-0.7.1/.github/workflows/docs-deploy.yml +0 -64
- fiberpath-0.7.1/TODO.md +0 -21
- fiberpath-0.7.1/examples/complex_surface/README.md +0 -3
- fiberpath-0.7.1/fiberpath/geometry/__init__.py +0 -13
- fiberpath-0.7.1/fiberpath/geometry/curves.py +0 -16
- fiberpath-0.7.1/fiberpath/geometry/intersections.py +0 -23
- fiberpath-0.7.1/fiberpath/geometry/surfaces.py +0 -17
- fiberpath-0.7.1/fiberpath_api/main.py +0 -21
- fiberpath-0.7.1/fiberpath_gui/src/components/ErrorNotificationToast.tsx +0 -39
- fiberpath-0.7.1/fiberpath_gui/src/contexts/ErrorNotificationContext.tsx +0 -102
- fiberpath-0.7.1/mkdocs.yml +0 -80
- fiberpath-0.7.1/scripts/sync_gui_docs.py +0 -91
- fiberpath-0.7.1/tests/geometry/test_surfaces.py +0 -6
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.gitattributes +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.pre-commit-config.yaml +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.vscode/extensions.json +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.vscode/launch.json +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/.vscode/settings.json +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/LICENSE +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/architecture/axis-system.md +0 -0
- {fiberpath-0.7.1/docs → fiberpath-0.7.3/docs/development}/feature-backlog.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/development/packaging.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/development/tooling.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/guides/axis-mapping.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/guides/marlin-streaming.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/guides/visualization.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/reference/api.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/reference/concepts.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/reference/planner-math.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/docs/vm-testing.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/README.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/multi_layer/README.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/multi_layer/input.wind +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/rocketry/AvBay(470mm)single.wind +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/rocketry/AvBay(470mm)triple.gcode +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/rocketry/AvBay(470mm)triple.wind +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/rocketry/CarbonMotorTube(1295mm).gcode +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/rocketry/CarbonMotorTube(1295mm).wind +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/rocketry/MainChute(585mm).gcode +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/rocketry/MainChute(585mm).wind +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/simple_cylinder/README.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/simple_cylinder/input.wind +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/sized_simple_cylinder/README.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/examples/sized_simple_cylinder/input.wind +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/__init__.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/config/__init__.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/config/schemas.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/config/validator.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/execution/__init__.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/gcode/__init__.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/gcode/dialects.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/math_utils.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/planning/__init__.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/planning/calculations.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/planning/machine.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/planning/planner.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/planning/validators.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/simulation/__init__.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/visualization/__init__.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath/visualization/export_json.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_api/__init__.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_api/package-lock.json +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_api/routes/__init__.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_api/routes/plan.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_api/routes/simulate.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_api/routes/validate.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_api/schemas.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_cli/__init__.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_cli/__main__.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_cli/main.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_cli/output.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_cli/plan.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_cli/plot.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_cli/simulate.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_cli/stream.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_cli/validate.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/.gitignore +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/.nvmrc +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/.stylelintrc.json +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/bundled-cli/.gitkeep +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/docs/architecture/cli-integration.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/docs/architecture/state-management.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/docs/architecture/streaming-state.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/docs/architecture/tech-stack.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/docs/development.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/docs/guides/performance.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/docs/guides/schemas.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/docs/guides/styling.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/docs/overview.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/docs/reference/type-safety.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/docs/testing.md +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/generate-types.json +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/index.html +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/perf/bundle-baseline.json +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/schemas/wind-schema.json +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/scripts/check-bundle-budget.mjs +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/scripts/check-css-vars.mjs +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/App.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/CliHealthWarning.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/ErrorBoundary.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/ErrorBoundary.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StatusBar.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StatusBar.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/ConnectionSection.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/ConnectionSection.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/ConnectionSection.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/ManualControlSection.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/ManualControlSection.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/ManualControlSection.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/StreamControls.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/StreamControls.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/StreamLog.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/StreamLog.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/StreamLog.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/StreamTab.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/StreamTab/StreamTab.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/TabBar.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/TabBar.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/Toast/ToastContainer.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/Toast/ToastContainer.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/Toast/ToastContainer.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/canvas/CanvasControls.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/canvas/CanvasControls.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/canvas/CenterCanvas.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/canvas/LayerScrubber.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/canvas/LayerScrubber.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/dialogs/BaseDialog.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/dialogs/BaseDialog.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/dialogs/DiagnosticsDialog.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/dialogs/DiagnosticsDialog.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/editors/HelicalLayerEditor.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/editors/HelicalLayerEditor.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/editors/HoopLayerEditor.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/editors/HoopLayerEditor.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/editors/LayerNumericField.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/editors/SkipLayerEditor.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/editors/SkipLayerEditor.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/forms/MachineSettingsForm.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/forms/MachineSettingsForm.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/forms/MandrelForm.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/forms/MandrelForm.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/forms/TowForm.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/forms/TowForm.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/layers/LayerRow.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/layers/LayerRow.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/layers/LayerStack.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/layers/LayerStack.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/panels/BottomPanel.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/panels/LeftPanel.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/panels/RightPanel.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/panels/panels.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/tabs/MainTab.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/components/tabs/MainTab.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/contexts/CliHealthContext.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/contexts/CliHealthContext.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/canvas/usePreviewGeneration.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/canvas/usePreviewGeneration.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/stream/useConnectionActions.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/stream/useConnectionActions.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/stream/useManualCommandActions.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/stream/useManualCommandActions.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/stream/useStreamingActions.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/stream/useStreamingActions.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useCliHealth.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useCliHealth.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useDebouncedValue.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useDebouncedValue.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useKeyboardShortcuts.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useKeyboardShortcuts.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useMenubarInteractions.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useMenubarInteractions.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useStreamEvents.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useTheme.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/hooks/useTheme.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/layouts/MainLayout.test.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/layouts/MainLayout.tsx +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/commands.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/commands.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/constants.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/fileOperations.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/fileOperations.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/helicalValidation.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/helicalValidation.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/marlin-api.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/marlin-api.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/menuConfig.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/menuConfig.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/numericFields.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/numericFields.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/recentFiles.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/recentFiles.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/retry.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/retry.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/schemas.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/schemas.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/streamFeedback.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/streamFeedback.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/tauri-types.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/toastMessages.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/validation.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/validation.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/validationErrors.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/lib/validationErrors.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/stores/projectStore.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/stores/projectStore.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/stores/streamStore.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/stores/toastStore.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/stores/toastStore.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/styles/buttons.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/styles/canvas.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/styles/dialogs.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/styles/forms.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/styles/index.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/styles/layout.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/styles/notifications.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/styles/panels.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/styles/reset.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/styles/tabs.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/styles/tokens.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/styles/typography.css +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/tests/integration/streamLifecycle.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/tests/integration/workflows.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/tests/setup.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/tests/storeUtils.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/tests/tauriMocks.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/types/components.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/types/project.test.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src/types/wind-schema.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/build.rs +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/capabilities/default.json +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/icons/128x128.png +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/icons/256x256.png +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/icons/32x32.png +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/icons/512x512.png +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/icons/icon.ico +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/src/cli_path.rs +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/src-tauri/src/cli_process.rs +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/tsconfig.json +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/tsconfig.node.json +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/vite.config.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/fiberpath_gui/vitest.config.ts +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/package-lock.json +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/scripts/ci/e2e-check-artifacts.ps1 +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/scripts/ci/e2e-check-artifacts.sh +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/scripts/ci/e2e-cli-smoke.ps1 +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/scripts/ci/e2e-cli-smoke.sh +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/scripts/ci/extract-package-runtime.ps1 +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/scripts/ci/extract-package-runtime.sh +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/scripts/ci/find-bundled-cli.ps1 +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/scripts/ci/find-bundled-cli.sh +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/scripts/export_schema.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/scripts/generate_schema.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/setup.cfg +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/api/test_stream_route.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cli/test_axis_format.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cli/test_cli_json.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cli/test_cli_smoke.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cli/test_stream_command.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/config/__init__.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/config/test_validator.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cyclone_reference_runs/inputs/helical-balanced.wind +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cyclone_reference_runs/inputs/simple-hoop.wind +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cyclone_reference_runs/inputs/skip-bias.wind +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cyclone_reference_runs/outputs/helical-balanced/output.gcode +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cyclone_reference_runs/outputs/helical-balanced/preview.png +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cyclone_reference_runs/outputs/simple-hoop/output.gcode +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cyclone_reference_runs/outputs/simple-hoop/preview.png +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cyclone_reference_runs/outputs/skip-bias/output.gcode +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/cyclone_reference_runs/outputs/skip-bias/preview.png +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/gcode/test_dialects.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/gcode/test_generator.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/planning/_generate_fixtures.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/planning/fixtures/helical_layer.gcode +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/planning/fixtures/hoop_layer.gcode +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/planning/fixtures/hoop_only_program.gcode +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/planning/fixtures/skip_layer.gcode +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/planning/test_axis_mapping.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/planning/test_helpers_machine.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/planning/test_layer_strategies.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/planning/test_planner_smoke.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/planning/test_validators.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/simulation/test_simulator.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/simulation/test_simulator_axis_detection.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/tauri/test_marlin_integration.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/tauri/test_port_discovery.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/visualization/test_export_json.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/visualization/test_plotter.py +0 -0
- {fiberpath-0.7.1 → fiberpath-0.7.3}/tests/visualization/test_plotter_axis_detection.py +0 -0
|
@@ -9,7 +9,7 @@ inputs:
|
|
|
9
9
|
dependencies:
|
|
10
10
|
description: Dependency groups to install (e.g., ".[dev,api]")
|
|
11
11
|
required: false
|
|
12
|
-
default: ".[dev,api
|
|
12
|
+
default: ".[dev,api]"
|
|
13
13
|
cache-key-suffix:
|
|
14
14
|
description: Additional suffix for cache key
|
|
15
15
|
required: false
|
|
@@ -24,13 +24,13 @@ runs:
|
|
|
24
24
|
python-version: ${{ inputs.python-version }}
|
|
25
25
|
|
|
26
26
|
- name: Set up uv
|
|
27
|
-
uses: astral-sh/setup-uv@
|
|
27
|
+
uses: astral-sh/setup-uv@v8.2.0
|
|
28
28
|
with:
|
|
29
29
|
enable-cache: true
|
|
30
30
|
cache-dependency-glob: "pyproject.toml"
|
|
31
31
|
|
|
32
32
|
- name: Cache Python virtual environment
|
|
33
|
-
uses: actions/cache@
|
|
33
|
+
uses: actions/cache@v6
|
|
34
34
|
with:
|
|
35
35
|
path: .venv
|
|
36
36
|
key: venv-${{ runner.os }}-${{ inputs.python-version }}-${{ hashFiles('pyproject.toml') }}-${{ inputs.cache-key-suffix }}
|
|
@@ -13,12 +13,12 @@ jobs:
|
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
steps:
|
|
15
15
|
- name: Checkout repository
|
|
16
|
-
uses: actions/checkout@
|
|
16
|
+
uses: actions/checkout@v7
|
|
17
17
|
|
|
18
18
|
- name: Setup Python environment
|
|
19
19
|
uses: ./.github/actions/setup-python
|
|
20
20
|
with:
|
|
21
|
-
dependencies: ".[dev,api
|
|
21
|
+
dependencies: ".[dev,api]"
|
|
22
22
|
|
|
23
23
|
- name: Run Ruff linter
|
|
24
24
|
run: uv run ruff check
|
|
@@ -39,7 +39,7 @@ jobs:
|
|
|
39
39
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
40
40
|
steps:
|
|
41
41
|
- name: Checkout repository
|
|
42
|
-
uses: actions/checkout@
|
|
42
|
+
uses: actions/checkout@v7
|
|
43
43
|
|
|
44
44
|
- name: Setup Python environment
|
|
45
45
|
uses: ./.github/actions/setup-python
|
|
@@ -52,7 +52,7 @@ jobs:
|
|
|
52
52
|
|
|
53
53
|
- name: Upload coverage
|
|
54
54
|
if: matrix.os == 'ubuntu-latest'
|
|
55
|
-
uses: codecov/codecov-action@
|
|
55
|
+
uses: codecov/codecov-action@v7
|
|
56
56
|
with:
|
|
57
57
|
files: ./coverage.xml
|
|
58
58
|
flags: backend
|
|
@@ -13,28 +13,22 @@ on:
|
|
|
13
13
|
- "pyproject.toml"
|
|
14
14
|
- "uv.lock"
|
|
15
15
|
- "setup.cfg"
|
|
16
|
-
- "
|
|
16
|
+
- "renovate.json"
|
|
17
17
|
- "README.md"
|
|
18
|
+
- "CHANGELOG.md"
|
|
18
19
|
- "scripts/**"
|
|
19
20
|
- ".github/workflows/**"
|
|
20
21
|
- ".github/actions/**"
|
|
21
22
|
pull_request:
|
|
23
|
+
# No paths filter on purpose. "CI Check" is a required status check, so it
|
|
24
|
+
# must run on EVERY PR to main and always report a result. With a paths
|
|
25
|
+
# filter, a PR touching only unfiltered files (e.g. a Renovate-managed
|
|
26
|
+
# .pre-commit-config.yaml or renovate.json) would never trigger the
|
|
27
|
+
# workflow, leaving the required check stuck "Expected" and blocking merge.
|
|
28
|
+
# The `changes` job below still gates the heavy jobs by path, and the
|
|
29
|
+
# `ci-check` aggregator always posts — so cost stays low while every PR is
|
|
30
|
+
# mergeable.
|
|
22
31
|
branches: [main]
|
|
23
|
-
paths:
|
|
24
|
-
- "fiberpath/**"
|
|
25
|
-
- "fiberpath_api/**"
|
|
26
|
-
- "fiberpath_cli/**"
|
|
27
|
-
- "fiberpath_gui/**"
|
|
28
|
-
- "docs/**"
|
|
29
|
-
- "tests/**"
|
|
30
|
-
- "pyproject.toml"
|
|
31
|
-
- "uv.lock"
|
|
32
|
-
- "setup.cfg"
|
|
33
|
-
- "mkdocs.yml"
|
|
34
|
-
- "README.md"
|
|
35
|
-
- "scripts/**"
|
|
36
|
-
- ".github/workflows/**"
|
|
37
|
-
- ".github/actions/**"
|
|
38
32
|
workflow_dispatch:
|
|
39
33
|
|
|
40
34
|
permissions:
|
|
@@ -50,7 +44,7 @@ jobs:
|
|
|
50
44
|
docs: ${{ steps.filter.outputs.docs }}
|
|
51
45
|
steps:
|
|
52
46
|
- name: Checkout repository
|
|
53
|
-
uses: actions/checkout@
|
|
47
|
+
uses: actions/checkout@v7
|
|
54
48
|
|
|
55
49
|
- name: Detect changed areas
|
|
56
50
|
id: filter
|
|
@@ -76,11 +70,8 @@ jobs:
|
|
|
76
70
|
docs:
|
|
77
71
|
- "docs/**"
|
|
78
72
|
- "fiberpath_gui/docs/**"
|
|
79
|
-
- "mkdocs.yml"
|
|
80
|
-
- "scripts/sync_gui_docs.py"
|
|
81
73
|
- "README.md"
|
|
82
|
-
- ".github/workflows/
|
|
83
|
-
- ".github/actions/setup-python/**"
|
|
74
|
+
- ".github/workflows/ci-check.yml"
|
|
84
75
|
|
|
85
76
|
backend:
|
|
86
77
|
name: Backend
|
|
@@ -98,7 +89,10 @@ jobs:
|
|
|
98
89
|
name: Docs
|
|
99
90
|
needs: changes
|
|
100
91
|
if: needs.changes.outputs.docs == 'true'
|
|
101
|
-
uses:
|
|
92
|
+
uses: fiberpath/.github/.github/workflows/docs-validate.yml@main
|
|
93
|
+
with:
|
|
94
|
+
section: fiberpath
|
|
95
|
+
gui_docs_path: fiberpath_gui/docs
|
|
102
96
|
|
|
103
97
|
ci-check:
|
|
104
98
|
name: CI Check
|
|
@@ -18,7 +18,7 @@ jobs:
|
|
|
18
18
|
runs-on: ubuntu-latest
|
|
19
19
|
steps:
|
|
20
20
|
- name: Checkout repository
|
|
21
|
-
uses: actions/checkout@
|
|
21
|
+
uses: actions/checkout@v7
|
|
22
22
|
|
|
23
23
|
- name: Setup Python environment
|
|
24
24
|
uses: ./.github/actions/setup-python
|
|
@@ -46,7 +46,7 @@ jobs:
|
|
|
46
46
|
working-directory: fiberpath_gui
|
|
47
47
|
steps:
|
|
48
48
|
- name: Checkout repository
|
|
49
|
-
uses: actions/checkout@
|
|
49
|
+
uses: actions/checkout@v7
|
|
50
50
|
|
|
51
51
|
- name: Setup Node.js environment
|
|
52
52
|
uses: ./.github/actions/setup-node
|
|
@@ -69,7 +69,7 @@ jobs:
|
|
|
69
69
|
working-directory: fiberpath_gui/src-tauri
|
|
70
70
|
steps:
|
|
71
71
|
- name: Checkout repository
|
|
72
|
-
uses: actions/checkout@
|
|
72
|
+
uses: actions/checkout@v7
|
|
73
73
|
|
|
74
74
|
- name: Setup Rust environment
|
|
75
75
|
uses: ./.github/actions/setup-rust
|
|
@@ -16,16 +16,11 @@ jobs:
|
|
|
16
16
|
working-directory: fiberpath_gui
|
|
17
17
|
steps:
|
|
18
18
|
- name: Checkout repository
|
|
19
|
-
uses: actions/checkout@
|
|
19
|
+
uses: actions/checkout@v7
|
|
20
20
|
|
|
21
21
|
- name: Setup Node.js environment
|
|
22
22
|
uses: ./.github/actions/setup-node
|
|
23
23
|
|
|
24
|
-
- name: Setup Rust environment
|
|
25
|
-
uses: ./.github/actions/setup-rust
|
|
26
|
-
with:
|
|
27
|
-
install-linux-deps: "true"
|
|
28
|
-
|
|
29
24
|
- name: Run TypeScript type check
|
|
30
25
|
run: npm run lint
|
|
31
26
|
|
|
@@ -44,7 +39,7 @@ jobs:
|
|
|
44
39
|
working-directory: fiberpath_gui
|
|
45
40
|
steps:
|
|
46
41
|
- name: Checkout repository
|
|
47
|
-
uses: actions/checkout@
|
|
42
|
+
uses: actions/checkout@v7
|
|
48
43
|
|
|
49
44
|
- name: Setup Node.js environment
|
|
50
45
|
uses: ./.github/actions/setup-node
|
|
@@ -56,7 +51,7 @@ jobs:
|
|
|
56
51
|
run: npm run test:coverage
|
|
57
52
|
|
|
58
53
|
- name: Upload coverage
|
|
59
|
-
uses: codecov/codecov-action@
|
|
54
|
+
uses: codecov/codecov-action@v7
|
|
60
55
|
with:
|
|
61
56
|
files: ./fiberpath_gui/coverage/lcov.info
|
|
62
57
|
flags: gui
|
|
@@ -51,7 +51,7 @@ jobs:
|
|
|
51
51
|
os: [windows-latest, macos-latest, ubuntu-latest]
|
|
52
52
|
steps:
|
|
53
53
|
- name: Checkout repository
|
|
54
|
-
uses: actions/checkout@
|
|
54
|
+
uses: actions/checkout@v7
|
|
55
55
|
|
|
56
56
|
- name: Set up Python (no cache for freeze)
|
|
57
57
|
uses: actions/setup-python@v6
|
|
@@ -130,7 +130,7 @@ jobs:
|
|
|
130
130
|
working-directory: fiberpath_gui
|
|
131
131
|
steps:
|
|
132
132
|
- name: Checkout repository
|
|
133
|
-
uses: actions/checkout@
|
|
133
|
+
uses: actions/checkout@v7
|
|
134
134
|
|
|
135
135
|
- name: Download frozen CLI artifact
|
|
136
136
|
uses: actions/download-artifact@v8
|
|
@@ -163,6 +163,15 @@ jobs:
|
|
|
163
163
|
with:
|
|
164
164
|
install-linux-deps: "true"
|
|
165
165
|
|
|
166
|
+
- name: Clean stale bundle output
|
|
167
|
+
shell: bash
|
|
168
|
+
run: |
|
|
169
|
+
# The setup-rust cache restores target/, which includes previously
|
|
170
|
+
# built, version-stamped installers under release/bundle/. Remove them
|
|
171
|
+
# before building so the version-agnostic upload globs only ever pick
|
|
172
|
+
# up the current build's artifacts (see #120).
|
|
173
|
+
rm -rf src-tauri/target/release/bundle
|
|
174
|
+
|
|
166
175
|
- name: Build Tauri bundles
|
|
167
176
|
run: npm run package
|
|
168
177
|
|
|
@@ -25,7 +25,7 @@ jobs:
|
|
|
25
25
|
tag: ${{ steps.check.outputs.tag }}
|
|
26
26
|
steps:
|
|
27
27
|
- name: Checkout repository
|
|
28
|
-
uses: actions/checkout@
|
|
28
|
+
uses: actions/checkout@v7
|
|
29
29
|
with:
|
|
30
30
|
fetch-depth: 0
|
|
31
31
|
|
|
@@ -69,7 +69,7 @@ jobs:
|
|
|
69
69
|
runs-on: ubuntu-latest
|
|
70
70
|
steps:
|
|
71
71
|
- name: Checkout repository
|
|
72
|
-
uses: actions/checkout@
|
|
72
|
+
uses: actions/checkout@v7
|
|
73
73
|
|
|
74
74
|
- name: Create SBOM output directory
|
|
75
75
|
run: mkdir -p sbom
|
|
@@ -109,7 +109,7 @@ jobs:
|
|
|
109
109
|
runs-on: ubuntu-latest
|
|
110
110
|
steps:
|
|
111
111
|
- name: Checkout repository
|
|
112
|
-
uses: actions/checkout@
|
|
112
|
+
uses: actions/checkout@v7
|
|
113
113
|
|
|
114
114
|
- name: Download SBOM artifacts
|
|
115
115
|
uses: actions/download-artifact@v8
|
|
@@ -117,14 +117,6 @@ jobs:
|
|
|
117
117
|
name: sbom-artifacts
|
|
118
118
|
path: sbom
|
|
119
119
|
|
|
120
|
-
- name: Get previous tag
|
|
121
|
-
id: previous-tag
|
|
122
|
-
run: |
|
|
123
|
-
# Get previous tag BEFORE creating new one
|
|
124
|
-
PREV_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
125
|
-
echo "previous=$PREV_TAG" >> $GITHUB_OUTPUT
|
|
126
|
-
echo "Previous tag: ${PREV_TAG:-none}"
|
|
127
|
-
|
|
128
120
|
- name: Create release tag
|
|
129
121
|
run: |
|
|
130
122
|
git config user.name "github-actions[bot]"
|
|
@@ -137,7 +129,6 @@ jobs:
|
|
|
137
129
|
uses: actions/github-script@v9
|
|
138
130
|
with:
|
|
139
131
|
script: |
|
|
140
|
-
const prevTag = '${{ steps.previous-tag.outputs.previous }}';
|
|
141
132
|
const newTag = '${{ needs.validate.outputs.tag }}';
|
|
142
133
|
const version = '${{ inputs.version }}';
|
|
143
134
|
const repo = context.repo;
|
|
@@ -154,8 +145,8 @@ jobs:
|
|
|
154
145
|
notes += `**Linux:**\n`;
|
|
155
146
|
notes += `- \`fiberpath_${version}_amd64.deb\`\n`;
|
|
156
147
|
notes += `- \`fiberpath_${version}_amd64.AppImage\`\n\n`;
|
|
157
|
-
notes += `📚 [Installation Guide](https://
|
|
158
|
-
notes += `🆘 [Troubleshooting](https://
|
|
148
|
+
notes += `📚 [Installation Guide](https://fiberpath.org/fiberpath/getting-started/) | `;
|
|
149
|
+
notes += `🆘 [Troubleshooting](https://fiberpath.org/fiberpath/troubleshooting/)\n\n`;
|
|
159
150
|
|
|
160
151
|
// Python package section
|
|
161
152
|
notes += `## Python Package\n\n`;
|
|
@@ -165,52 +156,8 @@ jobs:
|
|
|
165
156
|
notes += `[PyPI Package](https://pypi.org/project/fiberpath/${version}/) | `;
|
|
166
157
|
notes += `[Source Code](https://github.com/${repo.owner}/${repo.repo}/tree/${newTag})\n\n`;
|
|
167
158
|
|
|
168
|
-
// Changelog
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
if (prevTag) {
|
|
172
|
-
const { data: comparison } = await github.rest.repos.compareCommits({
|
|
173
|
-
owner: repo.owner,
|
|
174
|
-
repo: repo.repo,
|
|
175
|
-
base: prevTag,
|
|
176
|
-
head: newTag
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
// Categorize commits
|
|
180
|
-
const added = [];
|
|
181
|
-
const fixed = [];
|
|
182
|
-
const changed = [];
|
|
183
|
-
|
|
184
|
-
comparison.commits.forEach(commit => {
|
|
185
|
-
const msg = commit.commit.message.split('\n')[0];
|
|
186
|
-
const sha = commit.sha.substring(0, 7);
|
|
187
|
-
const entry = `- ${msg} (\`${sha}\`)`;
|
|
188
|
-
|
|
189
|
-
const lower = msg.toLowerCase();
|
|
190
|
-
if (lower.startsWith('add') || lower.startsWith('feat')) {
|
|
191
|
-
added.push(entry);
|
|
192
|
-
} else if (lower.startsWith('fix')) {
|
|
193
|
-
fixed.push(entry);
|
|
194
|
-
} else {
|
|
195
|
-
changed.push(entry);
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
if (added.length > 0) {
|
|
200
|
-
notes += `### Added\n${added.join('\n')}\n\n`;
|
|
201
|
-
}
|
|
202
|
-
if (fixed.length > 0) {
|
|
203
|
-
notes += `### Fixed\n${fixed.join('\n')}\n\n`;
|
|
204
|
-
}
|
|
205
|
-
if (changed.length > 0) {
|
|
206
|
-
notes += `### Changed\n${changed.join('\n')}\n\n`;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
notes += `**Full Changelog:** https://github.com/${repo.owner}/${repo.repo}/compare/${prevTag}...${newTag}\n`;
|
|
210
|
-
} else {
|
|
211
|
-
notes += `Initial release.\n`;
|
|
212
|
-
}
|
|
213
|
-
|
|
159
|
+
// The changelog (## What's Changed + Full Changelog compare link) is
|
|
160
|
+
// appended automatically by generate_release_notes on the release step.
|
|
214
161
|
return notes;
|
|
215
162
|
result-encoding: string
|
|
216
163
|
|
|
@@ -231,6 +178,7 @@ jobs:
|
|
|
231
178
|
tag_name: ${{ needs.validate.outputs.tag }}
|
|
232
179
|
name: Release ${{ inputs.version }}
|
|
233
180
|
body: ${{ steps.notes.outputs.result }}
|
|
181
|
+
generate_release_notes: true
|
|
234
182
|
draft: false
|
|
235
183
|
prerelease: ${{ inputs.prerelease }}
|
|
236
184
|
files: |
|
|
@@ -249,7 +197,7 @@ jobs:
|
|
|
249
197
|
url: https://pypi.org/project/fiberpath/
|
|
250
198
|
steps:
|
|
251
199
|
- name: Checkout repository
|
|
252
|
-
uses: actions/checkout@
|
|
200
|
+
uses: actions/checkout@v7
|
|
253
201
|
|
|
254
202
|
- name: Setup Python environment
|
|
255
203
|
uses: ./.github/actions/setup-python
|
|
@@ -8,6 +8,77 @@ The format is based on Keep a Changelog, and this project follows semantic versi
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [0.7.3] - 2026-06-25
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- **Project moved to the [`fiberpath` GitHub organization](https://github.com/fiberpath).** The repository, issue tracker, and PyPI trusted publisher now live under `fiberpath/fiberpath`. `pip install fiberpath` is unchanged.
|
|
16
|
+
- Documentation now lives at **[fiberpath.org](https://fiberpath.org)** (FiberPath docs at `fiberpath.org/fiberpath`), built and published from the `fiberpath/fiberpath.github.io` hub. This repository now contains only docs content under `docs/`; the MkDocs configuration, site assembly, and publishing moved to the hub, and docs are validated on every PR via the org's shared `docs-validate` reusable workflow.
|
|
17
|
+
- The required `CI Check` status now runs on every pull request (no path filter) so it always reports and never leaves a PR stuck pending; an inner change-detection job still gates the heavy backend/GUI/docs jobs by path.
|
|
18
|
+
- Release notes are now produced by GitHub-native release-note generation instead of `git describe`, fixing the "Initial release." text that appeared on prior releases.
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Unified helical-layer defaults via a shared `HELICAL_DEFAULTS` constant so the CLI, API, and GUI agree on the same values.
|
|
23
|
+
|
|
24
|
+
### Removed
|
|
25
|
+
|
|
26
|
+
- Retired `TODO.md` in favor of tracked GitHub issues.
|
|
27
|
+
|
|
28
|
+
### Documentation
|
|
29
|
+
|
|
30
|
+
- Added a development roadmap and relocated the feature backlog under `docs/development/`.
|
|
31
|
+
|
|
32
|
+
### Dependencies
|
|
33
|
+
|
|
34
|
+
- Migrated dependency automation from Dependabot to org-shared **Renovate** (preset `github>fiberpath/renovate-config`); Dependabot security alerts/updates remain enabled.
|
|
35
|
+
- GitHub Actions: `actions/setup-node` v6, `actions/cache` v6.
|
|
36
|
+
- npm: `@types/node` 26.0.1, `stylelint` 17.14.0.
|
|
37
|
+
|
|
38
|
+
## [0.7.2] - 2026-06-24
|
|
39
|
+
|
|
40
|
+
### Security
|
|
41
|
+
|
|
42
|
+
- Hardened API path policy (`enforce_input_path_policy`) to reject absolute paths (POSIX `/`, Windows drive `C:\`, UNC `\\`), NUL bytes, `..` traversal segments, and empty/whitespace inputs with 400 before any filesystem access. Resolved CodeQL alert #9 ("Uncontrolled data used in path expression").
|
|
43
|
+
- Patched `starlette` CVE-2026-48710 (BadHost) by upgrading to a fixed release.
|
|
44
|
+
- Cleared the GUI dev-tree advisories `js-yaml` (GHSA-h67p-54hq-rp68, merge-key DoS → 4.2.0) and `undici` (GHSA-vmh5-mc38-953g and related → 7.28.0). Both are dev-only; the shipped application is unaffected.
|
|
45
|
+
- Bumped `rand` to 0.8.6 (GHSA-cq8v-f236-94qc). A residual, build-time-only `rand` 0.7.3 is pinned upstream in the Tauri toolchain with no available fix and is tracked in `TODO.md`.
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
|
|
49
|
+
- API file endpoints now require relative paths; the configured `FIBERPATH_API_ALLOWED_ROOTS` controls which directories they resolve against.
|
|
50
|
+
- Rebuilt user-supplied paths from validated components (`Path(*parts)`) instead of passing raw input to `Path()`, breaking the taint chain for static analysis.
|
|
51
|
+
- API plan/simulate routes map core-engine input errors (`PlanningError`, `SimulationError`) to HTTP 400 via centralized exception handlers instead of surfacing them as 500s, and `/stream` caps the G-code payload at 10 MB.
|
|
52
|
+
- Routed streaming `[DEBUG]`/`[ERROR]` output through the `logging` module instead of `print(..., file=sys.stderr)`, so a normal run is quiet by default while the stdout JSON protocol is unchanged.
|
|
53
|
+
- Upgraded Tauri to 2.11 (Cargo + npm aligned) and refreshed CI actions.
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
|
|
57
|
+
- `MarlinStreamer` transport guards now raise `StreamError` instead of `assert`, so they behave identically under `python -O` rather than degrading to a `None` dereference.
|
|
58
|
+
- Tauri `plot_definition`, `plot_preview`, and `validate_wind_definition` no longer leak temporary `.wind`/`.gcode`/`.png` files on error paths; an RAII guard removes them on every exit.
|
|
59
|
+
|
|
60
|
+
### Removed
|
|
61
|
+
|
|
62
|
+
- Removed the unused `fiberpath/geometry/` stub module (dead code advertising non-cylindrical capability that does not exist; the roadmap is documented instead).
|
|
63
|
+
- Removed dead branches in `planning/layer_strategies.py` (a no-op `build_layer_summary` conditional and an unreachable circuit-divisibility guard superseded by upstream validation).
|
|
64
|
+
|
|
65
|
+
### Added
|
|
66
|
+
|
|
67
|
+
- `tests/api/test_path_policy.py` — 18 dedicated tests covering all rejected input classes (NUL bytes, POSIX absolute, Windows drive/UNC, `..` traversal with forward and backslash separators, empty/whitespace, absolute-inside-root) and accepted cases (bare filename, nested relative, multiple roots, single-dot normalisation).
|
|
68
|
+
- Integration-level rejection tests in `test_plan_route.py` and `test_simulate_route.py` for absolute-path and traversal inputs.
|
|
69
|
+
- Tests for API error-to-4xx mapping, `MarlinStreamer` transport guards (including a `python -O` subprocess check), streaming logging staying quiet by default, and the Tauri temp-file cleanup guard.
|
|
70
|
+
|
|
71
|
+
### Documentation
|
|
72
|
+
|
|
73
|
+
- Aligned the README and architecture docs with the implemented scope (cylindrical mandrels; hoop/helical/skip layers), framed geodesic/curved-surface support as roadmap, and removed the stale `examples/complex_surface/` placeholder.
|
|
74
|
+
|
|
75
|
+
### Dependencies
|
|
76
|
+
|
|
77
|
+
- Tooling/CI: `astral-sh/setup-uv` v8.2.0 (Node 24), `codecov/codecov-action` v7, `actions/checkout` v7.
|
|
78
|
+
- Python (uv): `starlette` 1.3.1, `urllib3` 2.7.0, `idna` 3.15, `pymdown-extensions` 10.21.3.
|
|
79
|
+
- npm: `@types/node` 26, `lucide-react`, `fast-uri` 3.1.2, plus the npm prod and dev minor-patch dependency groups.
|
|
80
|
+
- Cargo: the cargo minor-patch dependency groups.
|
|
81
|
+
|
|
11
82
|
## [0.7.1] - 2026-04-16
|
|
12
83
|
|
|
13
84
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fiberpath
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.3
|
|
4
4
|
Summary: Modern filament winding planner, simulator, and G-code toolkit.
|
|
5
5
|
Author: Cameron K. Brooks
|
|
6
6
|
License: GNU AFFERO GENERAL PUBLIC LICENSE
|
|
@@ -680,6 +680,7 @@ Requires-Dist: rich>=13.7
|
|
|
680
680
|
Requires-Dist: typer>=0.12
|
|
681
681
|
Provides-Extra: api
|
|
682
682
|
Requires-Dist: fastapi>=0.110; extra == 'api'
|
|
683
|
+
Requires-Dist: starlette>=1.0.1; extra == 'api'
|
|
683
684
|
Requires-Dist: uvicorn[standard]>=0.24; extra == 'api'
|
|
684
685
|
Provides-Extra: cli
|
|
685
686
|
Requires-Dist: rich>=13.7; extra == 'cli'
|
|
@@ -693,10 +694,6 @@ Requires-Dist: pytest-cov>=4.1; extra == 'dev'
|
|
|
693
694
|
Requires-Dist: pytest>=8.2; extra == 'dev'
|
|
694
695
|
Requires-Dist: ruff>=0.7; extra == 'dev'
|
|
695
696
|
Requires-Dist: types-pyserial>=3.5; extra == 'dev'
|
|
696
|
-
Provides-Extra: docs
|
|
697
|
-
Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
|
|
698
|
-
Requires-Dist: mkdocs>=1.5; extra == 'docs'
|
|
699
|
-
Requires-Dist: pymdown-extensions>=10.0; extra == 'docs'
|
|
700
697
|
Provides-Extra: plot
|
|
701
698
|
Requires-Dist: matplotlib>=3.8; extra == 'plot'
|
|
702
699
|
Requires-Dist: plotly>=5.22; extra == 'plot'
|
|
@@ -708,18 +705,18 @@ Description-Content-Type: text/markdown
|
|
|
708
705
|
|
|
709
706
|
**Plan, simulate, and manufacture composite parts with precision fiber winding.**
|
|
710
707
|
|
|
711
|
-
[](https://github.com/fiberpath/fiberpath/releases)
|
|
712
709
|
[](LICENSE)
|
|
713
|
-
[](https://github.com/fiberpath/fiberpath/actions/workflows/backend-ci.yml)
|
|
711
|
+
[](https://github.com/fiberpath/fiberpath/actions/workflows/gui-ci.yml)
|
|
712
|
+
[](https://fiberpath.org/fiberpath)
|
|
716
713
|
|
|
717
714
|

|
|
718
715
|

|
|
719
716
|

|
|
720
717
|

|
|
721
718
|
|
|
722
|
-
[Download](https://github.com/
|
|
719
|
+
[Download](https://github.com/fiberpath/fiberpath/releases/latest) · [Documentation](https://fiberpath.org/fiberpath) · [Examples](examples/)
|
|
723
720
|
|
|
724
721
|
</div>
|
|
725
722
|
|
|
@@ -729,12 +726,12 @@ Description-Content-Type: text/markdown
|
|
|
729
726
|
|
|
730
727
|
FiberPath automates the complex process of **filament winding**—wrapping fiber-reinforced composites around mandrels to create lightweight, high-strength cylindrical parts like pressure vessels, pipes, and aerospace structures.
|
|
731
728
|
|
|
732
|
-
Design multi-layer winding patterns in a visual interface, simulate the full manufacturing process, and stream G-code directly to Marlin-based hardware. FiberPath handles the mathematics
|
|
729
|
+
Design multi-layer winding patterns in a visual interface, simulate the full manufacturing process, and stream G-code directly to Marlin-based hardware. FiberPath handles the winding mathematics — hoop and helical path generation, tow coverage, and machine kinematics for cylindrical mandrels — so you can focus on part design.
|
|
733
730
|
|
|
734
731
|
### Features
|
|
735
732
|
|
|
736
733
|
- **Visual Layer Editor** – Design winding patterns with live preview
|
|
737
|
-
- **
|
|
734
|
+
- **Winding Path Planning** – Automatic hoop, helical, and skip pattern generation for cylindrical mandrels
|
|
738
735
|
- **Hardware Simulation** – Validate motion before manufacturing
|
|
739
736
|
- **Direct Machine Control** – Stream G-code to Marlin controllers with pause/resume
|
|
740
737
|
- **XAB-Native Axis Output** – Standardized rotational-axis output with clear logical axis mapping
|
|
@@ -742,11 +739,13 @@ Design multi-layer winding patterns in a visual interface, simulate the full man
|
|
|
742
739
|
- **Command-Line Tools** – Scriptable workflows for automation and CI/CD
|
|
743
740
|
- **Comprehensive Documentation** – Architecture guides, examples, and API reference
|
|
744
741
|
|
|
742
|
+
> **Scope & roadmap:** FiberPath currently plans **cylindrical mandrels** with hoop, helical, and skip layers. Non-cylindrical (geodesic) surface support — including tapered and custom mandrels — is planned but not yet implemented.
|
|
743
|
+
|
|
745
744
|
## Quick Start
|
|
746
745
|
|
|
747
746
|
### Option 1: Desktop GUI (Recommended)
|
|
748
747
|
|
|
749
|
-
Download the installer for your platform from the [latest release](https://github.com/
|
|
748
|
+
Download the installer for your platform from the [latest release](https://github.com/fiberpath/fiberpath/releases/latest):
|
|
750
749
|
|
|
751
750
|
- **Windows**: `.msi` or `.exe` installer
|
|
752
751
|
- **macOS**: `.dmg` disk image
|
|
@@ -777,7 +776,7 @@ The `plot` command creates a 2D unwrapped visualization of the toolpath for quic
|
|
|
777
776
|
|
|
778
777
|
### Desktop Application (Recommended)
|
|
779
778
|
|
|
780
|
-
📦 **Download:** [github.com/
|
|
779
|
+
📦 **Download:** [github.com/fiberpath/fiberpath/releases/latest](https://github.com/fiberpath/fiberpath/releases/latest)
|
|
781
780
|
|
|
782
781
|
**No Python installation required**—the GUI is a fully self-contained native application with the FiberPath backend bundled inside. Just download, install, and run.
|
|
783
782
|
|
|
@@ -804,7 +803,7 @@ pip install fiberpath[dev] # Development tools
|
|
|
804
803
|
**Development Install:**
|
|
805
804
|
|
|
806
805
|
```sh
|
|
807
|
-
git clone https://github.com/
|
|
806
|
+
git clone https://github.com/fiberpath/fiberpath.git
|
|
808
807
|
cd fiberpath
|
|
809
808
|
uv pip install -e .[dev,cli,api]
|
|
810
809
|
pytest
|
|
@@ -902,10 +901,9 @@ FiberPath consists of four coordinated components:
|
|
|
902
901
|
▼
|
|
903
902
|
┌─────────────────────────────────────────────────┐
|
|
904
903
|
│ Core Engine (Python) │
|
|
905
|
-
│ •
|
|
904
|
+
│ • Winding path planning (hoop/helical/skip) │
|
|
906
905
|
│ • Layer strategies │
|
|
907
906
|
│ • G-code generation │
|
|
908
|
-
│ • Geometry utilities │
|
|
909
907
|
└─────────────────────────────────────────────────┘
|
|
910
908
|
▲
|
|
911
909
|
│ imports
|
|
@@ -924,7 +922,7 @@ FiberPath consists of four coordinated components:
|
|
|
924
922
|
- **Core is deterministic** and thoroughly tested
|
|
925
923
|
- **Modular architecture** allows using components independently
|
|
926
924
|
|
|
927
|
-
See [Architecture Documentation](https://
|
|
925
|
+
See [Architecture Documentation](https://fiberpath.org/fiberpath/architecture/overview/) for detailed design rationale.
|
|
928
926
|
|
|
929
927
|
## Axis Configuration
|
|
930
928
|
|
|
@@ -938,14 +936,14 @@ Legacy XYZ programs should be re-generated under current versions. Simulation an
|
|
|
938
936
|
|
|
939
937
|
## Documentation
|
|
940
938
|
|
|
941
|
-
Comprehensive documentation is available at [
|
|
939
|
+
Comprehensive documentation is available at [fiberpath.org/fiberpath](https://fiberpath.org/fiberpath):
|
|
942
940
|
|
|
943
|
-
- **[Getting Started Guide](https://
|
|
944
|
-
- **[Architecture Overview](https://
|
|
945
|
-
- **[Usage Guides](https://
|
|
946
|
-
- **[API Reference](https://
|
|
947
|
-
- **[GUI Documentation](https://
|
|
948
|
-
- **[Development Guide](https://
|
|
941
|
+
- **[Getting Started Guide](https://fiberpath.org/fiberpath/getting-started/)** – Installation and first steps
|
|
942
|
+
- **[Architecture Overview](https://fiberpath.org/fiberpath/architecture/overview/)** – System design and components
|
|
943
|
+
- **[Usage Guides](https://fiberpath.org/fiberpath/guides/visualization/)** – Visualization, streaming, WIND format
|
|
944
|
+
- **[API Reference](https://fiberpath.org/fiberpath/reference/api/)** – Core functions and CLI commands
|
|
945
|
+
- **[GUI Documentation](https://fiberpath.org/fiberpath/gui/overview/)** – Desktop application architecture
|
|
946
|
+
- **[Development Guide](https://fiberpath.org/fiberpath/development/contributing/)** – Contributing, tooling, release process
|
|
949
947
|
|
|
950
948
|
## Contributing
|
|
951
949
|
|
|
@@ -953,14 +951,14 @@ Contributions are welcome! FiberPath is actively developed and maintained.
|
|
|
953
951
|
|
|
954
952
|
**Before contributing:**
|
|
955
953
|
|
|
956
|
-
1. Read the [Contributing Guide](https://
|
|
957
|
-
2. Check existing [issues](https://github.com/
|
|
954
|
+
1. Read the [Contributing Guide](https://fiberpath.org/fiberpath/development/contributing/)
|
|
955
|
+
2. Check existing [issues](https://github.com/fiberpath/fiberpath/issues) and [pull requests](https://github.com/fiberpath/fiberpath/pulls)
|
|
958
956
|
3. Open an issue to discuss major changes before implementing
|
|
959
957
|
|
|
960
958
|
**Development setup:**
|
|
961
959
|
|
|
962
960
|
```sh
|
|
963
|
-
git clone https://github.com/
|
|
961
|
+
git clone https://github.com/fiberpath/fiberpath.git
|
|
964
962
|
cd fiberpath
|
|
965
963
|
uv pip install -e .[dev,cli,api]
|
|
966
964
|
pytest
|
|
@@ -977,7 +975,7 @@ npm test
|
|
|
977
975
|
- All new features require tests and documentation
|
|
978
976
|
- Commit messages use conventional commits format
|
|
979
977
|
|
|
980
|
-
See [Development Documentation](https://
|
|
978
|
+
See [Development Documentation](https://fiberpath.org/fiberpath/development/) for tooling, CI/CD, and release process details.
|
|
981
979
|
|
|
982
980
|
## License
|
|
983
981
|
|
|
@@ -993,6 +991,6 @@ See [LICENSE](LICENSE) for full terms.
|
|
|
993
991
|
|
|
994
992
|
---
|
|
995
993
|
|
|
996
|
-
**Questions?** Open an [issue](https://github.com/
|
|
994
|
+
**Questions?** Open an [issue](https://github.com/fiberpath/fiberpath/issues) or check the [documentation](https://fiberpath.org/fiberpath).
|
|
997
995
|
|
|
998
|
-
**Found a bug?** Report it on [GitHub Issues](https://github.com/
|
|
996
|
+
**Found a bug?** Report it on [GitHub Issues](https://github.com/fiberpath/fiberpath/issues/new) with steps to reproduce.
|