feat: conversation history frontend - #19
Merged
Merged
Conversation
Add HistoryPanel, ConversationItem, SwitchConfirmation components, useConversationHistory hook, and history types. Integrate history entry point into AskBarView and ConversationView. Wire up full test coverage and update mocks/vitest config to support new Tauri command surface (list_conversations, load_conversation, delete_conversation, save_conversation, generate_title). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
- handleDeleteConversation now calls reset() to clear messages when the active conversation is deleted, preventing stale chat state in ask-bar mode - all async history handlers (handleSave, handleLoadConversation, handleSaveAndLoad, handleDeleteConversation) wrapped in try/catch to prevent unhandled promise rejections from crashing the UI - HistoryPanel.handleDelete made async with snapshot-based rollback: if onDeleteConversation rejects, the item is restored to its original sort position in the list 233 tests, 100% coverage, validate-build clean. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com>
quiet-node
force-pushed
the
worktree-foamy-wiggling-scott
branch
from
April 3, 2026 05:03
da78072 to
849ac6e
Compare
Bundle grew to 833 kB after adding streamdown + history panel deps. Raise the threshold to suppress the spurious build warning. Co-Authored-By: Claude Sonnet 4.6 <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
* feat: conversation history frontend — milestone 1 Add HistoryPanel, ConversationItem, SwitchConfirmation components, useConversationHistory hook, and history types. Integrate history entry point into AskBarView and ConversationView. Wire up full test coverage and update mocks/vitest config to support new Tauri command surface (list_conversations, load_conversation, delete_conversation, save_conversation, generate_title). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com> * fix: three bugs in conversation history handlers - handleDeleteConversation now calls reset() to clear messages when the active conversation is deleted, preventing stale chat state in ask-bar mode - all async history handlers (handleSave, handleLoadConversation, handleSaveAndLoad, handleDeleteConversation) wrapped in try/catch to prevent unhandled promise rejections from crashing the UI - HistoryPanel.handleDelete made async with snapshot-based rollback: if onDeleteConversation rejects, the item is restored to its original sort position in the list 233 tests, 100% coverage, validate-build clean. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com> * chore: raise Vite chunkSizeWarningLimit to 900 kB Bundle grew to 833 kB after adding streamdown + history panel deps. Raise the threshold to suppress the spurious build warning. Co-Authored-By: Claude Sonnet 4.6 <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
* feat: conversation history frontend — milestone 1 Add HistoryPanel, ConversationItem, SwitchConfirmation components, useConversationHistory hook, and history types. Integrate history entry point into AskBarView and ConversationView. Wire up full test coverage and update mocks/vitest config to support new Tauri command surface (list_conversations, load_conversation, delete_conversation, save_conversation, generate_title). Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com> * fix: three bugs in conversation history handlers - handleDeleteConversation now calls reset() to clear messages when the active conversation is deleted, preventing stale chat state in ask-bar mode - all async history handlers (handleSave, handleLoadConversation, handleSaveAndLoad, handleDeleteConversation) wrapped in try/catch to prevent unhandled promise rejections from crashing the UI - HistoryPanel.handleDelete made async with snapshot-based rollback: if onDeleteConversation rejects, the item is restored to its original sort position in the list 233 tests, 100% coverage, validate-build clean. Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com> * chore: raise Vite chunkSizeWarningLimit to 900 kB Bundle grew to 833 kB after adding streamdown + history panel deps. Raise the threshold to suppress the spurious build warning. 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
* feat: conversation history frontend — milestone 1 Add HistoryPanel, ConversationItem, SwitchConfirmation components, useConversationHistory hook, and history types. Integrate history entry point into AskBarView and ConversationView. Wire up full test coverage and update mocks/vitest config to support new Tauri command surface (list_conversations, load_conversation, delete_conversation, save_conversation, generate_title). Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com> * fix: three bugs in conversation history handlers - handleDeleteConversation now calls reset() to clear messages when the active conversation is deleted, preventing stale chat state in ask-bar mode - all async history handlers (handleSave, handleLoadConversation, handleSaveAndLoad, handleDeleteConversation) wrapped in try/catch to prevent unhandled promise rejections from crashing the UI - HistoryPanel.handleDelete made async with snapshot-based rollback: if onDeleteConversation rejects, the item is restored to its original sort position in the list 233 tests, 100% coverage, validate-build clean. Signed-off-by: Logan Nguyen <lg.131.dev@gmail.com> * chore: raise Vite chunkSizeWarningLimit to 900 kB Bundle grew to 833 kB after adding streamdown + history panel deps. Raise the threshold to suppress the spurious build warning. 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
HistoryPanelcomponent with debounced search, date-grouped conversation list, optimistic delete, and switch confirmationConversationItemandSwitchConfirmationcomponentsuseConversationHistoryhook wiringsave_conversation,persist_message,list_conversations,load_conversation,delete_conversation,generate_titleTauri commandstypes/history.tsshared typesAskBarView(compact clock icon),ConversationViewheader, andWindowControlsDepends on: #18 (SQLite persistence backend)
Test plan
bun run test:allpasses with 100% coverage🤖 Generated with Claude Code