@sanqianx/project-knowledge 4.6.1

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