The sidebar `messages` namespace was missing six keys that are referenced
in `useSidebarController.ts`:
- messages.updateProjectError (rename / star-toggle failure)
- messages.refreshError (project list refresh failure)
- messages.restoreProjectFailed / restoreProjectError
- messages.restoreSessionFailed / restoreSessionError
`updateProjectError` and `refreshError` are called via `t()` without an
inline default, so on failure users see the raw key string
"messages.updateProjectError" / "messages.refreshError" instead of a
message. The four restore.* keys have inline English defaults in the code,
so they previously fell back to English even in non-English UIs.
Adds all six keys to every locale (de, en, fr, it, ja, ko, ru, tr,
zh-CN, zh-TW), matching the existing wording/style of the neighbouring
delete/create messages in each file.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The pulsing green dot next to a session row signals that the session
had activity in the last 10 minutes, but the meaning was undocumented.
Hovering it now shows a translated tooltip, and an aria-label exposes
the same text to screen readers.
Uses the existing shared Tooltip component (portal-positioned, so it
is not clipped by the sidebar overflow). Translation key added to all
eight sidebar locale files (en, de, it, ja, ko, ru, tr, zh-CN).
* feat: add full-text search across conversations in sidebar
Add a search mode toggle (Projects/Conversations) to the sidebar search bar.
In Conversations mode, search text content across all JSONL session files
with debounced API calls, highlighted snippets, and click-to-navigate results.
* fix: address PR review feedback - session summary tracking, search sequence invalidation, fallback navigation, SSE streaming
- Track session summaries per-session in a Map instead of file-scoped variable
- Increment searchSeqRef when clearing conversation search to invalidate in-flight requests
- Add fallback session navigation when session not loaded in sidebar paging
- Stream search results via SSE for progressive display with progress indicator
* feat(search): add Codex/Gemini search and scroll-to-message navigation
- Search now includes Codex sessions (JSONL from ~/.codex/sessions/) and
Gemini sessions (in-memory via sessionManager) in addition to Claude
- Search results include provider info and display a provider badge
- Click handler resolves the correct provider instead of hardcoding claude
- Clicking a search result loads all messages and scrolls to the matched
message with a highlight flash animation
* fix(search): Codex search path matching and scroll reliability
- Fix Codex search scanning all sessions for every project by checking
session_meta cwd match BEFORE scanning messages (was inflating match
count and hitting limit before reaching later projects)
- Fix Codex search missing user messages in response_item entries
(role=user with input_text content parts)
- Fix scroll-to-message being overridden by initial scrollToBottom
using searchScrollActiveRef to inhibit competing scroll effects
- Fix snippet matching using contiguous substring instead of
filtered words (which created non-existent phrases)
* feat(search): add Gemini CLI session support for search and history viewing
Gemini CLI sessions stored in ~/.gemini/tmp/<project>/chats/*.json are now
indexed for conversation search and can be loaded for viewing. Previously
only sessions created through the UI (sessionManager) were searchable.
* fix(search): full-word matching and longer highlight flash
- Search now uses word boundaries (\b) instead of substring matching,
so "hi" no longer matches "this"
- Highlight flash extended to 4s with thicker outline and subtle
background tint for better visibility