Files
familysync/.planning/quick/260610-jlp-fix-broken-how-to-enable-link-in-notific/260610-jlp-SUMMARY.md
T
Lucas Berger 982438dc10 style(13-03): apply Prettier formatting across repo
Mechanical reformat — no logic changes. 398 files changed, 19125
insertions(+), 16457 deletions(-). Prettier 3.8.4 with .prettierrc
(singleQuote:true, semi:true, tabWidth:2, trailingComma:all,
printWidth:100). Isolated per D-13-08 for reviewability.
2026-06-11 20:35:18 -04:00

3.2 KiB

phase, plan, subsystem, tags, dependency_graph, tech_stack, key_files, decisions, metrics, requirements
phase plan subsystem tags dependency_graph tech_stack key_files decisions metrics requirements
quick-260610-jlp 01 pwa/notifications
bug-fix
refactor
uat
push-notifications
requires provides affects
InstructionSheet shared component
SettingsSheet how-to-enable wired
PermissionDeniedBanner
SettingsSheet
added patterns
shared component extraction
local state for sheet overlay
created modified
apps/pwa/src/components/InstructionSheet.tsx
apps/pwa/src/components/InstructionSheet.test.tsx
apps/pwa/src/components/PermissionDeniedBanner.tsx
apps/pwa/src/components/SettingsSheet.tsx
Extracted InstructionSheet verbatim from PermissionDeniedBanner; zero markup/copy/style changes (behaviour-preserving extraction)
SettingsSheet uses local instructionsOpen state to gate rendering InstructionSheet, not onClose
duration completed
~8 minutes 2026-06-10
UAT-05-T4

Phase quick-260610-jlp Plan 01: Fix Broken "How to Enable" Link in SettingsSheet

One-liner: Extracted shared InstructionSheet bottom-sheet from PermissionDeniedBanner and wired SettingsSheet's "How to enable" button to open it via local state (was: onClick={onClose} — dead link).

Tasks Completed

Task Name Commit Files
1 Extract InstructionSheet into shared component + rewire PermissionDeniedBanner 74b5d44 InstructionSheet.tsx (new), PermissionDeniedBanner.tsx
2 Wire SettingsSheet "How to enable" + write test 874c030 SettingsSheet.tsx, InstructionSheet.test.tsx (new)
3 Full typecheck + build + test gate (no code change)

Quality Gate Results

  • pnpm --filter @familysync/pwa typecheck: exit 0 (no output)
  • pnpm --filter @familysync/pwa build: SUCCESS — 1851 modules transformed, dist/assets/index-CaPAI7hF.js 655.55 kB gzip 191.46 kB, dist/sw.js 17.09 kB
  • pnpm --filter @familysync/pwa test: 15 test files passed, 187 tests passed (0 failed)

Deviations from Plan

None — plan executed exactly as written.

Known Stubs

None — all wiring is functional; InstructionSheet renders real steps.

Threat Flags

None — no new network endpoints, auth paths, or trust boundary changes. The InstructionSheet is a local display component.

Self-Check: PASSED

  • apps/pwa/src/components/InstructionSheet.tsx — exists, named export confirmed
  • apps/pwa/src/components/InstructionSheet.test.tsx — exists, 2 new tests pass
  • apps/pwa/src/components/PermissionDeniedBanner.tsx — imports from InstructionSheet.js, no local definition
  • apps/pwa/src/components/SettingsSheet.tsxsetInstructionsOpen(true) on "How to enable", instructionsOpen && render
  • Commits 74b5d44 and 874c030 both exist in git log