fiberpath 0.7.0__tar.gz → 0.7.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/actions/setup-node/action.yml +1 -1
  2. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/actions/setup-python/action.yml +3 -3
  3. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/actions/setup-rust/action.yml +1 -1
  4. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/backend-ci.yml +3 -3
  5. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/ci-check.yml +10 -18
  6. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/dependency-audit.yml +6 -4
  7. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/docs-ci.yml +1 -1
  8. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/docs-deploy.yml +2 -2
  9. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/gui-ci.yml +4 -4
  10. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/gui-e2e-smoke.yml +1 -1
  11. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/gui-packaging.yml +44 -9
  12. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/workflows/release.yml +6 -6
  13. {fiberpath-0.7.0 → fiberpath-0.7.2}/CHANGELOG.md +76 -0
  14. {fiberpath-0.7.0 → fiberpath-0.7.2}/PKG-INFO +8 -6
  15. {fiberpath-0.7.0 → fiberpath-0.7.2}/README.md +6 -5
  16. {fiberpath-0.7.0 → fiberpath-0.7.2}/TODO.md +2 -0
  17. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/architecture/overview.md +1 -2
  18. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/development/dependency-policy.md +2 -2
  19. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/development/packaging.md +1 -1
  20. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/guides/wind-format.md +2 -2
  21. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/index.md +8 -8
  22. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/execution/marlin.py +30 -65
  23. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/layer_strategies.py +1 -12
  24. fiberpath-0.7.2/fiberpath_api/main.py +34 -0
  25. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/path_policy.py +30 -10
  26. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/routes/stream.py +5 -1
  27. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/interactive.py +21 -42
  28. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/.gitignore +1 -0
  29. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/architecture/cli-integration.md +1 -1
  30. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/guides/performance.md +3 -3
  31. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/package-lock.json +411 -374
  32. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/package.json +20 -20
  33. fiberpath-0.7.2/fiberpath_gui/src/components/ErrorBoundary.test.tsx +74 -0
  34. fiberpath-0.7.2/fiberpath_gui/src/components/StatusBar.test.tsx +80 -0
  35. fiberpath-0.7.2/fiberpath_gui/src/components/StreamTab/ConnectionSection.test.tsx +112 -0
  36. fiberpath-0.7.2/fiberpath_gui/src/components/StreamTab/FileStreamingSection.test.tsx +130 -0
  37. fiberpath-0.7.2/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.test.tsx +52 -0
  38. fiberpath-0.7.2/fiberpath_gui/src/components/StreamTab/ManualControlSection.test.tsx +102 -0
  39. fiberpath-0.7.2/fiberpath_gui/src/components/StreamTab/StreamLog.test.tsx +85 -0
  40. fiberpath-0.7.2/fiberpath_gui/src/components/TabBar.test.tsx +44 -0
  41. fiberpath-0.7.2/fiberpath_gui/src/components/Toast/ToastContainer.test.tsx +65 -0
  42. fiberpath-0.7.2/fiberpath_gui/src/components/canvas/CanvasControls.test.tsx +82 -0
  43. fiberpath-0.7.2/fiberpath_gui/src/components/canvas/LayerScrubber.test.tsx +46 -0
  44. fiberpath-0.7.2/fiberpath_gui/src/components/dialogs/BaseDialog.test.tsx +83 -0
  45. fiberpath-0.7.2/fiberpath_gui/src/components/dialogs/DiagnosticsDialog.test.tsx +109 -0
  46. fiberpath-0.7.2/fiberpath_gui/src/components/editors/HelicalLayerEditor.test.tsx +69 -0
  47. fiberpath-0.7.2/fiberpath_gui/src/components/editors/HoopLayerEditor.test.tsx +58 -0
  48. fiberpath-0.7.2/fiberpath_gui/src/components/editors/SkipLayerEditor.test.tsx +59 -0
  49. fiberpath-0.7.2/fiberpath_gui/src/components/forms/MachineSettingsForm.test.tsx +43 -0
  50. fiberpath-0.7.2/fiberpath_gui/src/components/forms/MandrelForm.test.tsx +60 -0
  51. fiberpath-0.7.2/fiberpath_gui/src/components/forms/TowForm.test.tsx +60 -0
  52. fiberpath-0.7.2/fiberpath_gui/src/components/layers/LayerRow.test.tsx +110 -0
  53. fiberpath-0.7.2/fiberpath_gui/src/components/layers/LayerStack.test.tsx +143 -0
  54. fiberpath-0.7.2/fiberpath_gui/src/components/panels/panels.test.tsx +41 -0
  55. fiberpath-0.7.2/fiberpath_gui/src/components/tabs/MainTab.test.tsx +65 -0
  56. fiberpath-0.7.2/fiberpath_gui/src/contexts/CliHealthContext.test.tsx +36 -0
  57. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/contexts/CliHealthContext.tsx +2 -2
  58. fiberpath-0.7.2/fiberpath_gui/src/hooks/canvas/usePreviewGeneration.test.ts +169 -0
  59. fiberpath-0.7.2/fiberpath_gui/src/hooks/stream/useConnectionActions.test.ts +193 -0
  60. fiberpath-0.7.2/fiberpath_gui/src/hooks/stream/useManualCommandActions.test.ts +166 -0
  61. fiberpath-0.7.2/fiberpath_gui/src/hooks/stream/useStreamingActions.test.ts +318 -0
  62. fiberpath-0.7.2/fiberpath_gui/src/hooks/useCliHealth.test.ts +207 -0
  63. fiberpath-0.7.2/fiberpath_gui/src/hooks/useDebouncedValue.test.ts +106 -0
  64. fiberpath-0.7.2/fiberpath_gui/src/hooks/useFileOperations.test.tsx +77 -0
  65. fiberpath-0.7.2/fiberpath_gui/src/hooks/useKeyboardShortcuts.test.ts +163 -0
  66. fiberpath-0.7.2/fiberpath_gui/src/hooks/useMenubarInteractions.test.tsx +97 -0
  67. fiberpath-0.7.2/fiberpath_gui/src/layouts/MainLayout.test.tsx +75 -0
  68. fiberpath-0.7.2/fiberpath_gui/src/lib/commands.test.ts +202 -0
  69. fiberpath-0.7.2/fiberpath_gui/src/lib/fileOperations.test.ts +330 -0
  70. fiberpath-0.7.2/fiberpath_gui/src/lib/helicalValidation.test.ts +179 -0
  71. fiberpath-0.7.2/fiberpath_gui/src/lib/marlin-api.test.ts +188 -0
  72. fiberpath-0.7.2/fiberpath_gui/src/lib/menuConfig.test.ts +49 -0
  73. fiberpath-0.7.2/fiberpath_gui/src/lib/numericFields.test.ts +59 -0
  74. fiberpath-0.7.2/fiberpath_gui/src/lib/recentFiles.test.ts +142 -0
  75. fiberpath-0.7.2/fiberpath_gui/src/lib/retry.test.ts +114 -0
  76. fiberpath-0.7.2/fiberpath_gui/src/lib/streamFeedback.test.ts +352 -0
  77. fiberpath-0.7.2/fiberpath_gui/src/stores/toastStore.test.ts +87 -0
  78. fiberpath-0.7.2/fiberpath_gui/src/tests/renderWithProviders.tsx +73 -0
  79. fiberpath-0.7.2/fiberpath_gui/src/tests/storeUtils.ts +96 -0
  80. fiberpath-0.7.2/fiberpath_gui/src/tests/tauriMocks.ts +99 -0
  81. fiberpath-0.7.2/fiberpath_gui/src/types/project.test.ts +159 -0
  82. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/Cargo.lock +208 -84
  83. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/Cargo.toml +3 -3
  84. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/src/main.rs +94 -23
  85. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/tauri.conf.json +1 -1
  86. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/tsconfig.json +1 -1
  87. fiberpath-0.7.2/fiberpath_gui/vite.config.ts +14 -0
  88. fiberpath-0.7.0/fiberpath_gui/vite.config.ts → fiberpath-0.7.2/fiberpath_gui/vitest.config.ts +16 -15
  89. {fiberpath-0.7.0 → fiberpath-0.7.2}/pyproject.toml +2 -2
  90. {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/extract-package-runtime.ps1 +27 -0
  91. {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/find-bundled-cli.ps1 +22 -2
  92. {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/freeze_cli.py +0 -4
  93. fiberpath-0.7.2/tests/api/test_path_policy.py +247 -0
  94. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/api/test_plan_route.py +49 -8
  95. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/api/test_simulate_route.py +27 -9
  96. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/api/test_stream_route_errors.py +11 -0
  97. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/execution/test_marlin_streamer.py +69 -0
  98. {fiberpath-0.7.0 → fiberpath-0.7.2}/uv.lock +101 -99
  99. fiberpath-0.7.0/examples/complex_surface/README.md +0 -3
  100. fiberpath-0.7.0/fiberpath/geometry/__init__.py +0 -13
  101. fiberpath-0.7.0/fiberpath/geometry/curves.py +0 -16
  102. fiberpath-0.7.0/fiberpath/geometry/intersections.py +0 -23
  103. fiberpath-0.7.0/fiberpath/geometry/surfaces.py +0 -17
  104. fiberpath-0.7.0/fiberpath_api/main.py +0 -21
  105. fiberpath-0.7.0/fiberpath_gui/vitest.config.ts +0 -18
  106. fiberpath-0.7.0/tests/geometry/test_surfaces.py +0 -6
  107. {fiberpath-0.7.0 → fiberpath-0.7.2}/.gitattributes +0 -0
  108. {fiberpath-0.7.0 → fiberpath-0.7.2}/.github/dependabot.yml +0 -0
  109. {fiberpath-0.7.0 → fiberpath-0.7.2}/.gitignore +0 -0
  110. {fiberpath-0.7.0 → fiberpath-0.7.2}/.pre-commit-config.yaml +0 -0
  111. {fiberpath-0.7.0 → fiberpath-0.7.2}/.vscode/extensions.json +0 -0
  112. {fiberpath-0.7.0 → fiberpath-0.7.2}/.vscode/launch.json +0 -0
  113. {fiberpath-0.7.0 → fiberpath-0.7.2}/.vscode/settings.json +0 -0
  114. {fiberpath-0.7.0 → fiberpath-0.7.2}/LICENSE +0 -0
  115. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/architecture/axis-system.md +0 -0
  116. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/development/ci-cd.md +0 -0
  117. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/development/contributing.md +0 -0
  118. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/development/release-process.md +0 -0
  119. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/development/tooling.md +0 -0
  120. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/feature-backlog.md +0 -0
  121. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/getting-started.md +0 -0
  122. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/guides/axis-mapping.md +0 -0
  123. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/guides/marlin-streaming.md +0 -0
  124. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/guides/visualization.md +0 -0
  125. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/reference/api.md +0 -0
  126. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/reference/concepts.md +0 -0
  127. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/reference/planner-math.md +0 -0
  128. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/troubleshooting.md +0 -0
  129. {fiberpath-0.7.0 → fiberpath-0.7.2}/docs/vm-testing.md +0 -0
  130. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/README.md +0 -0
  131. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/multi_layer/README.md +0 -0
  132. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/multi_layer/input.wind +0 -0
  133. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/AvBay(470mm)single.wind +0 -0
  134. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/AvBay(470mm)triple.gcode +0 -0
  135. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/AvBay(470mm)triple.wind +0 -0
  136. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/CarbonMotorTube(1295mm).gcode +0 -0
  137. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/CarbonMotorTube(1295mm).wind +0 -0
  138. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/MainChute(585mm).gcode +0 -0
  139. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/rocketry/MainChute(585mm).wind +0 -0
  140. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/simple_cylinder/README.md +0 -0
  141. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/simple_cylinder/input.wind +0 -0
  142. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/sized_simple_cylinder/README.md +0 -0
  143. {fiberpath-0.7.0 → fiberpath-0.7.2}/examples/sized_simple_cylinder/input.wind +0 -0
  144. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/__init__.py +0 -0
  145. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/config/__init__.py +0 -0
  146. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/config/schemas.py +0 -0
  147. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/config/validator.py +0 -0
  148. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/execution/__init__.py +0 -0
  149. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/gcode/__init__.py +0 -0
  150. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/gcode/dialects.py +0 -0
  151. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/gcode/generator.py +0 -0
  152. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/math_utils.py +0 -0
  153. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/__init__.py +0 -0
  154. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/calculations.py +0 -0
  155. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/exceptions.py +0 -0
  156. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/helpers.py +0 -0
  157. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/machine.py +0 -0
  158. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/planner.py +0 -0
  159. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/planning/validators.py +0 -0
  160. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/simulation/__init__.py +0 -0
  161. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/simulation/simulator.py +0 -0
  162. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/visualization/__init__.py +0 -0
  163. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/visualization/export_json.py +0 -0
  164. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath/visualization/plotter.py +0 -0
  165. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/__init__.py +0 -0
  166. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/package-lock.json +0 -0
  167. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/routes/__init__.py +0 -0
  168. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/routes/plan.py +0 -0
  169. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/routes/simulate.py +0 -0
  170. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/routes/validate.py +0 -0
  171. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_api/schemas.py +0 -0
  172. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/__init__.py +0 -0
  173. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/__main__.py +0 -0
  174. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/main.py +0 -0
  175. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/output.py +0 -0
  176. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/plan.py +0 -0
  177. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/plot.py +0 -0
  178. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/simulate.py +0 -0
  179. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/stream.py +0 -0
  180. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_cli/validate.py +0 -0
  181. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/.nvmrc +0 -0
  182. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/.stylelintrc.json +0 -0
  183. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/README.md +0 -0
  184. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/bundled-cli/.gitkeep +0 -0
  185. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/architecture/state-management.md +0 -0
  186. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/architecture/streaming-state.md +0 -0
  187. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/architecture/tech-stack.md +0 -0
  188. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/development.md +0 -0
  189. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/guides/schemas.md +0 -0
  190. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/guides/styling.md +0 -0
  191. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/overview.md +0 -0
  192. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/reference/type-safety.md +0 -0
  193. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/docs/testing.md +0 -0
  194. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/generate-types.json +0 -0
  195. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/index.html +0 -0
  196. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/perf/bundle-baseline.json +0 -0
  197. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/schemas/wind-schema.json +0 -0
  198. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/scripts/check-bundle-budget.mjs +0 -0
  199. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/scripts/check-css-vars.mjs +0 -0
  200. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/App.tsx +0 -0
  201. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/CliHealthWarning.tsx +0 -0
  202. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/ErrorBoundary.tsx +0 -0
  203. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/ErrorNotificationToast.tsx +0 -0
  204. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/MenuBar.tsx +0 -0
  205. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StatusBar.tsx +0 -0
  206. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/ConnectionSection.css +0 -0
  207. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/ConnectionSection.tsx +0 -0
  208. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.css +0 -0
  209. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/FileStreamingSection.tsx +0 -0
  210. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.css +0 -0
  211. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/KeyboardShortcuts.tsx +0 -0
  212. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/ManualControlSection.css +0 -0
  213. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/ManualControlSection.tsx +0 -0
  214. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/StreamControls.css +0 -0
  215. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/StreamControls.tsx +0 -0
  216. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/StreamLog.css +0 -0
  217. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/StreamLog.tsx +0 -0
  218. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/StreamTab.css +0 -0
  219. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/StreamTab/StreamTab.tsx +0 -0
  220. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/TabBar.tsx +0 -0
  221. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/Toast/ToastContainer.css +0 -0
  222. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/Toast/ToastContainer.tsx +0 -0
  223. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/canvas/CanvasControls.tsx +0 -0
  224. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/canvas/CenterCanvas.tsx +0 -0
  225. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/canvas/LayerScrubber.tsx +0 -0
  226. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/canvas/VisualizationCanvas.tsx +0 -0
  227. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/dialogs/AboutDialog.tsx +0 -0
  228. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/dialogs/BaseDialog.tsx +0 -0
  229. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/dialogs/CliUnavailableDialog.tsx +0 -0
  230. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/dialogs/DiagnosticsDialog.tsx +0 -0
  231. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/dialogs/ExportConfirmationDialog.tsx +0 -0
  232. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/editors/HelicalLayerEditor.tsx +0 -0
  233. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/editors/HoopLayerEditor.tsx +0 -0
  234. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/editors/LayerNumericField.tsx +0 -0
  235. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/editors/SkipLayerEditor.tsx +0 -0
  236. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/forms/MachineSettingsForm.tsx +0 -0
  237. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/forms/MandrelForm.tsx +0 -0
  238. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/forms/TowForm.tsx +0 -0
  239. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/layers/LayerRow.tsx +0 -0
  240. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/layers/LayerStack.tsx +0 -0
  241. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/panels/BottomPanel.tsx +0 -0
  242. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/panels/LeftPanel.tsx +0 -0
  243. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/panels/RightPanel.tsx +0 -0
  244. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/components/tabs/MainTab.tsx +0 -0
  245. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/contexts/ErrorNotificationContext.tsx +0 -0
  246. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/canvas/usePreviewGeneration.ts +0 -0
  247. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/stream/useConnectionActions.ts +0 -0
  248. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/stream/useManualCommandActions.ts +0 -0
  249. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/stream/useStreamingActions.ts +0 -0
  250. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useCliHealth.ts +0 -0
  251. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useDebouncedValue.ts +0 -0
  252. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useFileOperations.ts +0 -0
  253. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useKeyboardShortcuts.ts +0 -0
  254. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useMenubarInteractions.ts +0 -0
  255. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useStreamEvents.ts +0 -0
  256. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useTheme.test.ts +0 -0
  257. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/hooks/useTheme.ts +0 -0
  258. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/layouts/MainLayout.tsx +0 -0
  259. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/commands.ts +0 -0
  260. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/constants.ts +0 -0
  261. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/fileOperations.ts +0 -0
  262. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/helicalValidation.ts +0 -0
  263. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/marlin-api.ts +0 -0
  264. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/menuConfig.ts +0 -0
  265. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/numericFields.ts +0 -0
  266. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/recentFiles.ts +0 -0
  267. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/retry.ts +0 -0
  268. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/schemas.test.ts +0 -0
  269. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/schemas.ts +0 -0
  270. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/streamFeedback.ts +0 -0
  271. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/tauri-types.ts +0 -0
  272. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/toastMessages.ts +0 -0
  273. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/validation.test.ts +0 -0
  274. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/validation.ts +0 -0
  275. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/validationErrors.test.ts +0 -0
  276. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/lib/validationErrors.ts +0 -0
  277. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/main.tsx +0 -0
  278. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/stores/projectStore.test.ts +0 -0
  279. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/stores/projectStore.ts +0 -0
  280. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/stores/streamStore.ts +0 -0
  281. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/stores/toastStore.ts +0 -0
  282. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/buttons.css +0 -0
  283. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/canvas.css +0 -0
  284. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/dialogs.css +0 -0
  285. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/forms.css +0 -0
  286. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/index.css +0 -0
  287. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/layout.css +0 -0
  288. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/notifications.css +0 -0
  289. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/panels.css +0 -0
  290. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/reset.css +0 -0
  291. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/tabs.css +0 -0
  292. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/tokens.css +0 -0
  293. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/styles/typography.css +0 -0
  294. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/tests/integration/streamLifecycle.test.ts +0 -0
  295. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/tests/integration/workflows.test.ts +0 -0
  296. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/tests/setup.ts +0 -0
  297. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/types/components.ts +0 -0
  298. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/types/converters.test.ts +0 -0
  299. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/types/converters.ts +0 -0
  300. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/types/project.ts +0 -0
  301. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src/types/wind-schema.ts +0 -0
  302. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/build.rs +0 -0
  303. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/capabilities/default.json +0 -0
  304. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/icons/128x128.png +0 -0
  305. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/icons/256x256.png +0 -0
  306. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/icons/32x32.png +0 -0
  307. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/icons/512x512.png +0 -0
  308. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/icons/icon.ico +0 -0
  309. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/src/cli_path.rs +0 -0
  310. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/src/cli_process.rs +0 -0
  311. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/src-tauri/src/marlin.rs +0 -0
  312. {fiberpath-0.7.0 → fiberpath-0.7.2}/fiberpath_gui/tsconfig.node.json +0 -0
  313. {fiberpath-0.7.0 → fiberpath-0.7.2}/mkdocs.yml +0 -0
  314. {fiberpath-0.7.0 → fiberpath-0.7.2}/package-lock.json +0 -0
  315. {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/e2e-check-artifacts.ps1 +0 -0
  316. {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/e2e-check-artifacts.sh +0 -0
  317. {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/e2e-cli-smoke.ps1 +0 -0
  318. {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/e2e-cli-smoke.sh +0 -0
  319. {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/extract-package-runtime.sh +0 -0
  320. {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/ci/find-bundled-cli.sh +0 -0
  321. {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/export_schema.py +0 -0
  322. {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/generate_schema.py +0 -0
  323. {fiberpath-0.7.0 → fiberpath-0.7.2}/scripts/sync_gui_docs.py +0 -0
  324. {fiberpath-0.7.0 → fiberpath-0.7.2}/setup.cfg +0 -0
  325. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/api/test_stream_route.py +0 -0
  326. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cli/test_axis_format.py +0 -0
  327. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cli/test_cli_json.py +0 -0
  328. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cli/test_cli_smoke.py +0 -0
  329. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cli/test_stream_command.py +0 -0
  330. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/config/__init__.py +0 -0
  331. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/config/test_validator.py +0 -0
  332. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/inputs/helical-balanced.wind +0 -0
  333. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/inputs/simple-hoop.wind +0 -0
  334. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/inputs/skip-bias.wind +0 -0
  335. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/outputs/helical-balanced/output.gcode +0 -0
  336. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/outputs/helical-balanced/preview.png +0 -0
  337. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/outputs/simple-hoop/output.gcode +0 -0
  338. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/outputs/simple-hoop/preview.png +0 -0
  339. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/outputs/skip-bias/output.gcode +0 -0
  340. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/cyclone_reference_runs/outputs/skip-bias/preview.png +0 -0
  341. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/gcode/test_dialects.py +0 -0
  342. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/gcode/test_generator.py +0 -0
  343. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/_generate_fixtures.py +0 -0
  344. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/fixtures/helical_layer.gcode +0 -0
  345. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/fixtures/hoop_layer.gcode +0 -0
  346. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/fixtures/hoop_only_program.gcode +0 -0
  347. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/fixtures/skip_layer.gcode +0 -0
  348. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/test_axis_mapping.py +0 -0
  349. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/test_helpers_machine.py +0 -0
  350. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/test_layer_strategies.py +0 -0
  351. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/test_planner_smoke.py +0 -0
  352. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/planning/test_validators.py +0 -0
  353. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/simulation/test_simulator.py +0 -0
  354. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/simulation/test_simulator_axis_detection.py +0 -0
  355. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/tauri/test_marlin_integration.py +0 -0
  356. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/tauri/test_port_discovery.py +0 -0
  357. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/visualization/test_export_json.py +0 -0
  358. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/visualization/test_plotter.py +0 -0
  359. {fiberpath-0.7.0 → fiberpath-0.7.2}/tests/visualization/test_plotter_axis_detection.py +0 -0
@@ -15,7 +15,7 @@ runs:
15
15
  using: composite
16
16
  steps:
17
17
  - name: Set up Node.js
18
- uses: actions/setup-node@v4
18
+ uses: actions/setup-node@v5
19
19
  with:
20
20
  node-version: ${{ inputs.node-version }}
21
21
  cache: npm
@@ -19,18 +19,18 @@ 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
 
26
26
  - name: Set up uv
27
- uses: astral-sh/setup-uv@v3
27
+ uses: astral-sh/setup-uv@v8.2.0
28
28
  with:
29
29
  enable-cache: true
30
30
  cache-dependency-glob: "pyproject.toml"
31
31
 
32
32
  - name: Cache Python virtual environment
33
- uses: actions/cache@v4
33
+ uses: actions/cache@v5
34
34
  with:
35
35
  path: .venv
36
36
  key: venv-${{ runner.os }}-${{ inputs.python-version }}-${{ hashFiles('pyproject.toml') }}-${{ inputs.cache-key-suffix }}
@@ -18,7 +18,7 @@ runs:
18
18
  uses: dtolnay/rust-toolchain@stable
19
19
 
20
20
  - name: Cache cargo artifacts
21
- uses: actions/cache@v4
21
+ uses: actions/cache@v5
22
22
  with:
23
23
  path: |
24
24
  ~/.cargo/bin
@@ -13,7 +13,7 @@ jobs:
13
13
  runs-on: ubuntu-latest
14
14
  steps:
15
15
  - name: Checkout repository
16
- uses: actions/checkout@v6
16
+ uses: actions/checkout@v7
17
17
 
18
18
  - name: Setup Python environment
19
19
  uses: ./.github/actions/setup-python
@@ -39,7 +39,7 @@ jobs:
39
39
  os: [ubuntu-latest, macos-latest, windows-latest]
40
40
  steps:
41
41
  - name: Checkout repository
42
- uses: actions/checkout@v6
42
+ uses: actions/checkout@v7
43
43
 
44
44
  - name: Setup Python environment
45
45
  uses: ./.github/actions/setup-python
@@ -52,7 +52,7 @@ jobs:
52
52
 
53
53
  - name: Upload coverage
54
54
  if: matrix.os == 'ubuntu-latest'
55
- uses: codecov/codecov-action@v6
55
+ uses: codecov/codecov-action@v7
56
56
  with:
57
57
  files: ./coverage.xml
58
58
  flags: backend
@@ -15,14 +15,10 @@ on:
15
15
  - "setup.cfg"
16
16
  - "mkdocs.yml"
17
17
  - "README.md"
18
- - "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
+ - "CHANGELOG.md"
19
+ - "scripts/**"
20
+ - ".github/workflows/**"
21
+ - ".github/actions/**"
26
22
  pull_request:
27
23
  branches: [main]
28
24
  paths:
@@ -37,14 +33,10 @@ on:
37
33
  - "setup.cfg"
38
34
  - "mkdocs.yml"
39
35
  - "README.md"
40
- - "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/**"
36
+ - "CHANGELOG.md"
37
+ - "scripts/**"
38
+ - ".github/workflows/**"
39
+ - ".github/actions/**"
48
40
  workflow_dispatch:
49
41
 
50
42
  permissions:
@@ -60,11 +52,11 @@ jobs:
60
52
  docs: ${{ steps.filter.outputs.docs }}
61
53
  steps:
62
54
  - name: Checkout repository
63
- uses: actions/checkout@v6
55
+ uses: actions/checkout@v7
64
56
 
65
57
  - name: Detect changed areas
66
58
  id: filter
67
- uses: dorny/paths-filter@v3
59
+ uses: dorny/paths-filter@v4
68
60
  with:
69
61
  filters: |
70
62
  backend:
@@ -3,6 +3,8 @@ name: Dependency Audit
3
3
  on:
4
4
  push:
5
5
  branches: [main]
6
+ pull_request:
7
+ branches: [main]
6
8
  schedule:
7
9
  - cron: "0 7 * * 1"
8
10
  workflow_dispatch:
@@ -16,7 +18,7 @@ jobs:
16
18
  runs-on: ubuntu-latest
17
19
  steps:
18
20
  - name: Checkout repository
19
- uses: actions/checkout@v6
21
+ uses: actions/checkout@v7
20
22
 
21
23
  - name: Setup Python environment
22
24
  uses: ./.github/actions/setup-python
@@ -44,7 +46,7 @@ jobs:
44
46
  working-directory: fiberpath_gui
45
47
  steps:
46
48
  - name: Checkout repository
47
- uses: actions/checkout@v6
49
+ uses: actions/checkout@v7
48
50
 
49
51
  - name: Setup Node.js environment
50
52
  uses: ./.github/actions/setup-node
@@ -67,7 +69,7 @@ jobs:
67
69
  working-directory: fiberpath_gui/src-tauri
68
70
  steps:
69
71
  - name: Checkout repository
70
- uses: actions/checkout@v6
72
+ uses: actions/checkout@v7
71
73
 
72
74
  - name: Setup Rust environment
73
75
  uses: ./.github/actions/setup-rust
@@ -75,7 +77,7 @@ jobs:
75
77
  install-linux-deps: "false"
76
78
 
77
79
  - name: Install cargo-audit
78
- run: cargo install cargo-audit --locked
80
+ run: cargo audit --version 2>/dev/null || cargo install cargo-audit --locked
79
81
 
80
82
  - name: Run cargo audit (JSON report)
81
83
  run: cargo audit --json > cargo-audit.json
@@ -13,7 +13,7 @@ jobs:
13
13
  runs-on: ubuntu-latest
14
14
  steps:
15
15
  - name: Checkout repository
16
- uses: actions/checkout@v6
16
+ uses: actions/checkout@v7
17
17
 
18
18
  - name: Setup Python environment
19
19
  uses: ./.github/actions/setup-python
@@ -29,7 +29,7 @@ jobs:
29
29
  runs-on: ubuntu-latest
30
30
  steps:
31
31
  - name: Checkout repository
32
- uses: actions/checkout@v6
32
+ uses: actions/checkout@v7
33
33
 
34
34
  - name: Configure GitHub Pages
35
35
  id: pages
@@ -47,7 +47,7 @@ jobs:
47
47
  run: uv run mkdocs build --strict --site-dir site
48
48
 
49
49
  - name: Upload Pages artifact
50
- uses: actions/upload-pages-artifact@v4
50
+ uses: actions/upload-pages-artifact@v5
51
51
  with:
52
52
  path: site
53
53
 
@@ -16,7 +16,7 @@ jobs:
16
16
  working-directory: fiberpath_gui
17
17
  steps:
18
18
  - name: Checkout repository
19
- uses: actions/checkout@v6
19
+ uses: actions/checkout@v7
20
20
 
21
21
  - name: Setup Node.js environment
22
22
  uses: ./.github/actions/setup-node
@@ -44,7 +44,7 @@ jobs:
44
44
  working-directory: fiberpath_gui
45
45
  steps:
46
46
  - name: Checkout repository
47
- uses: actions/checkout@v6
47
+ uses: actions/checkout@v7
48
48
 
49
49
  - name: Setup Node.js environment
50
50
  uses: ./.github/actions/setup-node
@@ -56,7 +56,7 @@ jobs:
56
56
  run: npm run test:coverage
57
57
 
58
58
  - name: Upload coverage
59
- uses: codecov/codecov-action@v6
59
+ uses: codecov/codecov-action@v7
60
60
  with:
61
61
  files: ./fiberpath_gui/coverage/lcov.info
62
62
  flags: gui
@@ -78,7 +78,7 @@ jobs:
78
78
  echo "Build successful - dist/ directory created"
79
79
 
80
80
  - name: Upload bundle metrics artifact
81
- uses: actions/upload-artifact@v4
81
+ uses: actions/upload-artifact@v7
82
82
  with:
83
83
  name: gui-bundle-metrics
84
84
  path: fiberpath_gui/perf/reports/bundle-metrics.json
@@ -37,7 +37,7 @@ jobs:
37
37
 
38
38
  steps:
39
39
  - name: Checkout repository
40
- uses: actions/checkout@v6
40
+ uses: actions/checkout@v7
41
41
 
42
42
  - name: Download packaged GUI artifact
43
43
  uses: actions/download-artifact@v8
@@ -13,6 +13,20 @@ on:
13
13
  - ".github/actions/setup-node/**"
14
14
  - ".github/actions/setup-rust/**"
15
15
  - ".github/actions/setup-python/**"
16
+ pull_request:
17
+ branches: [main]
18
+ paths:
19
+ - "fiberpath/**"
20
+ - "fiberpath_cli/**"
21
+ - "fiberpath_gui/**"
22
+ - "!fiberpath_gui/docs/**"
23
+ - "scripts/freeze_cli.py"
24
+ - "scripts/ci/**"
25
+ - ".github/workflows/gui-packaging.yml"
26
+ - ".github/workflows/gui-e2e-smoke.yml"
27
+ - ".github/actions/setup-node/**"
28
+ - ".github/actions/setup-rust/**"
29
+ - ".github/actions/setup-python/**"
16
30
  workflow_call:
17
31
  inputs:
18
32
  release_tag:
@@ -37,7 +51,7 @@ jobs:
37
51
  os: [windows-latest, macos-latest, ubuntu-latest]
38
52
  steps:
39
53
  - name: Checkout repository
40
- uses: actions/checkout@v6
54
+ uses: actions/checkout@v7
41
55
 
42
56
  - name: Set up Python (no cache for freeze)
43
57
  uses: actions/setup-python@v6
@@ -116,7 +130,7 @@ jobs:
116
130
  working-directory: fiberpath_gui
117
131
  steps:
118
132
  - name: Checkout repository
119
- uses: actions/checkout@v6
133
+ uses: actions/checkout@v7
120
134
 
121
135
  - name: Download frozen CLI artifact
122
136
  uses: actions/download-artifact@v8
@@ -157,14 +171,11 @@ jobs:
157
171
  run: |
158
172
  echo "Checking if Tauri build succeeded with bundled CLI..."
159
173
  if [ "$RUNNER_OS" == "Windows" ]; then
160
- # Windows: Verify 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
177
 
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
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
@@ -25,7 +25,7 @@ jobs:
25
25
  tag: ${{ steps.check.outputs.tag }}
26
26
  steps:
27
27
  - name: Checkout repository
28
- uses: actions/checkout@v6
28
+ uses: actions/checkout@v7
29
29
  with:
30
30
  fetch-depth: 0
31
31
 
@@ -69,7 +69,7 @@ jobs:
69
69
  runs-on: ubuntu-latest
70
70
  steps:
71
71
  - name: Checkout repository
72
- uses: actions/checkout@v6
72
+ uses: actions/checkout@v7
73
73
 
74
74
  - name: Create SBOM output directory
75
75
  run: mkdir -p sbom
@@ -109,7 +109,7 @@ jobs:
109
109
  runs-on: ubuntu-latest
110
110
  steps:
111
111
  - name: Checkout repository
112
- uses: actions/checkout@v6
112
+ uses: actions/checkout@v7
113
113
 
114
114
  - name: Download SBOM artifacts
115
115
  uses: actions/download-artifact@v8
@@ -134,7 +134,7 @@ jobs:
134
134
 
135
135
  - name: Generate release notes
136
136
  id: notes
137
- uses: actions/github-script@v8
137
+ uses: actions/github-script@v9
138
138
  with:
139
139
  script: |
140
140
  const prevTag = '${{ steps.previous-tag.outputs.previous }}';
@@ -226,7 +226,7 @@ jobs:
226
226
  echo "Assets will be uploaded by build-gui-installers workflow"
227
227
 
228
228
  - name: Create GitHub Release
229
- uses: softprops/action-gh-release@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 }}
@@ -249,7 +249,7 @@ jobs:
249
249
  url: https://pypi.org/project/fiberpath/
250
250
  steps:
251
251
  - name: Checkout repository
252
- uses: actions/checkout@v6
252
+ uses: actions/checkout@v7
253
253
 
254
254
  - name: Setup Python environment
255
255
  uses: ./.github/actions/setup-python
@@ -8,6 +8,82 @@ The format is based on Keep a Changelog, and this project follows semantic versi
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.7.2] - 2026-06-24
12
+
13
+ ### Security
14
+
15
+ - Hardened API path policy (`enforce_input_path_policy`) to reject absolute paths (POSIX `/`, Windows drive `C:\`, UNC `\\`), NUL bytes, `..` traversal segments, and empty/whitespace inputs with 400 before any filesystem access. Resolved CodeQL alert #9 ("Uncontrolled data used in path expression").
16
+ - Patched `starlette` CVE-2026-48710 (BadHost) by upgrading to a fixed release.
17
+ - Cleared the GUI dev-tree advisories `js-yaml` (GHSA-h67p-54hq-rp68, merge-key DoS → 4.2.0) and `undici` (GHSA-vmh5-mc38-953g and related → 7.28.0). Both are dev-only; the shipped application is unaffected.
18
+ - Bumped `rand` to 0.8.6 (GHSA-cq8v-f236-94qc). A residual, build-time-only `rand` 0.7.3 is pinned upstream in the Tauri toolchain with no available fix and is tracked in `TODO.md`.
19
+
20
+ ### Changed
21
+
22
+ - API file endpoints now require relative paths; the configured `FIBERPATH_API_ALLOWED_ROOTS` controls which directories they resolve against.
23
+ - Rebuilt user-supplied paths from validated components (`Path(*parts)`) instead of passing raw input to `Path()`, breaking the taint chain for static analysis.
24
+ - API plan/simulate routes map core-engine input errors (`PlanningError`, `SimulationError`) to HTTP 400 via centralized exception handlers instead of surfacing them as 500s, and `/stream` caps the G-code payload at 10 MB.
25
+ - Routed streaming `[DEBUG]`/`[ERROR]` output through the `logging` module instead of `print(..., file=sys.stderr)`, so a normal run is quiet by default while the stdout JSON protocol is unchanged.
26
+ - Upgraded Tauri to 2.11 (Cargo + npm aligned) and refreshed CI actions.
27
+
28
+ ### Fixed
29
+
30
+ - `MarlinStreamer` transport guards now raise `StreamError` instead of `assert`, so they behave identically under `python -O` rather than degrading to a `None` dereference.
31
+ - Tauri `plot_definition`, `plot_preview`, and `validate_wind_definition` no longer leak temporary `.wind`/`.gcode`/`.png` files on error paths; an RAII guard removes them on every exit.
32
+
33
+ ### Removed
34
+
35
+ - Removed the unused `fiberpath/geometry/` stub module (dead code advertising non-cylindrical capability that does not exist; the roadmap is documented instead).
36
+ - Removed dead branches in `planning/layer_strategies.py` (a no-op `build_layer_summary` conditional and an unreachable circuit-divisibility guard superseded by upstream validation).
37
+
38
+ ### Added
39
+
40
+ - `tests/api/test_path_policy.py` — 18 dedicated tests covering all rejected input classes (NUL bytes, POSIX absolute, Windows drive/UNC, `..` traversal with forward and backslash separators, empty/whitespace, absolute-inside-root) and accepted cases (bare filename, nested relative, multiple roots, single-dot normalisation).
41
+ - Integration-level rejection tests in `test_plan_route.py` and `test_simulate_route.py` for absolute-path and traversal inputs.
42
+ - Tests for API error-to-4xx mapping, `MarlinStreamer` transport guards (including a `python -O` subprocess check), streaming logging staying quiet by default, and the Tauri temp-file cleanup guard.
43
+
44
+ ### Documentation
45
+
46
+ - Aligned the README and architecture docs with the implemented scope (cylindrical mandrels; hoop/helical/skip layers), framed geodesic/curved-surface support as roadmap, and removed the stale `examples/complex_surface/` placeholder.
47
+
48
+ ### Dependencies
49
+
50
+ - Tooling/CI: `astral-sh/setup-uv` v8.2.0 (Node 24), `codecov/codecov-action` v7, `actions/checkout` v7.
51
+ - Python (uv): `starlette` 1.3.1, `urllib3` 2.7.0, `idna` 3.15, `pymdown-extensions` 10.21.3.
52
+ - npm: `@types/node` 26, `lucide-react`, `fast-uri` 3.1.2, plus the npm prod and dev minor-patch dependency groups.
53
+ - Cargo: the cargo minor-patch dependency groups.
54
+
55
+ ## [0.7.1] - 2026-04-16
56
+
57
+ ### Added
58
+
59
+ - Expanded GUI test suite to 614 tests across 53 files via three RTL sprint phases covering pure components, store-coupled components, hooks, canvas rendering, CLI health, and stream branches (79.81% line / 91.17% branch / 87.73% function coverage).
60
+
61
+ ### Fixed
62
+
63
+ - Fixed Python audit CI failure caused by CVE-2025-71176 in `pytest 9.0.2`; bumped to `pytest 9.0.3`.
64
+ - Fixed Windows E2E smoke test failure caused by WiX MSI two-pass CAB extraction not being handled in `extract-package-runtime.ps1`.
65
+ - Fixed Windows E2E smoke test failure where accumulated MSI artifacts caused the oldest version to be selected instead of the newest; extraction now sorts by `LastWriteTime` descending.
66
+ - Fixed `cargo audit` CI failure when `cargo-audit` was already installed (`exit 101`); guarded install with a version check.
67
+ - Fixed `ci-check.yml` required-status gate never posting on `scripts/ci/**` and workflow changes; broadened path filter to `scripts/**` and `.github/workflows/**`.
68
+
69
+ ### Changed
70
+
71
+ - Extended `dependency-audit.yml` and `gui-packaging.yml` to trigger on pull requests, not only post-merge pushes.
72
+ - Improved `find-bundled-cli.ps1` with a wider path regex and full diagnostics output on failure.
73
+
74
+ ### Dependencies
75
+
76
+ - Bumped `pillow` (uv).
77
+ - Bumped `tokio` (Cargo, two patches).
78
+ - Bumped npm prod and dev minor-patch dependency groups.
79
+ - Bumped `react-zoom-pan-pinch` to 4.0.3.
80
+ - Bumped `actions/upload-pages-artifact` from 4 to 5.
81
+ - Bumped multiple Cargo minor-patch dependency groups.
82
+
83
+ ### Internal
84
+
85
+ - Synchronized release version metadata across Python (`pyproject.toml`, `uv.lock`), npm (`package.json`, `package-lock.json`), and Tauri (`Cargo.toml`, `Cargo.lock`, `tauri.conf.json`).
86
+
11
87
  ## [0.7.0] - 2026-04-08
12
88
 
13
89
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fiberpath
3
- Version: 0.7.0
3
+ Version: 0.7.2
4
4
  Summary: Modern filament winding planner, simulator, and G-code toolkit.
5
5
  Author: Cameron K. Brooks
6
6
  License: GNU AFFERO GENERAL PUBLIC LICENSE
@@ -680,6 +680,7 @@ Requires-Dist: rich>=13.7
680
680
  Requires-Dist: typer>=0.12
681
681
  Provides-Extra: api
682
682
  Requires-Dist: fastapi>=0.110; extra == 'api'
683
+ Requires-Dist: starlette>=1.0.1; extra == 'api'
683
684
  Requires-Dist: uvicorn[standard]>=0.24; extra == 'api'
684
685
  Provides-Extra: cli
685
686
  Requires-Dist: rich>=13.7; extra == 'cli'
@@ -708,7 +709,7 @@ Description-Content-Type: text/markdown
708
709
 
709
710
  **Plan, simulate, and manufacture composite parts with precision fiber winding.**
710
711
 
711
- [![Version](https://img.shields.io/badge/version-0.7.0-4c7284)](https://github.com/CameronBrooks11/fiberpath/releases)
712
+ [![Version](https://img.shields.io/badge/version-0.7.2-4c7284)](https://github.com/CameronBrooks11/fiberpath/releases)
712
713
  [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-00695C.svg)](LICENSE)
713
714
  [![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
715
  [![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)
@@ -729,12 +730,12 @@ Description-Content-Type: text/markdown
729
730
 
730
731
  FiberPath automates the complex process of **filament winding**—wrapping fiber-reinforced composites around mandrels to create lightweight, high-strength cylindrical parts like pressure vessels, pipes, and aerospace structures.
731
732
 
732
- Design multi-layer winding patterns in a visual interface, simulate the full manufacturing process, and stream G-code directly to Marlin-based hardware. FiberPath handles the mathematics of geodesic paths, fiber tension calculations, and machine kinematics so you can focus on part design.
733
+ Design multi-layer winding patterns in a visual interface, simulate the full manufacturing process, and stream G-code directly to Marlin-based hardware. FiberPath handles the winding mathematics hoop and helical path generation, tow coverage, and machine kinematics for cylindrical mandrels — so you can focus on part design.
733
734
 
734
735
  ### Features
735
736
 
736
737
  - **Visual Layer Editor** – Design winding patterns with live preview
737
- - **Geodesic Path Planning** – Automatic computation of stable fiber trajectories
738
+ - **Winding Path Planning** – Automatic hoop, helical, and skip pattern generation for cylindrical mandrels
738
739
  - **Hardware Simulation** – Validate motion before manufacturing
739
740
  - **Direct Machine Control** – Stream G-code to Marlin controllers with pause/resume
740
741
  - **XAB-Native Axis Output** – Standardized rotational-axis output with clear logical axis mapping
@@ -742,6 +743,8 @@ Design multi-layer winding patterns in a visual interface, simulate the full man
742
743
  - **Command-Line Tools** – Scriptable workflows for automation and CI/CD
743
744
  - **Comprehensive Documentation** – Architecture guides, examples, and API reference
744
745
 
746
+ > **Scope & roadmap:** FiberPath currently plans **cylindrical mandrels** with hoop, helical, and skip layers. Non-cylindrical (geodesic) surface support — including tapered and custom mandrels — is planned but not yet implemented.
747
+
745
748
  ## Quick Start
746
749
 
747
750
  ### Option 1: Desktop GUI (Recommended)
@@ -902,10 +905,9 @@ FiberPath consists of four coordinated components:
902
905
 
903
906
  ┌─────────────────────────────────────────────────┐
904
907
  │ Core Engine (Python) │
905
- │ • Geodesic path planning
908
+ │ • Winding path planning (hoop/helical/skip)
906
909
  │ • Layer strategies │
907
910
  │ • G-code generation │
908
- │ • Geometry utilities │
909
911
  └─────────────────────────────────────────────────┘
910
912
 
911
913
  │ imports
@@ -4,7 +4,7 @@
4
4
 
5
5
  **Plan, simulate, and manufacture composite parts with precision fiber winding.**
6
6
 
7
- [![Version](https://img.shields.io/badge/version-0.7.0-4c7284)](https://github.com/CameronBrooks11/fiberpath/releases)
7
+ [![Version](https://img.shields.io/badge/version-0.7.2-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)
@@ -25,12 +25,12 @@
25
25
 
26
26
  FiberPath automates the complex process of **filament winding**—wrapping fiber-reinforced composites around mandrels to create lightweight, high-strength cylindrical parts like pressure vessels, pipes, and aerospace structures.
27
27
 
28
- Design multi-layer winding patterns in a visual interface, simulate the full manufacturing process, and stream G-code directly to Marlin-based hardware. FiberPath handles the mathematics of geodesic paths, fiber tension calculations, and machine kinematics so you can focus on part design.
28
+ Design multi-layer winding patterns in a visual interface, simulate the full manufacturing process, and stream G-code directly to Marlin-based hardware. FiberPath handles the winding mathematics hoop and helical path generation, tow coverage, and machine kinematics for cylindrical mandrels — so you can focus on part design.
29
29
 
30
30
  ### Features
31
31
 
32
32
  - **Visual Layer Editor** – Design winding patterns with live preview
33
- - **Geodesic Path Planning** – Automatic computation of stable fiber trajectories
33
+ - **Winding Path Planning** – Automatic hoop, helical, and skip pattern generation for cylindrical mandrels
34
34
  - **Hardware Simulation** – Validate motion before manufacturing
35
35
  - **Direct Machine Control** – Stream G-code to Marlin controllers with pause/resume
36
36
  - **XAB-Native Axis Output** – Standardized rotational-axis output with clear logical axis mapping
@@ -38,6 +38,8 @@ Design multi-layer winding patterns in a visual interface, simulate the full man
38
38
  - **Command-Line Tools** – Scriptable workflows for automation and CI/CD
39
39
  - **Comprehensive Documentation** – Architecture guides, examples, and API reference
40
40
 
41
+ > **Scope & roadmap:** FiberPath currently plans **cylindrical mandrels** with hoop, helical, and skip layers. Non-cylindrical (geodesic) surface support — including tapered and custom mandrels — is planned but not yet implemented.
42
+
41
43
  ## Quick Start
42
44
 
43
45
  ### Option 1: Desktop GUI (Recommended)
@@ -198,10 +200,9 @@ FiberPath consists of four coordinated components:
198
200
 
199
201
  ┌─────────────────────────────────────────────────┐
200
202
  │ Core Engine (Python) │
201
- │ • Geodesic path planning
203
+ │ • Winding path planning (hoop/helical/skip)
202
204
  │ • Layer strategies │
203
205
  │ • G-code generation │
204
- │ • Geometry utilities │
205
206
  └─────────────────────────────────────────────────┘
206
207
 
207
208
  │ imports
@@ -18,4 +18,6 @@
18
18
 
19
19
  - [ ] Track Dependabot moderate alert #3 (GHSA-wrw7-89jp-8q8g / glib). Current Tauri GTK stack pins `glib` 0.18.x (`^0.18` via `gtk`), so patched `glib` 0.20.0 cannot be adopted yet. Do not block a release solely for this; re-check after upstream Tauri/GTK dependency line moves to non-vulnerable glib.
20
20
 
21
+ - [ ] Track Dependabot low alert (GHSA-cq8v-f236-94qc / `rand`). The `rand 0.8.x` instance was patched to 0.8.6; a residual `rand 0.7.3` remains, pinned via `phf_generator 0.8.0` (`^0.7`) in Tauri's `tauri-build` → `kuchikiki` → `selectors`/`cssparser` chain. It is a **build-time-only** dependency (CSS-parser codegen), not in the shipped runtime, and the advisory (runtime `rand::rng()` soundness) does not apply to it — effectively zero risk. No 0.7.x fix exists; re-check after the Tauri `tauri-utils`/`kuchikiki` dependency line moves off `phf 0.8`. Do not block a release for this.
22
+
21
23
  - [ ] Manual cross-platform validation (waived for v0.6.0, required before v1.0 or first public release): Linux `.deb`/`.AppImage` (Ubuntu 22.04, Debian 12, Fedora 39) and macOS `.dmg` (Intel + Apple Silicon) install, bundled CLI discovery, full workflow (validate → plan → simulate → visualize), serial port, file ops, upgrade, and uninstall. See `planning/roadmap-v6.md` Phases 1 & 2 for the full checklist.
@@ -24,7 +24,7 @@ together and where to extend them.
24
24
  └──────────────────────┘
25
25
  ```
26
26
 
27
- - **Core Engine (`fiberpath/`)** – Immutable planners, geometry helpers, machine abstractions, and
27
+ - **Core Engine (`fiberpath/`)** – Immutable planners, machine abstractions, and
28
28
  G-code emitters. The modules are designed to run without side effects so they can be imported from both CLI and API layers.
29
29
  - **Interface Layer** – `fiberpath_cli` hosts the Typer commands, while `fiberpath_api` turns the
30
30
  same operations into REST endpoints. The desktop GUI wraps the CLI and communicates via Tauri IPC
@@ -35,7 +35,6 @@ together and where to extend them.
35
35
  | Module | Responsibility | Notes |
36
36
  | ---------------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
37
37
  | `fiberpath.planning` | Parses `.wind` files, validates machine/layer constraints, produces command sequences. | `PlanOptions` governs verbosity and optional advanced dialect override. |
38
- | `fiberpath.geometry` | Curve/surface math shared between planner and simulator. | Pure functions make it safe for reuse. |
39
38
  | `fiberpath.gcode` | Dialects and writers for Marlin-style controllers. | Extend here when adding custom headers or commands. Axis mapping configured via `MarlinDialect`. |
40
39
  | `fiberpath.simulation` | Time/distance estimations based on planned feed rates. | Feeds CLI `simulate` summaries. Axis-aware for proper rotational calculations. |
41
40
  | `fiberpath.execution` | PySerial streaming, pause/resume, and progress tracking. | Used by CLI streaming and API `/stream`. |
@@ -21,7 +21,7 @@ Applies to:
21
21
 
22
22
  ## Ownership
23
23
 
24
- - Primary triage owner: maintainers responsible for the active release planning document in `planning/`
24
+ - Primary triage owner: maintainers responsible for the active release planning document in `docs/feature-backlog.md`
25
25
  - PR review owner: area maintainer for the affected ecosystem
26
26
  - Security escalation owner: release manager on current target milestone
27
27
 
@@ -62,6 +62,6 @@ When an update is deferred:
62
62
 
63
63
  ## Documentation and Traceability
64
64
 
65
- - Roadmap and release source of truth: `CHANGELOG.md` and current active planning documents in `planning/`.
65
+ - Roadmap and release source of truth: `CHANGELOG.md` and `docs/feature-backlog.md`.
66
66
  - Release-level summary: `CHANGELOG.md`.
67
67
  - CI architecture reference: `docs/development/ci-cd.md`.
@@ -43,7 +43,7 @@ freeze-cli:
43
43
  python-version: "3.11"
44
44
  - run: pip install . pyinstaller
45
45
  - run: python scripts/freeze_cli.py
46
- - uses: actions/upload-artifact@v4
46
+ - uses: actions/upload-artifact@v7
47
47
  with:
48
48
  name: fiberpath-cli-${{ matrix.os }}
49
49
  path: dist/fiberpath*