@sanqianx/project-knowledge 4.7.0 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/.agents/plugins/marketplace.json +17 -17
  2. package/.claude-plugin/marketplace.json +1 -1
  3. package/CHANGELOG.md +817 -799
  4. package/README.md +48 -36
  5. package/_modules/knowledge-engine/README.md +88 -0
  6. package/_modules/knowledge-engine/package.json +38 -0
  7. package/_modules/knowledge-engine/src/analysis-contract.js +25 -0
  8. package/_modules/knowledge-engine/src/analysis-worker.js +54 -0
  9. package/_modules/knowledge-engine/src/bin.js +52 -0
  10. package/_modules/knowledge-engine/src/bridge-client.js +24 -0
  11. package/_modules/knowledge-engine/src/coordinator.js +255 -0
  12. package/_modules/knowledge-engine/src/headless-analyzer.js +75 -0
  13. package/_modules/knowledge-engine/src/memories.js +85 -0
  14. package/_modules/knowledge-engine/src/migration.js +88 -0
  15. package/_modules/knowledge-engine/src/retrieval.js +116 -0
  16. package/_modules/knowledge-engine/src/runtime/README.md +7 -0
  17. package/_modules/knowledge-engine/src/runtime/atomic-file.js +204 -0
  18. package/_modules/knowledge-engine/src/runtime/automation-config.js +140 -0
  19. package/_modules/knowledge-engine/src/runtime/commit-conversation-binder.js +249 -0
  20. package/_modules/knowledge-engine/src/runtime/commit-processing-ledger.js +26 -0
  21. package/_modules/knowledge-engine/src/runtime/commit-prompt.js +202 -0
  22. package/_modules/knowledge-engine/src/runtime/commit-reconciler.js +432 -0
  23. package/_modules/knowledge-engine/src/runtime/content-hash.js +4 -0
  24. package/_modules/knowledge-engine/src/runtime/contracts.js +279 -0
  25. package/_modules/knowledge-engine/src/runtime/conversation-exclusions.js +204 -0
  26. package/_modules/knowledge-engine/src/runtime/conversation-store.js +387 -0
  27. package/_modules/knowledge-engine/src/runtime/evidence-bundle.js +228 -0
  28. package/_modules/knowledge-engine/src/runtime/git-runner.js +62 -0
  29. package/_modules/knowledge-engine/src/runtime/knowledge-promotion.js +444 -0
  30. package/_modules/knowledge-engine/src/runtime/knowledge-retrieval-service.js +402 -0
  31. package/_modules/knowledge-engine/src/runtime/layout.js +44 -0
  32. package/_modules/knowledge-engine/src/runtime/markdown-knowledge-indexer.js +230 -0
  33. package/_modules/knowledge-engine/src/runtime/scanner.js +298 -0
  34. package/_modules/knowledge-engine/src/server.js +155 -0
  35. package/_modules/knowledge-engine/src/store.js +239 -0
  36. package/_modules/knowledge-engine/ui/app.css +172 -0
  37. package/_modules/knowledge-engine/ui/app.js +297 -0
  38. package/_modules/knowledge-engine/ui/index.html +95 -0
  39. package/_site/README.md +30 -30
  40. package/_site/_test/ai-profile-resolver-test.js +137 -137
  41. package/_site/_test/automation-queue-test.js +14 -14
  42. package/_site/_test/automation-ui-test.js +40 -40
  43. package/_site/_test/background-task-registry-test.js +43 -43
  44. package/_site/_test/baseline-schema-test.js +91 -91
  45. package/_site/_test/chat-claudecodeui-match-test.js +92 -92
  46. package/_site/_test/claude-executable-discovery-test.js +62 -62
  47. package/_site/_test/claude-workbench-test.js +170 -170
  48. package/_site/_test/codex-conversation-projection-test.js +2 -1
  49. package/_site/_test/commit-conversation-binding-test.js +95 -95
  50. package/_site/_test/commit-evidence-test.js +110 -110
  51. package/_site/_test/conversation-api-test.js +109 -109
  52. package/_site/_test/conversation-store-test.js +136 -136
  53. package/_site/_test/data-dir-migration-test.js +57 -57
  54. package/_site/_test/desktop-browser-compat-test.js +28 -28
  55. package/_site/_test/desktop-hook-runtime-regression-test.js +204 -204
  56. package/_site/_test/explicit-commit-processor-test.js +37 -37
  57. package/_site/_test/fixtures/make-git-repos.js +12 -1
  58. package/_site/_test/folder-picker-output-test.js +19 -19
  59. package/_site/_test/full-integration-e2e-test.js +165 -165
  60. package/_site/_test/git-validation-test.js +2 -2
  61. package/_site/_test/hook-runtime-endpoint-test.js +88 -88
  62. package/_site/_test/hook-status-repair-api-test.js +152 -152
  63. package/_site/_test/hook-trigger-test.js +85 -85
  64. package/_site/_test/import-preflight-api-test.js +234 -233
  65. package/_site/_test/index-writer-concurrency-test.js +135 -135
  66. package/_site/_test/integration-adapters-test.js +171 -171
  67. package/_site/_test/integration-surface-coverage-test.js +164 -164
  68. package/_site/_test/knowledge-language-control-test.js +170 -170
  69. package/_site/_test/knowledge-promotion-recovery-test.js +260 -260
  70. package/_site/_test/knowledge-query-test.js +54 -54
  71. package/_site/_test/knowledge-retrieval-service-test.js +77 -77
  72. package/_site/_test/knowledge-storage-startup-test.js +52 -52
  73. package/_site/_test/knowledge-store-logs-supervision-test.js +89 -89
  74. package/_site/_test/legacy-forward-compat-test.js +257 -257
  75. package/_site/_test/legacy-project-upgrade-e2e-test.js +363 -363
  76. package/_site/_test/logging-api-test.js +89 -89
  77. package/_site/_test/logging-sse-no-gap-test.js +88 -88
  78. package/_site/_test/logging-ui-test.js +106 -104
  79. package/_site/_test/markdown-delta-overlay-test.js +85 -85
  80. package/_site/_test/markdown-maintenance-api-test.js +75 -75
  81. package/_site/_test/mcp-server-test.js +149 -149
  82. package/_site/_test/module-artifact-integrity-test.js +27 -0
  83. package/_site/_test/module-boundary-test.js +30 -0
  84. package/_site/_test/module-bridge-eventbridge-test.js +7 -0
  85. package/_site/_test/module-model-configuration-test.js +43 -0
  86. package/_site/_test/module-process-lifecycle-test.js +24 -0
  87. package/_site/_test/module-stream-proxy-test.js +34 -0
  88. package/_site/_test/non-release-ci-test.js +34 -34
  89. package/_site/_test/offline-boundary-isolation-test.js +32 -32
  90. package/_site/_test/p0-data-migration-characterization-test.js +37 -37
  91. package/_site/_test/p0-e2e-gate-test.js +347 -347
  92. package/_site/_test/packaged-ui-smoke-test.js +11 -9
  93. package/_site/_test/path-consistency-test.js +151 -151
  94. package/_site/_test/pending-sweep-test.js +9 -9
  95. package/_site/_test/post-commit-automation-test.js +87 -87
  96. package/_site/_test/product-diagnostics-ui-test.js +75 -0
  97. package/_site/_test/product-import-ui-test.js +92 -0
  98. package/_site/_test/project-delete-recovery-test.js +64 -64
  99. package/_site/_test/project-goal-editor-test.js +144 -144
  100. package/_site/_test/project-layout-v2-migration-test.js +127 -127
  101. package/_site/_test/project-lifecycle-transaction-test.js +106 -106
  102. package/_site/_test/prompt-settings-test.js +115 -115
  103. package/_site/_test/protected-architecture-gate-test.js +122 -122
  104. package/_site/_test/refactor-characterization-test.js +36 -36
  105. package/_site/_test/release-version-sync-test.js +1 -1
  106. package/_site/_test/requirement-recorder-test.js +173 -173
  107. package/_site/_test/run-all-tests.js +159 -156
  108. package/_site/_test/server-runtime-migration-safety-test.js +27 -27
  109. package/_site/_test/shared-contracts-test.js +58 -58
  110. package/_site/_test/startup-analysis-disabled-test.js +10 -10
  111. package/_site/_test/storage-foundation-test.js +78 -78
  112. package/_site/_test/structured-logger-test.js +101 -101
  113. package/_site/_test/tracking-start-test.js +108 -108
  114. package/_site/_test/v4122-upgrade-data-contract-test.js +56 -56
  115. package/_site/_test/workbench-permission-test.js +117 -117
  116. package/_site/_test/workspace-ui-contract-test.js +28 -43
  117. package/_site/lib/ai-profile-resolver.js +78 -78
  118. package/_site/lib/ai-workspace.js +101 -101
  119. package/_site/lib/automation-config.js +140 -140
  120. package/_site/lib/bridge-adapter.js +1 -0
  121. package/_site/lib/bridge-consumer-service.js +402 -402
  122. package/_site/lib/claude-cli-runner.js +1510 -1510
  123. package/_site/lib/commit-conversation-binder.js +234 -234
  124. package/_site/lib/commit-processing-ledger.js +27 -27
  125. package/_site/lib/commit-prompt.js +202 -202
  126. package/_site/lib/commit-reconciler.js +406 -406
  127. package/_site/lib/contracts.js +284 -279
  128. package/_site/lib/conversation-query-service.js +144 -144
  129. package/_site/lib/conversation-store.js +385 -385
  130. package/_site/lib/data-dir.js +74 -74
  131. package/_site/lib/data-state-classifier.js +40 -40
  132. package/_site/lib/engine-cutover.js +97 -0
  133. package/_site/lib/evidence-bundle.js +228 -228
  134. package/_site/lib/folder-picker-output.js +21 -21
  135. package/_site/lib/git-runner.js +62 -62
  136. package/_site/lib/github-team-store.js +1172 -1172
  137. package/_site/lib/hook-manager.js +203 -202
  138. package/_site/lib/index-service.js +173 -173
  139. package/_site/lib/integration-installer.js +907 -907
  140. package/_site/lib/kb-framework.js +176 -176
  141. package/_site/lib/kb-validator.js +124 -124
  142. package/_site/lib/knowledge-promotion.js +435 -435
  143. package/_site/lib/knowledge-retrieval-service.js +401 -401
  144. package/_site/lib/knowledge-tool-runtime.js +359 -359
  145. package/_site/lib/legacy-data-manifest.js +26 -26
  146. package/_site/lib/llm-client.js +161 -161
  147. package/_site/lib/markdown-knowledge-indexer.js +230 -230
  148. package/_site/lib/migration-service.js +442 -442
  149. package/_site/lib/module-bridge.js +198 -33
  150. package/_site/lib/post-commit-automation.js +87 -87
  151. package/_site/lib/project-lifecycle-service.js +519 -497
  152. package/_site/lib/project-store.js +268 -262
  153. package/_site/lib/requirement-recorder.js +278 -278
  154. package/_site/lib/runtime-endpoint.js +155 -155
  155. package/_site/lib/scanner.js +298 -298
  156. package/_site/lib/server-app.js +1590 -1520
  157. package/_site/lib/settings-store.js +133 -113
  158. package/_site/lib/storage-layout.js +162 -162
  159. package/_site/lib/structured-logger.js +574 -574
  160. package/_site/scripts/folder-picker.ps1 +156 -156
  161. package/_site/scripts/hook-trigger.js +157 -156
  162. package/_site/scripts/install-module-candidates.js +69 -0
  163. package/_site/scripts/pack-module-candidates.js +72 -0
  164. package/_site/scripts/sync-release-version.js +2 -2
  165. package/_site/scripts/vendor-modules.js +47 -0
  166. package/_site/scripts/verify-module-runtime.js +45 -0
  167. package/_site/scripts/verify-product-runtime.js +34 -0
  168. package/bin/project-knowledge-mcp.js +194 -194
  169. package/docs/README.zh-CN.md +34 -25
  170. package/docs/project-registry-schema.md +22 -22
  171. package/docs/testing-strategy.md +33 -33
  172. package/module-runtime-manifest.json +220 -0
  173. package/package.json +13 -9
  174. package/plugins/project-knowledge/.claude-plugin/plugin.json +1 -1
  175. package/plugins/project-knowledge/.codex-plugin/plugin.json +1 -1
  176. package/plugins/project-knowledge/.mcp.json +1 -1
  177. package/plugins/project-knowledge/opencode/project-knowledge.md +3 -3
  178. package/plugins/project-knowledge/skills/project-knowledge/SKILL.md +28 -28
  179. package/templates/project-readme.md +34 -34
  180. package/ui/favicon.svg +38 -38
  181. package/ui/index.html +51 -149
  182. package/ui/product.css +9 -0
  183. package/ui/product.js +386 -0
  184. package/vendor-manifest.json +46 -0
  185. package/_site/_test/import-ui-flow-test.js +0 -171
  186. package/_site/_test/project-control-panel-task14-test.js +0 -63
  187. package/_site/_test/task15-20-ui-flow-test.js +0 -148
  188. package/_site/_test/ui-i18n-toggle-test.js +0 -114
  189. package/_site/_test/ui-smoke-test.js +0 -73
  190. package/ui/app.css +0 -58
  191. package/ui/app.js +0 -607
  192. package/ui/i18n.js +0 -146
