mirror of
https://github.com/NeuralNomadsAI/CodeNomad.git
synced 2026-10-21 05:06:37 +00:00
## Why Workspace-wide conversation search listed each hit as raw native identifiers (`sessionId · messageId · kind`). A result could not tell which task, worktree or branch it came from, and another conversation could only be previewed, never opened. When the same file diverges across parallel tasks, that context is what tells results apart. ## What changes - Workspace results group consecutive hits by session. Each group shows the conversation title and a badge for the worktree that currently holds the session (its label, normally the branch). - Raw IDs no longer appear in results. - The other-session preview adds the worktree badge, the message's relative date and an **Open in session** action that opens the conversation at the hit. - No commit is shown: a conversation message is not bound to one. ## How - `stores/history-search-sessions.ts`: titles/locations come from the session store, or one native `session.get` per distinct unloaded session (older catalog pages, collapsed subsessions), at most four in flight. Display reads never add sessions to the list, end with the results view and are discarded on reconnect. - Opening hydrates only that session and its parents (`hydrateRestoredSessionChain`), stores the hit as its transcript anchor and selects it; the destination restores the bounded window through the existing anchor path. - `components/history-search-results.tsx` renders the grouped list (rows are described by their group header); `getWorktreeForDirectory` is shared with the session list. - i18n for all locales; styles in `styles/components/history-search.css`; documented in `SESSION_HISTORY_QUERIES.md` and `AGENTS.md`. ## Validation - `tests/browser/history.test.ts` extended: grouping, worktree badges, failed label read, one bounded read per conversation, accessible descriptions, preview date/badge, open at anchor. - Browser suites `history`, `header-windows`, `history-navigation`, `worktrees`: 115/115 pass. - UI typecheck passes. Not covered: landing on the message inside a real SessionView after opening (the anchor restore path itself is covered by the existing history-navigation suite), and the installed desktop app. |
||
|---|---|---|
| .. | ||
| architecture.md | ||
| BROWSER_AUTOMATION.md | ||
| BROWSER_DEVICE_EMULATION.md | ||
| CACHE_REFRESH_CONVENTIONS.md | ||
| DESKTOP_DATA_PROFILES.md | ||
| DEVELOPER_MODE.md | ||
| FILES_PANEL.md | ||
| HOTKEYS.md | ||
| INDEX.md | ||
| MISSIONS.md | ||
| MISSIONS_AUTONOMOUS_PLUGIN_REQUIREMENTS.md | ||
| MISSIONS_CONTINUITY_CONTRACT.md | ||
| MISSIONS_ENVIRONMENT_ADMISSION.md | ||
| MISSIONS_FAMILY_AUTHORITY.md | ||
| MISSIONS_HUMAN_ANSWER_RECEIPTS.md | ||
| MISSIONS_NATIVE_PRODUCT_ACCEPTANCE.md | ||
| MISSIONS_RECURRING_SIMPLE.md | ||
| MISSIONS_RECURRING_SIMPLE_QUALIFICATION.md | ||
| MISSIONS_REFACTOR_VALIDATION.md | ||
| MISSIONS_SESSION_RECOVERY.md | ||
| MISSIONS_WATCHED_SOURCES.md | ||
| NATIVE_INTERRUPTION_UX.md | ||
| OPENCODE_V2_COMPATIBILITY.md | ||
| OPENCODE_V2_POST_BETA.md | ||
| PALETTE_SOURCES.md | ||
| PANEL_EXTENSIONS.md | ||
| PLUGIN_ACTIVATION_CONTROLS.md | ||
| PROVIDER_ACCOUNTS_UX_PLAN.md | ||
| REMOTE_CONTROL.md | ||
| RUNTIME_MAINTENANCE.md | ||
| SESSION_ENVIRONMENT.md | ||
| SESSION_HISTORY_NAVIGATION.md | ||
| SESSION_HISTORY_QUERIES.md | ||
| SESSION_PRUNING_RPC.md | ||
| SESSION_PRUNING_SAFETY.md | ||
| solidjs-llms.txt | ||
| TAURI_UPDATER.md | ||
| USER_HELP.md | ||
| WORKTREE_SESSION_PLACEMENT.md | ||