Repository navigation
Conversation
There was a problem hiding this comment.
Pull request overview
This PR scaffolds the TalkTerm Electron (Forge + Vite) application and establishes the initial shared domain/port types, renderer UI components (setup + overlay/display primitives), speech adapters, and CI/tooling configuration.
Changes:
- Add project build/test/tooling configuration (Vite configs, TS strict config, ESLint/Prettier/Husky, Vitest + coverage, Tailwind/PostCSS, GitHub Actions).
- Introduce shared domain + port types (sessions, writeback, IPC envelopes/channels, agent events/errors, value objects).
- Implement initial renderer components/hooks and main-process stubs/utilities with accompanying unit tests.
Reviewed changes
Copilot reviewed 147 out of 162 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| vitest.config.ts | Adds Vitest configuration with coverage thresholds. |
| vite.renderer.config.ts | Configures PostCSS pipeline for the renderer build. |
| vite.preload.config.ts | Adds preload Vite config placeholder. |
| vite.main.config.ts | Adds main-process Vite resolution settings. |
| tsconfig.json | Enables strict TypeScript options and path mapping. |
| test/setup-renderer.ts | Adds Testing Library jest-dom matchers for Vitest. |
| tailwind.config.ts | Defines design tokens (colors/type/spacing) for Tailwind. |
| src/shared/types/ports/text-to-speech.ts | Defines TextToSpeech port contract. |
| src/shared/types/ports/speech-to-text.ts | Defines SpeechToText port contract. |
| src/shared/types/ports/agent-backend.ts | Defines AgentBackend port + session config. |
| src/shared/types/ports/.gitkeep | Keeps ports directory in VCS. |
| src/shared/types/domain/writeback.ts | Adds writeback target types + default selection by origin. |
| src/shared/types/domain/writeback.test.ts | Tests default writeback selection. |
| src/shared/types/domain/value-objects.ts | Adds branded value objects + constructors. |
| src/shared/types/domain/value-objects.test.ts | Tests value-object validation. |
| src/shared/types/domain/user-profile.ts | Adds UserProfile type + factory. |
| src/shared/types/domain/user-profile.test.ts | Tests UserProfile factory behavior. |
| src/shared/types/domain/session.ts | Adds Session type + factory. |
| src/shared/types/domain/session.test.ts | Tests Session factory behavior. |
| src/shared/types/domain/project.test.ts | Sanity tests for TS strictness flags. |
| src/shared/types/domain/preference.ts | Adds preference threshold utilities/constants. |
| src/shared/types/domain/preference.test.ts | Tests preference threshold logic. |
| src/shared/types/domain/launch-state.ts | Adds setup-step routing helper. |
| src/shared/types/domain/launch-state.test.ts | Tests setup-step routing priority. |
| src/shared/types/domain/ipc-message.ts | Adds IPC message envelope + factory. |
| src/shared/types/domain/ipc-message.test.ts | Tests IPC message factory timestamping. |
| src/shared/types/domain/ipc-channels.ts | Defines canonical IPC channel constants + type. |
| src/shared/types/domain/ipc-channels.test.ts | Tests channel naming + uniqueness. |
| src/shared/types/domain/electron-api.ts | Declares preload bridge contract type for renderer. |
| src/shared/types/domain/avatar-persona.ts | Adds MVP persona roster. |
| src/shared/types/domain/avatar-persona.test.ts | Tests persona roster shape/uniqueness. |
| src/shared/types/domain/audit-entry.ts | Adds AuditEntry type + factory. |
| src/shared/types/domain/audit-entry.test.ts | Tests AuditEntry factory behavior. |
| src/shared/types/domain/api-key-state.ts | Defines API key state + validation result types. |
| src/shared/types/domain/agent-event.ts | Adds AgentEvent union for streaming events. |
| src/shared/types/domain/agent-error.ts | Adds error classification + user-friendly messaging. |
| src/shared/types/domain/agent-error.test.ts | Tests error classification and message safety. |
| src/shared/types/domain/.gitkeep | Keeps domain directory in VCS. |
| src/renderer/types/web-speech.d.ts | Adds Web Speech API window typings. |
| src/renderer/types/.gitkeep | Keeps renderer types directory in VCS. |
| src/renderer/styles/global.css | Adds Tailwind directives + global font/body styles. |
| src/renderer/speech/web-speech-tts.ts | Implements TTS adapter using Web Speech API. |
| src/renderer/speech/web-speech-tts.test.ts | Tests WebSpeechTts behavior under jsdom mocks. |
| src/renderer/speech/web-speech-stt.ts | Implements STT adapter using Web Speech API. |
| src/renderer/speech/web-speech-stt.test.ts | Tests WebSpeechStt behavior under jsdom mocks. |
| src/renderer/speech/barge-in-controller.ts | Adds barge-in state controller (TTS stop + STT start). |
| src/renderer/speech/barge-in-controller.test.ts | Tests barge-in state transitions and calls. |
| src/renderer/speech/.gitkeep | Keeps speech directory in VCS. |
| src/renderer/renderer.tsx | Adds React entrypoint mounting App. |
| src/renderer/hooks/useLayoutState.ts | Adds reducer-driven layout mode hook. |
| src/renderer/hooks/useLayoutState.test.ts | Tests layout mode transitions. |
| src/renderer/hooks/useDisplayMode.ts | Adds display-mode selection state hook. |
| src/renderer/hooks/useDisplayMode.test.ts | Tests display-mode state updates. |
| src/renderer/hooks/useAvatarState.ts | Adds avatar animation-state reducer hook. |
| src/renderer/hooks/useAvatarState.test.ts | Tests avatar state transitions. |
| src/renderer/hooks/.gitkeep | Keeps hooks directory in VCS. |
| src/renderer/context/.gitkeep | Keeps context directory in VCS. |
| src/renderer/components/setup/WorkspaceSelection.tsx | Adds workspace selection UI. |
| src/renderer/components/setup/WorkspaceSelection.test.tsx | Tests workspace selection callbacks. |
| src/renderer/components/setup/ProfileSetup.tsx | Adds profile setup UI. |
| src/renderer/components/setup/ProfileSetup.test.tsx | Tests profile setup interactions. |
| src/renderer/components/setup/AvatarSelection.tsx | Adds avatar selection UI using MVP personas. |
| src/renderer/components/setup/AvatarSelection.test.tsx | Tests avatar selection callback. |
| src/renderer/components/setup/ApiKeySetup.tsx | Adds API key entry/validation UI (stub validation). |
| src/renderer/components/setup/ApiKeySetup.test.tsx | Tests API key setup basic rendering. |
| src/renderer/components/setup/AdminBlockScreen.tsx | Adds blocking admin-privileges screen UI. |
| src/renderer/components/setup/AdminBlockScreen.test.tsx | Tests admin block screen rendering and buttons. |
| src/renderer/components/overlay/ActionPanel.tsx | Adds action panel container (listbox) UI. |
| src/renderer/components/overlay/ActionPanel.test.tsx | Tests action panel rendering and selection. |
| src/renderer/components/overlay/ActionCard.tsx | Adds action card UI with option semantics. |
| src/renderer/components/overlay/ActionCard.test.tsx | Tests action card semantics and interactions. |
| src/renderer/components/display/TaskProgress.tsx | Adds task progress display mode. |
| src/renderer/components/display/TaskProgress.test.tsx | Tests task progress rendering. |
| src/renderer/components/display/DocumentView.tsx | Adds basic document display mode. |
| src/renderer/components/display/DocumentView.test.tsx | Tests document rendering/path display. |
| src/renderer/components/display/ComparisonTable.tsx | Adds comparison table display mode. |
| src/renderer/components/display/ComparisonTable.test.tsx | Tests comparison table expand behavior. |
| src/renderer/components/display/ClusteredCards.tsx | Adds clustered cards display mode. |
| src/renderer/components/display/ClusteredCards.test.tsx | Tests clustered cards expand/priority tags. |
| src/renderer/components/display/ActivityFeed.tsx | Adds activity feed display mode. |
| src/renderer/components/display/ActivityFeed.test.tsx | Tests activity feed visibility/rendering. |
| src/renderer/components/avatar/TextInput.tsx | Adds text input w/ Enter-to-send and mic button. |
| src/renderer/components/avatar/TextInput.test.tsx | Tests text input send/newline/mic behavior. |
| src/renderer/components/avatar/StatusIndicator.tsx | Adds avatar status pill. |
| src/renderer/components/avatar/StatusIndicator.test.tsx | Tests status pill rendering and role=status. |
| src/renderer/components/avatar/CaptionBar.tsx | Adds caption bar w/ delayed hide logic. |
| src/renderer/components/avatar/CaptionBar.test.tsx | Tests caption bar basic rendering conditions. |
| src/renderer/components/.gitkeep | Keeps components directory in VCS. |
| src/renderer/App.tsx | Adds minimal App shell. |
| src/preload/preload.ts | Adds preload bridge stub via contextBridge. |
| src/main/storage/.gitkeep | Keeps storage directory in VCS. |
| src/main/security/admin-check.ts | Adds admin privilege check helper + instructions. |
| src/main/security/admin-check.test.ts | Tests admin privilege check across platforms. |
| src/main/security/.gitkeep | Keeps security directory in VCS. |
| src/main/main.ts | Adds Electron main window creation and lifecycle wiring. |
| src/main/ipc/.gitkeep | Keeps IPC directory in VCS. |
| src/main/agent/fake-agent-backend.ts | Adds FakeAgentBackend test double. |
| src/main/agent/fake-agent-backend.test.ts | Tests FakeAgentBackend event streaming/cancel. |
| src/main/agent/agent-message-router.ts | Adds router forwarding backend events to handler. |
| src/main/agent/agent-message-router.test.ts | Tests router event forwarding and cancel. |
| src/main/agent/.gitkeep | Keeps agent directory in VCS. |
| postcss.config.js | Adds PostCSS config for Tailwind/autoprefixer. |
| package.json | Adds dependencies, scripts, lint-staged config. |
| index.html | Adds renderer entry HTML. |
| forge.config.ts | Configures Electron Forge + Vite plugin + makers. |
| eslint.config.mjs | Adds ESLint flat config with strict TS + React rules. |
| .prettierrc | Adds Prettier config. |
| .prettierignore | Adds Prettier ignore rules. |
| .husky/pre-commit | Adds pre-commit quality gate commands. |
| .gitignore | Adds repo ignore rules (build artifacts/coverage). |
| .github/workflows/release.yml | Adds release workflow for tag builds. |
| .github/workflows/ci.yml | Adds CI workflow with 3-OS matrix quality gates. |
| _bmad-output/implementation-artifacts/*.md | Adds planning/implementation artifacts for stories. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
|
Auto-rebase failed — merge conflict — this branch has conflicts with Please resolve the conflicts and push: |
|
@claude Please address all open review comments on this PR from CodeRabbit and Copilot. |
|
Claude finished @don-petry's task in 5m 30s —— View job Addressing Open Review CommentsFinding: All 7 Copilot review items were already addressed in prior commits (the PR has 36 commits made after the review was posted). One gap remained: Tasks
What was committed (
Cannot address (GitHub App permissions restrict
|
dddc998 to
11dd524
Compare
Pull request was converted to draft
|
@dev-lead - please fix this PR |
|
Auto-rebase failed — merge conflict — this branch has conflicts with dev-lead will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |
|
Auto-rebase failed — merge conflict — this branch has conflicts with dev-lead will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |
|
Auto-rebase failed — merge conflict — this branch has conflicts with dev-lead will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |
|
Auto-rebase failed — merge conflict — this branch has conflicts with dev-lead will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |
|
Auto-rebase failed — merge conflict — this branch has conflicts with dev-lead will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |
|
Auto-rebase failed — merge conflict — this branch has conflicts with dev-lead will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |
The org was renamed to combsmith; GitHub Actions does not redirect uses: after a rename. Same rewrite as the org cutover, nothing else. This branch still conflicts with main for reasons unrelated to the rename.
Restores every other file to this branch's previous content, so the PR diff stays this PR's own change; its petry-projects references stay rewritten to combsmith.
Restores every other file to this branch's previous content, so the PR diff stays this PR's own change; its petry-projects references stay rewritten to combsmith.
|
Auto-rebase failed — merge conflict — this branch has conflicts with dev-lead will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |
|
Auto-rebase failed — merge conflict — this branch has conflicts with dev-lead will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |
|
CI Failure: SonarCloud Code AnalysisStep: SonarCloud Quality Gate (static analysis) The quality gate failed on two conditions: 4.5% duplication on new code (required ≤ 3%) and a C Reliability Rating on new code (required ≥ A). The reliability failure is annotated as a failure-level issue at Suggested fix: Open the failure-level issue at |
|
Auto-rebase failed — merge conflict — this branch has conflicts with dev-lead will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |
|
Auto-rebase failed — merge conflict — this branch has conflicts with dev-lead will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |
|
Auto-rebase failed — merge conflict — this branch has conflicts with dev-lead will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |




Summary
Commits (stacked)
docs:Spec updates — PRD v2.4 (FR57-FR62), UX spec v1.3 (Journey 7), Epics (Epic 13 stories), Sprint statusfeat:Epic 13 implementation — question-parser.ts, QuestionCardStack, QuestionReview, SuggestionChips, E2E testsfeat:Epic 14 implementation — sherpa-onnx-node adapter, IPC audio pipeline, mic permission handlersNew Files
src/shared/types/domain/question-parser.tssrc/renderer/components/session/QuestionCardStack.tsxsrc/renderer/components/session/QuestionReview.tsxsrc/renderer/components/session/SuggestionChips.tsxsrc/main/speech/sherpa-onnx-stt.tssrc/main/ipc/speech-ipc-handler.tssrc/renderer/speech/ipc-speech-stt.tsTest plan
🤖 Generated with Claude Code