1.15.5 (2026-08-14)
- correct canonical ForgeSworn links for toll-booth and 402-mcp
- add npm funding metadata for the project support channels
1.15.2 (2026-03-27)
- correct type mismatches in 402-announce service call (4d76482)
- update 402-announce call to v2 API (url → urls array) (529683c)
- update paymentMethods to 402-announce v2 array format (7df22a6)
1.15.1 (2026-03-24)
- announce IETF Payment pmi tag when realm is configured (f1abb5e)
1.15.0 (2026-03-24)
- add an nwc lightning backend
- publish the built package exports
- migrate to toll-booth 6 and restore releases
- add IETF Payment session intent support (51f3516)
1.14.1 (2026-03-24)
- allow Google Fonts in CSP for landing page typography (3dc4a50)
1.14.0 (2026-03-24)
1.13.1 (2026-03-24)
- branding — OG meta tags, ForgeSworn links, IETF Payment mention (2fa82fb)
1.13.0 (2026-03-24)
- dual-scheme discovery — llms.txt and .well-known/l402 (e9d4559)
1.12.1 (2026-03-24)
- add explicit L402 rail for dual-scheme challenges (4756ae4)
1.12.0 (2026-03-24)
- upgrade to @forgesworn/toll-booth + IETF Payment auth (150a470)
1.11.0 (2026-03-17)
- auto-melt Cashu ecash to operator Lightning node (9baa006)
1.10.0 (2026-03-17)
- add missing x402 and transport deps to E2E test (dc28029)
- update AuthMiddlewareConfig for cashu auth mode, revert cli.ts (5df9738)
- add --cashu-mints/--cashu-unit CLI flags and Cashu Nostr announcement (f9c1faf)
- add Cashu ecash config parsing and auth mode inference (8dba32d)
- add Cashu metadata to well-known and llms.txt discovery (91a9341)
- wire xcashu rail, fix paymentMethods, broaden auth for Cashu (3ca5436)
1.9.0 (2026-03-15)
- add --public-url flag for explicit announce URL (bb9b186)
1.8.0 (2026-03-15)
- bump toll-booth to ^3.3.0 for credit_tiers and custom top-ups (51f8353)
1.7.8 (2026-03-15)
- add absolute stream duration cap and guard capacity slot leak (43eeceb)
- guard controller.close() in timer callbacks and sanitise array elements in logger (5d19591)
- prevent facilitator redirect-based SSRF and add error handling (633936f)
- reject empty credentials in allowlist auth (d24701e)
- sanitise nested objects in JSON logger context (b1df041)
- use canonical cwd for allowlist file containment check (65d5ea7)
1.7.7 (2026-03-15)
- add body-read deadline, facilitator size cap, upstream URL hardening (c566a33)
- canonicalise cwd in dbPath check for symlinked working directories (a2cb859)
- defer replay cache eviction until after NIP-98 authentication (84482ef)
- harden NIP-98 verification, case-normalise pubkeys, improve replay cache (3a58432)
- prevent prototype pollution in pricing, validate config bounds, add token byte floor (bc15608)
- race body reads against AbortSignal to interrupt stalled clients (553f0fc)
- re-review fixes — resolve dbPath fully, remove redundant size check, guard facilitator JSON (4f8a6a2)
- reconcile Lightning payment on body-read timeout and failure (9634876)
- resolve dbPath fallback relative to canonical cwd (9fe0781)
1.7.6 (2026-03-15)
- sanitise JSON logger values, add body-read deadline, prevent models cache poisoning (d6cbb7c)
1.7.5 (2026-03-15)
- cancel upstream on client disconnect, defer capacity until body parsed (1e8ecf0)
- complete log sanitisation coverage, align demo health endpoint (babd904)
- security audit hardening — response limits, input validation, log injection (f2b8c69)
1.7.4 (2026-03-15)
- bill completion tokens for non-streaming responses, harden streaming token counting (fa74342)
- harden config validation, path-scope allowlist-file, warn on open+tunnel (c917590)
- prevent JSON log field overwrite by spreading event data before explicit fields (a6668c5)
- read non-streaming upstream response incrementally to enforce size limit (2c32b2e)
- reject NIP-98 events when seen-ID cache is at capacity after pruning (bf21b69)
- resolve symlinks in allowlist-file path check, add negative pricing tests (b2b68c1)
1.7.3 (2026-03-14)
- upgrade GitHub Actions to v6 (Node.js 24), bump 402-announce to 1.1.2 (509894c)
1.7.2 (2026-03-14)
- warn when secrets are passed on the command line (a357a47)
1.7.1 (2026-03-14)
- add Content-Security-Policy and Permissions-Policy headers (887b45a)
- add streaming size limit, pre-check upstream Content-Length, remove hop-by-hop header (ad750af)
- address re-review findings — cap seen-ID cache, add stream error event (45074be)
- enforce rootKey minimum entropy, restrict announceKey directory permissions (ffc8b05)
- harden auth — HMAC-based timing-safe comparison, NIP-98 replay prevention, case-insensitive hex pubkeys (c8bc50c)
- pass maxBodySize to streaming proxy instead of using hardcoded 100 MiB (18ae958)
- require rootKey to be exactly 64 hex chars, matching toll-booth (79ceb2a)
1.7.0 (2026-03-14)
- correct integration test exclude pattern in CI (70c6abe)
- regenerate lockfile to resolve 402-announce from npm registry (5554825)
- regenerate lockfile with cross-platform optional deps (380bd82)
- stop logging secret key, write to file with restricted permissions (788f4e3)
- use npm registry for 402-announce, fix announcement type narrowing (cb4e077)
- add --announce config options (4834af2)
- add --announce for Nostr discovery via l402-announce (0d23a48)
- add status tag and JSON schemas to Nostr service announcement (1495451)
1.6.0 (2026-03-14)
1.5.1 (2026-03-14)
- add spacing between payment tier buttons and actions (9100278)
1.5.0 (2026-03-14)
- add custom sats amount option to payment flow (f3b9e68)
1.4.0 (2026-03-14)
- streamline payment flow — auto-load QR code like sats-for-laughs (8d80fee)
1.3.1 (2026-03-14)
- show tokens/sat instead of sats/1k tokens on model cards (2ba5714)
1.3.0 (2026-03-14)
- replace pricing chips with model selector cards (540bbdb)
1.2.1 (2026-03-14)
- model selector UX improvements (9a22de3)
1.2.0 (2026-03-14)
- show sats balance for paid users instead of estimated tokens (f64f6dd)
- add gemma3:4b as second model with per-model pricing (0c5eab6)
- add model selector pills to UI (7bb3c49)
1.1.0 (2026-03-14)
- switch free tier from per-request to per-usage (creditsPerDay) (3aec2b3)
- address code review findings (676242c)
- cache /v1/models response, validate upstream URL scheme (4f46f3b)
- disable npm publish and fetch tags in CI (deb04d4)
- exclude reasoning tokens from billing (2bf1d4c)
- extract perThousandTokens from pricing objects in landing page chips (99b5757)
- grep exact http-password line to avoid concatenating limited-access password (45e5afd)
- harden security — timing-safe auth, input validation, Content-Type checks (a5731e3)
- landing page credit persistence, free tier sync, hold display (98e69f7)
- load allowlist file before config validation so --allowlist-file works standalone (89e2de9)
- merge security-review — add models cache, stream inactivity timeout (edee94a)
- move status bar inside chat box and show balance on page load (3e176a6)
- move toll headers to post-handler middleware (f1eae63)
- pass x402 config to discovery generators in server.ts (4ba6bec)
- prevent OOM, stream timeouts, auth mode validation (240bda6)
- quote jq filter to prevent zsh glob expansion (22583b5)
- remove free request counter from status bar, only show token balance for paid credit (9cf4617)
- remove hardcoded VPS IP from deploy script (0239897)
- rename remaining Token Toll references to satgate in discovery endpoints (15109be)
- reset free token budget daily instead of per session (2b8ce41)
- security hardening — error sanitisation, response limits, config validation (cf68d3b)
- security hardening — stream leak, upstream timeout, input validation (069b41f)
- security hardening — timing-safe secrets, upstream timeouts, input validation (3f7cbd9)
- show payment overlay immediately when free tokens run out during streaming (ed1e1bb)
- show token balance instead of sats in status bar, convert using model pricing (c516fba)
- stop legacy token-toll container in deploy script (21b0c74)
- use dynamic UID for data dir ownership in deploy script (930527f)
- use Hono c.header() for credit balance headers (bfc8eda)
- use Node 24 LTS, exclude local-only integration test in CI (1abea8b)
- use published toll-booth package from npm (0c4999c)
- add --token-price and --model-price CLI flags and CliArgs fields (e53e471)
- add AI proxy handler with streaming and non-streaming support (c27d7eb)
- add allowlist identity checker with Bearer secret support (d9df302)
- add auth middleware with open/lightning/allowlist routing (d3b48d9)
- add CLI entry point with arg parsing and startup banner (e227cd2)
- add cloudflare tunnel manager with auto-detect and URL parsing (c8c1b7c)
- add concurrent request capacity tracker (64876d1)
- add config module with layered loading (023156f)
- add demo server with mock Lightning for VHS recording (7975a2e)
- add Dockerfile, .dockerignore, and Hetzner deploy script (efd3624)
- add GET / route to serve landing page (c934705)
- add Hono server with payment, proxy, and discoverability routes (cc2a1f7)
- add L402 discoverability endpoints (well-known, llms.txt, OpenAPI) (74290c8)
- add lightning backend factory for phoenixd, lnbits, lnd, cln (cd6cbb2)
- add logger module with pretty and JSON formatters (45fd4ee)
- add model pricing resolution module (c6d3bac)
- add NIP-98 schnorr verification for Nostr pubkey allowlist (cd1853f)
- add satgate landing page with chat playground (dd77bd7)
- add serviceName config and forward toll-booth context headers (b1bf358)
- add SSE streaming proxy with token counting (951c938)
- add token counter with SSE and buffered usage extraction (ed11bfa)
- add verbose and logFormat config fields (d9ab222)
- add VHS tape and hero recording GIF (5054572)
- add x402 configuration surface (env vars, YAML) (d5576ec)
- count down tokens in real time as response streams in (573e83f)
- create logger in CLI, replace console.log startup banner (e4cfde4)
- expose free tier in discovery endpoint and show balance on page load (0ecb2c9)
- extend config with lightning, auth, pricing, and tunnel fields (33f1ae9)
- finalise public API exports (ee357e4)
- implement per-token CLI pricing in loadConfig (1255fd8)
- rename token-toll to satgate (2df3d9f)
- scaffold token-toll repository (f1ea7ab)
- thread lightning backend to toll-booth and add flat pricing mode (fd1f052)
- track free token budget with real usage countdown, trigger payment when exhausted (c26f4ca)
- update CLI with lightning, auth, tunnel, YAML, and Ollama auto-detect (2354f0c)
- update discovery endpoints for x402 payment method (ff9d69f)
- update exports and package.json for npm publish (a367eb4)
- wire logger to server and proxy handler (ce2a985)
- wire x402 into token-toll server (54426b8)