Releases
v2.66.0
Compare
Sorry, something went wrong.
No results found
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 )
You can’t perform that action at this time.