Skip to content

Conversation

galz10
Copy link
Collaborator

@galz10 galz10 commented Sep 9, 2025

TLDR

This PR refactors the settings system to only save non-default values to user and workspace settings.json files. This keeps configuration files clean by only storing explicit user overrides, making them easier to manage.

Dive Deeper

This change introduces a more robust settings architecture by making the system fully aware of the default values defined in the settingsSchema.ts.

  1. Dynamic Default Generation: A new getDefaultSettings function programmatically generates a complete default settings object directly from the schema. This ensures our defaults are always in sync with the schema definition.
  2. Improved Merge Logic: The settings merge process now uses these generated defaults as the foundational layer. This guarantees that the application always operates with a full set of predictable default values, even if user or workspace settings files are missing or empty.
  3. Intelligent Saving: The saveSettings function has been enhanced to perform a diff against the default settings before writing to a file. It filters out any setting that matches its default value, ensuring that only explicitly overridden settings are persisted.

This approach significantly cleans up the settings.json files and makes the entire configuration system more predictable and maintainable.

Reviewer Test Plan

To validate these changes, you can test the settings save logic:

  1. Pull the branch and run npm install.
  2. For a clean test, temporarily delete your user and workspace settings files (~/.gemini/settings.json and .gemini/settings.json).
  3. Run the CLI and open the settings dialog with :set.
  4. Change a setting from its default value. A good example is toggling general.vimMode to true.
  5. Save the settings for the "User" (global) scope.
  6. Inspect the content of ~/.gemini/settings.json. It should now only contain the settings that differ from the default (e.g., {"vimMode": true}).
  7. Go back to the settings dialog and change general.vimMode back to false (its default value).
  8. Save the settings again.
  9. Inspect ~/.gemini/settings.json. The file should now contain an empty object {} because the setting has been returned to its default state and is no longer written to the file.
  10. Repeat this process for a workspace-level setting to ensure the behavior is consistent.

Testing Matrix

🍏 🪟 🐧
npm run
npx
Docker
Podman - -
Seatbelt - -

   This change refactors the settings system to be aware of the default values defined in the settings schema.

   Key changes:
   - A new `getDefaultSettings` function generates a complete default settings object directly from the schema.
   - The settings merge process now uses these defaults as the base layer, ensuring a consistent starting point.
   - `saveSettings` is updated to compare settings against the defaults and only write the values that have been explicitly changed.

   This results in cleaner user and workspace `settings.json` files, as they will no longer be cluttered with default values. It also makes
   the settings system more robust and predictable.
@galz10 galz10 requested a review from a team as a code owner September 9, 2025 00:00
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Summary of Changes

Hello @galz10, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request refactors the settings management system to streamline configuration files. The core change involves ensuring that only non-default settings are saved, leading to cleaner and more manageable user and workspace configuration files. This significantly improves the predictability and maintainability of the application's configuration.

Highlights

  • Dynamic Default Generation: A new getDefaultSettings function programmatically generates a complete default settings object directly from the schema, ensuring defaults are always in sync with the schema definition.
  • Improved Merge Logic: The settings merge process now uses these generated defaults as the foundational layer, guaranteeing that the application always operates with a full set of predictable default values, even if user or workspace settings files are missing or empty.
  • Intelligent Saving: The saveSettings function has been enhanced to perform a diff against the default settings before writing to a file. It filters out any setting that matches its default value, ensuring that only explicitly overridden settings are persisted.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@galz10 galz10 changed the title fix(settings):Use schema defaults and only save overrides fix(settings): Use schema defaults and only save overrides Sep 9, 2025
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request refactors the settings system to only store non-default values, which is a great improvement for keeping configuration files clean and manageable. The implementation is solid, introducing getDefaultSettings to derive defaults from the schema and updating the merge logic accordingly. I've found one potential issue with how non-default values are detected that could lead to incorrect behavior. My feedback includes a suggestion to make this comparison more robust.

@gemini-cli gemini-cli bot added the status/need-issue Pull request needs to be associated with an issue label Sep 9, 2025
Copy link

github-actions bot commented Sep 9, 2025

Size Change: +830 B (+0.01%)

Total Size: 13.2 MB

ℹ️ View Unchanged
Filename Size Change
./bundle/gemini.js 13.2 MB +830 B (+0.01%)
./bundle/sandbox-macos-permissive-closed.sb 1.03 kB 0 B
./bundle/sandbox-macos-permissive-open.sb 830 B 0 B
./bundle/sandbox-macos-permissive-proxied.sb 1.31 kB 0 B
./bundle/sandbox-macos-restrictive-closed.sb 3.29 kB 0 B
./bundle/sandbox-macos-restrictive-open.sb 3.36 kB 0 B
./bundle/sandbox-macos-restrictive-proxied.sb 3.56 kB 0 B

compressed-size-action

Copy link

github-actions bot commented Sep 9, 2025

Code Coverage Summary

