Skip to content

Conversation

@acoliver
Copy link
Collaborator

@acoliver acoliver commented Jan 7, 2026

Overview

This PR implements a custom ESLint rule to enforce theme consistency across all Ink Text components in the codebase, ensuring that every Text component has an explicit color prop and eliminating the problematic dimColor prop that causes rendering issues on TMux/Linux terminals.

Problem Statement

Prior to this change, the codebase had 205 violations across 53 files where:

  • Ink Text components lacked explicit color props, causing inconsistent rendering
  • The dimColor prop was being used, which causes rendering issues on TMux/Linux terminals

This led to:

  • Inconsistent theme application throughout the UI
  • Poor user experience on certain terminal environments
  • Difficulty maintaining theme consistency as the codebase grows

Solution

1. Custom ESLint Rule

Created eslint-rules/ink-text-color-required.js which enforces:

  • Required color prop: All Text components must have a color prop
  • Prohibited dimColor: The dimColor prop is explicitly forbidden due to TMux/Linux rendering issues
  • Helpful error messages: Provides actionable suggestions for fixes

The rule checks:

  • JSX opening tags of Text components
  • Ensures a color prop is present
  • Prevents use of dimColor prop
  • Ignores components with explicit colors

2. Violation Fixes

Fixed all 205 violations across 53 files by:

  • Adding color={Colors.Foreground} to Text components missing colors
  • Replacing dimColor with color={Colors.DimComment} for dimmed text
  • Adding missing Colors imports where needed

3. Integration

Updated eslint.config.js to include the new custom rule under the custom namespace.

Changes

  • New file: eslint-rules/ink-text-color-required.js (81 lines)
  • Modified: eslint.config.js (+3 lines)
  • Modified: 53 component files across the codebase
  • Statistics: 422 insertions(+), 214 deletions(-)

Files Changed

Core Components

  • App.test.tsx - Added color props to mock components
  • ErrorBoundary.tsx - Fixed Colors import path
  • InputPrompt.tsx - Added color props to all Text components
  • Notifications.tsx - Added color props and Colors import
  • StatsDisplay.tsx - Added color props and Colors import

UI Components

  • AboutBox.tsx, AuthDialog.tsx, BucketAuthConfirmation.tsx
  • CacheStatsDisplay.tsx, Footer.tsx, Header.tsx
  • LBStatsDisplay.tsx, LoadingIndicator.test.tsx, OAuthCodeDialog.tsx
  • PermissionsModifyTrustDialog.tsx, PrepareLabel.tsx
  • SettingsDialog.tsx, ShellConfirmationDialog.tsx
  • ThemeDialog.tsx, ToolStatsDisplay.tsx, ToolsDialog.tsx
  • WorkspaceMigrationDialog.tsx, IdeIntegrationNudge.tsx
  • ContextSummaryDisplay.tsx, GeminiRespondingSpinner.tsx

Message Components

  • GeminiMessage.tsx - Replaced dimColor with Colors.DimComment
  • OAuthUrlMessage.tsx, ToolConfirmationMessage.tsx
  • ToolMessage.tsx, UserShellMessage.tsx
  • DiffRenderer.tsx, ToolGroupMessage.test.tsx, ToolMessage.test.tsx

Welcome Onboarding

  • AuthenticationStep.tsx, AuthMethodStep.tsx, CompletionStep.tsx
  • ModelSelectStep.tsx, ProviderSelectStep.tsx
  • SkipExitStep.tsx, WelcomeStep.tsx

Privacy Notices

  • CloudFreePrivacyNotice.tsx, CloudPaidPrivacyNotice.tsx
  • GeminiPrivacyNotice.tsx, MultiProviderPrivacyNotice.tsx

Utilities

  • InlineMarkdownRenderer.tsx, MarkdownDisplay.tsx, TableRenderer.tsx
  • MaxSizedBox.tsx, MaxSizedBox.test.tsx
  • ChatList.tsx, ConsentPrompt.test.tsx

Root Files

  • gemini.tsx - Added color prop and Colors import

Testing

Verification Steps Completed

Lint: 0 custom/ink-text-color-required violations
Typecheck: All TypeScript types validated
Build: All packages build successfully
Test: All test suites pass (5,025 core tests, 2,525 CLI tests, 21 a2a-server tests, 32 vscode-ide-companion tests)
Format: Code formatted with Prettier

Theme Colors Used

  • Colors.Foreground - Default text color
  • Colors.DimComment - Dimmed/subtle text (replaces dimColor)
  • Colors.Comment - Comment text
  • Colors.AccentBlue, Colors.AccentCyan, Colors.AccentGreen - Accent colors
  • theme.text.primary, theme.text.accent - Semantic theme colors

Impact

Positive Impacts

  • Consistent theming: All Text components now respect the theme system
  • Better terminal support: Eliminates dimColor rendering issues on TMux/Linux
  • Maintainability: ESLint rule prevents future violations
  • Developer experience: Clear error messages guide developers

Breaking Changes

None - This is a non-breaking change that only affects internal rendering. The UI appearance remains consistent.

Performance

No performance impact - only adds static analysis during development.

Migration Notes

No migration needed for existing code. All violations have been fixed in this PR.

For future development:

  • Always add a color prop to Text components
  • Use Colors.DimComment instead of dimColor
  • Refer to packages/cli/src/ui/colors.ts for available colors

closes #1031

Summary by CodeRabbit

  • New Features

    • Added a custom lint rule to require explicit colors for text components.
  • Style

    • Standardized explicit color tokens across the CLI UI for more consistent, readable text styling.

✏️ Tip: You can customize this high-level summary in your review settings.

- Add custom ESLint rule (custom/ink-text-color-required) to ensure all
  Text components have a color prop and don't use the problematic
  dimColor prop
- Fix 205 violations across 53 files by adding appropriate color props
- Replace dimColor with Colors.DimComment to resolve TMux/Linux rendering
  issues
- Update eslint.config.js to integrate the new rule
@github-actions github-actions bot added the maintainer:e2e:ok Trusted contributor; maintainer-approved E2E run label Jan 7, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 7, 2026

Walkthrough

Introduces a new ESLint rule enforcing explicit color props on Ink Text components (disallowing dimColor) and applies explicit Colors.Foreground / Colors.DimComment props across many CLI UI Text usages; registers the rule in ESLint config.

Changes

Cohort / File(s) Summary
ESLint rule & config
eslint-rules/ink-text-color-required.js, eslint.config.js
New ESLint rule module that requires color on Ink Text components and reports dimColor usage; rule imported and enabled as custom/ink-text-color-required: error in ESLint config.
Global UI colorization
packages/cli/src/ui/... (many files)
Numerous Text elements updated to add color={Colors.Foreground} or color={Colors.DimComment} and replace dimColor usage; changes are visual-only across most components and tests.
Core components & small behavior
packages/cli/src/gemini.tsx, packages/cli/src/ui/App.test.tsx, packages/cli/src/ui/IdeIntegrationNudge.tsx
Imported theme/Colors and applied explicit text colors; added isExtensionPreInstalled: boolean to IdeIntegrationNudgeResult type.
Stats & displays
packages/cli/src/ui/components/*StatsDisplay.tsx, packages/cli/src/ui/components/StatsDisplay.tsx
Stat values and labels now render with explicit color props; some labels use Colors.DimComment.
Dialogs & prompts
packages/cli/src/ui/components/*Dialog*.tsx, packages/cli/src/ui/components/InputPrompt.tsx, packages/cli/src/ui/components/ToolsDialog.tsx
Headers, labels, helper lines updated to explicit Colors.Foreground/DimComment.
Onboarding & welcome screens
packages/cli/src/ui/components/WelcomeOnboarding/*
Spacer and status lines now use Colors.Foreground; CompletionStep status icon changed from "✓" to "[OK]".
Messages & message tests
packages/cli/src/ui/components/messages/*, packages/cli/src/ui/components/messages/*test*.tsx
Message renderers and mocks updated to use explicit color props; some tests updated to expect colored output and "[OK]" symbols.
Shared components & tests
packages/cli/src/ui/components/shared/MaxSizedBox.tsx, packages/cli/src/ui/components/shared/MaxSizedBox.test.tsx, packages/cli/src/ui/components/views/ChatList.tsx, packages/cli/src/ui/components/WorkspaceMigrationDialog.tsx
Text wrappers standardized to Colors.Foreground; tests updated accordingly.
Privacy & utils
packages/cli/src/ui/privacy/*, packages/cli/src/ui/utils/{InlineMarkdownRenderer,MarkdownDisplay,TableRenderer}.tsx
Privacy notices and markdown/table renderers standardized to explicit foreground/dim comment colors; minor HTML-entity formatting in CloudPaidPrivacyNotice.

Sequence Diagram(s)

(no sequence diagrams generated)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Poem

🐰
I hopped through code at break of day,
Gave every Text a color to say:
Foreground bright, DimComment slight,
ESLint watches — no dimColor blight,
Hooray! Theme-hopping done, hip-hip hooray!

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main objective: implementing an ESLint rule to enforce theme consistency for Ink Text components with explicit color props.
Description check ✅ Passed The PR description is comprehensive and follows the template structure with detailed TLDR, problem statement, solution, changes, testing, and impact sections that clearly explain the implementation and fixes.
Linked Issues check ✅ Passed The PR fully addresses issue #1031 objectives by implementing an ESLint rule to enforce theme colors on Text components, preventing bare Text without explicit colors, and integrating enforcement into linting.
Out of Scope Changes check ✅ Passed All changes are scoped to the stated objectives: creating the ESLint rule, updating config, and fixing 205 violations across 53 files by adding explicit color props and replacing dimColor usage.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 91260f2 and 2411893.

📒 Files selected for processing (2)
  • packages/cli/src/ui/IdeIntegrationNudge.tsx
  • packages/cli/src/ui/components/messages/OAuthUrlMessage.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/cli/src/ui/components/messages/OAuthUrlMessage.tsx
  • packages/cli/src/ui/IdeIntegrationNudge.tsx
⏰ Context from checks skipped due to timeout of 270000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
  • GitHub Check: Test (ubuntu-latest, 24.x)
  • GitHub Check: Test (macos-latest, 24.x)
  • GitHub Check: Test (windows-latest, 24.x)
  • GitHub Check: Slow E2E - Win
  • GitHub Check: E2E Test (Linux) - sandbox:docker
  • GitHub Check: E2E Test (Linux) - sandbox:none
  • GitHub Check: E2E Test (macOS)

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.

❤️ Share

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

@github-actions
Copy link
Contributor

github-actions bot commented Jan 7, 2026

I'll analyze this PR to enforce theme consistency for Ink Text components.

LLxprt PR Review – PR #1033

Issue Alignment

  • This PR directly addresses issue Catch theme violations in CI, adjust default #1031 by implementing a custom ESLint rule (ink-text-color-required.js) that enforces theme consistency for Ink Text components
  • The rule requires all Text components to have an explicit color prop and prohibits use of dimColor which causes rendering issues on TMux/Linux terminals
  • All 205 violations across 53 files were fixed by adding explicit color props, primarily color={Colors.Foreground} for standard text and color={Colors.DimComment} for previously dimmed text

Side Effects

  • Large-scale change affecting 53 files with 423 additions and 217 deletions, but changes are mechanical and consistent
  • Potential performance impact from adding explicit color props to many components, but minimal as these are static values
  • Removed usage of dimColor prop which had rendering issues on TMux/Linux terminals, improving cross-platform compatibility
  • Added missing Colors imports in some files, improving code organization

Code Quality

  • Custom ESLint rule is well-structured and provides clear error messages
  • Rule correctly identifies Text components and enforces both required color props and prohibited dimColor usage
  • Integration with ESLint config is clean and follows existing patterns (custom namespace with other rules)
  • Color prop usage is consistent throughout, using appropriate thematic colors from the established color system

Tests & Coverage

  • Coverage impact: unchanged - The PR only modifies existing components and doesn't add new functionality requiring test coverage
  • Tests were updated where Text components were used in mock implementations (e.g., MaxSizedBox.test.tsx, LoadingIndicator.test.tsx)
  • Some test files received more thorough updates (MaxSizedBox.test.tsx) while others had minimal changes to satisfy the new rule
  • No dedicated tests for the custom ESLint rule were added, which is a notable gap

Verdict

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

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

⚠️ Outside diff range comments (1)
packages/cli/src/ui/components/ErrorBoundary.tsx (1)

68-86: Replace console.error with the sophisticated logging system.

The error boundary uses console.error for logging, which violates the coding guidelines.

As per coding guidelines: "Do not use console.log or console.debug - Use the sophisticated logging system instead. Log files are written to ~/.llxprt/debug/"

🤖 Fix all issues with AI agents
In @packages/cli/src/ui/App.test.tsx:
- Around line 302-304: App.test.tsx references Colors.Foreground inside the
mockTodoPanel (mockTodoPanel = vi.fn(...) uses Colors.Foreground) but Colors is
not imported; add an import for the Colors symbol from './colors.js' at the top
of the file so Colors.Foreground is defined and the test compiles, ensuring the
import is placed alongside the other imports.

In @packages/cli/src/ui/components/Footer.tsx:
- Line 280: Remove explicit color props from Text elements that are direct
children of Gradient wrappers so the Gradient can control coloring; specifically
edit Footer (Text instances referenced in Footer.tsx near the Gradient wrappers,
e.g., the Text currently using color={Colors.Foreground} at the locations
noted), Header (Text children inside the Gradient in Header.tsx), and
StatsDisplay (Text inside the Gradient in StatsDisplay.tsx) and simply delete
the color={Colors.Foreground} prop from those Text elements—leave all other
props intact so the Gradient component can apply its gradient in nightly mode.
🧹 Nitpick comments (8)
packages/cli/src/ui/components/messages/OAuthUrlMessage.tsx (1)

40-44: Remove redundant Text wrapper.

The outer Text component only provides color={Colors.AccentBlue}, which the inner Text explicitly declares as well. The outer wrapper adds no value and can be removed to simplify the structure.

♻️ Proposed simplification
-        <Box flexGrow={1}>
-          <Text color={Colors.AccentBlue}>
-            <Text bold color={Colors.AccentBlue}>
-              OAuth Authentication Required for {provider}
-            </Text>
-          </Text>
-        </Box>
+        <Box flexGrow={1}>
+          <Text bold color={Colors.AccentBlue}>
+            OAuth Authentication Required for {provider}
+          </Text>
+        </Box>
packages/cli/src/ui/components/CacheStatsDisplay.tsx (1)

32-32: Explicit color enforcement applied correctly.

The addition of color={Colors.Foreground} satisfies the ESLint rule requirement. Since all current call sites pass a ReactElement (already a Text with its own color), this creates nested Text components where the inner color takes precedence. The outer color acts as a fallback that's never reached.

♻️ Optional: eliminate nested Text when value is ReactElement

If you want to avoid the nested Text pattern, consider refactoring StatRow to handle string values directly while expecting pre-styled ReactElements:

 interface StatRowProps {
   title: string;
-  value: string | React.ReactElement;
+  value: React.ReactElement;
   isSubtle?: boolean;
 }

 const StatRow: React.FC<StatRowProps> = ({
   title,
   value,
   isSubtle = false,
 }) => (
   <Box>
     <Box width={METRIC_COL_WIDTH}>
       <Text color={Colors.LightBlue}>{isSubtle ? `  ↳ ${title}` : title}</Text>
     </Box>
     <Box width={VALUE_COL_WIDTH} justifyContent="flex-end">
-      <Text color={Colors.Foreground}>{value}</Text>
+      {value}
     </Box>
   </Box>
 );

Then ensure all callers wrap their values in <Text color={...}>. However, this refactor is beyond the scope of the current PR.

packages/cli/src/ui/IdeIntegrationNudge.tsx (1)

94-94: Consider using theme color for consistency.

While the explicit color="yellow" satisfies the ESLint rule, consider using color={Colors.AccentYellow} for better theme consistency and support across different color themes.

♻️ Optional refactor to use theme color
-        <Text color="yellow">{'> '}</Text>
+        <Text color={Colors.AccentYellow}>{'> '}</Text>
packages/cli/src/ui/components/PrepareLabel.tsx (1)

40-46: Consider whether outer Text wrapper is necessary.

The outer <Text color={Colors.Foreground}> wrapper at line 40 doesn't affect the rendering since all inner Text components (lines 41, 42-44, 45) already have explicit colors that override the parent. While harmless, this may be unnecessary nesting.

If the outer wrapper serves a structural purpose or follows a required pattern, this is fine. Otherwise, consider simplifying by removing it.

♻️ Optional simplification
-  return (
-    <Text color={Colors.Foreground}>
-      <Text color={textColor}>{start}</Text>
-      <Text color="black" bold backgroundColor={highlightColor}>
-        {match}
-      </Text>
-      <Text color={textColor}>{end}</Text>
-    </Text>
-  );
+  return (
+    <>
+      <Text color={textColor}>{start}</Text>
+      <Text color="black" bold backgroundColor={highlightColor}>
+        {match}
+      </Text>
+      <Text color={textColor}>{end}</Text>
+    </>
+  );
packages/cli/src/ui/components/ErrorBoundary.tsx (1)

129-148: Consider migrating hardcoded color strings to theme colors.

The error boundary uses hardcoded color strings ("red", "yellow") instead of theme colors (Colors.AccentRed, Colors.AccentYellow). While this works, it's inconsistent with the PR's goal of enforcing theme consistency across all Text components.

♻️ Refactor to use theme colors
-          <Text color="red" bold>
+          <Text color={Colors.AccentRed} bold>
             {isMaxUpdateDepthError
               ? 'CRITICAL: Render Loop Error'
               : '❌ An error occurred'}
           </Text>
-          <Text color="red">{this.state.error.message}</Text>
+          <Text color={Colors.AccentRed}>{this.state.error.message}</Text>
           {this.state.errorCount > 1 && (
-            <Text color="yellow">Error count: {this.state.errorCount}</Text>
+            <Text color={Colors.AccentYellow}>Error count: {this.state.errorCount}</Text>
           )}
           {isMaxUpdateDepthError && (
             <Box flexDirection="column" marginTop={1}>
-              <Text color="yellow">
+              <Text color={Colors.AccentYellow}>
                 This error indicates an infinite render loop.
               </Text>
-              <Text color="yellow">Common causes:</Text>
-              <Text color="yellow">• State updates during render</Text>
-              <Text color="yellow">• Incorrect useEffect dependencies</Text>
-              <Text color="yellow">
+              <Text color={Colors.AccentYellow}>Common causes:</Text>
+              <Text color={Colors.AccentYellow}>• State updates during render</Text>
+              <Text color={Colors.AccentYellow}>• Incorrect useEffect dependencies</Text>
+              <Text color={Colors.AccentYellow}>
                 • Non-memoized props causing re-renders
               </Text>
packages/cli/src/ui/components/WelcomeOnboarding/ProviderSelectStep.tsx (1)

72-72: LGTM! Spacer Text now complies with the color requirement.

Adding color={Colors.Foreground} to the whitespace-only Text element satisfies the ESLint rule. While using a Box with a height prop might be semantically clearer for spacing, the current approach is functionally correct and harmless.

♻️ Optional: Consider using Box for vertical spacing

If you prefer more semantic spacing:

-        <Text color={Colors.Foreground}> </Text>
+        <Box height={1} />

This makes the intent of vertical spacing more explicit, though the current approach works fine.

packages/cli/src/ui/components/WelcomeOnboarding/ModelSelectStep.tsx (1)

83-83: LGTM: Explicit color applied to spacer.

The change correctly adds an explicit color prop to the spacer Text element, aligning with the PR's goal of enforcing theme consistency.

💡 Optional: Consider using Box for spacing

For vertical spacing, a Box component might be cleaner than a Text element with a space character:

-        <Text color={Colors.Foreground}> </Text>
+        {/* or just rely on existing marginBottom={1} on parent Box */}

