fiberpath 0.6.2__tar.gz → 0.7.1__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.6.2 → fiberpath-0.7.1}/.gitattributes +6 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/actions/setup-python/action.yml +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/ci-check.yml +7 -17
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/dependency-audit.yml +3 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/docs-deploy.yml +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/gui-ci.yml +11 -4
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/gui-packaging.yml +43 -8
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/release.yml +7 -7
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.gitignore +3 -3
- fiberpath-0.7.1/.pre-commit-config.yaml +36 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.vscode/extensions.json +1 -1
- fiberpath-0.7.1/.vscode/launch.json +35 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/CHANGELOG.md +57 -7
- {fiberpath-0.6.2 → fiberpath-0.7.1}/PKG-INFO +14 -21
- {fiberpath-0.6.2 → fiberpath-0.7.1}/README.md +13 -20
- {fiberpath-0.6.2 → fiberpath-0.7.1}/TODO.md +1 -5
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/architecture/axis-system.md +5 -34
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/architecture/overview.md +6 -10
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/development/contributing.md +2 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/development/dependency-policy.md +3 -3
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/development/packaging.md +2 -2
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/development/release-process.md +10 -2
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/development/tooling.md +20 -6
- fiberpath-0.6.2/planning/roadmap-backlog.md → fiberpath-0.7.1/docs/feature-backlog.md +5 -5
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/getting-started.md +3 -5
- fiberpath-0.7.1/docs/guides/axis-mapping.md +49 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/index.md +9 -9
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/reference/api.md +1 -4
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/reference/concepts.md +2 -3
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/reference/planner-math.md +3 -3
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/troubleshooting.md +3 -3
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/AvBay(470mm)single.wind +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/CarbonMotorTube(1295mm).wind +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/MainChute(585mm).wind +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/gcode/dialects.py +3 -7
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/machine.py +3 -6
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/simulation/simulator.py +9 -10
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/visualization/plotter.py +8 -9
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/routes/plan.py +2 -5
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/schemas.py +0 -7
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/plan.py +4 -19
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/.gitignore +2 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/architecture/cli-integration.md +5 -14
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/architecture/state-management.md +0 -2
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/development.md +4 -3
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/guides/performance.md +18 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/guides/schemas.md +7 -7
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/guides/styling.md +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/overview.md +2 -2
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/reference/type-safety.md +9 -9
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/testing.md +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/package-lock.json +172 -172
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/package.json +10 -9
- fiberpath-0.7.1/fiberpath_gui/perf/bundle-baseline.json +11 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/schemas/wind-schema.json +1 -1
- fiberpath-0.7.1/fiberpath_gui/scripts/check-bundle-budget.mjs +141 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/App.tsx +19 -12
- fiberpath-0.7.1/fiberpath_gui/src/components/ErrorBoundary.test.tsx +74 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/MenuBar.tsx +44 -25
- fiberpath-0.7.1/fiberpath_gui/src/components/StatusBar.test.tsx +80 -0
- fiberpath-0.7.1/fiberpath_gui/src/components/StreamTab/ConnectionSection.test.tsx +112 -0
- fiberpath-0.7.1/fiberpath_gui/src/components/StreamTab/FileStreamingSection.test.tsx +130 -0
- fiberpath-0.7.1/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.test.tsx +52 -0
- fiberpath-0.7.1/fiberpath_gui/src/components/StreamTab/ManualControlSection.test.tsx +102 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/ManualControlSection.tsx +1 -1
- fiberpath-0.7.1/fiberpath_gui/src/components/StreamTab/StreamLog.test.tsx +85 -0
- fiberpath-0.7.1/fiberpath_gui/src/components/TabBar.test.tsx +44 -0
- fiberpath-0.7.1/fiberpath_gui/src/components/Toast/ToastContainer.test.tsx +65 -0
- fiberpath-0.7.1/fiberpath_gui/src/components/canvas/CanvasControls.test.tsx +82 -0
- fiberpath-0.7.1/fiberpath_gui/src/components/canvas/LayerScrubber.test.tsx +46 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/dialogs/AboutDialog.tsx +1 -1
- fiberpath-0.7.1/fiberpath_gui/src/components/dialogs/BaseDialog.test.tsx +83 -0
- fiberpath-0.7.1/fiberpath_gui/src/components/dialogs/DiagnosticsDialog.test.tsx +109 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/dialogs/ExportConfirmationDialog.tsx +0 -6
- fiberpath-0.7.1/fiberpath_gui/src/components/editors/HelicalLayerEditor.test.tsx +69 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/editors/HelicalLayerEditor.tsx +75 -18
- fiberpath-0.7.1/fiberpath_gui/src/components/editors/HoopLayerEditor.test.tsx +58 -0
- fiberpath-0.7.1/fiberpath_gui/src/components/editors/SkipLayerEditor.test.tsx +59 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/editors/SkipLayerEditor.tsx +23 -7
- fiberpath-0.7.1/fiberpath_gui/src/components/forms/MachineSettingsForm.test.tsx +43 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/forms/MachineSettingsForm.tsx +21 -34
- fiberpath-0.7.1/fiberpath_gui/src/components/forms/MandrelForm.test.tsx +60 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/forms/MandrelForm.tsx +50 -13
- fiberpath-0.7.1/fiberpath_gui/src/components/forms/TowForm.test.tsx +60 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/forms/TowForm.tsx +44 -12
- fiberpath-0.7.1/fiberpath_gui/src/components/layers/LayerRow.test.tsx +110 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/layers/LayerRow.tsx +39 -26
- fiberpath-0.7.1/fiberpath_gui/src/components/layers/LayerStack.test.tsx +143 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/panels/BottomPanel.tsx +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/panels/LeftPanel.tsx +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/panels/RightPanel.tsx +1 -1
- fiberpath-0.7.1/fiberpath_gui/src/components/panels/panels.test.tsx +41 -0
- fiberpath-0.7.1/fiberpath_gui/src/components/tabs/MainTab.test.tsx +65 -0
- fiberpath-0.7.1/fiberpath_gui/src/contexts/CliHealthContext.test.tsx +36 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/contexts/CliHealthContext.tsx +2 -2
- fiberpath-0.7.1/fiberpath_gui/src/hooks/canvas/usePreviewGeneration.test.ts +169 -0
- fiberpath-0.7.1/fiberpath_gui/src/hooks/stream/useConnectionActions.test.ts +193 -0
- fiberpath-0.7.1/fiberpath_gui/src/hooks/stream/useManualCommandActions.test.ts +166 -0
- fiberpath-0.7.1/fiberpath_gui/src/hooks/stream/useStreamingActions.test.ts +318 -0
- fiberpath-0.7.1/fiberpath_gui/src/hooks/useCliHealth.test.ts +207 -0
- fiberpath-0.7.1/fiberpath_gui/src/hooks/useDebouncedValue.test.ts +106 -0
- fiberpath-0.7.1/fiberpath_gui/src/hooks/useDebouncedValue.ts +17 -0
- fiberpath-0.7.1/fiberpath_gui/src/hooks/useFileOperations.test.tsx +77 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useFileOperations.ts +8 -0
- fiberpath-0.7.1/fiberpath_gui/src/hooks/useKeyboardShortcuts.test.ts +163 -0
- fiberpath-0.7.1/fiberpath_gui/src/hooks/useMenubarInteractions.test.tsx +97 -0
- fiberpath-0.7.1/fiberpath_gui/src/layouts/MainLayout.test.tsx +75 -0
- fiberpath-0.7.1/fiberpath_gui/src/lib/commands.test.ts +202 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/commands.ts +27 -10
- fiberpath-0.7.1/fiberpath_gui/src/lib/fileOperations.test.ts +330 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/fileOperations.ts +49 -9
- fiberpath-0.7.1/fiberpath_gui/src/lib/helicalValidation.test.ts +179 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/helicalValidation.ts +49 -0
- fiberpath-0.7.1/fiberpath_gui/src/lib/marlin-api.test.ts +188 -0
- fiberpath-0.7.1/fiberpath_gui/src/lib/menuConfig.test.ts +49 -0
- fiberpath-0.7.1/fiberpath_gui/src/lib/numericFields.test.ts +59 -0
- fiberpath-0.7.1/fiberpath_gui/src/lib/recentFiles.test.ts +142 -0
- fiberpath-0.7.1/fiberpath_gui/src/lib/retry.test.ts +114 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/schemas.test.ts +0 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/schemas.ts +0 -1
- fiberpath-0.7.1/fiberpath_gui/src/lib/streamFeedback.test.ts +352 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/validation.test.ts +6 -6
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/validation.ts +10 -2
- fiberpath-0.7.1/fiberpath_gui/src/lib/validationErrors.test.ts +41 -0
- fiberpath-0.7.1/fiberpath_gui/src/lib/validationErrors.ts +124 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/stores/projectStore.test.ts +32 -9
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/stores/projectStore.ts +45 -9
- fiberpath-0.7.1/fiberpath_gui/src/stores/toastStore.test.ts +87 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/buttons.css +0 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/canvas.css +2 -3
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/dialogs.css +0 -14
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/forms.css +0 -19
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/index.css +2 -2
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/layout.css +0 -50
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/panels.css +4 -79
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/reset.css +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/tabs.css +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/tokens.css +0 -76
- fiberpath-0.7.1/fiberpath_gui/src/styles/typography.css +68 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/tests/integration/workflows.test.ts +3 -3
- fiberpath-0.7.1/fiberpath_gui/src/tests/renderWithProviders.tsx +73 -0
- fiberpath-0.7.1/fiberpath_gui/src/tests/storeUtils.ts +96 -0
- fiberpath-0.7.1/fiberpath_gui/src/tests/tauriMocks.ts +99 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/types/converters.test.ts +5 -10
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/types/converters.ts +3 -4
- fiberpath-0.7.1/fiberpath_gui/src/types/project.test.ts +159 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/types/project.ts +0 -2
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/types/wind-schema.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/Cargo.lock +3 -3
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/Cargo.toml +2 -2
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/src/main.rs +1 -8
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/tauri.conf.json +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/tsconfig.json +1 -1
- fiberpath-0.7.1/fiberpath_gui/vite.config.ts +14 -0
- fiberpath-0.6.2/fiberpath_gui/vite.config.ts → fiberpath-0.7.1/fiberpath_gui/vitest.config.ts +16 -15
- {fiberpath-0.6.2 → fiberpath-0.7.1}/pyproject.toml +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/e2e-check-artifacts.ps1 +55 -55
- {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/e2e-cli-smoke.ps1 +52 -52
- {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/extract-package-runtime.ps1 +88 -61
- {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/extract-package-runtime.sh +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/find-bundled-cli.ps1 +80 -60
- {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/find-bundled-cli.sh +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/setup.cfg +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/api/test_plan_route.py +2 -2
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/api/test_simulate_route.py +3 -3
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/api/test_stream_route.py +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/api/test_stream_route_errors.py +1 -1
- fiberpath-0.7.1/tests/cli/test_axis_format.py +87 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cli/test_cli_json.py +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/gcode/test_dialects.py +10 -24
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/planning/_generate_fixtures.py +1 -1
- fiberpath-0.7.1/tests/planning/fixtures/helical_layer.gcode +4525 -0
- fiberpath-0.7.1/tests/planning/fixtures/hoop_layer.gcode +251 -0
- fiberpath-0.7.1/tests/planning/fixtures/hoop_only_program.gcode +214 -0
- fiberpath-0.7.1/tests/planning/fixtures/skip_layer.gcode +3 -0
- fiberpath-0.7.1/tests/planning/test_axis_mapping.py +143 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/planning/test_planner_smoke.py +17 -13
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/simulation/test_simulator.py +2 -2
- fiberpath-0.7.1/tests/simulation/test_simulator_axis_detection.py +80 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/visualization/test_plotter.py +8 -14
- fiberpath-0.7.1/tests/visualization/test_plotter_axis_detection.py +83 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/uv.lock +87 -87
- fiberpath-0.6.2/docs/guides/axis-mapping.md +0 -182
- fiberpath-0.6.2/fiberpath_gui/src/components/FileField.tsx +0 -61
- fiberpath-0.6.2/fiberpath_gui/src/components/ResultCard.tsx +0 -15
- fiberpath-0.6.2/fiberpath_gui/src/components/StatusText.tsx +0 -30
- fiberpath-0.6.2/fiberpath_gui/src/components/StreamTab/index.ts +0 -10
- fiberpath-0.6.2/fiberpath_gui/src/styles/typography.css +0 -127
- fiberpath-0.6.2/fiberpath_gui/vitest.config.ts +0 -18
- fiberpath-0.6.2/planning/gui-framework-migration-evaluation-plan.md +0 -247
- fiberpath-0.6.2/planning/roadmap-v0.6.2-react-hotspot-cleanup.md +0 -253
- fiberpath-0.6.2/planning/roadmap-v7.md +0 -232
- fiberpath-0.6.2/tests/cli/test_axis_format.py +0 -200
- fiberpath-0.6.2/tests/planning/fixtures/helical_layer.gcode +0 -4525
- fiberpath-0.6.2/tests/planning/fixtures/hoop_layer.gcode +0 -251
- fiberpath-0.6.2/tests/planning/fixtures/hoop_only_program.gcode +0 -214
- fiberpath-0.6.2/tests/planning/fixtures/skip_layer.gcode +0 -3
- fiberpath-0.6.2/tests/planning/test_axis_mapping.py +0 -277
- fiberpath-0.6.2/tests/simulation/test_simulator_axis_detection.py +0 -89
- fiberpath-0.6.2/tests/visualization/test_plotter_axis_detection.py +0 -98
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/actions/setup-node/action.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/actions/setup-rust/action.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/dependabot.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/backend-ci.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/docs-ci.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/gui-e2e-smoke.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/.vscode/settings.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/LICENSE +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/development/ci-cd.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/guides/marlin-streaming.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/guides/visualization.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/guides/wind-format.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/vm-testing.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/README.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/complex_surface/README.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/multi_layer/README.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/multi_layer/input.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/AvBay(470mm)triple.gcode +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/AvBay(470mm)triple.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/CarbonMotorTube(1295mm).gcode +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/MainChute(585mm).gcode +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/simple_cylinder/README.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/simple_cylinder/input.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/sized_simple_cylinder/README.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/sized_simple_cylinder/input.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/config/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/config/schemas.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/config/validator.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/execution/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/execution/marlin.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/gcode/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/gcode/generator.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/geometry/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/geometry/curves.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/geometry/intersections.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/geometry/surfaces.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/math_utils.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/calculations.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/exceptions.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/helpers.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/layer_strategies.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/planner.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/validators.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/simulation/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/visualization/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/visualization/export_json.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/main.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/package-lock.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/path_policy.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/routes/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/routes/simulate.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/routes/stream.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/routes/validate.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/__main__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/interactive.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/main.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/output.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/plot.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/simulate.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/stream.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/validate.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/.nvmrc +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/.stylelintrc.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/README.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/bundled-cli/.gitkeep +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/architecture/streaming-state.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/architecture/tech-stack.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/generate-types.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/index.html +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/scripts/check-css-vars.mjs +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/CliHealthWarning.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/ErrorBoundary.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/ErrorNotificationToast.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StatusBar.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/ConnectionSection.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/ConnectionSection.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/ManualControlSection.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/StreamControls.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/StreamControls.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/StreamLog.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/StreamLog.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/StreamTab.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/StreamTab.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/TabBar.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/Toast/ToastContainer.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/Toast/ToastContainer.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/canvas/CanvasControls.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/canvas/CenterCanvas.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/canvas/LayerScrubber.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/canvas/VisualizationCanvas.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/dialogs/BaseDialog.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/dialogs/CliUnavailableDialog.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/dialogs/DiagnosticsDialog.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/editors/HoopLayerEditor.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/editors/LayerNumericField.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/layers/LayerStack.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/tabs/MainTab.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/contexts/ErrorNotificationContext.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/canvas/usePreviewGeneration.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/stream/useConnectionActions.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/stream/useManualCommandActions.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/stream/useStreamingActions.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useCliHealth.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useKeyboardShortcuts.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useMenubarInteractions.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useStreamEvents.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useTheme.test.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useTheme.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/layouts/MainLayout.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/constants.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/marlin-api.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/menuConfig.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/numericFields.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/recentFiles.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/retry.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/streamFeedback.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/tauri-types.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/toastMessages.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/main.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/stores/streamStore.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/stores/toastStore.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/notifications.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/tests/integration/streamLifecycle.test.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/tests/setup.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/types/components.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/build.rs +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/capabilities/default.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/icons/128x128.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/icons/256x256.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/icons/32x32.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/icons/512x512.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/icons/icon.ico +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/src/cli_path.rs +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/src/cli_process.rs +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/src/marlin.rs +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/tsconfig.node.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/mkdocs.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/package-lock.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/e2e-check-artifacts.sh +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/e2e-cli-smoke.sh +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/export_schema.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/freeze_cli.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/generate_schema.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/sync_gui_docs.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cli/test_cli_smoke.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cli/test_stream_command.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/config/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/config/test_validator.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/inputs/helical-balanced.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/inputs/simple-hoop.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/inputs/skip-bias.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/outputs/helical-balanced/output.gcode +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/outputs/helical-balanced/preview.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/outputs/simple-hoop/output.gcode +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/outputs/simple-hoop/preview.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/outputs/skip-bias/output.gcode +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/outputs/skip-bias/preview.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/execution/test_marlin_streamer.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/gcode/test_generator.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/geometry/test_surfaces.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/planning/test_helpers_machine.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/planning/test_layer_strategies.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/planning/test_validators.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/tauri/test_marlin_integration.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/tauri/test_port_discovery.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/visualization/test_export_json.py +0 -0
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
* text=auto eol=lf
|
|
2
|
+
*.bat text eol=crlf
|
|
3
|
+
*.cmd text eol=crlf
|
|
4
|
+
*.ps1 text eol=crlf
|
|
5
|
+
|
|
1
6
|
*.gcode linguist-generated=true
|
|
2
7
|
*.gco linguist-generated=true
|
|
3
8
|
*.gcnc linguist-generated=true
|
|
4
9
|
*.ngc linguist-generated=true
|
|
5
|
-
*.log linguist-generated=true
|
|
10
|
+
*.log linguist-generated=true
|
|
@@ -15,14 +15,9 @@ on:
|
|
|
15
15
|
- "setup.cfg"
|
|
16
16
|
- "mkdocs.yml"
|
|
17
17
|
- "README.md"
|
|
18
|
-
- "scripts
|
|
19
|
-
- ".github/workflows
|
|
20
|
-
- ".github/
|
|
21
|
-
- ".github/workflows/gui-ci.yml"
|
|
22
|
-
- ".github/workflows/docs-ci.yml"
|
|
23
|
-
- ".github/actions/setup-python/**"
|
|
24
|
-
- ".github/actions/setup-node/**"
|
|
25
|
-
- ".github/actions/setup-rust/**"
|
|
18
|
+
- "scripts/**"
|
|
19
|
+
- ".github/workflows/**"
|
|
20
|
+
- ".github/actions/**"
|
|
26
21
|
pull_request:
|
|
27
22
|
branches: [main]
|
|
28
23
|
paths:
|
|
@@ -37,14 +32,9 @@ on:
|
|
|
37
32
|
- "setup.cfg"
|
|
38
33
|
- "mkdocs.yml"
|
|
39
34
|
- "README.md"
|
|
40
|
-
- "scripts
|
|
41
|
-
- ".github/workflows
|
|
42
|
-
- ".github/
|
|
43
|
-
- ".github/workflows/gui-ci.yml"
|
|
44
|
-
- ".github/workflows/docs-ci.yml"
|
|
45
|
-
- ".github/actions/setup-python/**"
|
|
46
|
-
- ".github/actions/setup-node/**"
|
|
47
|
-
- ".github/actions/setup-rust/**"
|
|
35
|
+
- "scripts/**"
|
|
36
|
+
- ".github/workflows/**"
|
|
37
|
+
- ".github/actions/**"
|
|
48
38
|
workflow_dispatch:
|
|
49
39
|
|
|
50
40
|
permissions:
|
|
@@ -64,7 +54,7 @@ jobs:
|
|
|
64
54
|
|
|
65
55
|
- name: Detect changed areas
|
|
66
56
|
id: filter
|
|
67
|
-
uses: dorny/paths-filter@
|
|
57
|
+
uses: dorny/paths-filter@v4
|
|
68
58
|
with:
|
|
69
59
|
filters: |
|
|
70
60
|
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:
|
|
@@ -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
|
|
@@ -26,12 +26,9 @@ jobs:
|
|
|
26
26
|
with:
|
|
27
27
|
install-linux-deps: "true"
|
|
28
28
|
|
|
29
|
-
- name: Run
|
|
29
|
+
- name: Run TypeScript type check
|
|
30
30
|
run: npm run lint
|
|
31
31
|
|
|
32
|
-
- name: Run TypeScript compiler
|
|
33
|
-
run: npx tsc --noEmit
|
|
34
|
-
|
|
35
32
|
- name: Run Stylelint (CSS)
|
|
36
33
|
run: npm run lint:css
|
|
37
34
|
|
|
@@ -69,6 +66,9 @@ jobs:
|
|
|
69
66
|
- name: Build Vite assets
|
|
70
67
|
run: npm run build
|
|
71
68
|
|
|
69
|
+
- name: Enforce bundle budget
|
|
70
|
+
run: npm run perf:bundle
|
|
71
|
+
|
|
72
72
|
- name: Verify build output
|
|
73
73
|
run: |
|
|
74
74
|
if [ ! -d "dist" ]; then
|
|
@@ -77,6 +77,13 @@ jobs:
|
|
|
77
77
|
fi
|
|
78
78
|
echo "Build successful - dist/ directory created"
|
|
79
79
|
|
|
80
|
+
- name: Upload bundle metrics artifact
|
|
81
|
+
uses: actions/upload-artifact@v7
|
|
82
|
+
with:
|
|
83
|
+
name: gui-bundle-metrics
|
|
84
|
+
path: fiberpath_gui/perf/reports/bundle-metrics.json
|
|
85
|
+
if-no-files-found: error
|
|
86
|
+
|
|
80
87
|
- name: Setup Rust environment
|
|
81
88
|
uses: ./.github/actions/setup-rust
|
|
82
89
|
with:
|
|
@@ -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:
|
|
@@ -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
|
-
|
|
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
|
|
177
|
+
|
|
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
|
|
@@ -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 }}';
|
|
@@ -175,17 +175,17 @@ jobs:
|
|
|
175
175
|
base: prevTag,
|
|
176
176
|
head: newTag
|
|
177
177
|
});
|
|
178
|
-
|
|
178
|
+
|
|
179
179
|
// Categorize commits
|
|
180
180
|
const added = [];
|
|
181
181
|
const fixed = [];
|
|
182
182
|
const changed = [];
|
|
183
|
-
|
|
183
|
+
|
|
184
184
|
comparison.commits.forEach(commit => {
|
|
185
185
|
const msg = commit.commit.message.split('\n')[0];
|
|
186
186
|
const sha = commit.sha.substring(0, 7);
|
|
187
187
|
const entry = `- ${msg} (\`${sha}\`)`;
|
|
188
|
-
|
|
188
|
+
|
|
189
189
|
const lower = msg.toLowerCase();
|
|
190
190
|
if (lower.startsWith('add') || lower.startsWith('feat')) {
|
|
191
191
|
added.push(entry);
|
|
@@ -195,7 +195,7 @@ jobs:
|
|
|
195
195
|
changed.push(entry);
|
|
196
196
|
}
|
|
197
197
|
});
|
|
198
|
-
|
|
198
|
+
|
|
199
199
|
if (added.length > 0) {
|
|
200
200
|
notes += `### Added\n${added.join('\n')}\n\n`;
|
|
201
201
|
}
|
|
@@ -205,7 +205,7 @@ jobs:
|
|
|
205
205
|
if (changed.length > 0) {
|
|
206
206
|
notes += `### Changed\n${changed.join('\n')}\n\n`;
|
|
207
207
|
}
|
|
208
|
-
|
|
208
|
+
|
|
209
209
|
notes += `**Full Changelog:** https://github.com/${repo.owner}/${repo.repo}/compare/${prevTag}...${newTag}\n`;
|
|
210
210
|
} else {
|
|
211
211
|
notes += `Initial release.\n`;
|
|
@@ -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 }}
|
|
@@ -188,9 +188,9 @@ cython_debug/
|
|
|
188
188
|
.abstra/
|
|
189
189
|
|
|
190
190
|
# Visual Studio Code
|
|
191
|
-
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
|
191
|
+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
|
192
192
|
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
|
193
|
-
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
|
193
|
+
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
|
194
194
|
# you could uncomment the following to ignore the entire vscode folder
|
|
195
195
|
# .vscode/
|
|
196
196
|
|
|
@@ -218,4 +218,4 @@ __marimo__/
|
|
|
218
218
|
# temporary files
|
|
219
219
|
temp/
|
|
220
220
|
tmp/
|
|
221
|
-
.codex
|
|
221
|
+
.codex
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
minimum_pre_commit_version: "3.7.0"
|
|
2
|
+
default_stages: [pre-commit]
|
|
3
|
+
|
|
4
|
+
repos:
|
|
5
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
6
|
+
rev: v5.0.0
|
|
7
|
+
hooks:
|
|
8
|
+
- id: trailing-whitespace
|
|
9
|
+
- id: end-of-file-fixer
|
|
10
|
+
- id: check-merge-conflict
|
|
11
|
+
- id: check-added-large-files
|
|
12
|
+
|
|
13
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
14
|
+
rev: v0.14.0
|
|
15
|
+
hooks:
|
|
16
|
+
- id: ruff-check
|
|
17
|
+
args: [--fix]
|
|
18
|
+
files: ^(fiberpath|fiberpath_api|fiberpath_cli|tests)/.*\.py$
|
|
19
|
+
- id: ruff-format
|
|
20
|
+
files: ^(fiberpath|fiberpath_api|fiberpath_cli|tests)/.*\.py$
|
|
21
|
+
|
|
22
|
+
- repo: local
|
|
23
|
+
hooks:
|
|
24
|
+
- id: gui-typecheck
|
|
25
|
+
name: gui typecheck (tsc)
|
|
26
|
+
entry: npm --prefix fiberpath_gui run lint
|
|
27
|
+
language: system
|
|
28
|
+
pass_filenames: false
|
|
29
|
+
files: ^fiberpath_gui/src/.*\.(ts|tsx)$
|
|
30
|
+
|
|
31
|
+
- id: gui-css-lint
|
|
32
|
+
name: gui css lint (stylelint)
|
|
33
|
+
entry: npm --prefix fiberpath_gui run lint:css
|
|
34
|
+
language: system
|
|
35
|
+
pass_filenames: false
|
|
36
|
+
files: ^fiberpath_gui/src/.*\.css$
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2.0",
|
|
3
|
+
"configurations": [
|
|
4
|
+
{
|
|
5
|
+
"name": "FiberPath GUI: Tauri Dev",
|
|
6
|
+
"type": "node-terminal",
|
|
7
|
+
"request": "launch",
|
|
8
|
+
"command": "cd fiberpath_gui && npm run tauri dev"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"name": "FiberPath GUI: Vite Dev Server",
|
|
12
|
+
"type": "node-terminal",
|
|
13
|
+
"request": "launch",
|
|
14
|
+
"command": "cd fiberpath_gui && npm run dev"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "FiberPath GUI: Vitest (Watch)",
|
|
18
|
+
"type": "node-terminal",
|
|
19
|
+
"request": "launch",
|
|
20
|
+
"command": "cd fiberpath_gui && npm run test"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"name": "FiberPath GUI: Vitest (Coverage)",
|
|
24
|
+
"type": "node-terminal",
|
|
25
|
+
"request": "launch",
|
|
26
|
+
"command": "cd fiberpath_gui && npm run test:coverage"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "FiberPath Rust Backend: cargo run",
|
|
30
|
+
"type": "node-terminal",
|
|
31
|
+
"request": "launch",
|
|
32
|
+
"command": "cd fiberpath_gui/src-tauri && cargo run"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
@@ -8,15 +8,65 @@ The format is based on Keep a Changelog, and this project follows semantic versi
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [0.7.1] - 2026-04-16
|
|
12
|
+
|
|
11
13
|
### Added
|
|
12
14
|
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
15
|
+
- 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).
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Fixed Python audit CI failure caused by CVE-2025-71176 in `pytest 9.0.2`; bumped to `pytest 9.0.3`.
|
|
20
|
+
- Fixed Windows E2E smoke test failure caused by WiX MSI two-pass CAB extraction not being handled in `extract-package-runtime.ps1`.
|
|
21
|
+
- 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.
|
|
22
|
+
- Fixed `cargo audit` CI failure when `cargo-audit` was already installed (`exit 101`); guarded install with a version check.
|
|
23
|
+
- Fixed `ci-check.yml` required-status gate never posting on `scripts/ci/**` and workflow changes; broadened path filter to `scripts/**` and `.github/workflows/**`.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- Extended `dependency-audit.yml` and `gui-packaging.yml` to trigger on pull requests, not only post-merge pushes.
|
|
28
|
+
- Improved `find-bundled-cli.ps1` with a wider path regex and full diagnostics output on failure.
|
|
29
|
+
|
|
30
|
+
### Dependencies
|
|
31
|
+
|
|
32
|
+
- Bumped `pillow` (uv).
|
|
33
|
+
- Bumped `tokio` (Cargo, two patches).
|
|
34
|
+
- Bumped npm prod and dev minor-patch dependency groups.
|
|
35
|
+
- Bumped `react-zoom-pan-pinch` to 4.0.3.
|
|
36
|
+
- Bumped `actions/upload-pages-artifact` from 4 to 5.
|
|
37
|
+
- Bumped multiple Cargo minor-patch dependency groups.
|
|
38
|
+
|
|
39
|
+
### Internal
|
|
40
|
+
|
|
41
|
+
- 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`).
|
|
42
|
+
|
|
43
|
+
## [0.7.0] - 2026-04-08
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- Added GUI bundle-budget enforcement (`npm run perf:bundle`) with CI gating and machine-readable report output.
|
|
48
|
+
- Added stricter repository hygiene checks through pre-commit integration for Python lint/format and GUI type/CSS validation.
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
|
|
52
|
+
- Completed the XAB-only axis cutover across core planning, simulation, plotting, CLI, API, and GUI export workflows.
|
|
53
|
+
- Removed legacy XYZ axis-format options from built-in interfaces and aligned fixtures/examples with XAB defaults.
|
|
54
|
+
- Simplified GUI component/style surfaces by removing dead CSS/component paths and tightening shared editor/form boundaries.
|
|
55
|
+
- Hardened packaging/CI helper scripts for bundled CLI discovery and cross-platform release reliability.
|
|
56
|
+
|
|
57
|
+
### Fixed
|
|
58
|
+
|
|
59
|
+
- Fixed regression tests and fixtures that drifted during axis-format migration, including layer-strategy and plot-signature expectations.
|
|
60
|
+
- Fixed pre-commit Ruff hook compatibility by migrating from the legacy `ruff` alias to `ruff-check`.
|
|
61
|
+
|
|
62
|
+
### Documentation
|
|
63
|
+
|
|
64
|
+
- Updated release-facing docs to position v0.7.0 as current and reflect XAB-only behavior in user/developer guides.
|
|
65
|
+
- Documented helical coverage compatibility caveats and follow-up validation/schema hardening scope in roadmap/release notes.
|
|
66
|
+
|
|
67
|
+
### Internal
|
|
68
|
+
|
|
69
|
+
- 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`).
|
|
20
70
|
|
|
21
71
|
## [0.6.2] - 2026-04-07
|
|
22
72
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fiberpath
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.1
|
|
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
|
|
@@ -708,7 +708,7 @@ Description-Content-Type: text/markdown
|
|
|
708
708
|
|
|
709
709
|
**Plan, simulate, and manufacture composite parts with precision fiber winding.**
|
|
710
710
|
|
|
711
|
-
[](https://github.com/CameronBrooks11/fiberpath/releases)
|
|
712
712
|
[](LICENSE)
|
|
713
713
|
[](https://github.com/CameronBrooks11/fiberpath/actions/workflows/backend-ci.yml)
|
|
714
714
|
[](https://github.com/CameronBrooks11/fiberpath/actions/workflows/gui-ci.yml)
|
|
@@ -733,11 +733,11 @@ Design multi-layer winding patterns in a visual interface, simulate the full man
|
|
|
733
733
|
|
|
734
734
|
### Features
|
|
735
735
|
|
|
736
|
-
- **Visual Layer Editor** – Design winding patterns with
|
|
736
|
+
- **Visual Layer Editor** – Design winding patterns with live preview
|
|
737
737
|
- **Geodesic Path Planning** – Automatic computation of stable fiber trajectories
|
|
738
738
|
- **Hardware Simulation** – Validate motion before manufacturing
|
|
739
739
|
- **Direct Machine Control** – Stream G-code to Marlin controllers with pause/resume
|
|
740
|
-
- **
|
|
740
|
+
- **XAB-Native Axis Output** – Standardized rotational-axis output with clear logical axis mapping
|
|
741
741
|
- **Cross-Platform Desktop GUI** – Native Windows, macOS, and Linux applications
|
|
742
742
|
- **Command-Line Tools** – Scriptable workflows for automation and CI/CD
|
|
743
743
|
- **Comprehensive Documentation** – Architecture guides, examples, and API reference
|
|
@@ -819,18 +819,19 @@ pytest
|
|
|
819
819
|
```sh
|
|
820
820
|
# Generate G-code from a .wind configuration
|
|
821
821
|
fiberpath plan examples/simple_cylinder/input.wind -o output.gcode
|
|
822
|
-
|
|
823
|
-
# Specify axis format for your machine
|
|
824
|
-
fiberpath plan input.wind -o output.gcode --axis-format xab
|
|
825
822
|
```
|
|
826
823
|
|
|
827
|
-
### Visualizing Toolpaths
|
|
824
|
+
### Visualizing Toolpaths (2D)
|
|
828
825
|
|
|
829
826
|
```sh
|
|
830
827
|
# Create 2D unwrapped plot
|
|
831
828
|
fiberpath plot output.gcode --output preview.png --scale 0.8
|
|
829
|
+
```
|
|
832
830
|
|
|
833
|
-
|
|
831
|
+
### Simulating Jobs
|
|
832
|
+
|
|
833
|
+
```sh
|
|
834
|
+
# Simulation summary (time/material estimates; no interactive 3D viewer)
|
|
834
835
|
fiberpath simulate output.gcode
|
|
835
836
|
```
|
|
836
837
|
|
|
@@ -853,7 +854,7 @@ The GUI provides two main workflows:
|
|
|
853
854
|
**Main Tab:**
|
|
854
855
|
|
|
855
856
|
- Visual layer editor with add/remove/reorder
|
|
856
|
-
- Real-time
|
|
857
|
+
- Real-time unwrapped toolpath preview
|
|
857
858
|
- Parameter forms for mandrel, tow, and machine settings
|
|
858
859
|
- Export to G-code or save as `.wind` project file
|
|
859
860
|
|
|
@@ -888,7 +889,7 @@ FiberPath consists of four coordinated components:
|
|
|
888
889
|
┌─────────────────────────────────────────────────┐
|
|
889
890
|
│ Desktop GUI (Tauri + React) │
|
|
890
891
|
│ • Visual layer editor │
|
|
891
|
-
│ •
|
|
892
|
+
│ • 2D preview canvas │
|
|
892
893
|
│ • Serial communication controls │
|
|
893
894
|
└───────────────┬─────────────────────────────────┘
|
|
894
895
|
│ IPC calls
|
|
@@ -927,21 +928,13 @@ See [Architecture Documentation](https://cameronbrooks11.github.io/fiberpath/arc
|
|
|
927
928
|
|
|
928
929
|
## Axis Configuration
|
|
929
930
|
|
|
930
|
-
FiberPath
|
|
931
|
-
|
|
932
|
-
**XAB (Rotational) - Default**:
|
|
931
|
+
FiberPath uses XAB rotational-axis output in built-in workflows:
|
|
933
932
|
|
|
934
933
|
- `X` = Carriage position (linear, mm)
|
|
935
934
|
- `A` = Mandrel rotation (rotational, degrees)
|
|
936
935
|
- `B` = Delivery head rotation (rotational, degrees)
|
|
937
936
|
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
- `X` = Carriage position (linear, mm)
|
|
941
|
-
- `Y` = Mandrel rotation (treated as linear, degrees)
|
|
942
|
-
- `Z` = Delivery head rotation (treated as linear, degrees)
|
|
943
|
-
|
|
944
|
-
Use `--axis-format xab` (default) for new projects. The XYZ format maintains compatibility with legacy systems like Cyclone.
|
|
937
|
+
Legacy XYZ programs should be re-generated under current versions. Simulation and plotting reject auto-detected XYZ files with an explicit error so stale programs are surfaced early.
|
|
945
938
|
|
|
946
939
|
## Documentation
|
|
947
940
|
|
|
@@ -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)
|
|
@@ -29,11 +29,11 @@ Design multi-layer winding patterns in a visual interface, simulate the full man
|
|
|
29
29
|
|
|
30
30
|
### Features
|
|
31
31
|
|
|
32
|
-
- **Visual Layer Editor** – Design winding patterns with
|
|
32
|
+
- **Visual Layer Editor** – Design winding patterns with live preview
|
|
33
33
|
- **Geodesic Path Planning** – Automatic computation of stable fiber trajectories
|
|
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
|
|
37
37
|
- **Cross-Platform Desktop GUI** – Native Windows, macOS, and Linux applications
|
|
38
38
|
- **Command-Line Tools** – Scriptable workflows for automation and CI/CD
|
|
39
39
|
- **Comprehensive Documentation** – Architecture guides, examples, and API reference
|
|
@@ -115,18 +115,19 @@ pytest
|
|
|
115
115
|
```sh
|
|
116
116
|
# Generate G-code from a .wind configuration
|
|
117
117
|
fiberpath plan examples/simple_cylinder/input.wind -o output.gcode
|
|
118
|
-
|
|
119
|
-
# Specify axis format for your machine
|
|
120
|
-
fiberpath plan input.wind -o output.gcode --axis-format xab
|
|
121
118
|
```
|
|
122
119
|
|
|
123
|
-
### Visualizing Toolpaths
|
|
120
|
+
### Visualizing Toolpaths (2D)
|
|
124
121
|
|
|
125
122
|
```sh
|
|
126
123
|
# Create 2D unwrapped plot
|
|
127
124
|
fiberpath plot output.gcode --output preview.png --scale 0.8
|
|
125
|
+
```
|
|
128
126
|
|
|
129
|
-
|
|
127
|
+
### Simulating Jobs
|
|
128
|
+
|
|
129
|
+
```sh
|
|
130
|
+
# Simulation summary (time/material estimates; no interactive 3D viewer)
|
|
130
131
|
fiberpath simulate output.gcode
|
|
131
132
|
```
|
|
132
133
|
|
|
@@ -149,7 +150,7 @@ The GUI provides two main workflows:
|
|
|
149
150
|
**Main Tab:**
|
|
150
151
|
|
|
151
152
|
- Visual layer editor with add/remove/reorder
|
|
152
|
-
- Real-time
|
|
153
|
+
- Real-time unwrapped toolpath preview
|
|
153
154
|
- Parameter forms for mandrel, tow, and machine settings
|
|
154
155
|
- Export to G-code or save as `.wind` project file
|
|
155
156
|
|
|
@@ -184,7 +185,7 @@ FiberPath consists of four coordinated components:
|
|
|
184
185
|
┌─────────────────────────────────────────────────┐
|
|
185
186
|
│ Desktop GUI (Tauri + React) │
|
|
186
187
|
│ • Visual layer editor │
|
|
187
|
-
│ •
|
|
188
|
+
│ • 2D preview canvas │
|
|
188
189
|
│ • Serial communication controls │
|
|
189
190
|
└───────────────┬─────────────────────────────────┘
|
|
190
191
|
│ IPC calls
|
|
@@ -223,21 +224,13 @@ See [Architecture Documentation](https://cameronbrooks11.github.io/fiberpath/arc
|
|
|
223
224
|
|
|
224
225
|
## Axis Configuration
|
|
225
226
|
|
|
226
|
-
FiberPath
|
|
227
|
-
|
|
228
|
-
**XAB (Rotational) - Default**:
|
|
227
|
+
FiberPath uses XAB rotational-axis output in built-in workflows:
|
|
229
228
|
|
|
230
229
|
- `X` = Carriage position (linear, mm)
|
|
231
230
|
- `A` = Mandrel rotation (rotational, degrees)
|
|
232
231
|
- `B` = Delivery head rotation (rotational, degrees)
|
|
233
232
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
- `X` = Carriage position (linear, mm)
|
|
237
|
-
- `Y` = Mandrel rotation (treated as linear, degrees)
|
|
238
|
-
- `Z` = Delivery head rotation (treated as linear, degrees)
|
|
239
|
-
|
|
240
|
-
Use `--axis-format xab` (default) for new projects. The XYZ format maintains compatibility with legacy systems like Cyclone.
|
|
233
|
+
Legacy XYZ programs should be re-generated under current versions. Simulation and plotting reject auto-detected XYZ files with an explicit error so stale programs are surfaced early.
|
|
241
234
|
|
|
242
235
|
## Documentation
|
|
243
236
|
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
# TODO
|
|
2
2
|
|
|
3
|
-
Tasks for Cam todo:
|
|
4
|
-
|
|
5
|
-
- [ ] Remove untracked links and references to old files through out the docs.
|
|
6
|
-
|
|
7
3
|
- [ ] Add reprapdiscount smart graphics display to our machine and then document the process of connecting it to Marlin. More importantly, create documentation (need to think thru the best format for this) for the Marlin configuration itself for the machine as well as the physical wiring of everything.
|
|
8
4
|
|
|
9
5
|
- [ ] Review logic of how the various patterns are constructing and give tool tips or tables or aids or something or other to help users understand what the patterns are doing and how to use them effectively. The only relevant one right now is helical where it often gives circuit mismatch errors but its unclear where the raised number values come from / derive from their inputs in the properties panel.
|
|
@@ -20,6 +16,6 @@ Tasks for Cam todo:
|
|
|
20
16
|
|
|
21
17
|
- [ ] Fix zooming behavior in the plot viewer so it expands the entire image not within the image bounds since this becomes an issue for larger (exceeds bounds) or smaller (impossible to look at properly) images
|
|
22
18
|
|
|
23
|
-
- [ ] 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
|
|
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.
|
|
24
20
|
|
|
25
21
|
- [ ] 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.
|