Package Lines Statements Functions Branches
CLI 75.92% 75.92% 76.62% 80.03%
Core 79.52% 79.52% 78.82% 85%
CLI Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   75.92 |    80.03 |   76.62 |   75.92 |                   
 src               |   65.37 |    68.91 |   57.14 |   65.37 |                   
  gemini.tsx       |   51.85 |    43.75 |   55.55 |   51.85 | ...15,426-434,448 
  ...ractiveCli.ts |    91.3 |       80 |   33.33 |    91.3 | ...7-70,96-97,127 
  ...ActiveAuth.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 |   40.69 |    93.75 |   28.57 |   40.69 |                   
  disable.ts       |    28.2 |      100 |       0 |    28.2 | 17-27,33-44,46-50 
  enable.ts        |    23.4 |      100 |       0 |    23.4 | 17-35,41-52,54-58 
  install.ts       |   42.02 |    66.66 |   33.33 |   42.02 | 21-56,81,84-89    
  link.ts          |   28.57 |      100 |       0 |   28.57 | 19-33,40-45,47-50 
  list.ts          |   32.14 |      100 |       0 |   32.14 | 11-27,34-35       
  new.ts           |     100 |      100 |     100 |     100 |                   
  uninstall.ts     |   45.71 |      100 |   33.33 |   45.71 | 15-23,35-40,43-46 
  update.ts        |   13.25 |      100 |       0 |   13.25 | ...,84-99,101-105 
 ...les/mcp-server |       0 |        0 |       0 |       0 |                   
  example.ts       |       0 |        0 |       0 |       0 | 1-60              
 src/commands/mcp  |   95.62 |       80 |    90.9 |   95.62 |                   
  add.ts           |    97.4 |    83.33 |     100 |    97.4 | 109-112,119       
  list.ts          |   90.56 |    80.76 |      80 |   90.56 | ...07-109,134-135 
  remove.ts        |     100 |    66.66 |     100 |     100 | 19-23             
 src/config        |   91.77 |     85.1 |   88.46 |   91.77 |                   
  auth.ts          |     100 |      100 |     100 |     100 |                   
  config.ts        |   97.29 |    90.85 |      80 |   97.29 | ...15,567,691-695 
  extension.ts     |   80.08 |    83.43 |   83.87 |   80.08 | ...21-823,829-832 
  keyBindings.ts   |     100 |      100 |     100 |     100 |                   
  sandboxConfig.ts |   54.16 |    23.07 |   66.66 |   54.16 | ...44,54-68,73-89 
  settings.ts      |   89.16 |    81.96 |   95.23 |   89.16 | ...25,627,629-630 
  ...ingsSchema.ts |     100 |       90 |     100 |     100 | 1022              
  ...tedFolders.ts |   92.96 |    91.42 |     100 |   92.96 | ...56-157,170-175 
 ...fig/extensions |   92.85 |    82.35 |     100 |   92.85 |                   
  ...ableSchema.ts |     100 |      100 |     100 |     100 |                   
  variables.ts     |   90.69 |    82.35 |     100 |   90.69 | 30-31,64-65       
 src/core          |   75.92 |     37.5 |     100 |   75.92 |                   
  auth.ts          |   56.25 |       50 |     100 |   56.25 | 27-36             
  initializer.ts   |   85.71 |    33.33 |     100 |   85.71 | 46-49             
  theme.ts         |      80 |    33.33 |     100 |      80 | 18-19             
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 src/patches       |       0 |        0 |       0 |       0 |                   
  is-in-ci.ts      |       0 |        0 |       0 |       0 | 1-17              
 src/services      |   68.61 |    90.66 |   92.85 |   68.61 |                   
  ...mandLoader.ts |     100 |      100 |     100 |     100 |                   
  ...andService.ts |     100 |      100 |     100 |     100 |                   
  ...mandLoader.ts |   89.44 |    91.11 |     100 |   89.44 | ...85-190,273-280 
  ...omptLoader.ts |   29.68 |    81.25 |   66.66 |   29.68 | ...40-241,244-248 
  types.ts         |     100 |      100 |     100 |     100 |                   
 ...mpt-processors |   97.12 |     93.5 |     100 |   97.12 |                   
  ...tProcessor.ts |     100 |      100 |     100 |     100 |                   
  ...eProcessor.ts |   94.44 |    84.21 |     100 |   94.44 | 43-44,90-91       
  ...tionParser.ts |     100 |      100 |     100 |     100 |                   
  ...lProcessor.ts |   97.14 |    94.87 |     100 |   97.14 | 94-97             
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/test-utils    |   91.22 |    83.33 |      80 |   91.22 |                   
  ...omMatchers.ts |   69.69 |       50 |      50 |   69.69 | 32-35,37-39,45-47 
  ...andContext.ts |     100 |      100 |     100 |     100 |                   
  render.tsx       |     100 |      100 |     100 |     100 |                   
 src/ui            |   70.52 |    69.17 |   48.71 |   70.52 |                   
  App.tsx          |     100 |      100 |     100 |     100 |                   
  AppContainer.tsx |   71.45 |    55.55 |   30.76 |   71.45 | ...42-899,933-936 
  ...tionNudge.tsx |    9.58 |      100 |       0 |    9.58 | 26-98             
  colors.ts        |   59.18 |      100 |   33.33 |   59.18 | ...46,48-49,54-55 
  constants.ts     |     100 |      100 |     100 |     100 |                   
  keyMatchers.ts   |   95.65 |    95.65 |     100 |   95.65 | 25-26             
  ...tic-colors.ts |     100 |      100 |     100 |     100 |                   
  textConstants.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/auth       |   60.37 |      100 |      50 |   60.37 |                   
  AuthDialog.tsx   |     100 |      100 |     100 |     100 |                   
  ...nProgress.tsx |   16.66 |      100 |       0 |   16.66 | 19-63             
  useAuth.ts       |      10 |      100 |       0 |      10 | 15-26,29-96       
 src/ui/commands   |   85.63 |    81.69 |    88.7 |   85.63 |                   
  aboutCommand.ts  |   95.65 |    58.33 |     100 |   95.65 | 52-53             
  authCommand.ts   |     100 |      100 |     100 |     100 |                   
  bugCommand.ts    |   79.48 |       40 |     100 |   79.48 | 33-36,78-87,93-94 
  chatCommand.ts   |   94.23 |    83.33 |     100 |   94.23 | ...11-212,214-215 
  clearCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...essCommand.ts |     100 |    88.88 |     100 |     100 | 73                
  copyCommand.ts   |     100 |      100 |     100 |     100 |                   
  corgiCommand.ts  |     100 |      100 |     100 |     100 |                   
  ...ryCommand.tsx |   69.27 |    73.07 |     100 |   69.27 | ...25-126,161-169 
  docsCommand.ts   |     100 |      100 |     100 |     100 |                   
  editorCommand.ts |     100 |      100 |     100 |     100 |                   
  ...onsCommand.ts |   96.11 |      100 |     100 |   96.11 | 65-68             
  helpCommand.ts   |     100 |      100 |     100 |     100 |                   
  ideCommand.ts    |   62.25 |       60 |   54.54 |   62.25 | ...52-266,274-288 
  initCommand.ts   |     100 |      100 |     100 |     100 |                   
  mcpCommand.ts    |   81.97 |    82.95 |   83.33 |   81.97 | ...85-386,436-443 
  memoryCommand.ts |   99.11 |    81.25 |     100 |   99.11 | 90                
  ...acyCommand.ts |     100 |      100 |     100 |     100 |                   
  quitCommand.ts   |     100 |      100 |     100 |     100 |                   
  ...oreCommand.ts |      92 |    87.09 |     100 |      92 | ...,82-87,128-129 
  ...ngsCommand.ts |     100 |      100 |     100 |     100 |                   
  ...hubCommand.ts |   83.66 |    66.66 |     100 |   83.66 | ...54-157,160-163 
  statsCommand.ts  |   84.48 |       75 |     100 |   84.48 | 25-33             
  ...tupCommand.ts |     100 |      100 |     100 |     100 |                   
  themeCommand.ts  |     100 |      100 |     100 |     100 |                   
  toolsCommand.ts  |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
  vimCommand.ts    |   44.44 |      100 |       0 |   44.44 | 15-25             
 src/ui/components |   70.12 |    75.88 |   64.28 |   70.12 |                   
  AboutBox.tsx     |     100 |       50 |     100 |     100 | 104               
  AnsiOutput.tsx   |     100 |      100 |     100 |     100 |                   
  AppHeader.tsx    |   36.36 |      100 |       0 |   36.36 | 19-35             
  AsciiArt.ts      |     100 |      100 |     100 |     100 |                   
  ...Indicator.tsx |   15.15 |      100 |       0 |   15.15 | 17-47             
  Composer.tsx     |   98.77 |    66.66 |     100 |   98.77 | 115,124           
  ...itDisplay.tsx |   62.16 |      100 |      50 |   62.16 | 21-32,36-37       
  ...ryDisplay.tsx |   21.05 |      100 |       0 |   21.05 | 17-35             
  ...ryDisplay.tsx |   87.91 |    62.06 |     100 |   87.91 | ...48-49,79-84,89 
  ...geDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...gProfiler.tsx |      24 |      100 |       0 |      24 | 13-36             
  ...esDisplay.tsx |   10.34 |      100 |       0 |   10.34 | 24-83             
  ...ogManager.tsx |   13.58 |      100 |       0 |   13.58 | 30-191            
  ...ngsDialog.tsx |    6.94 |      100 |       0 |    6.94 | 30-183            
  ...ustDialog.tsx |     100 |      100 |     100 |     100 |                   
  Footer.tsx       |   83.59 |    84.78 |     100 |   83.59 | ...59-166,169-172 
  ...ngSpinner.tsx |   54.28 |       50 |      50 |   54.28 | 31-48,61          
  Header.tsx       |   87.23 |    57.14 |     100 |   87.23 | 36-39,55,64       
  Help.tsx         |   98.46 |       60 |     100 |   98.46 | 77,131            
  ...emDisplay.tsx |   70.66 |    41.17 |     100 |   70.66 | ...61-66,87-95,98 
  InputPrompt.tsx  |   79.09 |    79.05 |     100 |   79.09 | ...61-863,871-882 
  ...Indicator.tsx |     100 |      100 |     100 |     100 |                   
  ...firmation.tsx |   90.62 |      100 |      50 |   90.62 | 26-31             
  MainContent.tsx  |   16.07 |      100 |       0 |   16.07 | 16-66             
  ...geDisplay.tsx |   22.58 |      100 |       0 |   22.58 | 15-41             
  ...tsDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...fications.tsx |   17.02 |      100 |       0 |   17.02 | 15-62             
  PrepareLabel.tsx |      50 |       20 |     100 |      50 | 28-30,35-48       
  ...otaDialog.tsx |     100 |      100 |     100 |     100 |                   
  ...ngDisplay.tsx |   23.07 |      100 |       0 |   23.07 | 13-37             
  ...ryDisplay.tsx |     100 |      100 |     100 |     100 |                   
  ...ngsDialog.tsx |    59.9 |    71.81 |      75 |    59.9 | ...26-727,765,776 
  ...ionDialog.tsx |   85.91 |      100 |   33.33 |   85.91 | 35-38,43-50       
  ...putPrompt.tsx |      15 |      100 |       0 |      15 | 19-57             
  ...Indicator.tsx |   44.44 |      100 |       0 |   44.44 | 12-17             
  ...MoreLines.tsx |      28 |      100 |       0 |      28 | 18-40             
  StatsDisplay.tsx |   98.59 |    93.33 |     100 |   98.59 | 195-197           
  ...nsDisplay.tsx |   87.67 |       60 |     100 |   87.67 | 38-43,88,105-107  
  ThemeDialog.tsx  |   91.13 |    48.27 |      75 |   91.13 | ...13-114,156-158 
  Tips.tsx         |   19.23 |      100 |       0 |   19.23 | 17-45             
  ...tsDisplay.tsx |     100 |     87.5 |     100 |     100 | 30-31             
  ...ification.tsx |   36.36 |      100 |       0 |   36.36 | 15-22             
  ...ionDialog.tsx |    8.64 |      100 |       0 |    8.64 | 20-112            
 ...nents/messages |   81.47 |    81.67 |   60.86 |   81.47 |                   
  ...onMessage.tsx |   94.11 |    82.35 |     100 |   94.11 | 48,50,52          
  DiffRenderer.tsx |   93.03 |    85.55 |     100 |   93.03 | ...02,228-229,295 
  ErrorMessage.tsx |   22.22 |      100 |       0 |   22.22 | 16-31             
  ...niMessage.tsx |      20 |      100 |       0 |      20 | 21-46             
  ...geContent.tsx |   19.04 |      100 |       0 |   19.04 | 25-43             
  InfoMessage.tsx  |   26.31 |      100 |       0 |   26.31 | 17-32             
  ...onMessage.tsx |   81.63 |    77.27 |   33.33 |   81.63 | ...10-111,132-147 
  ...upMessage.tsx |   91.34 |    91.66 |     100 |   91.34 | 40-43,136-140     
  ToolMessage.tsx  |   82.28 |    63.63 |     100 |   82.28 | ...38-143,210-212 
  UserMessage.tsx  |     100 |      100 |     100 |     100 |                   
  ...llMessage.tsx |   36.36 |      100 |       0 |   36.36 | 17-25             
 ...ponents/shared |   83.38 |    75.72 |   95.74 |   83.38 |                   
  EnumSelector.tsx |     100 |    96.42 |     100 |     100 | 58                
  MaxSizedBox.tsx  |   81.62 |    81.81 |   88.88 |   81.62 | ...07-508,613-614 
  ...tonSelect.tsx |   86.79 |    67.44 |     100 |   86.79 | ...52,155-156,234 
  ...eSelector.tsx |     100 |       50 |     100 |     100 | 35-40             
  text-buffer.ts   |   81.27 |     75.9 |   96.87 |   81.27 | ...1888,1915,1977 
  ...er-actions.ts |   86.71 |    67.79 |     100 |   86.71 | ...07-608,809-811 
 ...mponents/views |     100 |    93.75 |     100 |     100 |                   
  ...sionsList.tsx |     100 |    93.75 |     100 |     100 | 15                
 src/ui/contexts   |   83.85 |    80.81 |   86.36 |   83.85 |                   
  AppContext.tsx   |      40 |      100 |       0 |      40 | 17-22             
  ...igContext.tsx |   81.81 |       50 |     100 |   81.81 | 15-16             
  ...ssContext.tsx |   84.82 |    84.67 |     100 |   84.82 | ...87-592,688-690 
  ...owContext.tsx |   89.28 |       80 |   66.66 |   89.28 | 34,47-48,60-62    
  ...onContext.tsx |    91.3 |      100 |     100 |    91.3 | 98-99,103-106     
  ...gsContext.tsx |   83.33 |       50 |     100 |   83.33 | 17-18             
  ...ngContext.tsx |   71.42 |       50 |     100 |   71.42 | 17-20             
  ...nsContext.tsx |   86.66 |       50 |     100 |   86.66 | 53-54             
  ...teContext.tsx |      80 |       50 |     100 |      80 | 122-123           
  ...deContext.tsx |   67.39 |    28.57 |      50 |   67.39 | 47-48,52-59,75-80 
 src/ui/editors    |   93.18 |    85.71 |   66.66 |   93.18 |                   
  ...ngsManager.ts |   93.18 |    85.71 |   66.66 |   93.18 | 48,62-63          
 src/ui/hooks      |   79.27 |    80.87 |   82.55 |   79.27 |                   
  ...dProcessor.ts |   78.76 |    80.19 |     100 |   78.76 | ...47-450,461-479 
  keyToAnsi.ts     |    3.92 |      100 |       0 |    3.92 | 19-77             
  ...dProcessor.ts |   94.94 |       72 |     100 |   94.94 | ...62-263,268-269 
  ...dProcessor.ts |   81.45 |    71.59 |   71.42 |   81.45 | ...07-411,472-500 
  ...Completion.ts |   92.77 |    89.28 |     100 |   92.77 | ...85-186,219-222 
  ...tIndicator.ts |     100 |      100 |     100 |     100 |                   
  ...ketedPaste.ts |    23.8 |      100 |       0 |    23.8 | 19-37             
  ...ompletion.tsx |    95.3 |       80 |     100 |    95.3 | ...24-225,227-228 
  useCompletion.ts |    92.4 |     87.5 |     100 |    92.4 | 68-69,93-94,98-99 
  ...leMessages.ts |   98.68 |       95 |     100 |   98.68 | 55                
  ...orSettings.ts |     100 |      100 |     100 |     100 |                   
  useFocus.ts      |     100 |      100 |     100 |     100 |                   
  ...olderTrust.ts |     100 |      100 |     100 |     100 |                   
  ...miniStream.ts |   73.99 |    72.07 |      75 |   73.99 | ...1-952,982-1084 
  ...BranchName.ts |   91.66 |    84.61 |     100 |   91.66 | 57-63             
  ...oryManager.ts |   98.41 |    93.33 |     100 |   98.41 | 43                
  ...stListener.ts |   83.87 |    58.33 |     100 |   83.87 | 19,24,40,42-43    
  ...putHistory.ts |    92.5 |    85.71 |     100 |    92.5 | 62-63,71,93-95    
  ...storyStore.ts |     100 |    94.11 |     100 |     100 | 66                
  useKeypress.ts   |     100 |      100 |     100 |     100 |                   
  ...rdProtocol.ts |   36.36 |      100 |       0 |   36.36 | 24-31             
  ...gIndicator.ts |     100 |      100 |     100 |     100 |                   
  useLogger.ts     |      25 |      100 |       0 |      25 | 15-33             
  ...ssageQueue.ts |     100 |      100 |     100 |     100 |                   
  ...raseCycler.ts |    95.6 |       80 |     100 |    95.6 | ...73-174,190-192 
  ...cySettings.ts |   86.48 |    78.94 |     100 |   86.48 | ...08-109,120-131 
  ...Completion.ts |   40.64 |    56.52 |     100 |   40.64 | ...23-224,226-227 
  ...ndFallback.ts |   98.27 |    96.42 |     100 |   98.27 | 69-71             
  ...lScheduler.ts |      85 |    94.73 |     100 |      85 | ...00-203,291-301 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-7               
  ...ompletion.tsx |    94.2 |      100 |     100 |    94.2 | 78-81             
  ...ngsCommand.ts |   18.75 |      100 |       0 |   18.75 | 10-25             
  ...ellHistory.ts |   91.66 |    79.41 |     100 |   91.66 | ...69,117-118,128 
  ...oryCommand.ts |       0 |        0 |       0 |       0 | 1-76              
  ...Completion.ts |   77.56 |    79.77 |      90 |   77.56 | ...44-452,473-479 
  ...tateAndRef.ts |   13.63 |      100 |       0 |   13.63 | 16-36             
  ...rminalSize.ts |   18.18 |      100 |       0 |   18.18 | 12-32             
  ...emeCommand.ts |    7.89 |      100 |       0 |    7.89 | 24-101            
  useTimer.ts      |   88.09 |    85.71 |     100 |   88.09 | 44-45,51-53       
  ...eMigration.ts |   11.11 |      100 |       0 |   11.11 | 16-70             
  vim.ts           |   83.57 |     79.5 |     100 |   83.57 | ...38,742-750,759 
 src/ui/privacy    |   14.44 |      100 |       0 |   14.44 |                   
  ...acyNotice.tsx |   10.25 |      100 |       0 |   10.25 | 21-119            
  ...acyNotice.tsx |   14.28 |      100 |       0 |   14.28 | 16-59             
  ...acyNotice.tsx |   12.19 |      100 |       0 |   12.19 | 16-62             
  ...acyNotice.tsx |   30.76 |      100 |       0 |   30.76 | 19-36,39-41       
 src/ui/state      |     100 |      100 |     100 |     100 |                   
  extensions.ts    |     100 |      100 |     100 |     100 |                   
 src/ui/themes     |   98.99 |    60.43 |     100 |   98.99 |                   
  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 |                   
  no-color.ts      |     100 |      100 |     100 |     100 |                   
  ...tic-tokens.ts |     100 |      100 |     100 |     100 |                   
  ...-of-purple.ts |     100 |      100 |     100 |     100 |                   
  theme-manager.ts |    87.5 |    78.33 |     100 |    87.5 | ...86-292,297-298 
  theme.ts         |     100 |    32.25 |     100 |     100 | 255-437           
  xcode.ts         |     100 |      100 |     100 |     100 |                   
 src/ui/utils      |   66.66 |    81.21 |   78.46 |   66.66 |                   
  ...Colorizer.tsx |   79.45 |    81.81 |     100 |   79.45 | ...52-155,191-217 
  ...olePatcher.ts |      78 |    77.77 |     100 |      78 | 58-69             
  ...nRenderer.tsx |   52.85 |    27.27 |     100 |   52.85 | ...26-132,142-144 
  ...wnDisplay.tsx |   85.62 |    87.69 |     100 |   85.62 | ...73-281,314-339 
  ...eRenderer.tsx |   78.09 |    76.19 |     100 |   78.09 | 55-83             
  ...boardUtils.ts |   32.25 |     37.5 |     100 |   32.25 | ...55-114,129-145 
  commandUtils.ts  |   92.79 |    88.37 |     100 |   92.79 | ...12,116,118-119 
  computeStats.ts  |     100 |      100 |     100 |     100 |                   
  displayUtils.ts  |     100 |      100 |     100 |     100 |                   
  formatters.ts    |   90.47 |    95.83 |     100 |   90.47 | 57-60             
  highlight.ts     |     100 |      100 |     100 |     100 |                   
  isNarrowWidth.ts |     100 |      100 |     100 |     100 |                   
  ...olDetector.ts |    7.89 |      100 |       0 |    7.89 | ...11-112,115-116 
  ...nUtilities.ts |   69.84 |    85.71 |     100 |   69.84 | 75-91,100-101     
  ...mConstants.ts |     100 |      100 |     100 |     100 |                   
  terminalSetup.ts |       4 |      100 |       0 |       4 | 40-342            
  textUtils.ts     |   94.44 |    90.32 |   85.71 |   94.44 | 18-19,147-148     
  updateCheck.ts   |     100 |    80.95 |     100 |     100 | 27-39             
 src/utils         |   52.19 |    91.88 |   90.27 |   52.19 |                   
  checks.ts        |   33.33 |      100 |       0 |   33.33 | 23-28             
  cleanup.ts       |   65.38 |      100 |   66.66 |   65.38 | 28-37             
  deepMerge.ts     |     100 |    89.65 |     100 |     100 | 41-43,49          
  ...ScopeUtils.ts |   79.06 |    66.66 |     100 |   79.06 | 55-64             
  ...arResolver.ts |   96.42 |       96 |     100 |   96.42 | 111-112           
  errors.ts        |     100 |    96.77 |     100 |     100 | 77                
  events.ts        |     100 |      100 |     100 |     100 |                   
  gitUtils.ts      |   94.66 |    82.35 |     100 |   94.66 | 75-78             
  ...AutoUpdate.ts |    51.2 |       95 |      50 |    51.2 | 84-149            
  ...lationInfo.ts |     100 |      100 |     100 |     100 |                   
  package.ts       |   88.88 |       80 |     100 |   88.88 | 33-34             
  readStdin.ts     |   79.24 |       90 |      80 |   79.24 | 31-38,50-52       
  resolvePath.ts   |   66.66 |       25 |     100 |   66.66 | 12-13,16,18-19    
  sandbox.ts       |       0 |        0 |       0 |       0 | 1-950             
  settingsUtils.ts |   87.33 |    94.73 |   96.87 |   87.33 | ...91-418,462-463 
  spawnWrapper.ts  |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |   53.84 |    33.33 |     100 |   53.84 | 17-26,38-39       
  ...entEmitter.ts |     100 |      100 |     100 |     100 |                   
  ...upWarnings.ts |     100 |      100 |     100 |     100 |                   
  version.ts       |     100 |       50 |     100 |     100 | 11                
 ...ed-integration |   25.05 |        0 |       0 |   25.05 |                   
  acp.ts           |    3.29 |        0 |       0 |    3.29 | ...53-289,292-339 
  ...temService.ts |   19.35 |      100 |       0 |   19.35 | 15-19,22-34,37-46 
  schema.ts        |     100 |      100 |     100 |     100 |                   
  ...ntegration.ts |    3.13 |        0 |       0 |    3.13 | ...18-869,884-934 
