Skip to content

feat(vscode): editor-theme design system, config hub, and host UX - #48

Merged
elkaix merged 3 commits into
mainfrom
feat/vscode-design-overhaul
Aug 9, 2026
Merged

feat(vscode): editor-theme design system, config hub, and host UX#48
elkaix merged 3 commits into
mainfrom
feat/vscode-design-overhaul

Conversation

@elkaix

@elkaix elkaix commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Related Issue

No linked issue — the problem is explained below.

Problem

The VS Code extension UI did not follow the editor color theme: it shipped a fixed dark palette with a bundled font, so light and high-contrast themes rendered incorrectly. Composer controls (permission mode, plan mode, thinking effort) were separate buttons that overlapped at narrow sidebar widths. Configuration was fragmented across three separate modals with no way to inspect the local config file or MCP connections. Host integration was minimal: no status bar presence, no code actions, no terminal/editor context menus, and long conversations rendered every message at once.

What changed

  • Editor-theme design system. The webview token layer now derives every semantic color from --vscode-* variables via Tailwind @theme inline, with Dark+ fallbacks. Light, dark, and both high-contrast themes work with zero runtime theme detection; the only JS consumer is a single useIsDark hook backed by the host-maintained body classes. The bundled Inter font and the hardcoded .dark palette are removed.
  • Config hub. One page (rail + sections) replaces the three modals: models, providers, MCP servers, a read-only view of the local config.toml (with an open-in-editor action), and extension settings. Adapts to narrow sidebar widths.
  • Consolidated composer menu. Permission mode, plan mode, and thinking effort live in a single popover; approval prompts answer to number keys. Fixes the control overlap at narrow widths.
  • Host integrations. Status bar indicator with activity count, quick-fix code actions, terminal and editor context menu entries, a getting-started walkthrough, and a new-conversation keybinding.
  • Chat fixes. Long conversations render through a virtualized list (react-virtuoso, bottom-anchored); sign-out works from the command palette.
  • Dependency hygiene. Removed @fontsource-variable/inter and react-scroll-to-bottom; bumped @vscode/test-electron to ^3.1.0 (VS Code ≥ 1.132 renamed the macOS binary, which broke the extension-host smoke test).

This approach fits the extension because VS Code already maintains the theme contract (--vscode-* variables and body classes) — deriving from it removes an entire parallel theming system instead of maintaining one.

Verified locally: typecheck (tsc + tsgo, both tsconfigs), build, all 338 existing tests, type-aware lint, VSIX packaging audit, and an extension-host smoke test that activates the extension and opens the webview.

Checklist

  • I have read the CONTRIBUTING document.
  • I have linked a related issue, or explained the problem above.
  • I have added tests that prove my feature works. (No new tests — this is UI/theming work; all 338 existing tests pass and the VSIX audit + extension-host smoke test cover activation.)
  • Ran gen-changesets skill, or this PR needs no changeset.
  • Ran gen-docs skill, or this PR needs no doc update. (Extension is a private package; no docs affected.)

Summary by CodeRabbit

  • New Features
    • Added a unified configuration hub for models, providers, MCP servers, local configuration, and extension settings.
    • Added composer controls for permission, plan, and thinking modes.
    • Added VS Code integrations for terminal selections, quick fixes, context menus, walkthroughs, shortcuts, and status indicators.
    • Added conversation sorting, grouping, recent-session shortcuts, and context-usage visibility.
  • Bug Fixes
    • Improved long-conversation performance and fixed narrow-sidebar control overlap.
    • Enhanced approval and question dialogs with keyboard navigation and pending-request indicators.
  • Style
    • Improved light, dark, and high-contrast theme support across the interface.

elkaix added 2 commits August 9, 2026 13:09
Adopt the Cline-inspired design across the VS Code extension:
- Webview theme derives every token from --vscode-* variables
  (dark/light/high-contrast); hardcoded palette classes removed.
