From ef9cb01d925d2be84477bf94de7ed8471a71fcba Mon Sep 17 00:00:00 2001 From: Ryan Kegel Date: Fri, 20 Mar 2026 16:42:13 -0400 Subject: [PATCH] feat: add enable/disable toggle for chore scheduling in ScheduleModal - Introduced a toggle button to enable or disable chores in the scheduler. - The toggle will be available in both types of schedulers. - Added UI design proposal and considerations for mobile dimensions. - Included E2E tests to ensure toggle state persistence and correct behavior in child view. --- .github/agents/ui-planner.agent.md | 73 +++ .github/specs/feat-schedule-enable-disable.md | 242 ++++++++ .vscode/settings.json | 18 +- .vscode/tasks.json | 59 ++ backend/api/auth_api.py | 52 ++ backend/api/chore_schedule_api.py | 6 + backend/events/sse.py | 2 +- backend/main.py | 3 + backend/models/chore_schedule.py | 4 + backend/tests/test_chore_schedule_api.py | 93 +++ backend/utils/email_sender.py | 7 + frontend/vue-app/e2e/.auth/user-cc.json | 39 ++ frontend/vue-app/e2e/.auth/user-delete.json | 39 ++ frontend/vue-app/e2e/.auth/user.json | 10 +- frontend/vue-app/e2e/auth-cc.setup.ts | 42 ++ frontend/vue-app/e2e/auth-delete.setup.ts | 47 ++ frontend/vue-app/e2e/e2e-constants.ts | 8 + .../chore-scheduler/child-card-states.spec.ts | 128 ++++ .../chore-scheduler/extend-time.spec.ts | 121 ++++ .../mode_parent/chore-scheduler/helpers.ts | 233 ++++++++ .../chore-scheduler/interval-anchor.spec.ts | 113 ++++ .../parent-card-states.spec.ts | 153 +++++ .../chore-scheduler/parent-vs-child.spec.ts | 130 ++++ .../schedule-days-mode.spec.ts | 230 ++++++++ .../schedule-enable-disable.spec.ts | 187 ++++++ .../schedule-interval-mode.spec.ts | 178 ++++++ .../chore-scheduler/schedule-load.spec.ts | 171 ++++++ .../chore-scheduler/schedule-modal.spec.ts | 129 ++++ .../chore-scheduler/schedule-sse.spec.ts | 97 +++ .../e2e/mode_parent/create-child/sse.spec.ts | 4 +- .../tasks/kindness-default.spec.ts | 40 +- .../tasks/penalty-convert-default.spec.ts | 27 - .../mode_parent/tasks/penalty-default.spec.ts | 54 +- .../user-profile/delete-account.spec.ts | 17 +- .../user-profile/profile-editing.spec.ts | 5 +- .../vue-app/e2e/plans/chore-scheduler.plan.md | 558 ++++++++++++++++++ frontend/vue-app/playwright.config.ts | 38 +- .../src/__tests__/scheduleUtils.spec.ts | 77 +++ frontend/vue-app/src/common/models.ts | 1 + frontend/vue-app/src/common/scheduleUtils.ts | 4 + .../src/components/shared/ScheduleModal.vue | 302 ++++++---- notes/scheduler_enable_disable/image-1.png | Bin 0 -> 44377 bytes notes/scheduler_enable_disable/image-2.png | Bin 0 -> 33758 bytes notes/scheduler_enable_disable/image.png | Bin 0 -> 40174 bytes .../scheduler_enable_disable.md | 34 ++ 45 files changed, 3543 insertions(+), 232 deletions(-) create mode 100644 .github/agents/ui-planner.agent.md create mode 100644 .github/specs/feat-schedule-enable-disable.md create mode 100644 frontend/vue-app/e2e/.auth/user-cc.json create mode 100644 frontend/vue-app/e2e/.auth/user-delete.json create mode 100644 frontend/vue-app/e2e/auth-cc.setup.ts create mode 100644 frontend/vue-app/e2e/auth-delete.setup.ts create mode 100644 frontend/vue-app/e2e/mode_parent/chore-scheduler/child-card-states.spec.ts create mode 100644 frontend/vue-app/e2e/mode_parent/chore-scheduler/extend-time.spec.ts create mode 100644 frontend/vue-app/e2e/mode_parent/chore-scheduler/helpers.ts create mode 100644 frontend/vue-app/e2e/mode_parent/chore-scheduler/interval-anchor.spec.ts create mode 100644 frontend/vue-app/e2e/mode_parent/chore-scheduler/parent-card-states.spec.ts create mode 100644 frontend/vue-app/e2e/mode_parent/chore-scheduler/parent-vs-child.spec.ts create mode 100644 frontend/vue-app/e2e/mode_parent/chore-scheduler/schedule-days-mode.spec.ts create mode 100644 frontend/vue-app/e2e/mode_parent/chore-scheduler/schedule-enable-disable.spec.ts create mode 100644 frontend/vue-app/e2e/mode_parent/chore-scheduler/schedule-interval-mode.spec.ts create mode 100644 frontend/vue-app/e2e/mode_parent/chore-scheduler/schedule-load.spec.ts create mode 100644 frontend/vue-app/e2e/mode_parent/chore-scheduler/schedule-modal.spec.ts create mode 100644 frontend/vue-app/e2e/mode_parent/chore-scheduler/schedule-sse.spec.ts delete mode 100644 frontend/vue-app/e2e/mode_parent/tasks/penalty-convert-default.spec.ts create mode 100644 frontend/vue-app/e2e/plans/chore-scheduler.plan.md create mode 100644 notes/scheduler_enable_disable/image-1.png create mode 100644 notes/scheduler_enable_disable/image-2.png create mode 100644 notes/scheduler_enable_disable/image.png create mode 100644 notes/scheduler_enable_disable/scheduler_enable_disable.md diff --git a/.github/agents/ui-planner.agent.md b/.github/agents/ui-planner.agent.md new file mode 100644 index 0000000..276ce4e --- /dev/null +++ b/.github/agents/ui-planner.agent.md @@ -0,0 +1,73 @@ +--- +name: ui-planner +description: Expert UI/UX design review and creative alternative layouts for Vue 3 components. Use when asking for design critiques, layout ideas, visual polish, animation suggestions, or CSS improvements on existing .vue files. +argument-hint: review this design +tools: + - read + - search + - edit + - vscode + - web + - todo +--- + +You are a Senior UI/UX Architect specializing in clean, highly reactive web applications. Your goal is to provide expert design critiques and creative layout alternatives that are technically compatible with Vue 3 and this project's conventions. + +## 🏗 Project Context + +This is the **Reward** app — a family chore/reward tracker. Vue 3 (Composition API / `