-------------------|---------|----------|---------|---------|-------------------
Core Package - Full Text Report
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |   79.52 |       85 |   78.82 |   79.52 |                   
 src               |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
 src/__mocks__/fs  |     100 |      100 |     100 |     100 |                   
  promises.ts      |     100 |      100 |     100 |     100 |                   
 src/code_assist   |   78.26 |    83.51 |   80.85 |   78.26 |                   
  codeAssist.ts    |    17.5 |      100 |       0 |    17.5 | 16-38,41-54       
  converter.ts     |    96.2 |    95.45 |     100 |    96.2 | 179-183,197       
  ...al-storage.ts |     100 |    74.07 |     100 |     100 | 39-41,72-75       
  oauth2.ts        |   80.94 |    82.43 |   91.66 |   80.94 | ...87-488,511-512 
  server.ts        |   54.21 |    73.33 |   57.14 |   54.21 | ...30-233,252-253 
  setup.ts         |   86.66 |    78.94 |     100 |   86.66 | ...,92-94,118-124 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/config        |   78.92 |    86.48 |   52.75 |   78.92 |                   
  config.ts        |   77.61 |    84.67 |   47.05 |   77.61 | ...-958,1022-1023 
  models.ts        |     100 |      100 |     100 |     100 |                   
  storage.ts       |   84.44 |    94.73 |      75 |   84.44 | ...14-115,118-119 
 ...nfirmation-bus |    95.5 |    90.47 |   85.71 |    95.5 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-8               
  message-bus.ts   |   98.71 |    94.73 |     100 |   98.71 | 74                
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/core          |   79.94 |    84.76 |   75.86 |   79.94 |                   
  baseLlmClient.ts |     100 |      100 |     100 |     100 |                   
  client.ts        |   80.79 |    83.85 |   68.96 |   80.79 | ...32-840,918-926 
  ...tGenerator.ts |   92.47 |     82.6 |     100 |   92.47 | 77-78,129,149-152 
  ...lScheduler.ts |   79.13 |    80.37 |   85.18 |   79.13 | ...1088,1168-1172 
  geminiChat.ts    |   79.33 |    87.28 |   66.66 |   79.33 | ...19-720,723-724 
  geminiRequest.ts |     100 |      100 |     100 |     100 |                   
  logger.ts        |   82.94 |    81.81 |     100 |   82.94 | ...44-348,388-399 
  ...tGenerator.ts |   13.51 |      100 |      10 |   13.51 | ...87-188,191-194 
  ...olExecutor.ts |     100 |      100 |      50 |     100 |                   
  prompts.ts       |   97.77 |      100 |   66.66 |   97.77 | 347-404           
  subagent.ts      |   86.84 |    81.31 |     100 |   86.84 | ...55-663,706-707 
  tokenLimits.ts   |   14.28 |      100 |       0 |   14.28 | 15-32             
  turn.ts          |      88 |    88.46 |     100 |      88 | ...23,336-337,384 
 src/fallback      |     100 |      100 |     100 |     100 |                   
  handler.ts       |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/generated     |     100 |      100 |     100 |     100 |                   
  git-commit.ts    |     100 |      100 |     100 |     100 |                   
 src/ide           |   72.06 |    83.91 |   75.47 |   72.06 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  detect-ide.ts    |   96.96 |    97.29 |     100 |   96.96 | 63-65             
  ide-client.ts    |   56.42 |    77.64 |    60.6 |   56.42 | ...83-791,817-825 
  ide-installer.ts |   91.45 |       84 |     100 |   91.45 | ...95,130-134,147 
  ideContext.ts    |     100 |      100 |     100 |     100 |                   
  process-utils.ts |   87.09 |    74.19 |     100 |   87.09 | ...25,156,166-167 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/mcp           |   76.59 |    69.13 |   80.48 |   76.59 |                   
  ...h-provider.ts |   86.36 |      100 |   33.33 |   86.36 | ...85,89,93,97-98 
  ...h-provider.ts |   74.52 |    52.17 |     100 |   74.52 | ...03-807,814-816 
  ...en-storage.ts |   97.39 |      100 |      90 |   97.39 | 67-69             
  oauth-utils.ts   |   67.78 |    78.57 |    90.9 |   67.78 | ...61-282,307-330 
 .../token-storage |   88.18 |    86.46 |      95 |   88.18 |                   
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   82.75 |    82.35 |   92.85 |   82.75 | ...62-172,180-181 
  ...en-storage.ts |     100 |      100 |     100 |     100 |                   
  ...en-storage.ts |   85.71 |    81.81 |      90 |   85.71 | ...25-227,249-250 
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/mocks         |     100 |      100 |     100 |     100 |                   
  msw.ts           |     100 |      100 |     100 |     100 |                   
 src/output        |     100 |      100 |     100 |     100 |                   
  ...-formatter.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |     100 |      100 |     100 |     100 |                   
 src/policy        |   92.96 |    93.75 |    90.9 |   92.96 |                   
  index.ts         |       0 |        0 |       0 |       0 | 1-8               
  policy-engine.ts |     100 |      100 |     100 |     100 |                   
  ...-stringify.ts |   89.09 |    88.88 |     100 |   89.09 | 63-64,69-70,90-91 
  types.ts         |     100 |      100 |     100 |     100 |                   
 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/routing       |   96.42 |       80 |      80 |   96.42 |                   
  ...terService.ts |     100 |      100 |     100 |     100 |                   
  ...ngStrategy.ts |       0 |        0 |       0 |       0 | 1                 
 ...ing/strategies |     100 |      100 |     100 |     100 |                   
  ...teStrategy.ts |     100 |      100 |     100 |     100 |                   
  ...ltStrategy.ts |     100 |      100 |     100 |     100 |                   
  ...ckStrategy.ts |     100 |      100 |     100 |     100 |                   
  ...deStrategy.ts |     100 |      100 |     100 |     100 |                   
 src/services      |   89.67 |    84.04 |   92.75 |   89.67 |                   
  ...ingService.ts |   85.27 |    57.14 |     100 |   85.27 | ...14-416,443-445 
  ...eryService.ts |   96.73 |    96.96 |    87.5 |   96.73 | 115,140-141       
  ...temService.ts |     100 |      100 |     100 |     100 |                   
  gitService.ts    |      70 |    93.33 |      60 |      70 | ...15-125,128-132 
  ...ionService.ts |   97.93 |       95 |     100 |   97.93 | ...57-358,364-365 
  ...ionService.ts |   89.54 |    82.35 |     100 |   89.54 | ...85-590,608-613 
 src/telemetry     |   69.14 |    85.38 |   73.04 |   69.14 |                   
  constants.ts     |     100 |      100 |     100 |     100 |                   
  ...-exporters.ts |   26.47 |      100 |       0 |   26.47 | ...84,87-88,91-92 
  ...rk-tracker.ts |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-63              
  ...t.circular.ts |       0 |        0 |       0 |       0 | 1-128             
  loggers.ts       |   64.33 |    70.58 |   60.86 |   64.33 | ...19-638,641-660 
  metrics.ts       |   64.01 |     93.1 |      50 |   64.01 | ...58-260,266-268 
  rate-limiter.ts  |     100 |      100 |     100 |     100 |                   
  sdk.ts           |   78.37 |    44.44 |     100 |   78.37 | ...83,188-189,191 
  ...etry-utils.ts |     100 |      100 |     100 |     100 |                   
  ...l-decision.ts |     100 |      100 |     100 |     100 |                   
  types.ts         |   76.45 |    87.93 |   79.48 |   76.45 | ...42-562,596-607 
  uiTelemetry.ts   |    99.3 |    96.15 |     100 |    99.3 | 130               
 ...learcut-logger |   72.65 |    80.51 |   62.16 |   72.65 |                   
  ...cut-logger.ts |   69.46 |    80.26 |   62.16 |   69.46 | ...1032,1035-1038 
  ...tadata-key.ts |     100 |      100 |     100 |     100 |                   
 src/test-utils    |   76.01 |     92.3 |   66.66 |   76.01 |                   
  config.ts        |     100 |      100 |     100 |     100 |                   
  index.ts         |     100 |      100 |     100 |     100 |                   
  mock-tool.ts     |   18.64 |        0 |       0 |   18.64 | ...8,61-62,72-115 
  ...aceContext.ts |     100 |      100 |     100 |     100 |                   
  tools.ts         |   95.86 |    95.23 |      80 |   95.86 | 60-61,129,133-134 
 src/tools         |   74.05 |    82.07 |   81.99 |   74.05 |                   
  diffOptions.ts   |     100 |      100 |     100 |     100 |                   
  edit.ts          |   82.98 |    88.37 |   85.71 |   82.98 | ...45-446,536-576 
  glob.ts          |   91.11 |    81.96 |    87.5 |   91.11 | ...29-230,332-333 
  grep.ts          |   59.25 |    82.14 |      80 |   59.25 | ...04-608,618-619 
  ls.ts            |   96.29 |    88.52 |     100 |   96.29 | 140-145,176,180   
  ...nt-manager.ts |   80.89 |    66.66 |      80 |   80.89 | ...12-119,127-128 
  mcp-client.ts    |    31.6 |    78.02 |      50 |    31.6 | ...1367,1371-1374 
  mcp-tool.ts      |    94.9 |    93.05 |   94.11 |    94.9 | 200-210,272-273   
  memoryTool.ts    |   83.15 |    82.97 |   88.88 |   83.15 | ...31-246,357-375 
  ...iable-tool.ts |     100 |    84.61 |     100 |     100 | 99,106            
  read-file.ts     |    98.7 |    97.14 |    87.5 |    98.7 | 63-64             
  ...many-files.ts |   78.78 |    79.41 |   85.71 |   78.78 | ...37-438,445-446 
  ripGrep.ts       |   90.13 |    87.61 |   93.75 |   90.13 | ...63-464,485-486 
  shell.ts         |   83.53 |       76 |    90.9 |   83.53 | ...95-396,407-408 
  smart-edit.ts    |   78.89 |    75.24 |   85.71 |   78.89 | ...87-789,801-844 
  tool-error.ts    |     100 |      100 |     100 |     100 |                   
  tool-registry.ts |    72.8 |    66.07 |   77.77 |    72.8 | ...08-410,437-438 
  tools.ts         |   85.92 |    89.13 |      75 |   85.92 | ...73-374,390-396 
  web-fetch.ts     |    60.3 |    54.05 |    90.9 |    60.3 | ...45-346,353-354 
  web-search.ts    |     100 |     93.1 |     100 |     100 | 106-107           
  write-file.ts    |   83.91 |    83.87 |      75 |   83.91 | ...48-451,463-499 
 src/utils         |   88.11 |    88.31 |   89.62 |   88.11 |                   
  LruCache.ts      |   80.64 |       75 |     100 |   80.64 | 28,30-34          
  bfsFileSearch.ts |   89.77 |     92.3 |     100 |   89.77 | 86-94             
  browser.ts       |    7.69 |      100 |       0 |    7.69 | 17-56             
  editCorrector.ts |    77.3 |    61.11 |   91.66 |    77.3 | ...66-678,712,726 
  editor.ts        |   97.63 |    94.54 |     100 |   97.63 | 154,224,227-228   
  ...entContext.ts |     100 |      100 |     100 |     100 |                   
  errorParsing.ts  |     100 |     92.3 |     100 |     100 | 76,80,86          
  ...rReporting.ts |   83.72 |    84.61 |     100 |   83.72 | 82-86,107-115     
  errors.ts        |   55.95 |    71.42 |   41.66 |   55.95 | ...86-102,106-112 
  fetch.ts         |   34.04 |      100 |       0 |   34.04 | 22-27,31-57       
  fileUtils.ts     |   95.32 |    90.37 |     100 |   95.32 | ...36-240,450-456 
  formatters.ts    |   54.54 |       50 |     100 |   54.54 | 12-16             
  ...noreParser.ts |   85.45 |    81.48 |     100 |   85.45 | ...59,65-66,72-73 
  ...eUtilities.ts |    95.4 |    94.87 |     100 |    95.4 | 16-17,45-46       
  ...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 |    92.3 |    89.13 |     100 |    92.3 | ...15-116,186-187 
  gitUtils.ts      |   51.21 |       90 |      50 |   51.21 | 40-41,50-73       
  ...rePatterns.ts |     100 |      100 |     100 |     100 |                   
  ...ionManager.ts |     100 |       90 |     100 |     100 | 23                
  ...-detection.ts |     100 |      100 |     100 |     100 |                   
  ...edit-fixer.ts |     100 |      100 |     100 |     100 |                   
  ...yDiscovery.ts |   85.75 |    75.43 |   77.77 |   85.75 | ...87-388,391-392 
  ...tProcessor.ts |   91.51 |    88.46 |   84.61 |   91.51 | ...02-308,385-386 
  ...Inspectors.ts |     100 |      100 |     100 |     100 |                   
  ...kerChecker.ts |   83.33 |    83.33 |     100 |   83.33 | 64-65,75-80,88-94 
  partUtils.ts     |     100 |      100 |     100 |     100 |                   
  pathReader.ts    |     100 |      100 |     100 |     100 |                   
  paths.ts         |   86.13 |    87.87 |     100 |   86.13 | ...,89-90,101-102 
  ...tIdContext.ts |     100 |      100 |     100 |     100 |                   
  ...rDetection.ts |    64.4 |    76.19 |     100 |    64.4 | ...4,88-89,99-100 
  retry.ts         |   62.55 |    73.21 |     100 |   62.55 | ...58-278,323-338 
  ...nStringify.ts |     100 |      100 |     100 |     100 |                   
  ...aValidator.ts |    82.6 |       50 |     100 |    82.6 | 27-28,30-31       
  ...r-launcher.ts |   76.52 |     87.5 |   66.66 |   76.52 | ...33,135,153-191 
  session.ts       |     100 |      100 |     100 |     100 |                   
  shell-utils.ts   |   96.08 |    93.91 |     100 |   96.08 | ...94-195,242-244 
  summarizer.ts    |     100 |    88.88 |     100 |     100 | 91                
  ...emEncoding.ts |      98 |    94.11 |     100 |      98 | 106-107           
  ...Serializer.ts |   99.07 |    91.22 |     100 |   99.07 | 90,150-152        
  testUtils.ts     |   84.44 |    72.72 |   83.33 |   84.44 | 27-28,34-35,70-72 
  textUtils.ts     |    12.5 |      100 |       0 |    12.5 | 15-34             
  tool-utils.ts    |   91.48 |    89.47 |     100 |   91.48 | 53-54,57-58       
  ...untManager.ts |   97.14 |    94.59 |     100 |   97.14 | 36-38             
  ...aceContext.ts |   96.82 |    95.12 |    92.3 |   96.82 | 94-95,109-110     
 ...ils/filesearch |   96.17 |     91.4 |     100 |   96.17 |                   
  crawlCache.ts    |     100 |      100 |     100 |     100 |                   
  crawler.ts       |   96.22 |     92.3 |     100 |   96.22 | 66-67             
  fileSearch.ts    |   93.22 |    87.14 |     100 |   93.22 | ...28-229,231-232 
  ignore.ts        |     100 |      100 |     100 |     100 |                   
  result-cache.ts  |     100 |     92.3 |     100 |     100 | 46                
