Changelog
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
fix: remove state.json and dead keyRotatedAt code (#192) #193
fix: remove state.json and dead keyRotatedAt code #192
fix: resolve state.json from state root instead of package directory (#185) #186
feat: add copy button to table cell hover controls (#188) #189
fix: add /api prefix to OAuth API routes (#190) #191
fix: add /api prefix to OAuth API routes #190
feat: add copy button to table cell hover controls #188
fix: resolve state.json from state root instead of package directory #185
updated jeeves core 0860b2d
fix: guard navigator.clipboard before writeText calls 7e2d435
fix: use path.dirname/basename for state dir resolution 6b2fe9f
21 April 2026
fix: store insider seeds in config.json instead of state.json (#185) #187
fix: store insider seeds in config.json instead of state.json #185
chore: release @karmaniverous/jeeves-server v3.10.2 3cf0e72
21 April 2026
fix: authenticate embedded images for all outsider shares (#183) #184
chore: release @karmaniverous/jeeves-server v3.10.1 1e3542e
21 April 2026
feat: /go/:slug shortlink redirects (#180) #182
fix: resolve serverRoot via package.json discovery (#178) #179
chore: release @karmaniverous/jeeves-server-openclaw v0.10.0 26942bd
chore: release @karmaniverous/jeeves-server v3.10.0 767f496
21 April 2026
fix: edit popup scrollbar and word wrap #173
fix: dev server white screen — serve built client under tsx #171
fix: constrain edit popup height to prevent overflow #169
feat: markdown-it migration, inline block editing, OAuth2 flow (#162, #163) #165
feat: markdown-it migration, block editing, OAuth2 flow (#162, #163) ceebc33
feat: block type label in edit popup 8178540
fix: resolve remaining React lint errors e7a291c
feat: client-side undo/redo stack fc7fc1c
fix: unify cell/block editor, pure flex height chain, SOLID/DRY cleanup (#172) 0318740
fix: move undo/redo to header, preserve scroll on save (#174, #176) cd5de16
fix: address Gemini review — undo correctness, reactivity, DRY, cleanup 9ad8661
docs: add CONTRIBUTING.md with dev server setup guide (#170) 9df7937
chore: release @karmaniverous/jeeves-server-openclaw v0.9.1 604c72f
fix: move undo/redo to document toolbar next to width buttons (#174) 0127aa2
fix: resolve all pre-existing eslint errors ef4e175
fix: preserve source mapping on diagrams and HTML blocks for block editing 04be709
fix: address Gemini review — env vars, path-based detection, cross-platform docs (#170) a591a69
chore: release @karmaniverous/jeeves-server v3.9.0 de4c069
fix: resolve built client dir when running under tsx (#170) 5c7aa9c
feat: cell edit popup textarea 448ddd8
fix: add line wrapping and contained positioning to popup CodeEditor (#172) 4c217a8
fix: exclude dist/src from source-mode detection to fix CI smoke tests (#170) d9e663c
fix: Ctrl+Enter save keybinding — use Prec.highest to override basicSetup (#175) 34f0731
fix: address Gemini review — remove redundant variable, handle indented HTML blocks (#168) 62cfcf1
fix: constrain edit popup height to prevent overflow (#168) a726119
Merge pull request #166 from karmaniverous/feature/edit-ux-refinements c5538f0
15 April 2026
updated jeeves-core d21bd1f
chore: release @karmaniverous/jeeves-server v3.8.5 cd69a3e
14 April 2026
fix: make clear-cache visible to outsiders in download menu #161
fix: move DownloadDropdown outside isInsider gate in DirectoryRow 94dac57
chore: release @karmaniverous/jeeves-server v3.8.4 93ca2af
[V3-7] fix: prettier formatting in toggleCheckbox route 71ab635
lintfix bacf460
11 April 2026
refactor: simplify checkbox toggle to fire-and-forget #160
[V3-7] refactor: simplify checkbox toggle to fire-and-forget (no mtime, no conflict) 013f19e
[V3-7] fix: checkbox click handler — use native capture-phase delegation via ref callback, fix mtime stale-write flow 56ef58f
chore: release @karmaniverous/jeeves-server v3.8.3 a38d69f
lint:fix 538b87d
11 April 2026
fix: checkbox indexing for loose list items #159
chore: release @karmaniverous/jeeves-server v3.8.2 d77489e
[V3-7] fix: use descendant selector for checkbox indexing (li > input -> li input) 61db2b0
11 April 2026
fix: post-merge checkbox toggle, Gemini review, CI wildcard #158
chore: release @karmaniverous/jeeves-server-openclaw v0.9.0 44c2a72
chore: release @karmaniverous/jeeves-server v3.8.1 20acfaa
[V3-7] fix: checkbox toggle click handling for dangerouslySetInnerHTML 49a49d8
11 April 2026
feat: v3.7.0 / v0.8.0 — shareable URLs, insider checkbox toggles, events route fix #157
[V3-7] feat: wire MarkdownView checkbox toggling #154
[V3-7] feat: add POST /api/file/*/toggle-checkbox endpoint #154
[V3-7] feat: add checkbox indexing and mtime to markdown pipeline #154
[V3-7] feat: update TOOLS guidance to note automatic URL rewriting #152
[V3-7] feat: add publicUrl config for shareable URL rewriting #145
[V3-7] fix: correct /events route path to /api/events #156
[V3-7] fix: address Gemini review — URL boundary, checkbox regex, Cheerio, race condition 718b60a
[V3-7] refactor: SOLID/DRY pass across v3.7.0 changes 8747489
[V3-7] test: improve coverage and remove trivial tests 5a9086a
[V3-7] docs: sync documentation with v3.7.0 implementation 11b400e
chore: release @karmaniverous/jeeves-server v3.8.0 9409a4b
npm audit fix d43be1b
chore: release @karmaniverous/jeeves-server-openclaw v0.7.5 3708480
[V3-7] fix: toggle-checkbox route wildcard position (CI fix) 34a0cbd
[V3-7] style: fix prettier formatting in markdown tests e0177c8
[V3-7] chore: bump versions (service 3.7.0, openclaw 0.8.0) 312ab26
8 April 2026
npm audit fix 9390169
chore: release @karmaniverous/jeeves-server-openclaw v0.7.4 8e79660
chore: release @karmaniverous/jeeves-server v3.6.5 86abc4b
5 April 2026
chore: release @karmaniverous/jeeves-server-openclaw v0.7.3 70d398a
unhoisted jeeves 8af782b
chore: release @karmaniverous/jeeves-server v3.6.4 7f61abb
5 April 2026
hoisted jeeves 0dd00f7
chore: release @karmaniverous/jeeves-server-openclaw v0.7.2 88ac709
chore: release @karmaniverous/jeeves-server v3.6.3 3492ac5
5 April 2026
fix: consume core importMetaUrl for plugin install (#150, #147) #151
[150] fix: consume core importMetaUrl for plugin install #150
[150] fix: consume core importMetaUrl for plugin install (#150) #150 #147
chore: release @karmaniverous/jeeves-server-openclaw v0.7.1 35299d1
chore: release @karmaniverous/jeeves-server v3.6.2 c69a014
5 April 2026
chore: dependency updates — jeeves ^0.5.3, jsonmap ^2.1.1, @types/node ^25.5.2, and minor/patch bumps #149
chore: update @karmaniverous/jeeves to ^0.5.3 and bump minor/patch deps a73fd37
chore: update @types/node to ^25.5.2 696da29
chore: release @karmaniverous/jeeves-server-openclaw v0.7.0 3cce7a2
chore: update @karmaniverous/jsonmap ^0.3.1 → ^2.1.1 12a848d
npm audit fix 020edff
chore: release @karmaniverous/jeeves-server v3.6.1 b539679
3 April 2026
feat: v3.6.0 core v0.5.1 adoption + core service alignment + UX improvements #146
[360] feat: Phase 3 — UX improvements (CSV tables, directory item counts, collapsible frontmatter, collapsible TOC) #48
[360] feat: Phase 1 — core service adoption (getServiceUrl, getBindAddress, Node 22 fast-fail) #135
[360] test: add missing test coverage for v3.6.0 features c23f7a1
[360] refactor: address code review — async directory reads, CSV row normalization, extract mapDirectoryEntry 3a1a389
npm audit fix 0be936a
[360] refactor: split TocSection.tsx — move utilities to tocUtils.ts (fixes react-refresh lint) d8e8d57
[360] chore: remove TASK.md build artifact, DRY up Node version check and fix minor issues 3e569db
[360] docs: Phase 4 — documentation updates for v3.6.0 8e0be64
[360] feat: Phase 2 — core v0.5.1 wiring (cleanup escalation, getPackageVersion, substituteEnvVars TODO) 2b97c20
chore: release @karmaniverous/jeeves-server-openclaw v0.6.2 f120979
chore: release @karmaniverous/jeeves-server v3.6.0 40341f4
[360] chore: Phase 5 — quality gates clean (knip fixes, remove package-directory dep) a436c46
[360] ci: drop Node 20 from Linux compatibility matrix (engine floor is now 22) 5b690e6
[360] docs: fix Node version in deployment guide (20 → 22) dde5cd2
31 March 2026
[53] Fix pre-existing lint + knip errors (Commander type resolution) #140
[53] Integrate core v0.4.6: init() before descriptor.run() + knip fixes #139
[53] chore: bump core to v0.4.6 (init before run) + fix knip issues e5f466a
[53] chore: bump core to v0.4.6 (init before run) + fix knip issues cc2adb6
chore: release @karmaniverous/jeeves-server-openclaw v0.6.1 b0a4bec
chore: release @karmaniverous/jeeves-server v3.5.2 08f6a37
31 March 2026
[51] Integrate descriptor.run from core v0.4.5 #137
chore: release @karmaniverous/jeeves-server-openclaw v0.6.0 bfa7501
[51] feat: integrate descriptor.run from core v0.4.5 74bebef
chore: release @karmaniverous/jeeves-server v3.5.1 fd56acc
30 March 2026
Fix config validate test assertion #136
[35] Component SDK adoption (core v0.4.4) + plugin/CLI factories #134
[35] refactor: replace hand-rolled package.json walk with packageDirectorySync #96
[35] fix: show user-friendly search error messages #98
[35] fix: decode HTML entities in TOC heading text #102
[35] refactor: remove Connected Services from TOOLS.md writer (closes #128) #128
[35] chore: update deps (peer-safe) c87c3a1
[35] refactor: migrate openclaw plugin to core v0.4.4 SDK e29773a
[35] refactor: SOLID/DRY cleanup 78a0b2d
[35] refactor: replace hand-rolled CLI with createServiceCli(descriptor) (#106) 9b7517f
[35] refactor: adopt createPluginToolset, health-nested status, event endpoint (#87, #112, #118, #128) 8ead7ae
[35] test: add tests for diagramExport and sharing helpers 1caaa1b
[35] feat: replace cosmiconfig with direct JSON config loading 6f888c6
[35] docs: sync documentation with SDK adoption changes aefbf73
[35] refactor: migrate GET /status to createStatusHandler factory 3526b46
npm audit fix a2db7c5
chore: release @karmaniverous/jeeves-server-openclaw v0.5.1 3aa5827
[35] fix: resolve lint errors from core v0.4.4 migration 4b0c11d
[35] chore: bump @karmaniverous/jeeves to ^0.4.3, remove cosmiconfig dep 8d3162b
[35] feat: define JeevesComponentDescriptor for server component 16c5b56
chore: release @karmaniverous/jeeves-server v3.5.0 f41da11
[35] feat: use getBindAddress from core, replace localhost with 127.0.0.1 1df9dc6
[35] docs: add title front matter to all guides 840f9c7
[35] fix: encode browse path segments in API calls, add SPA catch-all (#50, #127) dce3f11
[35] fix: use static bind default, bump openclaw core dep, remove local stub 6420e8c
ci: refactor linux-compat to use shared workflow + dedicated smoke-tests job e2f91f1
[35] feat: add GET /api/events endpoint for event log queries c5e6505
[35] feat: add POST /config/apply endpoint using createConfigApplyHandler d1281b8
[35] fix: resolve startCommand path absolutely for CI compatibility 25d23cd
[35] ci: add cloud-sync workflow (parity with watcher/runner) aed95e7
[35] fix: add missing dirs param to server_share plugin tool (#99, #87) 359189a
fix: align config validate test assertion with core SDK output 5c776ca
25 March 2026
ci: replace bespoke docs workflow with shared version 9521d00
chore: release @karmaniverous/jeeves-server v3.4.2 30e700c
chore: bump @karmaniverous/jeeves to 0.3.1 df78ac9
23 March 2026
Remove /health proxy, rename /stats to /status, align client types #122
Fix runner proxy routes calling wrong endpoints #121
chore: release @karmaniverous/jeeves-server-openclaw v0.5.0 5f29c12
[120] fix: runner proxy routes call /status instead of /stats and /health (#120) 6a9aa21
chore: release @karmaniverous/jeeves-server v3.4.1 9a338bb
[120] fix: runner proxy routes call /status instead of /stats and /health (#120) 8310b32
23 March 2026
Bump core to v0.3.0 and consolidate status endpoint #119
[117] feat: bump core to v0.3.0 and consolidate status endpoint (#117) c80be62
chore: release @karmaniverous/jeeves-server-openclaw v0.4.1 01a64b8
chore: release @karmaniverous/jeeves-server v3.4.0 ed98759
[117] refactor(openclaw): use resolveOptionalPluginSetting for getPluginKey (#112) 6b36937
22 March 2026
Add configurable host bind + metaUrl service probe #114
chore: release @karmaniverous/jeeves-server-openclaw v0.4.0 566e438
[113] feat: add host bind and metaUrl config options 798d133
chore: release @karmaniverous/jeeves-server v3.3.1 bf01414
npm audit fix a07adac
21 March 2026
feat: core v0.2.0 SDK adoption #111
chore: release @karmaniverous/jeeves-server-openclaw v0.3.1 11309c1
chore: release @karmaniverous/jeeves-server v3.3.0 1b1aec6
19 March 2026
fix(openclaw): bundle @karmaniverous/jeeves into plugin dist 61fb7ac
chore: release @karmaniverous/jeeves-server v3.2.1 f13677b
chore(openclaw): use resolveWorkspacePath from jeeves 0.1.4 71ddd58
chore(openclaw): update jeeves to 0.1.6, add servicePackage/pluginPackage 1847ff7
chore(openclaw): update @karmaniverous/jeeves to 0.1.5 c8b040b
chore(openclaw): update @karmaniverous/jeeves to 0.1.3 6de1c66
18 March 2026
feat(openclaw): adopt jeeves core component writer #105
test(openclaw): expand coverage for openclawPaths, pluginRemove, serviceCommands b38ecac
chore(openclaw): update deps, clean knip config 82cb058
docs: full documentation pass with PlantUML diagrams 537a9d7
refactor(openclaw): resolve SOLID/DRY violations 87df443
chore: release @karmaniverous/jeeves-server v3.2.0 fda70c6
refactor(openclaw): use createAsyncContentCache from jeeves v0.1.1 9732ad9
npm audit fix 7c578d4
test(openclaw): cover service commands 08f478c
fix(openclaw): address Gemini review — error handling and writer cleanup 293b6bc
chore: release @karmaniverous/jeeves-server-openclaw v0.2.1 3881f52
fix(openclaw): derive plugin version from package.json at runtime 1a78435
fix: add tagPrefix to auto-changelog config for monorepo tags 4540873
Change license to BSD-3-Clause and add credits bcb8225
docs: fix diagram image paths in guides e870be6
chore: release @karmaniverous/jeeves-server-openclaw v0.3.0 b684be1
11 March 2026
docs: document scope override precedence in OpenClaw skill #95
feat: explicit scope overrides take precedence over named scopes #94
chore: release @karmaniverous/jeeves-server v3.1.3 801d362
11 March 2026
fix: parse inline tokens in heading renderer #93
fix: parse inline tokens in heading renderer (code spans, bold, italic) #92
chore: add docs workflow, gitignore generated docs 10bffb8
chore: release @karmaniverous/jeeves-server v3.1.2 d15fa4c
9 March 2026
fix: prevent full data reload on tab switch #91
fix: Rendered tab persists when switching to Raw on watcher-rendered files #90
chore: release @karmaniverous/jeeves-server v3.1.1 736ec35
chore: release @karmaniverous/jeeves-server-openclaw v0.2.0 2e0319f
fix: prevent full data reload on tab switch (only reload on path change) 6390b14
Revert "fix: Rendered tab persists when switching to Raw on watcher-rendered files" 71b79d4
9 March 2026
feat: extend /api/status with ?events=N for recent event log #89
fix: server_share sends POST with JSON body instead of GET #87
chore: release @karmaniverous/jeeves-server v3.1.0 0688333
feat: search facets, metadata chips, and click-to-filter 20eeee8
refactor: remove hardcoded filters, fix lazy facet loading ffb0f2a
feat: two-step facet selection + garbage value filtering 6c60e97
feat: schema-driven facet rendering by uiHint 97af834
feat: metadata chips on search results with click-to-filter a11ce3d
perf: lazy-load facets only when 'Add filter' is clicked d0b111c
feat: garbage value diagnostics for inference rule debugging 06e4f82
feat: render text/number facets as text inputs, chips for select/multiselect 282adf8
fix: text/number facets skip value cleaning, cast values to String c9af039
docs: document ?events=N query param on /api/status 4a25f3b
fix: restore eager facet loading on modal open a625bd0
chore: release @karmaniverous/jeeves-server-openclaw v0.1.1 abfee9f
fix: make +N more chip overflow a clickable link that expands the result d56ed6a
fix: increase facets timeout to 15s, add error logging dfda5dd
fix: use type=number input for number facets c245b6a
fix: close SearchableSelect dropdown on outside click (capture phase) f85d8dd
fix: server_browse and server_export route mismatches 82ef907
fix: restore light mode text-foreground on Add Filter menu labels 9bb9c7f
fix: cap schema-driven facet chips to fields with ≤30 values de625e2
8 March 2026
docs: guide index content + typedoc jsonl highlight #86
docs: refresh README + guides for v3 #85
updated docs 86d88c7
updated docs cbd8537
docs: refresh README and guides for v3 CLI + config e437387
docs: add typedoc config and dependencies 761bb8c
docs: add guide index content and fix typedoc trailing comma 3844271
updated docs 075a6f3
chore: release @karmaniverous/jeeves-server v3.0.1 67cf001
docs: add changelogs as children of package guide indexes fd16b5b
npm audit fix 2f3b5c8
8 March 2026
chore: release @karmaniverous/jeeves-server-openclaw v0.1.0-1 d08e571
chore: release @karmaniverous/jeeves-server v3.0.0 ef408c3
chore: release @karmaniverous/jeeves-server-openclaw v0.1.0 bbeac17
8 March 2026
feat: named access scopes #84
fix: plugin auth chain, status endpoint improvements #83
fix: resetConfig should reload, not clear #82
chore: release @karmaniverous/jeeves-server-openclaw v0.1.0-0 b6c0f6d
chore: add knip configs, remove dead exports, clean all code quality checks 2a81072
fix: make resetConfig reload runtime config 79e8602
lintfix 00dc2b2
lintfix 38a9376
chore: release @karmaniverous/jeeves-server v3.0.0-1 db96bc1
fix: resolve remaining lint errors (type annotations, unused params, unnecessary conditionals) e7714ae
fix: remove unnecessary auth from /api/status calls (endpoint is public) f651fe7
fix: add pattern to StatusResponse events type f64e6af
fix: normalize path for watcher render (Windows backslash + uppercase drive) f6c229d
zero version 2c0db75
8 March 2026
chore: integrate client as npm workspace member #81
fix: force white background in panzoom fullscreen (dark mode) #80
chore: make both packages releasable #79
fix: address Gemini code review feedback (PRs #65-#76) #78
chore: fix all gap analysis findings (10 items) #77
Phase 4, Steps 16-18: Document rendering pipeline #76
Phase 3, Steps 11-15: OpenClaw plugin #75
Phase 2, Steps 9-10: Search facets proxy + filter UI #74
Phase 2, Step 8: Scroll anchoring #73
chore: SOLID/DRY/coverage audit pass 2 #72
Phase 2, Step 7: Link availability endpoint #71
Phase 1, Step 6: Port migration #70
Phase 1, Step 5: Diagram dependency internalization #69
Phase 1, Step 4: Server Status API #68
Phase 1, Step 3: CLI commands #67
Phase 1, Step 2: Config migration (jiti → cosmiconfig) #66
Phase 1: Monorepo & Config (v3.0.0) #65
feat: align search browse filter with watcher domains convention #64
fix: exit edit mode after save #63
chore: add default port 1934 #62
chore: add default port 1934 #61
chore: add client as workspace member, align puppeteer versions 6e3a40d
feat: internalize diagram dependencies (mermaid/plantuml) 9c7f8a7
feat: implement OpenClaw plugin (Phase 3, Steps 11-15) 72a04e0
refactor: monorepo scaffolding (Phase 1, Step 1) 15cf2ba
feat: migrate config from jiti/TS to cosmiconfig/JSON adfba33
fix: resolve all client ESLint errors and warnings 768541a
chore: release @karmaniverous/jeeves-server v3.0.0-0 07a6e47
chore: SOLID/DRY pass #3 + plugin test coverage 7dcc4c3
feat: add CLI commands (start, config validate/show, service) 0437984
fix: resolve knip unused files, dependencies, and exports 964beba
fix: address all gap analysis findings 1eb02ab
npm audit fix 3a144b4
feat: add GET /api/link-info endpoint 02ece39
test: add resolve.ts unit tests (21 tests) 7c988ef
fix: cosmiconfig searchPlaces, SOLID/DRY pass, test coverage 08de751
feat: add GET /api/status endpoint 764c3a7
chore: SOLID/DRY/test coverage pass e491bfb
refactor: extract buildRuntimeConfig to resolve.ts (DRY) 87bd749
fix: address Gemini code review feedback across PRs #65-#76 2fef919
refactor: extract shared renderMarkdownContent pipeline 244dddf
feat: schema-driven search facet filters (Step 10) c305c2a
feat: add scroll anchoring for async diagram renders e4bd972
feat: document rendering pipeline (Phase 4, Steps 16-18) 56095ee
npm audit fix 3810c0f
fix: resolve package.json path portably for version 29d775c
feat: add GET /api/search/facets proxy endpoint 28fc200
ni e40deac
chore: migrate default port to 1934 4614a5f
chore: add tsdoc.json to both package roots 9ccf217
chore: add tsdoc.json to both package roots 173cf94
fix: set rootDir and update start script path for monorepo layout a2fd77c
fix: resolve TS2352 warnings in openclaw test mocks 88950e2
fix: CI failures and SvgViewer panzoom re-init bug 7392712
fix: update linux-compat CI for monorepo paths 22dd30f
chore: eliminate all lint warnings ed12c86
fix: CI rimraf resolution and remove redundant client steps 757c45c
publishconfig public access 8e4358c
merge: incorporate main (PR #77 gap-analysis) 845268d
fix: add missing return-await in facets handler b08d4a3
fix: remove unused parameter in linkInfo test 36fca9a
ci: add Node 24 to linux-compat matrix 66f1008
fix: adjust relative paths for monorepo dist/src/ layout dcaf9dc
fix: adjust rootDir depth for monorepo dist/src/config path 5427014
26 February 2026
feat: render YAML frontmatter as code block #60
feat: render YAML frontmatter as code block in markdown view 3045a94
chore: release v2.9.3 1475596
24 February 2026
feat: sortable columns on runner dashboard 023a473
chore: release v2.9.2 d3db011
24 February 2026
fix: dark mode status pills via custom-variant 30454de
chore: release v2.9.1 d34fd62
chore: release v2.9.0 7cdc030
24 February 2026
feat: add runner dashboard #59
fix: event queue byte/char cursor mismatch + postbuild client #52
fix: client TS errors + picomatch dot matching #51
gitignores 601737f
chore: release v2.9.0 7813907
23 February 2026
[GH-46] Semantic search UI #47
[GH-46] GH-46: Semantic search — backend proxy + frontend modal 80383d1
[GH-46] GH-46: Date range filtering (relative + absolute) e775502
[GH-46] GH-46: Accordion chunks with scrollable container d9462e0
[GH-46] GH-46: Persistent search state + reset control 8fba6ea
[GH-46] GH-46: File type (extension) filter chips fcab7b2
[GH-46] GH-46: Enlarge search modal (max-w-4xl, 85vh, less top offset) 83d8ad2
22 February 2026
[GH-44] Cache exports + Clear Cache control #45
[GH-44] GH-44: Add export cache + Clear Cache endpoint and UI bf41cd0
[GH-44] Clear cache covers standalone diagram files (mmd/puml) 63ba5c8
[GH-44] Add .export-cache/ to gitignore 80ade63
22 February 2026
GH-42: Unify raw view on CodeMirror 6 with code folding #43
[GH-42] Replace highlight.js raw view with CodeMirror 6 read-only viewer 547315c
[GH-42] Remove highlight.js — CM6 handles all syntax highlighting 52415ae
[GH-42] Fix DOCX code block rendering — per-line paragraphs with NBSP indent 61db677
[GH-42] Fix lint: unnecessary conditional in export.ts 528c740
[GH-42] Revert custom fold markers to basicSetup defaults 37fc320
[GH-42] Skip CM6 for PDF/DOCX export — use plain pre/code blocks 6706f68
22 February 2026
GH-40: Retry button for failed inline diagram renders #41
[GH-40] Add retry button to failed inline diagram renders 1fe10bd
[GH-40] Improve error message and add reload hint on retry failure b0c02c8
22 February 2026
GH-38: Terms of Service, Privacy Policy & search engine blocking #39
21 February 2026
SOLID/DRY codebase audit — comprehensive refactor #37
21 February 2026
GH-32 + GH-33: Diagram cache + lazy-load embedded diagrams 74b68be
20 February 2026
feat: in-browser text editing (GH-30) #31
chore: bump version to 2.6.0 7d54aa3
20 February 2026
feat: Render embedded Mermaid/PlantUML code blocks (GH-23) #27
chore: bump version to 2.5.0 2c42e14
20 February 2026
feat: Native PlantUML support (GH-22) #25
chore: bump version to 2.4.0 ddf9d87
20 February 2026
fix: case-insensitive email comparison for insider matching #24
19 February 2026
refactor: Copy Raw Link builds /api/raw/ URL directly, remove raw=1 redirect #21
19 February 2026
feat: raw=1 on /browse/* redirects to /api/raw/* for raw file delivery #20
19 February 2026
fix: forward auth params on downloads, show error popup on failure #19
18 February 2026
refactor: replace hand-rolled glob matching with picomatch #18
18 February 2026
[GH-16] feat(GH-16): utility share-for endpoint + outsider policy #17
18 February 2026
Allow/deny scopes for insiders and keys #15
chore: update repo description and add keywords to package.json 5130698
17 February 2026
GH-13: Linux compatibility #14
17 February 2026
[GH-11] Deep share links with depth and directory controls #12
docs: add platform support section, sync requirements with GH-11 implementation, call out Linux as next-up 261ff4d
fix: header button hover in light mode - use white/10 overlay instead of accent bg eeb370c
17 February 2026
Fix PDF/DOCX export rendering #10
Decommission path routes #8
[GH-9] fix DOCX SVG export — render SVGs in clean isolated pages #9
[GH-9] fix DOCX SVG screenshot offset — use element.screenshot() instead of clip #9
[GH-9] fix SVG rendering in SPA and PDF/DOCX export issues #9
[GH-9] fix PDF/DOCX exports rendering panzoom container chrome #9
[GH-7] decommission /path routes — migrate to /api/raw, /api/export, /browse redirect #7
[GH-7] remove legacy server.js — replaced by src/server.ts 6a701e6
[GH-7] remove server-rendered about page, templates, and test PDFs bad31ca
[GH-9] render DOCX SVGs at full page width (1152px) dbb5bae
fix: increase mobile bottom padding to pb-32 (8rem) e19b653
fix: use md:px-6 md:pt-6 instead of md:p-6 so pb-16 isn't overridden at md breakpoint 6b1c19f
fix: add pb-16 bottom padding to scroll containers for mobile browser chrome clearance 7319d00
fix: pass puppeteer.json config to mmdc for NSSM service compatibility 769610f
[GH-9] render DOCX SVG screenshots at 2x device scale for crisp output 68c04f4
16 February 2026
v2.0.0: React SPA migration #6
[GH-5] merge: resolve conflicts with main (keep feature branch for frozen server pages) 2c57b6f
[GH-5] feat: React + Vite scaffold with file browser, API endpoints, and SPA serving (GH-5) 6a8ffb5
[GH-5] Dropdown menus, TS config, state separation, local static assets 16f40b4
[GH-5] docs: add all guides - event gateway, exports, deployment, API integration 45e026a
[GH-5] docs: move requirements to .stan/system/stan.requirements.md, slim README 43214d0
[GH-5] docs: add setup and sharing guides, link from README ac32dc9
[GH-5] docs: update README to reflect current architecture - Fastify, Zod 4 config, React SPA, dual auth, prose width toggle e0da626
[GH-5] feat: per-row share icons on drives listing page (GH-5) 35a04a6
[GH-5] Fix header wrapping + unified fixed top bar 26baa15
[GH-5] feat: responsive header - single row wide, progressive collapse - Action bar wraps to row 2 below lg breakpoint - Info/theme fold into account menu below lg - Breadcrumbs scroll horizontally (hat pinned) - Thin scrollbar styling for breadcrumb overflow c20ea7a
[GH-5] Fixed header/tabs, key auth for SPA, dropdown hover variants 808c024
[GH-5] feat: replace expiry text input with dropdown (never/1h/1d/1w/1m/1y) (GH-5) 7691a69
[GH-5] Responsive header layout - two-row design 1c7fbda
[GH-5] feat: Panzoom for SVG images embedded in rendered markdown - Finds img tags with .svg sources in rendered articles - Fetches SVG content and replaces img with interactive Panzoom container - Scroll to zoom, drag to pan - Graceful fallback to original img on fetch failure 1cd0dd4
feat: replace expiry text input with dropdown (never/1h/1d/1w/1m/1y) 4a0f8ae
[GH-5] refactor: replace lodash with radash in event gateway JsonMap lib 5c2f322
feat: per-row share icons on drives listing page dcc2fbc
[GH-5] feat: fullscreen toggle for inline SVG Panzoom viewers 2806878
[GH-5] Scrollbar under tabs, main as scroll container 65b4dcc
[GH-5] fix: pre-process SVG to 100% width/height before render — prevents overflow on tab switch 3da142d
[GH-5] fix: SVG viewer zoom-to-fit — entire image visible in viewport, centered f0927ec
[GH-5] docs: Mermaid diagram for event gateway, link first repo references in guides 3c5e98e
[GH-5] docs: rewrite README - position as AI-to-business publishing bridge c6e7c6e
[GH-5] fix: remove fullscreen toggle from SVG viewer — rendered view is the experience f744eea
[GH-5] docs: replace ASCII access decision flow with Mermaid SVG in sharing guide f1455d0
[GH-5] feat: prose width toggle (narrow/wide) for rendered markdown 2e5f19f
[GH-5] fix: SVG fullscreen fits drawing to viewport, allow zoom out feat: README prominently features Event Gateway 080161c
[GH-5] Mobile TOC: hamburger menu left of Rendered/Raw tabs 4b00ff6
[GH-5] feat: add medium prose width option (three-way toggle) 2b3dad4
[GH-5] docs: clarify key derivation in event gateway guide e03c97e
[GH-5] fix: defer SvgViewer Panzoom init to next frame — fixes tab switch overflow 39c28b5
[GH-5] Fix mobile header overflow and simplify sticky layout 505bd5e
[GH-5] fix: center SVG vertically and horizontally in fullscreen panzoom ec683bc
[GH-5] Fix code block contrast in light mode 2051d65
[GH-5] chore: bump version to 2.0.0 8864eaa
[GH-5] Fix CodeBlock component theme awareness 678b7bb
[GH-5] Fix TOC sidebar sticky position and anchor scroll offset 6f2aa3f
[GH-5] fix: remove backtick pseudo-elements from inline code in prose f47cd60
[GH-5] fix: anchor scroll offset - use getBoundingClientRect relative to scroll container a8f5e0c
[GH-5] fix: SVG fullscreen center/center - remove CSS centering, let Panzoom startX/startY handle positioning 54c5aca
[GH-5] Fix TOC sticky top to match header + tabs + gap (7rem) c0d1a40
[GH-5] Fix prose typography colors for light/dark mode 39ce6f9
[GH-5] fix: prose width buttons only appear for rendered markdown, not SVG/Mermaid 4067119
[GH-5] docs: fix insider description — may be scoped, not always full access b481d3a
[GH-5] docs: mention front-end event link button in event gateway guide bdb203c
feat: replace expiry text input with dropdown (never/1h/1d/1w/1m/1y) b247aa3
15 February 2026
fix: wrap entire startup in try/catch, surface errors instead of silent exit 1913fe1
fix: mobile header — hide redundant share UI on directories, allow header wrapping (GH-4) 6306f27
fix: header stretches to full content width when zoomed out bbebeec
fix: restore header share UI on directories — shares current page, not redundant with per-row icons 1f77d96
15 February 2026
Merge feature/GH-4-google-oauth: Google OAuth + per-row share icons 4706828
[GH-4] feat: add Google OAuth and cookie sessions (GH-4) 89b6d72
[GH-4] feat: directory outsider links, new share UI, per-insider key age (GH-4) 4cbc001
[GH-4] refactor: merge configs into jeeves.config.json (GH-4) dae22f9
[GH-4] feat: per-row share icons in directory listings — 🔗 page + ⬇ raw with shared expiry input (GH-4) f0e005e
[GH-4] feat: remove dangerous executable distinction — all files navigable and downloadable (GH-4) d974f3b
[GH-4] feat: outsider directory shares show navigable breadcrumbs from share root (GH-4) 0e93d19
[GH-4] feat: copy-key button, insider seeds for outsider URL auth (GH-4) aa4f42b
[GH-4] feat: remove key params from insider links — cookie auth makes them unnecessary (GH-4) 5509823
[GH-4] fix: share endpoint supports insider seeds and session cookie auth (GH-4) 4541572
[GH-3] Log full body for unmatched events (remove 200-char truncation) 639c4df
[GH-4] fix: serve favicon.svg route — was referenced in HTML but never served (GH-4) 5543ff8
[GH-4] fix: redirect URI uses Host header for correct port (GH-4) 2b6e43f
[GH-4] feat: Raw option in link dropdown for embeddable URLs (GH-4) 14098a0
[GH-4] fix: session cookie secure flag for http dev 903e00f
15 February 2026
v1.1.0: TypeScript/Fastify refactor, event gateway, named keys with scopes f3711f8
Merge feature/GH-3-ts-refactor: TypeScript/Fastify refactor with event gateway and named keys a920a99
[GH-3] TypeScript refactor scaffolding and core modules 8dd0b92
[GH-3] Decompose path route into sub-modules c369969
[GH-3] Complete path and about routes ffef74a
[GH-3] implement event gateway with durable queue and logging 2eaef85
[GH-3] Add comprehensive tests for util modules (crypto, formatters, fileDetection) 3536fdd
[GH-3] Auth: multiple API key seeds with optional scopes (preserve HMAC model) 00b1e67
Document event gateway and config redesign in README 3f904ca
[GH-3] Fix lint errors 09d8c28
[GH-3] Fix tsconfig, add prebuild clean, add tsconfig.eslint.json 8d08742
[GH-3] Fix stan: add placeholder test, configure knip for in-progress refactor e91697d
[GH-3] fix build scripts: increase typecheck memory, ensure dist dir for lint, exclude dist from vitest d909a60
8 February 2026
Reduce PDF/DOCX font sizes to 10pt base 2617ac9
Fix PDF font size - add 10pt to PDF-specific styles 18b3505
7 February 2026
Fix raw download for markdown files 25952cd
Add top hat branding to outsider pages, improve filename display cacbb60
Add 'Jeeves Server' tooltip to top hat in all modes 26902d4
7 February 2026
7 February 2026
Add HTML wrapper for SVG files with proper constraints edf794b
Allow clickthrough on binary files, block only dangerous executables be338eb
Fix panzoom overlay sizing for tall SVGs - strip inline styles, size based on aspect ratio 1fabf75
Panzoom SVG overlay: pan/zoom wrapper div (overflow visible) to prevent initial right-shift e5d85c0
Simplify panzoom SVG sizing - use max-width/max-height constraints 9e61f4e
Fix zoom focal point: use margin centering instead of flex to avoid coordinate mismatch 96d170d
Fix panzoom overlay: calculate explicit pixel dimensions from viewBox to fit viewport 5f5d9ce
Fix tall SVG diagrams: remove width=100% attr and inline max-width style e9557ff
Add top hat branding to outsider pages, improve filename display cacbb60
Add 'Jeeves Server' tooltip to top hat in all modes 26902d4
v1.0.1: Fix SVG panzoom overlay sizing and zoom focal point da64150
Serve SVG files as images, not as code bdb021f
Force SVG max-width with !important to override inline styles 2ac1093
Fix zoom focal point offset: attach wheel listener to panzoom target element b58f1b0
Force panzoom.reset() after init to ensure scale=1 991b9d2
Fix server.js template literal nesting bug 4e73f87
Force panzoom to start at scale=1 with no translation 6cbce2d
7 February 2026
Fix DOCX image sizing: preserve aspect ratio within max bounds 9755b15
docs: add integration guide for other projects 4512d9b
feat: detect text files by content (null bytes) instead of extension whitelist cf8c99a
fix: constrain images to fit within page dimensions in PDF/DOCX export 2e47e5a
fix: preserve image aspect ratio in PDF/DOCX export ee60f23
fix: constrain SVGs and images to page dimensions for PDF export 10993c7
v0.1.0
7 February 2026
feat: track key rotation timestamp, display relative time, DRY up header components 993023e
Add heading anchors, TOC, and Windows path linking f49962d
Initial commit: Express server with webhook receiver, file server, and path-key auth 31c83ca
feat: add /about page with usage instructions, info button in header, adjust glow to 1px 0.2 opacity e0492c6
Add directory browser with breadcrumbs, drive listing, skip binaries 06b66ea
Sticky TOC sidebar, TOC on by default, HTML viewer for all text files 55ae006
Check path existence before linking, skip templates, handle directories, add syntax highlighting d2c6af9
docs: add 'Why Markdown?' value proposition to about page and README 77a5769
Pre-process paths before marked, support all drives, serve jsonl as text 00f1140
feat: add Raw/PDF/DOCX export buttons to about page 5141a78
Add breadcrumb navigation to all file views e3cd472
feat: add key rotation to about page for insiders dcbb328
Fix inline code path linking, add noindex/nofollow e3b7967
feat: display volume names on drives page 86308a1
feat: add top hat favicon 541ca76
feat: add tooltips to all header buttons 9c6ecbf
fix: change TOC to position:fixed to prevent scroll jitter 33257a8
fix: TOC sticky position below header (top: 42px) 954027c
feat: add download icon to files that will download in directory view 78f5bea
Handle bare drive letter paths (c -> C:\) 49b10d6
style: truncate breadcrumb paths with ellipsis, nowrap header actions c53a82f
fix: update in-memory API_KEY after rotation so new key works immediately c876198
style: replace info emoji with bold question mark 90f2a48
style: add padding-top to TOC title for more whitespace fae3a97
style: add subtle shadow to header in light mode 42e1bfe
fix: add explicit font-family to header for consistency across pages 19418f4
fix: include insider key in about link for insiders 33172c9
fix: restore spacing around breadcrumb separators with nbsp 3b85d55
style: vertically center header items (align-items: center) 68c9a57
style: align header items to bottom (flex-end) b60b30b
style: change header shadow to white outer glow 4f72ef8
fix: increase scroll-margin-top to 80px c4a1ee0
fix: add scroll-margin-top to headings for sticky header offset 9c649d1
Fix View Raw link to include key 65fafdf
style: vertically center breadcrumb text with flexbox 19cebb9