diff --git a/.codex-worktrees/friction-factors-3659 b/.codex-worktrees/friction-factors-3659 new file mode 160000 index 0000000000..9c673194ef --- /dev/null +++ b/.codex-worktrees/friction-factors-3659 @@ -0,0 +1 @@ +Subproject commit 9c673194ef4c9a55595c3799d4fddd0d7e28c561 diff --git a/.codex-worktrees/pr-3602-fix b/.codex-worktrees/pr-3602-fix new file mode 160000 index 0000000000..e37b3241d3 --- /dev/null +++ b/.codex-worktrees/pr-3602-fix @@ -0,0 +1 @@ +Subproject commit e37b3241d36d8841b6aa4c7688788fc5841aca48 diff --git a/.codex-worktrees/pr-3752-movement b/.codex-worktrees/pr-3752-movement new file mode 160000 index 0000000000..e5e013c029 --- /dev/null +++ b/.codex-worktrees/pr-3752-movement @@ -0,0 +1 @@ +Subproject commit e5e013c02975432b4d15b16b9ce1f2b4938d5096 diff --git a/.codex-worktrees/pr-3766-modern-robotics-dbc b/.codex-worktrees/pr-3766-modern-robotics-dbc new file mode 160000 index 0000000000..34ee67dce3 --- /dev/null +++ b/.codex-worktrees/pr-3766-modern-robotics-dbc @@ -0,0 +1 @@ +Subproject commit 34ee67dce3267f4ecae6eecb28e0288df80203bf diff --git a/.codex-worktrees/pr-3780-pressure-flow b/.codex-worktrees/pr-3780-pressure-flow new file mode 160000 index 0000000000..b286577f46 --- /dev/null +++ b/.codex-worktrees/pr-3780-pressure-flow @@ -0,0 +1 @@ +Subproject commit b286577f46dc8960f19b102f17aff100afc6977d diff --git a/.codex-worktrees/pr-3784-deterministic-te b/.codex-worktrees/pr-3784-deterministic-te new file mode 160000 index 0000000000..1e87cc7d5f --- /dev/null +++ b/.codex-worktrees/pr-3784-deterministic-te @@ -0,0 +1 @@ +Subproject commit 1e87cc7d5fc99f3dde8893503f4e55d7f1df76b5 diff --git a/.jules/bolt.md b/.jules/bolt.md index 6858e01b49..24577d6f36 100644 --- a/.jules/bolt.md +++ b/.jules/bolt.md @@ -89,3 +89,6 @@ ## 2025-05-18 - Avoid array methods for small static arrays in frequently called initializers **Learning:** Using `.reduce()` or `.map()` on static arrays like tabs definitions inside frequently called functions (e.g. state initializers or local storage hydration) incurs unnecessary closure and function call overhead. **Action:** Replace `.reduce()` and `.map()` with single-pass `for` loops in simple data transformation functions (like `defaultTabVisibility`) to eliminate closure allocations. +## 2024-07-28 - Avoid array methods for header setup during CSV parsing +**Learning:** Using array mapping (like `.map()`) when parsing CSV header columns creates intermediate arrays, adding minor but unnecessary garbage collection pressure during the initialization phase of data visualizations. +**Action:** Replace `.map()` calls with a single-pass `for` loop combined with pre-allocated arrays to parse dataset headers directly, minimizing closure and array allocation overhead. diff --git a/.jules/palette.md b/.jules/palette.md index f32fbc5e57..62f722b9a0 100644 --- a/.jules/palette.md +++ b/.jules/palette.md @@ -49,3 +49,6 @@ ## 2024-05-31 - Tab Roles vs aria-pressed **Learning:** When implementing custom tab components in React, use `role="tab"` paired strictly with `aria-selected` (not `aria-pressed`, which is intended for toggle buttons) and ensure `aria-controls` points to a valid `role="tabpanel"` container whose `aria-labelledby` points back to the tab. **Action:** When adding accessible properties to custom tabs, replace `aria-pressed` with `aria-selected`, ensure a `role="tablist"` wrapper is present, and correctly cross-reference `aria-controls` with the tab panel IDs. +## 2026-08-12 - ARIA Labels for Dynamic Matrix Grids +**Learning:** When creating dynamic input grids (e.g., mathematical matrices or vectors) where explicit `