You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/migration-effect-http-api.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -755,8 +755,8 @@ boundaries were skipped, not a sign the rows were wrong.
755
755
| 3b | ✅ merged (#150) | Port auth middleware (cookie-based) behind a group with no production traffic yet (e.g. a scratch/internal endpoint) | Medium | Validates session cookie reading in isolation, before any real authed route depends on it |`packages/api/src/middleware/auth.ts`, `apps/vps/src/middleware/auth.impl.ts`|
756
756
| 4 | ✅ merged (#152/#153) | Port one real CRUD group entirely (e.g., music artists), taking it over from the fallback | Medium | Full vertical slice through contract + handler + auth | One group's contract + handlers only |
757
757
| 5 | ✅ merged (#154) | Generate client for that group, replace one react-query hook; verify cookies cross-origin in a deployed browser | Low | Tangible client benefit; proves the client-side cookie risk called out below |`apps/www/src/lib/api-client.ts` + one hook |
758
-
| 6 | ✅ complete (search #156, profile #157, resolve #158/#162, admin #163, invite #164, favorites #166, newsletter #165, file-manager #167, spotify #168, shows #169, user #170, label #171, release #172, post #173, audio #174) | Port remaining JSON groups incrementally, one group per PR/deploy | Low-Medium | Mechanical work, same shape as step 4 each time | One group per PR |
759
-
| 6b | 🟡 mostly complete (#175 user, #176 label+release, #177 post, #178 audio, #179 favorites, #180 admin, #181 shows, #182 newsletter, #183 spotify, #184 music-artist, #185 email in flight) | Replace the manual `fetcher()` calls in `apps/www/src/lib/http.ts` for each step-6 group with the typed `HttpApiClient`, same pattern as step 5's music-artists hook swap | Low | Closes the loop step 5 opened -- step 6 landed server-side ports without touching the client, so `apps/www` was accumulating groups it could already consume through the typed client but didn't | When a group has a real www consumer, port the backend and client in one vertical-slice PR and browser-test the complete path. **Remaining, all genuinely blocked on a missing backend endpoint, not oversights**: `music` group's album/track/entity-links/resolve hooks (`useAdminAlbums`/`Album`/`UpdateAlbum`/`DeleteAlbum`, `useAdminTracks`/`Track`/`UpdateTrack`/`DeleteTrack`, `useAdminEntityLinks`/`AddAdminEntityLink`/`UpdateAdminEntityLinkStatus`/`DeleteAdminEntityLink`, `useResolveMusicEntity` -- `packages/api/src/music.ts` only has artist CRUD + junction endpoints); `useUpdateProfile` (deferred -- first dual JSON/multipart client call in this migration, deserves isolated verification per #175's PR notes). |
758
+
| 6 | ✅ complete (search #156, profile #157, resolve #158/#162, admin #163, invite #164, favorites #166, newsletter #165, file-manager #167, spotify #168, shows #169, user #170, label #171, release #172, post #173, audio #174, email #185, music-reminders #186) | Port remaining JSON groups incrementally, one group per PR/deploy | Low-Medium | Mechanical work, same shape as step 4 each time | One group per PR. `music-reminders` (#186) was a group missed entirely by the original sweep -- not upload-shaped or non-JSON-shaped, just overlooked; caught while auditing what's left before starting step 7.|
759
+
| 6b | ✅ complete for every group with a real consumer (#175 user, #176 label+release, #177 post, #178 audio, #179 favorites, #180 admin, #181 shows, #182 newsletter, #183 spotify, #184 music-artist, #185 email, #186 music-reminders) | Replace the manual `fetcher()` calls in `apps/www/src/lib/http.ts` for each step-6 group with the typed `HttpApiClient`, same pattern as step 5's music-artists hook swap | Low | Closes the loop step 5 opened -- step 6 landed server-side ports without touching the client, so `apps/www` was accumulating groups it could already consume through the typed client but didn't | When a group has a real www consumer, port the backend and client in one vertical-slice PR and browser-test the complete path. **Remaining, all genuinely blocked on a missing backend endpoint, not oversights**: `music` group's album/track/entity-links/resolve hooks (`useAdminAlbums`/`Album`/`UpdateAlbum`/`DeleteAlbum`, `useAdminTracks`/`Track`/`UpdateTrack`/`DeleteTrack`, `useAdminEntityLinks`/`AddAdminEntityLink`/`UpdateAdminEntityLinkStatus`/`DeleteAdminEntityLink`, `useResolveMusicEntity` -- `packages/api/src/music.ts` only has artist CRUD + junction endpoints); `useUpdateProfile` (deferred -- first dual JSON/multipart client call in this migration, deserves isolated verification per #175's PR notes). |
760
760
| 7 | ⬜ not started | Port upload groups (multipart -- see below) and non-JSON routes (rss/seo/share) | Medium | The hairy tail; budget real time, do not fold into a "remaining groups" PR | Upload group only, then site routes only -- two separate PRs |
761
761
| 8 | ⬜ not started | Move rate limiter + Sentry capture to Effect middleware, remove `HonoFallback`, delete Hono + Zod | Low | Cleanup | Middleware move and dependency removal as separate PRs |
0 commit comments