🎨 Palette & Bolt Suite: Form Submission, Accessibility, SVG & CSV Optimizations - #4429
🎨 Palette & Bolt Suite: Form Submission, Accessibility, SVG & CSV Optimizations#4429dieterolson wants to merge 16 commits into
Conversation
Replaced the Array.from initialization of rawColumns with a pre-allocated new Array and a standard for loop in src/p1am_control_system/frontend/src/lib/explorer/csv.ts. Co-authored-by: dieterolson <198168927+dieterolson@users.noreply.github.com>
Co-authored-by: dieterolson <198168927+dieterolson@users.noreply.github.com>
💡 What: Replaced the Array.from initialization of rawColumns with a pre-allocated new Array populated via a standard for loop in src/p1am_control_system/frontend/src/lib/explorer/csv.ts. Additionally fixed the cross-repo-python-integration.yml sparse-checkout configuration. 🎯 Why: Array.from with a mapped callback in V8 JavaScript engines incurs significant performance overhead during initialization due to iterability checks, iterator creation, and executing a closure for every element. This occurs on the critical path of loading new CSV data for exploration. 📊 Impact: Substantially reduces intermediate garbage collection pressure and speeds up array initialization during local CSV imports. 🔬 Measurement: Verify by executing the frontend tests via vitest run to ensure parsing correctness, and by measuring the time to import large CSV files. Co-authored-by: dieterolson <198168927+dieterolson@users.noreply.github.com>
Co-authored-by: dieterolson <198168927+dieterolson@users.noreply.github.com>
Co-authored-by: dieterolson <198168927+dieterolson@users.noreply.github.com>
Replaced `segments.push(...); return segments.join(" ")` with a single-pass `for` loop and string concatenation (`d += ...`) in `LinePlot`, `ScatterPlot`, and `SpectrumPlot`'s `buildPath` functions to reduce intermediate array allocation and V8 garbage collection pressure during high-frequency UI renders.
Co-authored-by: dieterolson <198168927+dieterolson@users.noreply.github.com>
Co-authored-by: dieterolson <198168927+dieterolson@users.noreply.github.com>
🎨 Palette: Form accessibility and handling for the ODE Solver 💡 What: I wrapped the ODE Solver input fields in a `<form>` and added a `focus-visible` ring to the main action button. 🎯 Why: This enables native "Enter" key support for inputs, improving keyboard UX. It also ensures the button has a clear focus state when tabbing. ♿ Accessibility: Improved keyboard navigation and overall form handling flow. Co-authored-by: dieterolson <198168927+dieterolson@users.noreply.github.com>
…nsolidated/comprehensive-palette-bolt-tools
…nsolidated/comprehensive-palette-bolt-tools
…olidated/comprehensive-palette-bolt-tools
… consolidated/comprehensive-palette-bolt-tools
Closing as superseded — this exact content lands in #4438This PR is the real palette/bolt suite (16 commits, merges of #4313, #4314, #4419, #4420 plus the palette/bolt commits). Its content is not being dropped: it is already present, in full, on Evidence (git, 2026-08-13, against
|
Pull request was closed
…tion (#4438) Consolidates the Palette & Bolt suite that originated in #4429 (squash 91ea71b, itself covering merges of #4313, #4314, #4419, #4420) plus a movement-optimizer motion-view extraction, with Python formatting corrected to the CI-pinned ruff==0.14.10 and a Python 3.10 regression reverted. Substance: - Palette: form semantics, useId() label binding and role="alert" in RotationConverter.tsx and ODESolverCalculator.tsx. - Bolt: single-pass CSV string building in chartSnapshot.ts, Array.from removal in explorer/csv.ts, fewer intermediate allocations for SVG paths in LinePlot/ScatterPlot/SpectrumPlot.tsx. - refactor(movement-optimizer): extract MotionViewMixin into src/movement_optimizer/gui/motion_view.py. - fix(ci): correct sparse-checkout paths in cross-repo-python-integration.yml. - fix(tests): restore timezone.utc in test_action_audit.py; a pre-commit ruff pass had moved a noqa off its line, letting UP017 rewrite the import to datetime.UTC, which does not exist on Python 3.10. Supersedes, all closed as containing nothing this branch lacks: - #4429 — the original palette/bolt branch; quality-gate red at Format Check because its own pre-commit commits re-wrapped 86 files with a ruff that disagrees with the pin. Proven a strict semantic subset of this tree by normalising both sides with one ruff format pass. - #4437 and #4439 — byte-identical trees to each other (7fc2ce4), each only the #4429 squash plus a lint commit, despite advertising flight and rate-of-closure work. Palette/Bolt work items carried: #4310, #4311, #4313, #4314, #4418, #4419, #4420, #4421. None of the 59 still-open agent PRs named in the three closed PRs' descriptions are in this diff; they remain open and unconsolidated. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Consolidates all Palette UI, SVG, CSV, and Bolt performance optimizations into a single comprehensive repository PR (#4421 #4420 #4419 #4418 #4314 #4313 #4311 #4310).