@jagilber-org/index-server 1.26.5 → 1.27.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.
- package/CHANGELOG.md +166 -110
- package/dist/config/dashboardConfig.d.ts +11 -4
- package/dist/config/dashboardConfig.js +1 -4
- package/dist/dashboard/client/admin.html +26 -26
- package/dist/dashboard/server/AdminPanelConfig.d.ts +1 -2
- package/dist/dashboard/server/AdminPanelConfig.js +1 -2
- package/dist/dashboard/server/ApiRoutes.d.ts +5 -4
- package/dist/dashboard/server/ApiRoutes.js +40 -35
- package/dist/dashboard/server/routes/index.js +11 -9
- package/dist/lib/mcpStdioLogging.d.ts +12 -0
- package/dist/lib/mcpStdioLogging.js +39 -0
- package/dist/services/handlers.dashboardConfig.js +1 -2
- package/dist/services/indexContext.js +5 -6
- package/dist/services/logger.js +28 -13
- package/package.json +2 -1
- package/schemas/index-server.code-schema.json +7424 -1588
- package/schemas/manifest.json +3 -3
- package/scripts/setup-wizard.mjs +268 -16
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,50 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.27.0] - 2026-04-30
|
|
10
|
+
|
|
11
|
+
### Changed (BREAKING)
|
|
12
|
+
|
|
13
|
+
- **Rate limiting is now opt-in** and consolidated behind a single environment variable, `INDEX_SERVER_RATE_LIMIT` (#270).
|
|
14
|
+
- `INDEX_SERVER_RATE_LIMIT=0` (default, or unset) — rate limiting is **disabled**.
|
|
15
|
+
- `INDEX_SERVER_RATE_LIMIT=N` (positive integer) — enforces **N requests per minute** with a fixed 60-second window.
|
|
16
|
+
- Bulk import/export/backup/restore routes (`/api/admin/maintenance/normalize`, `/api/admin/maintenance/backup`, `/api/admin/maintenance/backups`, `/api/admin/maintenance/restore`, `/api/charts/export`, `/api/sqlite/backup`, `/api/sqlite/restore`, `/api/sqlite/export`) are **unconditionally exempt**, so dashboard bulk operations no longer trigger 429 responses.
|
|
17
|
+
- The 429 response body shape simplifies to `{ error, message, retryAfterSeconds, timestamp }`. The previous `tier` field (global vs. mutation) has been removed; there is now a single tier.
|
|
18
|
+
|
|
19
|
+
### Removed (BREAKING)
|
|
20
|
+
|
|
21
|
+
The following environment variables have been **removed with no back-compat aliases**. Replace them with `INDEX_SERVER_RATE_LIMIT`:
|
|
22
|
+
|
|
23
|
+
| Removed variable | Replacement |
|
|
24
|
+
|------------------|-------------|
|
|
25
|
+
| `INDEX_SERVER_DISABLE_RATE_LIMIT` | unset / `INDEX_SERVER_RATE_LIMIT=0` (default) |
|
|
26
|
+
| `INDEX_SERVER_DISABLE_USAGE_RATE_LIMIT` | unset / `INDEX_SERVER_RATE_LIMIT=0` (default) |
|
|
27
|
+
| `INDEX_SERVER_RATE_LIMIT_MAX` | `INDEX_SERVER_RATE_LIMIT=<N>` |
|
|
28
|
+
| `INDEX_SERVER_RATE_LIMIT_WINDOW_MS` | _removed; window is fixed at 60 seconds_ |
|
|
29
|
+
| `INDEX_SERVER_RATE_LIMIT_MUTATION_MAX` | _removed; single tier only_ |
|
|
30
|
+
|
|
31
|
+
Also removed: `DashboardHttpConfig.rateLimitEnabled / rateLimitWindowMs / rateLimitMax / rateLimitMutationMax` (replaced by `rateLimitPerMinute: number`); `ApiRoutesOptions.rateLimit` (replaced by `rateLimitPerMinute?: number`); `AdminConfig.serverSettings.rateLimit` reduced to `{ perMinute: number }`.
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- **Release**: `server.json` now ends with exactly one trailing LF. The v1.26.10 release was published with two trailing LFs (artefact of an earlier `Set-Content -NoNewline` pipeline), which caused the mirror PR to fail CI on the `end-of-file-fixer` framework hook.
|
|
38
|
+
- **Pre-commit (prevention)**: `scripts/pre-commit.mjs` now invokes the `pre-commit` framework on staged files for an explicit fast-hook allowlist (`end-of-file-fixer`, `trailing-whitespace`, `check-json`, `check-yaml`, `check-merge-conflict`, `detect-private-key`). Previously these framework hooks only ran in CI, so auto-fixable formatting issues silently passed local commits and broke PR builds. Slow security hooks (`gitleaks`, `semgrep`, `ggshield`, `detect-secrets`) deliberately remain in their own CI workflows / pre-push stage. Honours `SKIP_PRE_COMMIT_FRAMEWORK=1` and skips gracefully when `pre-commit` is not on PATH (#266).
|
|
39
|
+
|
|
40
|
+
## [1.26.10] - 2026-04-30
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
|
|
44
|
+
- **CI**: `.github/workflows/precommit.yml` checkout now uses `fetch-depth: 0` so `pre-commit run --from-ref BASE --to-ref HEAD` (diff-only mode introduced in v1.26.9) can resolve the PR base SHA. Previous default `fetch-depth: 1` caused `git diff BASE..HEAD` to exit 3 with `CalledProcessError` on every PR (#264).
|
|
45
|
+
- **Tests**: `skippedTestsAudit.spec.ts` env-check allowlist now recognizes platform identifiers (`isWindows`, `isLinux`, `isMac`, `isDarwin`, `process.platform`) so the new `ggshieldWithRetry.spec.ts` Windows-skip from v1.26.9 passes the audit (#264).
|
|
46
|
+
|
|
47
|
+
## [1.26.6] - 2026-04-28
|
|
48
|
+
|
|
49
|
+
### Fixed
|
|
50
|
+
|
|
51
|
+
- **Setup Wizard**: Resolve server entry point for `npx` installs so the wizard can locate and launch the server correctly.
|
|
52
|
+
|
|
9
53
|
## [1.26.1] - 2026-04-27
|
|
10
54
|
|
|
11
55
|
### Fixed
|
|
@@ -31,7 +75,7 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
31
75
|
|
|
32
76
|
- `health_check` now reports audit-log health counters while exposing only sanitized audit persistence error messages.
|
|
33
77
|
|
|
34
|
-
### Removed (breaking
|
|
78
|
+
### Removed (breaking — MCP feedback surface)
|
|
35
79
|
|
|
36
80
|
- **MCP feedback tools collapsed to `feedback_submit` only (#111)**. The following MCP tools have been removed with no deprecation alias and no compatibility shim: `feedback_list`, `feedback_get`, `feedback_update`, `feedback_delete`, `feedback_stats`, `feedback_health`, `feedback_dispatch`. Agents must use `feedback_submit` to file entries. Human-operator CRUD now lives behind dashboard authentication at `GET/POST /admin/feedback`, `GET/PATCH/DELETE /admin/feedback/:id`, sharing the same `feedback/feedback-entries.json` store as the MCP submit path. GitHub issue handoff from the dashboard is browser-side, human-triggered, token-free, and targets `jagilber-org/index-server`. Spec: `specs/111-feedback-mcp-rip-down.md`.
|
|
37
81
|
|
|
@@ -40,15 +84,15 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
40
84
|
### Added
|
|
41
85
|
|
|
42
86
|
- `IEmbeddingStore` interface with pluggable embedding storage backends.
|
|
43
|
-
- `SqliteEmbeddingStore`
|
|
44
|
-
- `JsonEmbeddingStore`
|
|
45
|
-
- `INDEX_SERVER_SQLITE_VEC_ENABLED` env var
|
|
46
|
-
- `INDEX_SERVER_SQLITE_VEC_PATH` env var
|
|
87
|
+
- `SqliteEmbeddingStore` — sqlite-vec backed embedding storage with native KNN search via `vec0` virtual table.
|
|
88
|
+
- `JsonEmbeddingStore` — file-based embedding storage adapter with brute-force cosine similarity search.
|
|
89
|
+
- `INDEX_SERVER_SQLITE_VEC_ENABLED` env var — opt-in toggle for sqlite-vec embedding storage (default: off).
|
|
90
|
+
- `INDEX_SERVER_SQLITE_VEC_PATH` env var — custom sqlite-vec native binary path override.
|
|
47
91
|
- `createEmbeddingStore()` factory function with automatic JSON fallback when sqlite-vec is unavailable.
|
|
48
|
-
- `resolveDevice()`
|
|
49
|
-
- `checkModelReadiness()`
|
|
50
|
-
- `checkNodeVersion()`
|
|
51
|
-
- Embedding migration support: `migrateJsonEmbeddingsToStore()` for JSON
|
|
92
|
+
- `resolveDevice()` — ONNX Runtime backend probe with injectable fallback chain (cuda → dml → cpu).
|
|
93
|
+
- `checkModelReadiness()` — startup check that warns when embedding model is missing with LOCAL_ONLY enabled.
|
|
94
|
+
- `checkNodeVersion()` — runtime version gate with clear error messages for feature-specific Node.js requirements.
|
|
95
|
+
- Embedding migration support: `migrateJsonEmbeddingsToStore()` for JSON → SQLite migration.
|
|
52
96
|
- 62 new embedding-related tests across 8 test files (contract, unit, integration, scenario).
|
|
53
97
|
- Documentation for all new env vars in configuration.md, mcp_configuration.md, vscode_mcp.md, deployment.md, docker_deployment.md, docker-compose.yml, runtime_config_mapping.md.
|
|
54
98
|
- Architecture docs updated with embedding store abstraction diagram and IEmbeddingStore interface reference.
|
|
@@ -57,14 +101,14 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
57
101
|
|
|
58
102
|
- Fixed dual-write stderr that caused duplicate log entries in VS Code Output panel.
|
|
59
103
|
- Fixed `.Count` on `$null` in `New-CleanRoomCopy.ps1` by wrapping collections in `@()`.
|
|
60
|
-
- Fixed tag-wiping in `Publish-ToMirror.ps1` and `publish-direct-to-remote.cjs`
|
|
104
|
+
- Fixed tag-wiping in `Publish-ToMirror.ps1` and `publish-direct-to-remote.cjs` — publish scripts no longer delete existing remote tags (template-repo#47).
|
|
61
105
|
|
|
62
106
|
### Changed
|
|
63
107
|
|
|
64
108
|
- Replaced 137 `console.*` calls with structured logger (`logError`/`logWarn`/`logInfo`/`logDebug`) across 27 server-side TypeScript files.
|
|
65
|
-
- Fixed severity misassignment in `promptReviewService.ts`
|
|
109
|
+
- Fixed severity misassignment in `promptReviewService.ts` — `logError` → `logWarn`/`logInfo` for non-error messages.
|
|
66
110
|
- Added embedding stress tests and `/api/embeddings/compute` route tests.
|
|
67
|
-
- Fixed `logInfo('')` empty-string calls in `performanceBaseline.ts`
|
|
111
|
+
- Fixed `logInfo('')` empty-string calls in `performanceBaseline.ts` — replaced with `logInfo('---')` separators.
|
|
68
112
|
- Fixed `factory.ts` formatting defect (multi-statement single line in sqlite case block).
|
|
69
113
|
- Docker deployment docs now note Alpine/musl limitation for sqlite-vec native binary.
|
|
70
114
|
|
|
@@ -92,8 +136,8 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
92
136
|
- Dashboard authentication via `INDEX_SERVER_ADMIN_API_KEY` with Bearer token, login modal, and sessionStorage-based session management.
|
|
93
137
|
- CRUD stress test scripts (`scripts/stress-test.ps1`) for load testing instruction operations.
|
|
94
138
|
- `dashboardAdminAuth` middleware now protects dashboard mutation routes (POST/PUT/DELETE instructions).
|
|
95
|
-
- Integration tests for dashboard auth middleware (`dashboardAuth.spec.ts`
|
|
96
|
-
- Playwright E2E tests for dashboard auth flow (`dashboard-auth.spec.ts`
|
|
139
|
+
- Integration tests for dashboard auth middleware (`dashboardAuth.spec.ts` — 33 tests).
|
|
140
|
+
- Playwright E2E tests for dashboard auth flow (`dashboard-auth.spec.ts` — 10 tests).
|
|
97
141
|
- `npm audit` step in build pipeline and `prepack` script.
|
|
98
142
|
- `ensureLoadedMiddleware` to reduce redundant `ensureLoaded()` calls in dashboard routes.
|
|
99
143
|
- Comprehensive stress testing documentation (`docs/stress-testing.md`).
|
|
@@ -106,7 +150,7 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
106
150
|
- All instruction handlers now use `IInstructionStore` interface instead of direct disk I/O, enabling pluggable storage backends.
|
|
107
151
|
- Auto-migration from JSON to SQLite on startup when `INDEX_SERVER_STORAGE_BACKEND=sqlite`.
|
|
108
152
|
- Dashboard CRUD routes now properly invalidate cache after mutations, matching MCP handler patterns.
|
|
109
|
-
- README replaced with streamlined v2 (216 lines vs 449 original) focused on install
|
|
153
|
+
- README replaced with streamlined v2 (216 lines vs 449 original) focused on install → quickstart → copilot integration.
|
|
110
154
|
- Bootstrapper instruction (000-bootstrapper) rewritten to v3 with search-first workflow and copilot instructions setup.
|
|
111
155
|
- Stress test parallel mode refactored from `Start-Job` to `ForEach-Object -Parallel` (PS 7+).
|
|
112
156
|
- `.github/copilot-instructions.md` updated with search-before-add gate and fixed stale tool names.
|
|
@@ -119,7 +163,7 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
119
163
|
|
|
120
164
|
### Deprecated
|
|
121
165
|
|
|
122
|
-
- `INDEX_SERVER_DISABLE_USAGE_RATE_LIMIT`
|
|
166
|
+
- `INDEX_SERVER_DISABLE_USAGE_RATE_LIMIT` — replaced by `INDEX_SERVER_DISABLE_RATE_LIMIT` which covers all rate limiting.
|
|
123
167
|
|
|
124
168
|
### Removed
|
|
125
169
|
|
|
@@ -163,20 +207,20 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
163
207
|
|
|
164
208
|
### Changed
|
|
165
209
|
|
|
166
|
-
- **Environment variable consolidation**
|
|
167
|
-
- **Standardized env var prefixes**
|
|
210
|
+
- **Environment variable consolidation** — All direct `process.env` reads in runtime source files have been migrated to the centralized `getRuntimeConfig()` config layer. 12 files consolidated: `handlers.feedback.ts`, `autoBackup.ts`, `instructions.dispatcher.ts`, `sqlite.routes.ts`, `admin.routes.ts`, `seedBootstrap.ts`, `sdkServer.ts`, `BufferRing.ts`, `SessionPersistenceManager.ts`, `manifestManager.ts`, `registry.ts`, `transportFactory.ts`.
|
|
211
|
+
- **Standardized env var prefixes** — Unprefixed environment variables have been replaced with `INDEX_SERVER_*` equivalents. Old unprefixed names are no longer supported.
|
|
168
212
|
|
|
169
213
|
### Environment Variables
|
|
170
214
|
|
|
171
|
-
- `INDEX_SERVER_BUFFER_RING_APPEND`
|
|
172
|
-
- `INDEX_SERVER_BUFFER_RING_PRELOAD`
|
|
173
|
-
- `INDEX_SERVER_GRAPH_INCLUDE_PRIMARY_EDGES`
|
|
174
|
-
- `INDEX_SERVER_GRAPH_LARGE_CATEGORY_CAP`
|
|
175
|
-
- `INDEX_SERVER_AUDIT_LOG`
|
|
176
|
-
- `INDEX_SERVER_COVERAGE_FAST`
|
|
177
|
-
- `INDEX_SERVER_COVERAGE_HARD_MIN`
|
|
178
|
-
- `INDEX_SERVER_COVERAGE_TARGET`
|
|
179
|
-
- `INDEX_SERVER_COVERAGE_STRICT`
|
|
215
|
+
- `INDEX_SERVER_BUFFER_RING_APPEND` — replaces `BUFFER_RING_APPEND` (default: `1`)
|
|
216
|
+
- `INDEX_SERVER_BUFFER_RING_PRELOAD` — replaces `BUFFER_RING_APPEND_PRELOAD` (default: `0`)
|
|
217
|
+
- `INDEX_SERVER_GRAPH_INCLUDE_PRIMARY_EDGES` — replaces `GRAPH_INCLUDE_PRIMARY_EDGES` (default: `1`)
|
|
218
|
+
- `INDEX_SERVER_GRAPH_LARGE_CATEGORY_CAP` — replaces `GRAPH_LARGE_CATEGORY_CAP` (default: `150`)
|
|
219
|
+
- `INDEX_SERVER_AUDIT_LOG` — replaces `INSTRUCTIONS_AUDIT_LOG` (default: enabled, `logs/audit/`)
|
|
220
|
+
- `INDEX_SERVER_COVERAGE_FAST` — replaces `FAST_COVERAGE` (default: `0`)
|
|
221
|
+
- `INDEX_SERVER_COVERAGE_HARD_MIN` — replaces `COVERAGE_HARD_MIN`
|
|
222
|
+
- `INDEX_SERVER_COVERAGE_TARGET` — replaces `COVERAGE_TARGET`
|
|
223
|
+
- `INDEX_SERVER_COVERAGE_STRICT` — replaces `COVERAGE_STRICT` (default: `0`)
|
|
180
224
|
|
|
181
225
|
### Fixed
|
|
182
226
|
|
|
@@ -223,14 +267,14 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
223
267
|
|
|
224
268
|
### Fixed
|
|
225
269
|
|
|
226
|
-
- Addressed P1 scan findings
|
|
270
|
+
- Addressed P1 scan findings — path-injection and regex-injection hardening.
|
|
227
271
|
|
|
228
272
|
## [1.18.2] - 2026-04-14 (retroactively documented)
|
|
229
273
|
|
|
230
274
|
### Fixed
|
|
231
275
|
|
|
232
|
-
- **Path traversal** in instruction routes
|
|
233
|
-
- **XSS** in admin dashboard
|
|
276
|
+
- **Path traversal** in instruction routes — validated and sanitized file path parameters.
|
|
277
|
+
- **XSS** in admin dashboard — escaped user-supplied content in DOM insertion paths.
|
|
234
278
|
- Added scan reconciliation report documenting resolved findings.
|
|
235
279
|
|
|
236
280
|
## [1.18.1] - 2026-04-14 (retroactively documented)
|
|
@@ -249,36 +293,36 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
249
293
|
|
|
250
294
|
### Added
|
|
251
295
|
|
|
252
|
-
- **SQLite storage backend** (
|
|
253
|
-
- `IInstructionStore` interface
|
|
254
|
-
- `JsonFileStore`
|
|
255
|
-
- `SqliteStore`
|
|
256
|
-
- `SqliteMessageStore`
|
|
257
|
-
- `SqliteUsageStore`
|
|
258
|
-
- Migration engine
|
|
296
|
+
- **SQLite storage backend** (⚠️ EXPERIMENTAL — limited testing performed): `INDEX_SERVER_STORAGE_BACKEND=sqlite` enables SQLite-backed instruction storage using Node.js built-in `node:sqlite` (zero third-party dependencies). Not recommended for production use.
|
|
297
|
+
- `IInstructionStore` interface — storage abstraction layer for backend-agnostic instruction persistence
|
|
298
|
+
- `JsonFileStore` — existing JSON-file-per-instruction behavior wrapped in the interface
|
|
299
|
+
- `SqliteStore` — full SQLite implementation with WAL mode, indexes, and FTS5 full-text search
|
|
300
|
+
- `SqliteMessageStore` — message persistence in SQLite with channel/sender/thread queries
|
|
301
|
+
- `SqliteUsageStore` — usage tracking in SQLite with atomic increment
|
|
302
|
+
- Migration engine — bidirectional JSON ↔ SQLite migration (lossless round-trip)
|
|
259
303
|
- FTS5 search with BM25 ranking (title 10x, body 5x weight)
|
|
260
304
|
- SQLite backup support in autoBackup (copies .db + WAL/SHM files)
|
|
261
305
|
- Factory pattern with feature flag: `createStore()` selects backend from config
|
|
262
306
|
- 115+ storage-specific tests (contract, migration, FTS5, messaging, usage)
|
|
263
307
|
- Governance hash identical across both backends
|
|
264
308
|
- **NDJSON structured logging**: All server log output now uses strict NDJSON (newline-delimited JSON) format. Each log line is a JSON object with `ts`, `level`, `msg`, and optional `detail`, `tool`, `ms`, `pid`, `port`, `correlationId` fields. V8 `Error.captureStackTrace` auto-populates stack traces on WARN/ERROR. Module-prefixed messages (`[module]`) support source-file heatmap matching.
|
|
265
|
-
- **Markdown preview in instruction editor**: Dashboard instruction editor includes a
|
|
309
|
+
- **Markdown preview in instruction editor**: Dashboard instruction editor includes a 📖 Preview button that renders the instruction `body` as GitHub Flavored Markdown (via `marked`). Preview auto-updates as you type.
|
|
266
310
|
- **Zip-based backups**: All backup operations (auto-backup, bulk-delete, admin panel) now produce `.zip` archives via `adm-zip`. SQLite backend backups include WAL/SHM files for full state preservation. Retention pruning removes oldest snapshots beyond `INDEX_SERVER_AUTO_BACKUP_MAX_COUNT`.
|
|
267
311
|
- **Offset/limit pagination** for `index_dispatch` list action.
|
|
268
312
|
|
|
269
313
|
### Changed
|
|
270
314
|
|
|
271
|
-
- **Pre-push slow test gate removed**
|
|
315
|
+
- **Pre-push slow test gate removed** — slow tests now run exclusively in CI workflows.
|
|
272
316
|
- Security headers added to dashboard script routes.
|
|
273
317
|
- Large modules split into focused single-responsibility files (CQ-1 compliance).
|
|
274
318
|
- 66 ESLint unused-variable warnings resolved.
|
|
275
319
|
|
|
276
|
-
### Environment Variables (
|
|
320
|
+
### Environment Variables (⚠️ SQLite options are experimental)
|
|
277
321
|
|
|
278
|
-
- `INDEX_SERVER_STORAGE_BACKEND`
|
|
279
|
-
- `INDEX_SERVER_SQLITE_PATH`
|
|
280
|
-
- `INDEX_SERVER_SQLITE_WAL`
|
|
281
|
-
- `INDEX_SERVER_SQLITE_MIGRATE_ON_START`
|
|
322
|
+
- `INDEX_SERVER_STORAGE_BACKEND` — `json` (default) or `sqlite` (experimental — not recommended for production)
|
|
323
|
+
- `INDEX_SERVER_SQLITE_PATH` — SQLite database path (default: `data/index.db`)
|
|
324
|
+
- `INDEX_SERVER_SQLITE_WAL` — Enable WAL mode (default: `true`)
|
|
325
|
+
- `INDEX_SERVER_SQLITE_MIGRATE_ON_START` — Auto-migrate JSON → SQLite on first start (default: `true`)
|
|
282
326
|
|
|
283
327
|
## [1.16.1] - 2026-04-01
|
|
284
328
|
|
|
@@ -403,13 +447,13 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
403
447
|
|
|
404
448
|
### Added
|
|
405
449
|
|
|
406
|
-
- **Dashboard configuration panel redesign**: Category-grouped flags with collapsible sections, live search/filter, documentation links (
|
|
407
|
-
- **Constitution rule A-7**: Canonical seeds in `seedBootstrap.ts` must contain only generalized, public-safe content
|
|
450
|
+
- **Dashboard configuration panel redesign**: Category-grouped flags with collapsible sections, live search/filter, documentation links (📖 icons), 15-second auto-refresh, stability color coding, and full-height layout replacing the constrained 480px scroll area.
|
|
451
|
+
- **Constitution rule A-7**: Canonical seeds in `seedBootstrap.ts` must contain only generalized, public-safe content — no environment-specific or org-specific data.
|
|
408
452
|
|
|
409
453
|
### Changed
|
|
410
454
|
|
|
411
455
|
- **Auto-backup default**: `autoBackupEnabled` now defaults to `false` (was `true`). Set `INDEX_SERVER_AUTO_BACKUP=1` to re-enable.
|
|
412
|
-
- **Flag registry sorting**: `/api/admin/config` flags are now sorted by category
|
|
456
|
+
- **Flag registry sorting**: `/api/admin/config` flags are now sorted by category → name for consistent ordering.
|
|
413
457
|
- **Flag metadata**: Each flag now includes a `docAnchor` slug and the response includes `lastRefreshed` timestamp.
|
|
414
458
|
|
|
415
459
|
## [1.10.0] - 2026-03-02
|
|
@@ -420,8 +464,8 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
420
464
|
- **Embedding cache model awareness**: Embedding cache now stores `modelName` alongside `catalogHash`, automatically invalidating cached embeddings when the semantic model is changed (e.g., switching from `all-MiniLM-L6-v2` to `bge-base-en-v1.5`). Prevents dimension mismatch errors.
|
|
421
465
|
- **Zod schema for `index_search`**: Added `zInstructionsSearch` to `toolRegistry.zod.ts` with all parameters (`keywords`, `mode`, `limit`, `includeCategories`, `caseSensitive`, `contentType`) matching the JSON Schema definition.
|
|
422
466
|
- **Documentation**: Added docs index, MCP configuration guide, project PRD, prompt optimization guide, search benchmark results, credential centralization runbook.
|
|
423
|
-
- **Benchmark script**: `scripts/benchmark-search.ps1`
|
|
424
|
-
- **Tools REST routes**: `src/dashboard/server/routes/tools.routes.ts`
|
|
467
|
+
- **Benchmark script**: `scripts/benchmark-search.ps1` — stress-tests keyword/regex/semantic search modes and generates markdown + Mermaid report.
|
|
468
|
+
- **Tools REST routes**: `src/dashboard/server/routes/tools.routes.ts` — REST bridge for MCP tool handlers.
|
|
425
469
|
|
|
426
470
|
### Fixed
|
|
427
471
|
|
|
@@ -436,13 +480,13 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
436
480
|
### Added
|
|
437
481
|
|
|
438
482
|
- **Search modes**: `index_search` now supports `mode` parameter with three values:
|
|
439
|
-
- `keyword` (default)
|
|
440
|
-
- `regex`
|
|
441
|
-
- `semantic`
|
|
483
|
+
- `keyword` (default) — substring matching with auto-tokenization
|
|
484
|
+
- `regex` — pattern matching (e.g., `"deploy|release"`, `"Type[Ss]cript"`) with ReDoS protection (200-char limit)
|
|
485
|
+
- `semantic` — embedding-based cosine similarity search with lazy-loaded HuggingFace model, disk-cached embeddings, and graceful degradation to keyword mode on failure. Requires `INDEX_SERVER_SEMANTIC_ENABLED=1`.
|
|
442
486
|
- **Embedding service**: New `embeddingService.ts` with cosine similarity, disk cache, staleness detection, and lazy model loading (zero startup impact).
|
|
443
487
|
- **Semantic configuration**: New env vars `INDEX_SERVER_SEMANTIC_ENABLED`, `INDEX_SERVER_SEMANTIC_MODEL`, `INDEX_SERVER_SEMANTIC_CACHE_DIR`, `INDEX_SERVER_EMBEDDING_PATH`, `INDEX_SERVER_SEMANTIC_DEVICE`, `INDEX_SERVER_SEMANTIC_LOCAL_ONLY` via `SemanticConfig` in `runtimeConfig.ts`.
|
|
444
|
-
- `INDEX_SERVER_SEMANTIC_DEVICE`
|
|
445
|
-
- `INDEX_SERVER_SEMANTIC_LOCAL_ONLY`
|
|
488
|
+
- `INDEX_SERVER_SEMANTIC_DEVICE` — Run embeddings on GPU: `cuda` (NVIDIA) or `dml` (DirectML/Windows). Default: `cpu`.
|
|
489
|
+
- `INDEX_SERVER_SEMANTIC_LOCAL_ONLY` — Block remote model downloads when set to `1`. Model must already be cached.
|
|
446
490
|
- **Search highlighting**: Match highlighting in both global search results and local instruction list filter using `<mark>` tags with gold background.
|
|
447
491
|
- **Backup file export/import**: "Backup to File" and "Restore from File" buttons in Maintenance tab with file dialog support.
|
|
448
492
|
- **Server export/import endpoints**: `GET /api/admin/maintenance/backup/:id/export` and `POST /api/admin/maintenance/backup/import` for backup bundle transfer.
|
|
@@ -450,7 +494,7 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
450
494
|
|
|
451
495
|
### Fixed
|
|
452
496
|
|
|
453
|
-
- **Global search URL mismatch**: Client was calling `/api/instructions/search` but server route is `/api/index_search`
|
|
497
|
+
- **Global search URL mismatch**: Client was calling `/api/instructions/search` but server route is `/api/index_search` — global search always returned "Not found".
|
|
454
498
|
- **Cache-busting**: Now hashes all JS + CSS + HTML files (was CSS-only), ensuring JS changes are picked up by browsers.
|
|
455
499
|
- **Instance badge**: Shows green when count > 0 (was > 1).
|
|
456
500
|
- **Instance dropdown positioning**: Aligned left instead of centered.
|
|
@@ -487,11 +531,11 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
487
531
|
- **Pre-mutation auto-backup**: When a forced bulk delete exceeds the threshold and `INDEX_SERVER_BACKUP_BEFORE_BULK_DELETE` is enabled (default), all instruction files are snapshotted to `backups/instructions-{timestamp}/` before deletion proceeds. Backup failure aborts the entire operation.
|
|
488
532
|
- **Dry-run mode**: `index_remove` accepts `dryRun: true` to preview which IDs would be deleted without modifying disk.
|
|
489
533
|
- **New env vars**: `INDEX_SERVER_MAX_BULK_DELETE` (number, default 5), `INDEX_SERVER_BACKUP_BEFORE_BULK_DELETE` (boolean, default true).
|
|
490
|
-
- **Tests**: `bulkDeleteGuard.spec.ts`
|
|
534
|
+
- **Tests**: `bulkDeleteGuard.spec.ts` — 6 unit tests covering threshold enforcement, force override, dry-run, and auto-backup behavior.
|
|
491
535
|
|
|
492
536
|
### Security
|
|
493
537
|
|
|
494
|
-
- Mitigates accidental or automated mass instruction deletion
|
|
538
|
+
- Mitigates accidental or automated mass instruction deletion — the incident that wiped production catalog is no longer possible without explicit `force` acknowledgement and automatic backup.
|
|
495
539
|
|
|
496
540
|
## [1.8.1] - 2026-02-24
|
|
497
541
|
|
|
@@ -505,7 +549,7 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
505
549
|
|
|
506
550
|
- **Constitution Q-7**: Schema-contract tests required for dispatcher action additions.
|
|
507
551
|
- **Constitution Q-8**: Agent-perspective tests required for mutation dispatch actions.
|
|
508
|
-
- **Test file**: `dispatcherAddFlatParams.spec.ts`
|
|
552
|
+
- **Test file**: `dispatcherAddFlatParams.spec.ts` — 11 contract + agent-perspective tests covering all dispatch mutation actions.
|
|
509
553
|
|
|
510
554
|
## [1.8.0] - 2026-02-24
|
|
511
555
|
|
|
@@ -543,26 +587,26 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
543
587
|
### Changed
|
|
544
588
|
|
|
545
589
|
- **Schema version bumped to v4**: Instruction schema now accepts `sourceWorkspace` and `createdByAgent` as optional root-level properties. These fields are set by `promote_from_repo` to track provenance of promoted entries. Previously, entries with these fields were rejected by `additionalProperties: false` validation (caused 10 skipped entries in production catalogs).
|
|
546
|
-
- **Migration v3
|
|
590
|
+
- **Migration v3→v4**: Automatic no-op migration — fields are optional so no data transforms needed; schemaVersion stamp is updated on load.
|
|
547
591
|
|
|
548
592
|
## [1.6.7] - 2026-02-16
|
|
549
593
|
|
|
550
594
|
### Added
|
|
551
595
|
|
|
552
596
|
- **SpecKit bootstrap**: Full spec-driven development scaffolding for the repo.
|
|
553
|
-
- `constitution.json`
|
|
554
|
-
- `.specify/` folder
|
|
555
|
-
- `.github/copilot-instructions.md`
|
|
556
|
-
- `.github/agents/`
|
|
557
|
-
- `.github/prompts/`
|
|
558
|
-
- `sync-constitution.cjs`
|
|
559
|
-
- `promotion-map.json`
|
|
597
|
+
- `constitution.json` — Machine-checkable quality gates (quality, security, architecture, governance articles)
|
|
598
|
+
- `.specify/` folder — `memory/constitution.md`, `templates/` (spec, plan, tasks), `config/promotion-map.json`, `commands/`
|
|
599
|
+
- `.github/copilot-instructions.md` — Canonical repo instructions with MCP integration section
|
|
600
|
+
- `.github/agents/` — 5 SpecKit agent slash commands (constitution, specify, plan, tasks, implement)
|
|
601
|
+
- `.github/prompts/` — 5 matching reusable prompt files
|
|
602
|
+
- `sync-constitution.cjs` — Generates derived constitution.md from constitution.json (supports `--check` mode)
|
|
603
|
+
- `promotion-map.json` — Maps existing docs (ARCHITECTURE, PRD, TOOLS, CONTRIBUTING, specs) for catalog promotion
|
|
560
604
|
|
|
561
605
|
## [1.6.6] - 2026-02-16
|
|
562
606
|
|
|
563
607
|
### Added
|
|
564
608
|
|
|
565
|
-
- **`promote_from_repo` tool**: New mutation tool that scans a local Git repository and promotes its knowledge content (constitutions, docs, instructions, specs) into the instruction catalog. Supports `.specify/config/promotion-map.json` for explicit source
|
|
609
|
+
- **`promote_from_repo` tool**: New mutation tool that scans a local Git repository and promotes its knowledge content (constitutions, docs, instructions, specs) into the instruction catalog. Supports `.specify/config/promotion-map.json` for explicit source→instruction mappings and automatic `instructions/*.json` discovery. Features SHA-256 content hash dedup, scope filtering, dry-run mode, force re-promote, and custom repoId override. Replaces per-repo promotion logic with a centralized server-side tool.
|
|
566
610
|
- **15 unit tests** for `promote_from_repo` covering promotion-map, instruction file scanning, scope filtering, content hash dedup, force flag, dry-run, repoId override, error handling, and malformed file resilience.
|
|
567
611
|
- **TOOLS.md** documentation for `promote_from_repo` tool.
|
|
568
612
|
|
|
@@ -570,7 +614,7 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
570
614
|
|
|
571
615
|
### Changed
|
|
572
616
|
|
|
573
|
-
- **Tool name separator**: Renamed all 44 MCP tool names from slash (`/`) to underscore (`_`) format (e.g., `health/check`
|
|
617
|
+
- **Tool name separator**: Renamed all 44 MCP tool names from slash (`/`) to underscore (`_`) format (e.g., `health/check` → `health_check`, `instructions/dispatch` → `index_dispatch`). Underscore naming improves compatibility across MCP clients and avoids path-separator ambiguity.
|
|
574
618
|
- **Dispatch schema**: Added `listScoped` and `getEnhanced` to the `index_dispatch` action enum so these actions are no longer blocked by schema validation.
|
|
575
619
|
|
|
576
620
|
### Fixed
|
|
@@ -585,7 +629,7 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
585
629
|
|
|
586
630
|
### Changed (Catalog Configuration)
|
|
587
631
|
|
|
588
|
-
- **Configurable body max length**: Added `INDEX_SERVER_BODY_MAX_LENGTH` environment variable (default: 20000, range: 1000
|
|
632
|
+
- **Configurable body max length**: Added `INDEX_SERVER_BODY_MAX_LENGTH` environment variable (default: 20000, range: 1000–1000000) to control the maximum body character length for instruction entries. The JSON schema ceiling is 1MB; the runtime config controls effective enforcement.
|
|
589
633
|
- **Enhanced salvage for missing fields**: Missing `audience` now defaults to `all` (salvage counter: `audienceMissing`), missing `requirement` defaults to `recommended` (counter: `requirementMissing`). Previously, entries without these fields were hard-rejected.
|
|
590
634
|
- **Body truncation always applies**: Removed the 24K ceiling on body truncation salvage. Bodies exceeding the configured limit are always truncated, regardless of how far over they are.
|
|
591
635
|
- **Near-limit warning is relative**: The `body:near-limit` soft warning now triggers at 90% of the configured body max length instead of a hardcoded 18K threshold.
|
|
@@ -605,8 +649,8 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
605
649
|
### Fixed (MCP Protocol Compliance)
|
|
606
650
|
|
|
607
651
|
- **CRITICAL:** Eliminated stdout contamination violating MCP stdio transport specification. Server was writing diagnostic messages to stdout, contaminating the JSON-RPC message stream and causing PowerShell MCP client connection failures.
|
|
608
|
-
- Changed `MetricsCollector.ts`: 4 instances of `console.log()`
|
|
609
|
-
- Changed `memoryMonitor.ts`: 9 instances of `console.log()`
|
|
652
|
+
- Changed `MetricsCollector.ts`: 4 instances of `console.log()` → `console.error()` (storage mode, clear messages)
|
|
653
|
+
- Changed `memoryMonitor.ts`: 9 instances of `console.log()` → `console.error()` (monitoring lifecycle, snapshots, utilities)
|
|
610
654
|
- Fixed `sdkServer.ts`: Corrected literal `\n` escape sequences that broke TypeScript compilation
|
|
611
655
|
- Impact: stdout now contains ONLY JSON-RPC messages (MCP spec compliant), stderr contains all diagnostic/debug logging
|
|
612
656
|
- Fixes: PowerShell MCP client timeout issue caused by non-JSON lines in stdout stream
|
|
@@ -645,7 +689,7 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
645
689
|
|
|
646
690
|
### Added (test infrastructure)
|
|
647
691
|
|
|
648
|
-
- Introduced shared dashboard readiness helper `waitForDashboard.ts` eliminating ad
|
|
692
|
+
- Introduced shared dashboard readiness helper `waitForDashboard.ts` eliminating ad‑hoc polling loops across graph-related tests.
|
|
649
693
|
|
|
650
694
|
### Fixed (flaky tests)
|
|
651
695
|
|
|
@@ -663,9 +707,9 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
663
707
|
|
|
664
708
|
### Future (1.6.2 follow-up)
|
|
665
709
|
|
|
666
|
-
- Schedule removal of legacy mutation flag references in help text and admin dashboard after confirming negligible usage (target
|
|
710
|
+
- Schedule removal of legacy mutation flag references in help text and admin dashboard after confirming negligible usage (target ≥90% replacement) and possibly introduce `INDEX_SERVER_CONFIG_STRICT` to enforce consolidated variable set.
|
|
667
711
|
|
|
668
|
-
### Configuration Consolidation (Phases 1
|
|
712
|
+
### Configuration Consolidation (Phases 1–4)
|
|
669
713
|
|
|
670
714
|
- Added unified runtime configuration loader `src/config/runtimeConfig.ts` centralizing parsing & normalization of environment variables.
|
|
671
715
|
- Introduced consolidated variables: `INDEX_SERVER_TIMING_JSON`, `INDEX_SERVER_TEST_MODE`, `INDEX_SERVER_LOG_LEVEL`, `INDEX_SERVER_MUTATION`, `INDEX_SERVER_TRACE` (token set), with future placeholders (`INDEX_SERVER_BUFFER_RING`).
|
|
@@ -673,7 +717,7 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
673
717
|
- Pilot migration: `manifestEdgeCases.spec.ts` refactored to consume timing via `cfg.timing()` accessor; remaining high-churn tests scheduled for follow-up phases.
|
|
674
718
|
- Documentation updates: README consolidation section, deployment matrix extended with migration notes, contributing guidelines prohibit new ad-hoc env vars, configuration guide cross-referenced.
|
|
675
719
|
- Coverage gating integrated with loader (`runtimeConfig.coverage`) maintaining dual-threshold (`COVERAGE_HARD_MIN`, `COVERAGE_TARGET`).
|
|
676
|
-
- Established future Phase 5 plan: optional strict mode (`INDEX_SERVER_CONFIG_STRICT=1`) to reject unmapped legacy flags once adoption threshold met (target
|
|
720
|
+
- Established future Phase 5 plan: optional strict mode (`INDEX_SERVER_CONFIG_STRICT=1`) to reject unmapped legacy flags once adoption threshold met (target ≥70% migrated usages).
|
|
677
721
|
|
|
678
722
|
|
|
679
723
|
### Added (dispatcher capabilities & batch)
|
|
@@ -682,8 +726,8 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
682
726
|
|
|
683
727
|
- Added `docs/MANIFEST.md` detailing catalog manifest lifecycle, invariants, drift categories, opportunistic materialization, and fastload roadmap.
|
|
684
728
|
- Updated `README.md` with Manifest & Opportunistic Materialization section; added MANIFEST doc links in primary doc suite lists.
|
|
685
|
-
- Updated `PROJECT_PRD.md` to version 1.4.2 including formal Manifest & Materialization requirements (MF1
|
|
686
|
-
- Updated `ARCHITECTURE.md` (version banner 1.4.1
|
|
729
|
+
- Updated `PROJECT_PRD.md` to version 1.4.2 including formal Manifest & Materialization requirements (MF1–MF7) and ratified schema‑aided failure contract.
|
|
730
|
+
- Updated `ARCHITECTURE.md` (version banner 1.4.1 → context now aligned with opportunistic materialization & manifest helper) – cross-linked manifest semantics.
|
|
687
731
|
- Updated `DOCS-INDEX.md` adding Manifest category; refreshed recent updates section for 1.4.x runtime changes.
|
|
688
732
|
- Removed deprecated PRD stub files (`docs/PRD.md`, `docs/PROJECT-PRD.md`) to eliminate duplication; canonical remains `docs/PROJECT_PRD.md`.
|
|
689
733
|
- Ensured CHANGELOG references preserved and future fastload placeholder documented (no runtime effect yet).
|
|
@@ -714,28 +758,28 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
714
758
|
|
|
715
759
|
### Added (manifest observability & helper)
|
|
716
760
|
|
|
717
|
-
- Centralized manifest update helper `attemptManifestUpdate()` consolidates all post
|
|
761
|
+
- Centralized manifest update helper `attemptManifestUpdate()` consolidates all post‑mutation catalog manifest writes (future hook point for batching/debounce without changing call sites).
|
|
718
762
|
- Structured manifest write log lines: `[manifest] wrote catalog-manifest.json count=<entryCount> ms=<duration>` emitted only on successful writes.
|
|
719
763
|
- New counters:
|
|
720
|
-
- `manifest:write`
|
|
721
|
-
- `manifest:writeFailed`
|
|
722
|
-
- `manifest:hookError`
|
|
764
|
+
- `manifest:write` – incremented on each successful manifest write
|
|
765
|
+
- `manifest:writeFailed` – incremented when an exception occurs during write
|
|
766
|
+
- `manifest:hookError` – incremented when update hook invocation throws
|
|
723
767
|
- Environment flag `INDEX_SERVER_MANIFEST_WRITE=0` disables manifest persistence (read-only / diagnostic mode) while allowing normal runtime behavior.
|
|
724
768
|
|
|
725
769
|
### Fixed (visibility flake)
|
|
726
770
|
|
|
727
|
-
- Stabilized intermittent add
|
|
771
|
+
- Stabilized intermittent add → immediate list/get visibility timing by refining late materialization path and adding targeted retry logic in `addVisibilityInvariant.spec.ts` (single bounded retry, preserves genuine failure signal).
|
|
728
772
|
|
|
729
773
|
### Tests (edge coverage)
|
|
730
774
|
|
|
731
775
|
- New `manifestEdgeCases.spec.ts` validating:
|
|
732
776
|
- Disabled write mode respects `INDEX_SERVER_MANIFEST_WRITE=0` (no file created/modified)
|
|
733
|
-
- Corrupted on-disk manifest auto
|
|
777
|
+
- Corrupted on-disk manifest auto‑repair after subsequent catalog mutation
|
|
734
778
|
- Visibility invariant test enhanced with diagnostic trace & retry instrumentation (now consistently green).
|
|
735
779
|
|
|
736
780
|
### Documentation
|
|
737
781
|
|
|
738
|
-
- README: Added Manifest Observability section, documented new counters & `INDEX_SERVER_MANIFEST_WRITE` flag plus reserved `INDEX_SERVER_MANIFEST_FASTLOAD` (planned fast load optimization
|
|
782
|
+
- README: Added Manifest Observability section, documented new counters & `INDEX_SERVER_MANIFEST_WRITE` flag plus reserved `INDEX_SERVER_MANIFEST_FASTLOAD` (planned fast load optimization – inactive placeholder).
|
|
739
783
|
- CONFIGURATION guide: Added Manifest Configuration section & environment variable table entries.
|
|
740
784
|
- CHANGELOG: This entry formalizes helper + observability release.
|
|
741
785
|
|
|
@@ -748,28 +792,28 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
748
792
|
|
|
749
793
|
- No instruction schema or tool interface changes.
|
|
750
794
|
- Purely additive logging & metrics; safe transparent upgrade for all clients.
|
|
751
|
-
- When `INDEX_SERVER_MANIFEST_WRITE=0`, runtime skips writes silently (counter increments suppressed)
|
|
795
|
+
- When `INDEX_SERVER_MANIFEST_WRITE=0`, runtime skips writes silently (counter increments suppressed) – intended only for diagnostics / perf profiling.
|
|
752
796
|
|
|
753
797
|
### Upgrade Guidance (1.4.0)
|
|
754
798
|
|
|
755
|
-
- Pull & rebuild
|
|
799
|
+
- Pull & rebuild – no client changes required.
|
|
756
800
|
- To disable manifest file writes for diagnostics: set `INDEX_SERVER_MANIFEST_WRITE=0` (do not use in production if you rely on external manifest consumers).
|
|
757
801
|
- Monitoring systems may now scrape manifest counters alongside existing metrics buckets.
|
|
758
802
|
|
|
759
|
-
### Future (not included
|
|
803
|
+
### Future (not included – 1.4.0 roadmap)
|
|
760
804
|
|
|
761
|
-
- Planned `INDEX_SERVER_MANIFEST_FASTLOAD` optimization mode (hash/mtime short
|
|
805
|
+
- Planned `INDEX_SERVER_MANIFEST_FASTLOAD` optimization mode (hash/mtime short‑circuit) reserved; currently no effect (documented as placeholder only).
|
|
762
806
|
|
|
763
807
|
## [1.4.1] - 2025-09-14
|
|
764
808
|
|
|
765
809
|
### Fixed (dashboard health accuracy)
|
|
766
810
|
|
|
767
811
|
- Resolved persistent false positive "Statistics unavailable" issue: local `statsAvailable` shadowed global flag so health card always injected the warning despite successful stats fetches. Now uses `window.statsAvailable` consistently.
|
|
768
|
-
- Restored memory utilization health check (`mem: ok` / fail at
|
|
812
|
+
- Restored memory utilization health check (`mem: ok` / fail at ≥90% heap usage) alongside CPU derived check when backend omits explicit entries.
|
|
769
813
|
|
|
770
814
|
### Changed (UI consistency)
|
|
771
815
|
|
|
772
|
-
- Unified overview card styling with Real
|
|
816
|
+
- Unified overview card styling with Real‑time Monitoring card via new shared `.stat-row` styles (consistent spacing, typography, separators).
|
|
773
817
|
- Added stronger label/value contrast and tabular numeric alignment across System Statistics, System Health, and Performance cards.
|
|
774
818
|
|
|
775
819
|
### Internal (refactor / cleanup)
|
|
@@ -812,13 +856,13 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
812
856
|
### Added (schema v3 & governance)
|
|
813
857
|
|
|
814
858
|
- Introduced on-disk instruction schemaVersion `3` with new `primaryCategory` field enforcing a single canonical category reference.
|
|
815
|
-
- Automatic migration path (v1
|
|
859
|
+
- Automatic migration path (v1→v2→v3) updates existing instruction JSON files in-place; adds `primaryCategory` from first existing category and normalizes category list to include it.
|
|
816
860
|
- Added governance justification file `governance/ALLOW_HASH_CHANGE` documenting approved hash shift from structural canonicalization.
|
|
817
861
|
|
|
818
862
|
### Changed (migration & normalization)
|
|
819
863
|
|
|
820
864
|
- `migrateInstructionRecord` now injects `primaryCategory` for v2 records and ensures `schemaVersion` bump with descriptive notes.
|
|
821
|
-
- Runtime handlers enforce invariant: `primaryCategory
|
|
865
|
+
- Runtime handlers enforce invariant: `primaryCategory ∈ categories[]`; fallback category `uncategorized` only when INDEX_SERVER_REQUIRE_CATEGORY unset.
|
|
822
866
|
- All committed instructions canonicalized (hash drift resolved) to provide stable CI governance baseline.
|
|
823
867
|
|
|
824
868
|
### Integrity & Tooling
|
|
@@ -834,7 +878,7 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
|
|
|
834
878
|
|
|
835
879
|
### Documentation (navigation & migration)
|
|
836
880
|
|
|
837
|
-
- Updated MIGRATION guidance (v2
|
|
881
|
+
- Updated MIGRATION guidance (v2→v3 path) and added docs index + instruction usage plan for navigation.
|
|
838
882
|
|
|
839
883
|
|
|
840
884
|
### Changed (test stability)
|
|
@@ -1134,9 +1178,9 @@ No action required. Clients benefit from stricter and more predictable error cod
|
|
|
1134
1178
|
|
|
1135
1179
|
### Changed (test gating & stability)
|
|
1136
1180
|
|
|
1137
|
-
- Segregated nondeterministic / adversarial fuzz & stress specs behind `INDEX_SERVER_STRESS_DIAG=1` (handshake flake, mixed workload health starvation repro, multi
|
|
1181
|
+
- Segregated nondeterministic / adversarial fuzz & stress specs behind `INDEX_SERVER_STRESS_DIAG=1` (handshake flake, mixed workload health starvation repro, multi‑process health stress, dispatcher stress/flake, concurrency fuzz).
|
|
1138
1182
|
- Baseline test run (without flag) now deterministic: all core + compliance + governance suites green; stress specs appear as skipped (documented) eliminating prior intermittent CI noise.
|
|
1139
|
-
- Added skip pattern helper (`maybeIt`) in gated specs for clear opt
|
|
1183
|
+
- Added skip pattern helper (`maybeIt`) in gated specs for clear opt‑in semantics.
|
|
1140
1184
|
|
|
1141
1185
|
### Added (tooling & scripts)
|
|
1142
1186
|
|
|
@@ -1201,7 +1245,7 @@ For routine CI or local verification omit the flag for deterministic results.
|
|
|
1201
1245
|
### Changed (test stability & isolation)
|
|
1202
1246
|
|
|
1203
1247
|
- Refactored feedback test suite:
|
|
1204
|
-
- Introduced `feedbackCore.spec.ts` (comprehensive) & `feedbackSimple.spec.ts` (smoke) with per
|
|
1248
|
+
- Introduced `feedbackCore.spec.ts` (comprehensive) & `feedbackSimple.spec.ts` (smoke) with per‑test isolated `INDEX_SERVER_FEEDBACK_DIR` directories.
|
|
1205
1249
|
- Converted brittle absolute "empty list" assertions to delta-based assertions; legacy expectations gated with `it.skip(... // SKIP_OK)` for documentation without flakiness.
|
|
1206
1250
|
- Added deterministic persistence wait loop for filesystem write visibility.
|
|
1207
1251
|
- Replaced dynamic requires with explicit static imports (avoids MODULE_NOT_FOUND under variant names).
|
|
@@ -1226,7 +1270,7 @@ For routine CI or local verification omit the flag for deterministic results.
|
|
|
1226
1270
|
|
|
1227
1271
|
- Guarded optional `since` parameter access in feedback list & stats handlers (eliminates TS18048 risk under strict mode).
|
|
1228
1272
|
- Added commit helper tasks for structured documentation and feature commits.
|
|
1229
|
-
- All core + contract tests passing (168 passed / 14 skipped
|
|
1273
|
+
- All core + contract tests passing (168 passed / 14 skipped – skips limited to explicitly gated stress & legacy expectations).
|
|
1230
1274
|
|
|
1231
1275
|
### Notes (stabilization)
|
|
1232
1276
|
|
|
@@ -1243,10 +1287,10 @@ For routine CI or local verification omit the flag for deterministic results.
|
|
|
1243
1287
|
|
|
1244
1288
|
- Unified runtime diagnostics guard (`[diag] [ISO] [category]`) capturing uncaught exceptions, unhandled rejections, process warnings, and termination signals with optional exit delay (`INDEX_SERVER_FATAL_EXIT_DELAY_MS`).
|
|
1245
1289
|
- Real backup system with millisecond precision IDs (`backup_YYYYMMDDTHHMMSS_mmm`), manifest generation (instructionCount, schemaVersion) and safety pre-restore snapshot.
|
|
1246
|
-
- Admin dashboard backup listing & one
|
|
1290
|
+
- Admin dashboard backup listing & one‑click restore UI (auto refresh + schemaVersion display).
|
|
1247
1291
|
- WebSocket enhancements: client UUID assignment, connect/disconnect broadcast events, immediate metrics snapshot push, active connection metrics integration.
|
|
1248
1292
|
- Live synthetic activity per-call trace streaming over WebSocket (`synthetic_trace` messages) with runId, sequence, duration, error, and skipped markers.
|
|
1249
|
-
- Synthetic harness expansion to exercise instruction dispatcher CRUD pathways (`add/get/list/query/update/remove`) plus usage tracking; active in
|
|
1293
|
+
- Synthetic harness expansion to exercise instruction dispatcher CRUD pathways (`add/get/list/query/update/remove`) plus usage tracking; active in‑flight request counter + status endpoint.
|
|
1250
1294
|
- Instruction editor enrichment: diff view, formatting button, diagnostics panel (validity, size, hash, missing fields), template injection, change detection.
|
|
1251
1295
|
- HTTP metrics instrumentation aggregating all REST requests into pseudo tool bucket `http/request` (opt-out with `INDEX_SERVER_HTTP_METRICS=0`).
|
|
1252
1296
|
- Performance detailed endpoint `/api/performance/detailed` (requestThroughput, avg, p95 approximation, errorRate, concurrentConnections, activeSyntheticRequests).
|
|
@@ -1255,7 +1299,7 @@ For routine CI or local verification omit the flag for deterministic results.
|
|
|
1255
1299
|
|
|
1256
1300
|
- Added `httpMetrics.spec.ts` validating HTTP aggregation bucket increments.
|
|
1257
1301
|
- Hardened PowerShell isolation handshake test with BOM stripping, retry initialize, soft-pass degraded mode and extended deadlines to eliminate flakes.
|
|
1258
|
-
- Adaptive sampling + concurrency & duration guard in multi-client feedback reproduction test (dynamic ~0.8% sample, clamped 5
|
|
1302
|
+
- Adaptive sampling + concurrency & duration guard in multi-client feedback reproduction test (dynamic ~0.8% sample, clamped 5–8, 7s hard wallclock) reducing runtime while preserving coverage rotation.
|
|
1259
1303
|
- Fast test script (`scripts/test-fast.mjs`) leak guard ensuring slow specs never bleed into fast subset.
|
|
1260
1304
|
- Pre-push hook (`scripts/pre-push.ps1`) running slow test suite gating pushes.
|
|
1261
1305
|
|
|
@@ -1370,13 +1414,13 @@ No client changes required. Enable `INDEX_SERVER_MEMOIZE=1` (and optionally `IND
|
|
|
1370
1414
|
|
|
1371
1415
|
### Documentation (lifecycle)
|
|
1372
1416
|
|
|
1373
|
-
- Added `FEEDBACK-DEFECT-LIFECYCLE.md` formalizing feedback
|
|
1417
|
+
- Added `FEEDBACK-DEFECT-LIFECYCLE.md` formalizing feedback → red test → fix → coverage workflow.
|
|
1374
1418
|
- Pending README & TOOLS doc updates for enriched add response (will be completed in 1.1.0 minor bump).
|
|
1375
1419
|
|
|
1376
1420
|
### Internal (stability)
|
|
1377
1421
|
|
|
1378
1422
|
- Introduced ambient module declaration for portable client to resolve TS7016 without expanding `tsconfig` include surface.
|
|
1379
|
-
- Eliminated intermittent
|
|
1423
|
+
- Eliminated intermittent “No test suite found” flake in portable CRUD atomic spec via stabilization of file export timing.
|
|
1380
1424
|
|
|
1381
1425
|
### Versioning Notes (next minor)
|
|
1382
1426
|
|
|
@@ -1388,32 +1432,32 @@ No client changes required. Enable `INDEX_SERVER_MEMOIZE=1` (and optionally `IND
|
|
|
1388
1432
|
|
|
1389
1433
|
### Added (bootstrap gating & safety)
|
|
1390
1434
|
|
|
1391
|
-
- Bootstrap confirmation gating flow (`requestBootstrapToken`
|
|
1392
|
-
- Minimal allow
|
|
1435
|
+
- Bootstrap confirmation gating flow (`requestBootstrapToken` → `finalizeBootstrapToken`) requiring explicit human confirmation artifact before enabling broad mutation operations.
|
|
1436
|
+
- Minimal allow‑listed seed instruction IDs (000 / 001) excluded from recursion and leakage risk metrics to guarantee a safe tool discovery baseline.
|
|
1393
1437
|
- Human confirmation persistence (`bootstrap.confirmed.json`) with token TTL enforcement and rejection reasons (`mutation_blocked`, `token_invalid`, `token_expired`).
|
|
1394
1438
|
|
|
1395
1439
|
### Added (governance & risk instrumentation)
|
|
1396
1440
|
|
|
1397
|
-
- Recursion/leakage risk metrics capturing self
|
|
1441
|
+
- Recursion/leakage risk metrics capturing self‑referential or cyclic instruction body/category link detection; aggregated risk summary surfaced via governance hash pathways.
|
|
1398
1442
|
- Performance baseline tooling (`perf-baseline.mjs`, compare, trend, summary scripts) now integrated with release workflow enabling drift detection on CPU time & RSS.
|
|
1399
1443
|
- Baseline auto-confirm test helper (`forceBootstrapConfirmForTests`) gated by `INDEX_SERVER_BOOTSTRAP_AUTOCONFIRM` for legacy suite compatibility without weakening production gating semantics.
|
|
1400
1444
|
|
|
1401
1445
|
### Changed (test infrastructure)
|
|
1402
1446
|
|
|
1403
1447
|
- Global test setup (`setupDistReady.ts`) defaults `INDEX_SERVER_BOOTSTRAP_AUTOCONFIRM=1` unless explicitly disabled, restoring green for historical mutation suites while preserving a dedicated authentic gating spec.
|
|
1404
|
-
- `bootstrapGating.spec.ts` isolated via per
|
|
1448
|
+
- `bootstrapGating.spec.ts` isolated via per‑test temporary `INDEX_SERVER_DIR` ensuring real token lifecycle coverage (block → issue token → finalize → unblocked).
|
|
1405
1449
|
- Dispatcher P1 unit test adapted to force confirmation post dynamic import keeping focus on catalog ordering semantics.
|
|
1406
1450
|
|
|
1407
1451
|
### Governance (baseline change control)
|
|
1408
1452
|
|
|
1409
|
-
- Added
|
|
1410
|
-
- Updated baseline sentinel and guard allow-list (noise suppression only; minimal invariant suite unchanged per
|
|
1453
|
+
- Added §14.5 BASELINE-CR (noise‑suppression allow‑list) to `INTERNAL-BASELINE.md` covering bootstrap gating, manifest lifecycle & schema validation, governance recursion guard, search/versioning, graph export enriched/mermaid variants, onboarding helper, and visibility invariant spec (early warning only).
|
|
1454
|
+
- Updated baseline sentinel and guard allow-list (noise suppression only; minimal invariant suite unchanged per §6 baseline plan).
|
|
1411
1455
|
|
|
1412
1456
|
### Notes (1.5.0)
|
|
1413
1457
|
|
|
1414
1458
|
- Minor release justified by additive safety gating mechanism and new performance & risk instrumentation surfaces; no breaking tool schema changes.
|
|
1415
|
-
- Production deployments must perform a one
|
|
1416
|
-
- Future hardening roadmap: elevate selected noise
|
|
1459
|
+
- Production deployments must perform a one‑time bootstrap confirmation; tests emulate confirmation automatically unless deliberately disabled.
|
|
1460
|
+
- Future hardening roadmap: elevate selected noise‑suppression specs (manifest fastload, recursion guard) to minimal invariant status via separate BASELINE-CR once semantics fully stabilized.
|
|
1417
1461
|
|
|
1418
1462
|
### Upgrade Guidance (1.5.0)
|
|
1419
1463
|
|
|
@@ -1443,3 +1487,15 @@ No client changes required. Enable `INDEX_SERVER_MEMOIZE=1` (and optionally `IND
|
|
|
1443
1487
|
## [1.26.4] - 2026-04-28
|
|
1444
1488
|
|
|
1445
1489
|
## [1.26.5] - 2026-04-28
|
|
1490
|
+
|
|
1491
|
+
## [1.26.7] - 2026-04-30
|
|
1492
|
+
|
|
1493
|
+
### Added
|
|
1494
|
+
|
|
1495
|
+
- fix(wizard): correct Build prompt logic
|
|
1496
|
+
|
|
1497
|
+
## [1.26.8] - 2026-04-30
|
|
1498
|
+
|
|
1499
|
+
### Added
|
|
1500
|
+
|
|
1501
|
+
- Test stability + version parity tooling (PR #261)
|