- SUMMARY.md: 3 tasks, all passing, 464 tests green - STATE.md: plan 1/3 complete, decisions recorded - ROADMAP.md: phase 35 progress updated (1 of 3 summaries) - REQUIREMENTS.md: FIX-01, FIX-02, FIX-04 marked complete
3.8 KiB
phase, plan, subsystem, tags, dependency_graph, tech_stack, key_files, decisions, metrics
| phase | plan | subsystem | tags | dependency_graph | tech_stack | key_files | decisions | metrics | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 35-bug-fixes | 01 | client |
|
|
|
|
|
|
Phase 35 Plan 01: Type/Wiring Bug Fixes Summary
One-liner: Wire thread Add Candidate to CatalogSearchOverlay, expose image fields on ItemWithCategory, and replace login card UI with immediate server redirect.
Tasks Completed
| Task | Name | Commit | Files |
|---|---|---|---|
| 1 | Wire Add Candidate button, delete AddCandidateModal | 7fca929 |
src/client/routes/threads/$threadId/index.tsx |
| 2 | Extend ItemWithCategory with image fields | b43a932 |
src/client/hooks/useItems.ts |
| 3 | Replace login page UI with useEffect redirect | 053d562 |
src/client/routes/login.tsx |
What Was Built
FIX-01 — Thread Add Candidate button wired correctly
The toolbar "Add Candidate" button on thread detail pages was calling setAddCandidateOpen(true), opening a local AddCandidateModal form that duplicated the CatalogSearchOverlay functionality. The button now calls setCatalogSessionThreadId(threadId) + openCatalogSearch("thread"), routing through the existing overlay. The entire AddCandidateModal component (~300 lines) was deleted along with its unused imports (useCreateCandidate, useCurrency, ImageUpload, CategoryPicker).
FIX-02 — ItemWithCategory type now includes image and currency fields
The ItemWithCategory interface was missing six fields that the server already returns via withImageUrls(): imageUrl, dominantColor, cropZoom, cropX, cropY, priceCurrency. Adding them to the interface unblocks collection overview cards from receiving typed image data for display.
FIX-04 — Login page is a lean pass-through
The old login page rendered a full card UI with a sign-in button. Since /login on the server immediately issues a Logto OIDC redirect, no client-side auth check or UI is needed. The page now renders only "Signing in..." and immediately navigates to /login via useEffect.
Deviations from Plan
None — plan executed exactly as written.
Verification
grep -n "addCandidateOpen" src/client/routes/threads/$threadId/index.tsx→ 0 matchesgrep -n "AddCandidateModal" src/client/routes/threads/$threadId/index.tsx→ 0 matchesgrep -n "openCatalogSearch" src/client/routes/threads/$threadId/index.tsx→ 2 matches- All 6 image/currency fields present in
ItemWithCategory wc -l src/client/routes/login.tsx→ 18 linesbun run lint→ 0 errors (1 warning in unrelated script file)bun test→ 464 pass, 0 fail
Known Stubs
None.