Changelog
View SourceThe format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.7.0] - 2026-08-30
Changed
- livery 0.6.1 to 0.9.2 and barrel_mcp 2.3.0 to 3.0.1: the standalone server now serves MCP protocol 2026-07-28, and h1 0.9.1 (via livery 0.9.2) fixes chunked uploads that were answered
400 Chunk size is not valid hexwhen a socket read split a chunk-size line between its CR and LF, which large attachment pushes hit under load. Nothing in the server's own API changes; consumers that embed the suites note thatlivery:which_listeners/1reports a list of ports per protocol since livery 0.8.0 (the suites go throughbarrel_server_test:h1_port/1), and that MCP 2026-07-28 removedping: the 3.0 client refuses it on a modern session, so the suites probe readiness withlist_tools/1instead.
Added
- Live queries on a 2026-07-28 MCP connection (which carries no session) belong to the authenticated principal:
max_per_sessionbounds each owner, and a principal-owned query is swept afterorphan_ttl_ms(default 600000) without a read. Session-owned queries still go with their session. {barrel_server, mcp, #{request_state_key => Key | {file, Path}}}seeds barrel_mcp's HMAC key for multi round-trip request state at start. Every node of a fleet must carry the same key or a retry landing on another node fails; without it barrel_mcp uses an ephemeral key and warns at start.
[1.6.0] - 2026-08-26
Added
- Signed-request verification accepts signature v2 (per-request nonce, path plus raw query string signed) next to v1. New auth option
require_nonce => truerejects v1 once the fleet has rolled; v1 acceptances log at debug level so you can tell when that is. Upgrade servers before clients: a v2 client against a 1.5.x server is refused.
Changed
- mTLS is documented for what it is: a transport gate that authenticates the CA a client certificate chains to, not the peer. Identity and per-database rights come from bearer or signed auth layered on top.
[1.5.0] - 2026-08-15
Fixed
ngram_searchno longer silently stops returning results for a database whose corpus was indexed beforebarrel_ngram0.9.0 (which now rejects a corpus with nocorpus.metaon open). It now reindexes automatically on first use after the upgrade instead of leaving every subsequent search permanently returning nothing.
[1.4.0] - 2026-08-09
Added
PUT /db/:nameaccepts anatt_optsJSON body to select the attachment backend (e.g. S3) at creation time.- The attachment
PUTroute wiresIf-Match/If-None-Matchheaders tocreate_only/expected_etagwrite-conflict detection.
[1.3.0] - 2026-07-19
Added
ngram_searchMCP tool: exact substring or regex (mode literal or regex) search over a database's documents via the barrel_ngram trigram index, each hit carrying the document id and match spans. Read-only; the corpus is opened lazily per database.
[1.2.1] - 2026-07-18
Fixed
- A signed attachment upload binds the body to the signed
x-barrel-content-sha256header (not the unsignedx-barrel-digest), so an on-path body swap on a signed upload is rejected. - mTLS is dropped from the accepted auth set unless the listener sets
verify_peer, so a certless client is never authenticated by a config gap. - The replication changes wire filter bounds regex work and nesting depth
(ReDoS), and vector search
kis clamped. - The live-query bridge opens databases in the caller, so a cold open no longer blocks other subscribe/snapshot/unsubscribe calls; a snapshot reuses a cached id-sorted view instead of re-sorting in the loop.
[1.2.0] - 2026-07-17
Added
- Signed-request auth for the sync wire: Ed25519 signatures over
ts|keyId|method|path|sha256(body), with replay protection and a skew window. Enabled byauth => #{accept => [..., signed], signers => #{KeyId => PubKey}}. - mTLS transport gate: TLS listeners with
verify => verify_peerrefuse a client without a CA-signed certificate (accept => [mtls]). - Multi-protocol serving:
listeners => #{http, https, http3}serves HTTP/1.1, HTTP/2, and HTTP/3; a sharedtlsconfig drives the TLS listeners. See the synchronization guide.
Changed
- The
authkey is unchanged without anacceptlist (bearer-only, as before); the new methods are opt-in and additive. H3 is TLS-serving but not yet a client-cert gate; mapping a client cert to an identity needs a livery change.
[1.1.0] - 2026-07-14
Added
barrel_server_api: exposes the REST/sync routes as a grouped livery route list (routes/0,1) and compiled router (router/0,1) so a host livery application can mount them, optionally under a sub-path, and own auth. Groups:meta,db,sync,timeline,search,spaces,mcp; the default is the DB surface (db,sync,timeline,search). See the embedding guide.
Changed
barrel_server_httpassembles its route table frombarrel_server_api(groups => all); the standalone service behaves as before.
[1.0.1] - 2026-07-11
Fixed
- Declare the sibling Hex dependencies (barrel, barrel_spaces). 1.0.0 omitted them (they were in a
hexprofile, which rebar3_hex drops).
[1.0.0] - 2026-07-10
First tagged release of the network server: REST/JSON and MCP over barrel
and barrel_spaces using livery. The full server test suite set now runs in
CI. See the umbrella CHANGELOG.