Skip to content

Commit ed31c6f

Browse files
committed
docs(migration): mark step 6/6b complete -- email + music-reminders merged
1 parent bb86b9e commit ed31c6f

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

docs/migration-effect-http-api.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -755,8 +755,8 @@ boundaries were skipped, not a sign the rows were wrong.
755755
| 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` |
756756
| 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 |
757757
| 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). |
760760
| 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 |
761761
| 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 |
762762

0 commit comments

Comments
 (0)