Fix App Setting Visibility Toggle Icon State #4584
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The "App Setting Visibility" toggle icon does not reflect the current visibility state. The icon remains static as an "eye" icon (
$(eye)
) regardless of whether the setting value is hidden or visible, making it impossible for users to understand the current state at a glance.Expected behavior: The icon should change to reflect the current visibility state:
$(eye)
when value is hidden (click to show)$(eye-closed)
when value is visible (click to hide)Actual behavior: The icon always shows
$(eye)
regardless of state.Solution
Implemented a runtime monkey patch that overrides the
AppSettingTreeItem.iconPath
getter to provide dynamic icons based on the visibility state.Technical Implementation
Created
appSettingIconPatch.ts
- Contains the patch logic that:ThemeIcon
based on current stateApplied patch during extension activation - Ensures all
AppSettingTreeItem
instances use the new dynamic icon logicState detection method - Uses label content inspection since the private
_hideValue
property is not accessible:$(eye)
$(eye-closed)
$(warning)
for securityIcon Behavior
SETTING=Hidden value. Click to view.
$(eye)
SETTING=actual_value
$(eye-closed)
$(warning)
Testing
The fix maintains backward compatibility while providing the expected visual feedback for app setting visibility state.
Fixes #4563.
Warning
Firewall rules blocked me from connecting to one or more addresses
I tried to connect to the following addresses, but was blocked by firewall rules:
aka.ms
gulp preTest
(dns block)If you need me to access, download, or install something from one of these locations, you can either:
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.