0.2.1 (2025-12-15)
0.2.0 (2025-09-16)
0.1.1 (2025-09-11)
- require Node 22 LTS; drop Node 20\n\n- Default Makefiles to NODE_VERSION=22 and add .nvmrc\n- Set engines to "node": ">=22" in all packages/examples\n- Update README, AGENTS, PLAN, BLUEPRINT, CONVENTIONS, TODO to Node 22\n- Remove remaining references to Node 20 in docs
- npx-ready CLI (help/version) + tarball check; drop resource copy\n\n- Add ESM bin launcher with --help/--version for scan-mcp\n- Wire scripts/check-tarball.mjs and Makefile pack-check into verify\n- Use local npm cache for pack checks; fix lint error\n- Publish-ready npm setup for npx (prepack, files, repo metadata)\n- Remove resource copy from build; load ORIENTATION.md from resources/\n (b0a3830)
- pr2: improve local dev loop (eslint, Makefile), add missing schemas, config; update README and TODO (dd22e97)
- rename start here tool and return full orientation (a58a930)
- scan-mcp: add /scan/list_jobs tool, manifest/events MCP resources; tool descriptions + input schemas; prefer make targets; docs TODO updated (ce669a8)
- scan-mcp: add logger factory and HTTP request debug with masked auth\n\n- createLogger(): stderr in stdio, default in HTTP\n- maskAuthHeaders() for safe header logging\n- Log incoming HTTP requests, SSE start, and unknown-session POSTs\n (ba215b3)
- scan-mcp: add mockable scan pipeline, services, and local Makefile; real scan support with manifest/events and tiff assembly (611a24b)
- scan-mcp: add PERSIST_LAST_USED_DEVICE flag and gate last-used device persistence\n\n- Add config flag with default true\n- Save/load last-used device only when enabled\n- Update README\n- Update tests to include config field\n\nchore(scan-mcp): remove unused better-sqlite3 dependency\nchore: ignore local .state directories across repo (ce90d0c)
- scan-mcp: add Streamable HTTP + SSE server and unify registration\n\n- Add src/server/register.ts to centralize tools/resources\n- Simplify stdio entry (src/mcp.ts) to use registerScanServer\n- Introduce src/http-server.ts with Express:\n - Streamable HTTP (stateless) at POST /mcp\n - SSE (stateful) at GET /sse and POST /messages\n - Proper types and no stdout pollution; logs to stderr\n- Remove duplicated HTTP code from mcp.ts; delete old http-stream entry\n- Update package scripts: dev:http, start:http\n- Docs: README notes for HTTP/SSE usage and local dev\n- ESLint: fix no-explicit-any by precise type casts to node:http interfaces\n (b87b80c)
- scan-mcp: auto-select device/source/resolution when omitted; add make real-start-auto (b719f3e)
- scan-mcp: default to 300dpi via probe and log scanner exec (1cc5a8a)
- scan-mcp: enrich scan failure diagnostics with stderr/stdout tails\n\n- Log runDir, command, exit code/signal, and error details\n- Tail scanner.err/out logs into structured error payloads\n- Add job-level failure log with log paths and tails\n\nrefactor(scan-mcp): extract tailTextFile to services/file-io.ts\n\n- Shareable helper to read last N lines of a text file\n- Replace inline tail logic in jobs.ts\n\nchore(scan-mcp): replace explicit any with typed guards\n\n- Use unknown in catch with Execa/Node error type guards\n- Keep ESLint no-explicit-any satisfied while retaining clarity (8806152)
- scan-mcp: improve HTTP/SSE observability and client compatibility\n\n- Log HTTP requests (method, URL, masked auth) and summarize RPC (method/id/tool)\n- Log SSE session start and per-message summaries\n- Accept null values for optional inputs (start_scan_job, list_jobs)\n- Fix TypeScript lint by removing any and tightening types\n- Build + lint verified (eee9ec0)
- scan-mcp: Increase test coverage and update schema tests (67ce156)
- scan-mcp: intelligent device selection without vendor hardcodes (9ce27af)
- scan-mcp: page-size mapping (-x/-y mm), duplex-aware source selection, and last-used device persistence (3496ce7)
- scan-mcp: plan scan commands (prefer scanadf with fallback) and implement page_count document splitting (b7039ad)
- scan-mcp: scaffold MCP stdio server using TS SDK (lazy-loaded); add dev/start scripts; document transport in blueprint (e6d7dd0)
- scan-mcp: wire stdio MCP server using McpServer with correct SDK subpath imports; register scan tools; add restart context with next steps (4f44ec3)
- schema: add JSON schemas for document processing and scanning resources (cfdd47d)
- ci: Remove nvm activation and mcptools from Makefiles and docs (63894f7)
- cli: start server from bin and show correct version (837d14b)
- sanitize job path resolution (b8d124e)
- scan-mcp/http: enable dev server with tsx and bind 0.0.0.0 (54d21a8)
- scan-mcp: keep MCP stdout clean and harden child stdio (0cd1bd9)
- scan-mcp: make MCP entry type-safe for build without SDK installed; add module shims and unknown-safe handlers (fde0596)
- scan-mcp: Remove any and unknown types (29759d8)
- scan-mcp: Resolve test failures and improve mocking and test isolation. (ff96432)
- prepare initial release (6d07606)
- require Node 22 LTS; drop Node 20\n\n- Default Makefiles to NODE_VERSION=22 and add .nvmrc\n- Set engines to "node": ">=22" in all packages/examples\n- Update README, AGENTS, PLAN, BLUEPRINT, CONVENTIONS, TODO to Node 22\n- Remove remaining references to Node 20 in docs (3da05be)
- Fix the CLI launcher so the MCP server actually starts and MCP initialization no longer times out
Initial public release (0.1.0)
Highlights
- Minimal, typed MCP server for scanner capture (ADF/duplex/page-size), batching, and multipage assembly
- Deterministic JSON Schema–validated tool contracts with typed outputs
- Sensible device selection defaults; avoids camera backends and prefers ADF/duplex when available
- Mockable scan pipeline for CI and local development (SCAN_MOCK)
- CLI and npx entrypoint for quick usage (
npx scan-mcp)
Stability
- Version 0.x: APIs may evolve; breaking changes may occur between minors. We’ll stabilize before 1.0.0.
Docs
- Quick start, environment variables, and tool reference in README; deeper details in docs/