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

    Changelog

    All notable changes to this project will be documented in this file.

    • (auth) Accept the URL key as k as well as key (#279)
    • (share) Generate share and auth URLs with k (#279)
    • (service) GET /health liveness endpoint (#259)
    • (core) TrustProxyHeaders config setting; core 0.4.0
    • (share) Report isDirectory from /api/share; server_share returns rawUrl for plain and deep file shares, none for directories
    • (share) Share-for depth-0 links carry d (#282)
    • (share) Authenticate author-written /api/raw/ links in deep shares (#269)
    • (export) Render with the internal key and never cache a failed render (#295)
    • (export) Render Mermaid file exports in a temp dir (#281)
    • (release) GitHub release notes and changelog use the new version tag (#276)
    • (auth) Build public URLs from publicUrl, not request headers
    • (share) Bind deep share keys to one path; per-entry keys in listings
    • (auth) Tighten auth on resolve-path, events and export-cache routes
    • (search) Filter search results with the content-route scope matcher
    • (oauth) Validate provider and account names before building credential paths
    • (release) Match npm-package-template-ts#30 exactly (#276)
    • (config) Require publicUrl when login flows are configured
    • (oauth) Allow @ and + in credential provider and account names
    • (sharing) Issue plain tree keys for share-for directory links without depth
    • (events) Restrict /api/events to unscoped insiders
    • (release) Pass the package-prefixed tag to git-cliff
    • (client) Keep the share query on directory entry routes under a plain outsider share
    • (oauth) Accept credential names that start with two dots
    • (oauth) Reject start origins with credentials or a fragment
    • Updated core
    • (sharing) Build share URLs and deep share contexts through shared helpers
    • (routes) Share insider, OAuth credential and public-origin guards; name event limits
    • (export) Name the render-state attribute and values shared by pages and the renderer
    • (oauth) Split the OAuth API routes into start, credential routes and a credential store
    • K parameter, /status and /health, skill additions (#279, #259, #274)
    • Deep share semantics, publicUrl and trustProxyHeaders, route auth
    • Point event log readers to /api/events and fix an en dash
    • Sync guides, skill, README and endpoint catalog with 3.15.0 behaviour
    • Directory shares from the UI are plain; deep directory shares come from the API or plugin
    • (core) Document ShareResponse.isDirectory; test /api/share isDirectory with and without a trailing slash
    • (client) Prettier-format the 3.15.0 client lib files
    • (docs) Update the deep-share validation script for k and per-path deep keys
    • (events) Pin the strict rule for insiders with any scopes configured
    • Replace constant-only and weak assertions with behaviour checks
    • Revert package version bumps (releases are done locally)
    • (client) Regenerate the client lockfile from its manifest
    • (service) Enforce insider scopes for session-authenticated requests (#271)
    • (service) Address review on insider scope enforcement (#271)
    • Release @karmaniverous/jeeves-server v3.14.1
    • Updated jeeves-core
    • Updated core
    • Release @karmaniverous/jeeves-server v3.14.0
    • Updated core
    • Release @karmaniverous/jeeves-server v3.14.0-2
    • Update root package-lock.json in release-it after:bump hook
    • [267] fix: tests and typecheck read core and CLI from source, not dist

    Service and openclaw vitest configs alias @karmaniverous/jeeves-server-core to packages/core/src, and their tsconfigs map it with paths, so typecheck and tests pass on a clean checkout with no dist/. The rollup builds override paths: {} and still build against the built core package. Service rootDir and outDir move to tsconfig.build.json (TS 6 rejects source outside rootDir).

    The config CLI test runs src/cli/index.ts through tsx instead of dist/src/cli/index.js.

    Source resolution exposes core's @deprecated mermaidCliPath, so the ignored field is no longer copied into RuntimeConfig.

    Closes #267

    • Updated core
    • Release @karmaniverous/jeeves-server v3.14.0-1
    • Adapt to puppeteer 25, archiver 8, markdown-it 15 and TypeScript 6 majors
    • (build) Clear vite native-config, chunk-size and rollup outputToFilesystem warnings
    • (release) Use --github.preRelease for release-it 21
    • (service) Merge server_config_apply patches into the runtime config file (#265)
    • Updated core
    • Updated core
    • Resolve knip findings and audit advisories (lodash-es override)
    • Apply prettier across the repo; ignore generated CHANGELOGs
    • Move every package to @karmaniverous/jeeves 0.6.0-4; allow install scripts by name
    • Release @karmaniverous/jeeves-server v3.14.0-0
    • SPA auth gate path prefix for share keys
    • Release @karmaniverous/jeeves-server v3.13.1
    • (#252) Self-validating signed token, delete magicLinkState
    • (#252) OTP generation, AES-256-GCM encryption, email template
    • (#252) Verification page, magicVerify route, sign-in redirect
    • (#253) Server-side auth gate in SPA fallback handler
    • (#241) Fix zero-byte ZIP export and add tar format for directories
    • Address copilot review - returnTo type guard, archive error logging, aria-labels, outsider docs
    • (#253) Remove client-side AuthGate, replace with AuthStatusProvider
    • Extract shared page shell (DRY pass - signInPage, verifyPage, pageShell)
    • Sync guides, skill, and API reference with #241 tar format, #252 OTP flow, #253 auth gate
    • Add magicToken + pageShell tests, replace trivial export/verifyPage tests
    • Dependency audit - update minor/patch deps (prettier, eslint, rollup, tailwindcss)
    • Release @karmaniverous/jeeves-server v3.13.0
    • Encode URL path segments in resolve-path API response
    • Release @karmaniverous/jeeves-server v3.12.2
    • Resolve-path route must use /api/ prefix to match middleware bypass and meta caller
    • Release @karmaniverous/jeeves-server v3.12.1
    • Expose resolve-path API endpoint, add publicUrl to server config (#247)
    • Prevent overlapping event queue batches, add eventQueue config (#245)
    • Make resolve-path endpoint unauthenticated (#247)
    • Remove publicUrl from plugin config, make eventQueueConcurrency configurable (#245, #247)
    • Address Copilot review โ€” drainLoop error handling, resolve-path 404/400, absolute path validation, stale cursor recovery (#245, #247)
    • Updated core
    • Extract resolveEventPaths helper, add skipAuth to ApiToolConfig (#245, #247)
    • Update guides for eventQueue, eventQueueConcurrency, publicUrl, server_resolve_path (#244, #245, #246, #247)
    • Sync skill, guides, and config reference with touched code (#244, #245, #246, #247)
    • Replace trivial eventQueue tests, add resolve-path and config path resolution coverage (#244, #245, #247)
    • Release @karmaniverous/jeeves-server v3.12.0
    • Include guides/ in package files (fixes /readme 404)
    • Release @karmaniverous/jeeves-server v3.11.4
    • Dynamic favicon from config
    • Restore accidentally deleted types in types.ts
    • Use correct versions for updated dependencies
    • Lintfix
    • Release @karmaniverous/jeeves-server v3.11.3
    • Unified code block toolbar with word-wrap toggle and copy button
    • Update README, user guide, and spec for unified code block toolbar
    • Release @karmaniverous/jeeves-server v3.11.2
    • SPA sign-in, public content routes, magic link, URL encoding, dark mode
    • Address Copilot review โ€” XSS, open redirect, async I/O, React anti-patterns
    • Resolve lint warnings โ€” tsdoc escaping, restore eslint-disable, setState anti-pattern
    • Updated core
    • Replace all FastifyPluginAsync eslint-disables with FastifyPluginCallback
    • Release @karmaniverous/jeeves-server v3.11.1
    • Expand config schema for magic link auth and instance branding
    • Surface branding in /status, redact emailAuth in /config
    • Add branding context and wire into App and Header
    • Add mailer service for magic link auth (nodemailer + handlebars)
    • Magic link backend routes + token state + transport init
    • Redesign sign-in page with email magic link form and branding support
    • Address Copilot PR review comments on magic-link-branding
    • Resolve lint errors (prettier, deprecated z.email, unnecessary optionals, async mocks)
    • Only show auth buttons for fully configured modes (getEffectiveAuthModes)
    • Updated core
    • SOLID/DRY pass - generic TTL map, DEFAULT_BRANDING, setSessionCookie, renderErrorPage, export DEFAULT_TEMPLATE
    • Update guides, README, and skill for magic link auth and branding
    • Fix stale auth references in setup, SKILL, and api-integration guides
    • Add ttlStateMap, errorPage tests; improve email tests with mock transport
    • Release @karmaniverous/jeeves-server v3.11.0
    • Add logging.level and logging.file config support (#213)
    • Auth-gated SPA fallback with branded sign-in page (#214)
    • Show edit button on rendered tab for insiders (#211)
    • Address Copilot review and CI smoke test failures
    • Updated core
    • DRY deep-share param extraction, remove redundant nullish coalescing
    • Sync README, guides, and core exports with touched code
    • Sync SKILL.md and api-integration guide with touched code
    • Add tests for extractDeepParams and sanitizeReturnTo, consolidate signInPage tests
    • Add zod direct dependency, remove stale package-directory
    • Release @karmaniverous/jeeves-server v3.10.15
    • Updated deps
    • Release @karmaniverous/jeeves-server v3.10.14
    • Add content/ to service package files field
    • Background-cache service health checks in /status (#177)
    • Scope refresh timer and add error handling per review
    • Release @karmaniverous/jeeves-server v3.10.13
    • Thread auth key through Puppeteer export for raw image resolution (#220)
    • Restrict auth key interception to local origin
    • Merge remote-tracking branch 'origin/bugfix/220-raw-image-export-auth' into chore/ncu-update-and-hoist-144
    • Updated core
    • Use substituteEnvVars from @karmaniverous/jeeves core (#144)
    • Update dependencies via ncu --peer
    • Release @karmaniverous/jeeves-server v3.10.12
    • Strip fragment from href before resolving deep share link target path
    • Use strict undefined check for empty fragment preservation
    • Release @karmaniverous/jeeves-server v3.10.11
    • Pin jeeves-server-core dependency to ^0.1.2
    • Release @karmaniverous/jeeves-server v3.10.10
    • Export config Zod schema via core package (#204)
    • Resolve lint errors in export ordering and stale disable directive
    • Remove unused zod dependency from service package
    • Bump @karmaniverous/jeeves to ^0.5.10
    • Apply safe dependency updates
    • Fix knip configuration hints
    • Update all deps and migrate core/service to rollup+ts builds
    • Merge main into branch, resolve package.json conflicts
    • Release @karmaniverous/jeeves-server v3.10.9
    • Include scripts/ in service package files for postinstall
    • Merge remote-tracking branch 'origin/main' into chore/git-cliff-changelogs

    Conflicts:

    packages/service/package.json

    • Release @karmaniverous/jeeves-server v3.10.8
    • Edit-cell line offset โ€” resolve td/th to table, not tr
    • Add npm publish safety net (.npmignore + gitignore *.local)
    • Add files whitelists and npm-pack-check CI workflow
    • Switch from auto-changelog to git-cliff
    • Release @karmaniverous/jeeves-server v3.10.7
    • Updated jeeves-core
    • Release @karmaniverous/jeeves-server v3.10.6
    • Mobile checkbox interaction โ€” use removeAttribute + event delegation
    • Resolve lint errors in MarkdownView scroll preservation
    • Use scroll listener for scroll preservation per review
    • Move enableCheckboxes to useLayoutEffect per review
    • Release @karmaniverous/jeeves-server v3.10.5
    • Create shared package, add missing plugin tools, DRY types (#194)
    • Resolve pre-existing knip failures
    • Upgrade client eslint to v10, fix lint errors from stricter rules
    • Rename shared package to @karmaniverous/jeeves-server-core
    • Sync all documentation with current implementation
    • Release @karmaniverous/jeeves-server v3.10.4
    • Add copy button to table cell hover controls (#188)
    • Add /api prefix to OAuth API routes (#190)
    • Guard navigator.clipboard before writeText calls
    • Resolve state.json from state root instead of package directory (#185)
    • Use path.dirname/basename for state dir resolution
    • Remove state.json and dead keyRotatedAt code (#192)
    • Updated jeeves core
    • Release @karmaniverous/jeeves-server v3.10.3
    • Store insider seeds in config.json instead of state.json (#185)
    • Release @karmaniverous/jeeves-server v3.10.2
    • Authenticate embedded images for all outsider shares (#183)
    • Release @karmaniverous/jeeves-server v3.10.1
    • /go/:slug shortlink redirects (#180)
    • Resolve serverRoot via package.json discovery (#178)
    • Release @karmaniverous/jeeves-server v3.10.0
    • Markdown-it migration, block editing, OAuth2 flow (#162, #163)
    • Cell edit popup textarea
    • Block type label in edit popup
    • Client-side undo/redo stack
    • Resolve remaining React lint errors
    • Resolve all pre-existing eslint errors
    • Address Gemini review โ€” undo correctness, reactivity, DRY, cleanup
    • Preserve source mapping on diagrams and HTML blocks for block editing (#167)
    • Constrain edit popup height to prevent overflow (#168)
    • Address Gemini review โ€” remove redundant variable, handle indented HTML blocks (#168)
    • Resolve built client dir when running under tsx (#170)
    • Address Gemini review โ€” env vars, path-based detection, cross-platform docs (#170)
    • Exclude dist/src from source-mode detection to fix CI smoke tests (#170)
    • Add line wrapping and contained positioning to popup CodeEditor (#172)
    • Unify cell/block editor, pure flex height chain, SOLID/DRY cleanup (#172)
    • Ctrl+Enter save keybinding โ€” use Prec.highest to override basicSetup (#175)
    • Move undo/redo to header, preserve scroll on save (#174, #176)
    • Move undo/redo to document toolbar next to width buttons (#174)
    • Release @karmaniverous/jeeves-server v3.9.0
    • Updated jeeves-core
    • Release @karmaniverous/jeeves-server v3.8.5
    • Prettier formatting in toggleCheckbox route
    • Make clear-cache visible to outsiders in download menu
    • Move DownloadDropdown outside isInsider gate in DirectoryRow
    • Lintfix
    • Release @karmaniverous/jeeves-server v3.8.4
    • Checkbox click handler โ€” use native capture-phase delegation via ref callback, fix mtime stale-write flow
    • Fix
    • Simplify checkbox toggle to fire-and-forget (no mtime, no conflict)
    • Release @karmaniverous/jeeves-server v3.8.3
    • Use descendant selector for checkbox indexing (li > input -> li input)
    • Release @karmaniverous/jeeves-server v3.8.2
    • Checkbox toggle click handling for dangerouslySetInnerHTML
    • Release @karmaniverous/jeeves-server v3.8.1
    • Add checkbox indexing and mtime to markdown pipeline (#154)
    • Add POST /api/file/*/toggle-checkbox endpoint (#154)
    • Wire MarkdownView checkbox toggling (#154)
    • Correct /events route path to /api/events (#156)
    • Address Gemini review โ€” URL boundary, checkbox regex, Cheerio, race condition
    • Toggle-checkbox route wildcard position (CI fix)
    • SOLID/DRY pass across v3.7.0 changes
    • Sync documentation with v3.7.0 implementation
    • Fix prettier formatting in markdown tests
    • Improve coverage and remove trivial tests
    • Bump versions (service 3.7.0, openclaw 0.8.0)
    • Release @karmaniverous/jeeves-server v3.8.0
    • Release @karmaniverous/jeeves-server v3.6.5
    • Unhoisted jeeves
    • Release @karmaniverous/jeeves-server v3.6.4
    • Hoisted jeeves
    • Release @karmaniverous/jeeves-server v3.6.3
    • Consume core importMetaUrl for plugin install (#150)
    • Release @karmaniverous/jeeves-server v3.6.2
    • Update @karmaniverous/jeeves to ^0.5.3 and bump minor/patch deps
    • Update @types/node to ^25.5.2
    • Update @karmaniverous/jsonmap ^0.3.1 โ†’ ^2.1.1
    • Release @karmaniverous/jeeves-server v3.6.1
    • Phase 1 โ€” core service adoption (getServiceUrl, getBindAddress, Node 22 fast-fail)
    • Phase 2 โ€” core v0.5.1 wiring (cleanup escalation, getPackageVersion, substituteEnvVars TODO)
    • Phase 3 โ€” UX improvements (CSV tables, directory item counts, collapsible frontmatter, collapsible TOC)
    • Address code review โ€” async directory reads, CSV row normalization, extract mapDirectoryEntry
    • Split TocSection.tsx โ€” move utilities to tocUtils.ts (fixes react-refresh lint)
    • Phase 4 โ€” documentation updates for v3.6.0
    • Fix Node version in deployment guide (20 โ†’ 22)
    • Add missing test coverage for v3.6.0 features
    • Phase 5 โ€” quality gates clean (knip fixes, remove package-directory dep)
    • Remove TASK.md build artifact, DRY up Node version check and fix minor issues
    • Release @karmaniverous/jeeves-server v3.6.0
    • Bump core to v0.4.6 (init before run) + fix knip issues
    • Bump core to v0.4.6 (init before run) + fix knip issues
    • Release @karmaniverous/jeeves-server v3.5.2
    • Integrate descriptor.run from core v0.4.5
    • Release @karmaniverous/jeeves-server v3.5.1
    • Replace cosmiconfig with direct JSON config loading
    • Use getBindAddress from core, replace localhost with 127.0.0.1
    • Define JeevesComponentDescriptor for server component
    • Add GET /api/events endpoint for event log queries
    • Add POST /config/apply endpoint using createConfigApplyHandler
    • Use static bind default, bump openclaw core dep, remove local stub
    • Decode HTML entities in TOC heading text (#102)
    • Show user-friendly search error messages (#98)
    • Encode browse path segments in API calls, add SPA catch-all (#50, #127)
    • Resolve lint errors from core v0.4.4 migration
    • Resolve startCommand path absolutely for CI compatibility
    • Align config validate test assertion with core SDK output
    • Replace hand-rolled package.json walk with packageDirectorySync (#96)
    • Migrate GET /status to createStatusHandler factory
    • Migrate openclaw plugin to core v0.4.4 SDK
    • Replace hand-rolled CLI with createServiceCli(descriptor) (#106)
    • SOLID/DRY cleanup
    • Sync documentation with SDK adoption changes
    • Add title front matter to all guides
    • Add tests for diagramExport and sharing helpers
    • Bump @karmaniverous/jeeves to ^0.4.3, remove cosmiconfig dep
    • Update deps (peer-safe)
    • Release @karmaniverous/jeeves-server v3.5.0
    • Release @karmaniverous/jeeves-server v3.4.2
    • Runner proxy routes call /status instead of /stats and /health (#120)
    • Runner proxy routes call /status instead of /stats and /health (#120)
    • Release @karmaniverous/jeeves-server v3.4.1
    • Bump core to v0.3.0 and consolidate status endpoint (#117)
    • Release @karmaniverous/jeeves-server v3.4.0
    • Add host bind and metaUrl config options
    • Release @karmaniverous/jeeves-server v3.3.1
    • Core v0.2.0 SDK adoption (#111) (#111)
    • Release @karmaniverous/jeeves-server v3.3.0
    • Release @karmaniverous/jeeves-server v3.2.1
    • Add tagPrefix to auto-changelog config for monorepo tags
    • Full documentation pass with PlantUML diagrams
    • Fix diagram image paths in guides
    • Release @karmaniverous/jeeves-server v3.2.0
    • Explicit scope overrides take precedence over named scopes
    • Release @karmaniverous/jeeves-server v3.1.3
    • Parse inline tokens in heading renderer (code spans, bold, italic)
    • Release @karmaniverous/jeeves-server v3.1.2
    • Rendered tab persists when switching to Raw on watcher-rendered files
    • Rendered tab persists when switching to Raw on watcher-rendered files
    • Prevent full data reload on tab switch (only reload on path change)
    • Revert "fix: Rendered tab persists when switching to Raw on watcher-rendered files"

    This reverts commit 572cec8bc999df7e834fa66ff948747f2d35be32.

    • Release @karmaniverous/jeeves-server v3.1.1
    • Extend /api/status with ?events=N for recent event log (#89)
    • Render text/number facets as text inputs, chips for select/multiselect
    • Schema-driven facet rendering by uiHint
    • Two-step facet selection + garbage value filtering
    • Garbage value diagnostics for inference rule debugging
    • Metadata chips on search results with click-to-filter
    • Search facets, metadata chips, and click-to-filter
    • Cap schema-driven facet chips to fields with โ‰ค30 values
    • Use type=number input for number facets
    • Increase facets timeout to 15s, add error logging
    • Restore eager facet loading on modal open
    • Text/number facets skip value cleaning, cast values to String
    • Restore light mode text-foreground on Add Filter menu labels
    • Make +N more chip overflow a clickable link that expands the result
    • Close SearchableSelect dropdown on outside click (capture phase)
    • Remove hardcoded filters, fix lazy facet loading
    • Document ?events=N query param on /api/status
    • Lazy-load facets only when 'Add filter' is clicked
    • Release @karmaniverous/jeeves-server v3.1.0
    • Updated docs
    • Refresh README and guides for v3 CLI + config
    • Add typedoc config and dependencies
    • Add changelogs as children of package guide indexes
    • Add guide index content and fix typedoc trailing comma
    • Release @karmaniverous/jeeves-server v3.0.1
    • Release @karmaniverous/jeeves-server v3.0.0
    • Named access scopes (#84) (#84)
    • Make resetConfig reload runtime config
    • Plugin auth chain, status endpoint improvements (#83) (#83)
    • Normalize path for watcher render (Windows backslash + uppercase drive)
    • Resolve remaining lint errors (type annotations, unused params, unnecessary conditionals)
    • Lintfix
    • Add knip configs, remove dead exports, clean all code quality checks
    • Release @karmaniverous/jeeves-server v3.0.0-1
    • Migrate config from jiti/TS to cosmiconfig/JSON
    • Add CLI commands (start, config validate/show, service)
    • Add GET /api/status endpoint
    • Internalize diagram dependencies (mermaid/plantuml)
    • Add GET /api/link-info endpoint
    • Add scroll anchoring for async diagram renders
    • Add GET /api/search/facets proxy endpoint
    • Schema-driven search facet filters (Step 10)
    • Document rendering pipeline (Phase 4, Steps 16-18)
    • Set rootDir and update start script path for monorepo layout
    • Adjust rootDir depth for monorepo dist/src/config path
    • Adjust relative paths for monorepo dist/src/ layout
    • Cosmiconfig searchPlaces, SOLID/DRY pass, test coverage
    • Resolve package.json path portably for version
    • Remove unused parameter in linkInfo test
    • Add missing return-await in facets handler
    • Address Gemini code review feedback across PRs #65-#76
    • Address all gap analysis findings
    • Force white background in panzoom fullscreen (dark mode)
    • Resolve all client ESLint errors and warnings
    • Resolve knip unused files, dependencies, and exports
    • CI failures and SvgViewer panzoom re-init bug
    • CI rimraf resolution and remove redundant client steps
    • Incorporate main (PR #77 gap-analysis)
    • Publishconfig public access
    • Monorepo scaffolding (Phase 1, Step 1)
    • Extract buildRuntimeConfig to resolve.ts (DRY)
    • Extract shared renderMarkdownContent pipeline
    • Add resolve.ts unit tests (21 tests)
    • SOLID/DRY/test coverage pass
    • Migrate default port to 1934
    • Add tsdoc.json to both package roots
    • Add tsdoc.json to both package roots
    • Make both packages releasable
    • Add client as workspace member, align puppeteer versions
    • Release @karmaniverous/jeeves-server v3.0.0-0