@karmaniverous/jeeves-server
    Preparing search index...

    All notable changes to this project will be documented in this file. Dates are displayed in UTC.

    • 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
    • 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

    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