- Config hub: full-page view with overview, models, providers, MCP,
  raw config.toml viewer (new GetConfigInfo RPC), and settings.
- Composer: single mode menu (permissions, plan, thinking effort);
  approval/question dialogs gain real keyboard shortcuts.
- Chat: react-virtuoso list, token/context indicators, welcome screen
  with recent sessions; history grouped by date with search highlight.
- Host: status bar item, view badge, code actions, terminal/editor
  context menus, walkthrough, real logout, cmd+alt+n keybinding.
- Deps: drop @fontsource-variable/inter and react-scroll-to-bottom,
  add react-virtuoso, bump @vscode/test-electron for VS Code 1.132.
@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 59be94bc-62a6-4920-b49d-590b422a9deb

📥 Commits

Reviewing files that changed from the base of the PR and between e131e66 and 16ba9d6.

📒 Files selected for processing (7)
  • apps/vscode/src/integrations/chat-context.ts
  • apps/vscode/webview-ui/src/components/ApprovalDialog.tsx
  • apps/vscode/webview-ui/src/components/ChatStatus.tsx
  • apps/vscode/webview-ui/src/components/QuestionDialog.tsx
  • apps/vscode/webview-ui/src/components/SessionList.tsx
  • apps/vscode/webview-ui/src/components/WelcomeScreen.tsx
  • apps/vscode/webview-ui/src/components/confighub/ConfigFileSection.tsx
💤 Files with no reviewable changes (1)
  • apps/vscode/webview-ui/src/components/WelcomeScreen.tsx
🚧 Files skipped from review as they are similar to previous changes (6)
  • apps/vscode/webview-ui/src/components/ApprovalDialog.tsx
  • apps/vscode/webview-ui/src/components/confighub/ConfigFileSection.tsx
  • apps/vscode/webview-ui/src/components/QuestionDialog.tsx
  • apps/vscode/src/integrations/chat-context.ts
  • apps/vscode/webview-ui/src/components/SessionList.tsx
  • apps/vscode/webview-ui/src/components/ChatStatus.tsx

📝 Walkthrough

Walkthrough

The VS Code extension adds host commands, activity indicators, chat-context actions, logout handling, and a unified configuration hub. The webview adds composer controls, virtualized chat rendering, session history features, context usage details, and VS Code theme-aware styling.

Changes

VS Code extension and host integrations

