`. | -| **P2.6** | Keyboard navigation through scene draggable sources via arrow keys | Add. | +| **P2.6** | ~~Keyboard arrow-key scene navigation~~ | `nv-scene.ts` | ✅ Iter N — Tab cycles draggable items, arrows nudge by 8 px (32 with Shift), Esc deselects, position changes persist via `scenePositions`. | | **P2.7** | Service worker doesn't have `clients.claim()` | Confirm. Ensures new SW activates on next nav. | | **P2.8** | PWA install prompt is silent | Add an install button (visible only when `beforeinstallprompt` fires). | @@ -97,6 +97,7 @@ The dynamic /loop continues with one P0/P1 item per iteration: | **K** | Home view | ✅ `` as default landing — hero + 4 quick-jump cards + simplified grid hides power-user panels | | **L** | WsClient transport | ✅ Full REST + binary WebSocket impl against `nvsim-server`; transport-flip auto-reverify; activated via Settings drawer | | **M** | App Store live runtime | ✅ 6 simulated apps emit real i32 events against nvsim frame stream; runtime pills (running/simulated/mesh-only); live events feed | +| **N** | Light-theme contrast (P2.4) + keyboard scene nav (P2.6) | ✅ AA-compliant `--ink-3`/`--ink-4`/`--line` palette in light mode; Tab/arrows/Shift-arrow/Esc on scene draggables | Each iteration ends with: `npx tsc --noEmit` clean → production build with `NVSIM_BASE=/RuView/nvsim/` → push to `gh-pages/nvsim/`