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.
Files changed (374) hide show
  1. {fiberpath-0.6.2 → fiberpath-0.7.1}/.gitattributes +6 -1
  2. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/actions/setup-python/action.yml +1 -1
  3. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/ci-check.yml +7 -17
  4. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/dependency-audit.yml +3 -1
  5. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/docs-deploy.yml +1 -1
  6. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/gui-ci.yml +11 -4
  7. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/gui-packaging.yml +43 -8
  8. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/release.yml +7 -7
  9. {fiberpath-0.6.2 → fiberpath-0.7.1}/.gitignore +3 -3
  10. fiberpath-0.7.1/.pre-commit-config.yaml +36 -0
  11. {fiberpath-0.6.2 → fiberpath-0.7.1}/.vscode/extensions.json +1 -1
  12. fiberpath-0.7.1/.vscode/launch.json +35 -0
  13. {fiberpath-0.6.2 → fiberpath-0.7.1}/CHANGELOG.md +57 -7
  14. {fiberpath-0.6.2 → fiberpath-0.7.1}/PKG-INFO +14 -21
  15. {fiberpath-0.6.2 → fiberpath-0.7.1}/README.md +13 -20
  16. {fiberpath-0.6.2 → fiberpath-0.7.1}/TODO.md +1 -5
  17. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/architecture/axis-system.md +5 -34
  18. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/architecture/overview.md +6 -10
  19. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/development/contributing.md +2 -1
  20. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/development/dependency-policy.md +3 -3
  21. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/development/packaging.md +2 -2
  22. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/development/release-process.md +10 -2
  23. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/development/tooling.md +20 -6
  24. fiberpath-0.6.2/planning/roadmap-backlog.md → fiberpath-0.7.1/docs/feature-backlog.md +5 -5
  25. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/getting-started.md +3 -5
  26. fiberpath-0.7.1/docs/guides/axis-mapping.md +49 -0
  27. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/index.md +9 -9
  28. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/reference/api.md +1 -4
  29. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/reference/concepts.md +2 -3
  30. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/reference/planner-math.md +3 -3
  31. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/troubleshooting.md +3 -3
  32. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/AvBay(470mm)single.wind +1 -1
  33. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/CarbonMotorTube(1295mm).wind +1 -1
  34. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/MainChute(585mm).wind +1 -1
  35. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/gcode/dialects.py +3 -7
  36. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/machine.py +3 -6
  37. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/simulation/simulator.py +9 -10
  38. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/visualization/plotter.py +8 -9
  39. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/routes/plan.py +2 -5
  40. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/schemas.py +0 -7
  41. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/plan.py +4 -19
  42. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/.gitignore +2 -1
  43. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/architecture/cli-integration.md +5 -14
  44. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/architecture/state-management.md +0 -2
  45. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/development.md +4 -3
  46. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/guides/performance.md +18 -0
  47. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/guides/schemas.md +7 -7
  48. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/guides/styling.md +1 -1
  49. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/overview.md +2 -2
  50. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/reference/type-safety.md +9 -9
  51. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/testing.md +1 -1
  52. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/package-lock.json +172 -172
  53. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/package.json +10 -9
  54. fiberpath-0.7.1/fiberpath_gui/perf/bundle-baseline.json +11 -0
  55. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/schemas/wind-schema.json +1 -1
  56. fiberpath-0.7.1/fiberpath_gui/scripts/check-bundle-budget.mjs +141 -0
  57. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/App.tsx +19 -12
  58. fiberpath-0.7.1/fiberpath_gui/src/components/ErrorBoundary.test.tsx +74 -0
  59. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/MenuBar.tsx +44 -25
  60. fiberpath-0.7.1/fiberpath_gui/src/components/StatusBar.test.tsx +80 -0
  61. fiberpath-0.7.1/fiberpath_gui/src/components/StreamTab/ConnectionSection.test.tsx +112 -0
  62. fiberpath-0.7.1/fiberpath_gui/src/components/StreamTab/FileStreamingSection.test.tsx +130 -0
  63. fiberpath-0.7.1/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.test.tsx +52 -0
  64. fiberpath-0.7.1/fiberpath_gui/src/components/StreamTab/ManualControlSection.test.tsx +102 -0
  65. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/ManualControlSection.tsx +1 -1
  66. fiberpath-0.7.1/fiberpath_gui/src/components/StreamTab/StreamLog.test.tsx +85 -0
  67. fiberpath-0.7.1/fiberpath_gui/src/components/TabBar.test.tsx +44 -0
  68. fiberpath-0.7.1/fiberpath_gui/src/components/Toast/ToastContainer.test.tsx +65 -0
  69. fiberpath-0.7.1/fiberpath_gui/src/components/canvas/CanvasControls.test.tsx +82 -0
  70. fiberpath-0.7.1/fiberpath_gui/src/components/canvas/LayerScrubber.test.tsx +46 -0
  71. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/dialogs/AboutDialog.tsx +1 -1
  72. fiberpath-0.7.1/fiberpath_gui/src/components/dialogs/BaseDialog.test.tsx +83 -0
  73. fiberpath-0.7.1/fiberpath_gui/src/components/dialogs/DiagnosticsDialog.test.tsx +109 -0
  74. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/dialogs/ExportConfirmationDialog.tsx +0 -6
  75. fiberpath-0.7.1/fiberpath_gui/src/components/editors/HelicalLayerEditor.test.tsx +69 -0
  76. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/editors/HelicalLayerEditor.tsx +75 -18
  77. fiberpath-0.7.1/fiberpath_gui/src/components/editors/HoopLayerEditor.test.tsx +58 -0
  78. fiberpath-0.7.1/fiberpath_gui/src/components/editors/SkipLayerEditor.test.tsx +59 -0
  79. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/editors/SkipLayerEditor.tsx +23 -7
  80. fiberpath-0.7.1/fiberpath_gui/src/components/forms/MachineSettingsForm.test.tsx +43 -0
  81. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/forms/MachineSettingsForm.tsx +21 -34
  82. fiberpath-0.7.1/fiberpath_gui/src/components/forms/MandrelForm.test.tsx +60 -0
  83. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/forms/MandrelForm.tsx +50 -13
  84. fiberpath-0.7.1/fiberpath_gui/src/components/forms/TowForm.test.tsx +60 -0
  85. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/forms/TowForm.tsx +44 -12
  86. fiberpath-0.7.1/fiberpath_gui/src/components/layers/LayerRow.test.tsx +110 -0
  87. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/layers/LayerRow.tsx +39 -26
  88. fiberpath-0.7.1/fiberpath_gui/src/components/layers/LayerStack.test.tsx +143 -0
  89. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/panels/BottomPanel.tsx +1 -1
  90. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/panels/LeftPanel.tsx +1 -1
  91. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/panels/RightPanel.tsx +1 -1
  92. fiberpath-0.7.1/fiberpath_gui/src/components/panels/panels.test.tsx +41 -0
  93. fiberpath-0.7.1/fiberpath_gui/src/components/tabs/MainTab.test.tsx +65 -0
  94. fiberpath-0.7.1/fiberpath_gui/src/contexts/CliHealthContext.test.tsx +36 -0
  95. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/contexts/CliHealthContext.tsx +2 -2
  96. fiberpath-0.7.1/fiberpath_gui/src/hooks/canvas/usePreviewGeneration.test.ts +169 -0
  97. fiberpath-0.7.1/fiberpath_gui/src/hooks/stream/useConnectionActions.test.ts +193 -0
  98. fiberpath-0.7.1/fiberpath_gui/src/hooks/stream/useManualCommandActions.test.ts +166 -0
  99. fiberpath-0.7.1/fiberpath_gui/src/hooks/stream/useStreamingActions.test.ts +318 -0
  100. fiberpath-0.7.1/fiberpath_gui/src/hooks/useCliHealth.test.ts +207 -0
  101. fiberpath-0.7.1/fiberpath_gui/src/hooks/useDebouncedValue.test.ts +106 -0
  102. fiberpath-0.7.1/fiberpath_gui/src/hooks/useDebouncedValue.ts +17 -0
  103. fiberpath-0.7.1/fiberpath_gui/src/hooks/useFileOperations.test.tsx +77 -0
  104. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useFileOperations.ts +8 -0
  105. fiberpath-0.7.1/fiberpath_gui/src/hooks/useKeyboardShortcuts.test.ts +163 -0
  106. fiberpath-0.7.1/fiberpath_gui/src/hooks/useMenubarInteractions.test.tsx +97 -0
  107. fiberpath-0.7.1/fiberpath_gui/src/layouts/MainLayout.test.tsx +75 -0
  108. fiberpath-0.7.1/fiberpath_gui/src/lib/commands.test.ts +202 -0
  109. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/commands.ts +27 -10
  110. fiberpath-0.7.1/fiberpath_gui/src/lib/fileOperations.test.ts +330 -0
  111. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/fileOperations.ts +49 -9
  112. fiberpath-0.7.1/fiberpath_gui/src/lib/helicalValidation.test.ts +179 -0
  113. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/helicalValidation.ts +49 -0
  114. fiberpath-0.7.1/fiberpath_gui/src/lib/marlin-api.test.ts +188 -0
  115. fiberpath-0.7.1/fiberpath_gui/src/lib/menuConfig.test.ts +49 -0
  116. fiberpath-0.7.1/fiberpath_gui/src/lib/numericFields.test.ts +59 -0
  117. fiberpath-0.7.1/fiberpath_gui/src/lib/recentFiles.test.ts +142 -0
  118. fiberpath-0.7.1/fiberpath_gui/src/lib/retry.test.ts +114 -0
  119. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/schemas.test.ts +0 -1
  120. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/schemas.ts +0 -1
  121. fiberpath-0.7.1/fiberpath_gui/src/lib/streamFeedback.test.ts +352 -0
  122. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/validation.test.ts +6 -6
  123. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/validation.ts +10 -2
  124. fiberpath-0.7.1/fiberpath_gui/src/lib/validationErrors.test.ts +41 -0
  125. fiberpath-0.7.1/fiberpath_gui/src/lib/validationErrors.ts +124 -0
  126. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/stores/projectStore.test.ts +32 -9
  127. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/stores/projectStore.ts +45 -9
  128. fiberpath-0.7.1/fiberpath_gui/src/stores/toastStore.test.ts +87 -0
  129. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/buttons.css +0 -1
  130. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/canvas.css +2 -3
  131. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/dialogs.css +0 -14
  132. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/forms.css +0 -19
  133. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/index.css +2 -2
  134. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/layout.css +0 -50
  135. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/panels.css +4 -79
  136. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/reset.css +1 -1
  137. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/tabs.css +1 -1
  138. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/tokens.css +0 -76
  139. fiberpath-0.7.1/fiberpath_gui/src/styles/typography.css +68 -0
  140. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/tests/integration/workflows.test.ts +3 -3
  141. fiberpath-0.7.1/fiberpath_gui/src/tests/renderWithProviders.tsx +73 -0
  142. fiberpath-0.7.1/fiberpath_gui/src/tests/storeUtils.ts +96 -0
  143. fiberpath-0.7.1/fiberpath_gui/src/tests/tauriMocks.ts +99 -0
  144. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/types/converters.test.ts +5 -10
  145. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/types/converters.ts +3 -4
  146. fiberpath-0.7.1/fiberpath_gui/src/types/project.test.ts +159 -0
  147. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/types/project.ts +0 -2
  148. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/types/wind-schema.ts +0 -0
  149. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/Cargo.lock +3 -3
  150. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/Cargo.toml +2 -2
  151. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/src/main.rs +1 -8
  152. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/tauri.conf.json +1 -1
  153. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/tsconfig.json +1 -1
  154. fiberpath-0.7.1/fiberpath_gui/vite.config.ts +14 -0
  155. fiberpath-0.6.2/fiberpath_gui/vite.config.ts → fiberpath-0.7.1/fiberpath_gui/vitest.config.ts +16 -15
  156. {fiberpath-0.6.2 → fiberpath-0.7.1}/pyproject.toml +1 -1
  157. {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/e2e-check-artifacts.ps1 +55 -55
  158. {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/e2e-cli-smoke.ps1 +52 -52
  159. {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/extract-package-runtime.ps1 +88 -61
  160. {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/extract-package-runtime.sh +1 -1
  161. {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/find-bundled-cli.ps1 +80 -60
  162. {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/find-bundled-cli.sh +1 -1
  163. {fiberpath-0.6.2 → fiberpath-0.7.1}/setup.cfg +1 -1
  164. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/api/test_plan_route.py +2 -2
  165. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/api/test_simulate_route.py +3 -3
  166. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/api/test_stream_route.py +1 -1
  167. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/api/test_stream_route_errors.py +1 -1
  168. fiberpath-0.7.1/tests/cli/test_axis_format.py +87 -0
  169. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cli/test_cli_json.py +1 -1
  170. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/gcode/test_dialects.py +10 -24
  171. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/planning/_generate_fixtures.py +1 -1
  172. fiberpath-0.7.1/tests/planning/fixtures/helical_layer.gcode +4525 -0
  173. fiberpath-0.7.1/tests/planning/fixtures/hoop_layer.gcode +251 -0
  174. fiberpath-0.7.1/tests/planning/fixtures/hoop_only_program.gcode +214 -0
  175. fiberpath-0.7.1/tests/planning/fixtures/skip_layer.gcode +3 -0
  176. fiberpath-0.7.1/tests/planning/test_axis_mapping.py +143 -0
  177. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/planning/test_planner_smoke.py +17 -13
  178. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/simulation/test_simulator.py +2 -2
  179. fiberpath-0.7.1/tests/simulation/test_simulator_axis_detection.py +80 -0
  180. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/visualization/test_plotter.py +8 -14
  181. fiberpath-0.7.1/tests/visualization/test_plotter_axis_detection.py +83 -0
  182. {fiberpath-0.6.2 → fiberpath-0.7.1}/uv.lock +87 -87
  183. fiberpath-0.6.2/docs/guides/axis-mapping.md +0 -182
  184. fiberpath-0.6.2/fiberpath_gui/src/components/FileField.tsx +0 -61
  185. fiberpath-0.6.2/fiberpath_gui/src/components/ResultCard.tsx +0 -15
  186. fiberpath-0.6.2/fiberpath_gui/src/components/StatusText.tsx +0 -30
  187. fiberpath-0.6.2/fiberpath_gui/src/components/StreamTab/index.ts +0 -10
  188. fiberpath-0.6.2/fiberpath_gui/src/styles/typography.css +0 -127
  189. fiberpath-0.6.2/fiberpath_gui/vitest.config.ts +0 -18
  190. fiberpath-0.6.2/planning/gui-framework-migration-evaluation-plan.md +0 -247
  191. fiberpath-0.6.2/planning/roadmap-v0.6.2-react-hotspot-cleanup.md +0 -253
  192. fiberpath-0.6.2/planning/roadmap-v7.md +0 -232
  193. fiberpath-0.6.2/tests/cli/test_axis_format.py +0 -200
  194. fiberpath-0.6.2/tests/planning/fixtures/helical_layer.gcode +0 -4525
  195. fiberpath-0.6.2/tests/planning/fixtures/hoop_layer.gcode +0 -251
  196. fiberpath-0.6.2/tests/planning/fixtures/hoop_only_program.gcode +0 -214
  197. fiberpath-0.6.2/tests/planning/fixtures/skip_layer.gcode +0 -3
  198. fiberpath-0.6.2/tests/planning/test_axis_mapping.py +0 -277
  199. fiberpath-0.6.2/tests/simulation/test_simulator_axis_detection.py +0 -89
  200. fiberpath-0.6.2/tests/visualization/test_plotter_axis_detection.py +0 -98
  201. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/actions/setup-node/action.yml +0 -0
  202. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/actions/setup-rust/action.yml +0 -0
  203. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/dependabot.yml +0 -0
  204. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/backend-ci.yml +0 -0
  205. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/docs-ci.yml +0 -0
  206. {fiberpath-0.6.2 → fiberpath-0.7.1}/.github/workflows/gui-e2e-smoke.yml +0 -0
  207. {fiberpath-0.6.2 → fiberpath-0.7.1}/.vscode/settings.json +0 -0
  208. {fiberpath-0.6.2 → fiberpath-0.7.1}/LICENSE +0 -0
  209. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/development/ci-cd.md +0 -0
  210. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/guides/marlin-streaming.md +0 -0
  211. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/guides/visualization.md +0 -0
  212. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/guides/wind-format.md +0 -0
  213. {fiberpath-0.6.2 → fiberpath-0.7.1}/docs/vm-testing.md +0 -0
  214. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/README.md +0 -0
  215. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/complex_surface/README.md +0 -0
  216. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/multi_layer/README.md +0 -0
  217. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/multi_layer/input.wind +0 -0
  218. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/AvBay(470mm)triple.gcode +0 -0
  219. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/AvBay(470mm)triple.wind +0 -0
  220. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/CarbonMotorTube(1295mm).gcode +0 -0
  221. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/rocketry/MainChute(585mm).gcode +0 -0
  222. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/simple_cylinder/README.md +0 -0
  223. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/simple_cylinder/input.wind +0 -0
  224. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/sized_simple_cylinder/README.md +0 -0
  225. {fiberpath-0.6.2 → fiberpath-0.7.1}/examples/sized_simple_cylinder/input.wind +0 -0
  226. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/__init__.py +0 -0
  227. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/config/__init__.py +0 -0
  228. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/config/schemas.py +0 -0
  229. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/config/validator.py +0 -0
  230. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/execution/__init__.py +0 -0
  231. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/execution/marlin.py +0 -0
  232. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/gcode/__init__.py +0 -0
  233. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/gcode/generator.py +0 -0
  234. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/geometry/__init__.py +0 -0
  235. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/geometry/curves.py +0 -0
  236. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/geometry/intersections.py +0 -0
  237. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/geometry/surfaces.py +0 -0
  238. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/math_utils.py +0 -0
  239. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/__init__.py +0 -0
  240. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/calculations.py +0 -0
  241. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/exceptions.py +0 -0
  242. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/helpers.py +0 -0
  243. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/layer_strategies.py +0 -0
  244. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/planner.py +0 -0
  245. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/planning/validators.py +0 -0
  246. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/simulation/__init__.py +0 -0
  247. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/visualization/__init__.py +0 -0
  248. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath/visualization/export_json.py +0 -0
  249. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/__init__.py +0 -0
  250. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/main.py +0 -0
  251. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/package-lock.json +0 -0
  252. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/path_policy.py +0 -0
  253. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/routes/__init__.py +0 -0
  254. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/routes/simulate.py +0 -0
  255. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/routes/stream.py +0 -0
  256. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_api/routes/validate.py +0 -0
  257. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/__init__.py +0 -0
  258. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/__main__.py +0 -0
  259. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/interactive.py +0 -0
  260. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/main.py +0 -0
  261. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/output.py +0 -0
  262. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/plot.py +0 -0
  263. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/simulate.py +0 -0
  264. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/stream.py +0 -0
  265. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_cli/validate.py +0 -0
  266. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/.nvmrc +0 -0
  267. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/.stylelintrc.json +0 -0
  268. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/README.md +0 -0
  269. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/bundled-cli/.gitkeep +0 -0
  270. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/architecture/streaming-state.md +0 -0
  271. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/docs/architecture/tech-stack.md +0 -0
  272. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/generate-types.json +0 -0
  273. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/index.html +0 -0
  274. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/scripts/check-css-vars.mjs +0 -0
  275. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/CliHealthWarning.tsx +0 -0
  276. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/ErrorBoundary.tsx +0 -0
  277. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/ErrorNotificationToast.tsx +0 -0
  278. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StatusBar.tsx +0 -0
  279. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/ConnectionSection.css +0 -0
  280. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/ConnectionSection.tsx +0 -0
  281. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.css +0 -0
  282. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.tsx +0 -0
  283. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.css +0 -0
  284. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.tsx +0 -0
  285. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/ManualControlSection.css +0 -0
  286. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/StreamControls.css +0 -0
  287. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/StreamControls.tsx +0 -0
  288. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/StreamLog.css +0 -0
  289. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/StreamLog.tsx +0 -0
  290. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/StreamTab.css +0 -0
  291. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/StreamTab/StreamTab.tsx +0 -0
  292. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/TabBar.tsx +0 -0
  293. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/Toast/ToastContainer.css +0 -0
  294. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/Toast/ToastContainer.tsx +0 -0
  295. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/canvas/CanvasControls.tsx +0 -0
  296. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/canvas/CenterCanvas.tsx +0 -0
  297. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/canvas/LayerScrubber.tsx +0 -0
  298. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/canvas/VisualizationCanvas.tsx +0 -0
  299. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/dialogs/BaseDialog.tsx +0 -0
  300. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/dialogs/CliUnavailableDialog.tsx +0 -0
  301. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/dialogs/DiagnosticsDialog.tsx +0 -0
  302. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/editors/HoopLayerEditor.tsx +0 -0
  303. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/editors/LayerNumericField.tsx +0 -0
  304. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/layers/LayerStack.tsx +0 -0
  305. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/components/tabs/MainTab.tsx +0 -0
  306. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/contexts/ErrorNotificationContext.tsx +0 -0
  307. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/canvas/usePreviewGeneration.ts +0 -0
  308. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/stream/useConnectionActions.ts +0 -0
  309. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/stream/useManualCommandActions.ts +0 -0
  310. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/stream/useStreamingActions.ts +0 -0
  311. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useCliHealth.ts +0 -0
  312. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useKeyboardShortcuts.ts +0 -0
  313. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useMenubarInteractions.ts +0 -0
  314. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useStreamEvents.ts +0 -0
  315. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useTheme.test.ts +0 -0
  316. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/hooks/useTheme.ts +0 -0
  317. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/layouts/MainLayout.tsx +0 -0
  318. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/constants.ts +0 -0
  319. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/marlin-api.ts +0 -0
  320. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/menuConfig.ts +0 -0
  321. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/numericFields.ts +0 -0
  322. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/recentFiles.ts +0 -0
  323. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/retry.ts +0 -0
  324. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/streamFeedback.ts +0 -0
  325. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/tauri-types.ts +0 -0
  326. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/lib/toastMessages.ts +0 -0
  327. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/main.tsx +0 -0
  328. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/stores/streamStore.ts +0 -0
  329. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/stores/toastStore.ts +0 -0
  330. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/styles/notifications.css +0 -0
  331. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/tests/integration/streamLifecycle.test.ts +0 -0
  332. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/tests/setup.ts +0 -0
  333. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src/types/components.ts +0 -0
  334. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/build.rs +0 -0
  335. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/capabilities/default.json +0 -0
  336. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/icons/128x128.png +0 -0
  337. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/icons/256x256.png +0 -0
  338. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/icons/32x32.png +0 -0
  339. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/icons/512x512.png +0 -0
  340. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/icons/icon.ico +0 -0
  341. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/src/cli_path.rs +0 -0
  342. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/src/cli_process.rs +0 -0
  343. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/src-tauri/src/marlin.rs +0 -0
  344. {fiberpath-0.6.2 → fiberpath-0.7.1}/fiberpath_gui/tsconfig.node.json +0 -0
  345. {fiberpath-0.6.2 → fiberpath-0.7.1}/mkdocs.yml +0 -0
  346. {fiberpath-0.6.2 → fiberpath-0.7.1}/package-lock.json +0 -0
  347. {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/e2e-check-artifacts.sh +0 -0
  348. {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/ci/e2e-cli-smoke.sh +0 -0
  349. {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/export_schema.py +0 -0
  350. {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/freeze_cli.py +0 -0
  351. {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/generate_schema.py +0 -0
  352. {fiberpath-0.6.2 → fiberpath-0.7.1}/scripts/sync_gui_docs.py +0 -0
  353. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cli/test_cli_smoke.py +0 -0
  354. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cli/test_stream_command.py +0 -0
  355. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/config/__init__.py +0 -0
  356. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/config/test_validator.py +0 -0
  357. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/inputs/helical-balanced.wind +0 -0
  358. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/inputs/simple-hoop.wind +0 -0
  359. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/inputs/skip-bias.wind +0 -0
  360. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/outputs/helical-balanced/output.gcode +0 -0
  361. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/outputs/helical-balanced/preview.png +0 -0
  362. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/outputs/simple-hoop/output.gcode +0 -0
  363. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/outputs/simple-hoop/preview.png +0 -0
  364. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/outputs/skip-bias/output.gcode +0 -0
  365. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/cyclone_reference_runs/outputs/skip-bias/preview.png +0 -0
  366. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/execution/test_marlin_streamer.py +0 -0
  367. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/gcode/test_generator.py +0 -0
  368. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/geometry/test_surfaces.py +0 -0
  369. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/planning/test_helpers_machine.py +0 -0
  370. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/planning/test_layer_strategies.py +0 -0
  371. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/planning/test_validators.py +0 -0
  372. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/tauri/test_marlin_integration.py +0 -0
  373. {fiberpath-0.6.2 → fiberpath-0.7.1}/tests/tauri/test_port_discovery.py +0 -0
  374. {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
@@ -19,7 +19,7 @@ runs:
19
19
  using: composite
20
20
  steps:
21
21
  - name: Set up Python
22
- uses: actions/setup-python@v5
22
+ uses: actions/setup-python@v6
23
23
  with:
24
24
  python-version: ${{ inputs.python-version }}
25
25
 
@@ -15,14 +15,9 @@ on:
15
15
  - "setup.cfg"
16
16
  - "mkdocs.yml"
17
17
  - "README.md"
18
- - "scripts/sync_gui_docs.py"
19
- - ".github/workflows/ci-check.yml"
20
- - ".github/workflows/backend-ci.yml"
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/sync_gui_docs.py"
41
- - ".github/workflows/ci-check.yml"
42
- - ".github/workflows/backend-ci.yml"
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@v3
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
@@ -47,7 +47,7 @@ jobs:
47
47
  run: uv run mkdocs build --strict --site-dir site
48
48
 
49
49
  - name: Upload Pages artifact
50
- uses: actions/upload-pages-artifact@v4
50
+ uses: actions/upload-pages-artifact@v5
51
51
  with:
52
52
  path: site
53
53
 
@@ -26,12 +26,9 @@ jobs:
26
26
  with:
27
27
  install-linux-deps: "true"
28
28
 
29
- - name: Run ESLint
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 actual installer files were created
161
- MSI_COUNT=$(find src-tauri/target/release/bundle/msi -name "*.msi" 2>/dev/null | wc -l)
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 [ "$MSI_COUNT" -gt 0 ] || [ "$NSIS_COUNT" -gt 0 ]; then
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@v2
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@v8
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@v2
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$
@@ -23,4 +23,4 @@
23
23
  // CI/CD
24
24
  "github.vscode-github-actions"
25
25
  ]
26
- }
26
+ }
@@ -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
- - Documented critical helical coverage defect: `lockDegrees` compatibility with `patternNumber` is not fully validated and can allow partial mandrel coverage without a planner error for incompatible combinations (for example `lockDegrees=270`, `patternNumber=3`).
14
- - Documented required compatibility rule for helical coverage safety: `(2 × lockDegrees) % (360 / patternNumber) == 0`.
15
- - Documented planned validator hardening to reject `lockDegrees`/`patternNumber` combinations that produce overlapping or aliased in-pattern positions.
16
- - Documented planned behavior fix where `skipIndex` is currently schema-validated but not yet applied to helical in-pattern visit order.
17
- - Documented planned schema normalization for `skipInitialNearLock` from nullable boolean to `bool` with default `false`.
18
- - Documented required docs correction scope for `lockDegrees`, `patternNumber`, and coverage-vs-ply-count semantics, including clarification that feed-rate clamping in planner math is planned, not currently implemented.
19
- - Documented required example updates for compatibility: `examples/rocketry/AvBay(470mm).wind` layer 1 and `examples/rocketry/MainChute(585mm).wind` layer 1 should use `lockDegrees=540` instead of `270`.
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.6.2
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
- [![Version](https://img.shields.io/badge/version-0.6.2-4c7284)](https://github.com/CameronBrooks11/fiberpath/releases)
711
+ [![Version](https://img.shields.io/badge/version-0.7.0-4c7284)](https://github.com/CameronBrooks11/fiberpath/releases)
712
712
  [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-00695C.svg)](LICENSE)
713
713
  [![Backend CI](https://img.shields.io/github/actions/workflow/status/CameronBrooks11/fiberpath/backend-ci.yml?branch=main&label=Backend%20CI&logo=python&logoColor=white)](https://github.com/CameronBrooks11/fiberpath/actions/workflows/backend-ci.yml)
714
714
  [![GUI CI](https://img.shields.io/github/actions/workflow/status/CameronBrooks11/fiberpath/gui-ci.yml?branch=main&label=GUI%20CI&logo=react&logoColor=white)](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 real-time 3D preview
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
- - **Flexible Axis Mapping** – Support for XAB rotational or XYZ linear axis configurations
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
- # Interactive 3D simulation (GUI)
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 3D canvas preview
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
- │ • 3D canvas preview
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 supports two axis mapping formats:
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
- **XYZ (Legacy)**:
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
- [![Version](https://img.shields.io/badge/version-0.6.2-4c7284)](https://github.com/CameronBrooks11/fiberpath/releases)
7
+ [![Version](https://img.shields.io/badge/version-0.7.0-4c7284)](https://github.com/CameronBrooks11/fiberpath/releases)
8
8
  [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-00695C.svg)](LICENSE)
9
9
  [![Backend CI](https://img.shields.io/github/actions/workflow/status/CameronBrooks11/fiberpath/backend-ci.yml?branch=main&label=Backend%20CI&logo=python&logoColor=white)](https://github.com/CameronBrooks11/fiberpath/actions/workflows/backend-ci.yml)
10
10
  [![GUI CI](https://img.shields.io/github/actions/workflow/status/CameronBrooks11/fiberpath/gui-ci.yml?branch=main&label=GUI%20CI&logo=react&logoColor=white)](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 real-time 3D preview
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
- - **Flexible Axis Mapping** – Support for XAB rotational or XYZ linear axis configurations
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
- # Interactive 3D simulation (GUI)
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 3D canvas preview
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
- │ • 3D canvas preview
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 supports two axis mapping formats:
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
- **XYZ (Legacy)**:
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 cut v0.6.2 solely for this; re-check after upstream Tauri/GTK dependency line moves to non-vulnerable glib.
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.