However, this pattern appears consistent throughout the codebase, so this change can be deferred.

packages/cli/src/ui/utils/InlineMarkdownRenderer.tsx (1)

141-144: Replace console.error with the project's logging system.

The coding guidelines specify using the sophisticated logging system instead of console methods. Error logs should be routed through the proper logging infrastructure (files written to ~/.llxprt/debug/).

♻️ Proposed refactor to use the logging system

Since I don't have access to the logging utility in the provided context, here's the pattern you should follow:

+import { logger } from '../path/to/logger.js'; // adjust import path as needed
+
 try {
   // ... parsing logic
 } catch (e) {
-  console.error('Error parsing inline markdown part:', fullMatch, e);
+  logger.error('Error parsing inline markdown part', { fullMatch, error: e });
   renderedNode = null;
 }

Based on coding guidelines, which specify using the sophisticated logging system instead of console methods.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 67d1c32 and 91260f2.

📒 Files selected for processing (55)
  • eslint-rules/ink-text-color-required.js
  • eslint.config.js
  • packages/cli/src/gemini.tsx
  • packages/cli/src/ui/App.test.tsx
  • packages/cli/src/ui/IdeIntegrationNudge.tsx
  • packages/cli/src/ui/components/AboutBox.tsx
  • packages/cli/src/ui/components/AuthDialog.tsx
  • packages/cli/src/ui/components/BucketAuthConfirmation.tsx
  • packages/cli/src/ui/components/CacheStatsDisplay.tsx
  • packages/cli/src/ui/components/ConsentPrompt.test.tsx
  • packages/cli/src/ui/components/ContextSummaryDisplay.tsx
  • packages/cli/src/ui/components/ErrorBoundary.tsx
  • packages/cli/src/ui/components/FolderTrustDialog.tsx
  • packages/cli/src/ui/components/Footer.tsx
  • packages/cli/src/ui/components/GeminiRespondingSpinner.tsx
  • packages/cli/src/ui/components/Header.tsx
  • packages/cli/src/ui/components/InputPrompt.tsx
  • packages/cli/src/ui/components/LBStatsDisplay.tsx
  • packages/cli/src/ui/components/LoadingIndicator.test.tsx
  • packages/cli/src/ui/components/Notifications.tsx
  • packages/cli/src/ui/components/OAuthCodeDialog.tsx
  • packages/cli/src/ui/components/PermissionsModifyTrustDialog.tsx
  • packages/cli/src/ui/components/PrepareLabel.tsx
  • packages/cli/src/ui/components/SettingsDialog.tsx
  • packages/cli/src/ui/components/ShellConfirmationDialog.tsx
  • packages/cli/src/ui/components/StatsDisplay.tsx
  • packages/cli/src/ui/components/ThemeDialog.tsx
  • packages/cli/src/ui/components/ToolStatsDisplay.tsx
  • packages/cli/src/ui/components/ToolsDialog.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/AuthMethodStep.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/AuthenticationStep.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/CompletionStep.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/ModelSelectStep.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/ProviderSelectStep.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/SkipExitStep.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/WelcomeStep.tsx
  • packages/cli/src/ui/components/WorkspaceMigrationDialog.tsx
  • packages/cli/src/ui/components/messages/DiffRenderer.tsx
  • packages/cli/src/ui/components/messages/GeminiMessage.tsx
  • packages/cli/src/ui/components/messages/OAuthUrlMessage.tsx
  • packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
  • packages/cli/src/ui/components/messages/ToolGroupMessage.test.tsx
  • packages/cli/src/ui/components/messages/ToolMessage.test.tsx
  • packages/cli/src/ui/components/messages/ToolMessage.tsx
  • packages/cli/src/ui/components/messages/UserShellMessage.tsx
  • packages/cli/src/ui/components/shared/MaxSizedBox.test.tsx
  • packages/cli/src/ui/components/shared/MaxSizedBox.tsx
  • packages/cli/src/ui/components/views/ChatList.tsx
  • packages/cli/src/ui/privacy/CloudFreePrivacyNotice.tsx
  • packages/cli/src/ui/privacy/CloudPaidPrivacyNotice.tsx
  • packages/cli/src/ui/privacy/GeminiPrivacyNotice.tsx
  • packages/cli/src/ui/privacy/MultiProviderPrivacyNotice.tsx
  • packages/cli/src/ui/utils/InlineMarkdownRenderer.tsx
  • packages/cli/src/ui/utils/MarkdownDisplay.tsx
  • packages/cli/src/ui/utils/TableRenderer.tsx
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