-------------------|---------|----------|---------|---------|-------------------

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

   The `removeDefaultValues` function has been removed from the settings logic to ensure that all
   explicitly set values in a settings file are preserved, even if they match the schema's default.

   This change makes the behavior of settings more predictable. If a user or workspace setting is
   explicitly defined, it will be saved, preventing unexpected behavior where settings could be
   implicitly removed if they matched the default.

   Key changes:
   - Removed the `removeDefaultValues` and the unused `isEqual` functions.
   - Updated `saveSettings` to write all provided settings directly.
   - Adjusted tests for `saveSettings` to align with the new behavior.
   - Added a test case to verify that workspace settings correctly override user settings, even when
   resetting a value to its default.
  The tests for settings loading and merging were previously comparing the
  merged settings object to a large, hardcoded object. This was brittle
  and would break whenever new settings were added to the default
  configuration.

  This commit refactors these tests to dynamically construct the expected
  settings object. It uses the getDefaultSettings() function and
  overrides only the properties that are relevant to each specific test
  case.

  This approach makes the tests more resilient to changes in the settings
  schema, preventing unnecessary churn and maintenance overhead.

  A minor comment was also updated to improve clarity.
@galz10 galz10 requested a review from a team as a code owner September 12, 2025 15:31
@galz10 galz10 requested a review from jacob314 September 12, 2025 15:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status/need-issue Pull request needs to be associated with an issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants