fiberpath 0.7.0__tar.gz → 0.7.2__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.0 → fiberpath-0.7.2}/.github/actions/setup-node/action.yml +1 -1
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/actions/setup-python/action.yml +3 -3
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/actions/setup-rust/action.yml +1 -1
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/backend-ci.yml +3 -3
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/ci-check.yml +10 -18
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/dependency-audit.yml +6 -4
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/docs-ci.yml +1 -1
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/docs-deploy.yml +2 -2
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/gui-ci.yml +4 -4
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/gui-e2e-smoke.yml +1 -1
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/gui-packaging.yml +44 -9
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/release.yml +6 -6
- {fiberpath-0.7.0 → fiberpath-0.7.2}/CHANGELOG.md +76 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/PKG-INFO +8 -6
- {fiberpath-0.7.0 → fiberpath-0.7.2}/README.md +6 -5
- {fiberpath-0.7.0 → fiberpath-0.7.2}/TODO.md +2 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/architecture/overview.md +1 -2
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/development/dependency-policy.md +2 -2
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/development/packaging.md +1 -1
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/guides/wind-format.md +2 -2
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/index.md +8 -8
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/execution/marlin.py +30 -65
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/layer_strategies.py +1 -12
- fiberpath-0.7.2/fiberpath_api/main.py +34 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/path_policy.py +30 -10
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/routes/stream.py +5 -1
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/interactive.py +21 -42
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/.gitignore +1 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/architecture/cli-integration.md +1 -1
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/guides/performance.md +3 -3
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/package-lock.json +411 -374
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/package.json +20 -20
- fiberpath-0.7.2/fiberpath_gui/src/components/ErrorBoundary.test.tsx +74 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/StatusBar.test.tsx +80 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/StreamTab/ConnectionSection.test.tsx +112 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/StreamTab/FileStreamingSection.test.tsx +130 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.test.tsx +52 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/StreamTab/ManualControlSection.test.tsx +102 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/StreamTab/StreamLog.test.tsx +85 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/TabBar.test.tsx +44 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/Toast/ToastContainer.test.tsx +65 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/canvas/CanvasControls.test.tsx +82 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/canvas/LayerScrubber.test.tsx +46 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/dialogs/BaseDialog.test.tsx +83 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/dialogs/DiagnosticsDialog.test.tsx +109 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/editors/HelicalLayerEditor.test.tsx +69 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/editors/HoopLayerEditor.test.tsx +58 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/editors/SkipLayerEditor.test.tsx +59 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/forms/MachineSettingsForm.test.tsx +43 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/forms/MandrelForm.test.tsx +60 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/forms/TowForm.test.tsx +60 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/layers/LayerRow.test.tsx +110 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/layers/LayerStack.test.tsx +143 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/panels/panels.test.tsx +41 -0
- fiberpath-0.7.2/fiberpath_gui/src/components/tabs/MainTab.test.tsx +65 -0
- fiberpath-0.7.2/fiberpath_gui/src/contexts/CliHealthContext.test.tsx +36 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/contexts/CliHealthContext.tsx +2 -2
- fiberpath-0.7.2/fiberpath_gui/src/hooks/canvas/usePreviewGeneration.test.ts +169 -0
- fiberpath-0.7.2/fiberpath_gui/src/hooks/stream/useConnectionActions.test.ts +193 -0
- fiberpath-0.7.2/fiberpath_gui/src/hooks/stream/useManualCommandActions.test.ts +166 -0
- fiberpath-0.7.2/fiberpath_gui/src/hooks/stream/useStreamingActions.test.ts +318 -0
- fiberpath-0.7.2/fiberpath_gui/src/hooks/useCliHealth.test.ts +207 -0
- fiberpath-0.7.2/fiberpath_gui/src/hooks/useDebouncedValue.test.ts +106 -0
- fiberpath-0.7.2/fiberpath_gui/src/hooks/useFileOperations.test.tsx +77 -0
- fiberpath-0.7.2/fiberpath_gui/src/hooks/useKeyboardShortcuts.test.ts +163 -0
- fiberpath-0.7.2/fiberpath_gui/src/hooks/useMenubarInteractions.test.tsx +97 -0
- fiberpath-0.7.2/fiberpath_gui/src/layouts/MainLayout.test.tsx +75 -0
- fiberpath-0.7.2/fiberpath_gui/src/lib/commands.test.ts +202 -0
- fiberpath-0.7.2/fiberpath_gui/src/lib/fileOperations.test.ts +330 -0
- fiberpath-0.7.2/fiberpath_gui/src/lib/helicalValidation.test.ts +179 -0
- fiberpath-0.7.2/fiberpath_gui/src/lib/marlin-api.test.ts +188 -0
- fiberpath-0.7.2/fiberpath_gui/src/lib/menuConfig.test.ts +49 -0
- fiberpath-0.7.2/fiberpath_gui/src/lib/numericFields.test.ts +59 -0
- fiberpath-0.7.2/fiberpath_gui/src/lib/recentFiles.test.ts +142 -0
- fiberpath-0.7.2/fiberpath_gui/src/lib/retry.test.ts +114 -0
- fiberpath-0.7.2/fiberpath_gui/src/lib/streamFeedback.test.ts +352 -0
- fiberpath-0.7.2/fiberpath_gui/src/stores/toastStore.test.ts +87 -0
- fiberpath-0.7.2/fiberpath_gui/src/tests/renderWithProviders.tsx +73 -0
- fiberpath-0.7.2/fiberpath_gui/src/tests/storeUtils.ts +96 -0
- fiberpath-0.7.2/fiberpath_gui/src/tests/tauriMocks.ts +99 -0
- fiberpath-0.7.2/fiberpath_gui/src/types/project.test.ts +159 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/Cargo.lock +208 -84
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/Cargo.toml +3 -3
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/src/main.rs +94 -23
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/tauri.conf.json +1 -1
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/tsconfig.json +1 -1
- fiberpath-0.7.2/fiberpath_gui/vite.config.ts +14 -0
- fiberpath-0.7.0/fiberpath_gui/vite.config.ts → fiberpath-0.7.2/fiberpath_gui/vitest.config.ts +16 -15
- {fiberpath-0.7.0 → fiberpath-0.7.2}/pyproject.toml +2 -2
- {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/extract-package-runtime.ps1 +27 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/find-bundled-cli.ps1 +22 -2
- {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/freeze_cli.py +0 -4
- fiberpath-0.7.2/tests/api/test_path_policy.py +247 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/api/test_plan_route.py +49 -8
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/api/test_simulate_route.py +27 -9
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/api/test_stream_route_errors.py +11 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/execution/test_marlin_streamer.py +69 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/uv.lock +101 -99
- fiberpath-0.7.0/examples/complex_surface/README.md +0 -3
- fiberpath-0.7.0/fiberpath/geometry/__init__.py +0 -13
- fiberpath-0.7.0/fiberpath/geometry/curves.py +0 -16
- fiberpath-0.7.0/fiberpath/geometry/intersections.py +0 -23
- fiberpath-0.7.0/fiberpath/geometry/surfaces.py +0 -17
- fiberpath-0.7.0/fiberpath_api/main.py +0 -21
- fiberpath-0.7.0/fiberpath_gui/vitest.config.ts +0 -18
- fiberpath-0.7.0/tests/geometry/test_surfaces.py +0 -6
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.gitattributes +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/dependabot.yml +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.gitignore +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.pre-commit-config.yaml +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.vscode/extensions.json +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.vscode/launch.json +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/.vscode/settings.json +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/LICENSE +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/architecture/axis-system.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/development/ci-cd.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/development/contributing.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/development/release-process.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/development/tooling.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/feature-backlog.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/getting-started.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/guides/axis-mapping.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/guides/marlin-streaming.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/guides/visualization.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/reference/api.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/reference/concepts.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/reference/planner-math.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/troubleshooting.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/vm-testing.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/README.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/multi_layer/README.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/multi_layer/input.wind +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/AvBay(470mm)single.wind +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/AvBay(470mm)triple.gcode +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/AvBay(470mm)triple.wind +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/CarbonMotorTube(1295mm).gcode +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/CarbonMotorTube(1295mm).wind +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/MainChute(585mm).gcode +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/MainChute(585mm).wind +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/simple_cylinder/README.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/simple_cylinder/input.wind +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/sized_simple_cylinder/README.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/sized_simple_cylinder/input.wind +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/__init__.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/config/__init__.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/config/schemas.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/config/validator.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/execution/__init__.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/gcode/__init__.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/gcode/dialects.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/gcode/generator.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/math_utils.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/__init__.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/calculations.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/exceptions.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/helpers.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/machine.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/planner.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/validators.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/simulation/__init__.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/simulation/simulator.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/visualization/__init__.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/visualization/export_json.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/visualization/plotter.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/__init__.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/package-lock.json +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/routes/__init__.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/routes/plan.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/routes/simulate.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/routes/validate.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/schemas.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/__init__.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/__main__.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/main.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/output.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/plan.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/plot.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/simulate.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/stream.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/validate.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/.nvmrc +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/.stylelintrc.json +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/README.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/bundled-cli/.gitkeep +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/architecture/state-management.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/architecture/streaming-state.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/architecture/tech-stack.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/development.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/guides/schemas.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/guides/styling.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/overview.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/reference/type-safety.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/testing.md +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/generate-types.json +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/index.html +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/perf/bundle-baseline.json +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/schemas/wind-schema.json +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/scripts/check-bundle-budget.mjs +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/scripts/check-css-vars.mjs +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/App.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/CliHealthWarning.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/ErrorBoundary.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/ErrorNotificationToast.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/MenuBar.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StatusBar.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/ConnectionSection.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/ConnectionSection.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/ManualControlSection.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/ManualControlSection.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/StreamControls.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/StreamControls.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/StreamLog.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/StreamLog.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/StreamTab.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/StreamTab.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/TabBar.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/Toast/ToastContainer.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/Toast/ToastContainer.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/canvas/CanvasControls.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/canvas/CenterCanvas.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/canvas/LayerScrubber.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/canvas/VisualizationCanvas.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/dialogs/AboutDialog.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/dialogs/BaseDialog.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/dialogs/CliUnavailableDialog.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/dialogs/DiagnosticsDialog.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/dialogs/ExportConfirmationDialog.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/editors/HelicalLayerEditor.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/editors/HoopLayerEditor.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/editors/LayerNumericField.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/editors/SkipLayerEditor.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/forms/MachineSettingsForm.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/forms/MandrelForm.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/forms/TowForm.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/layers/LayerRow.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/layers/LayerStack.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/panels/BottomPanel.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/panels/LeftPanel.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/panels/RightPanel.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/tabs/MainTab.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/contexts/ErrorNotificationContext.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/canvas/usePreviewGeneration.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/stream/useConnectionActions.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/stream/useManualCommandActions.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/stream/useStreamingActions.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useCliHealth.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useDebouncedValue.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useFileOperations.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useKeyboardShortcuts.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useMenubarInteractions.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useStreamEvents.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useTheme.test.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useTheme.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/layouts/MainLayout.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/commands.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/constants.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/fileOperations.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/helicalValidation.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/marlin-api.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/menuConfig.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/numericFields.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/recentFiles.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/retry.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/schemas.test.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/schemas.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/streamFeedback.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/tauri-types.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/toastMessages.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/validation.test.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/validation.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/validationErrors.test.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/validationErrors.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/main.tsx +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/stores/projectStore.test.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/stores/projectStore.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/stores/streamStore.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/stores/toastStore.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/buttons.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/canvas.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/dialogs.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/forms.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/index.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/layout.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/notifications.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/panels.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/reset.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/tabs.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/tokens.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/typography.css +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/tests/integration/streamLifecycle.test.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/tests/integration/workflows.test.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/tests/setup.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/types/components.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/types/converters.test.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/types/converters.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/types/project.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/types/wind-schema.ts +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/build.rs +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/capabilities/default.json +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/icons/128x128.png +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/icons/256x256.png +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/icons/32x32.png +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/icons/512x512.png +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/icons/icon.ico +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/src/cli_path.rs +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/src/cli_process.rs +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/src/marlin.rs +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/tsconfig.node.json +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/mkdocs.yml +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/package-lock.json +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/e2e-check-artifacts.ps1 +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/e2e-check-artifacts.sh +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/e2e-cli-smoke.ps1 +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/e2e-cli-smoke.sh +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/extract-package-runtime.sh +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/find-bundled-cli.sh +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/export_schema.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/generate_schema.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/sync_gui_docs.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/setup.cfg +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/api/test_stream_route.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cli/test_axis_format.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cli/test_cli_json.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cli/test_cli_smoke.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cli/test_stream_command.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/config/__init__.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/config/test_validator.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/inputs/helical-balanced.wind +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/inputs/simple-hoop.wind +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/inputs/skip-bias.wind +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/outputs/helical-balanced/output.gcode +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/outputs/helical-balanced/preview.png +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/outputs/simple-hoop/output.gcode +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/outputs/simple-hoop/preview.png +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/outputs/skip-bias/output.gcode +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/outputs/skip-bias/preview.png +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/gcode/test_dialects.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/gcode/test_generator.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/_generate_fixtures.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/fixtures/helical_layer.gcode +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/fixtures/hoop_layer.gcode +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/fixtures/hoop_only_program.gcode +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/fixtures/skip_layer.gcode +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/test_axis_mapping.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/test_helpers_machine.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/test_layer_strategies.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/test_planner_smoke.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/test_validators.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/simulation/test_simulator.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/simulation/test_simulator_axis_detection.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/tauri/test_marlin_integration.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/tauri/test_port_discovery.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/visualization/test_export_json.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/visualization/test_plotter.py +0 -0
- {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/visualization/test_plotter_axis_detection.py +0 -0
|
@@ -19,18 +19,18 @@ runs:
|
|
|
19
19
|
using: composite
|
|
20
20
|
steps:
|
|
21
21
|
- name: Set up Python
|
|
22
|
-
uses: actions/setup-python@
|
|
22
|
+
uses: actions/setup-python@v6
|
|
23
23
|
with:
|
|
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@v5
|
|
34
34
|
with:
|
|
35
35
|
path: .venv
|
|
36
36
|
key: venv-${{ runner.os }}-${{ inputs.python-version }}-${{ hashFiles('pyproject.toml') }}-${{ inputs.cache-key-suffix }}
|
|
@@ -13,7 +13,7 @@ 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
|
|
@@ -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
|
|
@@ -15,14 +15,10 @@ on:
|
|
|
15
15
|
- "setup.cfg"
|
|
16
16
|
- "mkdocs.yml"
|
|
17
17
|
- "README.md"
|
|
18
|
-
- "
|
|
19
|
-
- "
|
|
20
|
-
- ".github/workflows
|
|
21
|
-
- ".github/
|
|
22
|
-
- ".github/workflows/docs-ci.yml"
|
|
23
|
-
- ".github/actions/setup-python/**"
|
|
24
|
-
- ".github/actions/setup-node/**"
|
|
25
|
-
- ".github/actions/setup-rust/**"
|
|
18
|
+
- "CHANGELOG.md"
|
|
19
|
+
- "scripts/**"
|
|
20
|
+
- ".github/workflows/**"
|
|
21
|
+
- ".github/actions/**"
|
|
26
22
|
pull_request:
|
|
27
23
|
branches: [main]
|
|
28
24
|
paths:
|
|
@@ -37,14 +33,10 @@ on:
|
|
|
37
33
|
- "setup.cfg"
|
|
38
34
|
- "mkdocs.yml"
|
|
39
35
|
- "README.md"
|
|
40
|
-
- "
|
|
41
|
-
- "
|
|
42
|
-
- ".github/workflows
|
|
43
|
-
- ".github/
|
|
44
|
-
- ".github/workflows/docs-ci.yml"
|
|
45
|
-
- ".github/actions/setup-python/**"
|
|
46
|
-
- ".github/actions/setup-node/**"
|
|
47
|
-
- ".github/actions/setup-rust/**"
|
|
36
|
+
- "CHANGELOG.md"
|
|
37
|
+
- "scripts/**"
|
|
38
|
+
- ".github/workflows/**"
|
|
39
|
+
- ".github/actions/**"
|
|
48
40
|
workflow_dispatch:
|
|
49
41
|
|
|
50
42
|
permissions:
|
|
@@ -60,11 +52,11 @@ jobs:
|
|
|
60
52
|
docs: ${{ steps.filter.outputs.docs }}
|
|
61
53
|
steps:
|
|
62
54
|
- name: Checkout repository
|
|
63
|
-
uses: actions/checkout@
|
|
55
|
+
uses: actions/checkout@v7
|
|
64
56
|
|
|
65
57
|
- name: Detect changed areas
|
|
66
58
|
id: filter
|
|
67
|
-
uses: dorny/paths-filter@
|
|
59
|
+
uses: dorny/paths-filter@v4
|
|
68
60
|
with:
|
|
69
61
|
filters: |
|
|
70
62
|
backend:
|
|
@@ -3,6 +3,8 @@ name: Dependency Audit
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
5
|
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
6
8
|
schedule:
|
|
7
9
|
- cron: "0 7 * * 1"
|
|
8
10
|
workflow_dispatch:
|
|
@@ -16,7 +18,7 @@ jobs:
|
|
|
16
18
|
runs-on: ubuntu-latest
|
|
17
19
|
steps:
|
|
18
20
|
- name: Checkout repository
|
|
19
|
-
uses: actions/checkout@
|
|
21
|
+
uses: actions/checkout@v7
|
|
20
22
|
|
|
21
23
|
- name: Setup Python environment
|
|
22
24
|
uses: ./.github/actions/setup-python
|
|
@@ -44,7 +46,7 @@ jobs:
|
|
|
44
46
|
working-directory: fiberpath_gui
|
|
45
47
|
steps:
|
|
46
48
|
- name: Checkout repository
|
|
47
|
-
uses: actions/checkout@
|
|
49
|
+
uses: actions/checkout@v7
|
|
48
50
|
|
|
49
51
|
- name: Setup Node.js environment
|
|
50
52
|
uses: ./.github/actions/setup-node
|
|
@@ -67,7 +69,7 @@ jobs:
|
|
|
67
69
|
working-directory: fiberpath_gui/src-tauri
|
|
68
70
|
steps:
|
|
69
71
|
- name: Checkout repository
|
|
70
|
-
uses: actions/checkout@
|
|
72
|
+
uses: actions/checkout@v7
|
|
71
73
|
|
|
72
74
|
- name: Setup Rust environment
|
|
73
75
|
uses: ./.github/actions/setup-rust
|
|
@@ -75,7 +77,7 @@ jobs:
|
|
|
75
77
|
install-linux-deps: "false"
|
|
76
78
|
|
|
77
79
|
- name: Install cargo-audit
|
|
78
|
-
run: cargo install cargo-audit --locked
|
|
80
|
+
run: cargo audit --version 2>/dev/null || cargo install cargo-audit --locked
|
|
79
81
|
|
|
80
82
|
- name: Run cargo audit (JSON report)
|
|
81
83
|
run: cargo audit --json > cargo-audit.json
|
|
@@ -29,7 +29,7 @@ jobs:
|
|
|
29
29
|
runs-on: ubuntu-latest
|
|
30
30
|
steps:
|
|
31
31
|
- name: Checkout repository
|
|
32
|
-
uses: actions/checkout@
|
|
32
|
+
uses: actions/checkout@v7
|
|
33
33
|
|
|
34
34
|
- name: Configure GitHub Pages
|
|
35
35
|
id: pages
|
|
@@ -47,7 +47,7 @@ jobs:
|
|
|
47
47
|
run: uv run mkdocs build --strict --site-dir site
|
|
48
48
|
|
|
49
49
|
- name: Upload Pages artifact
|
|
50
|
-
uses: actions/upload-pages-artifact@
|
|
50
|
+
uses: actions/upload-pages-artifact@v5
|
|
51
51
|
with:
|
|
52
52
|
path: site
|
|
53
53
|
|
|
@@ -16,7 +16,7 @@ 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
|
|
@@ -44,7 +44,7 @@ jobs:
|
|
|
44
44
|
working-directory: fiberpath_gui
|
|
45
45
|
steps:
|
|
46
46
|
- name: Checkout repository
|
|
47
|
-
uses: actions/checkout@
|
|
47
|
+
uses: actions/checkout@v7
|
|
48
48
|
|
|
49
49
|
- name: Setup Node.js environment
|
|
50
50
|
uses: ./.github/actions/setup-node
|
|
@@ -56,7 +56,7 @@ jobs:
|
|
|
56
56
|
run: npm run test:coverage
|
|
57
57
|
|
|
58
58
|
- name: Upload coverage
|
|
59
|
-
uses: codecov/codecov-action@
|
|
59
|
+
uses: codecov/codecov-action@v7
|
|
60
60
|
with:
|
|
61
61
|
files: ./fiberpath_gui/coverage/lcov.info
|
|
62
62
|
flags: gui
|
|
@@ -78,7 +78,7 @@ jobs:
|
|
|
78
78
|
echo "Build successful - dist/ directory created"
|
|
79
79
|
|
|
80
80
|
- name: Upload bundle metrics artifact
|
|
81
|
-
uses: actions/upload-artifact@
|
|
81
|
+
uses: actions/upload-artifact@v7
|
|
82
82
|
with:
|
|
83
83
|
name: gui-bundle-metrics
|
|
84
84
|
path: fiberpath_gui/perf/reports/bundle-metrics.json
|
|
@@ -13,6 +13,20 @@ on:
|
|
|
13
13
|
- ".github/actions/setup-node/**"
|
|
14
14
|
- ".github/actions/setup-rust/**"
|
|
15
15
|
- ".github/actions/setup-python/**"
|
|
16
|
+
pull_request:
|
|
17
|
+
branches: [main]
|
|
18
|
+
paths:
|
|
19
|
+
- "fiberpath/**"
|
|
20
|
+
- "fiberpath_cli/**"
|
|
21
|
+
- "fiberpath_gui/**"
|
|
22
|
+
- "!fiberpath_gui/docs/**"
|
|
23
|
+
- "scripts/freeze_cli.py"
|
|
24
|
+
- "scripts/ci/**"
|
|
25
|
+
- ".github/workflows/gui-packaging.yml"
|
|
26
|
+
- ".github/workflows/gui-e2e-smoke.yml"
|
|
27
|
+
- ".github/actions/setup-node/**"
|
|
28
|
+
- ".github/actions/setup-rust/**"
|
|
29
|
+
- ".github/actions/setup-python/**"
|
|
16
30
|
workflow_call:
|
|
17
31
|
inputs:
|
|
18
32
|
release_tag:
|
|
@@ -37,7 +51,7 @@ jobs:
|
|
|
37
51
|
os: [windows-latest, macos-latest, ubuntu-latest]
|
|
38
52
|
steps:
|
|
39
53
|
- name: Checkout repository
|
|
40
|
-
uses: actions/checkout@
|
|
54
|
+
uses: actions/checkout@v7
|
|
41
55
|
|
|
42
56
|
- name: Set up Python (no cache for freeze)
|
|
43
57
|
uses: actions/setup-python@v6
|
|
@@ -116,7 +130,7 @@ jobs:
|
|
|
116
130
|
working-directory: fiberpath_gui
|
|
117
131
|
steps:
|
|
118
132
|
- name: Checkout repository
|
|
119
|
-
uses: actions/checkout@
|
|
133
|
+
uses: actions/checkout@v7
|
|
120
134
|
|
|
121
135
|
- name: Download frozen CLI artifact
|
|
122
136
|
uses: actions/download-artifact@v8
|
|
@@ -157,14 +171,11 @@ jobs:
|
|
|
157
171
|
run: |
|
|
158
172
|
echo "Checking if Tauri build succeeded with bundled CLI..."
|
|
159
173
|
if [ "$RUNNER_OS" == "Windows" ]; then
|
|
160
|
-
# Windows: Verify
|
|
161
|
-
|
|
174
|
+
# Windows: Verify MSI was created and use 7-zip to confirm the CLI binary is embedded.
|
|
175
|
+
MSI_FILE=$(find src-tauri/target/release/bundle/msi -name "*.msi" 2>/dev/null | head -1)
|
|
162
176
|
NSIS_COUNT=$(find src-tauri/target/release/bundle/nsis -name "*.exe" 2>/dev/null | wc -l)
|
|
163
177
|
|
|
164
|
-
if [ "$
|
|
165
|
-
echo "[OK] Windows installers created successfully:"
|
|
166
|
-
find src-tauri/target/release/bundle -type f \( -name "*.msi" -o -name "*.exe" \) -exec ls -lh {} \;
|
|
167
|
-
else
|
|
178
|
+
if [ -z "$MSI_FILE" ] && [ "$NSIS_COUNT" -eq 0 ]; then
|
|
168
179
|
echo "ERROR: No Windows installer files (.msi or .exe) found!"
|
|
169
180
|
echo "MSI directory contents:"
|
|
170
181
|
ls -la src-tauri/target/release/bundle/msi/ 2>/dev/null || echo " Directory not found"
|
|
@@ -172,6 +183,30 @@ jobs:
|
|
|
172
183
|
ls -la src-tauri/target/release/bundle/nsis/ 2>/dev/null || echo " Directory not found"
|
|
173
184
|
exit 1
|
|
174
185
|
fi
|
|
186
|
+
|
|
187
|
+
echo "[OK] Windows installers created:"
|
|
188
|
+
find src-tauri/target/release/bundle -type f \( -name "*.msi" -o -name "*.exe" \) -exec ls -lh {} \;
|
|
189
|
+
|
|
190
|
+
# Verify the CLI binary is embedded in the MSI using 7-zip.
|
|
191
|
+
if [ -n "$MSI_FILE" ]; then
|
|
192
|
+
SEVENZIP=""
|
|
193
|
+
if command -v 7z &>/dev/null; then SEVENZIP="7z"; fi
|
|
194
|
+
if [ -z "$SEVENZIP" ] && [ -f "C:/Program Files/7-Zip/7z.exe" ]; then SEVENZIP="C:/Program Files/7-Zip/7z.exe"; fi
|
|
195
|
+
if [ -n "$SEVENZIP" ]; then
|
|
196
|
+
echo "Inspecting MSI contents for fiberpath.exe..."
|
|
197
|
+
if "$SEVENZIP" l "$MSI_FILE" 2>/dev/null | grep -i "fiberpath.exe"; then
|
|
198
|
+
echo "[OK] fiberpath.exe found inside MSI"
|
|
199
|
+
else
|
|
200
|
+
echo "WARNING: fiberpath.exe not directly visible in MSI listing."
|
|
201
|
+
echo "This may occur when 7-zip shows only the embedded Cabinet stream;"
|
|
202
|
+
echo "the E2E smoke test performs a two-pass extraction to handle this case."
|
|
203
|
+
echo "MSI file listing (first 40 entries):"
|
|
204
|
+
"$SEVENZIP" l "$MSI_FILE" 2>/dev/null | head -40 || true
|
|
205
|
+
fi
|
|
206
|
+
else
|
|
207
|
+
echo "WARNING: 7-zip not found; skipping MSI content inspection."
|
|
208
|
+
fi
|
|
209
|
+
fi
|
|
175
210
|
else
|
|
176
211
|
# macOS/Linux: Search for bundled CLI file in app bundle
|
|
177
212
|
if find src-tauri/target/release/bundle -name "fiberpath" -type f 2>/dev/null | grep -q .; then
|
|
@@ -195,7 +230,7 @@ jobs:
|
|
|
195
230
|
|
|
196
231
|
- name: Upload release assets
|
|
197
232
|
if: github.event_name == 'release' || inputs.release_tag != ''
|
|
198
|
-
uses: softprops/action-gh-release@
|
|
233
|
+
uses: softprops/action-gh-release@v3
|
|
199
234
|
with:
|
|
200
235
|
tag_name: ${{ inputs.release_tag || github.ref }}
|
|
201
236
|
fail_on_unmatched_files: false
|
|
@@ -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
|
|
@@ -134,7 +134,7 @@ jobs:
|
|
|
134
134
|
|
|
135
135
|
- name: Generate release notes
|
|
136
136
|
id: notes
|
|
137
|
-
uses: actions/github-script@
|
|
137
|
+
uses: actions/github-script@v9
|
|
138
138
|
with:
|
|
139
139
|
script: |
|
|
140
140
|
const prevTag = '${{ steps.previous-tag.outputs.previous }}';
|
|
@@ -226,7 +226,7 @@ jobs:
|
|
|
226
226
|
echo "Assets will be uploaded by build-gui-installers workflow"
|
|
227
227
|
|
|
228
228
|
- name: Create GitHub Release
|
|
229
|
-
uses: softprops/action-gh-release@
|
|
229
|
+
uses: softprops/action-gh-release@v3
|
|
230
230
|
with:
|
|
231
231
|
tag_name: ${{ needs.validate.outputs.tag }}
|
|
232
232
|
name: Release ${{ inputs.version }}
|
|
@@ -249,7 +249,7 @@ jobs:
|
|
|
249
249
|
url: https://pypi.org/project/fiberpath/
|
|
250
250
|
steps:
|
|
251
251
|
- name: Checkout repository
|
|
252
|
-
uses: actions/checkout@
|
|
252
|
+
uses: actions/checkout@v7
|
|
253
253
|
|
|
254
254
|
- name: Setup Python environment
|
|
255
255
|
uses: ./.github/actions/setup-python
|
|
@@ -8,6 +8,82 @@ The format is based on Keep a Changelog, and this project follows semantic versi
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [0.7.2] - 2026-06-24
|
|
12
|
+
|
|
13
|
+
### Security
|
|
14
|
+
|
|
15
|
+
- 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").
|
|
16
|
+
- Patched `starlette` CVE-2026-48710 (BadHost) by upgrading to a fixed release.
|
|
17
|
+
- 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.
|
|
18
|
+
- 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`.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- API file endpoints now require relative paths; the configured `FIBERPATH_API_ALLOWED_ROOTS` controls which directories they resolve against.
|
|
23
|
+
- Rebuilt user-supplied paths from validated components (`Path(*parts)`) instead of passing raw input to `Path()`, breaking the taint chain for static analysis.
|
|
24
|
+
- 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.
|
|
25
|
+
- 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.
|
|
26
|
+
- Upgraded Tauri to 2.11 (Cargo + npm aligned) and refreshed CI actions.
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
|
|
30
|
+
- `MarlinStreamer` transport guards now raise `StreamError` instead of `assert`, so they behave identically under `python -O` rather than degrading to a `None` dereference.
|
|
31
|
+
- 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.
|
|
32
|
+
|
|
33
|
+
### Removed
|
|
34
|
+
|
|
35
|
+
- Removed the unused `fiberpath/geometry/` stub module (dead code advertising non-cylindrical capability that does not exist; the roadmap is documented instead).
|
|
36
|
+
- 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).
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
|
|
40
|
+
- `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).
|
|
41
|
+
- Integration-level rejection tests in `test_plan_route.py` and `test_simulate_route.py` for absolute-path and traversal inputs.
|
|
42
|
+
- 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.
|
|
43
|
+
|
|
44
|
+
### Documentation
|
|
45
|
+
|
|
46
|
+
- 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.
|
|
47
|
+
|
|
48
|
+
### Dependencies
|
|
49
|
+
|
|
50
|
+
- Tooling/CI: `astral-sh/setup-uv` v8.2.0 (Node 24), `codecov/codecov-action` v7, `actions/checkout` v7.
|
|
51
|
+
- Python (uv): `starlette` 1.3.1, `urllib3` 2.7.0, `idna` 3.15, `pymdown-extensions` 10.21.3.
|
|
52
|
+
- npm: `@types/node` 26, `lucide-react`, `fast-uri` 3.1.2, plus the npm prod and dev minor-patch dependency groups.
|
|
53
|
+
- Cargo: the cargo minor-patch dependency groups.
|
|
54
|
+
|
|
55
|
+
## [0.7.1] - 2026-04-16
|
|
56
|
+
|
|
57
|
+
### Added
|
|
58
|
+
|
|
59
|
+
- Expanded GUI test suite to 614 tests across 53 files via three RTL sprint phases covering pure components, store-coupled components, hooks, canvas rendering, CLI health, and stream branches (79.81% line / 91.17% branch / 87.73% function coverage).
|
|
60
|
+
|
|
61
|
+
### Fixed
|
|
62
|
+
|
|
63
|
+
- Fixed Python audit CI failure caused by CVE-2025-71176 in `pytest 9.0.2`; bumped to `pytest 9.0.3`.
|
|
64
|
+
- Fixed Windows E2E smoke test failure caused by WiX MSI two-pass CAB extraction not being handled in `extract-package-runtime.ps1`.
|
|
65
|
+
- Fixed Windows E2E smoke test failure where accumulated MSI artifacts caused the oldest version to be selected instead of the newest; extraction now sorts by `LastWriteTime` descending.
|
|
66
|
+
- Fixed `cargo audit` CI failure when `cargo-audit` was already installed (`exit 101`); guarded install with a version check.
|
|
67
|
+
- Fixed `ci-check.yml` required-status gate never posting on `scripts/ci/**` and workflow changes; broadened path filter to `scripts/**` and `.github/workflows/**`.
|
|
68
|
+
|
|
69
|
+
### Changed
|
|
70
|
+
|
|
71
|
+
- Extended `dependency-audit.yml` and `gui-packaging.yml` to trigger on pull requests, not only post-merge pushes.
|
|
72
|
+
- Improved `find-bundled-cli.ps1` with a wider path regex and full diagnostics output on failure.
|
|
73
|
+
|
|
74
|
+
### Dependencies
|
|
75
|
+
|
|
76
|
+
- Bumped `pillow` (uv).
|
|
77
|
+
- Bumped `tokio` (Cargo, two patches).
|
|
78
|
+
- Bumped npm prod and dev minor-patch dependency groups.
|
|
79
|
+
- Bumped `react-zoom-pan-pinch` to 4.0.3.
|
|
80
|
+
- Bumped `actions/upload-pages-artifact` from 4 to 5.
|
|
81
|
+
- Bumped multiple Cargo minor-patch dependency groups.
|
|
82
|
+
|
|
83
|
+
### Internal
|
|
84
|
+
|
|
85
|
+
- Synchronized release version metadata across Python (`pyproject.toml`, `uv.lock`), npm (`package.json`, `package-lock.json`), and Tauri (`Cargo.toml`, `Cargo.lock`, `tauri.conf.json`).
|
|
86
|
+
|
|
11
87
|
## [0.7.0] - 2026-04-08
|
|
12
88
|
|
|
13
89
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fiberpath
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.2
|
|
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'
|
|
@@ -708,7 +709,7 @@ Description-Content-Type: text/markdown
|
|
|
708
709
|
|
|
709
710
|
**Plan, simulate, and manufacture composite parts with precision fiber winding.**
|
|
710
711
|
|
|
711
|
-
[](https://github.com/CameronBrooks11/fiberpath/releases)
|
|
712
713
|
[](LICENSE)
|
|
713
714
|
[](https://github.com/CameronBrooks11/fiberpath/actions/workflows/backend-ci.yml)
|
|
714
715
|
[](https://github.com/CameronBrooks11/fiberpath/actions/workflows/gui-ci.yml)
|
|
@@ -729,12 +730,12 @@ Description-Content-Type: text/markdown
|
|
|
729
730
|
|
|
730
731
|
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
732
|
|
|
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
|
|
733
|
+
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
734
|
|
|
734
735
|
### Features
|
|
735
736
|
|
|
736
737
|
- **Visual Layer Editor** – Design winding patterns with live preview
|
|
737
|
-
- **
|
|
738
|
+
- **Winding Path Planning** – Automatic hoop, helical, and skip pattern generation for cylindrical mandrels
|
|
738
739
|
- **Hardware Simulation** – Validate motion before manufacturing
|
|
739
740
|
- **Direct Machine Control** – Stream G-code to Marlin controllers with pause/resume
|
|
740
741
|
- **XAB-Native Axis Output** – Standardized rotational-axis output with clear logical axis mapping
|
|
@@ -742,6 +743,8 @@ Design multi-layer winding patterns in a visual interface, simulate the full man
|
|
|
742
743
|
- **Command-Line Tools** – Scriptable workflows for automation and CI/CD
|
|
743
744
|
- **Comprehensive Documentation** – Architecture guides, examples, and API reference
|
|
744
745
|
|
|
746
|
+
> **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.
|
|
747
|
+
|
|
745
748
|
## Quick Start
|
|
746
749
|
|
|
747
750
|
### Option 1: Desktop GUI (Recommended)
|
|
@@ -902,10 +905,9 @@ FiberPath consists of four coordinated components:
|
|
|
902
905
|
▼
|
|
903
906
|
┌─────────────────────────────────────────────────┐
|
|
904
907
|
│ Core Engine (Python) │
|
|
905
|
-
│ •
|
|
908
|
+
│ • Winding path planning (hoop/helical/skip) │
|
|
906
909
|
│ • Layer strategies │
|
|
907
910
|
│ • G-code generation │
|
|
908
|
-
│ • Geometry utilities │
|
|
909
911
|
└─────────────────────────────────────────────────┘
|
|
910
912
|
▲
|
|
911
913
|
│ imports
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**Plan, simulate, and manufacture composite parts with precision fiber winding.**
|
|
6
6
|
|
|
7
|
-
[](https://github.com/CameronBrooks11/fiberpath/releases)
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
[](https://github.com/CameronBrooks11/fiberpath/actions/workflows/backend-ci.yml)
|
|
10
10
|
[](https://github.com/CameronBrooks11/fiberpath/actions/workflows/gui-ci.yml)
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
|
|
26
26
|
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.
|
|
27
27
|
|
|
28
|
-
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
|
|
28
|
+
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.
|
|
29
29
|
|
|
30
30
|
### Features
|
|
31
31
|
|
|
32
32
|
- **Visual Layer Editor** – Design winding patterns with live preview
|
|
33
|
-
- **
|
|
33
|
+
- **Winding Path Planning** – Automatic hoop, helical, and skip pattern generation for cylindrical mandrels
|
|
34
34
|
- **Hardware Simulation** – Validate motion before manufacturing
|
|
35
35
|
- **Direct Machine Control** – Stream G-code to Marlin controllers with pause/resume
|
|
36
36
|
- **XAB-Native Axis Output** – Standardized rotational-axis output with clear logical axis mapping
|
|
@@ -38,6 +38,8 @@ Design multi-layer winding patterns in a visual interface, simulate the full man
|
|
|
38
38
|
- **Command-Line Tools** – Scriptable workflows for automation and CI/CD
|
|
39
39
|
- **Comprehensive Documentation** – Architecture guides, examples, and API reference
|
|
40
40
|
|
|
41
|
+
> **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.
|
|
42
|
+
|
|
41
43
|
## Quick Start
|
|
42
44
|
|
|
43
45
|
### Option 1: Desktop GUI (Recommended)
|
|
@@ -198,10 +200,9 @@ FiberPath consists of four coordinated components:
|
|
|
198
200
|
▼
|
|
199
201
|
┌─────────────────────────────────────────────────┐
|
|
200
202
|
│ Core Engine (Python) │
|
|
201
|
-
│ •
|
|
203
|
+
│ • Winding path planning (hoop/helical/skip) │
|
|
202
204
|
│ • Layer strategies │
|
|
203
205
|
│ • G-code generation │
|
|
204
|
-
│ • Geometry utilities │
|
|
205
206
|
└─────────────────────────────────────────────────┘
|
|
206
207
|
▲
|
|
207
208
|
│ imports
|
|
@@ -18,4 +18,6 @@
|
|
|
18
18
|
|
|
19
19
|
- [ ] Track Dependabot moderate alert #3 (GHSA-wrw7-89jp-8q8g / glib). Current Tauri GTK stack pins `glib` 0.18.x (`^0.18` via `gtk`), so patched `glib` 0.20.0 cannot be adopted yet. Do not block a release solely for this; re-check after upstream Tauri/GTK dependency line moves to non-vulnerable glib.
|
|
20
20
|
|
|
21
|
+
- [ ] Track Dependabot low alert (GHSA-cq8v-f236-94qc / `rand`). The `rand 0.8.x` instance was patched to 0.8.6; a residual `rand 0.7.3` remains, pinned via `phf_generator 0.8.0` (`^0.7`) in Tauri's `tauri-build` → `kuchikiki` → `selectors`/`cssparser` chain. It is a **build-time-only** dependency (CSS-parser codegen), not in the shipped runtime, and the advisory (runtime `rand::rng()` soundness) does not apply to it — effectively zero risk. No 0.7.x fix exists; re-check after the Tauri `tauri-utils`/`kuchikiki` dependency line moves off `phf 0.8`. Do not block a release for this.
|
|
22
|
+
|
|
21
23
|
- [ ] Manual cross-platform validation (waived for v0.6.0, required before v1.0 or first public release): Linux `.deb`/`.AppImage` (Ubuntu 22.04, Debian 12, Fedora 39) and macOS `.dmg` (Intel + Apple Silicon) install, bundled CLI discovery, full workflow (validate → plan → simulate → visualize), serial port, file ops, upgrade, and uninstall. See `planning/roadmap-v6.md` Phases 1 & 2 for the full checklist.
|
|
@@ -24,7 +24,7 @@ together and where to extend them.
|
|
|
24
24
|
└──────────────────────┘
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
- **Core Engine (`fiberpath/`)** – Immutable planners,
|
|
27
|
+
- **Core Engine (`fiberpath/`)** – Immutable planners, machine abstractions, and
|
|
28
28
|
G-code emitters. The modules are designed to run without side effects so they can be imported from both CLI and API layers.
|
|
29
29
|
- **Interface Layer** – `fiberpath_cli` hosts the Typer commands, while `fiberpath_api` turns the
|
|
30
30
|
same operations into REST endpoints. The desktop GUI wraps the CLI and communicates via Tauri IPC
|
|
@@ -35,7 +35,6 @@ together and where to extend them.
|
|
|
35
35
|
| Module | Responsibility | Notes |
|
|
36
36
|
| ---------------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
|
|
37
37
|
| `fiberpath.planning` | Parses `.wind` files, validates machine/layer constraints, produces command sequences. | `PlanOptions` governs verbosity and optional advanced dialect override. |
|
|
38
|
-
| `fiberpath.geometry` | Curve/surface math shared between planner and simulator. | Pure functions make it safe for reuse. |
|
|
39
38
|
| `fiberpath.gcode` | Dialects and writers for Marlin-style controllers. | Extend here when adding custom headers or commands. Axis mapping configured via `MarlinDialect`. |
|
|
40
39
|
| `fiberpath.simulation` | Time/distance estimations based on planned feed rates. | Feeds CLI `simulate` summaries. Axis-aware for proper rotational calculations. |
|
|
41
40
|
| `fiberpath.execution` | PySerial streaming, pause/resume, and progress tracking. | Used by CLI streaming and API `/stream`. |
|
|
@@ -21,7 +21,7 @@ Applies to:
|
|
|
21
21
|
|
|
22
22
|
## Ownership
|
|
23
23
|
|
|
24
|
-
- Primary triage owner: maintainers responsible for the active release planning document in `
|
|
24
|
+
- Primary triage owner: maintainers responsible for the active release planning document in `docs/feature-backlog.md`
|
|
25
25
|
- PR review owner: area maintainer for the affected ecosystem
|
|
26
26
|
- Security escalation owner: release manager on current target milestone
|
|
27
27
|
|
|
@@ -62,6 +62,6 @@ When an update is deferred:
|
|
|
62
62
|
|
|
63
63
|
## Documentation and Traceability
|
|
64
64
|
|
|
65
|
-
- Roadmap and release source of truth: `CHANGELOG.md` and
|
|
65
|
+
- Roadmap and release source of truth: `CHANGELOG.md` and `docs/feature-backlog.md`.
|
|
66
66
|
- Release-level summary: `CHANGELOG.md`.
|
|
67
67
|
- CI architecture reference: `docs/development/ci-cd.md`.
|
|
@@ -43,7 +43,7 @@ freeze-cli:
|
|
|
43
43
|
python-version: "3.11"
|
|
44
44
|
- run: pip install . pyinstaller
|
|
45
45
|
- run: python scripts/freeze_cli.py
|
|
46
|
-
- uses: actions/upload-artifact@
|
|
46
|
+
- uses: actions/upload-artifact@v7
|
|
47
47
|
with:
|
|
48
48
|
name: fiberpath-cli-${{ matrix.os }}
|
|
49
49
|
path: dist/fiberpath*
|