11# Changelog - Wind
22
3- Wind is our UI service layer - the Effect-TS-driven re-implementation
4- of VS Code's workbench services that bridges the renderer to Mountain
5- through Tauri IPC. This file records what we built in our voice,
6- version by version. Format adapted from
7- [ Keep a Changelog] ( https://keepachangelog.com/ ) .
3+ Wind is our UI service layer - the Effect-TS-driven re-implementation of VS
4+ Code's workbench services that bridges the renderer to Mountain through Tauri
5+ IPC. This file records what we built in our voice, version by version. Format
6+ adapted from [ Keep a Changelog] ( https://keepachangelog.com/ ) .
87
98## [ v2.1] - Full Workbench Lift, Tauri IPC Bridge
109
11- We finalised the substrate that lets the workbench talk to Mountain
12- through our Tauri IPC instead of Electron's. By the end of this cycle
13- we had 24 channel routes wired, 5 streaming subscriptions, and a clean
14- preload + bootstrap that brings the editor up against a live Cocoon.
10+ We finalised the substrate that lets the workbench talk to Mountain through our
11+ Tauri IPC instead of Electron's. By the end of this cycle we had 24 channel
12+ routes wired, 5 streaming subscriptions, and a clean preload + bootstrap that
13+ brings the editor up against a live Cocoon.
1514
1615### Added
1716
1817- ** Five streaming ` listen() ` subscriptions** for the renderer:
19- ` sky://vfs/fileChange ` , ` sky://configuration/changed ` ,
20- ` sky://terminal/data ` , ` sky://lifecycle/willShutdown ` ,
21- ` sky://lifecycle/phaseChanged ` . Each gives the workbench a live
22- feed without round-tripping invokes.
23- - ** ` Source/Service/TauriMainProcessService.ts ` ** (~ 232 lines) - our
24- IPC routing surface with ** 24 routed channels** and ** 14 stub
25- channels** :
26- - ** Routed** : ` localFilesystem ` , ` storage ` , ` configuration ` ,
27- ` textFile ` , ` extensions ` , ` commands ` , ` terminal ` , ` output ` ,
28- ` notification ` , ` progress ` , ` quickInput ` , ` workspaces ` ,
29- ` themes ` , ` search ` , ` environment ` , ` decorations ` ,
30- ` workingCopy ` , ` keybinding ` , ` lifecycle ` , ` label ` , ` model ` ,
31- ` nativeHost ` , ` localPty ` , ` url ` , ` menubar ` , ` encryption ` ,
32- ` extensionHostStarter ` , ` extensionhostdebugservice ` .
33- - ** Stubbed** : ` update ` , ` sign ` , ` policy ` , ` userDataProfiles ` ,
34- ` keyboardLayout ` , ` sharedProcess ` , ` utilityProcessWorker ` ,
35- ` meteredConnection ` , ` webContentExtractor ` , ` browserElements ` ,
36- ` NativeMcpDiscoveryHelper ` , ` sandboxHelper ` , ` mcpGateway ` ,
37- ` browserViewGroup ` , ` externalTerminal ` . Each stub returns the
38- shape the workbench expects (mostly empty arrays / no-op
39- disposables) so the bootstrap doesn't crash on a missing
40- handler.
41- - ** MessageChannel for extension-host IPC** in ` Preload.ts `
42- (~ +58 lines): init data → Initialized byte (` [1] ` ) → Ready byte
43- (` [2] ` ) after 50 ms.
44- - ** Extension-host protocol message forwarding to Mountain**
45- (~ +85 lines).
46- - ** ` ResolveConfiguration ` ** : ~ +111 lines covering
47- ` INativeWindowConfiguration ` , profiles, ` colorScheme ` ,
48- ` accessibilitySupport ` ; ~ +94 lines for Mountain path resolution
49- via RPC.
50- - ** ` Source/Function/DevLog.ts ` ** (~ 72 lines) - fire-and-forget dev
51- logging with short-mode formatting, mirrored to Mountain so
52- renderer-side logs land in the same trace stream.
18+ ` sky://vfs/fileChange ` , ` sky://configuration/changed ` , ` sky://terminal/data ` ,
19+ ` sky://lifecycle/willShutdown ` , ` sky://lifecycle/phaseChanged ` . Each gives the
20+ workbench a live feed without round-tripping invokes.
21+ - ** ` Source/Service/TauriMainProcessService.ts ` ** (~ 232 lines) - our IPC routing
22+ surface with ** 24 routed channels** and ** 14 stub channels** :
23+ - ** Routed** : ` localFilesystem ` , ` storage ` , ` configuration ` , ` textFile ` ,
24+ ` extensions ` , ` commands ` , ` terminal ` , ` output ` , ` notification ` ,
25+ ` progress ` , ` quickInput ` , ` workspaces ` , ` themes ` , ` search ` , ` environment ` ,
26+ ` decorations ` , ` workingCopy ` , ` keybinding ` , ` lifecycle ` , ` label ` , ` model ` ,
27+ ` nativeHost ` , ` localPty ` , ` url ` , ` menubar ` , ` encryption ` ,
28+ ` extensionHostStarter ` , ` extensionhostdebugservice ` .
29+ - ** Stubbed** : ` update ` , ` sign ` , ` policy ` , ` userDataProfiles ` ,
30+ ` keyboardLayout ` , ` sharedProcess ` , ` utilityProcessWorker ` ,
31+ ` meteredConnection ` , ` webContentExtractor ` , ` browserElements ` ,
32+ ` NativeMcpDiscoveryHelper ` , ` sandboxHelper ` , ` mcpGateway ` ,
33+ ` browserViewGroup ` , ` externalTerminal ` . Each stub returns the shape the
34+ workbench expects (mostly empty arrays / no-op disposables) so the
35+ bootstrap doesn't crash on a missing handler.
36+ - ** MessageChannel for extension-host IPC** in ` Preload.ts ` (~ +58 lines): init
37+ data → Initialized byte (` [1] ` ) → Ready byte (` [2] ` ) after 50 ms.
38+ - ** Extension-host protocol message forwarding to Mountain** (~ +85 lines).
39+ - ** ` ResolveConfiguration ` ** : ~ +111 lines covering ` INativeWindowConfiguration ` ,
40+ profiles, ` colorScheme ` , ` accessibilitySupport ` ; ~ +94 lines for Mountain path
41+ resolution via RPC.
42+ - ** ` Source/Function/DevLog.ts ` ** (~ 72 lines) - fire-and-forget dev logging with
43+ short-mode formatting, mirrored to Mountain so renderer-side logs land in the
44+ same trace stream.
5345
5446### Changed
5547
5648- ** ` Preload.ts ` grew** from ~ 99 lines to 190+ lines with debugging
57- instrumentation. We use it as the single bridge that mounts our
58- Tauri IPC under the names the workbench expects (` window.vscode ` ,
59- the channel proxy, etc.) before the workbench loads.
60- - ** IPC naming convention** : ` ipcMain ` → ` IPC ` for our PascalCase
61- rule.
62- - ** Effect.either refactor** in the bootstrap path so fiber-level
63- failures surface as proper ` Either ` results instead of getting
64- buried.
49+ instrumentation. We use it as the single bridge that mounts our Tauri IPC
50+ under the names the workbench expects (` window.vscode ` , the channel proxy,
51+ etc.) before the workbench loads.
52+ - ** IPC naming convention** : ` ipcMain ` → ` IPC ` for our PascalCase rule.
53+ - ** Effect.either refactor** in the bootstrap path so fiber-level failures
54+ surface as proper ` Either ` results instead of getting buried.
6555
6656### Removed
6757
6858- ** 1,076 lines of legacy polyfills** deleted in one pass:
6959 ` ChildProcessPolyfill.ts ` (77), ` FileProtocolShim.ts ` (58),
7060 ` FileSystemPolyfill.ts ` (44), ` NativeModulePolyfill.ts ` (62),
71- ` ProcessPolyfill.ts ` (36), ` SharedProcessProxy.ts ` (68). All
72- superseded by Mountain-routed channels.
61+ ` ProcessPolyfill.ts ` (36), ` SharedProcessProxy.ts ` (68). All superseded by
62+ Mountain-routed channels.
7363
7464## [ v2.0] - Editor Launch (Bootstrap + Preload Foundation)
7565
7666We built the renderer-side shape the bundled workbench needs to boot.
7767
7868### Added
7969
80- - ** ` Source/Preload.ts ` ** (99 lines) - the Tauri/Electron bridge
81- the workbench imports first.
70+ - ** ` Source/Preload.ts ` ** (99 lines) - the Tauri/Electron bridge the workbench
71+ imports first.
8272- ** ` Source/Bootstrap/Types/ ` ** - 30+ VS Code type mirror files:
83- ` BootstrapTypes.ts ` , the ` Type/ ` subtree
84- (` BootstrapConfig ` , ` EnvironmentData ` , ` Mode ` , ` Platform ` ,
85- ` StageResult ` , …), and ` VSCode/ ` mirrors
86- (` VSCodeConfigurationType ` , ` VSCodeLoggerType ` ,
73+ ` BootstrapTypes.ts ` , the ` Type/ ` subtree (` BootstrapConfig ` ,
74+ ` EnvironmentData ` , ` Mode ` , ` Platform ` , ` StageResult ` , …), and ` VSCode/ `
75+ mirrors (` VSCodeConfigurationType ` , ` VSCodeLoggerType ` ,
8776 ` VSCodeWorkbenchOptionsType ` ).
8877
8978### Changed
@@ -93,84 +82,79 @@ We built the renderer-side shape the bundled workbench needs to boot.
9382## [ v1.3] - Dependency Maintenance
9483
9584Effect 3.18.0 → 3.19.14, ` @effect/platform ` 0.92.0 → 0.94.1,
96- ` @effect/language-service ` 0.60.x → 0.63.2. No major
97- ` Application/ ` restructures; module count stable.
85+ ` @effect/language-service ` 0.60.x → 0.63.2. No major ` Application/ `
86+ restructures; module count stable.
9887
9988## [ v1.2] - Full-Stack Integration (Application Layer)
10089
101- We grew Wind from a UI shell into a 100+ module Effect-TS service
102- layer following our Define / Implement / Problem pattern.
90+ We grew Wind from a UI shell into a 100+ module Effect-TS service layer
91+ following our Define / Implement / Problem pattern.
10392
10493### Added
10594
10695- ** 100+ application service modules** , each shaped as
107- `Source/Application/{Service}/{Define.ts, Implement.ts,
108- Problem.ts}` (interface, Effect-TS implementation, error types).
109- Coverage spans Command, Configuration, Dialog, Editor, EditorGroup,
110- File, FileSystem, Host, IPC, LanguageFeature, Logger, Marker,
111- Notification, Policy, UntitledTextEditor - and more.
112- - ** 300+ file infrastructure commit** to scaffold the template
113- consistently across the surface.
96+ ` Source/Application/{Service}/{Define.ts, Implement.ts, Problem.ts} `
97+ (interface, Effect-TS implementation, error types). Coverage spans Command,
98+ Configuration, Dialog, Editor, EditorGroup, File, FileSystem, Host, IPC ,
99+ LanguageFeature, Logger, Marker, Notification, Policy, UntitledTextEditor -
100+ and more.
101+ - ** 300+ file infrastructure commit** to scaffold the template consistently
102+ across the surface.
114103
115104### Changed
116105
117106- Effect-TS 3.17.x → 3.18.x. SolidJS 1.9.x stable. ` @types/node ` 24.x.
118107
119108## [ v1.1] - Architecture Buildout (Effect-TS Pivot)
120109
121- The pivot quarter. We adopted Effect-TS as our service composition
122- runtime and stood up the ` Application/ ` layer that v1.2 would build
123- out.
110+ The pivot quarter. We adopted Effect-TS as our service composition runtime and
111+ stood up the ` Application/ ` layer that v1.2 would build out.
124112
125113### Added
126114
127115- ** ` Source/Effect/ ` ** directory - Effect-TS service composition.
128- - ** ` Source/Application/ ` ** directory - 50+ initial service modules
129- (Dialog, FileDialog, …) with Effect-TS-driven patterns.
116+ - ** ` Source/Application/ ` ** directory - 50+ initial service modules (Dialog,
117+ FileDialog, …) with Effect-TS-driven patterns.
130118- ** ` Source/Configuration/ESBuild/ ` ** - build-config restructure.
131- - ** Effect-TS dep set** : ` effect ` , ` @effect/platform ` ,
132- ` @effect/experimental ` , ` @effect/ language-service` .
119+ - ** Effect-TS dep set** : ` effect ` , ` @effect/platform ` , ` @effect/experimental ` ,
120+ ` @effect/language-service ` .
133121
134122### Removed
135123
136124- ` Source/Element/Preview.scss ` .
137- - We concluded the SolidJS evaluation in this window - the bones we
138- kept landed under ` Source/Context/ ` and ` Source/Element/ ` ; the
139- rest came out.
125+ - We concluded the SolidJS evaluation in this window - the bones we kept landed
126+ under ` Source/Context/ ` and ` Source/Element/ ` ; the rest came out.
140127
141128## [ v1.0] - Integration Phase
142129
143130` deepmerge-ts ` 7.1.4 → 7.1.5. SolidJS 1.9.4 → 1.9.5. Refreshed
144- ` CODE_OF_CONDUCT.md ` and ` CONTRIBUTING.md ` . Routine ` Target/ `
145- gen/delete cycles for CI integration tests.
131+ ` CODE_OF_CONDUCT.md ` and ` CONTRIBUTING.md ` . Routine ` Target/ ` gen/delete cycles
132+ for CI integration tests.
146133
147134## [ v0.2] - Architecture Solidification
148135
149- We shipped the first generated ` Target/ ` artefacts: 88 files across
150- ` Context/* ` , ` Element/* ` , ` Function/* ` , ` Interface/* ` ,
151- ` Script/Monaco/Theme/*.json ` , ` Stylesheet/* ` . Monaco themes
152- ` Active4D.json ` (154 lines) and ` Amoled.json ` (219 lines) landed,
153- plus ` Stylesheet/Tippy/{Dark.scss,Light.scss} ` . SolidJS devtools
154- 0.31.2 → 0.31.7. We adopted the CSS action-form convention
155- (` --Mute ` , not ` --Muted ` ).
136+ We shipped the first generated ` Target/ ` artefacts: 88 files across ` Context/* ` ,
137+ ` Element/* ` , ` Function/* ` , ` Interface/* ` , ` Script/Monaco/Theme/*.json ` ,
138+ ` Stylesheet/* ` . Monaco themes ` Active4D.json ` (154 lines) and ` Amoled.json ` (219
139+ lines) landed, plus ` Stylesheet/Tippy/{Dark.scss,Light.scss} ` . SolidJS devtools
140+ 0.31.2 → 0.31.7. We adopted the CSS action-form convention (` --Mute ` , not
141+ ` --Muted ` ).
156142
157143## [ v0.1] - Rapid Development
158144
159- ` Editor.scss ` cleanup (42-line reduction); border/spacing mixins
160- refactored. SolidJS 1.8.19 → 1.9.1. ` monaco-editor ` 0.51.0-rc2 →
161- 0.52.0. ` @playform/build ` 0.1.2 → 0.1.7. No new architectural
162- folders - refinement only.
145+ ` Editor.scss ` cleanup (42-line reduction); border/spacing mixins refactored.
146+ SolidJS 1.8.19 → 1.9.1. ` monaco-editor ` 0.51.0-rc2 → 0.52.0. ` @playform/build `
147+ 0.1.2 → 0.1.7. No new architectural folders - refinement only.
163148
164149## [ v0.0] - Project Inception
165150
166151We laid the SolidJS-era bones:
167152
168153- ** ` Source/Context/ ` ** - React-style context primitives (` Action ` ,
169154 ` Connection ` , ` Environment ` , ` Session ` , ` Store ` ).
170- - ** ` Source/Element/ ` ** - SolidJS components (` Editor.tsx ` ,
171- ` Button ` , ` Anchor ` , ` Tip ` , ` Footer ` ).
172- - ** ` Source/Library/ ` ** - helpers (` Create ` , ` Pad ` , ` Persist ` ,
173- ` Environment ` ).
155+ - ** ` Source/Element/ ` ** - SolidJS components (` Editor.tsx ` , ` Button ` , ` Anchor ` ,
156+ ` Tip ` , ` Footer ` ).
157+ - ** ` Source/Library/ ` ** - helpers (` Create ` , ` Pad ` , ` Persist ` , ` Environment ` ).
174158- ** ` Source/Function/ ` ** - utilities (` Merge ` ).
175159- ** ` Source/Stylesheet/ ` ** - SCSS (` Element/* ` , ` Mixin/* ` ).
176160- ** ` Source/Variable/ ` ** - ESBuild config + ` StringURL ` constant.
0 commit comments