docs(35-03): complete cursor-pointer audit plan

- Add 35-03-SUMMARY.md with task commits, deviations, and verification results
- Update STATE.md: plan 3/3 complete, progress 100%, FIX-05 decision recorded
- Update ROADMAP.md: phase 35 marked Complete (3/3 plans)
- Update REQUIREMENTS.md: FIX-05 marked complete
This commit is contained in:
2026-04-19 19:52:41 +02:00
parent d58f7fab40
commit 9d41400faa
4 changed files with 103 additions and 16 deletions

View File

@@ -12,7 +12,7 @@
- [x] **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)
- [x] **FIX-03**: Catalog and collection images load without noticeable delay (slow image loading resolved) - [x] **FIX-03**: Catalog and collection images load without noticeable delay (slow image loading resolved)
- [x] **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 - [x] **FIX-05**: All clickable and interactive elements show a pointer cursor on hover throughout the app
### Admin Role ### Admin Role
@@ -71,7 +71,7 @@
| FIX-02 | Phase 35 | Complete | | FIX-02 | Phase 35 | Complete |
| FIX-03 | Phase 35 | Complete | | FIX-03 | Phase 35 | Complete |
| FIX-04 | Phase 35 | Complete | | FIX-04 | Phase 35 | Complete |
| FIX-05 | Phase 35 | Pending | | FIX-05 | Phase 35 | Complete |
| ROLE-01 | Phase 36 | Pending | | ROLE-01 | Phase 36 | Pending |
| ROLE-02 | Phase 36 | Pending | | ROLE-02 | Phase 36 | Pending |
| ADMN-01 | Phase 36 | Pending | | ADMN-01 | Phase 36 | Pending |

View File

@@ -98,7 +98,7 @@
### 🚧 v2.4 Admin Foundation (In Progress) ### 🚧 v2.4 Admin Foundation (In Progress)
- [ ] **Phase 35: Bug Fixes** — Clear the v2.3 backlog: wrong modal, missing images, slow loading, auth redirect, cursor pointer - [x] **Phase 35: Bug Fixes** — Clear the v2.3 backlog: wrong modal, missing images, slow loading, auth redirect, cursor pointer (completed 2026-04-19)
- [ ] **Phase 36: Admin Role & Panel Foundation** — isAdmin flag, server mechanism to grant admin, gated /admin route with placeholder UI - [ ] **Phase 36: Admin Role & Panel Foundation** — isAdmin flag, server mechanism to grant admin, gated /admin route with placeholder UI
- [ ] **Phase 37: Admin — Global Item Management** — Browse, edit, and delete global catalog items from the admin panel - [ ] **Phase 37: Admin — Global Item Management** — Browse, edit, and delete global catalog items from the admin panel
- [ ] **Phase 38: Admin — Tag Management** — Full tag CRUD with parent-child hierarchy in the admin panel - [ ] **Phase 38: Admin — Tag Management** — Full tag CRUD with parent-child hierarchy in the admin panel
@@ -236,7 +236,7 @@ Plans:
Plans: Plans:
- [x] 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)
- [x] 35-02-PLAN.md — Lazy loading + image skeleton states on GearImage and all card components (FIX-03) - [x] 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) - [x] 35-03-PLAN.md — Cursor-pointer audit across ItemCard, FabMenu, BottomTabBar (FIX-05)
**UI hint**: yes **UI hint**: yes
@@ -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 | 2/3 | In Progress| | | 35. Bug Fixes | v2.4 | 3/3 | Complete | 2026-04-19 |
| 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 | - |

View File

@@ -3,15 +3,15 @@ gsd_state_version: 1.0
milestone: v2.4 milestone: v2.4
milestone_name: Admin Foundation milestone_name: Admin Foundation
status: executing status: executing
stopped_at: Completed 35-01-PLAN.md — FIX-01, FIX-02, FIX-04 resolved stopped_at: Completed 35-03-PLAN.md — FIX-05 (cursor-pointer audit) resolved
last_updated: "2026-04-19T17:48:30.721Z" last_updated: "2026-04-19T17:52:29.345Z"
last_activity: 2026-04-19 last_activity: 2026-04-19
progress: progress:
total_phases: 20 total_phases: 20
completed_phases: 7 completed_phases: 8
total_plans: 32 total_plans: 32
completed_plans: 31 completed_plans: 32
percent: 97 percent: 100
--- ---
# Project State # Project State
@@ -26,9 +26,9 @@ See: .planning/PROJECT.md (updated 2026-04-19)
## Current Position ## Current Position
Phase: 35 — Bug Fixes Phase: 35 — Bug Fixes
Plan: 2 of 3 complete Plan: 3 of 3 complete
Status: In progress — 35-01 and 35-02 complete, 35-03 remaining Status: Ready to execute
Last activity: 2026-04-19 — 35-02 complete (FIX-03) Last activity: 2026-04-19
Progress: [██████████] 97% Progress: [██████████] 97%
@@ -75,6 +75,7 @@ Phase 35 decisions (35-02):
- FIX-03: Browser-native loading=lazy used for image deferral — no library needed, zero bundle overhead - FIX-03: Browser-native loading=lazy used for image deferral — no library needed, zero bundle overhead
- FIX-03: Skeleton is absolute inset-0 overlay removed on onLoad (not conditional branch swap) for stable layout - FIX-03: Skeleton is absolute inset-0 overlay removed on onLoad (not conditional branch swap) for stable layout
- FIX-03: GearImage accepts optional onLoad prop forwarded to all three img render paths - FIX-03: GearImage accepts optional onLoad prop forwarded to all three img render paths
- [Phase ?]: FIX-05: cursor-pointer explicitly added to ItemCard navigable case, FabMenu buttons, and BottomTabBar anonymous tab buttons
### Pending Todos ### Pending Todos
@@ -105,9 +106,10 @@ Items carried forward from v2.3:
| todo | 2026-04-10-investigate-slow-image-loading | promoted to v2.4 FIX-03 | | todo | 2026-04-10-investigate-slow-image-loading | promoted to v2.4 FIX-03 |
| todo | 2026-04-13-auth-prompt-sign-in-button-should-redirect-directly-to-logto | promoted to v2.4 FIX-04 | | todo | 2026-04-13-auth-prompt-sign-in-button-should-redirect-directly-to-logto | promoted to v2.4 FIX-04 |
| todo | 2026-04-13-fix-add-candidate-button-shows-wrong-modal-on-thread-page | promoted to v2.4 FIX-01 | | todo | 2026-04-13-fix-add-candidate-button-shows-wrong-modal-on-thread-page | promoted to v2.4 FIX-01 |
| Phase 35 P03 | 5m | 2 tasks | 3 files |
## Session Continuity ## Session Continuity
Last session: 2026-04-19 Last session: 2026-04-19T17:52:29.341Z
Stopped at: Completed 35-02-PLAN.md — FIX-03 (image lazy loading + skeleton) resolved Stopped at: Completed 35-03-PLAN.md — FIX-05 (cursor-pointer audit) resolved
Resume file: .planning/phases/35-bug-fixes/35-03-PLAN.md Resume file: None

