diff --git a/src/modules/cmdpal/doc/host-settings-awareness/host-settings-awareness.md b/src/modules/cmdpal/doc/host-settings-awareness/host-settings-awareness.md
index 75d4f67a75..11440cc404 100644
--- a/src/modules/cmdpal/doc/host-settings-awareness/host-settings-awareness.md
+++ b/src/modules/cmdpal/doc/host-settings-awareness/host-settings-awareness.md
@@ -86,47 +86,28 @@ Some extensions may want to provide experiences that align with the host's confi
### Architecture Overview
-```
-┌─────────────────────────────────────────────────────────────────┐
-│ Command Palette Host │
-│ ┌─────────────────┐ ┌──────────────────┐ │
-│ │ SettingsModel │───▶│HostSettingsConv- │ │
-│ │ │ │ erter │ │
-│ └────────┬────────┘ └────────┬─────────┘ │
-│ │ │ │
-│ │SettingsChanged │ IHostSettings │
-│ ▼ ▼ │
-│ ┌─────────────────────────────────────────────────┐ │
-│ │ ExtensionService │ │
-│ │ NotifyHostSettingsChanged(IHostSettings) │ │
-│ └────────────────────┬────────────────────────────┘ │
-│ │ │
-└───────────────────────┼──────────────────────────────────────────┘
- │ Cross-Process (COM/WinRT)
- ▼
-┌───────────────────────────────────────────────────────────────────┐
-│ Extension Process │
-│ ┌────────────────────────────────────────────────┐ │
-│ │ CommandProvider │ │
-│ │ OnHostSettingsChanged(IHostSettings settings) │ │
-│ └────────────────────┬───────────────────────────┘ │
-│ │ │
-│ ▼ │
-│ ┌────────────────────────────────────────────────┐ │
-│ │ HostSettingsManager │ │
-│ │ ┌──────────────────────────────────────────┐ │ │
-│ │ │ Current: IHostSettings │ │ │
-│ │ │ SettingsChanged: event Action │ │ │
-│ │ └──────────────────────────────────────────┘ │ │
-│ └────────────────────┬───────────────────────────┘ │
-│ │ │
-│ ▼ │
-│ ┌────────────────────────────────────────────────┐ │
-│ │ Extension Pages / Commands │ │
-│ │ (Subscribe to HostSettingsManager. │ │
-│ │ SettingsChanged or read Current) │ │
-│ └────────────────────────────────────────────────┘ │
-└───────────────────────────────────────────────────────────────────┘
+```mermaid
+flowchart TB
+ subgraph Host["Command Palette Host"]
+ SM[SettingsModel]
+ HSC[HostSettingsConverter]
+ ES["ExtensionService
NotifyHostSettingsChanged(IHostSettings)"]
+
+ SM -->|SettingsChanged| ES
+ SM --> HSC
+ HSC -->|IHostSettings| ES
+ end
+
+ ES -->|"Cross-Process (COM/WinRT)"| CP
+
+ subgraph Extension["Extension Process"]
+ CP["CommandProvider
OnHostSettingsChanged(IHostSettings)"]
+ HSM["HostSettingsManager
━━━━━━━━━━━━━━━━━━━━
Current: IHostSettings
SettingsChanged: event Action"]
+ EPC["Extension Pages / Commands
(Subscribe to HostSettingsManager.SettingsChanged
or read Current)"]
+
+ CP --> HSM
+ HSM --> EPC
+ end
```
### Key Components
@@ -451,100 +432,61 @@ This design ensures:
This diagram shows how initial host settings are delivered to extensions when they first load:
-```
-┌─────────────────────┐ ┌─────────────────────────┐ ┌────────────────────┐ ┌─────────────────┐
-│TopLevelCommandManager│ │CommandProviderWrapper │ │ExtensionWrapper │ │Extension Process│
-└──────────┬──────────┘ └────────────┬────────────┘ └─────────┬──────────┘ └────────┬────────┘
- │ │ │ │
- │ LoadTopLevelCommandsFromProvider() │ │
- │─────────────────────────▶│ │ │
- │ │ │ │
- │ │ LoadTopLevelCommands() │ │
- │ │────────────────────────▶│ │
- │ │ │ │
- │ │◀────────────────────────│ │
- │ │ │ │
- │ │ SendInitialHostSettings() │
- │ │──────┐ │ │
- │ │ │ Get settings │ │
- │ │◀─────┘ │ │
- │ │ │ │
- │ │ [OOP Extension] │ │
- │ │ NotifyHostSettingsChanged(settings) │
- │ │────────────────────────▶│ │
- │ │ │ │
- │ │ │ GetApiExtensionStubs()
- │ │ │─────────────────────▶│
- │ │ │ │
- │ │ │◀─────────────────────│
- │ │ │ [stubs array] │
- │ │ │ │
- │ │ │ OnHostSettingsChanged(settings)
- │ │ │─────────────────────▶│
- │ │ │ │
- │ │ │ │ HostSettingsManager
- │ │ │ │ .Update(settings)
- │ │ │ │──────┐
- │ │ │ │ │
- │ │ │ │◀─────┘
- │ │ │ │
- │ │ [Built-in Command] │ │
- │ │ OnHostSettingsChanged(settings) (direct call) │
- │ │───────────────────────────────────────────────▶│
- │ │ │ │
- │◀─────────────────────────│ │ │
- │ │ │ │
+```mermaid
+sequenceDiagram
+ participant TLCM as TopLevelCommandManager
+ participant CPW as CommandProviderWrapper
+ participant EW as ExtensionWrapper
+ participant EP as Extension Process
+
+ TLCM->>CPW: LoadTopLevelCommandsFromProvider()
+ CPW->>EW: LoadTopLevelCommands()
+ EW-->>CPW: (commands loaded)
+
+ CPW->>CPW: SendInitialHostSettings()
Get settings
+
+ alt OOP Extension
+ CPW->>EW: NotifyHostSettingsChanged(settings)
+ EW->>EP: GetApiExtensionStubs()
+ EP-->>EW: [stubs array]
+ EW->>EP: OnHostSettingsChanged(settings)
+ EP->>EP: HostSettingsManager.Update(settings)
+ else Built-in Command
+ CPW->>EP: OnHostSettingsChanged(settings)
(direct call)
+ EP->>EP: HostSettingsManager.Update(settings)
+ end
+
+ CPW-->>TLCM: (complete)
```
### Settings Change Notification
This diagram shows how settings changes are propagated to all extensions:
-```
-┌───────────┐ ┌────────────┐ ┌────────────────┐ ┌─────────────────┐ ┌─────────────────┐
-│ User │ │SettingsModel│ │ExtensionService│ │ExtensionWrapper │ │Extension Process│
-└─────┬─────┘ └──────┬─────┘ └───────┬────────┘ └────────┬────────┘ └────────┬────────┘
- │ │ │ │ │
- │ Change setting│ │ │ │
- │──────────────▶│ │ │ │
- │ │ │ │ │
- │ │ SettingsChanged event │ │
- │ │───────────────▶│ │ │
- │ │ │ │ │
- │ │ │ ToHostSettings() │ │
- │ │ │──────┐ │ │
- │ │ │ │ Convert │ │
- │ │ │◀─────┘ │ │
- │ │ │ │ │
- │ │ │ NotifyHostSettingsChanged(settings) │
- │ │ │───────────────────▶│ │
- │ │ │ │ │
- │ │ │ [For each extension] │
- │ │ │ │ │
- │ │ │ │ GetApiExtensionStubs()
- │ │ │ │───────────────────▶│
- │ │ │ │ │
- │ │ │ │◀───────────────────│
- │ │ │ │ [stubs array] │
- │ │ │ │ │
- │ │ │ │ OnHostSettingsChanged(settings)
- │ │ │ │───────────────────▶│
- │ │ │ │ │
- │ │ │ │ │ HostSettingsManager
- │ │ │ │ │ .Update(settings)
- │ │ │ │ │──────┐
- │ │ │ │ │ │
- │ │ │ │ │◀─────┘
- │ │ │ │ │
- │ │ │ │ │ SettingsChanged
- │ │ │ │ │ event fired
- │ │ │ │ │──────┐
- │ │ │ │ │ │
- │ │ │ │ │◀─────┘
- │ │ │ │ │
- │ │ │ │ │ Extension pages
- │ │ │ │ │ update UI
- │ │ │ │ │
+```mermaid
+sequenceDiagram
+ participant User
+ participant SM as SettingsModel
+ participant ES as ExtensionService
+ participant EW as ExtensionWrapper
+ participant EP as Extension Process
+
+ User->>SM: Change setting
+ SM->>ES: SettingsChanged event
+
+ ES->>ES: ToHostSettings()
Convert settings
+
+ ES->>EW: NotifyHostSettingsChanged(settings)
+
+ loop For each extension
+ EW->>EP: GetApiExtensionStubs()
+ EP-->>EW: [stubs array]
+ EW->>EP: OnHostSettingsChanged(settings)
+
+ EP->>EP: HostSettingsManager.Update(settings)
+ EP->>EP: SettingsChanged event fired
+ EP->>EP: Extension pages update UI
+ end
```
## Example Usage