Repository navigation
feat(command palette): Ctrl/Cmd+K search over workspaces, shots, lessons, glossary - #65
Merged
obvious-autobuild[bot] merged 1 commit intoOct 11, 2026
Conversation
…ons, glossary Native <dialog> palette (web/palette.js): case-insensitive substring search over the three workspaces, the shot catalog (/shots, fetched once and cached), the 43 lesson titles and 47 glossary terms, plus actions — share this view, OpenUSD export, start/resume the guided study, open the edit drawer, open the catalog. Keyboard-first (arrows/Enter/Esc), focus trapped by native showModal and restored to the opener on close; runs every action through existing public surfaces (router hash grammar, window.FusionLab hooks, replay/app handlers) — no new app paths, no dependencies, ES5-compatible IIFE. Companion edits: header ⌘K stub enabled with aria-haspopup/aria-expanded; palette styles from the existing token set (no new palette); a small additive window.FusionLab.guided.start(lessonId) hook in guide.js so a lesson item opens that exact lesson through the same jump the per-panel "?" buttons use. Co-authored-by: Tapan Ganatma Nakkina <[email protected]>
obvious-autobuild
Bot
merged commit Oct 11, 2026
5a2d99e
into
release/task-mode-ia-redesign-20261011-170103
3 checks passed
This was referenced Oct 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the command palette from the spec's "What we build" §2 (L6): a new
web/palette.js— a native<dialog>opened by Ctrl/Cmd+K or the header ⌘K button (the stub shipped disabled with the router PR). Case-insensitive substring search over:/shotsfetched once per session and cached, labelled like the existing picker (#30192 · 2 Beams,SS Beam,SW Beam · 0.95 MA),location.href), OpenUSD export, start/resume the guided study, open the edit drawer, open the catalog.Keyboard-first: ↑/↓ move the selection, Enter runs it, Esc closes; focus is trapped by native
showModal()and restored to the opener on close; the header button carriesaria-haspopup="dialog"+aria-expanded. No dependencies, ES5-compatible IIFE, and every action runs through existing public surfaces — the router hash grammar (workspaces.js),window.FusionLabhooks and the replay/app handlers — with no DOM reach into other modules.Companion edits:
web/index.htmlloads the script last and enables the ⌘K stub;web/style.cssstyles the palette from the existing token set (no new colors, no framework);web/guide.jsgains one small additive hook —window.FusionLab.guided.start(lessonId)— so a lesson item opens that exact lesson through the same jump the per-panel "?" buttons take. ExistingFusionLabkeys and alldata-guideanchors are untouched.Acceptance criteria
30192narrows to the shot; Enter loads it; Esc closes from anywhere (evidence below).activeElement.id === 'cmdk'after Esc;aria-expandedresets).body.guided, rail on chapter 3 · "The operating map").#/explore…), shots via the replay loader (now the feat(shotload): shared shot-load state machine with a visible load chip #63 state machine — the recording shows the load chip working), lessons via the newFusionLab.guided.starthook, USD/share/catalog via the existing handlers.uv run pytest -q: 352 passed, 1 skipped;uv run ruff check: clean;uv run mypy fusionlab: clean (run on this exact tree,02c5775).Evidence (QA uploaded against tested head
02c5775)30192→ Enter loads the shot: recording · palette open with the match · shot 30192 loaded, hash#/replay/30192Captured with Playwright (Chromium 1440×900) against a live server on the tested head. Notes for reviewers: with the guided-study spotlight active, the header ⌘K button is dimmed
inertby design (the spotlight dims header chrome) — the palette still opens there with Ctrl/Cmd+K since that shortcut is a document-level listener. When the palette opens before/shotshas resolved (first open of the session), the empty-query message already says sources load as you type, and the list repaints when the fetch lands.How to review
web/palette.jsis the whole feature (one IIFE, ~240 lines): items are data +run()closures over public surfaces;refreshDynamic()fetches lessons/glossary/shots once and re-renders on arrival;search()is pure substring + starts-with ranking, capped at 30 rows.Sibling PRs (Lane B · explore → palette)
7fd008d)feat/tmia-replay-drawer(Lane A, anchored what-if drawer) — in progress, no PR yetHuman author: Tapan Ganatma Nakkina ([email protected])
🔗 Obvious Project · 🧵 Obvious Thread · 🔀 Obvious PR Artifact