**/*.{ts,tsx}: Don't use any - Always specify proper types. Use unknown if the type is truly unknown and add proper type guards.
Do not use console.log or console.debug - Use the sophisticated logging system instead. Log files are written to ~/.llxprt/debug/
Fix all linting errors, including warnings about any types

Files:

  • packages/cli/src/ui/components/WelcomeOnboarding/ModelSelectStep.tsx
  • packages/cli/src/ui/components/ShellConfirmationDialog.tsx
  • packages/cli/src/ui/components/AuthDialog.tsx
  • packages/cli/src/ui/components/ContextSummaryDisplay.tsx
  • packages/cli/src/ui/components/LBStatsDisplay.tsx
  • packages/cli/src/ui/components/messages/UserShellMessage.tsx
  • packages/cli/src/ui/components/messages/GeminiMessage.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/ProviderSelectStep.tsx
  • packages/cli/src/ui/components/messages/ToolGroupMessage.test.tsx
  • packages/cli/src/ui/components/OAuthCodeDialog.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/CompletionStep.tsx
  • packages/cli/src/ui/components/ErrorBoundary.tsx
  • packages/cli/src/ui/components/AboutBox.tsx
  • packages/cli/src/ui/components/ToolsDialog.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/SkipExitStep.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/AuthenticationStep.tsx
  • packages/cli/src/ui/utils/InlineMarkdownRenderer.tsx
  • packages/cli/src/ui/components/ConsentPrompt.test.tsx
  • packages/cli/src/ui/components/WorkspaceMigrationDialog.tsx
  • packages/cli/src/ui/components/InputPrompt.tsx
  • packages/cli/src/ui/components/views/ChatList.tsx
  • packages/cli/src/ui/utils/MarkdownDisplay.tsx
  • packages/cli/src/ui/components/LoadingIndicator.test.tsx
  • packages/cli/src/ui/components/SettingsDialog.tsx
  • packages/cli/src/ui/components/CacheStatsDisplay.tsx
  • packages/cli/src/gemini.tsx
  • packages/cli/src/ui/components/Header.tsx
  • packages/cli/src/ui/components/messages/ToolMessage.test.tsx
  • packages/cli/src/ui/components/shared/MaxSizedBox.test.tsx
  • packages/cli/src/ui/privacy/GeminiPrivacyNotice.tsx
  • packages/cli/src/ui/IdeIntegrationNudge.tsx
  • packages/cli/src/ui/components/ThemeDialog.tsx
  • packages/cli/src/ui/components/StatsDisplay.tsx
  • packages/cli/src/ui/privacy/CloudFreePrivacyNotice.tsx
  • packages/cli/src/ui/components/GeminiRespondingSpinner.tsx
  • packages/cli/src/ui/components/BucketAuthConfirmation.tsx
  • packages/cli/src/ui/components/messages/DiffRenderer.tsx
  • packages/cli/src/ui/components/PermissionsModifyTrustDialog.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/AuthMethodStep.tsx
  • packages/cli/src/ui/components/PrepareLabel.tsx
  • packages/cli/src/ui/components/FolderTrustDialog.tsx
  • packages/cli/src/ui/components/Notifications.tsx
  • packages/cli/src/ui/utils/TableRenderer.tsx
  • packages/cli/src/ui/privacy/MultiProviderPrivacyNotice.tsx
  • packages/cli/src/ui/components/WelcomeOnboarding/WelcomeStep.tsx
  • packages/cli/src/ui/components/shared/MaxSizedBox.tsx
  • packages/cli/src/ui/components/ToolStatsDisplay.tsx
  • packages/cli/src/ui/components/Footer.tsx
  • packages/cli/src/ui/privacy/CloudPaidPrivacyNotice.tsx
  • packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
  • packages/cli/src/ui/components/messages/ToolMessage.tsx
  • packages/cli/src/ui/components/messages/OAuthUrlMessage.tsx
  • packages/cli/src/ui/App.test.tsx
🧠 Learnings (3)
📓 Common learnings
Learnt from: acoliver
Repo: vybestack/llxprt-code PR: 0
File: :0-0
Timestamp: 2026-01-07T16:26:26.665Z
Learning: The `dimColor` prop on Ink's Text component should not be used because it has rendering issues on TMux/Linux terminals (shows up as highlighted bright text). Instead, use `Colors.DimComment` which is a theme-aware color property that provides proper dimming across all themes.
📚 Learning: 2026-01-07T16:26:26.665Z
Learnt from: acoliver
Repo: vybestack/llxprt-code PR: 0
File: :0-0
Timestamp: 2026-01-07T16:26:26.665Z
Learning: The `dimColor` prop on Ink's Text component should not be used because it has rendering issues on TMux/Linux terminals (shows up as highlighted bright text). Instead, use `Colors.DimComment` which is a theme-aware color property that provides proper dimming across all themes.

Applied to files:

  • packages/cli/src/ui/components/ContextSummaryDisplay.tsx
  • packages/cli/src/ui/components/messages/UserShellMessage.tsx
  • packages/cli/src/ui/components/messages/GeminiMessage.tsx
  • packages/cli/src/ui/components/OAuthCodeDialog.tsx
  • packages/cli/src/ui/components/ErrorBoundary.tsx
  • packages/cli/src/ui/components/ToolsDialog.tsx
  • eslint-rules/ink-text-color-required.js
  • packages/cli/src/ui/utils/InlineMarkdownRenderer.tsx
  • packages/cli/src/ui/components/ConsentPrompt.test.tsx
  • packages/cli/src/ui/components/InputPrompt.tsx
  • packages/cli/src/ui/components/views/ChatList.tsx
  • packages/cli/src/ui/utils/MarkdownDisplay.tsx
  • packages/cli/src/ui/components/ThemeDialog.tsx
  • packages/cli/src/ui/components/StatsDisplay.tsx
  • packages/cli/src/ui/components/GeminiRespondingSpinner.tsx
  • packages/cli/src/ui/components/messages/DiffRenderer.tsx
  • packages/cli/src/ui/components/Notifications.tsx
  • packages/cli/src/ui/utils/TableRenderer.tsx
  • packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
  • packages/cli/src/ui/components/messages/ToolMessage.tsx
  • packages/cli/src/ui/components/messages/OAuthUrlMessage.tsx
📚 Learning: 2025-11-17T08:33:42.962Z
Learnt from: MinWooPark-dotcom
Repo: vybestack/llxprt-code PR: 577
File: packages/cli/src/ui/components/messages/ToolMessage.tsx:89-167
Timestamp: 2025-11-17T08:33:42.962Z
Learning: In the vybestack/llxprt-code repository, single-use helper functions in React components can be kept inline rather than extracted to separate utilities, especially when the extraction doesn't provide immediate value (no reuse, no isolated testing planned) and keeps the PR scope focused on feature delivery.

Applied to files:

  • packages/cli/src/ui/components/messages/ToolGroupMessage.test.tsx
🧬 Code graph analysis (38)
packages/cli/src/ui/components/ShellConfirmationDialog.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/LBStatsDisplay.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/messages/UserShellMessage.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/messages/GeminiMessage.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/WelcomeOnboarding/ProviderSelectStep.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/OAuthCodeDialog.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/ErrorBoundary.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/AboutBox.tsx (1)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/components/ToolsDialog.tsx (2)
packages/cli/test-utils/ink-stub.ts (2)
  • Text (23-23)
  • Box (22-22)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/WelcomeOnboarding/SkipExitStep.tsx (1)
packages/cli/test-utils/ink-stub.ts (1)
  • Box (22-22)
packages/cli/src/ui/components/WelcomeOnboarding/AuthenticationStep.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/utils/InlineMarkdownRenderer.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/ConsentPrompt.test.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/WorkspaceMigrationDialog.tsx (2)
packages/cli/test-utils/ink-stub.ts (2)
  • Text (23-23)
  • Box (22-22)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/views/ChatList.tsx (2)
packages/cli/test-utils/ink-stub.ts (2)
  • Text (23-23)
  • Box (22-22)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/utils/MarkdownDisplay.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/LoadingIndicator.test.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/SettingsDialog.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/CacheStatsDisplay.tsx (1)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/Header.tsx (2)
packages/cli/test-utils/ink-stub.ts (2)
  • Text (23-23)
  • Box (22-22)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/messages/ToolMessage.test.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/shared/MaxSizedBox.test.tsx (3)
packages/cli/test-utils/ink-stub.ts (2)
  • Text (23-23)
  • Box (22-22)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/shared/MaxSizedBox.tsx (1)
  • MaxSizedBox (98-202)
packages/cli/src/ui/IdeIntegrationNudge.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/ThemeDialog.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/privacy/CloudFreePrivacyNotice.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/GeminiRespondingSpinner.tsx (3)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/textConstants.ts (2)
  • SCREEN_READER_RESPONDING (13-13)
  • SCREEN_READER_LOADING (11-11)
packages/cli/src/ui/components/BucketAuthConfirmation.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/PermissionsModifyTrustDialog.tsx (2)
packages/cli/test-utils/ink-stub.ts (2)
  • Text (23-23)
  • Box (22-22)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/PrepareLabel.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/FolderTrustDialog.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/Notifications.tsx (1)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/utils/TableRenderer.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • theme (237-297)
packages/cli/src/ui/components/WelcomeOnboarding/WelcomeStep.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/ToolStatsDisplay.tsx (2)
packages/cli/test-utils/ink-stub.ts (2)
  • Text (23-23)
  • Box (22-22)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/privacy/CloudPaidPrivacyNotice.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/messages/ToolMessage.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/components/messages/OAuthUrlMessage.tsx (2)
packages/cli/test-utils/ink-stub.ts (2)
  • Text (23-23)
  • Box (22-22)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
packages/cli/src/ui/App.test.tsx (2)
packages/cli/test-utils/ink-stub.ts (1)
  • Text (23-23)
packages/cli/src/ui/colors.ts (1)
  • Colors (12-78)
⏰ Context from checks skipped due to timeout of 270000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
  • GitHub Check: Test (ubuntu-latest, 24.x)
  • GitHub Check: Test (windows-latest, 24.x)
  • GitHub Check: Test (macos-latest, 24.x)
  • GitHub Check: E2E Test (Linux) - sandbox:docker
  • GitHub Check: Slow E2E - Win
  • GitHub Check: E2E Test (Linux) - sandbox:none
  • GitHub Check: E2E Test (macOS)
🔇 Additional comments (73)
packages/cli/src/ui/components/ToolsDialog.tsx (1)

82-82: ✅ Excellent implementation of the ESLint rule enforcement.

All Text components now have explicit color props, and the choice of Colors.DimComment for helper text and metadata is semantically appropriate. The changes replace the problematic dimColor prop (which caused rendering issues on TMux/Linux) with a theme-aware color token, ensuring consistent rendering across all themes.

Based on learnings, this aligns perfectly with the guidance on avoiding dimColor and using Colors.DimComment instead.

Also applies to: 106-115

packages/cli/src/ui/components/messages/UserShellMessage.tsx (1)

22-22: LGTM! Appropriate color choice for command text.

The addition of color={Colors.Foreground} correctly enforces explicit theme usage for the command text while maintaining good visual hierarchy with the AccentCyan prompt symbol. This change aligns with the PR's objective to prevent inconsistent default text colors.

packages/cli/src/ui/components/Notifications.tsx (2)

10-10: LGTM!

The Colors import is correctly added to support the theme-aware color props required by the new ESLint rule.


50-50: LGTM! Theme consistency enforced.

The explicit color={Colors.Foreground} prop correctly aligns this informational Text with the PR's objective of enforcing theme consistency. All Text components in this file now have explicit color props (either Colors.Foreground or theme.status.*), and there's no usage of the problematic dimColor prop.

packages/cli/src/ui/components/ShellConfirmationDialog.tsx (3)

92-94: LGTM - Explicit color prop correctly added to header text.

The header Text component now uses Colors.Foreground, ensuring theme consistency as required by the new ESLint rule.


95-97: LGTM - Instruction text now uses explicit theme color.

The instructional text properly uses Colors.Foreground, maintaining theme consistency across the dialog.


119-119: LGTM - Question text completed with explicit color.

The prompt text now uses Colors.Foreground, completing the theme consistency enforcement for all Text components in this dialog. Based on learnings, this approach avoids the rendering issues that would occur with dimColor on TMux/Linux terminals.

packages/cli/src/ui/components/SettingsDialog.tsx (1)

1230-1234: LGTM! Explicit color prop added correctly.

The addition of color={Colors.Foreground} to the "Apply To" header Text component correctly implements the new ESLint rule requirement for explicit color usage. The color choice is appropriate for standard header text and maintains theme consistency across the component.

packages/cli/src/ui/components/messages/OAuthUrlMessage.tsx (2)

53-55: LGTM! Correct theme color usage.

The change from Colors.Comment with dimColor to Colors.DimComment properly addresses terminal rendering issues and enforces theme consistency.

Based on learnings, dimColor has rendering issues on TMux/Linux terminals, and Colors.DimComment is the correct theme-aware property for dimmed text.


58-62: LGTM! Consistent theme color usage.

This change mirrors the fix on line 53, correctly replacing Colors.Comment with dimColor with Colors.DimComment for proper terminal rendering and theme consistency.

packages/cli/src/ui/components/views/ChatList.tsx (4)

10-10: LGTM! Colors import added correctly.

The import path and usage align with the PR objective to enforce theme consistency using explicit color props.


19-23: LGTM! Empty state now uses explicit theme color.

The addition of color={Colors.Foreground} ensures consistent rendering across all terminal environments, replacing the implicit default color.


28-28: LGTM! Header text now uses explicit theme color.

Consistent with the other changes in this file.


40-43: LGTM! Chat row text properly styled with nested colors.

The outer Text now has an explicit Colors.Foreground color which applies to the string literals (spaces, dash), while the nested Text components retain their semantic colors (theme.text.accent, theme.text.secondary). This nesting behavior is correct—nested colors override the parent.

Note: The file uses both Colors.Foreground (for new additions) and theme.text.* (for existing semantic text). Both are theme-aware approaches, and the mixed usage appears intentional.

packages/cli/src/ui/components/WelcomeOnboarding/SkipExitStep.tsx (1)

40-40: Verify that the empty Box provides the intended spacing.

An empty <Box /> with no props typically renders with zero height in a flex column layout. If the original Text element provided vertical spacing between the heading and the bullet list, this change may have inadvertently removed it.

Please verify the rendered output to confirm spacing appears as intended. If spacing is needed, add explicit layout props:

♻️ Suggested fix if spacing is needed
-        <Box />
+        <Box marginTop={1} />

Alternatively, if no spacing is needed here, remove the empty Box entirely:

         <Text color={Colors.Foreground}>To configure llxprt manually:</Text>
-        <Box />
         <Text color={Colors.Foreground}>
packages/cli/src/ui/components/WorkspaceMigrationDialog.tsx (1)

60-108: LGTM! Theme consistency correctly enforced.

All Text components now have explicit color={Colors.Foreground} props, which correctly implements the PR's theme consistency objective. The color choice is appropriate for primary informational text throughout the dialog, and the changes maintain visual consistency across all message states (migration failure, success, and initial prompt).

packages/cli/src/ui/components/PermissionsModifyTrustDialog.tsx (6)

167-169: LGTM! Appropriate color choice for header text.

The explicit color={Colors.Foreground} prop correctly enforces theme consistency for this header while preserving the bold emphasis.


170-175: LGTM! Appropriate color choice for descriptive text.

The explicit color={Colors.Comment} prop correctly applies theme-aware secondary text styling while preserving the nested accent color for the trust level value.


198-200: LGTM! Consistent header styling.

The explicit color={Colors.Foreground} prop maintains consistent theme-aware styling across dialog headers.


202-204: LGTM! Consistent label styling.

The explicit color={Colors.Comment} prop appropriately styles this descriptive label while preserving the nested accent color for the folder path.


207-209: LGTM! Consistent label styling.

The explicit color={Colors.Comment} prop maintains consistent theme-aware styling for descriptive labels throughout the component.


220-220: LGTM! Appropriate color for user prompt.

The explicit color={Colors.Foreground} prop correctly applies primary text styling to this user-facing instruction.

packages/cli/src/ui/components/OAuthCodeDialog.tsx (1)

134-136: LGTM! Theme-aware dimming correctly applied.

The change from dimColor to color={Colors.DimComment} properly addresses the TMux/Linux rendering issues while maintaining the visual intent of dimmed help text. This aligns with the PR's theme consistency enforcement.

Based on learnings, dimColor should not be used because it has rendering issues on TMux/Linux terminals. The Colors.DimComment replacement provides proper dimming across all themes.

packages/cli/src/ui/components/CacheStatsDisplay.tsx (1)

49-49: LGTM!

Explicit color={Colors.Foreground} correctly applied to the informational message, consistent with the theme enforcement objectives and other messages in this component.

packages/cli/src/ui/IdeIntegrationNudge.tsx (3)

14-14: LGTM! Import correctly added for theme colors.

The Colors import is properly added and used in the component to apply theme-aware colors to Text components.


18-18: Verify that the public type extension is intentional.

The addition of isExtensionPreInstalled to the public IdeIntegrationNudgeResult type appears unrelated to the PR's stated objective of enforcing theme consistency. While the field is used internally and may provide valuable context to consumers, this API surface change is not mentioned in the PR objectives or linked issue #1031.

Consider whether this change should be:

  • Documented in the PR description as an additional improvement
  • Split into a separate commit for clarity
  • Moved to a separate PR if it addresses a different concern

93-93: LGTM! Theme colors correctly applied.

The explicit color props properly enforce theme consistency:

  • Colors.Foreground appropriately used for the main question text
  • Colors.DimComment correctly applied to explanatory text, following the pattern of replacing dimColor usage with theme-aware colors

Based on learnings, Colors.DimComment provides proper dimming across all themes without the rendering issues that dimColor has on TMux/Linux terminals.

Also applies to: 97-97

packages/cli/src/ui/components/messages/GeminiMessage.tsx (1)

49-49: LGTM! Proper fix for dimColor rendering issue.

The change correctly replaces dimColor with color={Colors.DimComment}, eliminating the TMux/Linux terminal rendering issues while maintaining proper dimmed appearance across all themes.

packages/cli/src/ui/components/WelcomeOnboarding/AuthenticationStep.tsx (1)

168-169: LGTM! Explicit color enforcement applied correctly.

The API key label and masked value now use explicit Colors.Foreground, ensuring consistent theming and eliminating reliance on default colors.

packages/cli/src/ui/components/LBStatsDisplay.tsx (1)

35-35: LGTM! Explicit color enforcement applied correctly.

Both the StatRow value rendering (line 35) and the error message (line 52) now use explicit Colors.Foreground, ensuring all Text components in this file have proper theme-aware coloring.

Also applies to: 52-52

packages/cli/src/ui/components/ContextSummaryDisplay.tsx (1)

44-44: LGTM! Explicit color added to placeholder.

The empty placeholder Text now uses explicit Colors.Foreground, ensuring theme consistency even for height-reserving elements.

packages/cli/src/ui/components/ErrorBoundary.tsx (1)

152-154: LGTM! Appropriate use of DimComment for secondary information.

The helper text is appropriately styled with Colors.DimComment, which correctly de-emphasizes this secondary information.

Based on learnings: Using Colors.DimComment instead of dimColor prop avoids TMux/Linux rendering issues.

packages/cli/src/ui/components/WelcomeOnboarding/AuthMethodStep.tsx (1)

91-91: LGTM! Spacer element updated with explicit color.

The spacer Text component now has an explicit color prop as required by the new ESLint rule.

packages/cli/src/ui/components/FolderTrustDialog.tsx (1)

89-96: LGTM! Appropriate color choices for heading and description.

The heading uses Colors.Foreground for prominence, while the descriptive text uses Colors.DimComment for de-emphasis. This creates proper visual hierarchy.

Based on learnings: Using Colors.DimComment instead of dimColor prop avoids TMux/Linux rendering issues.

packages/cli/src/ui/components/AboutBox.tsx (1)

144-144: LGTM! Consistent color application for conditional fields.

The GCP Project and IDE Client fields now have explicit color props, making them consistent with all other fields in the AboutBox component.

Also applies to: 156-156

packages/cli/src/ui/components/ConsentPrompt.test.tsx (1)

7-7: LGTM! Test properly validates explicit color usage.

The test correctly validates that ReactNode prompts can be rendered with explicit theme colors, which aligns with the new ESLint enforcement for theme consistency.

Also applies to: 55-55

packages/cli/src/gemini.tsx (1)

81-81: LGTM! Semantic color usage is appropriate.

The InitializingComponent correctly uses theme.text.primary for the status message, which is semantically appropriate for primary UI text and aligns with the PR's objective of enforcing explicit theme colors.

Also applies to: 165-167

packages/cli/src/ui/components/Header.tsx (1)

48-48: LGTM! Color choices are semantically appropriate.

The Header correctly applies explicit colors:

  • Colors.Foreground inside Gradient components (where the gradient provides the visual effect)
  • Colors.AccentBlue for non-gradient logo (appropriate for branding)
  • Consistent treatment across all Text elements

Also applies to: 51-51, 56-56

packages/cli/src/ui/components/InputPrompt.tsx (1)

10-10: LGTM! Proper use of DimComment for placeholder text.

The InputPrompt correctly applies explicit colors throughout:

  • Colors.DimComment for placeholder text (replacing dimColor to avoid TMux/Linux rendering issues)
  • Colors.Foreground for cursor indicators and visible content
  • Consistent application across focused and unfocused states

Based on learnings, the use of Colors.DimComment instead of dimColor is the correct approach for dimmed text.

Also applies to: 893-899, 991-993, 1009-1013

packages/cli/src/ui/components/BucketAuthConfirmation.tsx (1)

157-163: LGTM! Appropriate color hierarchy for information priority.

The BucketAuthConfirmation correctly applies explicit colors with semantic hierarchy:

  • Colors.Foreground for primary bucket information
  • Colors.DimComment for secondary provider details (replacing dimColor to avoid rendering issues)

This creates a clear visual hierarchy while maintaining theme consistency.

packages/cli/src/ui/components/messages/DiffRenderer.tsx (1)

119-119: LGTM! Theme consistency properly enforced.

All Text components now have explicit color props. The replacement of dimColor with color={Colors.DimComment} is correct and addresses the TMux/Linux rendering issues. Based on learnings, Colors.DimComment provides proper dimming across all themes.

Also applies to: 127-127, 199-199, 316-317

packages/cli/src/ui/components/StatsDisplay.tsx (1)

14-14: LGTM! Explicit colors correctly applied.

All Text components now have explicit color props as required. The nested Text patterns (lines 147-151, 271-278) are valid—the outer Colors.Foreground provides the default color while inner Text elements override for highlighting specific content.

Also applies to: 147-151, 204-206, 271-278

packages/cli/src/ui/components/ThemeDialog.tsx (1)

279-286: LGTM! Headers now have explicit colors.

All three header Text components properly specify color={Colors.Foreground}, ensuring consistent theme application across the dialog.

Also applies to: 302-308, 323-325

packages/cli/src/ui/components/AuthDialog.tsx (1)

150-157: LGTM! Theme consistency correctly enforced.

All Text components now have explicit color props. The replacement of dimColor with color={Colors.DimComment} (line 159) is the correct approach to avoid TMux/Linux rendering issues. Based on learnings, this provides proper dimming across all themes.

Also applies to: 159-163, 180-183

packages/cli/src/ui/components/WelcomeOnboarding/CompletionStep.tsx (1)

97-97: LGTM! Explicit colors added consistently.

All modified Text components now have explicit color={Colors.Foreground}. The change from "✓" to "[OK]" (line 99) appears intentional, likely for better terminal compatibility or accessibility.

Also applies to: 99-99, 136-136

packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx (1)

231-231: LGTM! Excellent adherence to the new color requirements.

All Text components now have explicit color props, and the dimColor usage has been correctly replaced with color={Colors.DimComment}, which prevents the TMux/Linux rendering issues mentioned in the learnings.

Based on learnings, the replacement of dimColor with Colors.DimComment is the correct approach.

Also applies to: 313-315, 328-330, 389-391, 410-416, 433-435

packages/cli/src/ui/components/ToolStatsDisplay.tsx (2)

43-43: LGTM! Consistent color usage for numeric displays.

All numeric values now use Colors.Foreground, providing clear visual consistency across the stats display.

Also applies to: 49-49, 166-166


173-173: LGTM! Good visual hierarchy with label styling.

The use of Colors.DimComment for labels creates appropriate visual hierarchy. The conditional color logic at lines 218-221 appropriately falls back to Colors.Foreground when there are no reviews.

Also applies to: 183-183, 193-193, 215-215, 218-221

eslint-rules/ink-text-color-required.js (3)

11-27: LGTM! Well-structured rule metadata.

The rule metadata is appropriate with clear error messages that explain both the problem and the solution, including guidance about TMux/Linux rendering issues.


44-77: LGTM! Prop validation logic is sound.

Both the dimColor prohibition check and the color requirement check are implemented correctly, using proper AST node type filtering and attribute inspection.


35-41: Remove misleading comment about JSXMemberExpression handling.

The comment on line 35 claims to handle JSXMemberExpression (e.g., Ink.Text), but the implementation only handles JSXIdentifier components. However, the codebase exclusively uses named imports (import { Text } from 'ink') with simple <Text> elements. No namespaced components like <Ink.Text> are used anywhere in the repository.

Since the actual code pattern doesn't occur in practice, update the comment to reflect reality:

- // Handle both simple names and JSXMemberExpressions (e.g., Ink.Text)
+ // Handle simple Text component names
  const componentName =
    tagName.type === 'JSXIdentifier' ? tagName.name : null;

Likely an incorrect or invalid review comment.

eslint.config.js (1)

18-18: LGTM! ESLint configuration correctly integrates the new rule.

The new ink-text-color-required rule is properly imported, registered under the custom plugin namespace, and activated with 'error' severity. The configuration follows the established pattern for custom rules in this config.

Also applies to: 341-341, 349-349

packages/cli/src/ui/utils/TableRenderer.tsx (1)

338-338: LGTM: Semantic theme color applied.

The change appropriately uses theme.text.primary for the table row wrapper, providing consistent theming while allowing child elements to override with their specific colors (headers use theme.text.accent, borders use theme.border.default). This is the correct approach for semantic theming.

packages/cli/src/ui/components/WelcomeOnboarding/WelcomeStep.tsx (1)

45-45: LGTM: Consistent spacer styling applied.

The change correctly adds an explicit color prop to the spacer Text element, maintaining consistency with other onboarding steps (e.g., ModelSelectStep.tsx).

packages/cli/src/ui/components/messages/ToolMessage.tsx (2)

191-193: LGTM: Correct fix for dimColor rendering issue.

The change from using dimColor prop to color={Colors.DimComment} properly addresses the TMux/Linux terminal rendering issue where dimColor appears as highlighted bright text. Colors.DimComment provides theme-aware dimming that works consistently across all environments.

Based on learnings, this is the recommended approach for dimmed text.


318-327: LGTM: Explicit color added to wrapper Text.

The explicit color={Colors.Foreground} prop on the wrapper Text element ensures proper theme consistency. Child Text elements correctly override with their specific colors (nameColor, Colors.Gray), which is the expected behavior in Ink.

packages/cli/src/ui/components/GeminiRespondingSpinner.tsx (1)

13-13: LGTM: Complete theme enforcement for all Text elements.

The changes correctly add explicit color={Colors.Foreground} props to all Text components in this file, covering:

  • Screen reader responding state (line 35)
  • Screen reader loading state (line 41)
  • Non-responding display state (line 43)

This ensures consistent theming across all rendering paths without altering any logic.

Also applies to: 35-35, 41-41, 43-43

packages/cli/src/ui/components/shared/MaxSizedBox.tsx (2)

175-177: LGTM! Prop ordering allows segment-specific color overrides.

The explicit color={Colors.Foreground} provides a theme-aware default while {...segment.props} allows individual segments to override with their own colors. This is the correct pattern for maintaining both consistency and flexibility.


180-180: LGTM! Empty line placeholder correctly styled.

The empty line case (single space) now has explicit foreground color, ensuring consistent rendering across themes.

packages/cli/src/ui/privacy/CloudFreePrivacyNotice.tsx (1)

78-82: LGTM! Privacy notice text correctly themed.

All informational text blocks now explicitly use color={Colors.Foreground} while preserving nested accent colors for emphasis (AccentBlue, AccentPurple). This ensures consistent theming while maintaining visual hierarchy.

Also applies to: 84-90, 92-102, 105-107, 115-118

packages/cli/src/ui/components/messages/ToolGroupMessage.test.tsx (2)

20-20: LGTM! Test mocks correctly updated with explicit colors.

The mock components now include color={Colors.Foreground} to match the enforced color requirement.

Also applies to: 58-61, 75-77


50-50: Verify unrelated test change: status symbol modification.

The success status symbol changed from "✓" to "[OK]". This appears unrelated to the color enforcement objective and may be an unintended modification.

Can you confirm whether this symbol change is intentional? If it's to improve test readability or avoid Unicode rendering issues, that's reasonable. Otherwise, it should be reverted to maintain the original test behavior.

packages/cli/src/ui/components/LoadingIndicator.test.tsx (1)

13-13: LGTM! Test mocks and fixtures correctly styled.

All test components and fixtures now use explicit color={Colors.Foreground}, ensuring test expectations match the enforced theming requirements.

Also applies to: 25-28, 123-123

packages/cli/src/ui/utils/MarkdownDisplay.tsx (3)

118-121: LGTM! Regular text and table content correctly themed.

Text elements now explicitly use color={Colors.Foreground} for consistent theme-aware rendering.

Also applies to: 157-160


166-166: LGTM! Horizontal rule correctly uses theme-aware dimmed color.

Using color={Colors.DimComment} instead of the dimColor prop is correct. Based on learnings, dimColor has rendering issues on TMux/Linux terminals, while Colors.DimComment provides proper theme-aware dimming across all environments.


206-209: LGTM! List items and fallback text correctly themed.

All Text elements now have explicit color={Colors.Foreground}, ensuring consistent rendering across themes.

Also applies to: 388-389, 391-393

packages/cli/src/ui/utils/InlineMarkdownRenderer.tsx (1)

27-27: LGTM! Theme consistency correctly enforced.

All Text components now have explicit color props (color={Colors.Foreground} for standard text, color={Colors.AccentPurple} for code, color={Colors.AccentBlue} for links), aligning with the PR's theme enforcement objectives. The rendering logic is unchanged and the color application is consistent across all markdown element types.

Also applies to: 39-42, 56-59, 74-77, 84-90, 114-118, 127-133, 146-161

packages/cli/src/ui/privacy/CloudPaidPrivacyNotice.tsx (1)

33-44: LGTM! Theme consistency correctly enforced.

All Text components now have explicit color={Colors.Foreground} props, and the HTML entities (&quot;) are appropriately used for quotes in JSX. The changes align with the PR's theme enforcement objectives without altering functionality.

Also applies to: 47-54

packages/cli/src/ui/privacy/GeminiPrivacyNotice.tsx (1)

31-41: LGTM! Theme consistency correctly enforced.

All Text components now have explicit color props. The main content uses color={Colors.Foreground} while preserving inner accent-colored spans for reference markers, and reference links are consistently wrapped with foreground color. Changes align with the theme enforcement objectives.

Also applies to: 43-57

packages/cli/src/ui/privacy/MultiProviderPrivacyNotice.tsx (1)

125-135: LGTM! Theme consistency correctly enforced.

All Text components now have explicit color props (color={Colors.Foreground}) across all conditional branches (local, provider, unknown). The emphasized "NOT" text is properly colored and bolded, maintaining consistency with the theme enforcement objectives while preserving the original logic and content.

Also applies to: 149-152, 156-171, 175-182

packages/cli/src/ui/components/messages/ToolMessage.test.tsx (1)

13-13: LGTM! Test mocks correctly updated for theme consistency.

The test mocks now use color={Colors.Foreground} on all Text components, ensuring they match the actual component behavior after the theme consistency enforcement. This keeps the tests aligned with production rendering.

Also applies to: 24-28, 37-37, 42-42

packages/cli/src/ui/components/shared/MaxSizedBox.test.tsx (2)

11-11: LGTM! Colors import added correctly.

The import path is correct and Colors.Foreground is used consistently throughout the test file to satisfy the new ESLint rule requiring explicit color props on Text components.


26-26: LGTM! All Text components properly updated with explicit color props.

Every Text component in the test file now has color={Colors.Foreground}, which correctly satisfies the new ESLint rule requirement. The consistent use of the Foreground color is appropriate for test content, and test expectations correctly verify text layout behavior rather than styling.

Also applies to: 39-45, 59-65, 79-81, 100-112, 142-144, 162-165, 179-185, 199-205, 230-232, 249-249, 267-270, 284-287, 301-304, 318-321, 335-350, 364-370, 386-393, 413-413, 437-437

Comment on lines +302 to +304
const mockTodoPanel = vi.fn(() => (
<Text color={Colors.Foreground}>Mock Todo Panel</Text>
));
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# Check the import statements in App.test.tsx
head -50 packages/cli/src/ui/App.test.tsx | cat -n

Repository: vybestack/llxprt-code

Length of output: 1964


🏁 Script executed:

# More comprehensive search for Colors import with various patterns
rg -n "import.*Colors" packages/cli/src/ui/App.test.tsx

Repository: vybestack/llxprt-code

Length of output: 47


🏁 Script executed:

# Check if Colors is imported anywhere in the file with case-insensitive search
rg -in "colors" packages/cli/src/ui/App.test.tsx

Repository: vybestack/llxprt-code

Length of output: 125


🏁 Script executed:

# View lines around 302-304 to see the actual code context
sed -n '295,310p' packages/cli/src/ui/App.test.tsx | cat -n

Repository: vybestack/llxprt-code

Length of output: 509


🏁 Script executed:

# Check if Colors might be defined or exported elsewhere in the file
rg -n "Colors\s*=" packages/cli/src/ui/App.test.tsx

Repository: vybestack/llxprt-code

Length of output: 47


🏁 Script executed:

# Check the entire imports section more thoroughly
head -100 packages/cli/src/ui/App.test.tsx | grep -n "import\|from"

Repository: vybestack/llxprt-code

Length of output: 1240


🏁 Script executed:

# Search for Colors export/definition across the codebase
rg -n "export.*Colors" packages/cli/src --type ts --type tsx

Repository: vybestack/llxprt-code

Length of output: 92


🏁 Script executed:

# Look for files that might export Colors (colors.ts, constants.ts, etc.)
fd -e ts -e tsx | xargs rg -l "Colors\s*=" | head -10

Repository: vybestack/llxprt-code

Length of output: 475


🏁 Script executed:

# Search for Colors export in theme and color-related files
rg -n "export.*Colors" packages/cli/src/ui/themes/

Repository: vybestack/llxprt-code

Length of output: 1491


🏁 Script executed:

# Search for "Colors" specifically in the semantic-tokens file
rg -n "Colors" packages/cli/src/ui/themes/semantic-tokens.ts

Repository: vybestack/llxprt-code

Length of output: 397


🏁 Script executed:

# Check if there's a colors or constants file that might export Colors
fd "colors\|constants" packages/cli/src/ui -type f

Repository: vybestack/llxprt-code

Length of output: 235


🏁 Script executed:

# Find the colors.js file
fd "colors" packages/cli/src/ui -type f

Repository: vybestack/llxprt-code

Length of output: 235


🏁 Script executed:

# Check the colors.js file for Colors export
cat packages/cli/src/ui/colors.js | head -50

Repository: vybestack/llxprt-code

Length of output: 126


🏁 Script executed:

# Search for all imports from theme-compat or colors in App.test.tsx
rg -n "theme-compat\|colors" packages/cli/src/ui/App.test.tsx

Repository: vybestack/llxprt-code

Length of output: 47


🏁 Script executed:

# Search for colors file more broadly
find packages/cli/src -name "*colors*" -o -name "*Colors*"

Repository: vybestack/llxprt-code

Length of output: 133


🏁 Script executed:

# Check if colors might be in a different location
rg -l "export.*Colors" packages/cli/src

Repository: vybestack/llxprt-code

Length of output: 267


🏁 Script executed:

# Look at what's actually imported in App.test.tsx more comprehensively
cat packages/cli/src/ui/App.test.tsx | head -50

Repository: vybestack/llxprt-code

Length of output: 1614


🏁 Script executed:

# Check the colors.ts file to see if Colors is exported
cat packages/cli/src/ui/colors.ts

Repository: vybestack/llxprt-code

Length of output: 8232


🏁 Script executed:

# Check entire App.test.tsx imports section more thoroughly (all 100+ lines if needed)
sed -n '1,100p' packages/cli/src/ui/App.test.tsx | grep -i "colors\|import"

Repository: vybestack/llxprt-code

Length of output: 1118


🏁 Script executed:

# Check the full imports section of App.test.tsx to see all imports
sed -n '1,150p' packages/cli/src/ui/App.test.tsx | cat -n

Repository: vybestack/llxprt-code

Length of output: 7184


🏁 Script executed:

# Verify if Colors is imported anywhere in the entire file
rg -n "Colors" packages/cli/src/ui/App.test.tsx

Repository: vybestack/llxprt-code

Length of output: 125


🏁 Script executed:

# Double-check the entire file for any Colors import with various patterns
rg -n "Colors" packages/cli/src/ui/App.test.tsx | head -20

Repository: vybestack/llxprt-code

Length of output: 125


🏁 Script executed:

# Check if there's an import statement near the usage (lines 290-310)
sed -n '290,310p' packages/cli/src/ui/App.test.tsx | cat -n

Repository: vybestack/llxprt-code

Length of output: 710


Add missing Colors import to App.test.tsx.

The code uses Colors.Foreground on line 303 but the Colors object is not imported. Add the import statement:

import { Colors } from './colors.js';
🤖 Prompt for AI Agents
In @packages/cli/src/ui/App.test.tsx around lines 302 - 304, App.test.tsx
references Colors.Foreground inside the mockTodoPanel (mockTodoPanel =
vi.fn(...) uses Colors.Foreground) but Colors is not imported; add an import for
the Colors symbol from './colors.js' at the top of the file so Colors.Foreground
is defined and the test compiles, ensuring the import is placed alongside the
other imports.

{nightly ? (
<Gradient colors={Colors.GradientColors}>
<Text>
<Text color={Colors.Foreground}>
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# First, let's look at the Footer.tsx file around the flagged lines
head -n 290 packages/cli/src/ui/components/Footer.tsx | tail -n 20

Repository: vybestack/llxprt-code

Length of output: 927


🏁 Script executed:

# Also check around line 371
sed -n '360,380p' packages/cli/src/ui/components/Footer.tsx

Repository: vybestack/llxprt-code

Length of output: 864


🏁 Script executed:

# Check the imports to understand the Gradient and Color usage
head -n 30 packages/cli/src/ui/components/Footer.tsx

Repository: vybestack/llxprt-code

Length of output: 986


🌐 Web query:

ink-gradient npm library explicit color props behavior

💡 Result:

Short answer: ink-gradient’s color props are mutually exclusive with the built‑in name prop — you either pass name (a preset string) or colors (an array), not both. The colors prop accepts string[] (CSS/tinycolor strings) or object[] (tinycolor2-like color objects). The package types enforce an XOR between name and colors. [1][2]

Sources:

  • ink-gradient README / npm page. [1]
  • @types/ink-gradient type definitions (shows XOR PropsName | PropsColor and accepted colors types). [2]

🏁 Script executed:

# Search for ink-gradient package documentation or source
find . -name "package.json" | xargs grep -l "ink-gradient" | head -5

Repository: vybestack/llxprt-code

Length of output: 92


🏁 Script executed:

# Check if there are any other Gradient usages in the codebase
rg -n "Gradient" packages/cli/src/ui/components/ -A 3

Repository: vybestack/llxprt-code

Length of output: 4357


🌐 Web query:

ink-gradient child element color property override how does it work

💡 Result:

Short answer: ink-gradient (the npm package for Ink terminal apps) applies a gradient by rendering its child(ren) with gradient colors — but it only affects text nodes the Gradient component actually paints. If a child component explicitly sets its own color/backgroundColor prop, that explicit prop takes precedence and will override the gradient’s color for that child. Ink’s normal inheritance rules (backgroundColor is inherited by Text children unless they specify their own) also apply. Source: ink-gradient README and Ink docs. [1][2]

References

  • ink-gradient (README / usage). [1]
  • Ink (React for CLIs) — Text/backgroundColor inheritance and behavior. [2]

🏁 Script executed:

# Check the Colors module to understand Colors.Foreground and Colors.GradientColors
find . -name "colors.ts" -o -name "colors.js" | head -3

Repository: vybestack/llxprt-code

Length of output: 96


Remove explicit color={Colors.Foreground} from Text components inside Gradient wrappers to allow gradients to render.

Explicit color props on child Text components override the gradient effect. The web search results confirm that when a child explicitly sets its color prop, that prop takes precedence and prevents the Gradient component from applying its gradient coloring. The gradient wrapper becomes ineffective.

This affects Footer.tsx (lines 280, 371), Header.tsx (lines 48, 56), and StatsDisplay.tsx (line 204). Remove the explicit color={Colors.Foreground} from these Text children and let the Gradient component control the text coloring in nightly mode.

🤖 Prompt for AI Agents
In @packages/cli/src/ui/components/Footer.tsx at line 280, Remove explicit color
props from Text elements that are direct children of Gradient wrappers so the
Gradient can control coloring; specifically edit Footer (Text instances
referenced in Footer.tsx near the Gradient wrappers, e.g., the Text currently
using color={Colors.Foreground} at the locations noted), Header (Text children
inside the Gradient in Header.tsx), and StatsDisplay (Text inside the Gradient
in StatsDisplay.tsx) and simply delete the color={Colors.Foreground} prop from
those Text elements—leave all other props intact so the Gradient component can
apply its gradient in nightly mode.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 7, 2026

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 45.51% 45.51% 55.06% 75.43%
Core 71.05% 71.05% 73.65% 78.8%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   45.51 |    75.43 |   55.06 |   45.51 |                   
 src               |      32 |    46.06 |      50 |      32 |                   
  gemini.tsx       |   14.62 |    57.14 |   28.57 |   14.62 | ...,334-1125,1133 
  ...ractiveCli.ts |   69.23 |    47.72 |   33.33 |   69.23 | ...50-251,284-292 
  ...liCommands.ts |   97.22 |       60 |     100 |   97.22 | 39-40             
  ...ActiveAuth.ts |      36 |    35.71 |      80 |      36 | ...64-169,186-195 
 src/auth          |   46.47 |    65.37 |   64.58 |   46.47 |                   
  ...andlerImpl.ts |   90.72 |    84.61 |   71.42 |   90.72 | ...48-149,155-159 
  ...henticator.ts |    92.3 |    95.23 |   66.66 |    92.3 | 80-88             
  ...ketManager.ts |     100 |      100 |     100 |     100 |                   
  ...h-provider.ts |   58.98 |    59.57 |   66.66 |   58.98 | ...84-518,526-549 
  ...h-provider.ts |   40.74 |    85.71 |   69.23 |   40.74 | ...72-485,489-531 
  ...h-provider.ts |   17.74 |       90 |   27.77 |   17.74 | ...31-562,568-587 
  ...l-oauth-ui.ts |   54.16 |      100 |      40 |   54.16 | 26-32,38-39,57-61 
  ...h-callback.ts |   82.94 |    75.67 |    90.9 |   82.94 | ...74-775,788-790 
  migration.ts     |       0 |        0 |       0 |       0 | 1-69              
  oauth-manager.ts |   41.25 |    53.79 |   70.83 |   41.25 | ...1560,1568-1798 
  ...h-provider.ts |   36.15 |    31.81 |      40 |   36.15 | ...52-490,498-534 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/commands      |   70.45 |      100 |      25 |   70.45 |                   
  extensions.tsx   |   55.55 |      100 |       0 |   55.55 | 21-31,35          
  mcp.ts           |   94.11 |      100 |      50 |   94.11 | 26                
 ...nds/extensions |   45.47 |    97.14 |   32.14 |   45.47 |                   
  disable.ts       |   17.54 |      100 |       0 |   17.54 | 17-30,36-63,65-69 
  enable.ts        |   16.12 |      100 |       0 |   16.12 | 17-36,42-68,70-74 
  install.ts       |   93.22 |    95.45 |   66.66 |   93.22 | 138,141-147       
  link.ts          |   26.31 |      100 |       0 |   26.31 | 20-37,44-49,51-54 
  list.ts          |   32.14 |      100 |       0 |   32.14 | 11-27,34-35       
  new.ts           |     100 |      100 |     100 |     100 |                   
  uninstall.ts     |   44.11 |      100 |   33.33 |   44.11 | 14-22,34-39,42-45 
  update.ts        |   10.94 |      100 |       0 |   10.94 | ...42-157,159-163 
 ...les/mcp-server |       0 |        0 |       0 |       0 |                   
  example.ts       |       0 |        0 |       0 |       0 | 1-60              
 src/commands/mcp  |   97.15 |    86.44 |    90.9 |   97.15 |                   
  add.ts           |     100 |    96.15 |     100 |     100 | 210               
  list.ts          |   90.65 |    80.76 |      80 |   90.65 | ...11-113,138-139 
  remove.ts        |     100 |    71.42 |     100 |     100 | 19-23             
 src/config        |   84.09 |     79.6 |   75.55 |   84.09 |                   
  auth.ts          |   90.69 |    89.47 |     100 |   90.69 | 19-20,57-58       
  ...alSettings.ts |   86.66 |    88.88 |     100 |   86.66 | 40-41,44-47       
  config.ts        |   78.37 |    81.78 |      76 |   78.37 | ...1765,1768-1772 
  extension.ts     |   80.06 |    89.26 |   78.78 |   80.06 | ...87-788,791-792 
  keyBindings.ts   |     100 |      100 |     100 |     100 |                   
  paths.ts         |     100 |      100 |     100 |     100 |                   
  ...eBootstrap.ts |      86 |     82.5 |      90 |      86 | ...51-753,762-763 
  sandboxConfig.ts |   66.66 |    47.77 |   89.47 |   66.66 | ...87-494,512-513 
  ...oxProfiles.ts |    8.53 |      100 |       0 |    8.53 | 47-48,51-129      
  settings.ts      |   86.59 |    75.73 |      72 |   86.59 | ...73-774,828-829 
  ...ingsSchema.ts |     100 |      100 |     100 |     100 |                   
  ...tedFolders.ts |   97.94 |    95.45 |     100 |   97.94 | 86,180-181        
  welcomeConfig.ts |   21.05 |      100 |       0 |   21.05 | ...70,73-78,81-82 
 ...fig/extensions |    63.6 |     87.5 |   83.78 |    63.6 |                   
  ...Enablement.ts |   95.37 |    95.52 |     100 |   95.37 | ...87-189,233-235 
  github.ts        |   44.11 |    86.79 |   54.54 |   44.11 | ...57-344,395-448 
  update.ts        |   62.33 |    46.15 |   66.66 |   62.33 | ...19-145,161-169 
  ...ableSchema.ts |     100 |      100 |     100 |     100 |                   
  variables.ts     |   95.34 |    89.47 |     100 |   95.34 | 30-31             
 src/constants     |     100 |      100 |     100 |     100 |                   
  historyLimits.ts |     100 |      100 |     100 |     100 |                   
 src/extensions    |   65.75 |    57.89 |      75 |   65.75 |                   
  ...utoUpdater.ts |   65.75 |    57.89 |      75 |   65.75 | ...49-450,459,461 
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 ...egration-tests |   90.72 |    84.61 |     100 |   90.72 |                   
  test-utils.ts    |   90.72 |    84.61 |     100 |   90.72 | ...01,219-220,230 
 src/patches       |       0 |        0 |       0 |       0 |                   
  is-in-ci.ts      |       0 |        0 |       0 |       0 | 1-17              
 src/providers     |   82.64 |    68.29 |   83.67 |   82.64 |                   
  IFileSystem.ts   |    86.2 |    85.71 |   85.71 |    86.2 | 51-52,67-68       
  ...Precedence.ts |   94.59 |    86.66 |     100 |   94.59 | 40-41             
  index.ts         |       0 |        0 |       0 |       0 | 1-19              
  ...gistration.ts |   77.94 |    68.75 |   33.33 |   77.94 | ...,93-97,103-104 
  ...derAliases.ts |   74.35 |    70.37 |     100 |   74.35 | ...27-133,138-139 
  ...onfigUtils.ts |   92.45 |       75 |     100 |   92.45 | 25-29             
  ...erInstance.ts |   83.64 |    64.75 |   88.46 |   83.64 | ...49-753,770-774 
  types.ts         |       0 |        0 |       0 |       0 | 1-8               
 ...viders/logging |   87.59 |    88.63 |   63.63 |   87.59 |                   
  ...rvice-impl.ts |   44.44 |        0 |       0 |   44.44 | 21-22,25-30,36-37 
  git-stats.ts     |   94.59 |    90.69 |     100 |   94.59 | ...48-149,180-181 
 src/runtime       |   67.09 |    72.04 |   70.24 |   67.09 |                   
  ...imeAdapter.ts |   97.03 |    89.65 |     100 |   97.03 | ...38,344-345,541 
  ...etFailover.ts |   98.93 |    93.54 |     100 |   98.93 | 205               
  messages.ts      |      20 |      100 |       0 |      20 | ...0,38-66,74-102 
  ...pplication.ts |   82.64 |    71.31 |      70 |   82.64 | ...59-662,673-674 
  ...extFactory.ts |   91.28 |    72.41 |     100 |   91.28 | ...63-266,351-358 
  ...meSettings.ts |   55.44 |    66.55 |   56.06 |   55.44 | ...2169,2194-2248 
 src/services      |   71.55 |    87.34 |   82.35 |   71.55 |                   
  ...mandLoader.ts |     100 |      100 |     100 |     100 |                   
  ...ardService.ts |    91.3 |    33.33 |     100 |    91.3 | 35-36             
  ...andService.ts |     100 |      100 |     100 |     100 |                   
  ...mandLoader.ts |   88.77 |    90.47 |     100 |   88.77 | ...79-184,258-265 
  ...omptLoader.ts |   30.68 |    81.25 |      50 |   30.68 | ...80-281,284-288 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...mpt-processors |   97.56 |    94.11 |     100 |   97.56 |                   
  ...tProcessor.ts |     100 |      100 |     100 |     100 |                   
  ...lProcessor.ts |   97.36 |    93.61 |     100 |   97.36 | 77-78,202-203     
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...o-continuation |   86.01 |     78.4 |   94.11 |   86.01 |                   
  ...ionService.ts |   86.01 |     78.4 |   94.11 |   86.01 | ...94,562,588-589 
 src/settings      |   62.29 |    78.07 |     100 |   62.29 |                   
  ...alSettings.ts |   61.87 |    79.43 |     100 |   61.87 | ...26-437,440-446 
  ...aramParser.ts |   71.42 |    57.14 |     100 |   71.42 | 21-22,24-25,30-31 
 src/test-utils    |   57.56 |    78.57 |   42.85 |   57.56 |                   
  ...eExtension.ts |     100 |      100 |     100 |     100 |                   
  ...omMatchers.ts |   21.21 |      100 |       0 |   21.21 | 22-50             
  ...andContext.ts |     100 |      100 |     100 |     100 |                   
  render.tsx       |       0 |        0 |       0 |       0 | 1-37              
  ...e-testing.tsx |       0 |        0 |       0 |       0 | 1-54              
  ...iderConfig.ts |       0 |        0 |       0 |       0 | 1-19              
 src/ui            |   16.36 |    98.36 |   33.33 |   16.36 |                   
  App.tsx          |   33.89 |      100 |       0 |   33.89 | 50-86,92-99       
  AppContainer.tsx |    5.38 |      100 |       0 |    5.38 | 144-153,182-2292  
  ...tionNudge.tsx |       8 |      100 |       0 |       8 | 27-102            
  colors.ts        |   39.92 |      100 |   26.78 |   39.92 | ...86-287,291-292 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...derOptions.ts |     100 |      100 |     100 |     100 |                   
  keyMatchers.ts   |   95.65 |    96.29 |     100 |   95.65 | 29-30             
  ...ntsEnabled.ts |     100 |      100 |     100 |     100 |                   
  ...submission.ts |     100 |      100 |     100 |     100 |                   
  ...tic-colors.ts |     100 |      100 |     100 |     100 |                   
  textConstants.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/commands   |   65.72 |    75.32 |   63.95 |   65.72 |                   
  aboutCommand.ts  |   74.81 |       24 |     100 |   74.81 | ...05,112-113,140 
  authCommand.ts   |   74.95 |     84.4 |   83.33 |   74.95 | ...39-642,652-676 
  ...urlCommand.ts |      30 |      100 |       0 |      30 | 20-40             
  bugCommand.ts    |   79.16 |     37.5 |     100 |   79.16 | 32-35,42,79-88    
  chatCommand.ts   |   63.38 |    77.27 |      50 |   63.38 | ...87-509,526-536 
  clearCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...essCommand.ts |     100 |    88.88 |     100 |     100 | 71                
  copyCommand.ts   |   98.27 |    94.44 |     100 |   98.27 | 37                
  debugCommands.ts |   13.29 |      100 |       0 |   13.29 | ...48,455,462,469 
  ...icsCommand.ts |    62.5 |    57.14 |   33.33 |    62.5 | ...88,320,427-432 
  ...ryCommand.tsx |   16.86 |      100 |       0 |   16.86 | ...38-148,155-179 
  docsCommand.ts   |     100 |      100 |     100 |     100 |                   
  ...extCommand.ts |   93.18 |    77.77 |     100 |   93.18 | 108-113           
  editorCommand.ts |     100 |      100 |     100 |     100 |                   
  ...onsCommand.ts |   91.86 |    88.88 |     100 |   91.86 | 86-94,96          
  helpCommand.ts   |     100 |      100 |     100 |     100 |                   
  ideCommand.ts    |   66.35 |    68.96 |   55.55 |   66.35 | ...22-225,233-240 
  initCommand.ts   |   83.33 |    71.42 |   66.66 |   83.33 | 35-39,41-85       
  keyCommand.ts    |     100 |    77.77 |     100 |     100 | 47                
  ...ileCommand.ts |   11.11 |      100 |       0 |   11.11 | 23-134            
  ...ingCommand.ts |   10.96 |      100 |       0 |   10.96 | ...59-528,545-556 
  logoutCommand.ts |   15.62 |      100 |       0 |   15.62 | 21-85             
  mcpCommand.ts    |   82.35 |    82.22 |   83.33 |   82.35 | ...09-410,428-429 
  memoryCommand.ts |   88.82 |    83.87 |     100 |   88.82 | 69-83,96-101,152  
  modelCommand.ts  |   25.71 |      100 |       0 |   25.71 | 21-51             
  mouseCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...onsCommand.ts |     100 |      100 |     100 |     100 |                   
  ...iesCommand.ts |   97.02 |    82.85 |     100 |   97.02 | 27,40-41          
  ...acyCommand.ts |   61.53 |      100 |       0 |   61.53 | 22-26             
  ...ileCommand.ts |   65.08 |    72.03 |      90 |   65.08 | ...08-913,932-945 
  ...derCommand.ts |   53.12 |    30.55 |      80 |   53.12 | ...58-262,270-275 
  quitCommand.ts   |   34.48 |      100 |       0 |   34.48 | 16-35             
  ...oreCommand.ts |   92.53 |     87.5 |     100 |   92.53 | ...,90-91,120-125 
  setCommand.ts    |   81.68 |    77.27 |      80 |   81.68 | ...77-782,824-837 
  ...ngsCommand.ts |     100 |      100 |     100 |     100 |                   
  ...hubCommand.ts |     100 |      100 |     100 |     100 |                   
  statsCommand.ts  |   94.33 |     90.9 |     100 |   94.33 | 26-34             
  statusCommand.ts |   13.63 |      100 |       0 |   13.63 | 20-87             
  ...entCommand.ts |   79.57 |    72.04 |   83.33 |   79.57 | ...67-880,883-896 
  ...tupCommand.ts |     100 |      100 |     100 |     100 |                   
  themeCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...matCommand.ts |   26.66 |      100 |       0 |   26.66 | 33-92             
  toolsCommand.ts  |   84.98 |     74.6 |     100 |   84.98 | ...85-294,307-308 
  types.ts         |     100 |      100 |     100 |     100 |                   
  ...ileCommand.ts |   61.11 |      100 |       0 |   61.11 | 16-22             
  vimCommand.ts    |   44.44 |      100 |       0 |   44.44 | 14-24             
 ...ommands/schema |   96.22 |    91.02 |    92.3 |   96.22 |                   
  index.ts         |   96.45 |    91.61 |     100 |   96.45 | ...08-412,423-424 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 src/ui/components |   10.76 |    35.95 |     2.5 |   10.76 |                   
  AboutBox.tsx     |    4.06 |      100 |       0 |    4.06 | 27-160            
  AsciiArt.ts      |     100 |      100 |     100 |     100 |                   
  AuthDialog.tsx   |    6.33 |      100 |       0 |    6.33 | 27-193            
  ...nProgress.tsx |   16.66 |      100 |       0 |   16.66 | 18-62             
  ...Indicator.tsx |   15.15 |      100 |       0 |   15.15 | 17-47             
  ...firmation.tsx |    7.31 |      100 |       0 |    7.31 | 45-179            
  ...tsDisplay.tsx |    7.69 |      100 |       0 |    7.69 | 23-34,38-156      
  CliSpinner.tsx   |   38.46 |      100 |       0 |   38.46 | 16-24             
  Composer.tsx     |   10.86 |      100 |       0 |   10.86 | 24-68             
  ...entPrompt.tsx |   18.75 |      100 |       0 |   18.75 | 21-51             
  ...ryDisplay.tsx |   21.05 |      100 |       0 |   21.05 | 17-35             
  ...ryDisplay.tsx |    4.93 |      100 |       0 |    4.93 | 26-112            
  ...geDisplay.tsx |       0 |        0 |       0 |       0 | 1-37              
  ...gProfiler.tsx |   17.88 |      100 |       0 |   17.88 | ...71-116,120-199 
  ...esDisplay.tsx |   10.52 |      100 |       0 |   10.52 | 24-82             
  ...ogManager.tsx |   11.76 |      100 |       0 |   11.76 | 48-314            
  ...ngsDialog.tsx |    6.53 |      100 |       0 |    6.53 | 27-189            
  ...rBoundary.tsx |   10.16 |        0 |       0 |   10.16 | ...16-161,179-191 
  ...ustDialog.tsx |   15.73 |      100 |       0 |   15.73 | 31-123            
  Footer.tsx       |    8.94 |      100 |     100 |    8.94 | ...30-508,512-525 
  ...ngSpinner.tsx |    40.9 |      100 |       0 |    40.9 | 31-47             
  Header.tsx       |    17.5 |      100 |       0 |    17.5 | 22-62             
  Help.tsx         |    3.17 |      100 |       0 |    3.17 | 17-179            
  ...emDisplay.tsx |   18.32 |      100 |       0 |   18.32 | 50-180            
  InputPrompt.tsx  |    37.5 |    37.34 |   66.66 |    37.5 | ...6-884,898-1047 
  ...tsDisplay.tsx |    4.41 |      100 |       0 |    4.41 | 26-37,41-249      
  ...utManager.tsx |       0 |        0 |       0 |       0 | 1-97              
  ...ileDialog.tsx |    6.89 |      100 |       0 |    6.89 | 20-119            
  ...Indicator.tsx |   14.54 |      100 |       0 |   14.54 | 24-81             
  ...ingDialog.tsx |    4.52 |      100 |       0 |    4.52 | ...9,84-90,93-354 
  ...geDisplay.tsx |       0 |        0 |       0 |       0 | 1-40              
  ...tsDisplay.tsx |    6.28 |      100 |       0 |    6.28 | 33-52,56-214      
  ...fications.tsx |    14.1 |      100 |       0 |    14.1 | 28-105            
  ...odeDialog.tsx |    7.31 |      100 |       0 |    7.31 | 30-140            
  ...ustDialog.tsx |    5.75 |      100 |       0 |    5.75 | 29-234            
  PrepareLabel.tsx |   13.33 |      100 |       0 |   13.33 | 20-48             
  ...derDialog.tsx |    3.84 |      100 |       0 |    3.84 | 22-272            
  ...delDialog.tsx |    2.99 |      100 |       0 |    2.99 | 23-361            
  ...eKeyInput.tsx |       0 |        0 |       0 |       0 | 1-138             
  ...ryDisplay.tsx |      50 |      100 |       0 |      50 | 15-17             
  ...ngsDialog.tsx |    1.87 |      100 |       0 |    1.87 | ...9-108,111-1262 
  ...ionDialog.tsx |   13.95 |      100 |       0 |   13.95 | 35-125            
  ...Indicator.tsx |   44.44 |      100 |       0 |   44.44 | 12-17             
  ...MoreLines.tsx |      28 |      100 |       0 |      28 | 18-40             
  StatsDisplay.tsx |    6.82 |      100 |       0 |    6.82 | ...85-160,168-339 
  ...nsDisplay.tsx |    7.76 |      100 |       0 |    7.76 | 49-164            
  ThemeDialog.tsx  |    4.85 |      100 |       0 |    4.85 | 34-338            
  Tips.tsx         |      16 |      100 |       0 |      16 | 17-45             
  TodoPanel.tsx    |    4.48 |      100 |       0 |    4.48 | ...20-345,348-511 
  ...tsDisplay.tsx |    7.42 |      100 |       0 |    7.42 | 30-53,56-228      
  ToolsDialog.tsx  |    7.86 |      100 |       0 |    7.86 | 23-119            
  ...ification.tsx |   36.36 |      100 |       0 |   36.36 | 15-22             
  ...ionDialog.tsx |    7.52 |      100 |       0 |    7.52 | 18-122            
  todo-utils.ts    |     100 |      100 |     100 |     100 |                   
 ...comeOnboarding |   10.51 |        0 |       0 |   10.51 |                   
  ...ethodStep.tsx |   16.86 |      100 |       0 |   16.86 | 37-122            
  ...ationStep.tsx |    5.42 |      100 |       0 |    5.42 | 28-180            
  ...etionStep.tsx |    5.08 |      100 |       0 |    5.08 | 22-164            
  ...electStep.tsx |    7.95 |      100 |       0 |    7.95 | 30-131            
  ...electStep.tsx |   23.07 |      100 |       0 |   23.07 | 33-92             
  SkipExitStep.tsx |    12.5 |      100 |       0 |    12.5 | 18-59             
  ...omeDialog.tsx |   12.38 |      100 |       0 |   12.38 | 37-146            
  WelcomeStep.tsx  |    10.2 |      100 |       0 |    10.2 | 23-74             
  index.ts         |       0 |        0 |       0 |       0 | 1-13              
 ...nents/messages |   13.13 |    85.71 |    7.14 |   13.13 |                   
  ...onMessage.tsx |   13.72 |      100 |       0 |   13.72 | 24-80             
  DiffRenderer.tsx |    3.33 |      100 |       0 |    3.33 | ...79-360,363-381 
  ErrorMessage.tsx |   22.22 |      100 |       0 |   22.22 | 16-31             
  ...niMessage.tsx |   15.09 |      100 |       0 |   15.09 | 26-80             
  ...geContent.tsx |   19.04 |      100 |       0 |   19.04 | 25-43             
  InfoMessage.tsx  |   26.31 |      100 |       0 |   26.31 | 17-32             
  ...rlMessage.tsx |     100 |       50 |     100 |     100 | 26                
  ...ckDisplay.tsx |      20 |      100 |       0 |      20 | 43-64             
  ...onMessage.tsx |    3.87 |      100 |       0 |    3.87 | 43-507            
  ...upMessage.tsx |   10.36 |      100 |       0 |   10.36 | ...2,65-80,84-254 
  ToolMessage.tsx  |    8.33 |      100 |       0 |    8.33 | ...95-329,332-335 
  UserMessage.tsx  |     100 |      100 |     100 |     100 |                   
  ...llMessage.tsx |   36.36 |      100 |       0 |   36.36 | 17-25             
  ...ngMessage.tsx |   26.31 |      100 |       0 |   26.31 | 17-32             
 ...ponents/shared |   17.12 |     18.6 |   15.38 |   17.12 |                   
  ...ctionList.tsx |    5.55 |      100 |       0 |    5.55 | 53-184            
  MaxSizedBox.tsx  |    2.37 |      100 |       0 |    2.37 | 23-50,99-625      
  ...tonSelect.tsx |   13.63 |      100 |       0 |   13.63 | 57-100            
  ...lableList.tsx |    7.61 |      100 |       0 |    7.61 | 44-152            
  ...lizedList.tsx |    2.04 |      100 |       0 |    2.04 | 55-485            
  text-buffer.ts   |   33.26 |     18.6 |   22.22 |   33.26 | ...1903-1906,1911 
  ...er-actions.ts |    0.78 |      100 |       0 |    0.78 | 26-39,78-814      
 ...mponents/views |    14.7 |      100 |       0 |    14.7 |                   
  ChatList.tsx     |    14.7 |      100 |       0 |    14.7 | 18-51             
 src/ui/constants  |   89.28 |      100 |       0 |   89.28 |                   
  ...ollections.ts |   89.28 |      100 |       0 |   89.28 | 224-245           
 src/ui/containers |       0 |        0 |       0 |       0 |                   
  ...ontroller.tsx |       0 |        0 |       0 |       0 | 1-341             
  UIStateShell.tsx |       0 |        0 |       0 |       0 | 1-15              
 src/ui/contexts   |   59.93 |    74.39 |      50 |   59.93 |                   
  ...chContext.tsx |    64.7 |      100 |      50 |    64.7 | 24-29             
  FocusContext.tsx |       0 |        0 |       0 |       0 | 1-11              
  ...ssContext.tsx |   83.02 |    79.02 |      92 |   83.02 | ...1231,1263-1266 
  MouseContext.tsx |   78.88 |    66.66 |     100 |   78.88 | ...98-102,108-118 
  ...erContext.tsx |       0 |        0 |       0 |       0 | 1-120             
  ...owContext.tsx |   19.64 |      100 |       0 |   19.64 | 33,36,39-87       
  ...meContext.tsx |   46.51 |       25 |   28.57 |   46.51 | ...89,193-194,199 
  ...lProvider.tsx |   89.16 |    69.81 |     100 |   89.16 | ...79-380,387-388 
  ...onContext.tsx |    6.73 |      100 |       0 |    6.73 | ...88-282,287-294 
  ...teContext.tsx |       0 |        0 |       0 |       0 | 1-61              
  ...gsContext.tsx |      50 |      100 |       0 |      50 | 15-20             
  ...ngContext.tsx |   42.85 |      100 |       0 |   42.85 | 15-22             
  TodoContext.tsx  |   55.55 |      100 |       0 |   55.55 | 19-22,24-27       
  TodoProvider.tsx |    6.94 |      100 |       0 |    6.94 | 24-105            
  ...llContext.tsx |     100 |      100 |       0 |     100 |                   
  ...lProvider.tsx |    6.75 |      100 |       0 |    6.75 | 28-122            
  ...nsContext.tsx |      25 |      100 |       0 |      25 | 157-168,171-176   
  ...teContext.tsx |   27.77 |      100 |       0 |   27.77 | 189-198,201-206   
  ...deContext.tsx |   11.11 |      100 |       0 |   11.11 | 29-81,84-89       
 src/ui/editors    |   94.11 |    85.71 |   66.66 |   94.11 |                   
  ...ngsManager.ts |   94.11 |    85.71 |   66.66 |   94.11 | 55,69-70          
 src/ui/hooks      |   19.17 |    43.04 |      17 |   19.17 |                   
  ...dProcessor.ts |    2.53 |        0 |       0 |    2.53 | 31,60-515         
  index.ts         |       0 |        0 |       0 |       0 | 1-10              
  ...dProcessor.ts |    13.2 |      100 |      50 |    13.2 | 33-61,79-308      
  ...dProcessor.ts |    2.67 |      100 |       0 |    2.67 | 73-714            
  ...Completion.ts |   22.22 |      100 |      50 |   22.22 | ...34-157,162-242 
  ...uthCommand.ts |    6.45 |      100 |       0 |    6.45 | 15-135            
  ...tIndicator.ts |    12.5 |      100 |       0 |    12.5 | 19-66             
  ...chedScroll.ts |   16.66 |      100 |       0 |   16.66 | 14-32             
  ...ketedPaste.ts |      20 |      100 |       0 |      20 | 20-38             
  ...ompletion.tsx |   53.04 |    27.27 |     100 |   53.04 | ...06-245,258-274 
  useCompletion.ts |   45.56 |      100 |     100 |   45.56 | ...8,52-77,81-107 
  ...leMessages.ts |       5 |      100 |       0 |       5 | 29-65,68-118      
  ...orSettings.ts |   11.11 |      100 |       0 |   11.11 | 29-81             
  ...AutoUpdate.ts |    9.52 |      100 |       0 |    9.52 | 18-58             
  ...ionUpdates.ts |    4.36 |      100 |       0 |    4.36 | 36-48,51-244      
  ...erDetector.ts |   22.72 |      100 |       0 |   22.72 | 27-43             
  useFocus.ts      |    25.8 |      100 |       0 |    25.8 | 19-48             
  ...olderTrust.ts |   10.46 |      100 |       0 |   10.46 | 24-112            
  ...miniStream.ts |   49.83 |    45.66 |      40 |   49.83 | ...1369,1394-1496 
  ...BranchName.ts |   11.66 |      100 |       0 |   11.66 | 14-79             
  ...oryManager.ts |    5.22 |      100 |       0 |    5.22 | 53-212            
  ...stListener.ts |   12.12 |      100 |       0 |   12.12 | 17-50             
  ...putHistory.ts |    3.75 |      100 |       0 |    3.75 | 24-111            
  ...storyStore.ts |    4.61 |      100 |       0 |    4.61 | 24-112            
  useKeypress.ts   |   21.05 |      100 |       0 |   21.05 | 24-41             
  ...rdProtocol.ts |   36.36 |      100 |       0 |   36.36 | 24-31             
  ...fileDialog.ts |    5.71 |      100 |       0 |    5.71 | 27-135            
  ...gIndicator.ts |   12.24 |      100 |       0 |   12.24 | 14-64             
  useLogger.ts     |   93.75 |      100 |     100 |   93.75 | 26                
  ...oryMonitor.ts |      25 |      100 |       0 |      25 | 19-41             
  useMouse.ts      |   77.77 |    66.66 |     100 |   77.77 | 22-25             
  ...eSelection.ts |    3.13 |      100 |       0 |    3.13 | 36-103,106-315    
  ...oviderInfo.ts |       0 |        0 |       0 |       0 | 1-80              
  ...odifyTrust.ts |    9.09 |      100 |       0 |    9.09 | 46-137            
  ...raseCycler.ts |    9.43 |      100 |       0 |    9.43 | 24-80             
  ...cySettings.ts |    3.38 |      100 |       0 |    3.38 | 17-26,36-156      
  ...Completion.ts |   29.41 |       40 |     100 |   29.41 | ...14-227,236-242 
  ...iderDialog.ts |    7.89 |      100 |       0 |    7.89 | 27-110            
  ...odelDialog.ts |    9.37 |      100 |       0 |    9.37 | 25-86             
  ...lScheduler.ts |   21.22 |    29.41 |   66.66 |   21.22 | ...74-479,481-491 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-7               
  useResponsive.ts |   28.57 |      100 |       0 |   28.57 | 23-33             
  ...ompletion.tsx |   69.56 |      100 |     100 |   69.56 | 45-47,51-66,78-81 
  ...ectionList.ts |    2.94 |      100 |       0 |    2.94 | ...01-229,243-448 
  useSession.ts    |       0 |        0 |       0 |       0 | 1-23              
  ...ngsCommand.ts |   18.75 |      100 |       0 |   18.75 | 10-25             
  ...ellHistory.ts |    6.48 |      100 |       0 |    6.48 | 22-70,73-138      
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-62              
  ...ompletion.tsx |   32.05 |    31.57 |      25 |   32.05 | ...89-797,822-860 
  ...leCallback.ts |       0 |        0 |       0 |       0 | 1-70              
  ...tateAndRef.ts |   59.09 |      100 |     100 |   59.09 | 23-31             
  ...oryRefresh.ts |   10.34 |      100 |       0 |   10.34 | 17-48             
  ...rminalSize.ts |   11.42 |      100 |       0 |   11.42 | 13-55             
  ...emeCommand.ts |    6.03 |      100 |       0 |    6.03 | 26-151            
  useTimer.ts      |    7.14 |      100 |       0 |    7.14 | 16-65             
  ...ntinuation.ts |       0 |        0 |       0 |       0 | 1-270             
  ...ePreserver.ts |   48.48 |      100 |      75 |   48.48 | 33-50             
  ...oolsDialog.ts |    4.67 |      100 |       0 |    4.67 | 24-145            
  ...Onboarding.ts |    2.96 |      100 |       0 |    2.96 | 76-348            
  ...eMigration.ts |   10.34 |      100 |       0 |   10.34 | 14-72             
  vim.ts           |    6.13 |      100 |       0 |    6.13 | ...76-111,129-784 
 src/ui/layouts    |    5.43 |      100 |       0 |    5.43 |                   
  ...AppLayout.tsx |    5.43 |      100 |       0 |    5.43 | 57-74,77-630      
 ...noninteractive |      75 |      100 |    6.66 |      75 |                   
  ...eractiveUi.ts |      75 |      100 |    6.66 |      75 | 17-19,23-24,27-28 
 src/ui/privacy    |   25.78 |      100 |       0 |   25.78 |                   
  ...acyNotice.tsx |   10.97 |      100 |       0 |   10.97 | 22-123            
  ...acyNotice.tsx |   14.28 |      100 |       0 |   14.28 | 16-59             
  ...acyNotice.tsx |   12.19 |      100 |       0 |   12.19 | 16-62             
  ...acyNotice.tsx |   41.33 |      100 |       0 |   41.33 | 78-91,99-193      
  ...acyNotice.tsx |   21.95 |      100 |       0 |   21.95 | 20-59,62-64       
 src/ui/reducers   |   77.87 |     90.9 |      50 |   77.87 |                   
  appReducer.ts    |     100 |      100 |     100 |     100 |                   
  ...ionReducer.ts |       0 |        0 |       0 |       0 | 1-52              
 src/ui/state      |   21.51 |      100 |       0 |   21.51 |                   
  extensions.ts    |   21.51 |      100 |       0 |   21.51 | 68-130            
 src/ui/themes     |   99.13 |    89.38 |      96 |   99.13 |                   
  ansi-light.ts    |     100 |      100 |     100 |     100 |                   
  ansi.ts          |     100 |      100 |     100 |     100 |                   
  atom-one-dark.ts |     100 |      100 |     100 |     100 |                   
  ayu-light.ts     |     100 |      100 |     100 |     100 |                   
  ayu.ts           |     100 |      100 |     100 |     100 |                   
  color-utils.ts   |     100 |      100 |     100 |     100 |                   
  default-light.ts |     100 |      100 |     100 |     100 |                   
  default.ts       |     100 |      100 |     100 |     100 |                   
  dracula.ts       |     100 |      100 |     100 |     100 |                   
  github-dark.ts   |     100 |      100 |     100 |     100 |                   
  github-light.ts  |     100 |      100 |     100 |     100 |                   
  googlecode.ts    |     100 |      100 |     100 |     100 |                   
  green-screen.ts  |     100 |      100 |     100 |     100 |                   
  no-color.ts      |     100 |      100 |     100 |     100 |                   
  ...c-resolver.ts |     100 |      100 |     100 |     100 |                   
  ...tic-tokens.ts |     100 |      100 |     100 |     100 |                   
  ...-of-purple.ts |     100 |      100 |     100 |     100 |                   
  theme-compat.ts  |     100 |       50 |     100 |     100 | 79                
  theme-manager.ts |   89.74 |    82.53 |     100 |   89.74 | ...04-310,315-316 
  theme.ts         |   99.41 |      100 |   85.71 |   99.41 | 185-186           
  xcode.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/utils      |   43.47 |    86.39 |   63.11 |   43.47 |                   
  ...Colorizer.tsx |    5.88 |      100 |       0 |    5.88 | ...16-128,140-229 
  ...olePatcher.ts |      78 |    77.77 |     100 |      78 | 58-69             
  ...nRenderer.tsx |    9.39 |      100 |       0 |    9.39 | 26-165,174-183    
  ...wnDisplay.tsx |    6.02 |      100 |       0 |    6.02 | ...73-397,408-412 
  ...eRenderer.tsx |   10.63 |      100 |       0 |   10.63 | ...32-247,260-395 
  ...ketedPaste.ts |   55.55 |      100 |       0 |   55.55 | 11-12,15-16       
  clipboard.ts     |   97.29 |    84.61 |     100 |   97.29 | 40                
  ...boardUtils.ts |   32.25 |     37.5 |     100 |   32.25 | ...55-114,129-145 
  commandUtils.ts  |   92.79 |    88.63 |     100 |   92.79 | ...11,115,117-118 
  computeStats.ts  |     100 |      100 |     100 |     100 |                   
  displayUtils.ts  |     100 |      100 |     100 |     100 |                   
  formatters.ts    |   90.47 |       95 |     100 |   90.47 | 57-60             
  fuzzyFilter.ts   |     100 |    96.42 |     100 |     100 | 75                
  highlight.ts     |   65.43 |      100 |   66.66 |   65.43 | 77-110            
  input.ts         |     100 |    85.71 |     100 |     100 | 18                
  ...olDetector.ts |    9.09 |       50 |   16.66 |    9.09 | ...51-152,155-156 
  ...nUtilities.ts |   69.84 |    85.71 |     100 |   69.84 | 75-91,100-101     
  mouse.ts         |   85.16 |    73.68 |     100 |   85.16 | ...18-219,223-224 
  ...mConstants.ts |     100 |      100 |     100 |     100 |                   
  ...opDetector.ts |       0 |        0 |       0 |       0 | 1-209             
  responsive.ts    |    69.9 |    73.33 |      80 |    69.9 | ...95-103,106-121 
  ...putHandler.ts |   87.36 |    90.32 |     100 |   87.36 | 52-53,74-83       
  ...alContract.ts |     100 |      100 |     100 |     100 |                   
  terminalLinks.ts |     100 |      100 |     100 |     100 |                   
  ...lSequences.ts |     100 |      100 |     100 |     100 |                   
  terminalSetup.ts |    4.03 |      100 |       0 |    4.03 | 40-340            
  textUtils.ts     |   74.77 |    94.59 |   72.72 |   74.77 | ...14-115,135-137 
  ...Formatters.ts |   17.39 |      100 |       0 |   17.39 | 14-21,29-36,50-52 
  ...icsTracker.ts |     100 |    66.66 |     100 |     100 | 32-34             
  ui-sizing.ts     |   21.05 |      100 |       0 |   21.05 | 11-23,26-31       
  updateCheck.ts   |     100 |    93.33 |     100 |     100 | 27,38             
 src/utils         |   54.66 |    89.45 |   86.84 |   54.66 |                   
  ...ionContext.ts |   79.59 |       75 |     100 |   79.59 | 37-40,62-63,78-81 
  bootstrap.ts     |   94.11 |    88.88 |     100 |   94.11 | 71-72             
  checks.ts        |   33.33 |      100 |       0 |   33.33 | 23-28             
  cleanup.ts       |   72.72 |      100 |      75 |   72.72 | 43-52             
  commands.ts      |    50.9 |    63.63 |     100 |    50.9 | 25-26,45,57-84    
  commentJson.ts   |   92.17 |     92.5 |     100 |   92.17 | 92-100            
  ...ScopeUtils.ts |   19.23 |      100 |       0 |   19.23 | 23-40,46-73       
  ...icSettings.ts |   88.61 |    88.88 |     100 |   88.61 | ...37,40-43,61-64 
  ...arResolver.ts |   96.42 |       96 |     100 |   96.42 | 111-112           
  errors.ts        |   94.59 |       88 |     100 |   94.59 | 49-50,88-89       
  events.ts        |     100 |      100 |     100 |     100 |                   
  gitUtils.ts      |    92.5 |    82.35 |     100 |    92.5 | 61-62,77-80       
  ...AutoUpdate.ts |   52.71 |    95.23 |      50 |   52.71 | 88-153            
  ...lationInfo.ts |     100 |      100 |     100 |     100 |                   
  math.ts          |   66.66 |      100 |       0 |   66.66 | 15                
  package.ts       |   88.88 |    83.33 |     100 |   88.88 | 33-34             
  readStdin.ts     |   79.24 |       90 |      80 |   79.24 | 31-38,50-52       
  relaunch.ts      |     100 |      100 |     100 |     100 |                   
  resolvePath.ts   |   66.66 |       25 |     100 |   66.66 | 12-13,16,18-19    
  sandbox.ts       |       0 |        0 |       0 |       0 | 1-1193            
  ...ionCleanup.ts |   94.58 |    87.69 |     100 |   94.58 | ...74-175,256-257 
  sessionUtils.ts  |    9.23 |      100 |       0 |    9.23 | 43-99,106-120     
  settingsUtils.ts |   84.14 |    90.52 |   93.33 |   84.14 | ...12-439,478-479 
  ...ttingSaver.ts |    1.92 |      100 |       0 |    1.92 | 7-28,36-81        
  spawnWrapper.ts  |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  stdinSafety.ts   |   93.24 |    86.48 |     100 |   93.24 | ...62-163,167,242 
  ...entEmitter.ts |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  version.ts       |     100 |       50 |     100 |     100 | 11                
  windowTitle.ts   |     100 |      100 |     100 |     100 |                   
 src/utils/privacy |    46.3 |    68.57 |   52.63 |    46.3 |                   
  ...taRedactor.ts |   60.66 |    70.58 |   55.55 |   60.66 | ...77-479,485-506 
  ...acyManager.ts |       0 |        0 |       0 |       0 | 1-178             
 ...ed-integration |   22.35 |        0 |       0 |   22.35 |                   
  acp.ts           |   14.63 |        0 |       0 |   14.63 | ...31-332,335-342 
  ...temService.ts |   20.58 |      100 |       0 |   20.58 | ...34,37-46,48-49 
  schema.ts        |     100 |      100 |     100 |     100 |                   
  ...ntegration.ts |    4.43 |      100 |       0 |    4.43 | ...1442,1457-1507 
-------------------|---------|----------|---------|---------|-------------------
Core Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   71.05 |     78.8 |   73.65 |   71.05 |                   
 src               |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/__mocks__/fs  |       0 |        0 |       0 |       0 |                   
  promises.ts      |       0 |        0 |       0 |       0 | 1-48              
 src/adapters      |     100 |      100 |     100 |     100 |                   
  ...eamAdapter.ts |     100 |      100 |     100 |     100 |                   
 src/agents        |   77.47 |     68.1 |      90 |   77.47 |                   
  ...vestigator.ts |       0 |        0 |       0 |       0 | 1-152             
  executor.ts      |   88.23 |    67.03 |     100 |   88.23 | ...03-704,740-746 
  invocation.ts    |   96.34 |    76.47 |     100 |   96.34 | 61,65-66          
  registry.ts      |       0 |        0 |       0 |       0 | 1-83              
  types.ts         |     100 |      100 |     100 |     100 |                   
  utils.ts         |   78.94 |       80 |     100 |   78.94 | 32-35             
 src/auth          |   65.13 |    79.54 |   75.53 |   65.13 |                   
  ...evice-flow.ts |    7.21 |      100 |       0 |    7.21 | ...49-268,274-282 
  ...evice-flow.ts |   46.65 |    57.14 |   63.63 |   46.65 | ...95-484,494-580 
  oauth-errors.ts  |   94.15 |    83.33 |     100 |   94.15 | ...68,609,635-636 
  precedence.ts    |   76.75 |    78.15 |   94.44 |   76.75 | ...1028,1034-1037 
  ...evice-flow.ts |    8.33 |        0 |       0 |    8.33 | ...69-206,214-220 
  token-store.ts   |   77.96 |    88.09 |    90.9 |   77.96 | ...51-272,297-298 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/code_assist   |   68.18 |     79.6 |      78 |   68.18 |                   
  codeAssist.ts    |   16.25 |       50 |   33.33 |   16.25 | ...1,80-87,95-108 
  converter.ts     |    94.9 |    93.02 |     100 |    94.9 | ...84,198,215-216 
  ...al-storage.ts |     100 |    79.41 |     100 |     100 | 47-49,80-83       
  oauth2.ts        |    63.4 |    75.29 |   78.57 |    63.4 | ...16-717,722-723 
  server.ts        |   51.89 |    72.72 |   53.84 |   51.89 | ...99-240,243-246 
  setup.ts         |   82.92 |    73.91 |     100 |   82.92 | ...27-129,153-159 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/config        |   75.22 |    80.35 |    60.1 |   75.22 |                   
  config.ts        |   72.74 |    79.46 |   47.26 |   72.74 | ...1824,1830-1834 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  endpoints.ts     |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  models.ts        |     100 |      100 |     100 |     100 |                   
  ...ileManager.ts |    94.8 |    85.07 |     100 |    94.8 | ...57-358,364,367 
  storage.ts       |   93.25 |    95.65 |   91.66 |   93.25 | 27-28,49-50,75-76 
  ...entManager.ts |   57.91 |    65.57 |     100 |   57.91 | ...57-458,476-500 
  types.ts         |       0 |        0 |       0 |       0 |                   
 ...nfirmation-bus |   70.23 |    88.46 |   72.72 |   70.23 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-2               
  message-bus.ts   |   69.42 |    91.66 |      80 |   69.42 | ...91-225,234-242 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/core          |   65.54 |    72.96 |   69.55 |   65.54 |                   
  baseLlmClient.ts |   97.26 |       90 |     100 |   97.26 | 55-56,244-245     
  ...ntegration.ts |   96.29 |       95 |     100 |   96.29 | ...18-119,199-200 
  client.ts        |   66.92 |       79 |   69.23 |   66.92 | ...1988,1992-2003 
  ...ion-config.ts |     100 |      100 |     100 |     100 |                   
  ...tGenerator.ts |   91.08 |    80.76 |     100 |   91.08 | ...32,148,163-166 
  ...lScheduler.ts |    76.9 |    74.58 |   94.73 |    76.9 | ...1839,1843-1849 
  geminiChat.ts    |   47.71 |    57.07 |   53.75 |   47.71 | ...2744,2767-2768 
  geminiRequest.ts |     100 |      100 |     100 |     100 |                   
  ...nAIWrapper.ts |   88.88 |      100 |   83.33 |   88.88 | 56-59             
  logger.ts        |   81.26 |    81.81 |     100 |   81.26 | ...64-378,419-430 
  ...tGenerator.ts |   10.89 |      100 |       0 |   10.89 | ...93-194,197-200 
  ...olExecutor.ts |   63.28 |    62.74 |   65.21 |   63.28 | ...06-440,449-465 
  prompts.ts       |   65.07 |    62.96 |      60 |   65.07 | ...81,297,335-388 
  subagent.ts      |   55.76 |    65.87 |   58.49 |   55.76 | ...1820,1832-1833 
  ...chestrator.ts |    89.1 |    73.56 |   95.23 |    89.1 | ...17,620-621,626 
  ...tScheduler.ts |       0 |        0 |       0 |       0 | 1                 
  tokenLimits.ts   |   90.27 |    73.07 |     100 |   90.27 | ...72,77,79,83,93 
  ...Governance.ts |    94.2 |     90.9 |     100 |    94.2 | 34-35,51-52       
  turn.ts          |   88.42 |    73.21 |     100 |   88.42 | ...24-425,455-456 
 src/debug         |   78.24 |    87.85 |   90.19 |   78.24 |                   
  ...ionManager.ts |   78.12 |     77.5 |   88.88 |   78.12 | ...21-222,239-243 
  DebugLogger.ts   |   89.47 |    89.28 |      85 |   89.47 | ...77,214,270-273 
  FileOutput.ts    |   96.82 |    95.23 |     100 |   96.82 | 82-83,107-108     
  ...ionManager.ts |       0 |      100 |     100 |       0 | 18-64             
  ...FileOutput.ts |       0 |      100 |     100 |       0 | 15-37             
  index.ts         |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 |                   
 src/filters       |   99.15 |    98.76 |     100 |   99.15 |                   
  EmojiFilter.ts   |   99.15 |    98.76 |     100 |   99.15 | 190-191           
 src/hooks         |   88.88 |    33.33 |     100 |   88.88 |                   
  ...ssion-hook.ts |   88.88 |    33.33 |     100 |   88.88 | 24,30             
 src/ide           |   72.88 |    84.43 |      74 |   72.88 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  detect-ide.ts    |     100 |      100 |     100 |     100 |                   
  ide-client.ts    |   54.56 |    75.51 |   56.66 |   54.56 | ...62-470,498-506 
  ide-installer.ts |   90.55 |    85.18 |     100 |   90.55 | ...35,142-146,159 
  ideContext.ts    |    83.8 |      100 |     100 |    83.8 | 75-91             
  process-utils.ts |   89.13 |    81.48 |     100 |   89.13 | ...69-170,211-212 
 src/interfaces    |       0 |        0 |       0 |       0 |                   
  index.ts         |       0 |        0 |       0 |       0 |                   
  ....interface.ts |       0 |        0 |       0 |       0 |                   
 src/mcp           |    78.5 |    77.04 |   71.95 |    78.5 |                   
  ...oken-store.ts |   87.38 |    90.47 |   81.25 |   87.38 | ...33-334,337-338 
  ...h-provider.ts |   83.01 |      100 |      25 |   83.01 | ...69,73,77,81-82 
  ...h-provider.ts |   73.14 |    53.68 |     100 |   73.14 | ...04-811,818-820 
  ...en-storage.ts |    81.5 |    88.88 |   68.18 |    81.5 | ...95-196,201-202 
  oauth-utils.ts   |   70.33 |    81.48 |    90.9 |   70.33 | ...62-283,308-331 
  ...n-provider.ts |   89.28 |    95.65 |      40 |   89.28 | ...37,141,145-146 
  token-store.ts   |     100 |      100 |     100 |     100 |                   
 .../token-storage |   90.08 |    86.86 |   95.34 |   90.08 |                   
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   86.61 |    87.09 |   92.85 |   86.61 | ...64-172,180-181 
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   87.43 |    80.82 |    92.3 |   87.43 | ...20,222,274-275 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/parsers       |   68.08 |       75 |   83.33 |   68.08 |                   
  ...CallParser.ts |   68.08 |       75 |   83.33 |   68.08 | ...1018,1024-1039 
 src/policy        |    88.1 |    81.29 |   86.95 |    88.1 |                   
  config.ts        |   91.01 |    84.21 |     100 |   91.01 | ...05,150,155-157 
  index.ts         |       0 |        0 |       0 |       0 | 1-5               
  policy-engine.ts |     100 |    97.67 |     100 |     100 | 23                
  ...-stringify.ts |   80.23 |    60.52 |      50 |   80.23 | ...22-126,139-140 
  toml-loader.ts   |   87.16 |    83.78 |     100 |   87.16 | ...03-204,215-223 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/prompt-config |   74.73 |    84.13 |    87.8 |   74.73 |                   
  ...lateEngine.ts |    93.9 |    88.52 |     100 |    93.9 | ...29,165,172,192 
  index.ts         |       0 |      100 |     100 |       0 | 5-41              
  prompt-cache.ts  |   99.04 |    97.26 |     100 |   99.04 | 204-205           
  ...-installer.ts |   83.11 |     82.4 |     100 |   83.11 | ...1173,1253-1254 
  prompt-loader.ts |   87.27 |    90.42 |   76.92 |   87.27 | ...22-423,429-430 
  ...t-resolver.ts |   34.85 |    64.17 |   53.84 |   34.85 | ...20-771,774-802 
  ...pt-service.ts |   84.49 |     83.5 |   93.75 |   84.49 | ...21,550,562-563 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...onfig/defaults |   50.11 |    46.75 |     100 |   50.11 |                   
  core-defaults.ts |    37.3 |    39.02 |     100 |    37.3 | ...72,283,289-297 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...est-loader.ts |   81.81 |    79.31 |     100 |   81.81 | ...02-108,116-120 
  ...t-warnings.ts |      92 |    33.33 |     100 |      92 | 17-18             
  ...r-defaults.ts |    41.7 |    39.02 |     100 |    41.7 | ...40,251,257-262 
  ...e-defaults.ts |     100 |      100 |     100 |     100 |                   
  tool-defaults.ts |      50 |       40 |     100 |      50 | ...11-216,229-234 
 src/prompts       |   26.41 |      100 |      25 |   26.41 |                   
  mcp-prompts.ts   |   18.18 |      100 |       0 |   18.18 | 11-19             
  ...t-registry.ts |   28.57 |      100 |   28.57 |   28.57 | ...42,48-55,68-73 
 src/providers     |   68.76 |    77.53 |   67.21 |   68.76 |                   
  BaseProvider.ts  |   80.78 |    79.46 |   80.76 |   80.78 | ...1154,1191-1192 
  ...eratorRole.ts |     100 |      100 |     100 |     100 |                   
  IModel.ts        |       0 |        0 |       0 |       0 |                   
  IProvider.ts     |       0 |        0 |       0 |       0 |                   
  ...derManager.ts |     100 |      100 |     100 |     100 |                   
  ITool.ts         |       0 |        0 |       0 |       0 |                   
  ...ngProvider.ts |   87.91 |    88.61 |   90.62 |   87.91 | ...1106,1137-1139 
  ...derWrapper.ts |   56.67 |     64.4 |   51.28 |   56.67 | ...1355,1362-1369 
  ...tGenerator.ts |    17.3 |      100 |       0 |    17.3 | ...59,62-79,82-85 
  ...derManager.ts |   60.16 |    72.96 |   60.46 |   60.16 | ...1437-1438,1441 
  errors.ts        |   78.57 |    77.77 |      60 |   78.57 | ...43,150-170,191 
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 ...ders/anthropic |   74.17 |    77.48 |   74.54 |   74.17 |                   
  ...icProvider.ts |   76.27 |    80.85 |      75 |   76.27 | ...2349,2357-2358 
  ...aConverter.ts |   51.61 |    40.62 |   71.42 |   51.61 | ...52,258,272-280 
 ...oviders/gemini |   56.39 |    67.94 |   48.78 |   56.39 |                   
  ...niProvider.ts |   51.86 |    56.97 |   46.15 |   51.86 | ...1866,1875-1876 
  ...Signatures.ts |     100 |    98.38 |     100 |     100 | 182               
 ...viders/logging |   39.53 |       80 |      75 |   39.53 |                   
  ...tExtractor.ts |       0 |        0 |       0 |       0 | 1-228             
  ...nceTracker.ts |   89.47 |    84.21 |   81.81 |   89.47 | ...66-167,182-183 
 ...oviders/openai |   51.72 |    73.99 |   60.49 |   51.72 |                   
  ...ationCache.ts |   70.49 |    86.66 |   82.35 |   70.49 | ...64-166,216-217 
  ...rateParams.ts |       0 |        0 |       0 |       0 |                   
  ...AIProvider.ts |   39.13 |    63.97 |   45.55 |   39.13 | ...4940,4948-4957 
  ...API_MODELS.ts |     100 |      100 |     100 |     100 |                   
  ...lCollector.ts |   93.33 |    89.28 |     100 |   93.33 | ...51-153,173-174 
  ...Normalizer.ts |   92.75 |       96 |     100 |   92.75 | 74-78             
  ...llPipeline.ts |   64.54 |    53.33 |      75 |   64.54 | ...34-143,174-184 
  ...eValidator.ts |   94.02 |    93.75 |     100 |   94.02 | 106-109           
  ...sesRequest.ts |   83.56 |    93.24 |     100 |   83.56 | ...60,293,298-303 
  ...moteTokens.ts |   89.55 |     92.3 |     100 |   89.55 | 101-107           
  ...oviderInfo.ts |    86.2 |    73.52 |     100 |    86.2 | ...31-133,144-145 
  ...uestParams.ts |   93.81 |     82.6 |     100 |   93.81 | ...,95-96,105-106 
  ...nsesStream.ts |   88.43 |    86.66 |     100 |   88.43 | ...80,203-210,234 
  ...aConverter.ts |    24.2 |    42.85 |   28.57 |    24.2 | ...59-260,277-285 
  ...lResponses.ts |   71.98 |    73.91 |      75 |   71.98 | ...97-301,321-335 
  test-types.ts    |       0 |        0 |       0 |       0 |                   
  toolNameUtils.ts |   96.79 |    95.45 |      50 |   96.79 | 102,127,239-241   
 ...enai-responses |   63.69 |    74.07 |   43.75 |   63.69 |                   
  CODEX_MODELS.ts  |     100 |      100 |     100 |     100 |                   
  CODEX_PROMPT.ts  |   33.33 |      100 |       0 |   33.33 | 36-39             
  ...esProvider.ts |   75.67 |    78.37 |   54.54 |   75.67 | ...25,841,845-846 
  ...romContent.ts |   84.93 |    66.66 |     100 |   84.93 | 45-49,71-75,94    
  index.ts         |       0 |        0 |       0 |       0 | 1                 
  ...aConverter.ts |    8.12 |       20 |   14.28 |    8.12 | ...53-277,280-289 
 .../openai-vercel |   66.81 |    67.42 |   66.66 |   66.81 |                   
  ...elProvider.ts |   63.81 |     64.9 |   54.34 |   63.81 | ...1934,1944-1999 
  errors.ts        |   93.23 |    82.05 |     100 |   93.23 | ...50-151,165-169 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...Conversion.ts |   71.63 |    73.17 |   83.33 |   71.63 | ...45,548-549,553 
  ...aConverter.ts |   50.95 |       40 |   71.42 |   50.95 | ...58-259,276-284 
  toolIdUtils.ts   |   86.15 |    84.37 |     100 |   86.15 | ...,94-95,116-117 
 ...ders/reasoning |    42.1 |       90 |      70 |    42.1 |                   
  ...oningUtils.ts |    42.1 |       90 |      70 |    42.1 | ...45-203,235-310 
 ...ers/test-utils |     100 |      100 |     100 |     100 |                   
  ...TestConfig.ts |     100 |      100 |     100 |     100 |                   
 ...ers/tokenizers |    66.1 |    55.55 |      75 |    66.1 |                   
  ...cTokenizer.ts |   57.89 |       25 |     100 |   57.89 | 28-29,34-39       
  ITokenizer.ts    |       0 |        0 |       0 |       0 |                   
  ...ITokenizer.ts |      70 |       80 |   66.66 |      70 | 52-55,62-71       
 ...roviders/types |       0 |        0 |       0 |       0 |                   
  ...iderConfig.ts |       0 |        0 |       0 |       0 |                   
  ...derRuntime.ts |       0 |        0 |       0 |       0 |                   
 ...roviders/utils |   85.64 |    87.01 |      96 |   85.64 |                   
  authToken.ts     |   33.33 |       50 |      50 |   33.33 | 14-22,30-35       
  ...sExtractor.ts |   95.45 |     91.3 |     100 |   95.45 | 15-16             
  dumpContext.ts   |    96.1 |    95.65 |     100 |    96.1 | 110-112           
  ...SDKContext.ts |   94.59 |       75 |     100 |   94.59 | 27,49             
  localEndpoint.ts |   89.28 |    91.42 |     100 |   89.28 | ...18-119,138-139 
  ...malization.ts |   79.41 |    92.85 |     100 |   79.41 | 59-66             
  ...nsePayload.ts |   91.05 |    82.92 |     100 |   91.05 | 60-65,115-119     
  userMemory.ts    |   51.51 |    66.66 |     100 |   51.51 | 16-18,31-43       
 src/runtime       |   84.52 |    85.93 |   74.28 |   84.52 |                   
  ...imeContext.ts |     100 |      100 |     100 |     100 |                   
  ...timeLoader.ts |      85 |    71.42 |      80 |      85 | ...87-190,228-231 
  ...ntimeState.ts |   95.22 |       92 |     100 |   95.22 | ...35-636,652-653 
  ...ionContext.ts |   80.35 |    92.85 |      75 |   80.35 | 64-66,110-117     
  ...imeContext.ts |   89.69 |      100 |   58.33 |   89.69 | ...96,103,111-113 
  index.ts         |       0 |        0 |       0 |       0 | 1-15              
  ...imeContext.ts |    64.7 |    83.33 |     100 |    64.7 | 67-78,83-94       
  ...meAdapters.ts |   54.95 |    68.75 |   43.75 |   54.95 | ...98-108,125-152 
  ...ateFactory.ts |    96.9 |    86.48 |     100 |    96.9 | 95,110,136        
 src/services      |   81.53 |    84.27 |   75.96 |   81.53 |                   
  ...ardService.ts |   93.33 |    92.85 |     100 |   93.33 | 63,67-68          
  ...y-analyzer.ts |   76.32 |    81.17 |   77.77 |   76.32 | ...79-507,513-514 
  ...eryService.ts |   96.29 |    84.21 |     100 |   96.29 | 41,50,100-101     
  ...temService.ts |    61.9 |      100 |   66.66 |    61.9 | 54-61             
  ...ts-service.ts |      50 |      100 |       0 |      50 | 41-42,48-49       
  gitService.ts    |   70.58 |    93.33 |      60 |   70.58 | ...16-126,129-133 
  index.ts         |       0 |        0 |       0 |       0 | 1-15              
  ...ionService.ts |   99.04 |    98.41 |     100 |   99.04 | 270-271           
  ...ionService.ts |   89.31 |    84.21 |    92.3 |   89.31 | ...09,614,623-639 
  ...xt-tracker.ts |   94.87 |       90 |    87.5 |   94.87 | 54-55             
  ...er-service.ts |      42 |     90.9 |      25 |      42 | ...37-140,143-161 
  ...er-service.ts |   69.45 |    55.88 |      80 |   69.45 | ...85-289,311-314 
 ...rvices/history |   79.01 |    82.92 |   77.77 |   79.01 |                   
  ...Converters.ts |   79.88 |    80.31 |      75 |   79.88 | ...58-364,430-453 
  HistoryEvents.ts |       0 |        0 |       0 |       0 |                   
  ...oryService.ts |   79.17 |    83.58 |   86.53 |   79.17 | ...1329,1365-1366 
  IContent.ts      |   73.56 |    92.85 |   36.36 |   73.56 | ...32,299,309-329 
 src/settings      |   92.48 |    77.02 |      92 |   92.48 |                   
  ...ngsService.ts |   91.69 |       75 |   95.23 |   91.69 | ...53-354,384-388 
  ...ceInstance.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |       0 |        0 |       0 |       0 | 1                 
 src/storage       |   93.53 |    93.02 |   94.44 |   93.53 |                   
  ...FileWriter.ts |   83.54 |       80 |    87.5 |   83.54 | 40-41,71-81       
  ...nceService.ts |   98.67 |    96.96 |     100 |   98.67 | 293-294           
  sessionTypes.ts  |     100 |      100 |     100 |     100 |                   
 src/telemetry     |   65.88 |    79.89 |   60.33 |   65.88 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...-exporters.ts |   28.08 |      100 |       0 |   28.08 | ...14-115,118-119 
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-17              
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-132             
  loggers.ts       |   64.38 |    69.76 |   59.25 |   64.38 | ...70-583,591-607 
  metrics.ts       |   62.35 |    96.15 |   66.66 |   62.35 | ...41-163,166-189 
  sdk.ts           |   72.54 |    23.07 |     100 |   72.54 | ...35,140-141,143 
  ...l-decision.ts |   33.33 |      100 |       0 |   33.33 | 17-32             
  types.ts         |   73.94 |     84.7 |   64.91 |   73.94 | ...34-636,639-643 
  uiTelemetry.ts   |   95.26 |    96.42 |   91.66 |   95.26 | 152,189-195       
 src/test-utils    |   86.61 |    82.35 |   57.95 |   86.61 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-9               
  mock-tool.ts     |   95.06 |    93.33 |   83.33 |   95.06 | 62-63,118-119     
  ...aceContext.ts |     100 |      100 |     100 |     100 |                   
  ...allOptions.ts |   93.45 |    90.69 |   63.63 |   93.45 | ...07,171,200-203 
  runtime.ts       |   80.18 |       70 |   39.53 |   80.18 | ...99-301,310-312 
  tools.ts         |      82 |    76.92 |   78.94 |      82 | ...31,153,157-158 
 src/todo          |   56.28 |    81.48 |      75 |   56.28 |                   
  todoFormatter.ts |   56.28 |    81.48 |      75 |   56.28 | ...11-212,236-237 
 src/tools         |    76.2 |    78.05 |    79.7 |    76.2 |                   
  ...lFormatter.ts |     100 |      100 |     100 |     100 |                   
  ToolFormatter.ts |   20.89 |    76.19 |   33.33 |   20.89 | ...07,514-612,627 
  ...IdStrategy.ts |      95 |    92.85 |     100 |      95 | 237-239,250-252   
  codesearch.ts    |      98 |     87.5 |   85.71 |      98 | 110-111,173       
  ...line_range.ts |   84.68 |    67.56 |      70 |   84.68 | ...81-282,290-291 
  diffOptions.ts   |     100 |      100 |     100 |     100 |                   
  ...-web-fetch.ts |   93.14 |    72.41 |   77.77 |   93.14 | ...55,165-166,186 
  ...scapeUtils.ts |   61.65 |    72.97 |      50 |   61.65 | ...93,309,311-321 
  edit.ts          |   74.66 |    78.03 |   76.47 |   74.66 | ...68-769,782-823 
  ...web-search.ts |   97.91 |    85.71 |   83.33 |   97.91 | 126-127,191       
  ...y-replacer.ts |   85.71 |    84.35 |     100 |   85.71 | ...47-448,493-494 
  glob.ts          |   90.51 |    80.35 |   88.88 |   90.51 | ...51-252,351-352 
  ...-web-fetch.ts |   94.21 |    87.75 |    92.3 |   94.21 | ...66-367,468-469 
  ...invocation.ts |   54.74 |    38.88 |      75 |   54.74 | ...29-133,165-210 
  ...web-search.ts |     100 |      100 |     100 |     100 |                   
  grep.ts          |   59.01 |    77.34 |   72.22 |   59.01 | ...57-961,971-972 
  ...rt_at_line.ts |   81.55 |    76.08 |      70 |   81.55 | ...05-306,314-315 
  ...-subagents.ts |   87.28 |    69.56 |   88.88 |   87.28 | ...1,81-89,98,153 
  ls.ts            |   97.42 |    91.66 |     100 |   97.42 | 146-151           
  ...nt-manager.ts |   79.04 |    66.66 |      80 |   79.04 | ...31-138,146-147 
  mcp-client.ts    |   54.67 |     60.8 |   58.06 |   54.67 | ...1342,1346-1349 
  mcp-tool.ts      |   94.21 |    93.75 |   86.95 |   94.21 | ...39-249,311-312 
  memoryTool.ts    |   79.39 |    82.75 |    87.5 |   79.39 | ...55-356,399-440 
  ...iable-tool.ts |   98.34 |       80 |     100 |   98.34 | 168-169           
  read-file.ts     |   91.27 |    79.16 |    90.9 |   91.27 | ...26-227,393-394 
  ...many-files.ts |   71.42 |     77.5 |   88.88 |   71.42 | ...55-556,563-564 
  ...line_range.ts |    74.9 |     65.9 |      80 |    74.9 | ...50-351,355-356 
  ripGrep.ts       |   89.75 |    86.02 |    92.3 |   89.75 | ...47-448,469-470 
  shell.ts         |   80.82 |    79.48 |   84.21 |   80.82 | ...95-796,807-808 
  task.ts          |   80.63 |    68.67 |   92.85 |   80.63 | ...70,773,776-785 
  todo-events.ts   |    62.5 |      100 |       0 |    62.5 | 23-24,27-28,31-32 
  todo-pause.ts    |   87.09 |       80 |     100 |   87.09 | 64-69,73-78,93-98 
  todo-read.ts     |   85.29 |    95.45 |     100 |   85.29 | 112-113,123-138   
  todo-schemas.ts  |     100 |      100 |     100 |     100 |                   
  todo-store.ts    |   86.66 |       80 |     100 |   86.66 | 48-49,55-56,63-64 
  todo-write.ts    |   87.28 |    75.75 |    87.5 |   87.28 | ...17,264-265,290 
  ...tion-types.ts |     100 |      100 |     100 |     100 |                   
  tool-context.ts  |     100 |      100 |     100 |     100 |                   
  tool-error.ts    |   87.75 |      100 |       0 |   87.75 | 105-112           
  tool-names.ts    |     100 |      100 |     100 |     100 |                   
  tool-registry.ts |   72.28 |       71 |   73.68 |   72.28 | ...68-676,684-685 
  toolNameUtils.ts |      80 |     92.1 |     100 |      80 | 59-60,64-65,69-82 
  tools.ts         |   79.03 |    89.28 |   66.66 |   79.03 | ...32-733,736-740 
  write-file.ts    |   75.57 |    64.36 |   73.33 |   75.57 | ...04-605,614-653 
 src/types         |     100 |      100 |     100 |     100 |                   
  modelParams.ts   |     100 |      100 |     100 |     100 |                   
 src/utils         |   82.88 |    87.66 |    85.9 |   82.88 |                   
  LruCache.ts      |       0 |        0 |       0 |       0 | 1-41              
  bfsFileSearch.ts |   88.88 |       90 |     100 |   88.88 | 83-91             
  browser.ts       |    8.69 |      100 |       0 |    8.69 | 17-53             
  editor.ts        |   97.64 |    94.23 |     100 |   97.64 | 159,228,231-232   
  ...entContext.ts |     100 |      100 |     100 |     100 |                   
  errorParsing.ts  |      88 |    78.26 |     100 |      88 | ...07,249,252,258 
  ...rReporting.ts |   83.72 |    84.61 |     100 |   83.72 | 82-86,107-115     
  errors.ts        |   55.55 |    71.42 |   38.46 |   55.55 | ...92-108,112-118 
  fetch.ts         |   30.43 |    66.66 |   33.33 |   30.43 | 22-27,35-36,39-83 
  fileUtils.ts     |    95.2 |       90 |     100 |    95.2 | ...34-238,450-456 
  formatters.ts    |   54.54 |       50 |     100 |   54.54 | 12-16             
  ...eUtilities.ts |   96.11 |       96 |     100 |   96.11 | 36-37,67-68       
  ...rStructure.ts |   95.96 |    94.93 |     100 |   95.96 | ...14-117,345-347 
  getPty.ts        |    12.5 |      100 |       0 |    12.5 | 21-34             
  ...noreParser.ts |    91.6 |    85.18 |     100 |    91.6 | ...01-202,206-207 
  ...ineChanges.ts |   58.56 |    79.41 |      80 |   58.56 | ...18-256,264-270 
  gitUtils.ts      |   90.24 |    90.47 |     100 |   90.24 | 40-41,71-72       
  ide-trust.ts     |      60 |      100 |       0 |      60 | 14-15             
  ...rePatterns.ts |     100 |    96.55 |     100 |     100 | 248               
  ...ionManager.ts |     100 |       90 |     100 |     100 | 23                
  ...edit-fixer.ts |       0 |        0 |       0 |       0 | 1-156             
  ...yDiscovery.ts |   86.32 |    76.27 |   77.77 |   86.32 | ...02-403,406-407 
  ...tProcessor.ts |    93.4 |    86.51 |    92.3 |    93.4 | ...87-388,397-398 
  ...Inspectors.ts |   61.53 |      100 |      50 |   61.53 | 18-23             
  output-format.ts |   36.84 |      100 |       0 |   36.84 | 26-37             
  partUtils.ts     |     100 |      100 |     100 |     100 |                   
  pathReader.ts    |       0 |        0 |       0 |       0 | 1-60              
  paths.ts         |   85.32 |    84.37 |     100 |   85.32 | ...,98-99,110-111 
  ...rDetection.ts |   57.62 |    63.15 |     100 |   57.62 | ...9,92-93,99-100 
  retry.ts         |   69.49 |    79.16 |   81.81 |   69.49 | ...60-563,568-569 
  ...thResolver.ts |   84.31 |       84 |     100 |   84.31 | 62-73,96,145-148  
  ...nStringify.ts |     100 |      100 |     100 |     100 |                   
  sanitization.ts  |     100 |      100 |     100 |     100 |                   
  ...aValidator.ts |   83.52 |    82.75 |     100 |   83.52 | 70-81,125-126     
  ...r-launcher.ts |   78.57 |     87.5 |   66.66 |   78.57 | ...33,135,153-188 
  session.ts       |     100 |      100 |     100 |     100 |                   
  shell-markers.ts |     100 |      100 |     100 |     100 |                   
  shell-utils.ts   |   95.25 |    95.38 |     100 |   95.25 | ...94-195,326-331 
  summarizer.ts    |     100 |    88.88 |     100 |     100 | 92                
  ...emEncoding.ts |   97.14 |    91.42 |     100 |   97.14 | 108-109,161       
  testUtils.ts     |   53.33 |      100 |   33.33 |   53.33 | ...53,59-64,70-72 
  textUtils.ts     |    12.5 |      100 |       0 |    12.5 | 15-34             
  thoughtUtils.ts  |     100 |      100 |     100 |     100 |                   
  tool-utils.ts    |   91.48 |    89.47 |     100 |   91.48 | 52-53,56-57       
  ...putLimiter.ts |   85.22 |    76.31 |     100 |   85.22 | ...61-166,210-217 
  unicodeUtils.ts  |     100 |      100 |     100 |     100 |                   
  ...untManager.ts |   91.96 |    88.23 |     100 |   91.96 | 37-39,76-78,94-96 
  ...aceContext.ts |   96.82 |    95.34 |    92.3 |   96.82 | 94-95,109-110     
 ...ils/filesearch |   96.18 |    91.26 |     100 |   96.18 |                   
  crawlCache.ts    |     100 |      100 |     100 |     100 |                   
  crawler.ts       |   96.22 |     92.3 |     100 |   96.22 | 66-67             
  fileSearch.ts    |   93.22 |    86.95 |     100 |   93.22 | ...26-227,229-230 
  ignore.ts        |     100 |      100 |     100 |     100 |                   
  result-cache.ts  |     100 |    91.66 |     100 |     100 | 46                
-------------------|---------|----------|---------|---------|-------------------

For detailed HTML reports, please see the 'coverage-reports-24.x-ubuntu-latest' artifact from the main CI run.

- Replace hardcoded 'yellow' color with Colors.AccentYellow in IdeIntegrationNudge for better theme consistency
- Remove redundant Text wrapper in OAuthUrlMessage to simplify component structure

Both changes align with the PR's goal of enforcing theme consistency across Ink Text components.
@acoliver acoliver merged commit e740d6c into main Jan 7, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintainer:e2e:ok Trusted contributor; maintainer-approved E2E run

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Catch theme violations in CI, adjust default

2 participants