From docs/design-review-2026-08.md §B2.
Problem
record-adapter-sqljs is a StackRecordAdapter only, and there is no browser StackBlobAdapter (blob-adapter-disk is Node-only) — so a browser app cannot construct a full StackAdapter without writing its own blob adapter. Attachments are load-bearing across the design (commons photo, the embed convention, avatar labels, file-ref fields), so "browser support" currently means "browser support except files," and nothing in the README says so — an adopter discovers it at integration time.
Work items
Cross-refs: #72 (streaming blob methods — worth a glance so the new adapter's shape doesn't fight it), #93 (optional-capability discovery), design-review-2026-08 §B2.
From
docs/design-review-2026-08.md§B2.Problem
record-adapter-sqljsis aStackRecordAdapteronly, and there is no browserStackBlobAdapter(blob-adapter-diskis Node-only) — so a browser app cannot construct a fullStackAdapterwithout writing its own blob adapter. Attachments are load-bearing across the design (commonsphoto, theembedconvention,avatarlabels,file-reffields), so "browser support" currently means "browser support except files," and nothing in the README says so — an adopter discovers it at integration time.Work items
blob-adapter-opfs(or an in-memory blob adapter with the samepersist-callback contractrecord-adapter-sqljsalready uses, letting the host wire it to OPFS/IndexedDB) — shaped like the existing pattern, implements the Extend the typed error taxonomy to attachment paths: blob not-found/bad-fileId (reuse) and payload-too-large (new type) #114 C3 error contract (StackNotFoundError/StackQueryError) and ideallylistFiles()so GC works in the browserStackBlobAdapter")Cross-refs: #72 (streaming blob methods — worth a glance so the new adapter's shape doesn't fight it), #93 (optional-capability discovery), design-review-2026-08 §B2.