Layer / File(s) Summary
Commands, activity, and authentication
apps/vscode/package.json, apps/vscode/src/extension.ts, apps/vscode/src/activity.ts, apps/vscode/src/handlers/*, apps/vscode/src/runtime/reverse-rpc.ts
Adds terminal-selection commands, a new-conversation shortcut, activity tracking, status-bar activity, sidebar approval badges, logout handling, stream tracking, and approval tracking.
Chat context and walkthroughs
apps/vscode/src/integrations/chat-context.ts, apps/vscode/walkthrough/*, .changeset/*
Adds editor quick fixes, file and terminal insertion, onboarding walkthroughs, and release notes for the extension changes.

Configuration hub

Layer / File(s) Summary
Configuration contracts and bridge
apps/vscode/shared/*, apps/vscode/src/handlers/config.handler.ts, apps/vscode/webview-ui/src/services/bridge.ts
Adds ConfigInfo, the getConfigInfo RPC, raw configuration-file retrieval, and model context-window data.
Unified hub state and rendering
apps/vscode/webview-ui/src/stores/settings.store.ts, apps/vscode/webview-ui/src/App.tsx, apps/vscode/webview-ui/src/components/confighub/*
Replaces separate configuration modals with a section-based hub for overview, models, providers, MCP servers, config files, and settings.

Composer and chat experience

Layer / File(s) Summary
Unified composer and approval controls
apps/vscode/webview-ui/src/components/ComposerModeMenu.tsx, apps/vscode/webview-ui/src/components/inputarea/*, apps/vscode/webview-ui/src/components/ApprovalDialog.tsx, apps/vscode/webview-ui/src/components/QuestionDialog.tsx
Combines permission, plan, and thinking controls, removes manual textarea resizing, and adds keyboard-driven approval and question interactions.
Chat rendering and status details
apps/vscode/webview-ui/src/components/ChatArea.tsx, apps/vscode/webview-ui/src/components/ChatMessage.tsx, apps/vscode/webview-ui/src/components/ChatStatus.tsx, apps/vscode/webview-ui/src/components/DisplayBlocks.tsx, apps/vscode/webview-ui/src/components/ToolRenderers.tsx
Adds virtualized message rendering, streaming-tail handling, shell-block rendering, token usage details, and updated message layout.
Session and welcome experience
apps/vscode/webview-ui/src/components/SessionList.tsx, apps/vscode/webview-ui/src/components/WelcomeScreen.tsx, apps/vscode/webview-ui/src/hooks/useWelcomeHint.tsx, apps/vscode/webview-ui/src/lib/format.ts
Adds grouped and sortable session history, search highlighting, recent-session loading, stable welcome hints, and relative date formatting.

Theme-aware webview styling

Layer / File(s) Summary
VS Code theme foundation
apps/vscode/webview-ui/src/styles/index.css, apps/vscode/webview-ui/src/hooks/useIsDark.ts, apps/vscode/webview-ui/src/main.tsx
Maps webview colors and typography to VS Code theme variables, centralizes dark-theme detection, and removes document-level theme synchronization.
Shared component styling
apps/vscode/webview-ui/src/components/ui/*, apps/vscode/webview-ui/src/components/*.tsx
Replaces fixed palette classes with semantic theme tokens across controls, notifications, content blocks, and status indicators.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Title check ⚠️ Warning The title uses the required prefix, length, and topic, but it is a noun phrase rather than an imperative statement. Rewrite the subject in imperative mood while keeping the feat(vscode) prefix and 72-character limit.
Docstring Coverage ⚠️ Warning Docstring coverage is 5.26% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Description check ✅ Passed The description includes all required sections, explains the problem and changes, and documents verification and checklist exceptions.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Comment @coderabbitai help to get the list of available commands.

@pkg-pr-new

pkg-pr-new Bot commented Aug 9, 2026

Copy link
Copy Markdown
pnpm dlx https://pkg.pr.new/@pythoughts/pythinker-code@16ba9d6
npx https://pkg.pr.new/@pythoughts/pythinker-code@16ba9d6

commit: 16ba9d6

Comment thread apps/vscode/src/extension.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/vscode/src/runtime/reverse-rpc.ts (1)

33-37: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use decision-neutral activity text for question requests.

requestQuestion increments pendingApprovals. When only a question is pending, the status bar and sidebar say that an approval is needed. Rename the shared state to a decision-neutral term, or track questions separately.

  • apps/vscode/src/runtime/reverse-rpc.ts#L33-L37: Track questions with the decision-neutral state.
  • apps/vscode/src/runtime/reverse-rpc.ts#L72-L78: Decrement the matching question state.
  • apps/vscode/src/activity.ts#L8-L10: Rename pendingApprovals to match both request types.
  • apps/vscode/src/extension.ts#L67-L84: Use decision-neutral status text and tooltips.
  • apps/vscode/src/PythinkerWebviewProvider.ts#L72-L84: Use decision-neutral badge tooltips.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/vscode/src/runtime/reverse-rpc.ts` around lines 33 - 37, Rename the
shared pending-approval state to a decision-neutral name and update all related
usage: in apps/vscode/src/runtime/reverse-rpc.ts lines 33-37 increment it for
requestQuestion and lines 72-78 decrement the matching question state; in
apps/vscode/src/activity.ts lines 8-10 rename pendingApprovals; in
apps/vscode/src/extension.ts lines 67-84 use decision-neutral status text and
tooltips; and in apps/vscode/src/PythinkerWebviewProvider.ts lines 72-84 use
decision-neutral badge tooltips.
🧹 Nitpick comments (6)
apps/vscode/webview-ui/src/components/PythinkerMascot.tsx (1)

3-3: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use the repository-preferred import alias.

This import uses @/hooks/useIsDark. Replace it with #/hooks/useIsDark to follow the TypeScript import convention.

As per coding guidelines, prefer #/... over the equivalent @/... alias.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/vscode/webview-ui/src/components/PythinkerMascot.tsx` at line 3, Update
the useIsDark import in PythinkerMascot to use the repository-preferred
`#/hooks/useIsDark` alias instead of `@/hooks/useIsDark`, leaving its usage
unchanged.

Source: Coding guidelines

apps/vscode/webview-ui/src/components/confighub/sections.ts (1)

9-9: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use the #/ alias for new Config Hub imports.

The new files use @/ imports. Use the preferred #/ alias consistently.

  • apps/vscode/webview-ui/src/components/confighub/sections.ts#L9-L9: change the settings-store import to #/stores/settings.store.
  • apps/vscode/webview-ui/src/components/confighub/ConfigFileSection.tsx#L3-L4: change component and service imports to #/.
  • apps/vscode/webview-ui/src/components/confighub/ConfigHub.tsx#L2-L6: change component, store, service, and utility imports to #/.
  • apps/vscode/webview-ui/src/components/confighub/OverviewSection.tsx#L1-L2: change component and store imports to #/.

As per coding guidelines, “Use import ... from '#/...' in preference to the equivalent @/... alias.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/vscode/webview-ui/src/components/confighub/sections.ts` at line 9,
Replace the new Config Hub `@/` aliases with the preferred `#/` aliases: update
the settings-store import in
apps/vscode/webview-ui/src/components/confighub/sections.ts (line 9), component
and service imports in ConfigFileSection.tsx (lines 3-4), component, store,
service, and utility imports in ConfigHub.tsx (lines 2-6), and component and
store imports in OverviewSection.tsx (lines 1-2); no other changes are needed.

Source: Coding guidelines

apps/vscode/src/handlers/config.handler.ts (1)

12-12: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Move the type alias below the import list.

type SdkConfig = any appears before this import. Oxlint reports import(first) for this file.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/vscode/src/handlers/config.handler.ts` at line 12, Move the SdkConfig
type alias below the complete import list in config.handler.ts, keeping the
existing alias unchanged and ensuring all imports remain first in the file to
satisfy oxlint's import(first) rule.

Source: Linters/SAST tools

apps/vscode/webview-ui/src/components/ComposerModeMenu.tsx (1)

3-5: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use the #/ alias for internal imports.

Replace changed @/ imports with the equivalent #/ imports.

  • apps/vscode/webview-ui/src/components/ComposerModeMenu.tsx#L3-L5: replace the three internal @/ imports.
  • apps/vscode/webview-ui/src/components/DisplayBlocks.tsx#L7-L7: replace the @/hooks/useIsDark import.
  • apps/vscode/webview-ui/src/components/SessionList.tsx#L4-L11: replace the internal @/ imports and retain package imports unchanged.

As per coding guidelines: “Use import ... from '#/...' in preference to the equivalent @/... alias.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/vscode/webview-ui/src/components/ComposerModeMenu.tsx` around lines 3 -
5, Replace the internal `@/` imports with equivalent `#/` imports in
ComposerModeMenu.tsx (lines 3-5), DisplayBlocks.tsx (line 7), and
SessionList.tsx (lines 4-11); leave SessionList.tsx package imports unchanged.

Source: Coding guidelines

apps/vscode/webview-ui/src/components/index.ts (1)

13-16: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Use re-exports for the new barrel entries.

Replace the new named exports with export * from .... This follows the non-root index.ts convention.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/vscode/webview-ui/src/components/index.ts` around lines 13 - 16, Update
the new barrel entries in the component index to use wildcard re-exports instead
of named exports, specifically for ConfigHub, WorkDirModal, ThinkingBlock, and
ComposerModeMenu. Follow the existing non-root index.ts convention while
preserving the same module paths.

Source: Coding guidelines

apps/vscode/webview-ui/src/components/confighub/ModelsSection.tsx (1)

2-4: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Use the #/ alias for new internal imports.

  • apps/vscode/webview-ui/src/components/confighub/ModelsSection.tsx#L2-L4: replace each @/ alias with its #/ equivalent.
  • apps/vscode/webview-ui/src/components/ChatArea.tsx#L6-L7: replace each @/ alias with its #/ equivalent.
  • apps/vscode/webview-ui/src/components/WelcomeScreen.tsx#L3-L5,L9: replace each @/ alias with its #/ equivalent.

As per coding guidelines, use import ... from '#/...' in preference to the equivalent @/... alias.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/vscode/webview-ui/src/components/confighub/ModelsSection.tsx` around
lines 2 - 4, Replace every new "`@/`..." internal import with the equivalent
"`#/`..." alias in ModelsSection.tsx (lines 2-4), ChatArea.tsx (lines 6-7), and
WelcomeScreen.tsx (lines 3-5 and 9); no other import changes are needed.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/vscode/src/integrations/chat-context.ts`:
- Around line 95-107: Update the terminal selection flow around copySelection to
write a generated no-selection sentinel to the clipboard before executing the
command. Treat the result as empty only when the sentinel remains, allowing
valid selections matching previousClipboard, and continue restoring
previousClipboard in the finally block.

In `@apps/vscode/webview-ui/src/components/ApprovalDialog.tsx`:
- Around line 43-62: Guard response submission in both ApprovalDialog.tsx (lines
43-62) and QuestionDialog.tsx (lines 59-88) with an in-flight flag so repeated
keyboard events cannot invoke respondApproval or respondQuestion again before
the first request settles; set the guard before calling the response handler and
clear it when the request completes, preserving the existing response behavior.

In `@apps/vscode/webview-ui/src/components/ChatArea.tsx`:
- Line 57: Update the increaseViewportBy configuration in ChatArea to replace
Number.MAX_SAFE_INTEGER with a bounded bottom overscan value, preserving the
existing top overscan and ensuring virtualization does not mount all later
messages during upward scrolling.

In `@apps/vscode/webview-ui/src/components/ChatStatus.tsx`:
- Around line 61-65: Update formatTokens so thousand-scale values that round to
1,000.0k are promoted to the million unit and formatted as 1.0m, avoiding
1000.0k at the boundary. Preserve the existing formatting for values below that
threshold and the current million-unit behavior.

In `@apps/vscode/webview-ui/src/components/confighub/ConfigFileSection.tsx`:
- Around line 51-53: Update the conditional rendering in ConfigFileSection so
that when error is set and info is null, it renders only the error state and
refresh control instead of the “No config file was found” message. Preserve the
missing-file result for cases where info exists and indicates a null path or
non-existent file.

In `@apps/vscode/webview-ui/src/components/Markdown.tsx`:
- Line 16: Update the useIsDark import in Markdown.tsx to use the
`#/hooks/useIsDark` alias instead of the `@/` alias, leaving the imported symbol and
surrounding component logic unchanged.

In `@apps/vscode/webview-ui/src/components/SessionList.tsx`:
- Around line 20-25: Update getGroupLabel to derive the yesterday and week
cutoff timestamps from local calendar dates using Date year/month/day values
with day offsets, rather than subtracting DAY_MS. Preserve the existing Today,
Yesterday, and This week labels while correctly handling daylight-saving
transitions.

In `@apps/vscode/webview-ui/src/components/WelcomeScreen.tsx`:
- Line 21: Remove the console.error statement from the WelcomeScreen
session-loading error path, while preserving the user-facing toast. Do not add
another console call; use the supported logger only if error logging remains
necessary.

In `@apps/vscode/webview-ui/src/styles/index.css`:
- Around line 90-93: Update the --font-sans and --font-mono declarations to
quote the non-generic family names BlinkMacSystemFont, Roboto, SFMono-Regular,
Menlo, Monaco, and Consolas, while leaving the generic family names and existing
fallback order unchanged.

---

Outside diff comments:
In `@apps/vscode/src/runtime/reverse-rpc.ts`:
- Around line 33-37: Rename the shared pending-approval state to a
decision-neutral name and update all related usage: in
apps/vscode/src/runtime/reverse-rpc.ts lines 33-37 increment it for
requestQuestion and lines 72-78 decrement the matching question state; in
apps/vscode/src/activity.ts lines 8-10 rename pendingApprovals; in
apps/vscode/src/extension.ts lines 67-84 use decision-neutral status text and
tooltips; and in apps/vscode/src/PythinkerWebviewProvider.ts lines 72-84 use
decision-neutral badge tooltips.

---

Nitpick comments:
In `@apps/vscode/src/handlers/config.handler.ts`:
- Line 12: Move the SdkConfig type alias below the complete import list in
config.handler.ts, keeping the existing alias unchanged and ensuring all imports
remain first in the file to satisfy oxlint's import(first) rule.

In `@apps/vscode/webview-ui/src/components/ComposerModeMenu.tsx`:
- Around line 3-5: Replace the internal `@/` imports with equivalent `#/` imports in
ComposerModeMenu.tsx (lines 3-5), DisplayBlocks.tsx (line 7), and
SessionList.tsx (lines 4-11); leave SessionList.tsx package imports unchanged.

In `@apps/vscode/webview-ui/src/components/confighub/ModelsSection.tsx`:
- Around line 2-4: Replace every new "`@/`..." internal import with the equivalent
"`#/`..." alias in ModelsSection.tsx (lines 2-4), ChatArea.tsx (lines 6-7), and
WelcomeScreen.tsx (lines 3-5 and 9); no other import changes are needed.

In `@apps/vscode/webview-ui/src/components/confighub/sections.ts`:
- Line 9: Replace the new Config Hub `@/` aliases with the preferred `#/`
aliases: update the settings-store import in
apps/vscode/webview-ui/src/components/confighub/sections.ts (line 9), component
and service imports in ConfigFileSection.tsx (lines 3-4), component, store,
service, and utility imports in ConfigHub.tsx (lines 2-6), and component and
store imports in OverviewSection.tsx (lines 1-2); no other changes are needed.

In `@apps/vscode/webview-ui/src/components/index.ts`:
- Around line 13-16: Update the new barrel entries in the component index to use
wildcard re-exports instead of named exports, specifically for ConfigHub,
WorkDirModal, ThinkingBlock, and ComposerModeMenu. Follow the existing non-root
index.ts convention while preserving the same module paths.

In `@apps/vscode/webview-ui/src/components/PythinkerMascot.tsx`:
- Line 3: Update the useIsDark import in PythinkerMascot to use the
repository-preferred `#/hooks/useIsDark` alias instead of `@/hooks/useIsDark`,
leaving its usage unchanged.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ce44839a-7425-44a0-a60e-65b026b319a6

📥 Commits

Reviewing files that changed from the base of the PR and between bceff21 and e131e66.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml, !**/pnpm-lock.yaml
📒 Files selected for processing (92)
  • .changeset/vscode-chat-fixes.md
  • .changeset/vscode-composer-menu.md
  • .changeset/vscode-config-hub.md
  • .changeset/vscode-editor-theme.md
  • .changeset/vscode-host-integrations.md
  • apps/vscode/package.json
  • apps/vscode/shared/bridge.ts
  • apps/vscode/shared/legacy-sdk.ts
  • apps/vscode/shared/types.ts
  • apps/vscode/src/PythinkerWebviewProvider.ts
  • apps/vscode/src/activity.ts
  • apps/vscode/src/config/vscode-settings.ts
  • apps/vscode/src/extension.ts
  • apps/vscode/src/handlers/auth.handler.ts
  • apps/vscode/src/handlers/chat.handler.ts
  • apps/vscode/src/handlers/config.handler.ts
  • apps/vscode/src/handlers/workspace.handler.ts
  • apps/vscode/src/integrations/chat-context.ts
  • apps/vscode/src/runtime/reverse-rpc.ts
  • apps/vscode/walkthrough/first-conversation.md
  • apps/vscode/walkthrough/open-view.md
  • apps/vscode/walkthrough/reference-code.md
  • apps/vscode/walkthrough/sign-in.md
  • apps/vscode/webview-ui/src/App.tsx
  • apps/vscode/webview-ui/src/components/ActionMenu.tsx
  • apps/vscode/webview-ui/src/components/ApprovalDialog.tsx
  • apps/vscode/webview-ui/src/components/BottomToolbar.tsx
  • apps/vscode/webview-ui/src/components/BrailleSpinner.tsx
  • apps/vscode/webview-ui/src/components/ChatArea.tsx
  • apps/vscode/webview-ui/src/components/ChatMessage.tsx
  • apps/vscode/webview-ui/src/components/ChatStatus.tsx
  • apps/vscode/webview-ui/src/components/CompactionCard.tsx
  • apps/vscode/webview-ui/src/components/ComposerModeMenu.tsx
  • apps/vscode/webview-ui/src/components/ConfigErrorScreen.tsx
  • apps/vscode/webview-ui/src/components/CopyButton.tsx
  • apps/vscode/webview-ui/src/components/DisplayBlocks.tsx
  • apps/vscode/webview-ui/src/components/FileChangesPanel.tsx
  • apps/vscode/webview-ui/src/components/Header.tsx
  • apps/vscode/webview-ui/src/components/InlineError.tsx
  • apps/vscode/webview-ui/src/components/LoginScreen.tsx
  • apps/vscode/webview-ui/src/components/Markdown.tsx
  • apps/vscode/webview-ui/src/components/MediaPreviewModal.tsx
  • apps/vscode/webview-ui/src/components/MediaThumbnail.tsx
  • apps/vscode/webview-ui/src/components/PermissionModeBadge.tsx
  • apps/vscode/webview-ui/src/components/PlanCard.tsx
  • apps/vscode/webview-ui/src/components/PlanModeButton.tsx
  • apps/vscode/webview-ui/src/components/PythinkerMascot.tsx
  • apps/vscode/webview-ui/src/components/QuestionDialog.tsx
  • apps/vscode/webview-ui/src/components/QueuedMessagesPanel.tsx
  • apps/vscode/webview-ui/src/components/SessionList.tsx
  • apps/vscode/webview-ui/src/components/SilverSpinner.tsx
  • apps/vscode/webview-ui/src/components/ThinkingBlock.tsx
  • apps/vscode/webview-ui/src/components/ThinkingButton.tsx
  • apps/vscode/webview-ui/src/components/ToolRenderers.tsx
  • apps/vscode/webview-ui/src/components/WelcomeScreen.tsx
  • apps/vscode/webview-ui/src/components/WorkDirModal.tsx
  • apps/vscode/webview-ui/src/components/WorkflowCard.tsx
  • apps/vscode/webview-ui/src/components/confighub/ConfigFileSection.tsx
  • apps/vscode/webview-ui/src/components/confighub/ConfigHub.tsx
  • apps/vscode/webview-ui/src/components/confighub/MCPServersSection.tsx
  • apps/vscode/webview-ui/src/components/confighub/ModelsSection.tsx
  • apps/vscode/webview-ui/src/components/confighub/OverviewSection.tsx
  • apps/vscode/webview-ui/src/components/confighub/ProvidersSection.tsx
  • apps/vscode/webview-ui/src/components/confighub/SettingsSection.tsx
  • apps/vscode/webview-ui/src/components/confighub/sections.ts
  • apps/vscode/webview-ui/src/components/index.ts
  • apps/vscode/webview-ui/src/components/inputarea/InputArea.tsx
  • apps/vscode/webview-ui/src/components/inputarea/hooks/useInputHistory.ts
  • apps/vscode/webview-ui/src/components/ui/badge.tsx
  • apps/vscode/webview-ui/src/components/ui/button.tsx
  • apps/vscode/webview-ui/src/components/ui/checkbox.tsx
  • apps/vscode/webview-ui/src/components/ui/combobox.tsx
  • apps/vscode/webview-ui/src/components/ui/command.tsx
  • apps/vscode/webview-ui/src/components/ui/context-menu.tsx
  • apps/vscode/webview-ui/src/components/ui/dropdown-menu.tsx
  • apps/vscode/webview-ui/src/components/ui/field.tsx
  • apps/vscode/webview-ui/src/components/ui/input-group.tsx
  • apps/vscode/webview-ui/src/components/ui/input.tsx
  • apps/vscode/webview-ui/src/components/ui/select.tsx
  • apps/vscode/webview-ui/src/components/ui/sonner.tsx
  • apps/vscode/webview-ui/src/components/ui/switch.tsx
  • apps/vscode/webview-ui/src/components/ui/tabs.tsx
  • apps/vscode/webview-ui/src/components/ui/textarea.tsx
  • apps/vscode/webview-ui/src/hooks/useAppInit.ts
  • apps/vscode/webview-ui/src/hooks/useIsDark.ts
  • apps/vscode/webview-ui/src/hooks/useWelcomeHint.tsx
  • apps/vscode/webview-ui/src/lib/format.ts
  • apps/vscode/webview-ui/src/main.tsx
  • apps/vscode/webview-ui/src/services/bridge.ts
  • apps/vscode/webview-ui/src/stores/chat.store.ts
  • apps/vscode/webview-ui/src/stores/settings.store.ts
  • apps/vscode/webview-ui/src/styles/index.css
