Repository navigation
feat: Epic 13 (Structured Questions) + Epic 14 (Native STT) - #8
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 Review skippedToo many files! This PR contains 216 files, which is 116 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.
|
|
|
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 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6d3401c757
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
… restore session after key recovery, and keep raw table values
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 611398e2ac
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…op, preserve escaped table pipes, and require SDK session ID for continue
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6dfac483c8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
… admin retry, and preserve snake_case in stripMarkdown
CI Failure: SonarCloud Code AnalysisStep: SonarCloud Quality Gate (static analysis on new code) The quality gate failed on the condition "Reliability Rating on New Code" (C, required ≥ A). The check annotations point to three issues in Suggested fix: Open the three issues linked from the SonarCloud PR dashboard for |
…loud quality gate
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c83b940c39
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…ogress, and remove inherited API key in subscription mode
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5b634ec90d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…es, validate workspace dirs, and stop STT on window close
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 13f74df651
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
CI Failure: SonarCloudStep: SonarCloud quality gate (static analysis) SonarCloud reported 1 new high-severity security alert: "I/O function calls should not be vulnerable to path injection attacks" (Path Traversal via unsanitized user input) at Suggested fix: In |
CI Failure: SonarCloud Code AnalysisStep: Quality Gate (Security Rating on New Code) The SonarCloud quality gate failed because the Security Rating on New Code is E (required ≥ A). Sonar flagged an issue at Suggested fix: Open the flagged issue, read the rule at |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c77243a630
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…e, cancelled tool status, and S2083
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
|
Advisory bots were rate-limited; auto-approval is withheld until they recover. pr-review-sweep will re-review this PR after 2026-10-30T03:44:33Z. |
Dismissing approval due to a PR issue comment lacking a verified disposition (#1813)







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