docs(35-01): complete plan 01 — type/wiring fixes (FIX-01, FIX-02, FIX-04)
- 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
This commit is contained in:
@@ -8,10 +8,10 @@
|
|||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
- [ ] **FIX-01**: User clicking "Add Candidate" on a thread page opens the add-candidate modal (not the wrong modal)
|
- [x] **FIX-01**: User clicking "Add Candidate" on a thread page opens the add-candidate modal (not the wrong modal)
|
||||||
- [ ] **FIX-02**: Item images display correctly on collection overview cards (no broken/missing images)
|
- [x] **FIX-02**: Item images display correctly on collection overview cards (no broken/missing images)
|
||||||
- [ ] **FIX-03**: Catalog and collection images load without noticeable delay (slow image loading resolved)
|
- [ ] **FIX-03**: Catalog and collection images load without noticeable delay (slow image loading resolved)
|
||||||
- [ ] **FIX-04**: Clicking the sign-in button on an auth prompt redirects the user directly to the Logto login page
|
- [x] **FIX-04**: Clicking the sign-in button on an auth prompt redirects the user directly to the Logto login page
|
||||||
- [ ] **FIX-05**: All clickable and interactive elements show a pointer cursor on hover throughout the app
|
- [ ] **FIX-05**: All clickable and interactive elements show a pointer cursor on hover throughout the app
|
||||||
|
|
||||||
### Admin Role
|
### Admin Role
|
||||||
@@ -67,10 +67,10 @@
|
|||||||
|
|
||||||
| Requirement | Phase | Status |
|
| Requirement | Phase | Status |
|
||||||
|-------------|-------|--------|
|
|-------------|-------|--------|
|
||||||
| FIX-01 | Phase 35 | Pending |
|
| FIX-01 | Phase 35 | Complete |
|
||||||
| FIX-02 | Phase 35 | Pending |
|
| FIX-02 | Phase 35 | Complete |
|
||||||
| FIX-03 | Phase 35 | Pending |
|
| FIX-03 | Phase 35 | Pending |
|
||||||
| FIX-04 | Phase 35 | Pending |
|
| FIX-04 | Phase 35 | Complete |
|
||||||
| FIX-05 | Phase 35 | Pending |
|
| FIX-05 | Phase 35 | Pending |
|
||||||
| ROLE-01 | Phase 36 | Pending |
|
| ROLE-01 | Phase 36 | Pending |
|
||||||
| ROLE-02 | Phase 36 | Pending |
|
| ROLE-02 | Phase 36 | Pending |
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ Plans:
|
|||||||
**Plans**: 3 plans
|
**Plans**: 3 plans
|
||||||
|
|
||||||
Plans:
|
Plans:
|
||||||
- [ ] 35-01-PLAN.md — Thread modal fix, ItemWithCategory type extension, login auto-redirect (FIX-01, FIX-02, FIX-04)
|
- [x] 35-01-PLAN.md — Thread modal fix, ItemWithCategory type extension, login auto-redirect (FIX-01, FIX-02, FIX-04)
|
||||||
- [ ] 35-02-PLAN.md — Lazy loading + image skeleton states on GearImage and all card components (FIX-03)
|
- [ ] 35-02-PLAN.md — Lazy loading + image skeleton states on GearImage and all card components (FIX-03)
|
||||||
- [ ] 35-03-PLAN.md — Cursor-pointer audit across ItemCard, FabMenu, BottomTabBar (FIX-05)
|
- [ ] 35-03-PLAN.md — Cursor-pointer audit across ItemCard, FabMenu, BottomTabBar (FIX-05)
|
||||||
|
|
||||||
@@ -318,7 +318,7 @@ Plans:
|
|||||||
| 32. Setup Sharing System | v2.3 | 4/4 | Complete | 2026-04-15 |
|
| 32. Setup Sharing System | v2.3 | 4/4 | Complete | 2026-04-15 |
|
||||||
| 33. Currency System | v2.3 | 6/6 | Complete | 2026-04-13 |
|
| 33. Currency System | v2.3 | 6/6 | Complete | 2026-04-13 |
|
||||||
| 34. i18n Foundation | v2.3 | 8/8 | Complete | 2026-04-18 |
|
| 34. i18n Foundation | v2.3 | 8/8 | Complete | 2026-04-18 |
|
||||||
| 35. Bug Fixes | v2.4 | 0/3 | Not started | - |
|
| 35. Bug Fixes | v2.4 | 1/3 | In Progress| |
|
||||||
| 36. Admin Role & Panel Foundation | v2.4 | 0/TBD | Not started | - |
|
| 36. Admin Role & Panel Foundation | v2.4 | 0/TBD | Not started | - |
|
||||||
| 37. Admin — Global Item Management | v2.4 | 0/TBD | Not started | - |
|
| 37. Admin — Global Item Management | v2.4 | 0/TBD | Not started | - |
|
||||||
| 38. Admin — Tag Management | v2.4 | 0/TBD | Not started | - |
|
| 38. Admin — Tag Management | v2.4 | 0/TBD | Not started | - |
|
||||||
|
|||||||
@@ -2,16 +2,16 @@
|
|||||||
gsd_state_version: 1.0
|
gsd_state_version: 1.0
|
||||||
milestone: v2.4
|
milestone: v2.4
|
||||||
milestone_name: Admin Foundation
|
milestone_name: Admin Foundation
|
||||||
status: in_progress
|
status: executing
|
||||||
stopped_at: Phase 35 — Bug Fixes (UI-SPEC approved, ready to plan)
|
stopped_at: "Phase 35 planned — 3 plans ready to execute (wave 1: all parallel)"
|
||||||
last_updated: "2026-04-19T00:00:00.000Z"
|
last_updated: "2026-04-19T17:43:31.083Z"
|
||||||
last_activity: 2026-04-19
|
last_activity: 2026-04-19 — Phase 35 planned (3 plans, verification passed)
|
||||||
progress:
|
progress:
|
||||||
total_phases: 4
|
total_phases: 20
|
||||||
completed_phases: 0
|
completed_phases: 7
|
||||||
total_plans: 0
|
total_plans: 32
|
||||||
completed_plans: 0
|
completed_plans: 30
|
||||||
percent: 0
|
percent: 94
|
||||||
---
|
---
|
||||||
|
|
||||||
# Project State
|
# Project State
|
||||||
@@ -26,11 +26,11 @@ See: .planning/PROJECT.md (updated 2026-04-19)
|
|||||||
## Current Position
|
## Current Position
|
||||||
|
|
||||||
Phase: 35 — Bug Fixes
|
Phase: 35 — Bug Fixes
|
||||||
Plan: —
|
Plan: 1 of 3 complete
|
||||||
Status: Context gathered — ready to plan
|
Status: In progress — 35-01 complete, 35-02 and 35-03 remaining
|
||||||
Last activity: 2026-04-19 — Phase 35 context captured
|
Last activity: 2026-04-19 — 35-01 complete (FIX-01, FIX-02, FIX-04)
|
||||||
|
|
||||||
Progress: [░░░░░░░░░░] 0%
|
Progress: [███░░░░░░░] 33%
|
||||||
|
|
||||||
## Performance Metrics
|
## Performance Metrics
|
||||||
|
|
||||||
@@ -64,13 +64,21 @@ v2.4 decisions:
|
|||||||
- Catalog spec system (typed specs per tag): deferred to v2.5
|
- Catalog spec system (typed specs per tag): deferred to v2.5
|
||||||
- Engagement stats (views/likes/saves/appearances): deferred to v2.5
|
- Engagement stats (views/likes/saves/appearances): deferred to v2.5
|
||||||
|
|
||||||
|
Phase 35 decisions (35-01):
|
||||||
|
|
||||||
|
- FIX-01: Add Candidate on thread page routes through CatalogSearchOverlay (thread mode), not a local modal
|
||||||
|
- FIX-02: ItemWithCategory type extended client-side only — server already returns image fields via withImageUrls()
|
||||||
|
- FIX-04: Login page is a server pass-through; no client auth check or card UI needed
|
||||||
|
|
||||||
### Pending Todos
|
### Pending Todos
|
||||||
|
|
||||||
- Fix Add Candidate button shows wrong modal on thread page (ui) — Phase 35
|
- Investigate slow image loading — Phase 35 (FIX-03, plan 35-02)
|
||||||
- Fix item image not showing on collection overview — Phase 35
|
- Cursor pointer on all clickable links — Phase 35 (FIX-05, plan 35-03)
|
||||||
- Investigate slow image loading — Phase 35
|
|
||||||
- Auth prompt sign-in button should redirect directly to Logto — Phase 35
|
Resolved in 35-01:
|
||||||
- Cursor pointer on all clickable links — Phase 35
|
- Fix Add Candidate button shows wrong modal on thread page — DONE (FIX-01)
|
||||||
|
- Fix item image not showing on collection overview — DONE (FIX-02)
|
||||||
|
- Auth prompt sign-in button should redirect directly to Logto — DONE (FIX-04)
|
||||||
|
|
||||||
### Blockers/Concerns
|
### Blockers/Concerns
|
||||||
|
|
||||||
@@ -91,5 +99,5 @@ Items carried forward from v2.3:
|
|||||||
## Session Continuity
|
## Session Continuity
|
||||||
|
|
||||||
Last session: 2026-04-19
|
Last session: 2026-04-19
|
||||||
Stopped at: Phase 35 UI-SPEC approved — ready to plan
|
Stopped at: Completed 35-01-PLAN.md — FIX-01, FIX-02, FIX-04 resolved
|
||||||
Resume file: .planning/phases/35-bug-fixes/35-UI-SPEC.md
|
Resume file: .planning/phases/35-bug-fixes/35-02-PLAN.md
|
||||||
|
|||||||
89
.planning/phases/35-bug-fixes/35-01-SUMMARY.md
Normal file
89
.planning/phases/35-bug-fixes/35-01-SUMMARY.md
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
---
|
||||||
|
phase: 35-bug-fixes
|
||||||
|
plan: "01"
|
||||||
|
subsystem: client
|
||||||
|
tags: [bug-fix, modal, types, auth, thread, login]
|
||||||
|
dependency_graph:
|
||||||
|
requires: []
|
||||||
|
provides:
|
||||||
|
- thread-add-candidate-wired-to-catalog-search
|
||||||
|
- item-with-category-image-fields
|
||||||
|
- login-redirect-immediate
|
||||||
|
affects:
|
||||||
|
- src/client/routes/threads/$threadId/index.tsx
|
||||||
|
- src/client/hooks/useItems.ts
|
||||||
|
- src/client/routes/login.tsx
|
||||||
|
tech_stack:
|
||||||
|
added: []
|
||||||
|
patterns:
|
||||||
|
- "useUIStore selector per action (openCatalogSearch, setCatalogSessionThreadId)"
|
||||||
|
- "Immediate useEffect redirect for server-handled auth routes"
|
||||||
|
key_files:
|
||||||
|
created: []
|
||||||
|
modified:
|
||||||
|
- src/client/routes/threads/$threadId/index.tsx
|
||||||
|
- src/client/hooks/useItems.ts
|
||||||
|
- src/client/routes/login.tsx
|
||||||
|
decisions:
|
||||||
|
- "FIX-01: Add Candidate routes through CatalogSearchOverlay in thread mode, not a local modal"
|
||||||
|
- "FIX-02: ItemWithCategory type extended client-side only — server already returns all fields"
|
||||||
|
- "FIX-04: Login page is a pass-through; client renders no UI beyond a brief loading indicator"
|
||||||
|
metrics:
|
||||||
|
duration: "~15 minutes"
|
||||||
|
completed: "2026-04-19T17:42:45Z"
|
||||||
|
tasks_completed: 3
|
||||||
|
tasks_total: 3
|
||||||
|
---
|
||||||
|
|
||||||
|
# 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 matches
|
||||||
|
- `grep -n "AddCandidateModal" src/client/routes/threads/$threadId/index.tsx` → 0 matches
|
||||||
|
- `grep -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 lines
|
||||||
|
- `bun run lint` → 0 errors (1 warning in unrelated script file)
|
||||||
|
- `bun test` → 464 pass, 0 fail
|
||||||
|
|
||||||
|
## Known Stubs
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
## Self-Check: PASSED
|
||||||
|
|
||||||
|
- 7fca929 exists: confirmed
|
||||||
|
- b43a932 exists: confirmed
|
||||||
|
- 053d562 exists: confirmed
|
||||||
|
- src/client/routes/threads/$threadId/index.tsx: exists, modified
|
||||||
|
- src/client/hooks/useItems.ts: exists, modified
|
||||||
|
- src/client/routes/login.tsx: exists, modified (18 lines)
|
||||||
Reference in New Issue
Block a user