Jobs admin The whole async pipeline — queue, workers, live counts, failures, per-type concurrency, schedules — readable behind system.jobs.read; requeue and cancel behind system.admin. Storage admin Deduplicated usage (originals vs derivatives, by content type and backend) and a per-family variant inventory, behind system.storage.read. Storage integrity sweeps Orphan scan and checksum verification as batched, resumable job kinds. Findings are advisory — no destructive cleanup yet. Real version in About An anonymous /build-info endpoint replaces the hard-coded placeholder; the displayed licence is AGPL-3.0-only. Help visible to read-only operators Documentation, shortcuts, about, release notes and support are public admin tiles on desktop and mobile alike. Admin UI for read-cap holders The admin menu and route guard gate per tile on the capability each surface actually enforces, so a read-only role can browse what its caps permit. Media derivatives on seed and upload col / hires / screen thumbnails plus video hover-scrub sprite sheets, so the browse grid renders real thumbnails. Read-only admin access A role can hold *.read admin capabilities without the system.admin superuser cap; six previously superuser-only surfaces render read-only. Responsive + accessible UI Fluid from a 390px phone to a 3840px ultrawide with no breakpoint cliffs, a single-column feed view, and WCAG 2.2 AA target sizing on coarse pointers. Featured curation seeded The admin Featured rail and the public collections featured tab both show content on a fresh seed. Admin tiles unlocked (Tier 1–2) Audit-log viewer, per-user sessions and capability grants, resource requests, trash with soft-delete restore, system log, and an API explorer served from the Go binary. Demo mode Env-gated AA_DEMO_MODE — credential hint, fill button, and a read-only banner. Off by default, zero footprint on real installs. Public read-only demo demo.artist-alley.org runs the release image behind a write-blocking edge, seeded, and redeploys on each release. Burnt/Steel brand palette The finalised chevron mark, AA-verified burnt accent and steel secondary, and the configured site name honoured throughout. Job + saved-search fixes Per-type concurrency caps applied in the worker pool; the saved-search notify coordinator no longer spins. Media processing restored The in-process worker pool never claimed jobs on a fresh install, so no thumbnails, previews, transcripts or embeddings generated. Single-binary deploy One Go server with the SvelteKit SPA embedded via go:embed. Postgres plus a storage volume, filesystem or any S3-compatible bucket. Identity, auth + capabilities Sessions, scoped API tokens, roles and capabilities, password policy, and an SSO provider-config surface. Upload → posts → collections Drag-anywhere upload with a background queue, per-row tags and per-asset metadata, and full-text search across all of it. Admin-extensible metadata Operators define typed custom fields per asset-type and per collection, with per-field capability gates and audit history. Universal asset viewer + format coverage One shell hosting image, video, audio, PDF, font and 3D bodies over a shared anchor model — HDR/EXR, HLS video, waveforms, font specimens, glTF/GLB/OBJ/FBX. Federation — ArchivePub v1.0 The reference implementation of the walled-garden federation protocol: signed envelopes, share-list access control, delivery worker, encrypted tiers. Admin + account shells, theme + i18n A capability-gated admin menu with real config surfaces, an account shell, M3-shaped light/dark palettes, and the per-user language foundation. Public visibility tier + single predicate A public tier for collections and posts, with all three anonymous cases living in one visibility predicate that every read path splices in. Asset browse through the predicate Browse was static generated SQL and the one read path visibility could not reach; converted to hand-built SQL and gated. Anonymous reads Anonymous callers can read public-tier bytes and the list/get operations for assets and collections. This also closed a pre-existing hole where any signed-in account could read any asset or collection by id. Collection-contents gate The last endpoint a public collection page needs. Also closed a hole where any authenticated caller could enumerate the contents of any collection. Public browsing toggle Anonymous access is an operator choice rather than a property of the software, and it is off by default. A fresh install serves nothing anonymously until an operator enables it, and enforcement lives at the API — with it off, anonymous requests are refused rather than merely unlinked. First-boot, login and SSO all keep working with it off. Logged-out frontend Browsing without an account: listing and opening assets and collections, public collection pages that render their contents, and public images — all through the one visibility predicate, writes still authenticated. Public featured rail Curated content featured for a logged-out audience on the front page. Featuring is a placement, not a flag — the same item can be featured publicly and internally with its own order in each, and it never widens access. Scheduled actions A generic engine for changes that run at a future time — change sensitivity, soft-delete, change state, notify — cancellable before they fire, each executed atomically with its audit entry so it either fully happens and is logged or fully does not. Audit-log retention + export Per-category retention with legal-hold exemptions and a nightly enforcement pass; a GDPR erasure request anonymises a user across the log while keeping the events; and the whole log exports as streamed CSV or NDJSON over a date range, with IP addresses withheld from callers who can't see them live. Shareable asset pages Assets now have a real /assets/[id] page that opens, reloads and shares correctly; collection tiles previously dead-ended on a Not-found route. A build-time link-integrity check guards against dead internal links. 3D previews on published builds Turntable thumbnails for 3D models had silently stopped generating on released images — the published build shipped without the renderer. Restored for amd64, with a build-and-render smoke so it can't regress unnoticed. Visibility hardening Soft-deleted collections no longer appear to signed-in non-owners, and the IIIF image path enforces the same visibility rule as the browse grid, plus audit and admin-gating cleanups. Read-only viewers see the whole catalogue A content-plane read capability lets a read-only role — like the public demo viewer — see every sensitivity tier instead of blank "Preview unavailable" tiles. It grants asset-content reads only: no admin surfaces, no writes. Public profile pages Every user has a profile page — by username or stable ref — showing their display name, avatar, and the work a viewer is allowed to see. It reuses the existing visibility rules: anonymous visitors see only public work, and only when public mode is on; an owner can opt out of anonymous exposure. Cleared the last dead author and similar-asset links. Shared view controls everywhere The browse view switcher (grid, masonry, thumbnail, list) and sort now appear on profile and post-by-asset pages too, not just the main browse — one consistent control bar wherever assets are shown. Faster 3D previews, multi-file models fixed Open-format 3D (glTF/GLB, FBX, OBJ) now renders through a headless three.js worker instead of Blender — much faster, and arm64 deployments get 3D previews for the first time. Multi-file glTF (a model plus its external data and textures) now renders correctly where it used to fail silently. Blender stays as an automatic fallback.
- v0.4.0 Jobs admin
- v0.4.0 Storage admin
- v0.4.0 Storage integrity sweeps
- v0.4.0 Real version in About
- v0.4.0 Help visible to read-only operators
- v0.3.1 Admin UI for read-cap holders
- v0.3.0 Media derivatives on seed and upload
- v0.3.0 Read-only admin access
- v0.3.0 Responsive + accessible UI
- v0.3.0 Featured curation seeded
- v0.2.0 Admin tiles unlocked (Tier 1–2)
- v0.2.0 Demo mode
- v0.2.0 Public read-only demo
- v0.1.2 Burnt/Steel brand palette
- v0.1.2 Job + saved-search fixes
- v0.1.1 Media processing restored
- v0.1.0 Single-binary deploy
- v0.1.0 Identity, auth + capabilities
- v0.1.0 Upload → posts → collections
- v0.1.0 Admin-extensible metadata
- v0.1.0 Universal asset viewer + format coverage
- v0.1.0 Federation — ArchivePub v1.0
- v0.1.0 Admin + account shells, theme + i18n
- v0.5.0 Public visibility tier + single predicate
- v0.5.0 Asset browse through the predicate
- v0.5.0 Anonymous reads
- v0.5.0 Collection-contents gate
- v0.5.0 Public browsing toggle
- v0.5.0 Logged-out frontend
- v0.5.0 Public featured rail
- v0.5.1 Scheduled actions
- v0.5.1 Audit-log retention + export
- v0.5.1 Shareable asset pages
- v0.5.1 3D previews on published builds
- v0.5.1 Visibility hardening
- v0.5.2 Read-only viewers see the whole catalogue
- v0.6.0 Public profile pages
- v0.6.0 Shared view controls everywhere
- v0.6.0 Faster 3D previews, multi-file models fixed