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