package/CHANGELOG.md CHANGED
@@ -1,799 +1,817 @@
1
- # Changelog
2
-
3
- ## [4.7.0] - 2026-09-21
4
-
5
- - All four embedded module dependencies (`claude-ai-workbench`,
6
- `@sanqianx/vector-hub`, `@sanqianx/ai-coding-event-bridge-console`, plus the
7
- `@sanqianx/ai-coding-event-bridge` consumer inside the shell) are now pinned
8
- to `latest`, so a fresh `npm install` pulls whatever the upstream modules
9
- ship instead of lagging behind the project's npm releases. The legacy
10
- `@sanqianx/ai-coding-event-bridge` package — which used to be the engine
11
- library — is deprecated on npm and removed from this project's dependencies;
12
- its capture engine now ships inside `@sanqianx/ai-coding-event-bridge-console`
13
- at `src/bridge`, and the four production call sites (hook capture, requirement
14
- recorder, integration installer, bridge adapter) plus six tests were rewritten
15
- to import from there. The legacy package's every version carries a deprecation
16
- message pointing to the new entry.
17
- - The package is published as `@sanqianx/project-knowledge` (moved from the
18
- unscoped `project-knowledge`); the unscoped name still resolves to the old
19
- versions for users who haven't migrated, but new installs land on the
20
- scoped package.
21
-
22
- ## [4.6.0] - 2026-09-21
23
-
24
- - The three embedded module runtimes now ship as real npm dependencies instead
25
- of the `_modules/` committed snapshot: `claude-ai-workbench@0.4.1`,
26
- `@sanqianx/vector-hub@1.0.1` and
27
- `@sanqianx/ai-coding-event-bridge-console@0.4.0` (bringing
28
- `@sanqianx/ai-coding-event-bridge@0.4.0` transitively). The `_modules/`
29
- directory, its vendor script and the tarball entry are removed.
30
- - Why it matters: the snapshot lagged the source repo — npm consumers missed
31
- the codex resident-bridge Windows fix (per-turn process respawns made every
32
- turn 5-20s), claude failure-reason surfacing, `/system/doctor` diagnostics
33
- and the folder-picker foreground/centering fixes. Module upgrades are now a
34
- one-line version bump verified by `npm ci`, with no manual snapshot step.
35
- - `module-bridge` resolves each runtime entry through `require.resolve` from
36
- the installed packages (same supervised spawn, reuse and env-override
37
- contract as before); the `NODE_PATH` stitching is gone. `release:verify` no
38
- longer gates on the vendored snapshot.
39
-
40
- ## [4.5.0] - 2026-09-21
41
-
42
- - The embedded Agent Terminal's settings view gains a 会话捕获 (capture) tab.
43
- Terminal conversations remain exempt from Development Conversation capture by
44
- default — the terminal is internal AI runtime, not the developer's CLI
45
- record. Flipping the toggle persists the scope, applies it to the runner
46
- immediately, and marks only NEW terminal sessions with
47
- `AI_CODING_EVENT_BRIDGE_CAPTURE=1`, so they reach the Bridge journal and the
48
- 会话浏览 explorer like any CLI tool conversation. Existing sessions are
49
- unaffected, and nothing changes for standalone terminals that never touch
50
- the toggle. Ships the updated vendored Agent Terminal runtime.
51
-
52
- ## [4.4.0] - 2026-09-21
53
-
54
- - The ai-coding-event-bridge conversation console joins the Agent Terminal and
55
- vector-hub as the third embedded Control Center module. The vendored runtime
56
- (console 0.4.0 + its core) ships inside the npm package and starts with the
57
- shell on 127.0.0.1:8790; the console's dependency on
58
- `@sanqianx/ai-coding-event-bridge` resolves from a node_modules directory
59
- vendored inside the console package, so the host package's own older npm
60
- dependency can never shadow it. The global `node_modules/` gitignore rule
61
- carries a negation for that directory, and `vendor:modules --check` now
62
- verifies the runtime is present and git-tracked — the 4.3.0 "runtime missing
63
- from the tarball" incident class cannot recur for this module either.
64
- - Module integration follows the established contract: same-origin reverse
65
- proxy under `/api/eventbridge/`, supervised spawn with reuse of an already
66
- listening standalone console (`KB_EVENTBRIDGE_COMMAND` override,
67
- `AI_CODING_EVENT_BRIDGE_HOME` passthrough so the explorer shows the same
68
- journal the in-process BridgeAdapter writes), idempotent import-time
69
- registration keyed by Git work tree path using the recommended
70
- `<knowledge>/dev-conversations` store, removal that keeps journals and sealed
71
- commit documents, aggregated sidebar projection and module health.
72
- - The shell UI gains the 会话浏览 view (connect probe, 独立打开 link, per-project
73
- 桥 badge, import/remove copy) — and the conversation explorer itself learned
74
- the `kb:sidebar` embed protocol (`?embed=1`, `kb:ready` announcement,
75
- loopback-only origins), so its project sidebar folds via the ▤ control exactly
76
- like the terminal and vector-hub embeds. Standalone console opens are
77
- unaffected.
78
-
79
- ## [4.3.1] - 2026-09-20
80
-
81
- - The 4.3.0 npm package could never start the vector-hub module: the global
82
- `dist/` gitignore rule kept the vendored runtime
83
- (`_modules/vectorhub/dist/`, 25 files) out of git, so the CI-packed tarball
84
- shipped without `bin.js` and every fresh install logged "Vendored vector-hub
85
- runtime not present". The runtime is committed now, and `release:verify`
86
- gained a vendored-modules gate that fails when a required runtime file is
87
- missing from disk or not tracked by git — the check that was previously
88
- wired into nothing.
89
- - The Control Center's embedded Agent Terminal linked to no project on first
90
- load. The shell sends `kb:select-project` 150ms after `kb:ready`, but the
91
- terminal loads its project list only after health + agent discovery, so the
92
- one-shot selection landed on an empty list: the linkage chip stuck on
93
- "未登记" and the embed had no project selected, making it impossible to open
94
- a terminal from the shell. The terminal now re-announces `kb:ready` once its
95
- projects are loaded, and the shell retries a failed linkage with backoff.
96
- - Module status probing no longer reports a false "未检测到 … 界面将显示为
97
- 空白" forever: cold-starting module services are re-probed with backoff
98
- (up to 10 attempts) before the status is marked down, and the top bar
99
- 终端/检索 indicator updates when a late probe succeeds.
100
-
101
- ## [4.3.0] - 2026-09-20
102
-
103
- - The Agent Terminal and vector-hub module services now ship inside the npm
104
- package and start with the shell. `npm install -g project-knowledge` is
105
- self-contained: the Control Center, the embedded terminal (:5760) and the
106
- vector-hub console (:8787) all come up together on a fresh machine — no
107
- sibling checkouts required. KB_MODULES_AUTOSTART=0 disables spawning;
108
- a service already listening on its URL is never double-spawned, so dev
109
- machines running standalone module instances are unaffected. vector-hub
110
- needs Node >= 22 — on older runtimes the shell skips spawning it and logs
111
- a warning. Also fixed a latent spawn bug: quoted paths in module commands
112
- reached node with the quotes embedded, which crash-looped the (previously
113
- default-off) autostart path.
114
-
115
- ## [4.2.20] - 2026-09-20
116
-
117
- - Startup no longer relocates legacy v4.1.x package-root runtime data. This is
118
- a fresh knowledge-base system by decision: old data under the npm package
119
- dir is ignored, not migrated. Previously a conflict between stale
120
- package-root files and the user data dir aborted startup with "Legacy
121
- runtime relocation failed", bricking machines whose install carried
122
- v4.1.x-era files.
123
-
124
- ## [4.2.19] - 2026-09-20
125
-
126
- - Background launch is diagnosable and no longer lies about the URL. The
127
- detached child's stdout/stderr now append to `<data-dir>/launcher.log`, so
128
- port fallbacks ("Port 5757 was busy, using 5758 instead") and startup
129
- failures are visible after the fact instead of being silently discarded
130
- (`stdio: 'ignore'`). The parent no longer prints a guessed URL or races a
131
- browser open 1.2s after spawn — the child opens the browser itself once it
132
- is actually listening, with the real port. The free-port probe timeout went
133
- 1s → 3s to survive slow listen() under antivirus/cold-cache load (a false
134
- "busy" previously cascaded into "No free port found").
135
-
136
- ## [4.2.18] - 2026-09-20
137
-
138
- - Module-embed shell (T0-T4 of docs/ui-integration-repair-plan.md): the Control
139
- Center UI now embeds the Agent Terminal (:5760) and vector-hub console
140
- (:8787) as original UIs behind a same-origin proxy (`/api/terminal/*`,
141
- `/api/vectorhub/*`). Project import registers both modules (wiring table in
142
- project state); the sidebar aggregates module registrations with per-project
143
- session history (kb:list-sessions / kb:open-session) — session lifecycle
144
- (archive/restore) belongs to the terminal module only, the shell keeps a
145
- read-only projection; per-module sidebar fold toggles on the nav buttons
146
- (kb:sidebar); project selection drives both modules (kb:select-project)
147
- with live linkage chips.
148
- Settings drawer is now 开发对话/日志 only (model settings live in the
149
- terminal UI). Module removal keeps local knowledge and terminal session
150
- records (upstream `removeProject?keepSessions=1`). Optional module service
151
- supervision behind `KB_MODULES_AUTOSTART=1`. Old workbench chat panel and
152
- its UI tests retired; full suite 115/115 green.
153
-
154
- ## [4.2.17] - 2026-08-25
155
-
156
- - Recognized a healthy Project Knowledge fan-out nested inside Codex Desktop's
157
- computer-use `--previous-notify` wrapper. Integration status and one-click
158
- repair no longer report a false third-party conflict or attempt to wrap the
159
- notifier again.
160
-
161
- ## [4.2.16] - 2026-08-25
162
-
163
- - Upgraded AI Coding Event Bridge to 0.1.2 so one Codex task can be captured
164
- across every continuation rollout. Existing single-file cursors migrate in
165
- place without replaying consumed history, and real nested turn identities
166
- keep commentary and final responses attached to the correct user prompt.
167
- - Added a joint Codex / Claude Code / OpenCode restart-and-recovery gate that
168
- verifies durable capture, control-message exclusion, exact workspace
169
- attribution, turn grouping, and duplicate-notification idempotency.
170
- - Kept Windows CDP failure tests fast and reliable by restricting detached
171
- profile cleanup to actual Chrome/Edge launchers.
172
-
173
- ## [4.2.15] - 2026-08-25
174
-
175
- - Repaired Codex Development Conversation turns without rewriting durable
176
- history: generated control/context records are excluded, orphan assistant
177
- responses are projected onto the correct user turn within the same session,
178
- and stale open-turn facts no longer duplicate commit associations.
179
- - Removed synthetic empty-user and pending-assistant UI messages, with focused
180
- projection, binding, API, and real-history regression coverage.
181
-
182
- ## [4.2.14] - 2026-08-25
183
-
184
- - Recovered commit analysis safely after a server restart by making leftover
185
- claims terminal without running startup analysis or replaying historical or
186
- offline commits; the next explicit Git Hook event processes only its own SHA.
187
- - Restored v4.1.21 Claude Workbench history through the migrated project's
188
- legacy slug while preserving the original session files and preferring the
189
- canonical runtime record on duplicate session IDs.
190
- - Restored historical session selection and live Commit automation visibility
191
- in the Claude Code UI, including prompts, thinking, tools, permissions,
192
- retries, results, stop controls, and real browser regression coverage.
193
-
194
- ## [4.2.13] - 2026-08-25
195
-
196
- - Restored the globally installed web UI by including `ui/i18n.js` in the
197
- npm package; a missing or incomplete localization runtime can no longer
198
- abort project, AI profile, Knowledge Root, and conversation loading.
199
- - Added package-asset closure validation plus a real
200
- `npm pack -> npm install -> server -> Chrome` release smoke test, so CI
201
- rejects tarballs whose UI differs from the tested source tree.
202
-
203
- ## [4.2.9] - 2026-08-24
204
-
205
- - Made persisted UI-language selection fully reliable across page reloads and
206
- slower browser runners: translated labels now re-render, and the document
207
- language is initialized from the saved preference.
208
-
209
- ## [4.2.8] - 2026-08-24
210
-
211
- - Fixed release metadata drift by deriving plugin manifests, marketplace
212
- metadata, MCP package pins, and both lockfiles from the root package
213
- version during the standard npm version lifecycle.
214
- - Added release and tag-version guards to CI and the npm publishing workflow,
215
- so a mismatched release is rejected before packaging or publishing.
216
- - Stabilized Windows browser E2E tests by handling Chrome launcher detachment
217
- and cleaning every test-specific Chrome process by its isolated profile.
218
-
219
- ## [4.2.7] - 2026-08-24
220
-
221
- - Made runtime data migration fail closed: existing legacy data is now
222
- discovered and relocated safely, migration failures prevent startup,
223
- and settings-only legacy data is preserved instead of being treated as
224
- a fresh install.
225
- - Restricted Knowledge Analysis to explicit post-commit hook events.
226
- Startup, bridge synchronization, historical catch-up, and offline
227
- commits no longer trigger implicit analysis.
228
- - Preserved conversation and commit-boundary facts across offline periods
229
- without allowing those facts to contaminate a later online commit.
230
-
231
- ## [4.2.6] - 2026-08-20
232
-
233
- - Hotfix for the v4.2.5 commit-reconciler regression: the post-batch
234
- re-scan was unconditionally writing `analysis.status='idle'` even
235
- after a successful batch of commits, clobbering the
236
- `'state.advanced'` value that `advanceState()` had just set. The CI
237
- suite surfaced this on a fast runner where the test's state read
238
- raced ahead of the trailing re-scan; on slower machines the bug
239
- passed silently. runSweep() now only marks `'idle'` when this call
240
- never processed any commits, leaving a freshly-promoted batch's
241
- `state.advanced` visible to the UI.
242
- - Bumped `plugins/project-knowledge/.mcp.json` from
243
- `project-knowledge@4.2.4` to `project-knowledge@4.2.6` so the
244
- integration-adapters MCP-pin assertion matches the package version.
245
- (The v4.2.5 release had bumped everything except this MCP pin.)
246
-
247
- 105 root + 2 desktop tests pass.
248
-
249
- ## [4.2.5] - 2026-08-20
250
-
251
- - Restored the v4.1.22 → v4.2.x product contract that the recent
252
- refactor had broken. The shared ` `resolveEffectiveAiProfile` resolver
253
- is the single source of truth for "which AI profile does this project
254
- use right now" (project → default → first-usable → AI_PROFILE_REQUIRED),
255
- and the Workbench / analyzer / CommitReconciler paths no longer
256
- carry their own drift-prone fallback logic.
257
- - Hook runtime: post-commit hooks now prefix `ELECTRON_RUN_AS_NODE=1`
258
- in the shell body so a packaged Desktop install no longer tries to
259
- launch the Electron GUI from a Git hook invocation. Node ignores the
260
- env var so CLI installs are unaffected.
261
- - Hook migration state machine: a missing legacy hook is no longer
262
- silently marked migrationVersion=2. The new state machine only
263
- advances migrationVersion when install + readback verify succeed,
264
- persists third-party conflicts in state.hook.lastConflict for UI
265
- consumption, and reports status=verified|conflict|pending|failed per
266
- project.
267
- - Hook health API: GET /api/projects/:id/hook-status and POST
268
- /api/projects/:id/hook-repair expose every required field
269
- (installed / managed / managedVersion / runtimeTarget / lastVerifiedAt
270
- / conflict / reason / repairAvailable) and refuse to overwrite
271
- third-party hooks.
272
- - Import UX: a new preflight endpoint and UI flow (Desktop folder
273
- picker, knowledge language selector, AI profile selector, optional
274
- Team Knowledge binding, per-problem action hints, auto preflight on
275
- every input change, Import button stays disabled until ready=true)
276
- replace the path-only dialog.
277
- - Knowledge language control: import + per-project PATCH both accept
278
- knowledgeLanguage; changing it affects only future generated
279
- knowledge, never historical files.
280
- - Project Goal editor: GET/PUT /api/projects/:id/goal atomically reads
281
- and writes the project's GOAL.md, scoped to its own knowledgePath.
282
- - UI language toggle (zh-CN / en-US) persists in localStorage and
283
- re-renders the most-visible labels without a reload.
284
- - P0 E2E gate proves the four primary contract scenarios (fresh /
285
- legacy / offline / no-conversation) against the live server.
286
- 105 root + 2 desktop tests pass; the G00–G08 acceptance gates are
287
- green.
288
-
289
- ## [4.2.4] - 2026-08-20
290
-
291
- - Fixed the Bridge consumer never receiving connector wake-ups on a fresh
292
- install: `BridgeConsumerService.start(notifyUrl)` ignored its argument, so
293
- the `project-knowledge` consumer registered with empty metadata. Captured
294
- conversations piled up in the journal until the next server restart instead
295
- of appearing in Development Conversation immediately. The wake-up URL now
296
- lands in the consumer registration and drains fire per event.
297
- - Projects imported before v4.2.3 (no canonical `repo-identity/v1`) are
298
- upgraded automatically: on the first consumer drain after updating, each
299
- legacy project with an existing repository path gets its workspace identity
300
- resolved and persisted, its conversation baseline established, and its
301
- external conversations start projecting — no manual migration step. A
302
- workspace already claimed by another project is never written twice.
303
- - The Bridge dependency now resolves to `@sanqianx/ai-coding-event-bridge`
304
- 0.1.1, which accepts Claude Code's real `hook_event_name` payload field
305
- (previously such payloads were misrouted to the Codex connector and lost as
306
- capture gaps).
307
-
308
- ## [4.2.3] - 2026-08-20
309
-
310
- - Development Conversation now captures real external Claude Code / Codex /
311
- OpenCode sessions through `ai-coding-event-bridge` (repo-identity/v1 with
312
- workspaceId as the primary key, durable Bridge-owned turn identity, and
313
- exact-workspace project matching — unimported workspaces are skipped and
314
- ACKed, never written into another project).
315
- - The internal Workbench capture path was removed: sending a Workbench chat
316
- message no longer records requirements or conversation events (explicit
317
- `record_requirement` still works), every internal SDK session runs with
318
- `AI_CODING_EVENT_BRIDGE_CAPTURE=0`, and legacy embedded Workbench pairs are
319
- excluded from presentation and new commit binding via
320
- `conversation-exclusions/v1` without rewriting history.
321
- - Commit conversation snapshots are frozen strictly after
322
- append-boundary -> drainThrough: no event beyond `boundaryEndCursor`
323
- (assistant replies included) can enter a snapshot, and imports establish a
324
- conversation baseline so pre-import history is never backfilled.
325
- - One Integration Setup action installs Knowledge Integration and Development
326
- Capture for Claude Code / Codex / OpenCode with separate status reporting,
327
- third-party config preservation, Codex notify conflict detection, and a
328
- host-level Bridge consumer that survives per-connector uninstalls; new
329
- `/api/bridge/*` and `/api/integrations/*` endpoints expose capture health.
330
- - Windows CI browser tests now fail fast: CDP launch failures clean up the
331
- spawned browser tree and profile directory, report exit/stderr diagnostics,
332
- use a dynamically discovered DevTools port with per-request timeouts, and
333
- the test runner reports `TIMEOUT` explicitly under a configurable budget
334
- (`PK_TEST_TIMEOUT_MS`, default 90s) instead of hanging for 300 seconds.
335
-
336
- ## [4.2.2] - 2026-08-19
337
-
338
- - Rebuilt the web Control Center visual layer to faithfully match the v13
339
- reference design (`project-knowledge-base-faithful-repair-ui-v10.html`):
340
- sidebar brand block with the knowledge root path, multi-line project cards
341
- (name, id, repository path, status dot) with right-click removal, the
342
- in-main-area header, full-height Workbench panel with chat bubbles, tool
343
- cards, circular send button and composer toolbar, the reference design
344
- tokens including the complete dark theme, and responsive breakpoints.
345
- - Restored the reference Settings drawer structure with separate AI model
346
- editing (add/save profiles via the API), project model assignment,
347
- knowledge relations, mature development-conversation turn cards with
348
- commit labels, and the V7 run-records list geometry.
349
- - Import view now shows the reference split layout with a post-import
350
- placement preview; UI contract tests were updated to the reference DOM.
351
-
352
- ## [4.2.1] - 2026-08-19
353
-
354
- - Fixed the legacy layout migration failing with `Legacy migration source
355
- JSON is corrupt` (and the server refusing to start) when any legacy source
356
- file carries a UTF-8 BOM, which PowerShell and several editors commonly
357
- write. BOM-prefixed sources are now parsed normally.
358
-
359
- ## [4.2.0] - 2026-08-19
360
-
361
- - Completed the v13 refactor: conversation capture contracts, atomic Bridge
362
- commit boundaries with capture-gap persistence, and frozen
363
- `CommitConversationSnapshot` binding so post-commit prompts never bind to
364
- old commits and claims freeze their analyzer evidence.
365
- - Replaced `patch:null` handling for large diffs with an exact, hash-verified
366
- patch chunk evidence bundle; commit analysis now carries frozen evidence,
367
- retrieval, and conversation manifests end to end.
368
- - Unified user search and commit context selection into one
369
- `KnowledgeRetrievalService` (hybrid recall, deterministic rerank, chunk
370
- budgets) with an index source manifest and a Markdown delta overlay so
371
- fresh knowledge is visible while the derived index is dirty.
372
- - Logging is now permanent per-day JSONL under `logs/system` and
373
- `logs/projects/<id>` with reverse-chunk cursors, SSE streaming without
374
- gaps, and immutable capture policy (no retention/capacity settings).
375
- - Background work registers per operation with one root `operationId`
376
- propagated across HTTP, Hook, startup, and reconciler logs, and shutdown
377
- drains every registered task.
378
- - Project delete is transactional with a journal, tombstone, and per-stage
379
- recovery; migration no longer converts legacy logging knobs into settings.
380
- - Restored the full Control Center web shell (Workbench, Import, Settings)
381
- with a mature run-records log view and a read-only development-conversation
382
- page driven by frozen commit snapshots; logs left the standalone console.
383
- - Added non-release CI (Linux Node 18/24, Windows Node 24) for every push;
384
- desktop packaging validation is paused for this web-only cycle.
385
-
386
- ## [4.1.23] - 2026-08-17
387
-
388
- - Replaced legacy whole-registry project state with schema-v2 settings, a
389
- minimal project registry, stable per-project config/state, and locked
390
- requirement JSONL records under one canonical `StorageLayout`.
391
- - Reduced knowledge analysis to the managed post-commit Hook and startup
392
- recovery, both routed through one per-project reconciler and one Commit
393
- prompt. Import now establishes a baseline without AI or placeholder files.
394
- - Added manifest-validated AI staging, journaled Markdown promotion, crash
395
- recovery, dirty-index semantics, and a single serialized `IndexService` for
396
- incremental writes and atomic full rebuilds.
397
- - Rebuilt logging around six-level `log/v2` JSONL records, recursive secret
398
- redaction, daily/size rotation, retention/capacity cleanup, cursor queries,
399
- exports, health state, and orphaned-operation detection.
400
- - Replaced the duplicate dashboard implementations with one responsive
401
- light/dark logging console, including operation flows, structured error
402
- details, pause/refresh, filtering, cursor pagination, and export.
403
- - Unified server, CLI, MCP, Hook, index, and project path resolution. Read-only
404
- knowledge search falls back to scoped Markdown when the derived index is
405
- dirty or unavailable.
406
- - Added staged `layout-v2` migration with centralized recovery backups,
407
- source/hash validation, last-step completion, fault recovery, and preservation
408
- of legacy paths, secrets, Commit pointers, indexes, and logs.
409
- - Hardened the API by removing wildcard CORS, raw-file access, generic project
410
- replacement, manual Hook/analysis routes, and stack responses; non-loopback
411
- binding now requires authentication and Origin validation.
412
- - Removed CLAUDE.md management, the second automation queue, configurable log
413
- and index locations, legacy direct database writers, and unused Vue/Tailwind
414
- browser runtimes.
415
- - Added Windows end-to-end coverage for online Hook processing, offline Commit
416
- catch-up, requirement binding, promotion/index completion, structured log
417
- chains, paths with spaces/non-ASCII text, and immediate recovery of locks
418
- owned by a crashed process.
419
- - Hardened release packaging by explicitly mirroring core runtime dependencies
420
- into the Electron app and allowlisting shipped documentation, preventing
421
- local review artifacts from leaking into npm or desktop packages.
422
-
423
- ## [4.1.22] - 2026-07-27
424
-
425
- - Added a read-only `project-knowledge-mcp` server for OpenCode, Codex, and
426
- other MCP-compatible coding agents. It resolves the current Git project,
427
- exposes scoped search/ask/get/history tools, and includes the search-first
428
- workflow without depending on `CLAUDE.md`.
429
- - Added a safe keyword-search fallback for legacy Markdown knowledge bases and
430
- kept routine knowledge writes exclusively in post-commit automation.
431
- - Added a shared Claude Code/Codex plugin with MCP configuration and a
432
- search-first `project-knowledge` Skill, plus a native Claude marketplace and
433
- Codex marketplace manifest.
434
- - Added an OpenCode adapter and a universal, idempotent integration manager for
435
- installation, updates, removal, dry-runs, and status checks across Claude
436
- Code, OpenCode, and Codex.
437
-
438
- ## [4.1.21] - 2026-07-27
439
-
440
- - Fixed Windows desktop Claude sessions failing with “executable exists but
441
- failed to launch” when a global Claude Code installation exposes `cli.js`
442
- but `node` is unavailable in the desktop process PATH. JavaScript Claude
443
- entry points now use the application's own Node/Electron runtime.
444
- - Added slow-backend and packaged-client regressions covering desktop startup
445
- readiness and Claude script launch through the installed Windows executable.
446
-
447
- ## [4.1.20] - 2026-07-27
448
-
449
- - Rebuilt the daily workspace around Claude Code while keeping GitHub/Gitea
450
- sign-in, project import, AI setup, project knowledge relations, knowledge
451
- storage, embedding model setup, logs, and desktop updates available from one
452
- settings drawer.
453
- - Moved project removal to a right-click project-list action with confirmation.
454
- Projects with a running Claude session or queued automation task now cannot
455
- be removed.
456
-
457
- ## [4.1.19] - 2026-07-24
458
-
459
- - Stabilized release tests: expected EventSource cancellation during a page
460
- reload is no longer treated as a failed request, and the Windows CLAUDE.md
461
- refresh test no longer removes a just-used temporary server directory.
462
-
463
- ## [4.1.18] - 2026-07-23
464
-
465
- - Simplified the daily workspace into a full-width Claude Code interface.
466
- - Removed the project-supervision summary, pending-commit and issue panels,
467
- dashboard status/goal cards, and manual automation preview/simulation UI.
468
-
469
- ## [4.1.17] - 2026-07-23
470
-
471
- - Rebuilt commit-triggered knowledge automation around persistent per-commit
472
- state, ordered recovery, and exactly one AI task per Git commit.
473
- - Removed manual draft review, auto-apply controls, and scheduled-task paths;
474
- generated knowledge is now written directly through the automated pipeline.
475
-
476
- ## [4.1.16] - 2026-07-22
477
-
478
- - Fixed the desktop client timing out / hanging on the loading screen for large
479
- knowledge bases (many projects, multi-GB DB) while the web dashboard opened
480
- fine. Root cause was several compounding issues:
481
- - Desktop startup probe was too impatient: raised the per-request `/api/state`
482
- timeout (1.5 s → 30 s) and the overall backend-ready budgets (owned backend
483
- 45 s → 180 s, existing backend 20 s → 60 s) so it waits like a browser does.
484
- - Server startup no longer blocks the event loop: the CLAUDE.md audit and
485
- orphaned-run cleanup now run in `setImmediate`, so `/api/state` can answer
486
- immediately after `listen()`.
487
- - `getScheduleInfo()` (which spawns `schtasks`) is now cached for 5 s so
488
- repeated `/api/state` hits don't each pay process-spawn latency.
489
- - `isProcessAlive` now treats `EPERM` as alive, so a running backend's
490
- runtime-endpoint file is no longer deleted (and a duplicate cold-started)
491
- when the desktop and CLI run at different privilege levels on Windows.
492
- - The dashboard now retries the initial connection every 3 s until it first
493
- succeeds, instead of waiting up to 60 s, so a slow-starting backend no
494
- longer leaves the page spinning.
495
- - Stopped the knowledge-storage relocation from logging
496
- `target ... is not empty` on every startup: relocation is now skipped (with a
497
- single warning) when the configured storage directory already holds unrelated
498
- content, and the existing storage location keeps being used.
499
-
500
- ## [4.1.15] - 2026-07-21
501
-
502
- - Replaced the dashboard's fixed-interval polling with a server-sent-events
503
- (SSE) push model. The backend now emits a `state/changed` event over a new
504
- `/api/state-stream` channel whenever project state is written or a job
505
- starts/finishes, and the frontend refreshes only in response (300 ms
506
- debounced). A slow 60 s poll remains as a fallback. Result: changes such as
507
- the sidebar pending count and summary cards update within ~1-2 s of the
508
- per-commit analysis cycle, while an idle dashboard makes almost no requests
509
- instead of hitting the server every 5 s.
510
-
511
- ## [4.1.14] - 2026-07-21
512
-
513
- - Fixed `runCommitAnalysis` to mutate the projects map entry directly
514
- (`projects[slug].lastAnalyzedCommit`) instead of a copy. The v4.1.11
515
- one-by-one refactor accepted `project = { slug, ...projects[slug],
516
- kbPath }`, so `project.lastAnalyzedCommit = ...` mutated a throwaway
517
- copy and the `writeProjects` callback persisted the unchanged value.
518
- Symptom: the "待分析" count never decreases after analysis; the
519
- pending count appears stuck or oscillates between runs because the
520
- scan counter and the manual analysis counter diverge.
521
-
522
- ## [4.1.13] - 2026-07-21
523
-
524
- - Bumped the GitHub OAuth HTTP timeout from 20s to 30s in
525
- `requestJson` and `requestFormJson` (github-team-store.js) and made
526
- the timeout error message actionable: it now names the host that
527
- failed and suggests using a Personal Access Token as a workaround
528
- when GitHub is unreachable from the host network.
529
-
530
- ## [4.1.12] - 2026-07-21
531
-
532
- - Hid the "Runs / Drafts" sidebar nav entry. All registered projects
533
- use `knowledgeMode: autoApply` so manual review is not part of the
534
- workflow; the runs view itself is preserved for programmatic access
535
- (uncomment the one line in `navItems` to restore the button).
536
-
537
- ## [4.1.11] - 2026-07-21
538
-
539
- - Refactored `runCommitAnalysis` from batch to one-by-one: each pending
540
- commit now gets its own run record and its own draft, analyzed in
541
- chronological order (FIFO). After every successful single-commit
542
- run, `project.lastAnalyzedCommit` advances to that commit's hash so
543
- the "待分析" count drops by one per analysis, matching the UI label.
544
- Previously a 10-commit batch produced 1 run + 10 drafts and the
545
- pending count did not decrease until the user clicked Apply (which
546
- could also advance the checkpoint past commits the user had not
547
- actually applied drafts for).
548
-
549
- ## [4.1.10] - 2026-07-21
550
-
551
- - Made startup-recovery's staging copy (`prepareKnowledgeWorkspace`) and
552
- Claude-executable lookup (`findClaudeExecutableForSdk`) asynchronous
553
- so the server's HTTP handlers (notably `/api/state`) stay responsive
554
- while pending-commit workers are being dispatched. Previously the
555
- desktop client would time out with `backend request timed out` when
556
- several projects had pending commits on startup, because the sync
557
- `fs.cpSync` and `spawnSync` calls were freezing the event loop for
558
- several seconds during `/api/state` polling.
559
-
560
- ## [4.1.9] - 2026-07-21
561
-
562
- - Refused to import or upsert a project whose `kbPath` resolves to the
563
- same directory as `gitPath` / `localPath`. Writing the knowledge base
564
- inside the source tree pollutes the repo (and trips Windows symlink
565
- errors in the staging workspace), so both entry points now return 400.
566
-
567
- ## [4.1.8] - 2026-07-21
568
-
569
- - Stopped the post-commit automation worker from being auto-paused when a
570
- user aborts the Claude session in the terminal. Pending commits queued
571
- before the abort are now picked up again on the next desktop launch.
572
-
573
- ## [4.1.7] - 2026-07-19
574
-
575
- - Restored GitHub and Gitea login in the Windows desktop client through an
576
- acknowledged Electron bridge that opens OAuth pages in the system browser.
577
- Browser launch failures are now reported immediately instead of appearing
578
- later as an authorization timeout.
579
- - Added support for HTTP authorization URLs used by private, intranet Gitea
580
- installations while continuing to reject local-file and script URLs at the
581
- desktop security boundary.
582
- - Forwarded Electron's Windows system-proxy resolution to the backend and made
583
- GitHub OAuth plus remote repository discovery proxy-aware, while preserving
584
- loopback and `NO_PROXY` bypasses for private Gitea installations.
585
- - Verified the full team-knowledge path after desktop migration: GitHub device
586
- authorization, Gitea callback/token persistence, remote repository scanning,
587
- manifest discovery, cached store loading, and team knowledge-base binding.
588
- - Added desktop bridge/security regressions and an end-to-end Gitea OAuth plus
589
- remote team-store discovery test.
590
-
591
- ## [4.1.6] - 2026-07-19
592
-
593
- - Replaced overlapping post-commit batches with a single per-project worker
594
- that treats Git history as the durable queue. Live hooks and desktop startup
595
- recovery now use the same path and process exactly one commit at a time,
596
- strictly from oldest to newest.
597
- - Preserved the original knowledge contract: every analyzed commit must create
598
- an independent `changes/` Markdown record containing its full hash, including
599
- test-only, documentation, and infrastructure commits.
600
- - Added transactional knowledge workspaces. Claude edits a temporary KB copy;
601
- validated Markdown is applied to the live KB only after the session succeeds,
602
- and LanceDB must finish before `lastAnalyzedCommit` advances.
603
- - Added resumable vector finalization and automatic startup recovery. Index
604
- failures retry without rerunning Claude or duplicating Markdown, while an
605
- interrupted desktop session resumes from the oldest unfinished commit.
606
- - Made Stop pause the project's automatic commit worker, discard uncommitted
607
- staged knowledge, and prevent queued work from immediately restarting. The
608
- Claude Code UI now provides a dedicated Resume automatic analysis action.
609
- - Added end-to-end regressions for duplicate Hook delivery, strict commit order,
610
- per-commit changes records, staged Markdown, abort behavior, and vector-index
611
- recovery. The complete core suite now contains 53 passing test files.
612
-
613
- ## [4.1.5] - 2026-07-19
614
-
615
- - Added a desktop-client card in Settings that always shows the installed
616
- application version and provides Check for updates / Restart and install
617
- actions without opening a browser.
618
- - Integrated Electron's Squirrel updater with a stable GitHub Latest Release
619
- feed. Release automation now uploads `RELEASES` and the full `.nupkg` beside
620
- the installer so future desktop versions download and install in-app.
621
- - Hardened the PowerShell folder-picker fallback: scripts are unpacked from the
622
- desktop ASAR, stdout uses UTF-8, and only an existing absolute directory can
623
- be returned. PowerShell banners and error text can never populate a path
624
- field.
625
- - Added updater lifecycle and folder-output regressions, bringing the complete
626
- core suite to 52 passing test files while retaining the native Electron
627
- folder dialog introduced in 4.1.4.
628
-
629
- ## [4.1.4] - 2026-07-19
630
-
631
- - Fixed Windows Claude Code discovery so extensionless npm shell shims and
632
- command wrappers are never passed to the Agent SDK. The resolver now prefers
633
- the installed package's native `bin/claude.exe` and retains `cli.js` only as
634
- a legacy fallback.
635
- - Changed the post-commit Hook endpoint to acknowledge valid events with HTTP
636
- 202 before commit inspection and Claude startup. Dispatch continues in the
637
- background, while the Hook accepts every successful 2xx response instead of
638
- recording a false timeout/error after a run was already created.
639
- - Restored both desktop directory-selection flows with a narrow Electron IPC
640
- bridge and native directory dialog. Project import and Team Knowledge folder
641
- selection no longer execute a PowerShell script from inside the packaged
642
- ASAR or mistake PowerShell banner text for a selected path.
643
-
644
- ## [4.1.3] - 2026-07-19
645
-
646
- - Removed the bundled 218 MiB Claude Code executable from the Windows desktop
647
- application. The small Agent SDK control layer now discovers the user's
648
- installed Claude Code through `CLAUDE_CODE_EXECPATH`, `PATH`, or the npm
649
- global installation and reports a clear error without disabling knowledge
650
- management when Claude Code is unavailable.
651
- - Removed LanceDB's unused optional embedding-provider stack and its duplicate
652
- Transformers.js 3.0.2 / ONNX Runtime 1.19.2 dependency tree while retaining
653
- the application's supported Transformers.js 3.8.1 embedding service.
654
- - Pruned non-Windows and non-x64 ONNX binaries, browser-only ONNX Web runtimes,
655
- Transformers browser builds, source maps, and unused platform packages from
656
- the Windows x64 bundle.
657
- - Added packaged runtime probes for LanceDB, Transformers.js, ONNX Runtime, and
658
- the real 512-dimensional `bge-small-zh-v1.5` embedding model, plus release
659
- size auditing that rejects bundled Claude binaries, duplicate runtimes, and
660
- oversized artifacts.
661
- - Reduced the measured Windows installer from 476.0 MiB to 221.1 MiB and the
662
- installed application bundle from 1,491.1 MiB to 617.5 MiB without changing
663
- existing model caches, Markdown sources, LanceDB data, or storage paths.
664
-
665
- ## [4.1.2] - 2026-07-16
666
-
667
- - Made the desktop dependency lock reproducible under the newer npm version on
668
- GitHub's Windows runner by explicitly locking the encoding compatibility
669
- dependency used by the packaging tree.
670
- - Made the desktop release workflow fail immediately when a native npm command
671
- fails instead of allowing PowerShell to continue into a misleading later
672
- step.
673
-
674
- ## [4.1.1] - 2026-07-16
675
-
676
- - Fixed Windows GitHub Actions browser discovery for the `windows-2025`
677
- runner by detecting system-level Chrome and Microsoft Edge installations.
678
- - Restored the release gate for all three real-browser UI suites so the
679
- Windows desktop installer can be built, smoke-tested, and uploaded only
680
- after the complete 50-file core regression suite passes.
681
-
682
- ## [4.1.0] - 2026-07-16
683
-
684
- - Added a Windows x64 Electron desktop application and Squirrel installer that
685
- reuse the existing configuration, configured knowledge root, model cache,
686
- Markdown sources, Team Knowledge Mode, and LanceDB without copying or
687
- re-vectorizing user data.
688
- - Added single-instance and system-tray lifecycle behavior: closing the window
689
- keeps Git hooks available, while an explicit tray Quit stops only a backend
690
- owned by the desktop application.
691
- - Added an atomic, local-only runtime endpoint record so CLI, desktop, and
692
- existing Git hooks discover the active fallback port dynamically and never
693
- open competing LanceDB writers.
694
- - Made the desktop application safely attach to an already-running npm CLI and
695
- leave that external backend alive when the desktop window exits.
696
- - Added hardened Electron navigation, context isolation, sandboxing, denied
697
- permission requests, bounded desktop backend logs, Squirrel lifecycle event
698
- handling, and explicit native-module ASAR unpacking.
699
- - Added Windows release automation that runs all 50 core regression files,
700
- desktop unit tests, a packaged EXE/API smoke test, and packaged LanceDB native
701
- read/write tests before uploading the installer and SHA-256 to GitHub
702
- Releases. The existing npm provenance publish workflow remains unchanged.
703
-
704
- ## [4.0.4] - 2026-07-16
705
-
706
- - Added a Settings-based Markdown knowledge health audit for every registered
707
- personal and team knowledge base, with per-project file size, deterministic
708
- fixes, structural errors, and semantic-review findings.
709
- - Added safe batch or per-project optimization with retained backups under the
710
- configured knowledge root, atomic writes, formatting repair, compact index
711
- regeneration, and automatic LanceDB refresh for migrated projects.
712
- - Reduced generated change indexes to the latest 40 entries with bounded cells
713
- and generated-file markers; a real 125 KiB legacy index now rebuilds to about
714
- 9 KiB without deleting its source change documents.
715
- - Prevented background AI automation from writing `00-index.md`, injected
716
- mandatory in-place-update hygiene rules even for custom prompts, and rebuilt
717
- compatibility indexes after every successful automatic update.
718
- - Preserved Team Knowledge Mode by de-duplicating shared physical KB paths
719
- during maintenance while refreshing every aliased vector space.
720
- - Expanded the complete regression suite to 48 passing test files.
721
-
722
- ## [4.0.3] - 2026-07-15
723
-
724
- - Added an embedding-model setup panel with one-click download and real
725
- inference verification, configurable Hugging Face endpoint/mirror, local
726
- model directory, offline mode, and copyable PowerShell environment-variable
727
- examples.
728
- - Stop a migration batch before changing any project when the shared embedding
729
- model cannot load, instead of reporting the same model failure once for every
730
- project.
731
- - Surface migration failures through a prominent settings panel, a one-time
732
- browser alert, detailed per-project errors, and direct retry actions.
733
- - Persist model settings and verified download state while rejecting partial
734
- cache files or verification results from a different model configuration.
735
- - Expanded the complete regression suite to 46 passing test files.
736
-
737
- ## [4.0.2] - 2026-07-15
738
-
739
- - Store LanceDB, its maintenance metadata, and retained database backups under
740
- `<configured knowledge root>/.project-knowledge/` instead of a fixed app-data
741
- location.
742
- - Automatically relocate v4.0.0/v4.0.1 databases on startup to the knowledge
743
- root already selected in Settings.
744
- - Safely relocate and verify the database before saving a changed knowledge
745
- root, including cross-volume copies, target-conflict protection, and retained
746
- backup path rebasing.
747
- - Display the effective vector database path directly below the Knowledge Store
748
- root setting.
749
- - Expanded the complete regression suite to 45 passing test files, including
750
- real LanceDB startup and live root-change relocation tests.
751
-
752
- ## [4.0.1] - 2026-07-15
753
-
754
- - Excluded generated `00-index.md` files from embedding and removed stale
755
- derived-index rows while retaining the Markdown files for legacy and Team
756
- Knowledge Mode compatibility.
757
- - Replaced unbounded Tags and change lists in generated Markdown indexes with
758
- compact, capped navigation metadata; all module links remain available.
759
- - Stopped running LanceDB compaction after every commit. Maintenance now runs
760
- only after bounded mutation thresholds and never rewrites the oversized
761
- v4.0.0 full-text index in place.
762
- - Added a compact full-text schema that indexes `chunk_text` once with Chinese
763
- bigrams instead of storing and indexing a second full document copy.
764
- - Added one-click, atomic database rebuilding with disk statistics, vector and
765
- keyword verification, optional retained backup, and manual rollback.
766
- - Added upgrade and regression coverage for old v4.0.0 databases; the complete
767
- suite now contains 43 passing test files.
768
-
769
- ## [4.0.0] - 2026-07-15
770
-
771
- - Added a local LanceDB knowledge store containing original text, metadata,
772
- and 512-dimensional `Xenova/bge-small-zh-v1.5` embeddings.
773
- - Added incremental Markdown indexing with heading-aware chunks, content-hash
774
- skips, stale-chunk deletion, Chinese n-gram/BM25 search, and hybrid RRF.
775
- - Added scoped `search`, `get`, `ask`, and `history` HTTP/CLI tools that return
776
- readable source text without exposing raw vectors.
777
- - Added explicit, bidirectional, non-transitive related-project search scopes;
778
- writes remain restricted to each project's primary space.
779
- - Preserved Team Knowledge Mode: Git remains the portable Markdown transport,
780
- stable team `kbId` values map to local spaces, and vectors stay local.
781
- - Added resumable one-click migration for all legacy KBs with backups,
782
- verification probes, per-project atomic cutover, retry, and rollback.
783
- - Centralized Claude Code instructions in one user-relative file and added a
784
- safe bulk refresh for all managed `CLAUDE.md` blocks independent of Hooks.
785
- - Enforced development-time read-only KB access; post-commit automation owns
786
- routine updates and re-indexes migrated projects after successful runs.
787
- - Added configurable mirrored/offline embedding model locations through
788
- `KB_EMBEDDING_REMOTE_HOST` and `KB_EMBEDDING_LOCAL_PATH`.
789
- - Expanded the regression suite to 41 test files.
790
-
791
- ## [2.4.7] - 2026-07-01
792
-
793
- - Initial public Apache-2.0 release of the local-first `project-knowledge`
794
- core.
795
- - Includes the CLI, local dashboard, Git scanner, project registry,
796
- knowledge-base workflow, AI profile support, prompt registry, templates,
797
- and regression tests.
798
- - Keeps runtime data, local project knowledge bases, API keys, generated AI
799
- drafts, logs, and local maintenance notes outside the public repository.
1
+ # Changelog
2
+
3
+ ## [4.8.0] - 2026-10-10
4
+
5
+ - Unified brain web product: six real pages for work, retrieval, memories,
6
+ domains/projects and activity. Existing module UIs retain their streaming
7
+ and recovery behavior with one embedded theme and project context.
8
+ - Project import wires all four modules and preserves code/knowledge paths;
9
+ domains and confirmed memories add shared scopes without moving knowledge.
10
+ - The vendored knowledge-engine owns journal consumption, isolated analysis,
11
+ staging promotion and retrieval. Per-project FIFO and two concurrent projects
12
+ persist across recovery; promotion and indexing have separate failure states.
13
+ - Pin the validated module releases: Workbench 0.13.0, vector-hub 1.0.7,
14
+ event-bridge console 0.7.0 and vendored knowledge-engine 0.1.0.
15
+ Runtime file hashes are verified before release, not resolved from `latest`.
16
+ - Web-only release. No new Windows installer or desktop auto-update delivery.
17
+ Regression uses controlled model/embedding doubles; real-model and real-index
18
+ smoke tests are reported separately. Remaining fault combinations are not
19
+ represented as a completed stability certification.
20
+
21
+ ## [4.7.0] - 2026-09-21
22
+
23
+ - All four embedded module dependencies (`claude-ai-workbench`,
24
+ `@sanqianx/vector-hub`, `@sanqianx/ai-coding-event-bridge-console`, plus the
25
+ `@sanqianx/ai-coding-event-bridge` consumer inside the shell) are now pinned
26
+ to `latest`, so a fresh `npm install` pulls whatever the upstream modules
27
+ ship instead of lagging behind the project's npm releases. The legacy
28
+ `@sanqianx/ai-coding-event-bridge` package — which used to be the engine
29
+ library — is deprecated on npm and removed from this project's dependencies;
30
+ its capture engine now ships inside `@sanqianx/ai-coding-event-bridge-console`
31
+ at `src/bridge`, and the four production call sites (hook capture, requirement
32
+ recorder, integration installer, bridge adapter) plus six tests were rewritten
33
+ to import from there. The legacy package's every version carries a deprecation
34
+ message pointing to the new entry.
35
+ - The package is published as `@sanqianx/project-knowledge` (moved from the
36
+ unscoped `project-knowledge`); the unscoped name still resolves to the old
37
+ versions for users who haven't migrated, but new installs land on the
38
+ scoped package.
39
+
40
+ ## [4.6.0] - 2026-09-21
41
+
42
+ - The three embedded module runtimes now ship as real npm dependencies instead
43
+ of the `_modules/` committed snapshot: `claude-ai-workbench@0.4.1`,
44
+ `@sanqianx/vector-hub@1.0.1` and
45
+ `@sanqianx/ai-coding-event-bridge-console@0.4.0` (bringing
46
+ `@sanqianx/ai-coding-event-bridge@0.4.0` transitively). The `_modules/`
47
+ directory, its vendor script and the tarball entry are removed.
48
+ - Why it matters: the snapshot lagged the source repo — npm consumers missed
49
+ the codex resident-bridge Windows fix (per-turn process respawns made every
50
+ turn 5-20s), claude failure-reason surfacing, `/system/doctor` diagnostics
51
+ and the folder-picker foreground/centering fixes. Module upgrades are now a
52
+ one-line version bump verified by `npm ci`, with no manual snapshot step.
53
+ - `module-bridge` resolves each runtime entry through `require.resolve` from
54
+ the installed packages (same supervised spawn, reuse and env-override
55
+ contract as before); the `NODE_PATH` stitching is gone. `release:verify` no
56
+ longer gates on the vendored snapshot.
57
+
58
+ ## [4.5.0] - 2026-09-21
59
+
60
+ - The embedded Agent Terminal's settings view gains a 会话捕获 (capture) tab.
61
+ Terminal conversations remain exempt from Development Conversation capture by
62
+ default — the terminal is internal AI runtime, not the developer's CLI
63
+ record. Flipping the toggle persists the scope, applies it to the runner
64
+ immediately, and marks only NEW terminal sessions with
65
+ `AI_CODING_EVENT_BRIDGE_CAPTURE=1`, so they reach the Bridge journal and the
66
+ 会话浏览 explorer like any CLI tool conversation. Existing sessions are
67
+ unaffected, and nothing changes for standalone terminals that never touch
68
+ the toggle. Ships the updated vendored Agent Terminal runtime.
69
+
70
+ ## [4.4.0] - 2026-09-21
71
+
72
+ - The ai-coding-event-bridge conversation console joins the Agent Terminal and
73
+ vector-hub as the third embedded Control Center module. The vendored runtime
74
+ (console 0.4.0 + its core) ships inside the npm package and starts with the
75
+ shell on 127.0.0.1:8790; the console's dependency on
76
+ `@sanqianx/ai-coding-event-bridge` resolves from a node_modules directory
77
+ vendored inside the console package, so the host package's own older npm
78
+ dependency can never shadow it. The global `node_modules/` gitignore rule
79
+ carries a negation for that directory, and `vendor:modules --check` now
80
+ verifies the runtime is present and git-tracked — the 4.3.0 "runtime missing
81
+ from the tarball" incident class cannot recur for this module either.
82
+ - Module integration follows the established contract: same-origin reverse
83
+ proxy under `/api/eventbridge/`, supervised spawn with reuse of an already
84
+ listening standalone console (`KB_EVENTBRIDGE_COMMAND` override,
85
+ `AI_CODING_EVENT_BRIDGE_HOME` passthrough so the explorer shows the same
86
+ journal the in-process BridgeAdapter writes), idempotent import-time
87
+ registration keyed by Git work tree path using the recommended
88
+ `<knowledge>/dev-conversations` store, removal that keeps journals and sealed
89
+ commit documents, aggregated sidebar projection and module health.
90
+ - The shell UI gains the 会话浏览 view (connect probe, 独立打开 link, per-project
91
+ 桥 badge, import/remove copy) — and the conversation explorer itself learned
92
+ the `kb:sidebar` embed protocol (`?embed=1`, `kb:ready` announcement,
93
+ loopback-only origins), so its project sidebar folds via the ▤ control exactly
94
+ like the terminal and vector-hub embeds. Standalone console opens are
95
+ unaffected.
96
+
97
+ ## [4.3.1] - 2026-09-20
98
+
99
+ - The 4.3.0 npm package could never start the vector-hub module: the global
100
+ `dist/` gitignore rule kept the vendored runtime
101
+ (`_modules/vectorhub/dist/`, 25 files) out of git, so the CI-packed tarball
102
+ shipped without `bin.js` and every fresh install logged "Vendored vector-hub
103
+ runtime not present". The runtime is committed now, and `release:verify`
104
+ gained a vendored-modules gate that fails when a required runtime file is
105
+ missing from disk or not tracked by git — the check that was previously
106
+ wired into nothing.
107
+ - The Control Center's embedded Agent Terminal linked to no project on first
108
+ load. The shell sends `kb:select-project` 150ms after `kb:ready`, but the
109
+ terminal loads its project list only after health + agent discovery, so the
110
+ one-shot selection landed on an empty list: the linkage chip stuck on
111
+ "未登记" and the embed had no project selected, making it impossible to open
112
+ a terminal from the shell. The terminal now re-announces `kb:ready` once its
113
+ projects are loaded, and the shell retries a failed linkage with backoff.
114
+ - Module status probing no longer reports a false "未检测到 … 界面将显示为
115
+ 空白" forever: cold-starting module services are re-probed with backoff
116
+ (up to 10 attempts) before the status is marked down, and the top bar
117
+ 终端/检索 indicator updates when a late probe succeeds.
118
+
119
+ ## [4.3.0] - 2026-09-20
120
+
121
+ - The Agent Terminal and vector-hub module services now ship inside the npm
122
+ package and start with the shell. `npm install -g project-knowledge` is
123
+ self-contained: the Control Center, the embedded terminal (:5760) and the
124
+ vector-hub console (:8787) all come up together on a fresh machine — no
125
+ sibling checkouts required. KB_MODULES_AUTOSTART=0 disables spawning;
126
+ a service already listening on its URL is never double-spawned, so dev
127
+ machines running standalone module instances are unaffected. vector-hub
128
+ needs Node >= 22 — on older runtimes the shell skips spawning it and logs
129
+ a warning. Also fixed a latent spawn bug: quoted paths in module commands
130
+ reached node with the quotes embedded, which crash-looped the (previously
131
+ default-off) autostart path.
132
+
133
+ ## [4.2.20] - 2026-09-20
134
+
135
+ - Startup no longer relocates legacy v4.1.x package-root runtime data. This is
136
+ a fresh knowledge-base system by decision: old data under the npm package
137
+ dir is ignored, not migrated. Previously a conflict between stale
138
+ package-root files and the user data dir aborted startup with "Legacy
139
+ runtime relocation failed", bricking machines whose install carried
140
+ v4.1.x-era files.
141
+
142
+ ## [4.2.19] - 2026-09-20
143
+
144
+ - Background launch is diagnosable and no longer lies about the URL. The
145
+ detached child's stdout/stderr now append to `<data-dir>/launcher.log`, so
146
+ port fallbacks ("Port 5757 was busy, using 5758 instead") and startup
147
+ failures are visible after the fact instead of being silently discarded
148
+ (`stdio: 'ignore'`). The parent no longer prints a guessed URL or races a
149
+ browser open 1.2s after spawn — the child opens the browser itself once it
150
+ is actually listening, with the real port. The free-port probe timeout went
151
+ 1s → 3s to survive slow listen() under antivirus/cold-cache load (a false
152
+ "busy" previously cascaded into "No free port found").
153
+
154
+ ## [4.2.18] - 2026-09-20
155
+
156
+ - Module-embed shell (T0-T4 of docs/ui-integration-repair-plan.md): the Control
157
+ Center UI now embeds the Agent Terminal (:5760) and vector-hub console
158
+ (:8787) as original UIs behind a same-origin proxy (`/api/terminal/*`,
159
+ `/api/vectorhub/*`). Project import registers both modules (wiring table in
160
+ project state); the sidebar aggregates module registrations with per-project
161
+ session history (kb:list-sessions / kb:open-session) — session lifecycle
162
+ (archive/restore) belongs to the terminal module only, the shell keeps a
163
+ read-only projection; per-module sidebar fold toggles on the nav buttons
164
+ (kb:sidebar); project selection drives both modules (kb:select-project)
165
+ with live linkage chips.
166
+ Settings drawer is now 开发对话/日志 only (model settings live in the
167
+ terminal UI). Module removal keeps local knowledge and terminal session
168
+ records (upstream `removeProject?keepSessions=1`). Optional module service
169
+ supervision behind `KB_MODULES_AUTOSTART=1`. Old workbench chat panel and
170
+ its UI tests retired; full suite 115/115 green.
171
+
172
+ ## [4.2.17] - 2026-08-25
173
+
174
+ - Recognized a healthy Project Knowledge fan-out nested inside Codex Desktop's
175
+ computer-use `--previous-notify` wrapper. Integration status and one-click
176
+ repair no longer report a false third-party conflict or attempt to wrap the
177
+ notifier again.
178
+
179
+ ## [4.2.16] - 2026-08-25
180
+
181
+ - Upgraded AI Coding Event Bridge to 0.1.2 so one Codex task can be captured
182
+ across every continuation rollout. Existing single-file cursors migrate in
183
+ place without replaying consumed history, and real nested turn identities
184
+ keep commentary and final responses attached to the correct user prompt.
185
+ - Added a joint Codex / Claude Code / OpenCode restart-and-recovery gate that
186
+ verifies durable capture, control-message exclusion, exact workspace
187
+ attribution, turn grouping, and duplicate-notification idempotency.
188
+ - Kept Windows CDP failure tests fast and reliable by restricting detached
189
+ profile cleanup to actual Chrome/Edge launchers.
190
+
191
+ ## [4.2.15] - 2026-08-25
192
+
193
+ - Repaired Codex Development Conversation turns without rewriting durable
194
+ history: generated control/context records are excluded, orphan assistant
195
+ responses are projected onto the correct user turn within the same session,
196
+ and stale open-turn facts no longer duplicate commit associations.
197
+ - Removed synthetic empty-user and pending-assistant UI messages, with focused
198
+ projection, binding, API, and real-history regression coverage.
199
+
200
+ ## [4.2.14] - 2026-08-25
201
+
202
+ - Recovered commit analysis safely after a server restart by making leftover
203
+ claims terminal without running startup analysis or replaying historical or
204
+ offline commits; the next explicit Git Hook event processes only its own SHA.
205
+ - Restored v4.1.21 Claude Workbench history through the migrated project's
206
+ legacy slug while preserving the original session files and preferring the
207
+ canonical runtime record on duplicate session IDs.
208
+ - Restored historical session selection and live Commit automation visibility
209
+ in the Claude Code UI, including prompts, thinking, tools, permissions,
210
+ retries, results, stop controls, and real browser regression coverage.
211
+
212
+ ## [4.2.13] - 2026-08-25
213
+
214
+ - Restored the globally installed web UI by including `ui/i18n.js` in the
215
+ npm package; a missing or incomplete localization runtime can no longer
216
+ abort project, AI profile, Knowledge Root, and conversation loading.
217
+ - Added package-asset closure validation plus a real
218
+ `npm pack -> npm install -> server -> Chrome` release smoke test, so CI
219
+ rejects tarballs whose UI differs from the tested source tree.
220
+
221
+ ## [4.2.9] - 2026-08-24
222
+
223
+ - Made persisted UI-language selection fully reliable across page reloads and
224
+ slower browser runners: translated labels now re-render, and the document
225
+ language is initialized from the saved preference.
226
+
227
+ ## [4.2.8] - 2026-08-24
228
+
229
+ - Fixed release metadata drift by deriving plugin manifests, marketplace
230
+ metadata, MCP package pins, and both lockfiles from the root package
231
+ version during the standard npm version lifecycle.
232
+ - Added release and tag-version guards to CI and the npm publishing workflow,
233
+ so a mismatched release is rejected before packaging or publishing.
234
+ - Stabilized Windows browser E2E tests by handling Chrome launcher detachment
235
+ and cleaning every test-specific Chrome process by its isolated profile.
236
+
237
+ ## [4.2.7] - 2026-08-24
238
+
239
+ - Made runtime data migration fail closed: existing legacy data is now
240
+ discovered and relocated safely, migration failures prevent startup,
241
+ and settings-only legacy data is preserved instead of being treated as
242
+ a fresh install.
243
+ - Restricted Knowledge Analysis to explicit post-commit hook events.
244
+ Startup, bridge synchronization, historical catch-up, and offline
245
+ commits no longer trigger implicit analysis.
246
+ - Preserved conversation and commit-boundary facts across offline periods
247
+ without allowing those facts to contaminate a later online commit.
248
+
249
+ ## [4.2.6] - 2026-08-20
250
+
251
+ - Hotfix for the v4.2.5 commit-reconciler regression: the post-batch
252
+ re-scan was unconditionally writing `analysis.status='idle'` even
253
+ after a successful batch of commits, clobbering the
254
+ `'state.advanced'` value that `advanceState()` had just set. The CI
255
+ suite surfaced this on a fast runner where the test's state read
256
+ raced ahead of the trailing re-scan; on slower machines the bug
257
+ passed silently. runSweep() now only marks `'idle'` when this call
258
+ never processed any commits, leaving a freshly-promoted batch's
259
+ `state.advanced` visible to the UI.
260
+ - Bumped `plugins/project-knowledge/.mcp.json` from
261
+ `project-knowledge@4.2.4` to `project-knowledge@4.2.6` so the
262
+ integration-adapters MCP-pin assertion matches the package version.
263
+ (The v4.2.5 release had bumped everything except this MCP pin.)
264
+
265
+ 105 root + 2 desktop tests pass.
266
+
267
+ ## [4.2.5] - 2026-08-20
268
+
269
+ - Restored the v4.1.22 → v4.2.x product contract that the recent
270
+ refactor had broken. The shared ` `resolveEffectiveAiProfile` resolver
271
+ is the single source of truth for "which AI profile does this project
272
+ use right now" (project → default → first-usable → AI_PROFILE_REQUIRED),
273
+ and the Workbench / analyzer / CommitReconciler paths no longer
274
+ carry their own drift-prone fallback logic.
275
+ - Hook runtime: post-commit hooks now prefix `ELECTRON_RUN_AS_NODE=1`
276
+ in the shell body so a packaged Desktop install no longer tries to
277
+ launch the Electron GUI from a Git hook invocation. Node ignores the
278
+ env var so CLI installs are unaffected.
279
+ - Hook migration state machine: a missing legacy hook is no longer
280
+ silently marked migrationVersion=2. The new state machine only
281
+ advances migrationVersion when install + readback verify succeed,
282
+ persists third-party conflicts in state.hook.lastConflict for UI
283
+ consumption, and reports status=verified|conflict|pending|failed per
284
+ project.
285
+ - Hook health API: GET /api/projects/:id/hook-status and POST
286
+ /api/projects/:id/hook-repair expose every required field
287
+ (installed / managed / managedVersion / runtimeTarget / lastVerifiedAt
288
+ / conflict / reason / repairAvailable) and refuse to overwrite
289
+ third-party hooks.
290
+ - Import UX: a new preflight endpoint and UI flow (Desktop folder
291
+ picker, knowledge language selector, AI profile selector, optional
292
+ Team Knowledge binding, per-problem action hints, auto preflight on
293
+ every input change, Import button stays disabled until ready=true)
294
+ replace the path-only dialog.
295
+ - Knowledge language control: import + per-project PATCH both accept
296
+ knowledgeLanguage; changing it affects only future generated
297
+ knowledge, never historical files.
298
+ - Project Goal editor: GET/PUT /api/projects/:id/goal atomically reads
299
+ and writes the project's GOAL.md, scoped to its own knowledgePath.
300
+ - UI language toggle (zh-CN / en-US) persists in localStorage and
301
+ re-renders the most-visible labels without a reload.
302
+ - P0 E2E gate proves the four primary contract scenarios (fresh /
303
+ legacy / offline / no-conversation) against the live server.
304
+ 105 root + 2 desktop tests pass; the G00–G08 acceptance gates are
305
+ green.
306
+
307
+ ## [4.2.4] - 2026-08-20
308
+
309
+ - Fixed the Bridge consumer never receiving connector wake-ups on a fresh
310
+ install: `BridgeConsumerService.start(notifyUrl)` ignored its argument, so
311
+ the `project-knowledge` consumer registered with empty metadata. Captured
312
+ conversations piled up in the journal until the next server restart instead
313
+ of appearing in Development Conversation immediately. The wake-up URL now
314
+ lands in the consumer registration and drains fire per event.
315
+ - Projects imported before v4.2.3 (no canonical `repo-identity/v1`) are
316
+ upgraded automatically: on the first consumer drain after updating, each
317
+ legacy project with an existing repository path gets its workspace identity
318
+ resolved and persisted, its conversation baseline established, and its
319
+ external conversations start projecting — no manual migration step. A
320
+ workspace already claimed by another project is never written twice.
321
+ - The Bridge dependency now resolves to `@sanqianx/ai-coding-event-bridge`
322
+ 0.1.1, which accepts Claude Code's real `hook_event_name` payload field
323
+ (previously such payloads were misrouted to the Codex connector and lost as
324
+ capture gaps).
325
+
326
+ ## [4.2.3] - 2026-08-20
327
+
328
+ - Development Conversation now captures real external Claude Code / Codex /
329
+ OpenCode sessions through `ai-coding-event-bridge` (repo-identity/v1 with
330
+ workspaceId as the primary key, durable Bridge-owned turn identity, and
331
+ exact-workspace project matching — unimported workspaces are skipped and
332
+ ACKed, never written into another project).
333
+ - The internal Workbench capture path was removed: sending a Workbench chat
334
+ message no longer records requirements or conversation events (explicit
335
+ `record_requirement` still works), every internal SDK session runs with
336
+ `AI_CODING_EVENT_BRIDGE_CAPTURE=0`, and legacy embedded Workbench pairs are
337
+ excluded from presentation and new commit binding via
338
+ `conversation-exclusions/v1` without rewriting history.
339
+ - Commit conversation snapshots are frozen strictly after
340
+ append-boundary -> drainThrough: no event beyond `boundaryEndCursor`
341
+ (assistant replies included) can enter a snapshot, and imports establish a
342
+ conversation baseline so pre-import history is never backfilled.
343
+ - One Integration Setup action installs Knowledge Integration and Development
344
+ Capture for Claude Code / Codex / OpenCode with separate status reporting,
345
+ third-party config preservation, Codex notify conflict detection, and a
346
+ host-level Bridge consumer that survives per-connector uninstalls; new
347
+ `/api/bridge/*` and `/api/integrations/*` endpoints expose capture health.
348
+ - Windows CI browser tests now fail fast: CDP launch failures clean up the
349
+ spawned browser tree and profile directory, report exit/stderr diagnostics,
350
+ use a dynamically discovered DevTools port with per-request timeouts, and
351
+ the test runner reports `TIMEOUT` explicitly under a configurable budget
352
+ (`PK_TEST_TIMEOUT_MS`, default 90s) instead of hanging for 300 seconds.
353
+
354
+ ## [4.2.2] - 2026-08-19
355
+
356
+ - Rebuilt the web Control Center visual layer to faithfully match the v13
357
+ reference design (`project-knowledge-base-faithful-repair-ui-v10.html`):
358
+ sidebar brand block with the knowledge root path, multi-line project cards
359
+ (name, id, repository path, status dot) with right-click removal, the
360
+ in-main-area header, full-height Workbench panel with chat bubbles, tool
361
+ cards, circular send button and composer toolbar, the reference design
362
+ tokens including the complete dark theme, and responsive breakpoints.
363
+ - Restored the reference Settings drawer structure with separate AI model
364
+ editing (add/save profiles via the API), project model assignment,
365
+ knowledge relations, mature development-conversation turn cards with
366
+ commit labels, and the V7 run-records list geometry.
367
+ - Import view now shows the reference split layout with a post-import
368
+ placement preview; UI contract tests were updated to the reference DOM.
369
+
370
+ ## [4.2.1] - 2026-08-19
371
+
372
+ - Fixed the legacy layout migration failing with `Legacy migration source
373
+ JSON is corrupt` (and the server refusing to start) when any legacy source
374
+ file carries a UTF-8 BOM, which PowerShell and several editors commonly
375
+ write. BOM-prefixed sources are now parsed normally.
376
+
377
+ ## [4.2.0] - 2026-08-19
378
+
379
+ - Completed the v13 refactor: conversation capture contracts, atomic Bridge
380
+ commit boundaries with capture-gap persistence, and frozen
381
+ `CommitConversationSnapshot` binding so post-commit prompts never bind to
382
+ old commits and claims freeze their analyzer evidence.
383
+ - Replaced `patch:null` handling for large diffs with an exact, hash-verified
384
+ patch chunk evidence bundle; commit analysis now carries frozen evidence,
385
+ retrieval, and conversation manifests end to end.
386
+ - Unified user search and commit context selection into one
387
+ `KnowledgeRetrievalService` (hybrid recall, deterministic rerank, chunk
388
+ budgets) with an index source manifest and a Markdown delta overlay so
389
+ fresh knowledge is visible while the derived index is dirty.
390
+ - Logging is now permanent per-day JSONL under `logs/system` and
391
+ `logs/projects/<id>` with reverse-chunk cursors, SSE streaming without
392
+ gaps, and immutable capture policy (no retention/capacity settings).
393
+ - Background work registers per operation with one root `operationId`
394
+ propagated across HTTP, Hook, startup, and reconciler logs, and shutdown
395
+ drains every registered task.
396
+ - Project delete is transactional with a journal, tombstone, and per-stage
397
+ recovery; migration no longer converts legacy logging knobs into settings.
398
+ - Restored the full Control Center web shell (Workbench, Import, Settings)
399
+ with a mature run-records log view and a read-only development-conversation
400
+ page driven by frozen commit snapshots; logs left the standalone console.
401
+ - Added non-release CI (Linux Node 18/24, Windows Node 24) for every push;
402
+ desktop packaging validation is paused for this web-only cycle.
403
+
404
+ ## [4.1.23] - 2026-08-17
405
+
406
+ - Replaced legacy whole-registry project state with schema-v2 settings, a
407
+ minimal project registry, stable per-project config/state, and locked
408
+ requirement JSONL records under one canonical `StorageLayout`.
409
+ - Reduced knowledge analysis to the managed post-commit Hook and startup
410
+ recovery, both routed through one per-project reconciler and one Commit
411
+ prompt. Import now establishes a baseline without AI or placeholder files.
412
+ - Added manifest-validated AI staging, journaled Markdown promotion, crash
413
+ recovery, dirty-index semantics, and a single serialized `IndexService` for
414
+ incremental writes and atomic full rebuilds.
415
+ - Rebuilt logging around six-level `log/v2` JSONL records, recursive secret
416
+ redaction, daily/size rotation, retention/capacity cleanup, cursor queries,
417
+ exports, health state, and orphaned-operation detection.
418
+ - Replaced the duplicate dashboard implementations with one responsive
419
+ light/dark logging console, including operation flows, structured error
420
+ details, pause/refresh, filtering, cursor pagination, and export.
421
+ - Unified server, CLI, MCP, Hook, index, and project path resolution. Read-only
422
+ knowledge search falls back to scoped Markdown when the derived index is
423
+ dirty or unavailable.
424
+ - Added staged `layout-v2` migration with centralized recovery backups,
425
+ source/hash validation, last-step completion, fault recovery, and preservation
426
+ of legacy paths, secrets, Commit pointers, indexes, and logs.
427
+ - Hardened the API by removing wildcard CORS, raw-file access, generic project
428
+ replacement, manual Hook/analysis routes, and stack responses; non-loopback
429
+ binding now requires authentication and Origin validation.
430
+ - Removed CLAUDE.md management, the second automation queue, configurable log
431
+ and index locations, legacy direct database writers, and unused Vue/Tailwind
432
+ browser runtimes.
433
+ - Added Windows end-to-end coverage for online Hook processing, offline Commit
434
+ catch-up, requirement binding, promotion/index completion, structured log
435
+ chains, paths with spaces/non-ASCII text, and immediate recovery of locks
436
+ owned by a crashed process.
437
+ - Hardened release packaging by explicitly mirroring core runtime dependencies
438
+ into the Electron app and allowlisting shipped documentation, preventing
439
+ local review artifacts from leaking into npm or desktop packages.
440
+
441
+ ## [4.1.22] - 2026-07-27
442
+
443
+ - Added a read-only `project-knowledge-mcp` server for OpenCode, Codex, and
444
+ other MCP-compatible coding agents. It resolves the current Git project,
445
+ exposes scoped search/ask/get/history tools, and includes the search-first
446
+ workflow without depending on `CLAUDE.md`.
447
+ - Added a safe keyword-search fallback for legacy Markdown knowledge bases and
448
+ kept routine knowledge writes exclusively in post-commit automation.
449
+ - Added a shared Claude Code/Codex plugin with MCP configuration and a
450
+ search-first `project-knowledge` Skill, plus a native Claude marketplace and
451
+ Codex marketplace manifest.
452
+ - Added an OpenCode adapter and a universal, idempotent integration manager for
453
+ installation, updates, removal, dry-runs, and status checks across Claude
454
+ Code, OpenCode, and Codex.
455
+
456
+ ## [4.1.21] - 2026-07-27
457
+
458
+ - Fixed Windows desktop Claude sessions failing with “executable exists but
459
+ failed to launch” when a global Claude Code installation exposes `cli.js`
460
+ but `node` is unavailable in the desktop process PATH. JavaScript Claude
461
+ entry points now use the application's own Node/Electron runtime.
462
+ - Added slow-backend and packaged-client regressions covering desktop startup
463
+ readiness and Claude script launch through the installed Windows executable.
464
+
465
+ ## [4.1.20] - 2026-07-27
466
+
467
+ - Rebuilt the daily workspace around Claude Code while keeping GitHub/Gitea
468
+ sign-in, project import, AI setup, project knowledge relations, knowledge
469
+ storage, embedding model setup, logs, and desktop updates available from one
470
+ settings drawer.
471
+ - Moved project removal to a right-click project-list action with confirmation.
472
+ Projects with a running Claude session or queued automation task now cannot
473
+ be removed.
474
+
475
+ ## [4.1.19] - 2026-07-24
476
+
477
+ - Stabilized release tests: expected EventSource cancellation during a page
478
+ reload is no longer treated as a failed request, and the Windows CLAUDE.md
479
+ refresh test no longer removes a just-used temporary server directory.
480
+
481
+ ## [4.1.18] - 2026-07-23
482
+
483
+ - Simplified the daily workspace into a full-width Claude Code interface.
484
+ - Removed the project-supervision summary, pending-commit and issue panels,
485
+ dashboard status/goal cards, and manual automation preview/simulation UI.
486
+
487
+ ## [4.1.17] - 2026-07-23
488
+
489
+ - Rebuilt commit-triggered knowledge automation around persistent per-commit
490
+ state, ordered recovery, and exactly one AI task per Git commit.
491
+ - Removed manual draft review, auto-apply controls, and scheduled-task paths;
492
+ generated knowledge is now written directly through the automated pipeline.
493
+
494
+ ## [4.1.16] - 2026-07-22
495
+
496
+ - Fixed the desktop client timing out / hanging on the loading screen for large
497
+ knowledge bases (many projects, multi-GB DB) while the web dashboard opened
498
+ fine. Root cause was several compounding issues:
499
+ - Desktop startup probe was too impatient: raised the per-request `/api/state`
500
+ timeout (1.5 s → 30 s) and the overall backend-ready budgets (owned backend
501
+ 45 s → 180 s, existing backend 20 s → 60 s) so it waits like a browser does.
502
+ - Server startup no longer blocks the event loop: the CLAUDE.md audit and
503
+ orphaned-run cleanup now run in `setImmediate`, so `/api/state` can answer
504
+ immediately after `listen()`.
505
+ - `getScheduleInfo()` (which spawns `schtasks`) is now cached for 5 s so
506
+ repeated `/api/state` hits don't each pay process-spawn latency.
507
+ - `isProcessAlive` now treats `EPERM` as alive, so a running backend's
508
+ runtime-endpoint file is no longer deleted (and a duplicate cold-started)
509
+ when the desktop and CLI run at different privilege levels on Windows.
510
+ - The dashboard now retries the initial connection every 3 s until it first
511
+ succeeds, instead of waiting up to 60 s, so a slow-starting backend no
512
+ longer leaves the page spinning.
513
+ - Stopped the knowledge-storage relocation from logging
514
+ `target ... is not empty` on every startup: relocation is now skipped (with a
515
+ single warning) when the configured storage directory already holds unrelated
516
+ content, and the existing storage location keeps being used.
517
+
518
+ ## [4.1.15] - 2026-07-21
519
+
520
+ - Replaced the dashboard's fixed-interval polling with a server-sent-events
521
+ (SSE) push model. The backend now emits a `state/changed` event over a new
522
+ `/api/state-stream` channel whenever project state is written or a job
523
+ starts/finishes, and the frontend refreshes only in response (300 ms
524
+ debounced). A slow 60 s poll remains as a fallback. Result: changes such as
525
+ the sidebar pending count and summary cards update within ~1-2 s of the
526
+ per-commit analysis cycle, while an idle dashboard makes almost no requests
527
+ instead of hitting the server every 5 s.
528
+
529
+ ## [4.1.14] - 2026-07-21
530
+
531
+ - Fixed `runCommitAnalysis` to mutate the projects map entry directly
532
+ (`projects[slug].lastAnalyzedCommit`) instead of a copy. The v4.1.11
533
+ one-by-one refactor accepted `project = { slug, ...projects[slug],
534
+ kbPath }`, so `project.lastAnalyzedCommit = ...` mutated a throwaway
535
+ copy and the `writeProjects` callback persisted the unchanged value.
536
+ Symptom: the "待分析" count never decreases after analysis; the
537
+ pending count appears stuck or oscillates between runs because the
538
+ scan counter and the manual analysis counter diverge.
539
+
540
+ ## [4.1.13] - 2026-07-21
541
+
542
+ - Bumped the GitHub OAuth HTTP timeout from 20s to 30s in
543
+ `requestJson` and `requestFormJson` (github-team-store.js) and made
544
+ the timeout error message actionable: it now names the host that
545
+ failed and suggests using a Personal Access Token as a workaround
546
+ when GitHub is unreachable from the host network.
547
+
548
+ ## [4.1.12] - 2026-07-21
549
+
550
+ - Hid the "Runs / Drafts" sidebar nav entry. All registered projects
551
+ use `knowledgeMode: autoApply` so manual review is not part of the
552
+ workflow; the runs view itself is preserved for programmatic access
553
+ (uncomment the one line in `navItems` to restore the button).
554
+
555
+ ## [4.1.11] - 2026-07-21
556
+
557
+ - Refactored `runCommitAnalysis` from batch to one-by-one: each pending
558
+ commit now gets its own run record and its own draft, analyzed in
559
+ chronological order (FIFO). After every successful single-commit
560
+ run, `project.lastAnalyzedCommit` advances to that commit's hash so
561
+ the "待分析" count drops by one per analysis, matching the UI label.
562
+ Previously a 10-commit batch produced 1 run + 10 drafts and the
563
+ pending count did not decrease until the user clicked Apply (which
564
+ could also advance the checkpoint past commits the user had not
565
+ actually applied drafts for).
566
+
567
+ ## [4.1.10] - 2026-07-21
568
+
569
+ - Made startup-recovery's staging copy (`prepareKnowledgeWorkspace`) and
570
+ Claude-executable lookup (`findClaudeExecutableForSdk`) asynchronous
571
+ so the server's HTTP handlers (notably `/api/state`) stay responsive
572
+ while pending-commit workers are being dispatched. Previously the
573
+ desktop client would time out with `backend request timed out` when
574
+ several projects had pending commits on startup, because the sync
575
+ `fs.cpSync` and `spawnSync` calls were freezing the event loop for
576
+ several seconds during `/api/state` polling.
577
+
578
+ ## [4.1.9] - 2026-07-21
579
+
580
+ - Refused to import or upsert a project whose `kbPath` resolves to the
581
+ same directory as `gitPath` / `localPath`. Writing the knowledge base
582
+ inside the source tree pollutes the repo (and trips Windows symlink
583
+ errors in the staging workspace), so both entry points now return 400.
584
+
585
+ ## [4.1.8] - 2026-07-21
586
+
587
+ - Stopped the post-commit automation worker from being auto-paused when a
588
+ user aborts the Claude session in the terminal. Pending commits queued
589
+ before the abort are now picked up again on the next desktop launch.
590
+
591
+ ## [4.1.7] - 2026-07-19
592
+
593
+ - Restored GitHub and Gitea login in the Windows desktop client through an
594
+ acknowledged Electron bridge that opens OAuth pages in the system browser.
595
+ Browser launch failures are now reported immediately instead of appearing
596
+ later as an authorization timeout.
597
+ - Added support for HTTP authorization URLs used by private, intranet Gitea
598
+ installations while continuing to reject local-file and script URLs at the
599
+ desktop security boundary.
600
+ - Forwarded Electron's Windows system-proxy resolution to the backend and made
601
+ GitHub OAuth plus remote repository discovery proxy-aware, while preserving
602
+ loopback and `NO_PROXY` bypasses for private Gitea installations.
603
+ - Verified the full team-knowledge path after desktop migration: GitHub device
604
+ authorization, Gitea callback/token persistence, remote repository scanning,
605
+ manifest discovery, cached store loading, and team knowledge-base binding.
606
+ - Added desktop bridge/security regressions and an end-to-end Gitea OAuth plus
607
+ remote team-store discovery test.
608
+
609
+ ## [4.1.6] - 2026-07-19
610
+
611
+ - Replaced overlapping post-commit batches with a single per-project worker
612
+ that treats Git history as the durable queue. Live hooks and desktop startup
613
+ recovery now use the same path and process exactly one commit at a time,
614
+ strictly from oldest to newest.
615
+ - Preserved the original knowledge contract: every analyzed commit must create
616
+ an independent `changes/` Markdown record containing its full hash, including
617
+ test-only, documentation, and infrastructure commits.
618
+ - Added transactional knowledge workspaces. Claude edits a temporary KB copy;
619
+ validated Markdown is applied to the live KB only after the session succeeds,
620
+ and LanceDB must finish before `lastAnalyzedCommit` advances.
621
+ - Added resumable vector finalization and automatic startup recovery. Index
622
+ failures retry without rerunning Claude or duplicating Markdown, while an
623
+ interrupted desktop session resumes from the oldest unfinished commit.
624
+ - Made Stop pause the project's automatic commit worker, discard uncommitted
625
+ staged knowledge, and prevent queued work from immediately restarting. The
626
+ Claude Code UI now provides a dedicated Resume automatic analysis action.
627
+ - Added end-to-end regressions for duplicate Hook delivery, strict commit order,
628
+ per-commit changes records, staged Markdown, abort behavior, and vector-index
629
+ recovery. The complete core suite now contains 53 passing test files.
630
+
631
+ ## [4.1.5] - 2026-07-19
632
+
633
+ - Added a desktop-client card in Settings that always shows the installed
634
+ application version and provides Check for updates / Restart and install
635
+ actions without opening a browser.
636
+ - Integrated Electron's Squirrel updater with a stable GitHub Latest Release
637
+ feed. Release automation now uploads `RELEASES` and the full `.nupkg` beside
638
+ the installer so future desktop versions download and install in-app.
639
+ - Hardened the PowerShell folder-picker fallback: scripts are unpacked from the
640
+ desktop ASAR, stdout uses UTF-8, and only an existing absolute directory can
641
+ be returned. PowerShell banners and error text can never populate a path
642
+ field.
643
+ - Added updater lifecycle and folder-output regressions, bringing the complete
644
+ core suite to 52 passing test files while retaining the native Electron
645
+ folder dialog introduced in 4.1.4.
646
+
647
+ ## [4.1.4] - 2026-07-19
648
+
649
+ - Fixed Windows Claude Code discovery so extensionless npm shell shims and
650
+ command wrappers are never passed to the Agent SDK. The resolver now prefers
651
+ the installed package's native `bin/claude.exe` and retains `cli.js` only as
652
+ a legacy fallback.
653
+ - Changed the post-commit Hook endpoint to acknowledge valid events with HTTP
654
+ 202 before commit inspection and Claude startup. Dispatch continues in the
655
+ background, while the Hook accepts every successful 2xx response instead of
656
+ recording a false timeout/error after a run was already created.
657
+ - Restored both desktop directory-selection flows with a narrow Electron IPC
658
+ bridge and native directory dialog. Project import and Team Knowledge folder
659
+ selection no longer execute a PowerShell script from inside the packaged
660
+ ASAR or mistake PowerShell banner text for a selected path.
661
+
662
+ ## [4.1.3] - 2026-07-19
663
+
664
+ - Removed the bundled 218 MiB Claude Code executable from the Windows desktop
665
+ application. The small Agent SDK control layer now discovers the user's
666
+ installed Claude Code through `CLAUDE_CODE_EXECPATH`, `PATH`, or the npm
667
+ global installation and reports a clear error without disabling knowledge
668
+ management when Claude Code is unavailable.
669
+ - Removed LanceDB's unused optional embedding-provider stack and its duplicate
670
+ Transformers.js 3.0.2 / ONNX Runtime 1.19.2 dependency tree while retaining
671
+ the application's supported Transformers.js 3.8.1 embedding service.
672
+ - Pruned non-Windows and non-x64 ONNX binaries, browser-only ONNX Web runtimes,
673
+ Transformers browser builds, source maps, and unused platform packages from
674
+ the Windows x64 bundle.
675
+ - Added packaged runtime probes for LanceDB, Transformers.js, ONNX Runtime, and
676
+ the real 512-dimensional `bge-small-zh-v1.5` embedding model, plus release
677
+ size auditing that rejects bundled Claude binaries, duplicate runtimes, and
678
+ oversized artifacts.
679
+ - Reduced the measured Windows installer from 476.0 MiB to 221.1 MiB and the
680
+ installed application bundle from 1,491.1 MiB to 617.5 MiB without changing
681
+ existing model caches, Markdown sources, LanceDB data, or storage paths.
682
+
683
+ ## [4.1.2] - 2026-07-16
684
+
685
+ - Made the desktop dependency lock reproducible under the newer npm version on
686
+ GitHub's Windows runner by explicitly locking the encoding compatibility
687
+ dependency used by the packaging tree.
688
+ - Made the desktop release workflow fail immediately when a native npm command
689
+ fails instead of allowing PowerShell to continue into a misleading later
690
+ step.
691
+
692
+ ## [4.1.1] - 2026-07-16
693
+
694
+ - Fixed Windows GitHub Actions browser discovery for the `windows-2025`
695
+ runner by detecting system-level Chrome and Microsoft Edge installations.
696
+ - Restored the release gate for all three real-browser UI suites so the
697
+ Windows desktop installer can be built, smoke-tested, and uploaded only
698
+ after the complete 50-file core regression suite passes.
699
+
700
+ ## [4.1.0] - 2026-07-16
701
+
702
+ - Added a Windows x64 Electron desktop application and Squirrel installer that
703
+ reuse the existing configuration, configured knowledge root, model cache,
704
+ Markdown sources, Team Knowledge Mode, and LanceDB without copying or
705
+ re-vectorizing user data.
706
+ - Added single-instance and system-tray lifecycle behavior: closing the window
707
+ keeps Git hooks available, while an explicit tray Quit stops only a backend
708
+ owned by the desktop application.
709
+ - Added an atomic, local-only runtime endpoint record so CLI, desktop, and
710
+ existing Git hooks discover the active fallback port dynamically and never
711
+ open competing LanceDB writers.
712
+ - Made the desktop application safely attach to an already-running npm CLI and
713
+ leave that external backend alive when the desktop window exits.
714
+ - Added hardened Electron navigation, context isolation, sandboxing, denied
715
+ permission requests, bounded desktop backend logs, Squirrel lifecycle event
716
+ handling, and explicit native-module ASAR unpacking.
717
+ - Added Windows release automation that runs all 50 core regression files,
718
+ desktop unit tests, a packaged EXE/API smoke test, and packaged LanceDB native
719
+ read/write tests before uploading the installer and SHA-256 to GitHub
720
+ Releases. The existing npm provenance publish workflow remains unchanged.
721
+
722
+ ## [4.0.4] - 2026-07-16
723
+
724
+ - Added a Settings-based Markdown knowledge health audit for every registered
725
+ personal and team knowledge base, with per-project file size, deterministic
726
+ fixes, structural errors, and semantic-review findings.
727
+ - Added safe batch or per-project optimization with retained backups under the
728
+ configured knowledge root, atomic writes, formatting repair, compact index
729
+ regeneration, and automatic LanceDB refresh for migrated projects.
730
+ - Reduced generated change indexes to the latest 40 entries with bounded cells
731
+ and generated-file markers; a real 125 KiB legacy index now rebuilds to about
732
+ 9 KiB without deleting its source change documents.
733
+ - Prevented background AI automation from writing `00-index.md`, injected
734
+ mandatory in-place-update hygiene rules even for custom prompts, and rebuilt
735
+ compatibility indexes after every successful automatic update.
736
+ - Preserved Team Knowledge Mode by de-duplicating shared physical KB paths
737
+ during maintenance while refreshing every aliased vector space.
738
+ - Expanded the complete regression suite to 48 passing test files.
739
+
740
+ ## [4.0.3] - 2026-07-15
741
+
742
+ - Added an embedding-model setup panel with one-click download and real
743
+ inference verification, configurable Hugging Face endpoint/mirror, local
744
+ model directory, offline mode, and copyable PowerShell environment-variable
745
+ examples.
746
+ - Stop a migration batch before changing any project when the shared embedding
747
+ model cannot load, instead of reporting the same model failure once for every
748
+ project.
749
+ - Surface migration failures through a prominent settings panel, a one-time
750
+ browser alert, detailed per-project errors, and direct retry actions.
751
+ - Persist model settings and verified download state while rejecting partial
752
+ cache files or verification results from a different model configuration.
753
+ - Expanded the complete regression suite to 46 passing test files.
754
+
755
+ ## [4.0.2] - 2026-07-15
756
+
757
+ - Store LanceDB, its maintenance metadata, and retained database backups under
758
+ `<configured knowledge root>/.project-knowledge/` instead of a fixed app-data
759
+ location.
760
+ - Automatically relocate v4.0.0/v4.0.1 databases on startup to the knowledge
761
+ root already selected in Settings.
762
+ - Safely relocate and verify the database before saving a changed knowledge
763
+ root, including cross-volume copies, target-conflict protection, and retained
764
+ backup path rebasing.
765
+ - Display the effective vector database path directly below the Knowledge Store
766
+ root setting.
767
+ - Expanded the complete regression suite to 45 passing test files, including
768
+ real LanceDB startup and live root-change relocation tests.
769
+
770
+ ## [4.0.1] - 2026-07-15
771
+
772
+ - Excluded generated `00-index.md` files from embedding and removed stale
773
+ derived-index rows while retaining the Markdown files for legacy and Team
774
+ Knowledge Mode compatibility.
775
+ - Replaced unbounded Tags and change lists in generated Markdown indexes with
776
+ compact, capped navigation metadata; all module links remain available.
777
+ - Stopped running LanceDB compaction after every commit. Maintenance now runs
778
+ only after bounded mutation thresholds and never rewrites the oversized
779
+ v4.0.0 full-text index in place.
780
+ - Added a compact full-text schema that indexes `chunk_text` once with Chinese
781
+ bigrams instead of storing and indexing a second full document copy.
782
+ - Added one-click, atomic database rebuilding with disk statistics, vector and
783
+ keyword verification, optional retained backup, and manual rollback.
784
+ - Added upgrade and regression coverage for old v4.0.0 databases; the complete
785
+ suite now contains 43 passing test files.
786
+
787
+ ## [4.0.0] - 2026-07-15
788
+
789
+ - Added a local LanceDB knowledge store containing original text, metadata,
790
+ and 512-dimensional `Xenova/bge-small-zh-v1.5` embeddings.
791
+ - Added incremental Markdown indexing with heading-aware chunks, content-hash
792
+ skips, stale-chunk deletion, Chinese n-gram/BM25 search, and hybrid RRF.
793
+ - Added scoped `search`, `get`, `ask`, and `history` HTTP/CLI tools that return
794
+ readable source text without exposing raw vectors.
795
+ - Added explicit, bidirectional, non-transitive related-project search scopes;
796
+ writes remain restricted to each project's primary space.
797
+ - Preserved Team Knowledge Mode: Git remains the portable Markdown transport,
798
+ stable team `kbId` values map to local spaces, and vectors stay local.
799
+ - Added resumable one-click migration for all legacy KBs with backups,
800
+ verification probes, per-project atomic cutover, retry, and rollback.
801
+ - Centralized Claude Code instructions in one user-relative file and added a
802
+ safe bulk refresh for all managed `CLAUDE.md` blocks independent of Hooks.
803
+ - Enforced development-time read-only KB access; post-commit automation owns
804
+ routine updates and re-indexes migrated projects after successful runs.
805
+ - Added configurable mirrored/offline embedding model locations through
806
+ `KB_EMBEDDING_REMOTE_HOST` and `KB_EMBEDDING_LOCAL_PATH`.
807
+ - Expanded the regression suite to 41 test files.
808
+
809
+ ## [2.4.7] - 2026-07-01
810
+
811
+ - Initial public Apache-2.0 release of the local-first `project-knowledge`
812
+ core.
813
+ - Includes the CLI, local dashboard, Git scanner, project registry,
814
+ knowledge-base workflow, AI profile support, prompt registry, templates,
815
+ and regression tests.
816
+ - Keeps runtime data, local project knowledge bases, API keys, generated AI
817
+ drafts, logs, and local maintenance notes outside the public repository.