feat: history panel UX improvements - #26
Merged
Merged
Conversation
…sation
The SwitchConfirmation component now accepts a variant prop ("switch" | "new")
to display context-appropriate titles and button labels. The "+" button dropdown
hides the search box and shows "New conversation?" / "Save & Start New" /
"Start New" instead of the generic switch wording.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
…dropdown Added onCancelNew prop to HistoryPanel so the Cancel button in the new-conversation confirmation properly closes the history panel instead of only clearing pendingId (which had no effect). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
ConversationItem now accepts an isActive prop that renders a primary-tinted background, left border accent, and bold title for the currently open chat. Includes aria-current for accessibility. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
Conversation items now show "just now", "2m ago", "5h ago", etc. instead of message counts. Also fixes groupByDate and formatRelativeTime to use milliseconds matching the backend's now_millis() storage format. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
- Add App-level test for onCancelNew callback (restores 100% coverage) - Fix stale JSDoc: ConversationItem "message count" → "relative timestamp" - Fix stale JSDoc: HistoryPanel prop comments to match new button labels - Fix stale JSDoc: types/history.ts updated_at "seconds" → "milliseconds" Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
This was referenced Apr 5, 2026
quiet-node
added a commit
that referenced
this pull request
Apr 10, 2026
* fix: dynamic SwitchConfirmation labels and hide search for new conversation
The SwitchConfirmation component now accepts a variant prop ("switch" | "new")
to display context-appropriate titles and button labels. The "+" button dropdown
hides the search box and shows "New conversation?" / "Save & Start New" /
"Start New" instead of the generic switch wording.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* fix: Cancel button in new-conversation SwitchConfirmation now closes dropdown
Added onCancelNew prop to HistoryPanel so the Cancel button in the
new-conversation confirmation properly closes the history panel instead
of only clearing pendingId (which had no effect).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* feat: active state indicator for current conversation in history panel
ConversationItem now accepts an isActive prop that renders a primary-tinted
background, left border accent, and bold title for the currently open chat.
Includes aria-current for accessibility.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* feat: replace message count with relative timestamps in history panel
Conversation items now show "just now", "2m ago", "5h ago", etc. instead
of message counts. Also fixes groupByDate and formatRelativeTime to use
milliseconds matching the backend's now_millis() storage format.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* fix: code review — coverage gap and stale JSDoc comments
- Add App-level test for onCancelNew callback (restores 100% coverage)
- Fix stale JSDoc: ConversationItem "message count" → "relative timestamp"
- Fix stale JSDoc: HistoryPanel prop comments to match new button labels
- Fix stale JSDoc: types/history.ts updated_at "seconds" → "milliseconds"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
---------
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
quiet-node
added a commit
that referenced
this pull request
Apr 10, 2026
* fix: dynamic SwitchConfirmation labels and hide search for new conversation
The SwitchConfirmation component now accepts a variant prop ("switch" | "new")
to display context-appropriate titles and button labels. The "+" button dropdown
hides the search box and shows "New conversation?" / "Save & Start New" /
"Start New" instead of the generic switch wording.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* fix: Cancel button in new-conversation SwitchConfirmation now closes dropdown
Added onCancelNew prop to HistoryPanel so the Cancel button in the
new-conversation confirmation properly closes the history panel instead
of only clearing pendingId (which had no effect).
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* feat: active state indicator for current conversation in history panel
ConversationItem now accepts an isActive prop that renders a primary-tinted
background, left border accent, and bold title for the currently open chat.
Includes aria-current for accessibility.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* feat: replace message count with relative timestamps in history panel
Conversation items now show "just now", "2m ago", "5h ago", etc. instead
of message counts. Also fixes groupByDate and formatRelativeTime to use
milliseconds matching the backend's now_millis() storage format.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* fix: code review — coverage gap and stale JSDoc comments
- Add App-level test for onCancelNew callback (restores 100% coverage)
- Fix stale JSDoc: ConversationItem "message count" → "relative timestamp"
- Fix stale JSDoc: HistoryPanel prop comments to match new button labels
- Fix stale JSDoc: types/history.ts updated_at "seconds" → "milliseconds"
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
---------
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
quiet-node
added a commit
that referenced
this pull request
Apr 11, 2026
* fix: dynamic SwitchConfirmation labels and hide search for new conversation
The SwitchConfirmation component now accepts a variant prop ("switch" | "new")
to display context-appropriate titles and button labels. The "+" button dropdown
hides the search box and shows "New conversation?" / "Save & Start New" /
"Start New" instead of the generic switch wording.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* fix: Cancel button in new-conversation SwitchConfirmation now closes dropdown
Added onCancelNew prop to HistoryPanel so the Cancel button in the
new-conversation confirmation properly closes the history panel instead
of only clearing pendingId (which had no effect).
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* feat: active state indicator for current conversation in history panel
ConversationItem now accepts an isActive prop that renders a primary-tinted
background, left border accent, and bold title for the currently open chat.
Includes aria-current for accessibility.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* feat: replace message count with relative timestamps in history panel
Conversation items now show "just now", "2m ago", "5h ago", etc. instead
of message counts. Also fixes groupByDate and formatRelativeTime to use
milliseconds matching the backend's now_millis() storage format.
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
* fix: code review — coverage gap and stale JSDoc comments
- Add App-level test for onCancelNew callback (restores 100% coverage)
- Fix stale JSDoc: ConversationItem "message count" → "relative timestamp"
- Fix stale JSDoc: HistoryPanel prop comments to match new button labels
- Fix stale JSDoc: types/history.ts updated_at "seconds" → "milliseconds"
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
---------
Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
This was referenced Apr 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
aria-currentfor accessibility)Test plan
validate-buildpasses (lint + format + typecheck + build)🤖 Generated with Claude Code