fix: refuse to boot without a usable oauth client key
fix: refuse to boot without a usable oauth client key
build: bump gleam to 1.19.2 and reformat
test(e2e): follow the AMEND label and two-step APPLY in the edit-inbox spec
chore: run a local plc directory in the e2e devnet
fix: keep refresh tokens when the oauth account check fails transiently
chore: bump lustre_dev_tools to 2.4.0
feat: compact collection headers and standardize form text
fix(devnet): harden ATCR images
fix: bound social connection index reads
docs: cut dev.sh comments back to the traps and the whys
docs: trim the readiness comments to the non-obvious parts
docs: trim the pagination cursor comments to the non-obvious parts
fix(web): drop stale browse and browse-search responses
refactor: consolidate remaining page armatures
fix: preflight-check for docker and jq before devnet image verification
fix(web): drop stale browse and browse-search responses
refactor: consolidate remaining page armatures
refactor(web): swap rsvp for the async browser xrpc transport
fix(server): validate resolved endpoints before outbound fetches
test(server): make the unreachable-endpoint stubs use ConnectionFailed
test(server): make the unreachable-endpoint stubs use ConnectionFailed
refactor(web): convert the ffi to typescript, typecheck it, and harden the scanner paths
ci: deps canary building the newest allowed dependency horizon
style(web): tighten the greenhouse hero band
docs(readme): refresh feature list, drop predecessor reference, document sdl authoring
test: compress feed-branch fixtures into builders and table-driven cases
feat(web): replace app bar and fab with masthead and bottom tab bar
feat(web): atmosphere onboarding on the login page
feat(social): taste overlap on public crate
feat(web): empty state for the edit inbox
feat(web): light/dark theme toggle in settings
feat(web): sticky chrome with scrollable list regions
feat(lexicons): draft graph.follow and feed.getFeedSkeleton
feat(web): render FORMAT/LABEL and an album-grouping hint on the pressing page
refactor(css): extract shared molecule patterns and drop section banners
feat(web): move browse genre filter behind a toggle with autocomplete
feat(server): populate release formats and discogs master id at mint time
feat(catalog): carry subject adoption count on edit proposals
feat(web): ship the greenhouse hero art
refactor(web): extract the shared suggestion row and count-noun helpers
feat(web): add pressing detail page reached from browse cards and via handles
feat(web): add edit proposal detail screen
feat(web): load more on scroll instead of button
feat(web): split record detail into pressing and record layers
feat(web): consolidate app chrome into the hero bands
style(test): drop section marker comments
style(test): drop section marker comments
style: drop section-comment dividers from files this branch touches
test(server): de-slop catalog and browse tests
style: drop section marker comments
fix(ci): materialize the lexicon-check base ref with git worktree, not tar
fix(server): exclude gone adoption edges from counts, not from storage
test(server): cover variant grouping, stats, strategy resolution, and browse handler
style(web): trim scan-batch comments to non-obvious invariants
style(web): strip photo_scan docblocks to the non-obvious
chore(docker): trim comments to non-obvious constraints
feat(lexicons): resolver-driven pinning for vendored third-party lexicons
feat(web): outside-tap and timeout disarm for armed confirms
feat(web): settings tap-target inbox row, armed log out, stable import buttons
fix(dev): escalate to SIGKILL when port 8080 survives TERM
docs(deploy): document manual publish.sh, drop the spindle-autopublish prose
ci(deploy): switch image build from buildah to kaniko (daemonless, no user namespaces)
ci(deploy): build and push with buildah, not docker (nixery runner has no daemon)
ci(test): pin CI to nixpkgs-unstable (gleam 1.17) and add bun for the frontend bundle
fix(build): pin Bun into the image so the frontend bundle needs no build-time download