Conversation
added 11 commits
February 6, 2026 22:34
- Add persistent Chat button in left pane (below agents header) - ChatView component with streaming message display - CenterPane/RightPane switch based on viewMode (agents vs chat) - CopilotService wrapping @github/copilot-sdk in main process - IPC bridge for streaming chat (copilot:send/chunk/done/error) - New state: viewMode, chatMessages, chatLoading with reducer actions - All 189 tests passing across 16 suites
Webpack's CJS bundle can't require() an ESM-only package.
Use new Function('return import(...)') to bypass webpack's
module resolution and let Node.js handle the ESM import at runtime.
- Replace send() + session.idle listener with sendAndWait() - Properly unsubscribe delta handler after response completes - Fallback to full response content if no streaming deltas received - Await sendMessage in IPC handler for proper error propagation
- Add ConversationService for CRUD on individual JSON files in userData/conversations/ - Refactor CopilotService to support multiple SDK sessions (one per conversation) - Add conversation IPC handlers (list/load/save/delete/rename) - Extend AppState with conversations list, activeConversationId, and new reducer actions - Update ChatView to auto-create conversations on first message and save on completion - Replace RightPane placeholder with full conversation list UI (new/switch/rename/delete) - Restore conversation list and active conversation on app restart - Migrate SessionService to v3 with activeConversationId - Update README with Copilot Chat feature documentation
- Add model picker dropdown below chat textarea (shows 'ModelName ▾') - Fetch available models from Copilot SDK via new listModels() API - Per-conversation model selection, persisted in conversation JSON files - Recreate SDK session when model changes mid-conversation - New conversations default to last-used model (stored in localStorage) - Restore model selection when switching conversations or on app restart - Disable picker during streaming to prevent race conditions
- Toggle between send icon (idle) and stop-circle icon (streaming) - Stop button cancels in-flight SDK request via session.abort() - Textarea stays enabled during streaming for type-ahead - Stop button has red accent hover styling - Add copilot:stop IPC channel and preload API - Add Copilot Chat screenshot to README
- Downgrade no-empty-function and no-inferrable-types to warnings - Fix invalid eslint-disable-line rule reference in ChatView
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 integrated GitHub Copilot chat to Vibe Playground using
@github/copilot-sdk.Features
Technical Details
session.abort()used for cancellation with AbortController gating callbacksactiveConversationId