View File

@@ -0,0 +1,85 @@
---
phase: 35-bug-fixes
plan: "03"
subsystem: client-ui
tags: [cursor, ux, bug-fix, FIX-05]
dependency_graph:
requires: []
provides: [cursor-pointer-audit]
affects: [ItemCard, FabMenu, BottomTabBar]
tech_stack:
added: []
patterns: [conditional-tailwind-class, explicit-cursor-pointer]
key_files:
modified:
- src/client/components/ItemCard.tsx
- src/client/components/FabMenu.tsx
- src/client/components/BottomTabBar.tsx
decisions:
- "Add cursor-pointer explicitly to each interactive element rather than relying on browser defaults"
- "Biome formatter requires multi-line attribute splitting for button elements with 3+ attributes"
metrics:
duration: "~5 minutes"
completed: "2026-04-19"
tasks_completed: 2
files_modified: 3
---
# Phase 35 Plan 03: Cursor-Pointer Audit Summary
Explicit `cursor-pointer` added to all interactive elements that lacked it — ItemCard navigable outer button, FabMenu menu item buttons and main FAB, and BottomTabBar's three anonymous tab buttons. Resolves FIX-05.
## Tasks Completed
| Task | Name | Commit | Files |
|------|------|--------|-------|
| 1 | Add cursor-pointer to ItemCard navigable case | e1d516c | src/client/components/ItemCard.tsx |
| 2 | Add cursor-pointer to FabMenu and BottomTabBar buttons | d58f7fa | src/client/components/FabMenu.tsx, src/client/components/BottomTabBar.tsx |
## What Was Built
### Task 1 — ItemCard (FIX-05)
The outer `<button>` in `ItemCard.tsx` had a conditional className: `cursor-default` when `linkTo === null` (setup cards, non-navigable), but was missing `cursor-pointer` in the non-null branch (collection cards, navigable). Added `cursor-pointer` to the non-null branch. The `cursor-default` branch is preserved unchanged.
### Task 2 — FabMenu and BottomTabBar (FIX-05)
FabMenu: Added `cursor-pointer` to both `motion.button` elements — the menu item buttons rendered per `menuItems` array, and the main FAB toggle button.
BottomTabBar: Added `cursor-pointer` to all three anonymous user `<button>` elements — the collection tab, setups tab, and search tab. Biome formatter required multi-line attribute expansion (type, onClick, className each on their own line) to pass lint.
## Deviations from Plan
### Auto-fixed Issues
**1. [Rule 1 - Format] Biome formatter required multi-line button attribute splitting**
- **Found during:** Task 2 verification (lint)
- **Issue:** Biome's formatter rejected single-line `<button type="button" onClick={...} className="cursor-pointer">` — three attributes triggered multi-line expansion requirement
- **Fix:** Split all three BottomTabBar button elements to multi-line format matching Biome's output
- **Files modified:** src/client/components/BottomTabBar.tsx
- **Commit:** d58f7fa (included in same task commit)
## Verification
- `grep -n "cursor-pointer hover:border-gray-200" ItemCard.tsx` — 1 match on outer button (confirmed)
- `grep -n "cursor-default" ItemCard.tsx` — 1 match on null linkTo branch (preserved)
- `grep -c "cursor-pointer" FabMenu.tsx` — 2 (menu item button + FAB button)
- `grep -c "cursor-pointer" BottomTabBar.tsx` — 3 (collection, setups, search tabs)
- `bun run lint` — passes (0 errors, 1 pre-existing warning in scripts/)
- `bun test` — 464 pass, 0 fail
## Known Stubs
None.
## Threat Flags
None — pure CSS class changes, no logic, data flow, or auth boundary touched.
## Self-Check: PASSED
- e1d516c exists: FOUND
- d58f7fa exists: FOUND
- src/client/components/ItemCard.tsx: FOUND
- src/client/components/FabMenu.tsx: FOUND
- src/client/components/BottomTabBar.tsx: FOUND