Changelog
Latest release notes, updates and fixes from goosebumps.fm.
Release history is published with each goosebumps.fm update.
2.102.2 (2026-10-07)
Bug Fixes
2.102.1 (2026-10-07)
Bug Fixes
2.102.0 (2026-10-07)
Bug Fixes
api: preserve audio pages when optional metadata fails (c35a34e)
tweets: keep reader chrome stable while navigation metadata loads (79260eb)
tweets: size the replies placeholder from the known reply count (071b0d4)
www: highlight Tweets on tweet detail routes (6930ef2)
www: replace audio detail API fan-out with one page read (a163947)
www: retain empty audio description fallbacks (6db335d)
www: stop scrollbar and tweet breadcrumb from shifting layout (b9f343f)
Features
api: include parent show on audio detail (5413c92)
api: load audio detail with one authenticated read (1b54c6c)
navigation: let readers reset their tweet reading history (437796f)
posts: include reply count when reading a tweet by slug (ce9855e)
tweets: expose nearest newer unread neighbour (f5da586)
tweets: replace reader controls with a bottom reading dock (4c4399a)
tweets: resume tab reading and separate unread navigation (1d41d03)
www: add a form action that resets tweet reading history (2b1ef6d)
www: add About page and consolidate site links (ff0e68a)
www: add breadcrumbs to content detail pages (0e51601)
www: add icon-only variant for public actions (f0b6146)
www: redesign content detail page (d96cb76)
www: refresh home and station branding (7e2af2c)
www: show account avatar in station navigation (09ee07c)
www: show parent show and slug in mix breadcrumb (6b8deb5)
Performance Improvements
audio: load detail tags in the authorized query (43bf9ac)
auth: resolve sessions and users in one D1 read (0d2f0fb)
shows: compose page data in one authorized API request (9fbc5bc)
shows: project labels within content queries (b091bc6)
Unreleased
Session recap: faster mix and show pages (2026-10-06)
In brief
Reduced authenticated page-loading times while keeping real remote D1 reads. Mix pages measured 0.63–0.71 seconds, down from 1.00–1.14 seconds; show pages measured 0.68–0.77 seconds, down from 1.44–1.72 seconds. Changes are committed locally, not pushed or deployed; these are local-to-remote measurements, not production benchmarks.
Narrative
The earlier audio-page consolidation removed duplicate requests, but signed-in pages still spent roughly a second waiting on sequential database reads. Anonymous probes did not reproduce an intermittent 9–16-second spike and later exposed transient database failures. Authenticated testing became available through secret injection with 2password.
The key correction was to stop treating “the spike did not reproduce” as a reason to stop improving normal response times. Three GPT-6.1 Sol agents worked on audio queries, show-page composition, and authentication/transport. The first integrated measurements improved mixes but left shows above a second. Traces then identified separate show-label reads as the next avoidable cost; combining those queries brought shows below 0.8 seconds in the final sample.
Decisions and lessons
Fetch session and user together in one D1 statement. Keep cookie caching disabled so revocation and role changes take effect on the next authenticated request.
Fetch ordered tags within audio/show content queries instead of making separate label requests. Preserve empty-tag semantics, pagination, and draft visibility.
Load show detail through one API request instead of six. Reuse loaded content for metadata and run episodes, navigation, and subscription reads concurrently once the show is available.
Keep remote D1 for latency measurements and disposable D1 for correctness fixtures. Final measurements included 13 successful authenticated reads, both serial and with three concurrent callers.
D1 uses Worker bindings, not an application-managed database connection pool. Local remote development adds a preview-worker network leg that production does not use. Fewer database round trips benefit both paths, but production gains still need measurement.
Work and references
Audio query projection:
apps/server/src/services/audio.service.tsandapps/server/src/db/entity-label-projection.ts.Authentication:
apps/server/src/lib/auth.tsand disposable-D1 coverage inauth.d1.test.ts.Show composition:
apps/server/src/services/show-page.ts,packages/api/src/shows.ts, andapps/www/src/page/shows/detail-page-data.ts.Browser coverage:
apps/www/e2e/show-page.spec.ts.Plan:
.specs/www-content-performance/03-read-latency-plan.md.Transport findings:
.specs/www-content-performance/04-session-transport-findings.md.Measurements, trace IDs, and verification details:
.specs/www-content-performance/05-read-latency-results.md.
Commands and verification
bun precommit: passed after integration and after the final label-query changes.bun run testinapps/server: 647 tests passed before the final label follow-up; that follow-up passed 67 targeted tests across eight suites.bun run unitinapps/www: 132 tests passed. API tests: 30 passed.bun run buildinapps/www: passed; the existing large-client-chunk warning remains.Audio/show Playwright coverage initially passed all 16 Mobile Safari/Chrome cases. After the final query changes, 15 passed and one Safari navigation case was blocked by a Vite/Foldkit request-body error overlay. Both navigation cases passed in isolation; the parallel run is not claimed fully green.
Commits
dba98f42: plan parallel read-latency improvements.43bf9ac9: load audio detail tags in the authorized query.0d2f0fbe: resolve sessions and users in one D1 read.9fbc5bc4: compose show pages in one API request.fd6b92d1: cover composed show pages in mobile browsers.b091bc69: project show and episode labels within content queries.37252c13: record remote latency gains and validation.
Open threads
The remaining critical path is approximately three sequential remote waits. Investigate further overlap or deployment placement with measurements rather than adding speculative caching or retries.
The earlier intermittent latency spike and database failures remain unexplained, not fixed by assertion.
Investigate the Vite/Foldkit “Response body object should not be disturbed or locked” error seen during parallel browser testing.
Smart Placement and selective replica reads remain proposals. Neither was applied; authentication consistency must be preserved.
2.101.0 (2026-10-03)
Features
2.100.3 (2026-09-27)
Bug Fixes
2.100.2 (2026-09-26)
Bug Fixes
2.100.1 (2026-09-26)
Bug Fixes
2.100.0 (2026-09-24)
Bug Fixes
www: align composer widths and surface editorial artwork (61bf5a9)
Features
www: add # tag autocomplete to the markdown editor (7d8b692), closes #fragment
www: hide editor view-mode toggle in the composer (4923b7c)
www: two-step composer with autosave drafts and a publish modal (7edc96f)
2.99.0 (2026-09-24)
Bug Fixes
editorial: stop hashtag stripping from corrupting markdown and word-joined text (91f1ac8)
Features
www: unify tweet and editorial into one /new composer (89e1475)
2.98.1 (2026-09-24)
Bug Fixes
2.98.0 (2026-09-24)
Features
2.97.1 (2026-09-23)
Bug Fixes
editor: stop pointing TypeScript SDK at tsgo (5769b15)
2.97.0 (2026-09-19)
Features
2.96.1 (2026-09-18)
Bug Fixes
2.96.0 (2026-09-17)
Features
2.95.0 (2026-09-13)
Features
2.94.0 (2026-09-13)
Features
2.93.1 (2026-09-06)
Bug Fixes
music: fail fast on unknown entity types (d2eb19e)
2.93.0 (2026-09-05)
Bug Fixes
editorial: keep embed pickers inside the workspace dialog (16902fc)
gap on editor toolbar (44b725c)
spotify: load every album and playlist track page (0cd2065)
Features
music: share track lists and listening controls across embeds (c7e3518)
2.92.0 (2026-09-05)
Bug Fixes
music: derive link identity from parsed source (6c16d67)
music: enforce parser-supported link identity (1128cad)
music: keep playlist link sync best effort (006c0db)
music: make identity refresh deterministic (f3340ea)
music: preserve canonical metadata on verification (f6d280a)
music: preserve legacy link workflows (bca5e22)
music: return copied artist artwork URL (1126eab)
music: sanitize playlist enrichment failures (47085c8)
server: restore atomic remote D1 batches (80bd26d)
server: restore valid remote D1 queries (310f453)
Features
editorial: share music resolution cache (bdd895f)
music: add canonical source identity schema (0cf831f)
music: add identity maintenance tooling (7089351)
music: add identity rollout telemetry (6981bf5)
music: resolve canonical source identities (b0126d8)
music: route callers through canonical identity (7264dc1)
2.91.0 (2026-09-03)
Bug Fixes
dev: pin local worker ports (f53bb1c)
editorial: clarify description field (6869700)
editorial: consolidate writing controls (06c508f)
editorial: place linked music after prose (2fe1f1c)
editorial: refine the writing workspace (eef49f2)
Features
editorial: add safe external media embeds (ba37b3c)
editorial: create immersive writing workspace (56739ea)
editorial: embed pasted Spotify links (82ce028)
editorial: resolve pasted music entities (dd2d6db)
editorial: share reusable post tags (785dc3f)
pdf: isolate QR generation worker (8b8e1fb)
replace legacy markdown editor (661da0f)
tags: unify post tag discovery (e4862cd)
www: add editorial music entity embeds (256e02a)
www: redesign editorial workspace (bcce7be)
2.90.0 (2026-09-02)
Features
cdn: serve responsive image variants (665fef1)
Performance Improvements
www: request responsive artwork (25bdd99)
2.89.1 (2026-09-02)
Bug Fixes
2.89.0 (2026-08-31)
Bug Fixes
db: make the 0054 postgres migration valid postgres (bcd42b0)
server: annotate the request span callback return type (f7230f8)
server: populate replyCount on micro post listings (35fc367)
server: stop publishing a localhost sitemap (503d02f)
server: use bare crypto global so typecheck passes on clean installs (056d0f3)
www: show reply context in tweet search results (6f1848d)
www: stop tweet nav blocking on background work (918eb03)
Features
www: add navigation head model and local tweet trail (db683b1)
www: show reply counts in tweet search results (8dc181a)
Performance Improvements
db: index navigation lookups for the anti-join (bb5cd14)
server: cut navigation round trips from six to one (2315d59)
2.88.1 (2026-08-30)
Bug Fixes
tweet share card (476209b)
2.88.0 (2026-08-27)
Bug Fixes
effect: remove broad error channels (ae3561a)
Features
2.87.0 (2026-08-23)
Bug Fixes
config: point non-prod stages at their own CDN router (946066e)
deps: patch cloudflare-runtime's undefined asset-config logger (7390d32)
dev: bind local API to production D1 (fa3c9f4)
dev: run www on Vite port (392519d)
effect: add monotonic members to Clock test doubles (c02a8ff)
effect: rename Schema.TaggedErrorClass to Schema.TaggedError (d886ff5)
infra: adapt to alchemy beta.72 Worker API and pin a supported compat date (fb9a68f)
music: enforce resolver identity invariants (67f12b3)
music: preserve provider outcome semantics (bdf924e)
music: stop hiding cover upload failures on resolve (ef43f4d)
Features
infra: bind dev secrets as secret_text instead of the Secrets Store (1042170)
music: archive provider artwork (017f662)
music: resolve entities across trusted sources (2d5948b)
2.86.1 (2026-08-14)
Bug Fixes
mobile: satisfy type-aware linting (ef80286)
packages: satisfy type-aware linting (39f9c45)
server: satisfy type-aware linting (a122627)
tooling: declare Worker types for root checks (b1a83db)
www: satisfy type-aware linting (2d52f6b)
2.86.0 (2026-08-14)
Bug Fixes
add actor to request (1e35a52)
infra: restore R2 bucket CORS and port the QR PDF expiry sweep (dca249e)
music: expose resolution unavailability (8a8cf01)
music: identify goosebumps.fm to MusicBrainz (00ada0b)
music: make URL resolution idempotent (58d730f)
music: map resolution contention (e6effb0)
music: recover stale resolution claims (7dac630)
music: return bad request for unresolved links (1ee388c)
server: harden music resolution persistence (936308b)
server: harden music URL resolution (5e78fd5)
www: add music resolution retry UX (7281839)
Features
2.85.0 (2026-08-13)
Bug Fixes
dev: proxy www dev server to the D1 worker without going cross-site (830ae1c)
make ox tooling production-ready (c3b14e6)
migrate: baseline the migration ledger from Cloudflare's d1_migrations (950e875)
mobile: satisfy anti-slop lint rules (3ff99fe)
navigation: persist replayed cursor moves (b693976)
restore anti-slop enforcement (bcccd7c)
satisfy anti-slop lint in libraries (617d810)
server: add deterministic secondary sort key to music-entity list queries (OPS-249) (de79e3d)
server: add missing 0000 baseline to Postgres migration chain (OPS-252) (321a5c7)
server: allow blank aws storage credentials in production validation (OPS-244) (5563d02)
server: bind Worker secrets for OPS-244 (7214b0c)
server: boot D1 staging worker (OPS-249) (986813f)
server: defer MDX compiler evaluation (OPS-257) (754779a)
server: guard favorite writes against D1 concurrent-insert races (OPS-258) (36ac95c)
server: harden D1 production migration (OPS-249) (840db8f)
server: parse Postgres naive timestamps as UTC in the D1 migration script (OPS-249) (52a0a1c)
server: repair 0013 migration so it replays on a fresh chain (OPS-252) (a7c0b77)
server: return null, not [], for entities with no tags or genres (OPS-249) (0625214)
server: satisfy anti-slop lint rules (1ddef6e)
server: serialize Spotify imports (OPS-259) (e2e4682)
server: trust the gbfm.localhost dev origin (OPS-244) (b74aaed)
tweets: distinguish route loading from navigation sync (c11c0e6)
tweets: eliminate cold-render layout shifts (a363a02)
tweets: keep navigation status out of document flow (d3be9a1)
tweets: navigate without blocking on neighbor preloads (2976942)
vps: point unit test harness at Miniflare D1 instead of pg Pool (0c32492)
vps: stop timeQuery from resolving Database via the module singleton (OPS-254) (e334d2f)
vps: use Cloudflare Sentry in worker (OPS-248) (905e048)
vps: use SQLite-compatible like() in relational-queries smoke test (f6452ea)
worker: bind the R2 signing account (OPS-244) (f7ed96c)
worker: split scheduled jobs by cron (OPS-244) (09a12f3)
worker: use native R2 storage (OPS-244) (563af34)
www: satisfy anti-slop lint rules (57ae96c)
Features
cdn: port the CDN router to Alchemy on the prod R2 buckets (5b82877)
cdn: serve cdn.goosebumps.fm from the Alchemy CDN router (50488cc)
db: add database context layer (OPS-246) (74986ff)
db: translate schemas to D1 (OPS-247) (0b375bf)
dev: start Alchemy with SST (2fe82c4)
email: replace SES with Cloudflare sending (fded1ba)
infra: add Alchemy V2 stack for Cloudflare Workers migration (6fc3c90)
infra: declare Worker secrets in the Cloudflare Secrets Store (cdec70a)
infra: port www, redirects and auth URL into Alchemy (665b837)
infra: serve goosebumps.fm from the Alchemy site worker (d4b0545)
migration: target deployed D1 from the pg import (b1e114c)
navigation: expose effective forward destination (0495d25)
navigation: show pending route feedback (1d96140)
server: add Postgres to D1 data migration tooling (OPS-249) (0dcac42)
server: read secrets from the Cloudflare Secrets Store (7ba398a)
server: run the Bluesky sync and retention sweep on a Worker cron (b70fefb)
vps: add ReminderQueue capability and idempotent claim (OPS-248) (63fdbb1)
vps: add SitemapCache KV-backed capability (OPS-248) (4421c7c)
vps: add worker.ts composition seam; delete Bun loops/shutdown (OPS-248) (b566c63)
vps: replace bluesky sync SSE route with polled status endpoint (OPS-248) (683cbc8)
vps: replace navigation FOR UPDATE lock with a Durable Object (OPS-248) (036d988)
Performance Improvements
navigation: batch result snapshot reads (55f90d0)
navigation: batch session snapshot reads (31b1003)
navigation: collapse destination and write round trips (01e8dd1)
navigation: execute replay reads concurrently (e141a43)
navigation: resolve destinations with post references (c2a41a7)
navigation: run independent reads concurrently (c5a133c)
posts: assemble rich posts concurrently (8e7dae4)
tweets: batch reply list reads (c6eef1d)
tweets: batch rich post reads (d98d05c)
tweets: load post and navigation state concurrently (2cd2633)
tweets: preload and optimistically open neighbours (e01ea40)
tweets: preload layout-affecting dependencies (9f76fa7)
tweets: remove redundant rich post reads (07dedb5)
2.84.1 (2026-08-08)
Bug Fixes
ci: bridge interrupted SST asset paths (d86df47)
2.84.0 (2026-08-08)
Bug Fixes
ci: stop building retired backup image (7d3275e)
http: provide identity resolver to router (afc0873)
observability: batch named local traces (a9d7632)
tweet-nav: resume navigation session (f7c1fcf)
vps: compute navigation read capabilities (fa81735)
vps: isolate scheduled maintenance failures (66b3c1c)
vps: map missing navigation opens to not found (885c0fa)
vps: preserve navigation session identity (726711d)
vps: reopen evicted navigation entries (cbe7bf5)
vps: scope device token cookie to origin (fa9f5c4)
www: drop hover styles on disabled tweet arrows (34616a7)
www: update navigation capabilities atom (e1257d4)
Features
api: add micro post navigation contract (f582541)
db: add navigation session migration (95a775c)
db: add navigation session schema (76f2e67)
migration: verify R2 object parity (3293885)
observability: trace navigation requests (31048cd)
storage: add provider configuration (67028ca)
storage: construct object store clients (0627a38)
storage: deploy R2 CDN router (ed169f7)
tweet-nav: preload navigation neighbours (d006d80)
vps: add navigation domain transitions (2890f09)
vps: add optional navigation identity resolver (995f834)
vps: persist navigation session transitions (b6467f8)
vps: scaffold navigation session service (1f35db3)
vps: serve micro post navigation (ca9c663)
vps: sweep expired anonymous navigation sessions (2325960)
www: add navigation command client (ac1e83e)
www: navigate tweets with commands (0768457)
www: open tweets through navigation session (a170110)
2.83.0 (2026-08-08)
Bug Fixes
api: move random exclusions to post body (cd4cbeb)
bluesky: harden sync event protocol (f9f51c0)
bluesky: preserve imported post dates (89d820f)
bluesky: repair dates on reimport (8de08ec)
bluesky: require post-create role to import (2602952)
bluesky: skip unresolved music entities (42ee7e3)
logging: classify client aborts (b68ebed)
logging: omit query strings from request logs (4cb6351)
logging: parse relative request URLs (32115a5)
logging: preserve annotations and limit sentry logs (7fbe291)
logging: retain app logger in request fibers (c6ecd3c)
nav: remove station loading skeleton (5b0017e)
vps: repair local request handling (97ff116)
www: add search query clear button (b2af59f)
www: hold tweet arrow slots and tie reply count to its thread (818f995)
www: keep floating elements clear of the bottom nav (3d4c1ba)
www: serialize tweet navigation intents (495bfd2)
www: standardize reply actions (32dce34)
www: stop infinite redirect loop on dashboard content routes (3b3e8a9)
Features
admin/creator can see draft content (17ad06a)
admin: add offset based table pagination control (e2b025d)
admin: persist content table state in the url (c5361bf)
audio: sort managed mixes server side (9326256)
bluesky: add archive sync control (a8bee8c)
bluesky: add external account schema (5bc379d)
bluesky: add sync event stream (e94948a)
bluesky: detect source conflicts (bc2767a)
bluesky: expose account integration API (f6f96ad)
bluesky: expose Effect import boundary (b9e45b9)
bluesky: expose sync runs and source status (196d75a)
bluesky: normalize music import signals (7bacda2)
bluesky: page bounded archive sync (febfb1c)
bluesky: persist connected accounts (fbe96a1)
bluesky: queue manual syncs (e251ae7)
bluesky: refresh sync sessions (5687ebf)
bluesky: resolve imported music entities (2768662)
bluesky: run durable archive sync (ae444db)
bluesky: schedule opted-in syncs (bcf599b)
bluesky: stream sync progress (f5d5ca4)
bluesky: surface source attribution (301f927)
bluesky: unify connect, sync, and draft review on one page (aebd8a9)
bluesky: verify app password identity (6e5cb34)
bluesky: write imported archive posts (06139c3)
dashboard: add bluesky imports surface (adc4b16)
dashboard: add personal content surface (ad8b699)
infrastructure: add database lock service (3c59923)
logging: emit one structured request event (760f128)
posts: filter managed posts by source, status, and query (7a013cc)
search: add global content search (b078281)
security: add encrypted secret service (da5044e)
studio: one workspace shell and a page per content type (4fdb791)
www: add hold-to-random navigation (af53b48)
www: add ring logo mark to the desktop nav (2043120), closes 414042/#A58730
www: add tweet card actions (4796581)
www: centralize service integrations (0f120b2)
www: flank tweet prev/next arrows on desktop (2ad11b9)
www: inline reply-to-a-reply with capped nesting (0269d03)
www: move desktop nav to the bottom (af50935)
www: restore real goosebumps logo art with hover motion (036845a)
www: static desktop nav, fold admin into dashboard (3c7ef1a)
www: white logo mark only, no wordmark (9628e8f)
2.82.0 (2026-08-01)
Features
www: add tags index page (a2ae1f5)
www: link tags as hashtags to a tag page (81fa3da), closes #hashtag
www: render full post content on tag pages (1e8f992)
2.81.1 (2026-08-01)
Bug Fixes
www: restore control clicks inside tweet replies (e05bed0)
www: unify stream control sizing on music cards (b1055f7)
2.81.0 (2026-08-01)
Bug Fixes
Features
indicate reply count on tweet (3072f3a)
www: add tweet entry actions (bb2870b)
www: auto-detect quoted tweet from body text (526a4cc)
www: link tweet replies and parents (69c95f1)
www: make tweets the canonical landing route (c7db133)
www: persist tweet browse progress (f0b2ee5)
www: record loaded tweet progress (e3667a1)
2.80.0 (2026-08-01)
Bug Fixes
test (d6fba22)
vps: exclude replies from prev/next and random tweet nav (9d378d2)
www: show matched artist/track in tweet search results (737cd61)
Features
support music entity embeds on tweet replies (65c1928)
tweet ux (0bdffa9)
vps: add community reply endpoint + fix missing create-post role gate (f31c687)
vps: add direct replies read endpoint (32641c4)
vps: add full thread read endpoint (a4d3b85)
vps: add quote-tweet backend (quotedPostId) (26567d1)
vps: add thread fields to posts schema (parentPostId, rootPostId, depth) (dc2c97b)
vps: exclude replies from tweet feed, add createMicroPostReply (47867bf)
vps: make slug optional on generic post create (6765485)
vps: reject non-replyable and invisible reply parents (20d2693)
vps: strip thread fields from post update payload (defense-in-depth) (aaba8cd)
www: add flat reply UI to the tweet page (3a21807)
www: add floating compose button on tweet page (c5a3e87)
www: add listen-reminder button to tweet music entity card (b6d1846)
www: quote-tweet UI in both composers and tweet/reply rendering (a9669d7)
2.79.0 (2026-08-01)
Features
tweet styles (cbd06e4)
2.78.0 (2026-08-01)
Features
tweets ux (d595a10)
2.77.0 (2026-08-01)
Bug Fixes
theme: format generated css so ci passes (0cfdd3c)
theme: make destructive foreground readable in dark (5bb5cdd)
ui: animate sheets with tailwindcss-animate (938d825)
ui: apply artwork hover ring to wrapper (246f9f3)
ui: declare animation keyframes in ui package (265fcbe)
ui: follow system theme in ladle (9c68d2c)
ui: match shows skeleton to the real shows layout (68a3176)
ui: scope sheet close button to custom headers (6f1f943)
ui: stop play toggle label shifting layout (64dffd8)
www: dedupe Home in nav menu, align Follow icons, hide scrollbar (8cfebcf)
www: dedupe Radio Shows nav entry, restore history on mix back-link (1dc2267)
www: keep episode play control next to the title (1bb6c15)
www: scrollbar-hide utility not compiling (11b4085)
www: show loading feedback while a track buffers (90d3213)
www: wire favorite button in fullscreen player (8f4351e)
Features
ui: add Artwork and PlayToggle primitives (3baff2a)
vps: add episode number backfill script (2b080b7)
www: desktop top bar and mobile bottom tabs for nav (7ff13af)
www: drop desktop mini player for fullscreen playback (2dd4d16)
www: drop the every mix feed for browse by show (7cf96ad)
www: native view transitions on route navigation (fdaaa04)
www: persistent desktop dock with now-playing chip (dd42319)
www: persistent mini-player tab, thicker progress ticker (eaf3ec3)
www: playback progress ticker in desktop chrome (40003cf)
www: redesign episode rows and show rail for scanability (2eb03c1)
www: replace floating menu with a station nav (12edf93)
www: richer episode rows on shows browse (1cf1910)
www: sticky show context bar on browse page (9f6353a)
www: text-forward episode rows on shows browse (518b54f)
www: tighten shows browse layout and match skeletons (21aa04d)
2.76.7 (2026-07-31)
Bug Fixes
ci: avoid rollout gate false failures (a5506a3)
ci: budget telemetry verification phases (03c46d9)
ci: harden production verification gate (dafd0c5)
ci: identify primary ECS deployment (204a5c0)
ci: wait for telemetry convergence (a286e59)
2.76.6 (2026-07-30)
Bug Fixes
vps: prevent raw SQL telemetry (3b9bdac)
2.76.5 (2026-07-30)
Bug Fixes
vps: unify OpenTelemetry provider (078c4b2)
2.76.4 (2026-07-30)
Bug Fixes
vps: register database tracing provider (998321d)
2.76.3 (2026-07-30)
Bug Fixes
vps: trace queries at the pool boundary (dd14fbe)
2.76.2 (2026-07-30)
Bug Fixes
vps: join database spans to Effect context (4dfc332)
2.76.1 (2026-07-30)
Bug Fixes
vps: instrument pg at runtime boundary (c39bc3f)
2.76.0 (2026-07-30)
Bug Fixes
close observability review gaps (dbde52f)
Features
harden production observability (224cf4a)
2.75.4 (2026-07-30)
Bug Fixes
vps: centralize creator membership and cover relational query paths (bdfcf5b)
vps: correlate creator filters via inArray in relational queries (7f59103)
2.75.3 (2026-07-30)
Bug Fixes
vps: resolve audio thumbnailUrl from show at read time instead of copying at write time (993dbc8)
2.75.2 (2026-07-27)
Bug Fixes
vps: include creators when fetching show episodes (a19830b)
vps: use Drizzle relational queries for creators/hosts (c8e6dda)
2.75.1 (2026-07-26)
Bug Fixes
player: arm completion after playback starts (147dde4)
www: finish media session layer rename (4d54bb5)
2.75.0 (2026-07-26)
Features
uploads: images direct-to-S3 presign + upload-asset lifecycle table (#225) (4af56d6), closes #220 #220
2.74.0 (2026-07-26)
Features
2.73.0 (2026-07-26)
Features
2.72.1 (2026-07-25)
Bug Fixes
admin: report label creation failures (686c601)
db: preserve label creator provenance (fe6ca65)
mobile: type playback rejection (6d46d92)
player: reject stale source status (011b8ad)
www: restore fullscreen player state (9c1666f)
www: restore player source integrations (d09a0f9)
2.72.0 (2026-07-25)
Features
2.71.1 (2026-07-25)
Bug Fixes
player: restore position for cached sources (1053a54)
2.71.0 (2026-07-25)
Features
2.70.1 (2026-07-25)
Bug Fixes
2.70.0 (2026-07-25)
Bug Fixes
music: destructure status in useAddAdminEntityLink (21a07af)
spotify: attribute Spotify branding on links and playback controls (3de87e8), closes #1DB954
spotify: compact play/queue buttons, drop redundant badge (8707ace)
spotify: group entity actions after the platform link list (a1ba145)
tweet: gate music entity card skeleton on links query (0845629)
Features
observability: route Effect spans into the existing Sentry tracer (e09c3fe)
spotify: play and queue music entities from verified links (d2c978f), closes #207 #209 #210
2.69.0 (2026-07-25)
Bug Fixes
mobile: restore active tab contrast (521d6fe)
Features
2.68.0 (2026-07-25)
Bug Fixes
content: authorize draft management (2031ddd)
content: keep drafts out of public surfaces (214b322)
mobile: advance playback reliably (9a3f219)
mobile: make playback controls accessible (ae45ab9)
mobile: make playback queue deterministic (4cef1a4)
mobile: synchronize playback intent (a18de4d)
upload: bind idempotency keys to requests (f671c48)
upload: clean up canceled multipart uploads (a038405)
upload: enforce retry-safe completion (0b22e00)
Features
mobile: confirm queued tracks with a toast (3ba3897)
mobile: redesign now-playing with theme-aware colors (e14bdc3)
2.67.0 (2026-07-23)
Bug Fixes
corss header (0e4a68a)
corss header (ee18805)
effect: align Spotify SDK with beta.99 (3938260)
mobile: sync fonts ready flag in useEffect, not during render (2729763)
use stack options (50ad623)
www: import theme tokens via relative path in Vite plugin (b09d5f7)
Features
dev: expose mobile stack over Tailscale (487ad8a)
mobile fonts (e88d0b9)
mobile home page (a6f84c9)
mobile: add expo-audio provider and secure persistent auth via expo-secure-store (87b4577)
mobile: add native tabs and appearance settings (7226210)
mobile: add persistent playback queue (06795bc)
mobile: add tab layout, now-playing screen, and NowPlayingProvider (5530048)
mobile: migrate to @effect/atom-react@4, bump react 19.2.7 and effect 4.0.0-beta.99 (691e9d8)
mobile: redesign home screen with featured mix and update profile with appearance section (b16aa52)
mobile: refine home screen hierarchy (64f92e0)
mobile: use Effect for authentication (1a199ed)
theme: export brandDark and brandLight tokens (c62a8f2)
2.66.0 (2026-07-18)
Bug Fixes
email: tighten input validation (ca45177)
password reset flow - when passwords arent matching (89fb3fa)
upload: partNumber must decode from a string in multipart bodies (1b19994), closes #187
vps: add missing packages/api copy to Dockerfile (9ad0050)
vps: address adversarial review findings on music album/track/playlist port (ff48fa0)
vps: address adversarial review findings on music entity-links port (4191370)
vps: auto-default OTel endpoint to localhost in dev stages (acbf6ea)
vps: avatar upload 400 from Schema.File multipart mismatch (6a8d78c)
vps: complete resolve HttpApi cutover (Step 6) (88921f5), closes #161
vps: confirmInvite as a real HttpApiEndpoint, not a raw route (8f326b0)
vps: correct music/albums gap attribution, document middleware ordering (76704a6), closes #189
vps: remove no-op type assertion flagged by oxlint (0c402d0), closes #151
vps: restore email/UUID format validation and await on newsletter unsubscribe (7157dfe)
vps: restore non-empty-string validation on file-manager fields (36983bc), closes #165 #166
vps: restore UUID format validation on favorites audioId/showId (72d40fc)
vps: restore UUID validation on shows subscribe/unsubscribe id param (a5c19d0)
vps: tighten email validation to match zod's z.email() (bf6b12f), closes #170
vps: use real URL parsing for spotify enrich endpoint (b2dbadb)
www: convert Date fields before sending artist metadata updates (df07f39), closes #184
www: make 'Resend email' link visibly clickable (77cdbe1)
www: wire SocialLinksCard into the actual profile route (8a7eb11)
Features
api: scaffold packages/api with health group contract (c9b5235)
email: port email vertical slice (36913ab)
vps: add unused Effect toWebHandler + Hono fallback (Step 2a) (9899df5)
vps: dual-export traces to motel alongside Jaeger (3a59df8)
vps: move CORS/rate-limit/logging/Sentry to Effect global middleware, remove HonoFallback (Step 8) (cfb13e8)
vps: port admin to HttpApiBuilder.group (Step 6) (b0ec807)
vps: port audio group to HttpApiBuilder (step 6) (0539002)
vps: port auth middleware to HttpApiMiddleware (Step 3b) (28ffae7)
vps: port better-auth route onto the Effect router (Step 2c) (300b58c)
vps: port favorites to HttpApiBuilder.group (Step 6) (e82ef4f)
vps: port file-manager to HttpApiBuilder.group (Step 6) (54ba078)
vps: port health to HttpApiBuilder.group (Step 3a) (bca15fb)
vps: port invite to HttpApiBuilder.group (Step 6) (65a091a)
vps: port label group to HttpApiBuilder (step 6) (d438195)
vps: port music albums/tracks/playlists CRUD to HttpApiBuilder.group (Step 6c) (40873cf)
vps: port music entity-links/resolve/scrape/pending-queue (Step 6d) (7d9ad0c), closes #191
vps: port music-artists CRUD to HttpApiBuilder.group (Step 4) (18dafca)
vps: port music-reminders to HttpApiBuilder.group (Step 6) (5cc0c45)
vps: port newsletter to HttpApiBuilder.group (Step 6) (eb1a2a6)
vps: port post group to HttpApiBuilder (step 6) (374a480)
vps: port profile to HttpApiBuilder.group (Step 6) (095ab24)
vps: port release group to HttpApiBuilder (step 6) (1db4dd8)
vps: port rss/seo/share routes to plain HttpRouter (Step 7) (24e57e9)
vps: port search to HttpApiBuilder.group (Step 6) (d052ce8)
vps: port shows to HttpApiBuilder.group (Step 6) (b8c5d91)
vps: port spotify to HttpApiBuilder.group (Step 6) (34ea0a5), closes #165 #166 #167
vps: port upload + upload-multipart to HttpApiBuilder.group (Step 7) (e3b78d4), closes 175/#184
vps: port user group to HttpApiBuilder (step 6) (0fe5c29)
vps: swap entry point to Effect toWebHandler (Step 2b) (5454eea)
vps: wire newsletter group into routes.ts/api.ts, delete old Hono trio (98f8d47)
vps: wire OtlpLive into AppLayer to export traces (732e625)
www: add music reminder deletion (92d6dbb)
www: add typed HttpApiClient for the music-artists group (7aa6dd0)
www: improve auth navigation (4a70fd6)
www: replace useAdminArtists' fetcher with the typed client (90b6622)
www: self-service social links editor in dashboard (ccb2a38)
www: swap admin-group hooks to typed HttpApiClient (step 6b) (35bfb5b)
www: swap audio-group hooks to typed HttpApiClient (step 6b) (1779b7f), closes #176 #177 #175
www: swap favorites hooks to typed HttpApiClient (step 6b) (c98bc94)
www: swap label+release hooks to typed HttpApiClient (step 6b) (150031a), closes 171/#172
www: swap music-artist hooks to typed HttpApiClient (step 6b) (fd0cd90)
www: swap newsletter hooks to typed HttpApiClient (step 6b) (6843733)
www: swap newsletter hooks to typed HttpApiClient (step 6b) (15b4240)
www: swap post-group hooks to typed HttpApiClient (step 6b) (9e86ca7), closes #176
www: swap resolve slug consumer to typed Effect client (step 6b) (d8ebe7d)
www: swap search + profile consumers to typed Effect client (step 6b) (d1179a8)
www: swap shows-group hooks to typed HttpApiClient (step 6b) (0c1f9bb)
www: swap spotify hooks to typed HttpApiClient (step 6b) (fb238c7)
www: swap user-group hooks to typed HttpApiClient (step 6b) (7bce140)
www: toast feedback for dashboard profile settings (11b8edd)
www: warn when reset-password link is opened with an active session (b71cb61)
2.65.4 (2026-07-10)
Bug Fixes
2.65.3 (2026-07-10)
Bug Fixes
www: apply 60s cache-control to root path, not just *.html (437cad4)
2.65.2 (2026-07-10)
Performance Improvements
2.65.1 (2026-07-10)
Performance Improvements
2.65.0 (2026-07-10)
Bug Fixes
Features
2.64.0 (2026-07-06)
Features
clickable show hostname (34649d0)
2.63.0 (2026-07-06)
Bug Fixes
www: collapse tweet actions into kebab menu, fixes mobile crowding (31db000)
Features
www: download tweet as png for socials (a383799)
www: qr code to post url in social exports, drop liner notes label (96db4e1)
2.62.0 (2026-07-04)
Bug Fixes
www: use highlight-foreground on highlight surfaces (0879df5)
Features
2.61.0 (2026-07-03)
Features
2.60.1 (2026-07-01)
Bug Fixes
dev: serve SPA auth pages and trust localhost origin (#134) (e3c32f5)
www: resolve auth context before guarding routes and preserve redirect target (#133) (0510949)
2.60.0 (2026-07-01)
Features
2.59.0 (2026-06-21)
Features
onCancelUpload (9ac2b95)
2.58.0 (2026-06-21)
Features
draft cont (7aa1111)
2.57.4 (2026-06-21)
Bug Fixes
2.57.3 (2026-06-21)
Bug Fixes
2.57.2 (2026-06-21)
Bug Fixes
2.57.1 (2026-06-21)
Bug Fixes
circular dep (4941572)
2.57.0 (2026-06-21)
Features
2.56.0 (2026-06-21)
Features
images cleanup (946853a)
2.55.0 (2026-06-16)
Bug Fixes
shows: align selected show hero with sidebar top (73b8bcb)
user: persist admin user image via app-owned profile route (1581120)
Features
admin: edit mix and post metadata from the content tab (d5d4162)
mix-upload: pick audio and artwork from S3 media picker (a5086c1)
shows: browse mixes inline with a selectable show list (f75a021)
2.54.0 (2026-06-15)
Bug Fixes
Features
auth: notify admin on signup (549de15)
nav (c595514)
opt new users into newsletter (a269f14)
search (9e56af2)
www: add dashboard routes (15ceb13)
www: reshape dashboard navigation (07481b7)
2.53.0 (2026-06-14)
Bug Fixes
theme: add explicit .ts extensions for Node ESM resolution (cc0981e)
ui: use foreground color for form input text and caret (64c4f25)
www: use dvh and safe-area-inset for iOS Safari layout (cc7e9af)
Features
gbpm: add --version and --help flags, suppress ffmpeg stderr on success (d972718)
theme: add backgroundHex token for theme-color meta tags (6dfc274)
tools: add Rust process-mix CLI (7ac955d)
www: add theme-colors Vite plugin for index.html (8c2b7a2)
www: admin sidebar nav and dedicated tab routes (9992e4a)
www: keyboard-navigable floating menu tiles (7521b60)
www: sync theme-color meta with ThemeProvider (20b993f)
2.53.0 (2026-06-14)
Bug Fixes
theme: add explicit .ts extensions for Node ESM resolution (cc0981e)
www: use dvh and safe-area-inset for iOS Safari layout (cc7e9af)
Features
gbpm: add --version and --help flags, suppress ffmpeg stderr on success (d972718)
theme: add backgroundHex token for theme-color meta tags (6dfc274)
tools: add Rust process-mix CLI (7ac955d)
www: add theme-colors Vite plugin for index.html (8c2b7a2)
www: sync theme-color meta with ThemeProvider (20b993f)
2.53.0 (2026-06-14)
Bug Fixes
theme: add explicit .ts extensions for Node ESM resolution (cc0981e)
www: use dvh and safe-area-inset for iOS Safari layout (cc7e9af)
Features
theme: add backgroundHex token for theme-color meta tags (6dfc274)
tools: add Rust process-mix CLI (7ac955d)
www: add theme-colors Vite plugin for index.html (8c2b7a2)
www: sync theme-color meta with ThemeProvider (20b993f)
2.52.0 (2026-06-13)
Bug Fixes
ci: add vitest include pattern and fix allowedHosts type (7f9995a)
infra: clear VITE_VPS_BASE_URL for local dev (2e62545)
remove reference to missing otel.ts (65ac2fd)
vps: handle missing SST resources gracefully (448edb5)
Features
www: proxy API requests through Vite dev server (cdff26f)
2.51.0 (2026-05-31)
Bug Fixes
Features
www: add creator actions to dashboard (96ac92c)
2.50.4 (2026-05-31)
Bug Fixes
2.50.3 (2026-05-26)
Bug Fixes
cors: add sentry headers (86ecbf2)
2.50.2 (2026-05-26)
Bug Fixes
2.50.1 (2026-05-25)
Bug Fixes
tweet: restore titles and shorten slugs (33e9702)
2.50.0 (2026-05-25)
Bug Fixes
replaced search.token! with a guarded mutation (9fcf975)
Features
2.49.0 (2026-05-24)
Features
admin: add newsletter subscribers tab (080c07a)
email: add personal newsletter welcome email with reply-to support (eab6f81)
newsletter: add email-based unsubscribe flow (b2dd9f3)
newsletter: collect optional name on subscribe (6a00921)
2.48.0 (2026-05-24)
Bug Fixes
backup: use direct port 5432, typed errors for email alerts (9aa97ee)
dockerfile (5eb7a3d)
docker: upgrade backup task to postgresql18-client (a097693)
vps: switch sentry tracing to bun preload (592ff15)
Features
backup: add verify-backup script and dev commands (87a3c4c)
2.47.0 (2026-05-24)
Bug Fixes
vps-tracing: add parent span. (292b700)
Features
2.46.0 (2026-05-24)
Bug Fixes
ci: gate prod release on docker build (f9ced51)
Features
2.45.1 (2026-05-24)
Bug Fixes
ci: trigger prod deploy explicitly (58df86e)
2.45.0 (2026-05-24)
Bug Fixes
Features
network error ui (aebb1c5)
newsletter improvements (93690a1)
ui (e180f59)
vps: add admin notifications (d185f9c)
www: split new content capture flows (0c6e7b1)
2.44.0 (2026-05-21)
Features
ux: tweets (565c737)
2.43.0 (2026-05-21)
Bug Fixes
automatically verify manually added links + TS! (e879b98)
Features
tweets (97ca3d6)
2.42.0 (2026-05-17)
Bug Fixes
admin: move entity detail route out of music catalog nesting (21e6f01)
dialog animation (b7dd375)
ui: make playground themes switchable (a3de85f)
Features
add stream links to tweet card (0e4b414)
admin: music entity catalog + edit pages (669879d)
db_schema: defaultAuditFields (e2e31a4)
edit music entity links (b4a5fe2)
tweet edit flow (67067da)
ui: add internal design system playground (93acdb6)
ui: music entity detail/edit components + playground panel (4b4b2fa)
ui: replace playground with Ladle (294b9e9)
vps: integration test infrastructure + music-entity service split (561fa9b)
www: add playlists tab to admin/music (2b9d495)
2.41.0 (2026-05-13)
Features
2.40.1 (2026-05-12)
Bug Fixes
vps: Removed the loopback hostname (7149bbf)
2.40.0 (2026-05-11)
Bug Fixes
formatting (4031b07)
infra: use 127.0.0.1 instead of localhost in CORS and auth origins (a9649a4)
raycast runtime (fc92d9a)
Features
vps: add playlist import and management endpoints (c7f0c09)
vps: expose spotifyUrl on playlist payloads (535ad31)
vps: queue Spotify playlist enrichment (cea1aad)
www,vps: wire Spotify card into playlists and track curator on imports (3b396a3)
www: add dedicated admin playlists page with editor (c2170a7)
www: add Spotify client ID to environment (72ef629)
www: add Spotify PKCE auth library and connection card (e450129)
www: queue playlist imports and sync links (3e77e5a)
www: spotify playlist integration (7468bdd)
www: sync changelog content into app (8d7df6d)
2.39.0 (2026-05-09)
Bug Fixes
www: place biome suppression on key prop line (0943e97)
Features
www: add tweets and editorial to nav and command palette (f56f102)
www: refresh tweet post page (52dcc2a)
2.38.1 (2026-05-09)
Bug Fixes
ts (67e73a7)
2.38.0 (2026-05-09)
Features
vps: unified logger with sentry logs fanout (767d4c9)
2.37.0 (2026-05-09)
Features
db: extend posts with music entity linking (95e1ff8)
music: add entity resolver endpoint (1194f1c)
sentry BE (fed2902)
www: add music capture UI for creating posts from URLs (0f9d13d)
2.36.0 (2026-05-09)
Features
QoL: port check before running server (2b99d94)
2.35.0 (2026-05-08)
Bug Fixes
biome schema (2971027)
Features
otel cont (9583761)
2.34.2 (2026-04-28)
Bug Fixes
tracklist item highlight (6c3900b)
2.34.1 (2026-04-28)
Bug Fixes
e2e: theme-toggle session (44415ff)
2.34.0 (2026-04-28)
Features
2.33.0 (2026-04-28)
Features
tailwind upgrade (f008e8b)
2.32.0 (2026-04-28)
Bug Fixes
dockerfile (f92358e)
www: disable autocap on auth inputs, polish welcome modal mobile (5d19903)
www: make reminder date picker accessible (d1e06e0)
www: prevent mobile auth horizontal scroll (91cdf3f)
www: reminders datetime picker not opening on desktop (c6e975d)
www: responsive dashboard layout on mobile (9ecb59a)
Features
reminder form improvements (dc361f0)
ui (bb1342c)
www: add appearance settings (4c24b34)
www: add reminders to floating nav, restructure dashboard entry points (4b8f083)
2.31.0 (2026-04-27)
Bug Fixes
cmd: keep keyboard-selected items in view (d12293a)
cmd: polish keyboard handling and footer (421b54b)
tsconfig (a4c83d3)
verification email (aea5dd0)
Features
auth: live username availability check on sign-up (9ade9d2)
auth: signup ux groundwork (fec619f)
auth: verify-email banner, signup success state, terms/privacy (957910e)
forgot password ux (446fc59)
2.30.0 (2026-04-17)
Bug Fixes
button styles (3f35ed6)
Features
2.29.0 (2026-03-18)
Features
add auth docs to scalar (e2fa6ea)
auto-create and link artists during scrape with idempotency (24206ad)
music: complete platform-agnostic music metadata system (cb6bc79)
platform-agnostic music metadata system (8f11e70)
remove entityId from scrape endpoint (cf1b58e)
2.28.0 (2026-03-15)
Features
update MixListItem (d17d4c5)
2.27.3 (2026-03-11)
Bug Fixes
force trigger ci👀: document ssl redirect loop (e06f186)
2.27.2 (2026-03-11)
Bug Fixes
backup task dockerfile (f35f6ba)
2.27.1 (2026-03-11)
Bug Fixes
2.27.0 (2026-03-07)
Features
seo: fix sitemap routing, add posts, and add JSON-LD structured data (2e68fb0)
seo: route sitemap dynamic entries through VPS /s/ pre-render routes (5410220)
2.26.1 (2026-03-07)
Bug Fixes
play tracking (5729456)
2.26.0 (2026-03-06)
Features
2.25.0 (2026-03-01)
Features
core: add mix processing module with Effect-based job queue (7958b38)
raycast: add process-mix command with async job polling (f07aaf4)
vps: add async mix processing endpoints with job status tracking (4cc4b4f)
2.24.2 (2026-02-20)
Bug Fixes
social icons (3a98313)
2.24.1 (2026-02-20)
Bug Fixes
ci: format (0686c45)
2.24.0 (2026-02-20)
Features
design: init design system (6ccf038)
design: profile page (1e2f19a)
email logs tab for admin (3672388)
www: social links on profile (43b2049)
2.23.0 (2026-02-18)
Bug Fixes
Features
invite user flow (6d24f3d)
2.22.1 (2026-02-17)
Bug Fixes
db: allow user deletion by updating user FKs to cascade/set null (af442c7)
2.22.0 (2026-02-17)
Features
remove publications (a95683e)
2.21.1 (2026-02-16)
Bug Fixes
www: sync resolve with profile (f84477b)
2.21.0 (2026-02-16)
Features
clickable link to post author (dfa680c)
restyle mix list item (9b96ef1)
www: styling (dispatch and profile) (88e4b12)
2.20.0 (2026-02-15)
Features
create/update post (84cc06e)
2.19.0 (2026-02-13)
Bug Fixes
Features
2.18.0 (2026-02-13)
Bug Fixes
marquee (14769c5)
Features
audio player improvements (b98c9c7)
2.17.0 (2026-02-13)
Bug Fixes
build (ba2757a)
Features
vps: add post by slug endpoint with MDX compilation (38c8d56)
vps: add post share/redirect handler (0e4750b)
www: add dispatch and pings post routes with show page improvements (46b1e55)
2.16.0 (2026-02-10)
Features
posts endpoint (2b22631)
2.15.0 (2026-02-10)
Features
favourites and subscribing (67dcde5)
favourites/subscribe triggers modal sign up/login (ff67687)
onboarding improvements (ef1de3f)
2.14.0 (2026-02-04)
Features
audio player and profile improvements (e3c36dd)
2.13.3 (2026-02-04)
Bug Fixes
clickable username on audio player (e021dc5)
2.13.2 (2026-02-04)
Bug Fixes
remove display_username (7b9aa9b)
2.13.1 (2026-02-03)
Bug Fixes
force version bump 😛 (159e33e)
2.13.0 (2026-02-03)
Bug Fixes
www: address critical production issues (00a9fda)
Features
vps: add rate limiting to public endpoints (3b428f0)
2.12.0 (2026-01-30)
Features
add
showsupport to favourites (a658638)Implement a cron job to clean up expired QR PDF files from S3 using a new S3 object listing capability. (4847842)
qr service (75b6394)
restrict QR download functionality to admin and creator roles. (c84d587)
2.11.0 (2026-01-29)
Features
mix upload (db49d8f)
2.10.0 (2026-01-28)
Features
Enhance admin user editing to include username, display name, profile image, email verification, and real-time username availability checks. (fd308bd)
2.9.0 (2026-01-28)
Features
add user search functionality for admin and implement reserved slug generation and validation (86676b4)
Implement banner image support for shows and enhance host linking with user profiles. (33edb38)
Implement newsletter subscription functionality and add an admin tab for show management. (834ed96)
implement slug resolution to user profiles or shows and enhance authentication context attachment. (196161f)
Redesign show page to include a new banner, detailed header, and structured content sections. (d13262d)
2.8.0 (2026-01-28)
Features
Add 'Radio Shows' navigation, enhance mix details with queueing and creator links, and introduce show skeleton loading. (eba130d)
2.7.3 (2026-01-28)
Bug Fixes
play mix button (da3c9a3)
2.7.2 (2026-01-28)
Bug Fixes
revert to absolute positioning for music player (cbbc976)
2.7.1 (2026-01-28)
Bug Fixes
2.7.0 (2026-01-27)
Features
update audio creatorId (d7eef10)
2.6.0 (2026-01-27)
Features
Implement user display names and admin user creation/management. (3ff6b33)
2.5.0 (2026-01-27)
Features
observability improvements (3723b98)
2.4.0 (2026-01-27)
Bug Fixes
effect devtools packages (59e317e)
effect lsp errors (8375ab2)
effect type errors (593c21f)
export shows schema (e720e4a)
formatting (6dfabcf)
more errors highlighted by effect lsp (01b7536)
Features
dev tools (dfceb5d)
effect devtools (189c9b2)
landing page (a08c37d)
memory gauge (db32940)
shows backend (0436146)
spans (3525b47)
username and public profile (dca8d78)
wip: Implement show listing, detail pages, and user subscription management for shows. (132fabf)
2.3.0 (2026-01-24)
Features
backup: extract LogCapture to shared utilities with idiomatic Effect (e7507dc)
preload track (95a6d22)
remiinders styling (207ed8d)
seo: add SEO to index pages and create sitemap/robots.txt (c71ca4c)
seo: add SEO utilities and metadata to dynamic routes (ea906c4)
settngs and dashboard (eb7e817)
update mixes layout (4063e27)
updateTagsMutation (3ef1277)
2.2.1 (2026-01-22)
Bug Fixes
only fetch favourites when logged in (1163f92)
2.2.0 (2026-01-22)
Bug Fixes
Features
Add structured Effect logging to services and API handlers, and document implementation progress. (b0e3740)
Implement comprehensive performance monitoring for database queries and HTTP requests with severity-based logging and health checks. (5cf2da1)
Integrate OpenTelemetry distributed tracing with Effect and add initial service spans. (47101fb)
Introduce Effect-based logging middleware and integrate it across the application services. (27381c1)
2.1.0 (2026-01-18)
Bug Fixes
Remove system-wide Pulumi binaries in deploy workflow to prevent conflicts with SST Ion. (545966c)
Features
add Bandcamp URL support to Spotify service (0a0160f)
add HTML fallback parsing for Bandcamp metadata (f5a1d30)
2.0.2 (2026-01-18)
Bug Fixes
version bump (d0cd6c7)
2.0.1 (2026-01-18)
Bug Fixes
auth client (b653694)
2.0.0 (2026-01-18)
Bug Fixes
update core auth login to use /auth endpoint (6687db7)
Documentation
update Effect migration status for Phase 6 content/label handler completion (040f252)
Features
Add new Effect-based services for labels, audio, music reminders, posts, and releases, and refactor music reminder handlers to use the new service layer. (09c2d21)
complete Phase 5 Effect migration - implement remaining services (66a0f73)
enhance remaining routes and update migration documentation (384148d)
migrate auth handlers to use UserService (c6cabb7)
migrate auth routes to user routes and update routing (de02785)
migrate content handlers to use Effect services (429224f)
migrate processUpload handler to Effect (8934835)
migrate release handlers to use ReleaseService (1eafe08)
update runtime to include new Effect services (df248b5)
BREAKING CHANGES
Route improvements may affect internal handler structure
Runtime now includes additional services that may affect service resolution
Auth API endpoints moved from /auth to /user
Auth handlers now use Effect-based services instead of direct database operations
Release handlers now use Effect-based services instead of direct database operations
Handler migration continues with type-safe service adoption
Content handlers now use Effect-based services instead of direct database operations
Services now use Effect-based functional programming
1.10.0 (2026-01-17)
Bug Fixes
mutex when processing music reminders (95826e3)
ts errors (c359120)
update nvmrc to current lts (5916ec2)
Features
admin edit mix (aa8a04f)
create label (9872c19)
dashboard & profile update (8291c78)
favourites (47bffdd)
music reminder (a3a1bf8)
redirect from auth pages if logged in (4236b2c)
1.9.0 (2025-12-28)
Features
better auth roles (0c971af)
1.8.3 (2025-12-28)
Bug Fixes
vps cors def (deb9940)
1.8.2 (2025-12-28)
Bug Fixes
1.8.1 (2025-12-28)
Bug Fixes
undo gateway cors change (4fa1ece)
1.8.0 (2025-12-28)
Bug Fixes
format (0f86753)
Features
Dynamically configure CORS origin with
FRONTEND_URLand removewwwsubdomain from production site URL. (542f72c)
1.7.0 (2025-12-27)
Bug Fixes
cors (19ac9d6)
Features
1.6.2 (2025-12-27)
Bug Fixes
better auth cors (bc4503b)
1.6.1 (2025-12-27)
Bug Fixes
better-auth cors (33db4bd)
1.6.0 (2025-12-27)
Bug Fixes
formating (00ce618)
Features
fix player layout on mixes page (1ffe28f)
1.5.0 (2025-12-27)
Features
1.4.0 (2025-12-27)
Features
emanual version bump (5f32431)
1.3.0 (2025-12-27)
Features
better auth migration (0ad61fc)
1.2.0 (2025-12-14)
Bug Fixes
remove any (0e49ef0)
Features
audio player wip (e1c8bab)
remove shuffle and repeat (69be785)
render markdown (c24b019)
seed rbac (e2f4a99)
1.1.2 (2025-12-06)
Bug Fixes
1.1.1 (2025-11-23)
Bug Fixes
share url (764ee25)
1.1.0 (2025-11-23)
Features
1.0.0 (2025-11-23)
BREAKING CHANGES
Response format changed from arrays to paginated objects
chore: Remove migration 0008 for regeneration
Removed migration 0008_next_echo.sql to regenerate it cleanly. This ensures the migration is properly generated from the current schema state after rebasing with prod.
fix: Handle count query result properly and fix TypeScript errors
Fix count() result destructuring - handle potentially undefined first element
Remove unused 'desc' import from publication handlers (orders by name not createdAt)
Remove unused 'and' import from label handlers
All pagination queries now properly handle count results with nullish coalescing
Publications table orders by name instead of non-existent createdAt field
Pass typecheck and biome checks
feat: Update UI clients to support pagination
Updated www app API client (http.ts) to use useInfiniteQuery for paginated endpoints
Added pagination controls to mixes, tracks, and labels list pages
Added "Load More" functionality to label detail page releases
Updated Raycast extension to automatically load all pages on mount
All clients now support the new paginated API response format
Changes:
apps/www/src/lib/http.ts: Converted useAudioByType, useAllLabels, useReleasesByLabel to useInfiniteQuery
apps/www/src/routes/mixes/index.tsx: Added "Load More" button
apps/www/src/routes/labels/index.tsx: Added "Load More Labels" button
apps/www/src/routes/tracks/index.tsx: Added conditional "Load More" buttons for each audio type
apps/www/src/routes/labels/$labelSlug.tsx: Added "Load More Releases" button
apps/raycast/src/list-content.tsx: Auto-load all pages of mixes
apps/raycast/src/edit-mix.tsx: Auto-load all pages of mixes in dropdown
apps/raycast/src/edit-label.tsx: Auto-load all pages of labels in dropdown
wip
format
0.36.1 (2025-11-23)
Bug Fixes
posthog configs (25e082b)
0.36.0 (2025-11-23)
Features
posthog (7a1e609)
0.35.0 (2025-11-23)
Features
0.34.0 (2025-11-03)
Features
send mix notification (ab55950)
0.33.0 (2025-10-26)
Features
mix page metadata (0e2dfea)
0.32.0 (2025-10-26)
Features
0.31.0 (2025-10-26)
Bug Fixes
ci cache hash file (6a2f2bb)
date types (9e44dae)
ts (32b0ae3)
ts (1a6ae1e)
ts (49ca97b)
ts. ffs. (ba9239f)
validate limit values for spotify pagination (0f522e7)
vps: zod skill issue (50ed57e)
Features
fetch client (to be replaced by something that's automated pls) (98bc9eb)
labels admin cms (d0ce2b8)
quick share (d06d62b)
release (d5fd319)
wip react-native fps meter (d9a2be5)
0.30.1 (2025-10-09)
Bug Fixes
add links to spotify components (cf3ef23)
0.30.0 (2025-10-09)
Bug Fixes
Features
0.29.0 (2025-10-07)
Features
theming updates (4ff6944)
0.28.4 (2025-10-06)
Bug Fixes
dockerfile (96b8a37)
0.28.3 (2025-10-06)
Bug Fixes
remove redundant typecheck (55e081c)
0.28.2 (2025-10-06)
Bug Fixes
dockerfile (c084277)
0.28.1 (2025-10-06)
Bug Fixes
dockerfile (40f77be)
0.28.0 (2025-10-06)
Bug Fixes
web build script (fd6a502)
Features
fe types (2fb9d01)
0.27.1 (2025-10-06)
Bug Fixes
vps type fixes (23cae93)
0.27.0 (2025-09-28)
Features
cms wip (df8a83e)
0.26.0 (2025-09-24)
Features
content endpoints (4731b9c)
0.25.1 (2025-09-14)
Bug Fixes
missing secret (79e047a)
0.25.0 (2025-09-14)
Features
0.24.0 (2025-08-09)
Features
audio player + keyboard shortcuts (5abc7bc)
0.23.0 (2025-08-08)
Features
fullscreen audio player (d8a1fd0)
0.22.0 (2025-08-07)
Features
0.21.0 (2025-08-06)
Features
upload audio (8066e35)
0.20.2 (2025-08-05)
Bug Fixes
web build script (f43c60a)
0.20.1 (2025-08-05)
Bug Fixes
deploy script (4e11b32)
0.20.0 (2025-08-05)
Features
volume controls (da32fc0)
0.19.1 (2025-08-05)
Bug Fixes
docker entrypoint (56d3f2b)
0.19.0 (2025-08-05)
Bug Fixes
dockerfile (2a06d02)
Features
loading skeleton (b7c548f)
0.18.0 (2025-08-05)
Features
audio player improvements (5577abe)
0.17.0 (2025-08-03)
Bug Fixes
Features
single mix page (0d23491)
0.16.0 (2025-08-01)
Features
commando updates (0841bd3)
0.15.0 (2025-07-27)
Features
0.14.0 (2025-07-26)
Features
remove web workers. (5689fed)
0.13.0 (2025-07-26)
Features
update profile (fad00e6)
0.12.0 (2025-07-26)
Bug Fixes
type errors (88bcac9)
Features
auth & profile stuff (e7e1490)
0.11.0 (2025-07-26)
Features
update mix route (9acbbc0)
0.10.4 (2025-07-25)
Bug Fixes
add pnpm workspace file to container (92e5034)
0.10.3 (2025-07-25)
Bug Fixes
www build script (12e2b41)
0.10.2 (2025-07-25)
Bug Fixes
www build script (1585e92)
0.10.1 (2025-07-25)
Bug Fixes
dockerfile paths (ac2ce8e)
0.10.0 (2025-07-25)
Features
content migration scripts (b5881b2)
0.9.0 (2025-07-25)
Features
migrating from mixes schema to generic audio (c5335f0)
0.8.0 (2025-07-23)
Features
release test (d3fb620)
0.7.0 (2025-07-23)
Bug Fixes
update seed scripts (bfe3835)
Features
disable seed endpoint (5bc992e)