feat(#754 inbox-search): unit #7 — inbox + search + conversation on TanStack#769
Merged
Merged
Conversation
…anStack Port app/(app)/inbox, app/(app)/search, and app/conversation/[...slug] onto the TanStack route tree as children of the #5 _app shell, reusing CastRow, CastThreadView, SelectableListWithHotkeys, SearchInterface/SearchResultsView and the provider/RQ/store data paths (-> the #10 /api/* worker routes) verbatim via the unit-#2 next/* aliases. Closes the #6 deep-link target /conversation/<hash>. Surgical changes only: next/navigation -> @/web/lib/navigation; drop 'use client'; conversation's [...slug] catch-all -> a TanStack $ splat route (params._splat rebuilt into the Next-shaped slug array). No new data path; no shared-file edits. Green: web:build 0, web:typecheck 0, live typecheck 0, test 150/150, worker bundle 2336.89 KiB gzip < 3 MB. SSR 200 on real workerd for all three routes (both splat forms); browser canary clean. Tier-1 multi-agent adversarial review: 0 findings.
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…search-conversation # Conflicts: # docs/migration/strategy.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Unit #7 — inbox + search + conversation (epic #754, Track B)
Second surface-tier unit of the Next.js → TanStack-Start-on-Cloudflare-Workers migration. Mounts three more herocast pages onto the TanStack route tree as children of the #5
_appshell, reusing every shared component verbatim via the unit-#2next/*aliases and the unit-#10/api/*worker routes. Closes #6's one dangling deep-link:/conversation/<hash>(the mobile cast-tap + legacy?castHash=redirect target).Spec:
docs/migration/phase-2-inbox-search.md. Mirrors unit #6 (phase-2-feeds-profile.md).Routes added (children of
_app)/inboxsrc/web/pages/InboxPage.tsxapp/(app)/inbox/page.tsx/searchsrc/web/pages/SearchPage.tsxapp/(app)/search/page.tsx/conversation/*(splat)src/web/pages/ConversationPage.tsxapp/conversation/[...slug]/page.tsxSurgical changes only (everything else byte-identical to the Next source)
next/navigation→@/web/lib/navigation(the unit-Configure Sweep #2 adapter, imported directly).'use client'(+ search's vestigial Nextno-img-elementeslint-disable — no<img>in the file).[...slug]catch-all → a TanStack$splat route. The param arrives as_splat(a single"a/b"string), so the page rebuilds the Next-shaped slug array:((params._splat as string | undefined) ?? '').split('/').filter(Boolean). Preserves both/conversation/<hash>and/conversation/<user>/<hash>.next/linkstays asnext/link(resolved by the #2 build alias). No module-scopecreateClient()in any page (the #6 C2 deferral N/A). No new data path, no shared-file edits, novite.config.mtschange (CastRow→Embeds→VideoEmbed already stubbed in #6; bundle stayed under budget without a new stub entry).Green gate
pnpm web:build0 →pnpm web:typecheck0 → livepnpm typecheck0 →pnpm test150/150./_app/inbox,/_app/search,/_app/conversation/$.ssr:falsechunk)._app.feedsAPP_MNENOMIC=void 0match is the Add support for user reactions to posts #6 benign identifier, not a add supabase edge function #7 chunk).Verification (real workerd + real browser)
wrangler devfor/inbox,/search,/conversation/0x…and/conversation/user/0x…(both splat forms) — no import-time throw./inbox+/searchSSR the "Loading herocast" hydrate gate;/conversationSSRs the page skeleton (content gated to client → CastThreadView/VideoEmbed never render server-side)./conversationfully renders (shell + titlebar "Conversation" + graceful "Cast not found" on a bad hash);/inbox+/searchhydrate → store-init → AuthContext client-redirect to/login(logged-out, same as Add support for user reactions to posts #6/feeds); client-side nav works; console clean except the expected Fix web request to gRPC server #3 WalletConnect warnings.Deferred (documented, shared with #6/#10)
Logged-in inbox tabs + virtual-list recycle, search input→results, real-data thread — need a session + a quota'd
NEYNAR_API_KEY(dev key is over quota → 402/404 passthrough). Re-run post-web:deploy.Do not merge — awaiting review per the migration's per-unit ship protocol.
Status board: #6 🔍→✅ (PR #768), #7 ☐→🔍.