💤 Files with no reviewable changes (6)
  • apps/vscode/webview-ui/src/components/BrailleSpinner.tsx
  • apps/vscode/webview-ui/src/hooks/useAppInit.ts
  • apps/vscode/webview-ui/src/components/PermissionModeBadge.tsx
  • apps/vscode/webview-ui/src/components/ThinkingButton.tsx
  • apps/vscode/webview-ui/src/components/PlanModeButton.tsx
  • apps/vscode/webview-ui/src/main.tsx

Comment thread apps/vscode/src/integrations/chat-context.ts Outdated
Comment thread apps/vscode/webview-ui/src/components/ApprovalDialog.tsx
Comment thread apps/vscode/webview-ui/src/components/ChatArea.tsx
Comment thread apps/vscode/webview-ui/src/components/ChatStatus.tsx
Comment thread apps/vscode/webview-ui/src/components/confighub/ConfigFileSection.tsx Outdated
Comment thread apps/vscode/webview-ui/src/components/Markdown.tsx
Comment thread apps/vscode/webview-ui/src/components/SessionList.tsx Outdated
Comment thread apps/vscode/webview-ui/src/components/WelcomeScreen.tsx Outdated
Comment thread apps/vscode/webview-ui/src/styles/index.css
Guard approval and question dialogs against duplicate in-flight
responses, use a clipboard sentinel to detect an empty terminal
selection, promote token counts that round to one million into the m
unit, stop claiming the config file is missing after a load error,
group sessions by calendar-day boundaries so DST does not shift them,
and drop a stray console statement.
@elkaix
elkaix merged commit 17967df into main Aug 9, 2026
12 checks passed
@elkaix
elkaix deleted the feat/vscode-design-overhaul branch August 9, 2026 17:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant