fiberpath 0.6.2__tar.gz → 0.7.0__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.0}/.gitattributes +6 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.github/workflows/gui-ci.yml +11 -4
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.github/workflows/gui-packaging.yml +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.github/workflows/release.yml +5 -5
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.gitignore +3 -3
- fiberpath-0.7.0/.pre-commit-config.yaml +36 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.vscode/extensions.json +1 -1
- fiberpath-0.7.0/.vscode/launch.json +35 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/CHANGELOG.md +25 -7
- {fiberpath-0.6.2 → fiberpath-0.7.0}/PKG-INFO +14 -21
- {fiberpath-0.6.2 → fiberpath-0.7.0}/README.md +13 -20
- {fiberpath-0.6.2 → fiberpath-0.7.0}/TODO.md +1 -5
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/architecture/axis-system.md +5 -34
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/architecture/overview.md +6 -10
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/development/contributing.md +2 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/development/dependency-policy.md +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/development/packaging.md +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/development/release-process.md +10 -2
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/development/tooling.md +20 -6
- fiberpath-0.6.2/planning/roadmap-backlog.md → fiberpath-0.7.0/docs/feature-backlog.md +5 -5
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/getting-started.md +3 -5
- fiberpath-0.7.0/docs/guides/axis-mapping.md +49 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/index.md +9 -9
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/reference/api.md +1 -4
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/reference/concepts.md +2 -3
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/reference/planner-math.md +3 -3
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/troubleshooting.md +3 -3
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/rocketry/AvBay(470mm)single.wind +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/rocketry/CarbonMotorTube(1295mm).wind +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/rocketry/MainChute(585mm).wind +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/gcode/dialects.py +3 -7
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/planning/machine.py +3 -6
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/simulation/simulator.py +9 -10
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/visualization/plotter.py +8 -9
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_api/routes/plan.py +2 -5
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_api/schemas.py +0 -7
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_cli/plan.py +4 -19
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/.gitignore +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/docs/architecture/cli-integration.md +4 -13
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/docs/architecture/state-management.md +0 -2
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/docs/development.md +4 -3
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/docs/guides/performance.md +18 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/docs/guides/schemas.md +7 -7
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/docs/guides/styling.md +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/docs/overview.md +2 -2
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/docs/reference/type-safety.md +9 -9
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/docs/testing.md +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/package-lock.json +2 -2
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/package.json +2 -1
- fiberpath-0.7.0/fiberpath_gui/perf/bundle-baseline.json +11 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/schemas/wind-schema.json +1 -1
- fiberpath-0.7.0/fiberpath_gui/scripts/check-bundle-budget.mjs +141 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/App.tsx +19 -12
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/MenuBar.tsx +44 -25
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/ManualControlSection.tsx +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/dialogs/AboutDialog.tsx +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/dialogs/ExportConfirmationDialog.tsx +0 -6
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/editors/HelicalLayerEditor.tsx +75 -18
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/editors/SkipLayerEditor.tsx +23 -7
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/forms/MachineSettingsForm.tsx +21 -34
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/forms/MandrelForm.tsx +50 -13
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/forms/TowForm.tsx +44 -12
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/layers/LayerRow.tsx +39 -26
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/panels/BottomPanel.tsx +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/panels/LeftPanel.tsx +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/panels/RightPanel.tsx +1 -1
- fiberpath-0.7.0/fiberpath_gui/src/hooks/useDebouncedValue.ts +17 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/hooks/useFileOperations.ts +8 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/commands.ts +27 -10
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/fileOperations.ts +49 -9
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/helicalValidation.ts +49 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/schemas.test.ts +0 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/schemas.ts +0 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/validation.test.ts +6 -6
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/validation.ts +10 -2
- fiberpath-0.7.0/fiberpath_gui/src/lib/validationErrors.test.ts +41 -0
- fiberpath-0.7.0/fiberpath_gui/src/lib/validationErrors.ts +124 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/stores/projectStore.test.ts +32 -9
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/stores/projectStore.ts +45 -9
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/styles/buttons.css +0 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/styles/canvas.css +2 -3
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/styles/dialogs.css +0 -14
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/styles/forms.css +0 -19
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/styles/index.css +2 -2
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/styles/layout.css +0 -50
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/styles/panels.css +4 -79
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/styles/reset.css +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/styles/tabs.css +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/styles/tokens.css +0 -76
- fiberpath-0.7.0/fiberpath_gui/src/styles/typography.css +68 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/tests/integration/workflows.test.ts +3 -3
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/types/converters.test.ts +5 -10
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/types/converters.ts +3 -4
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/types/project.ts +0 -2
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/types/wind-schema.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/Cargo.lock +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/Cargo.toml +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/src/main.rs +1 -8
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/tauri.conf.json +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/pyproject.toml +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/scripts/ci/e2e-check-artifacts.ps1 +55 -55
- {fiberpath-0.6.2 → fiberpath-0.7.0}/scripts/ci/e2e-cli-smoke.ps1 +52 -52
- {fiberpath-0.6.2 → fiberpath-0.7.0}/scripts/ci/extract-package-runtime.ps1 +61 -61
- {fiberpath-0.6.2 → fiberpath-0.7.0}/scripts/ci/extract-package-runtime.sh +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/scripts/ci/find-bundled-cli.ps1 +60 -60
- {fiberpath-0.6.2 → fiberpath-0.7.0}/scripts/ci/find-bundled-cli.sh +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/setup.cfg +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/api/test_plan_route.py +2 -2
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/api/test_simulate_route.py +3 -3
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/api/test_stream_route.py +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/api/test_stream_route_errors.py +1 -1
- fiberpath-0.7.0/tests/cli/test_axis_format.py +87 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/cli/test_cli_json.py +1 -1
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/gcode/test_dialects.py +10 -24
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/planning/_generate_fixtures.py +1 -1
- fiberpath-0.7.0/tests/planning/fixtures/helical_layer.gcode +4525 -0
- fiberpath-0.7.0/tests/planning/fixtures/hoop_layer.gcode +251 -0
- fiberpath-0.7.0/tests/planning/fixtures/hoop_only_program.gcode +214 -0
- fiberpath-0.7.0/tests/planning/fixtures/skip_layer.gcode +3 -0
- fiberpath-0.7.0/tests/planning/test_axis_mapping.py +143 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/planning/test_planner_smoke.py +17 -13
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/simulation/test_simulator.py +2 -2
- fiberpath-0.7.0/tests/simulation/test_simulator_axis_detection.py +80 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/visualization/test_plotter.py +8 -14
- fiberpath-0.7.0/tests/visualization/test_plotter_axis_detection.py +83 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/uv.lock +1 -1
- 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/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.0}/.github/actions/setup-node/action.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.github/actions/setup-python/action.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.github/actions/setup-rust/action.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.github/dependabot.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.github/workflows/backend-ci.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.github/workflows/ci-check.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.github/workflows/dependency-audit.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.github/workflows/docs-ci.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.github/workflows/docs-deploy.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.github/workflows/gui-e2e-smoke.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/.vscode/settings.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/LICENSE +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/development/ci-cd.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/guides/marlin-streaming.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/guides/visualization.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/guides/wind-format.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/docs/vm-testing.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/README.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/complex_surface/README.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/multi_layer/README.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/multi_layer/input.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/rocketry/AvBay(470mm)triple.gcode +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/rocketry/AvBay(470mm)triple.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/rocketry/CarbonMotorTube(1295mm).gcode +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/rocketry/MainChute(585mm).gcode +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/simple_cylinder/README.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/simple_cylinder/input.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/sized_simple_cylinder/README.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/examples/sized_simple_cylinder/input.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/config/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/config/schemas.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/config/validator.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/execution/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/execution/marlin.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/gcode/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/gcode/generator.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/geometry/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/geometry/curves.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/geometry/intersections.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/geometry/surfaces.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/math_utils.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/planning/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/planning/calculations.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/planning/exceptions.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/planning/helpers.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/planning/layer_strategies.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/planning/planner.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/planning/validators.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/simulation/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/visualization/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath/visualization/export_json.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_api/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_api/main.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_api/package-lock.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_api/path_policy.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_api/routes/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_api/routes/simulate.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_api/routes/stream.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_api/routes/validate.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_cli/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_cli/__main__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_cli/interactive.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_cli/main.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_cli/output.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_cli/plot.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_cli/simulate.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_cli/stream.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_cli/validate.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/.nvmrc +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/.stylelintrc.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/README.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/bundled-cli/.gitkeep +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/docs/architecture/streaming-state.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/docs/architecture/tech-stack.md +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/generate-types.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/index.html +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/scripts/check-css-vars.mjs +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/CliHealthWarning.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/ErrorBoundary.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/ErrorNotificationToast.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StatusBar.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/ConnectionSection.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/ConnectionSection.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/ManualControlSection.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/StreamControls.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/StreamControls.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/StreamLog.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/StreamLog.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/StreamTab.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/StreamTab/StreamTab.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/TabBar.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/Toast/ToastContainer.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/Toast/ToastContainer.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/canvas/CanvasControls.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/canvas/CenterCanvas.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/canvas/LayerScrubber.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/canvas/VisualizationCanvas.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/dialogs/BaseDialog.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/dialogs/CliUnavailableDialog.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/dialogs/DiagnosticsDialog.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/editors/HoopLayerEditor.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/editors/LayerNumericField.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/layers/LayerStack.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/components/tabs/MainTab.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/contexts/CliHealthContext.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/contexts/ErrorNotificationContext.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/hooks/canvas/usePreviewGeneration.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/hooks/stream/useConnectionActions.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/hooks/stream/useManualCommandActions.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/hooks/stream/useStreamingActions.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/hooks/useCliHealth.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/hooks/useKeyboardShortcuts.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/hooks/useMenubarInteractions.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/hooks/useStreamEvents.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/hooks/useTheme.test.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/hooks/useTheme.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/layouts/MainLayout.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/constants.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/marlin-api.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/menuConfig.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/numericFields.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/recentFiles.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/retry.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/streamFeedback.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/tauri-types.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/lib/toastMessages.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/main.tsx +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/stores/streamStore.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/stores/toastStore.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/styles/notifications.css +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/tests/integration/streamLifecycle.test.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/tests/setup.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src/types/components.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/build.rs +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/capabilities/default.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/icons/128x128.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/icons/256x256.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/icons/32x32.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/icons/512x512.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/icons/icon.ico +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/src/cli_path.rs +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/src/cli_process.rs +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/src-tauri/src/marlin.rs +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/tsconfig.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/tsconfig.node.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/vite.config.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/fiberpath_gui/vitest.config.ts +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/mkdocs.yml +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/package-lock.json +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/scripts/ci/e2e-check-artifacts.sh +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/scripts/ci/e2e-cli-smoke.sh +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/scripts/export_schema.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/scripts/freeze_cli.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/scripts/generate_schema.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/scripts/sync_gui_docs.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/cli/test_cli_smoke.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/cli/test_stream_command.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/config/__init__.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/config/test_validator.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/cyclone_reference_runs/inputs/helical-balanced.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/cyclone_reference_runs/inputs/simple-hoop.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/cyclone_reference_runs/inputs/skip-bias.wind +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/cyclone_reference_runs/outputs/helical-balanced/output.gcode +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/cyclone_reference_runs/outputs/helical-balanced/preview.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/cyclone_reference_runs/outputs/simple-hoop/output.gcode +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/cyclone_reference_runs/outputs/simple-hoop/preview.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/cyclone_reference_runs/outputs/skip-bias/output.gcode +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/cyclone_reference_runs/outputs/skip-bias/preview.png +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/execution/test_marlin_streamer.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/gcode/test_generator.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/geometry/test_surfaces.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/planning/test_helpers_machine.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/planning/test_layer_strategies.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/planning/test_validators.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/tauri/test_marlin_integration.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/tests/tauri/test_port_discovery.py +0 -0
- {fiberpath-0.6.2 → fiberpath-0.7.0}/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
|
|
@@ -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@v4
|
|
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:
|
|
@@ -160,7 +160,7 @@ jobs:
|
|
|
160
160
|
# Windows: Verify actual installer files were created
|
|
161
161
|
MSI_COUNT=$(find src-tauri/target/release/bundle/msi -name "*.msi" 2>/dev/null | wc -l)
|
|
162
162
|
NSIS_COUNT=$(find src-tauri/target/release/bundle/nsis -name "*.exe" 2>/dev/null | wc -l)
|
|
163
|
-
|
|
163
|
+
|
|
164
164
|
if [ "$MSI_COUNT" -gt 0 ] || [ "$NSIS_COUNT" -gt 0 ]; then
|
|
165
165
|
echo "[OK] Windows installers created successfully:"
|
|
166
166
|
find src-tauri/target/release/bundle -type f \( -name "*.msi" -o -name "*.exe" \) -exec ls -lh {} \;
|
|
@@ -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`;
|
|
@@ -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,33 @@ The format is based on Keep a Changelog, and this project follows semantic versi
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [0.7.0] - 2026-04-08
|
|
12
|
+
|
|
11
13
|
### Added
|
|
12
14
|
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
15
|
+
- Added GUI bundle-budget enforcement (`npm run perf:bundle`) with CI gating and machine-readable report output.
|
|
16
|
+
- Added stricter repository hygiene checks through pre-commit integration for Python lint/format and GUI type/CSS validation.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Completed the XAB-only axis cutover across core planning, simulation, plotting, CLI, API, and GUI export workflows.
|
|
21
|
+
- Removed legacy XYZ axis-format options from built-in interfaces and aligned fixtures/examples with XAB defaults.
|
|
22
|
+
- Simplified GUI component/style surfaces by removing dead CSS/component paths and tightening shared editor/form boundaries.
|
|
23
|
+
- Hardened packaging/CI helper scripts for bundled CLI discovery and cross-platform release reliability.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- Fixed regression tests and fixtures that drifted during axis-format migration, including layer-strategy and plot-signature expectations.
|
|
28
|
+
- Fixed pre-commit Ruff hook compatibility by migrating from the legacy `ruff` alias to `ruff-check`.
|
|
29
|
+
|
|
30
|
+
### Documentation
|
|
31
|
+
|
|
32
|
+
- Updated release-facing docs to position v0.7.0 as current and reflect XAB-only behavior in user/developer guides.
|
|
33
|
+
- Documented helical coverage compatibility caveats and follow-up validation/schema hardening scope in roadmap/release notes.
|
|
34
|
+
|
|
35
|
+
### Internal
|
|
36
|
+
|
|
37
|
+
- 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
38
|
|
|
21
39
|
## [0.6.2] - 2026-04-07
|
|
22
40
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fiberpath
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
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.
|
|
@@ -7,7 +7,7 @@ This document provides a technical deep dive into FiberPath's axis mapping syste
|
|
|
7
7
|
FiberPath uses a **logical-to-physical axis mapping** approach:
|
|
8
8
|
|
|
9
9
|
1. **Planner operates on logical axes:** Carriage, Mandrel, Delivery Head
|
|
10
|
-
2. **Dialect converts to physical axes:** X/A/B
|
|
10
|
+
2. **Dialect converts to physical axes:** Built-in output uses X/A/B; custom mappings are optional
|
|
11
11
|
3. **Planning logic remains unchanged:** Same algorithms work for all output formats
|
|
12
12
|
|
|
13
13
|
This design allows:
|
|
@@ -72,24 +72,6 @@ Maps logical axes to Marlin's native rotational axes:
|
|
|
72
72
|
- Mandrel → A (rotational)
|
|
73
73
|
- Delivery → B (rotational)
|
|
74
74
|
|
|
75
|
-
### XYZ Mapping (Legacy)
|
|
76
|
-
|
|
77
|
-
```python
|
|
78
|
-
MARLIN_XYZ_LEGACY = AxisMapping(
|
|
79
|
-
carriage="X",
|
|
80
|
-
mandrel="Y",
|
|
81
|
-
delivery="Z",
|
|
82
|
-
is_rotational_mandrel=False,
|
|
83
|
-
is_rotational_delivery=False
|
|
84
|
-
)
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Maps rotational logical axes to linear physical axes:
|
|
88
|
-
|
|
89
|
-
- Carriage → X (linear)
|
|
90
|
-
- Mandrel → Y (linear, but represents degrees)
|
|
91
|
-
- Delivery → Z (linear, but represents degrees)
|
|
92
|
-
|
|
93
75
|
## MarlinDialect Class
|
|
94
76
|
|
|
95
77
|
The `MarlinDialect` class wraps an `AxisMapping` with Marlin-specific features:
|
|
@@ -129,12 +111,6 @@ carriage=50.0, mandrel=180.0, delivery=90.0, feed=2000
|
|
|
129
111
|
G1 X50.0 A180.0 B90.0 F2000
|
|
130
112
|
```
|
|
131
113
|
|
|
132
|
-
**Output XYZ:**
|
|
133
|
-
|
|
134
|
-
```text
|
|
135
|
-
G1 X50.0 Y180.0 Z90.0 F2000
|
|
136
|
-
```
|
|
137
|
-
|
|
138
114
|
## Planning Flow
|
|
139
115
|
|
|
140
116
|
### 1. Wind Definition Parsed
|
|
@@ -160,7 +136,7 @@ commands = [
|
|
|
160
136
|
The G-code writer (`fiberpath.gcode.generator`) uses the selected dialect:
|
|
161
137
|
|
|
162
138
|
```python
|
|
163
|
-
dialect = MARLIN_XAB_STANDARD
|
|
139
|
+
dialect = MARLIN_XAB_STANDARD
|
|
164
140
|
gcode = dialect.format_move(carriage, mandrel, delivery, feed)
|
|
165
141
|
```
|
|
166
142
|
|
|
@@ -206,14 +182,9 @@ To support a new controller (e.g., FANUC):
|
|
|
206
182
|
]
|
|
207
183
|
```
|
|
208
184
|
|
|
209
|
-
3. **
|
|
210
|
-
|
|
211
|
-
Add to `fiberpath_cli/plan.py` and `fiberpath_api/routes/plan.py`:
|
|
185
|
+
3. **Use in core integration:**
|
|
212
186
|
|
|
213
|
-
|
|
214
|
-
if axis_format == "fanuc":
|
|
215
|
-
dialect = FANUC_STANDARD
|
|
216
|
-
```
|
|
187
|
+
Pass it through `PlanOptions(dialect=...)` in direct Python integrations.
|
|
217
188
|
|
|
218
189
|
### Custom Axis Configurations
|
|
219
190
|
|
|
@@ -292,7 +263,7 @@ gcode = dialect.format_move(carriage_pos, mandrel_angle, delivery_angle, feed)
|
|
|
292
263
|
|
|
293
264
|
- ⚠️ Adds abstraction layer (slight complexity)
|
|
294
265
|
- ⚠️ Dialect-specific optimizations require care
|
|
295
|
-
- ⚠️ Must ensure
|
|
266
|
+
- ⚠️ Must ensure advanced/custom integrations pass dialects consistently
|
|
296
267
|
|
|
297
268
|
## Future Enhancements
|
|
298
269
|
|
|
@@ -34,7 +34,7 @@ together and where to extend them.
|
|
|
34
34
|
|
|
35
35
|
| Module | Responsibility | Notes |
|
|
36
36
|
| ---------------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
|
|
37
|
-
| `fiberpath.planning` | Parses `.wind` files, validates machine/layer constraints, produces command sequences. | `PlanOptions` governs verbosity and dialect
|
|
37
|
+
| `fiberpath.planning` | Parses `.wind` files, validates machine/layer constraints, produces command sequences. | `PlanOptions` governs verbosity and optional advanced dialect override. |
|
|
38
38
|
| `fiberpath.geometry` | Curve/surface math shared between planner and simulator. | Pure functions make it safe for reuse. |
|
|
39
39
|
| `fiberpath.gcode` | Dialects and writers for Marlin-style controllers. | Extend here when adding custom headers or commands. Axis mapping configured via `MarlinDialect`. |
|
|
40
40
|
| `fiberpath.simulation` | Time/distance estimations based on planned feed rates. | Feeds CLI `simulate` summaries. Axis-aware for proper rotational calculations. |
|
|
@@ -48,18 +48,14 @@ FiberPath uses a logical-to-physical axis mapping system that separates planning
|
|
|
48
48
|
- **Mandrel**: Mandrel rotation (degrees)
|
|
49
49
|
- **Delivery Head**: Delivery head rotation (degrees)
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
FiberPath's built-in output format is:
|
|
52
52
|
|
|
53
53
|
- **XAB (Standard)**: Carriage=X, Mandrel=A, Delivery=B - Uses Marlin's native rotational axis support
|
|
54
|
-
- **XYZ (Legacy)**: Carriage=X, Mandrel=Y, Delivery=Z - Compatibility mode for systems where rotational axes were configured as linear
|
|
55
54
|
|
|
56
|
-
|
|
55
|
+
CLI and API always emit XAB output in v0.7.0+. Advanced integrations can still pass a custom
|
|
56
|
+
`MarlinDialect` to the core planner API when needed.
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
- API: `"axis_format": "xab"|"xyz"` field (default: `"xab"`)
|
|
60
|
-
- Core: `PlanOptions(dialect=MARLIN_XAB_STANDARD|MARLIN_XYZ_LEGACY)`
|
|
61
|
-
|
|
62
|
-
This design allows the same planning logic to produce G-code for different machine configurations without modification.
|
|
58
|
+
This design keeps planning logic machine-independent while keeping the default product path simple and deterministic.
|
|
63
59
|
|
|
64
60
|
**See [Axis System Architecture](axis-system.md) for technical details** on the mapping system, dialect implementation, and extension points.
|
|
65
61
|
|
|
@@ -81,7 +77,7 @@ shapes without introducing FastAPI or Typer dependencies in the core.
|
|
|
81
77
|
- **New planner strategies:** Add implementations under `fiberpath/planning/layer_strategies.py`
|
|
82
78
|
and wire them through `plan_wind`.
|
|
83
79
|
- **Alternate machine dialects:** Create new dialect definitions under `fiberpath/gcode/dialects.py`
|
|
84
|
-
with custom `AxisMapping` configurations.
|
|
80
|
+
with custom `AxisMapping` configurations. Use them directly via the core API where needed.
|
|
85
81
|
- **GUI panels:** Implement a new Tauri command in `fiberpath_gui/src-tauri/src/main.rs`, call the
|
|
86
82
|
relevant CLI entry point, and expose it via `src/lib/commands.ts` for React components.
|
|
87
83
|
|
|
@@ -29,10 +29,11 @@ Thanks for investing time in the project! This guide explains how to set up a de
|
|
|
29
29
|
- **Tests:** `uv run pytest` exercises all unit/integration suites. Add targeted tests for new planner logic, CLI behavior, or API endpoints.
|
|
30
30
|
- **Docs:** Keep `docs/*.md` in sync with feature work. Significant planner or simulator changes usually deserve updates to `docs/architecture.md` or `docs/planner-math.md`.
|
|
31
31
|
- **Dependency hygiene:** Follow `docs/development/dependency-policy.md` for cadence, SLA, and defer/exception handling.
|
|
32
|
+
- **Commit-time automation:** Install and use pre-commit hooks (`pre-commit install`) so baseline Python and GUI checks run before each commit.
|
|
32
33
|
|
|
33
34
|
## Pull Request Checklist
|
|
34
35
|
|
|
35
|
-
1. `
|
|
36
|
+
1. `pre-commit run --all-files`
|
|
36
37
|
2. `uv run mypy`
|
|
37
38
|
3. `uv run pytest`
|
|
38
39
|
4. Update documentation and add changelog entries in `CHANGELOG.md` when behavior changes.
|
|
@@ -17,7 +17,7 @@ Applies to:
|
|
|
17
17
|
|
|
18
18
|
- Patch updates: monthly
|
|
19
19
|
- Minor updates: quarterly review window
|
|
20
|
-
- Major updates: dedicated release slot (for example, a migration-focused release like v0.
|
|
20
|
+
- Major updates: dedicated release slot (for example, a migration-focused release like v0.7.0 or similar)
|
|
21
21
|
|
|
22
22
|
## Ownership
|
|
23
23
|
|
|
@@ -154,7 +154,7 @@ GitHub Actions workflow (`.github/workflows/gui-packaging.yml`) handles full pro
|
|
|
154
154
|
## Future Enhancements
|
|
155
155
|
|
|
156
156
|
- **Code signing:** macOS (`developer-id`) and Windows (`signtool` + certificate) when credentials available
|
|
157
|
-
- **Auto-updates:** Tauri updater for in-app version checks and downloads (planned post-v0.
|
|
157
|
+
- **Auto-updates:** Tauri updater for in-app version checks and downloads (planned post-v0.7.0)
|
|
158
158
|
- **Bundle optimization:** Reduce frozen CLI size through dependency analysis
|
|
159
159
|
- **Universal macOS binaries:** Single `.dmg` supporting both Intel and Apple Silicon (currently separate builds)
|
|
160
160
|
|
|
@@ -21,7 +21,7 @@ Update version strings in these files (single source of truth for each stack):
|
|
|
21
21
|
- [ ] **`fiberpath_gui/src-tauri/Cargo.toml`** – Line 3: `version = "X.Y.Z"` (Tauri/Rust reads from this)
|
|
22
22
|
- [ ] **`fiberpath_gui/src-tauri/tauri.conf.json`** – Line 10: `"version": "X.Y.Z"` (Tauri bundle metadata)
|
|
23
23
|
- [ ] **`fiberpath_gui/package.json`** – Line 3: `"version": "X.Y.Z"` (npm package metadata)
|
|
24
|
-
- [ ] **`README.md`** –
|
|
24
|
+
- [ ] **`README.md`** – Version badge references current release (`version-X.Y.Z`)
|
|
25
25
|
- [ ] **`docs/index.md`** – Line 5: Download link version reference
|
|
26
26
|
|
|
27
27
|
**Note:** `fiberpath_api/main.py` and `AboutDialog.tsx` auto-read from `pyproject.toml` and `Cargo.toml` respectively.
|
|
@@ -42,6 +42,14 @@ Refresh dependency locks after version updates:
|
|
|
42
42
|
- [ ] Verify all code examples and CLI commands in docs reflect current syntax
|
|
43
43
|
- [ ] Check for any outdated version references in documentation
|
|
44
44
|
|
|
45
|
+
### CHANGELOG Maintenance Rules
|
|
46
|
+
|
|
47
|
+
- **Owner:** The release manager for the target milestone owns final changelog curation for that release cut.
|
|
48
|
+
- **Timing:** Update `## [Unreleased]` during development as PRs merge; before release, move finalized bullets into the new `## [X.Y.Z] - YYYY-MM-DD` section.
|
|
49
|
+
- **Required section order:** `Added`, `Changed`, `Fixed`, `Documentation`, `Internal` (omit empty sections).
|
|
50
|
+
- **Entry format:** One behavior-oriented bullet per change (user impact first, implementation detail second if needed).
|
|
51
|
+
- **Pre-release check:** No placeholder bullets (`TBD`, `WIP`, `misc`) in release-bound sections.
|
|
52
|
+
|
|
45
53
|
## Quality Checks
|
|
46
54
|
|
|
47
55
|
- [ ] Verify Python package builds cleanly: `uv build` (check `dist/` output)
|
|
@@ -77,7 +85,7 @@ Refresh dependency locks after version updates:
|
|
|
77
85
|
- [ ] Download and test one GUI installer per platform
|
|
78
86
|
- [ ] Verify documentation site updated with new version: https://cameronbrooks11.github.io/fiberpath
|
|
79
87
|
- [ ] Update any external links or announcements referencing old version
|
|
80
|
-
- [ ] Create PR to bump version to next development version (e.g., `0.
|
|
88
|
+
- [ ] Create PR to bump version to next development version (e.g., `0.7.1-dev`)
|
|
81
89
|
|
|
82
90
|
## Notes
|
|
83
91
|
|