From 127378797c0d4ff46a68da2a6a4d4bd99210bdc6 Mon Sep 17 00:00:00 2001 From: Ryan Kegel Date: Sat, 25 Apr 2026 00:40:15 -0400 Subject: [PATCH] Refactored frontend directory --- .gitea/workflows/build.yaml | 8 +++---- .github/agents/ui-planner.agent.md | 2 +- .github/copilot-instructions.md | 18 +++++++------- .github/skills/vue-frontend/SKILL.md | 4 ++-- .gitignore | 10 ++++---- .vscode/launch.json | 6 ++--- .vscode/launch.json.bak | 6 ++--- .vscode/mcp.json | 2 +- .vscode/tasks.json | 22 +++++++++--------- README.md | 13 +++++------ frontend/{vue-app => }/.dockerignore | 0 frontend/{vue-app => }/.editorconfig | 0 frontend/{vue-app => }/.gitattributes | 0 .../.github/workflows/copilot-setup-steps.yml | 0 .../.github/workflows/playwright.yml | 0 frontend/{vue-app => }/.gitignore | 0 frontend/{vue-app => }/.prettierrc.json | 0 .../{vue-app => }/192.168.1.102+1-key.pem | 0 frontend/{vue-app => }/192.168.1.102+1.pem | 0 frontend/{vue-app => }/Dockerfile | 0 frontend/{vue-app => }/README.md | 4 ++-- .../{vue-app => }/auth-setup-after-pin.png | Bin .../{vue-app => }/auth-setup-before-pin.png | Bin frontend/{vue-app => }/e2e/.auth/user-cc.json | 12 +++++----- .../{vue-app => }/e2e/.auth/user-delete.json | 12 +++++----- .../{vue-app => }/e2e/.auth/user-no-pin.json | 0 .../e2e/.auth/user-temp-parent.json | 0 frontend/{vue-app => }/e2e/.auth/user.json | 12 +++++----- .../{vue-app => }/e2e/.resources/crown.png | Bin frontend/{vue-app => }/e2e/auth-cc.setup.ts | 0 .../{vue-app => }/e2e/auth-delete.setup.ts | 0 .../{vue-app => }/e2e/auth-no-pin.setup.ts | 0 frontend/{vue-app => }/e2e/auth.setup.ts | 0 frontend/{vue-app => }/e2e/e2e-constants.ts | 0 frontend/{vue-app => }/e2e/example.spec.ts | 0 .../child-options/delete-child.spec.ts | 0 .../child-options/delete-points.spec.ts | 0 .../child-options/edit-child.spec.ts | 0 .../chore-scheduler/child-card-states.spec.ts | 0 .../chore-scheduler/extend-time.spec.ts | 0 .../mode_parent/chore-scheduler/helpers.ts | 0 .../chore-scheduler/interval-anchor.spec.ts | 0 .../parent-card-states.spec.ts | 0 .../chore-scheduler/parent-vs-child.spec.ts | 0 .../schedule-days-mode.spec.ts | 0 .../schedule-enable-disable.spec.ts | 0 .../schedule-interval-mode.spec.ts | 0 .../chore-scheduler/schedule-load.spec.ts | 0 .../chore-scheduler/schedule-modal.spec.ts | 0 .../chore-scheduler/schedule-sse.spec.ts | 0 .../create-child/authorization.spec.ts | 0 .../create-child/happy-path.spec.ts | 0 .../create-child/navigation.spec.ts | 0 .../e2e/mode_parent/create-child/sse.spec.ts | 0 .../create-child/validation.spec.ts | 0 .../chore-notification-approve.spec.ts | 0 .../chore-notification-deny.spec.ts | 0 .../deep-link-navigation.spec.ts | 0 .../digest-action-approve-chore.spec.ts | 5 ++-- .../digest-action-approve-reward.spec.ts | 4 +++- .../digest-action-deny-chore.spec.ts | 4 +++- .../digest-action-deny-reward.spec.ts | 4 +++- .../digest-action-errors.spec.ts | 8 +++---- .../notification-card-overflow.spec.ts | 0 .../notification-click-scroll.spec.ts | 0 .../notifications/push-subscription.spec.ts | 0 .../reward-notification-approve.spec.ts | 0 .../reward-notification-deny.spec.ts | 0 ...user-profile-notification-settings.spec.ts | 0 .../profile-button-temporary.spec.ts | 0 .../profile-button/profile-button.spec.ts | 0 .../mode_parent/rewards/reward-cancel.spec.ts | 0 .../rewards/reward-convert-default.spec.ts | 0 .../rewards/reward-create-edit.spec.ts | 0 .../rewards/reward-delete-default.spec.ts | 0 .../task-activation/chore-activation.spec.ts | 0 .../general-chore-no-completed.spec.ts | 0 .../kindness-activation.spec.ts | 0 .../penalty-activation.spec.ts | 0 .../pending-reward-warning.spec.ts | 0 .../task-activation/reward-redemption.spec.ts | 0 .../task-activation/scroll-and-flow.spec.ts | 0 .../assign-title-shows-child-name.spec.ts | 0 .../task-assignment/chore-assignment.spec.ts | 0 .../kindness-assignment.spec.ts | 0 .../penalty-assignment.spec.ts | 0 .../task-assignment/reward-assignment.spec.ts | 0 .../chore-edit-points.spec.ts | 0 .../task-modification/chore-reset.spec.ts | 0 .../kindness-edit-points.spec.ts | 0 .../modified-points-activation.spec.ts | 0 .../override-sse-child-update.spec.ts | 0 .../penalty-edit-points.spec.ts | 0 .../pending-reset-on-edit.spec.ts | 0 .../reward-edit-cost.spec.ts | 0 .../scroll-to-edited-task.spec.ts | 0 .../task-sorting/child-sort-order.spec.ts | 0 .../task-sorting/parent-sort-order.spec.ts | 0 .../mode_parent/tasks/chore-cancel.spec.ts | 0 .../tasks/chore-convert-default.spec.ts | 0 .../tasks/chore-create-edit.spec.ts | 0 .../tasks/chore-delete-default.spec.ts | 0 .../mode_parent/tasks/kindness-cancel.spec.ts | 0 .../tasks/kindness-create-edit.spec.ts | 0 .../tasks/kindness-default.spec.ts | 0 .../mode_parent/tasks/penalty-cancel.spec.ts | 0 .../tasks/penalty-create-edit.spec.ts | 0 .../mode_parent/tasks/penalty-default.spec.ts | 0 .../tasks/test-simple-chore.spec.ts | 0 .../user-profile/change-pin.spec.ts | 0 .../user-profile/delete-account.spec.ts | 0 .../user-profile/profile-editing.spec.ts | 7 ++++-- .../e2e/plans/bugs-1.0.6-set01.plan.md | 0 .../e2e/plans/child-options.plan.md | 0 .../e2e/plans/chore-scheduler.plan.md | 0 .../e2e/plans/create-child.plan.md | 0 .../e2e/plans/parent-item-management.plan.md | 0 .../e2e/plans/parent-notifications.plan.md | 0 .../e2e/plans/parent-profile-button.plan.md | 0 .../plans/parent-rewards-management.plan.md | 0 .../e2e/plans/task-activated.plan.md | 0 .../e2e/plans/task-assignment.plan.md | 0 .../e2e/plans/task-modified.plan.md | 0 .../e2e/plans/user-profile.plan.md | 0 frontend/{vue-app => }/e2e/seed.spec.ts | 0 frontend/{vue-app => }/env.d.ts | 0 frontend/{vue-app => }/eslint.config.ts | 0 frontend/{vue-app => }/index.html | 0 frontend/{vue-app => }/nginx.conf | 0 frontend/{vue-app => }/nginx.conf.template | 0 frontend/{vue-app => }/package-lock.json | 0 frontend/{vue-app => }/package.json | 0 frontend/{vue-app => }/playwright.config.ts | 2 +- frontend/{vue-app => }/public/child-mode.png | Bin frontend/{vue-app => }/public/edit.png | Bin frontend/{vue-app => }/public/favicon.ico | Bin .../public/icons/icon-192x192.png | Bin .../public/icons/icon-512x512.png | Bin .../{vue-app => }/public/images/bc_logo.png | Bin .../{vue-app => }/public/images/c_logo.png | Bin .../public/images/chorly_logo.png | Bin .../{vue-app => }/public/images/feature00.png | Bin .../{vue-app => }/public/images/feature01.png | Bin .../{vue-app => }/public/images/feature02.png | Bin .../{vue-app => }/public/images/feature03.png | Bin .../{vue-app => }/public/images/full_logo.png | Bin frontend/{vue-app => }/public/images/hero.png | Bin frontend/{vue-app => }/public/manifest.json | 0 .../{vue-app => }/public/nav/children.png | Bin frontend/{vue-app => }/public/nav/chores.png | Bin .../public/nav/notifications.png | Bin frontend/{vue-app => }/public/nav/rewards.png | Bin frontend/{vue-app => }/public/profile.png | Bin frontend/{vue-app => }/public/sign-out.png | Bin frontend/{vue-app => }/public/sw.js | 0 frontend/{vue-app => }/pw-results.json | 0 frontend/{vue-app => }/src/App.vue | 0 .../{vue-app => }/src/__tests__/App.spec.ts | 0 .../src/__tests__/ItemList.spec.ts | 0 .../src/__tests__/ScheduleModal.spec.ts | 0 .../src/__tests__/TimeSelector.spec.ts | 0 .../src/__tests__/UserProfile.spec.ts | 0 .../src/__tests__/scheduleUtils.spec.ts | 0 frontend/{vue-app => }/src/assets/colors.css | 0 frontend/{vue-app => }/src/assets/styles.css | 0 .../common/__tests__/api.interceptor.spec.ts | 0 .../common/__tests__/backendEvents.spec.ts | 0 frontend/{vue-app => }/src/common/api.ts | 0 .../{vue-app => }/src/common/backendEvents.ts | 0 .../{vue-app => }/src/common/errorCodes.ts | 0 frontend/{vue-app => }/src/common/eventBus.ts | 0 .../{vue-app => }/src/common/imageCache.ts | 0 frontend/{vue-app => }/src/common/models.ts | 0 .../{vue-app => }/src/common/scheduleUtils.ts | 0 .../src/components/BackendEventsListener.vue | 0 .../__tests__/BackendEventsListener.spec.ts | 0 .../components/__tests__/LoginButton.spec.ts | 0 .../__tests__/NotificationView.spec.ts | 0 .../components/__tests__/ParentLayout.spec.ts | 0 .../src/components/auth/AuthLanding.vue | 0 .../src/components/auth/ForgotPassword.vue | 0 .../src/components/auth/Login.vue | 0 .../src/components/auth/ParentPinSetup.vue | 0 .../src/components/auth/ResetPassword.vue | 0 .../src/components/auth/Signup.vue | 0 .../src/components/auth/VerifySignup.vue | 0 .../components/auth/__tests__/Login.spec.ts | 0 .../auth/__tests__/ResetPassword.spec.ts | 0 .../auth/__tests__/VerifySignup.spec.ts | 0 .../src/components/child/ChildDetailCard.vue | 0 .../src/components/child/ChildEditView.vue | 0 .../src/components/child/ChildView.vue | 0 .../components/child/ChoreApproveDialog.vue | 0 .../src/components/child/ChoreAssignView.vue | 0 .../components/child/ChoreConfirmDialog.vue | 0 .../components/child/KindnessAssignView.vue | 0 .../src/components/child/ParentView.vue | 0 .../components/child/PenaltyAssignView.vue | 0 .../components/child/PendingRewardDialog.vue | 0 .../src/components/child/RewardAssignView.vue | 0 .../components/child/RewardConfirmDialog.vue | 0 .../components/child/TaskConfirmDialog.vue | 0 .../child/__tests__/ChildView.spec.ts | 0 .../child/__tests__/ParentView.spec.ts | 0 .../components/landing/LandingFeatures.vue | 0 .../src/components/landing/LandingFooter.vue | 0 .../src/components/landing/LandingHero.vue | 0 .../src/components/landing/LandingPage.vue | 0 .../src/components/landing/LandingProblem.vue | 0 .../landing/__tests__/LandingHero.spec.ts | 0 .../notification/NotificationView.vue | 0 .../src/components/profile/UserProfile.vue | 0 .../src/components/reward/RewardEditView.vue | 0 .../src/components/reward/RewardView.vue | 0 .../components/shared/ChildrenListView.vue | 0 .../src/components/shared/DateInputField.vue | 0 .../src/components/shared/DeleteModal.vue | 0 .../src/components/shared/EntityEditForm.vue | 0 .../src/components/shared/ErrorMessage.vue | 0 .../shared/FloatingActionButton.vue | 0 .../src/components/shared/ItemList.vue | 0 .../src/components/shared/LoginButton.vue | 0 .../src/components/shared/MessageBlock.vue | 0 .../src/components/shared/ModalDialog.vue | 0 .../src/components/shared/ScheduleModal.vue | 0 .../src/components/shared/ScrollingList.vue | 0 .../src/components/shared/StatusMessage.vue | 0 .../src/components/shared/SuccessMessage.vue | 0 .../components/shared/TimePickerPopover.vue | 0 .../src/components/shared/TimeSelector.vue | 0 .../src/components/shared/ToggleField.vue | 0 .../shared/__tests__/DateInputField.spec.ts | 0 .../shared/__tests__/EntityEditForm.spec.ts | 0 .../shared/__tests__/LoginButton.spec.ts | 0 .../shared/__tests__/ScrollingList.spec.ts | 0 .../src/components/task/ChoreEditView.vue | 0 .../src/components/task/ChoreView.vue | 0 .../src/components/task/KindnessEditView.vue | 0 .../src/components/task/KindnessView.vue | 0 .../src/components/task/PenaltyEditView.vue | 0 .../src/components/task/PenaltyView.vue | 0 .../src/components/task/TaskSubNav.vue | 0 .../src/components/utils/ImagePicker.vue | 0 .../{vue-app => }/src/layout/AuthLayout.vue | 0 .../{vue-app => }/src/layout/ChildLayout.vue | 0 .../{vue-app => }/src/layout/ParentLayout.vue | 0 frontend/{vue-app => }/src/main.ts | 0 .../src/router/__tests__/authGuard.spec.ts | 0 frontend/{vue-app => }/src/router/index.ts | 0 .../src/services/pushSubscription.ts | 0 .../stores/__tests__/auth.childmode.spec.ts | 0 .../src/stores/__tests__/auth.expiry.spec.ts | 0 frontend/{vue-app => }/src/stores/auth.ts | 0 frontend/{vue-app => }/src/test/setup.ts | 0 frontend/{vue-app => }/targeted-test.txt | 0 frontend/{vue-app => }/test-output.txt | 0 frontend/test-results/.last-run.json | 2 +- frontend/{vue-app => }/tsconfig.app.json | 0 frontend/{vue-app => }/tsconfig.json | 0 frontend/{vue-app => }/tsconfig.node.json | 0 frontend/{vue-app => }/tsconfig.vitest.json | 0 frontend/{vue-app => }/vite.config.ts | 0 frontend/{vue-app => }/vitest.config.ts | 0 263 files changed, 88 insertions(+), 79 deletions(-) rename frontend/{vue-app => }/.dockerignore (100%) rename frontend/{vue-app => }/.editorconfig (100%) rename frontend/{vue-app => }/.gitattributes (100%) rename frontend/{vue-app => }/.github/workflows/copilot-setup-steps.yml (100%) rename frontend/{vue-app => }/.github/workflows/playwright.yml (100%) rename frontend/{vue-app => }/.gitignore (100%) rename frontend/{vue-app => }/.prettierrc.json (100%) rename frontend/{vue-app => }/192.168.1.102+1-key.pem (100%) rename frontend/{vue-app => }/192.168.1.102+1.pem (100%) rename frontend/{vue-app => }/Dockerfile (100%) rename frontend/{vue-app => }/README.md (96%) rename frontend/{vue-app => }/auth-setup-after-pin.png (100%) rename frontend/{vue-app => }/auth-setup-before-pin.png (100%) rename frontend/{vue-app => }/e2e/.auth/user-cc.json (59%) rename frontend/{vue-app => }/e2e/.auth/user-delete.json (59%) rename frontend/{vue-app => }/e2e/.auth/user-no-pin.json (100%) rename frontend/{vue-app => }/e2e/.auth/user-temp-parent.json (100%) rename frontend/{vue-app => }/e2e/.auth/user.json (59%) rename frontend/{vue-app => }/e2e/.resources/crown.png (100%) rename frontend/{vue-app => }/e2e/auth-cc.setup.ts (100%) rename frontend/{vue-app => }/e2e/auth-delete.setup.ts (100%) rename frontend/{vue-app => }/e2e/auth-no-pin.setup.ts (100%) rename frontend/{vue-app => }/e2e/auth.setup.ts (100%) rename frontend/{vue-app => }/e2e/e2e-constants.ts (100%) rename frontend/{vue-app => }/e2e/example.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/child-options/delete-child.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/child-options/delete-points.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/child-options/edit-child.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/chore-scheduler/child-card-states.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/chore-scheduler/extend-time.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/chore-scheduler/helpers.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/chore-scheduler/interval-anchor.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/chore-scheduler/parent-card-states.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/chore-scheduler/parent-vs-child.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/chore-scheduler/schedule-days-mode.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/chore-scheduler/schedule-enable-disable.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/chore-scheduler/schedule-interval-mode.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/chore-scheduler/schedule-load.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/chore-scheduler/schedule-modal.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/chore-scheduler/schedule-sse.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/create-child/authorization.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/create-child/happy-path.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/create-child/navigation.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/create-child/sse.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/create-child/validation.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/chore-notification-approve.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/chore-notification-deny.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/deep-link-navigation.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/digest-action-approve-chore.spec.ts (95%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/digest-action-approve-reward.spec.ts (94%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/digest-action-deny-chore.spec.ts (94%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/digest-action-deny-reward.spec.ts (94%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/digest-action-errors.spec.ts (95%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/notification-card-overflow.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/notification-click-scroll.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/push-subscription.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/reward-notification-approve.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/reward-notification-deny.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/notifications/user-profile-notification-settings.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/profile-button/profile-button-temporary.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/profile-button/profile-button.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/rewards/reward-cancel.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/rewards/reward-convert-default.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/rewards/reward-create-edit.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/rewards/reward-delete-default.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-activation/chore-activation.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-activation/general-chore-no-completed.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-activation/kindness-activation.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-activation/penalty-activation.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-activation/pending-reward-warning.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-activation/reward-redemption.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-activation/scroll-and-flow.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-assignment/assign-title-shows-child-name.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-assignment/chore-assignment.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-assignment/kindness-assignment.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-assignment/penalty-assignment.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-assignment/reward-assignment.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-modification/chore-edit-points.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-modification/chore-reset.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-modification/kindness-edit-points.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-modification/modified-points-activation.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-modification/override-sse-child-update.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-modification/penalty-edit-points.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-modification/pending-reset-on-edit.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-modification/reward-edit-cost.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-modification/scroll-to-edited-task.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-sorting/child-sort-order.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/task-sorting/parent-sort-order.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/tasks/chore-cancel.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/tasks/chore-convert-default.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/tasks/chore-create-edit.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/tasks/chore-delete-default.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/tasks/kindness-cancel.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/tasks/kindness-create-edit.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/tasks/kindness-default.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/tasks/penalty-cancel.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/tasks/penalty-create-edit.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/tasks/penalty-default.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/tasks/test-simple-chore.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/user-profile/change-pin.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/user-profile/delete-account.spec.ts (100%) rename frontend/{vue-app => }/e2e/mode_parent/user-profile/profile-editing.spec.ts (97%) rename frontend/{vue-app => }/e2e/plans/bugs-1.0.6-set01.plan.md (100%) rename frontend/{vue-app => }/e2e/plans/child-options.plan.md (100%) rename frontend/{vue-app => }/e2e/plans/chore-scheduler.plan.md (100%) rename frontend/{vue-app => }/e2e/plans/create-child.plan.md (100%) rename frontend/{vue-app => }/e2e/plans/parent-item-management.plan.md (100%) rename frontend/{vue-app => }/e2e/plans/parent-notifications.plan.md (100%) rename frontend/{vue-app => }/e2e/plans/parent-profile-button.plan.md (100%) rename frontend/{vue-app => }/e2e/plans/parent-rewards-management.plan.md (100%) rename frontend/{vue-app => }/e2e/plans/task-activated.plan.md (100%) rename frontend/{vue-app => }/e2e/plans/task-assignment.plan.md (100%) rename frontend/{vue-app => }/e2e/plans/task-modified.plan.md (100%) rename frontend/{vue-app => }/e2e/plans/user-profile.plan.md (100%) rename frontend/{vue-app => }/e2e/seed.spec.ts (100%) rename frontend/{vue-app => }/env.d.ts (100%) rename frontend/{vue-app => }/eslint.config.ts (100%) rename frontend/{vue-app => }/index.html (100%) rename frontend/{vue-app => }/nginx.conf (100%) rename frontend/{vue-app => }/nginx.conf.template (100%) rename frontend/{vue-app => }/package-lock.json (100%) rename frontend/{vue-app => }/package.json (100%) rename frontend/{vue-app => }/playwright.config.ts (99%) rename frontend/{vue-app => }/public/child-mode.png (100%) rename frontend/{vue-app => }/public/edit.png (100%) rename frontend/{vue-app => }/public/favicon.ico (100%) rename frontend/{vue-app => }/public/icons/icon-192x192.png (100%) rename frontend/{vue-app => }/public/icons/icon-512x512.png (100%) rename frontend/{vue-app => }/public/images/bc_logo.png (100%) rename frontend/{vue-app => }/public/images/c_logo.png (100%) rename frontend/{vue-app => }/public/images/chorly_logo.png (100%) rename frontend/{vue-app => }/public/images/feature00.png (100%) rename frontend/{vue-app => }/public/images/feature01.png (100%) rename frontend/{vue-app => }/public/images/feature02.png (100%) rename frontend/{vue-app => }/public/images/feature03.png (100%) rename frontend/{vue-app => }/public/images/full_logo.png (100%) rename frontend/{vue-app => }/public/images/hero.png (100%) rename frontend/{vue-app => }/public/manifest.json (100%) rename frontend/{vue-app => }/public/nav/children.png (100%) rename frontend/{vue-app => }/public/nav/chores.png (100%) rename frontend/{vue-app => }/public/nav/notifications.png (100%) rename frontend/{vue-app => }/public/nav/rewards.png (100%) rename frontend/{vue-app => }/public/profile.png (100%) rename frontend/{vue-app => }/public/sign-out.png (100%) rename frontend/{vue-app => }/public/sw.js (100%) rename frontend/{vue-app => }/pw-results.json (100%) rename frontend/{vue-app => }/src/App.vue (100%) rename frontend/{vue-app => }/src/__tests__/App.spec.ts (100%) rename frontend/{vue-app => }/src/__tests__/ItemList.spec.ts (100%) rename frontend/{vue-app => }/src/__tests__/ScheduleModal.spec.ts (100%) rename frontend/{vue-app => }/src/__tests__/TimeSelector.spec.ts (100%) rename frontend/{vue-app => }/src/__tests__/UserProfile.spec.ts (100%) rename frontend/{vue-app => }/src/__tests__/scheduleUtils.spec.ts (100%) rename frontend/{vue-app => }/src/assets/colors.css (100%) rename frontend/{vue-app => }/src/assets/styles.css (100%) rename frontend/{vue-app => }/src/common/__tests__/api.interceptor.spec.ts (100%) rename frontend/{vue-app => }/src/common/__tests__/backendEvents.spec.ts (100%) rename frontend/{vue-app => }/src/common/api.ts (100%) rename frontend/{vue-app => }/src/common/backendEvents.ts (100%) rename frontend/{vue-app => }/src/common/errorCodes.ts (100%) rename frontend/{vue-app => }/src/common/eventBus.ts (100%) rename frontend/{vue-app => }/src/common/imageCache.ts (100%) rename frontend/{vue-app => }/src/common/models.ts (100%) rename frontend/{vue-app => }/src/common/scheduleUtils.ts (100%) rename frontend/{vue-app => }/src/components/BackendEventsListener.vue (100%) rename frontend/{vue-app => }/src/components/__tests__/BackendEventsListener.spec.ts (100%) rename frontend/{vue-app => }/src/components/__tests__/LoginButton.spec.ts (100%) rename frontend/{vue-app => }/src/components/__tests__/NotificationView.spec.ts (100%) rename frontend/{vue-app => }/src/components/__tests__/ParentLayout.spec.ts (100%) rename frontend/{vue-app => }/src/components/auth/AuthLanding.vue (100%) rename frontend/{vue-app => }/src/components/auth/ForgotPassword.vue (100%) rename frontend/{vue-app => }/src/components/auth/Login.vue (100%) rename frontend/{vue-app => }/src/components/auth/ParentPinSetup.vue (100%) rename frontend/{vue-app => }/src/components/auth/ResetPassword.vue (100%) rename frontend/{vue-app => }/src/components/auth/Signup.vue (100%) rename frontend/{vue-app => }/src/components/auth/VerifySignup.vue (100%) rename frontend/{vue-app => }/src/components/auth/__tests__/Login.spec.ts (100%) rename frontend/{vue-app => }/src/components/auth/__tests__/ResetPassword.spec.ts (100%) rename frontend/{vue-app => }/src/components/auth/__tests__/VerifySignup.spec.ts (100%) rename frontend/{vue-app => }/src/components/child/ChildDetailCard.vue (100%) rename frontend/{vue-app => }/src/components/child/ChildEditView.vue (100%) rename frontend/{vue-app => }/src/components/child/ChildView.vue (100%) rename frontend/{vue-app => }/src/components/child/ChoreApproveDialog.vue (100%) rename frontend/{vue-app => }/src/components/child/ChoreAssignView.vue (100%) rename frontend/{vue-app => }/src/components/child/ChoreConfirmDialog.vue (100%) rename frontend/{vue-app => }/src/components/child/KindnessAssignView.vue (100%) rename frontend/{vue-app => }/src/components/child/ParentView.vue (100%) rename frontend/{vue-app => }/src/components/child/PenaltyAssignView.vue (100%) rename frontend/{vue-app => }/src/components/child/PendingRewardDialog.vue (100%) rename frontend/{vue-app => }/src/components/child/RewardAssignView.vue (100%) rename frontend/{vue-app => }/src/components/child/RewardConfirmDialog.vue (100%) rename frontend/{vue-app => }/src/components/child/TaskConfirmDialog.vue (100%) rename frontend/{vue-app => }/src/components/child/__tests__/ChildView.spec.ts (100%) rename frontend/{vue-app => }/src/components/child/__tests__/ParentView.spec.ts (100%) rename frontend/{vue-app => }/src/components/landing/LandingFeatures.vue (100%) rename frontend/{vue-app => }/src/components/landing/LandingFooter.vue (100%) rename frontend/{vue-app => }/src/components/landing/LandingHero.vue (100%) rename frontend/{vue-app => }/src/components/landing/LandingPage.vue (100%) rename frontend/{vue-app => }/src/components/landing/LandingProblem.vue (100%) rename frontend/{vue-app => }/src/components/landing/__tests__/LandingHero.spec.ts (100%) rename frontend/{vue-app => }/src/components/notification/NotificationView.vue (100%) rename frontend/{vue-app => }/src/components/profile/UserProfile.vue (100%) rename frontend/{vue-app => }/src/components/reward/RewardEditView.vue (100%) rename frontend/{vue-app => }/src/components/reward/RewardView.vue (100%) rename frontend/{vue-app => }/src/components/shared/ChildrenListView.vue (100%) rename frontend/{vue-app => }/src/components/shared/DateInputField.vue (100%) rename frontend/{vue-app => }/src/components/shared/DeleteModal.vue (100%) rename frontend/{vue-app => }/src/components/shared/EntityEditForm.vue (100%) rename frontend/{vue-app => }/src/components/shared/ErrorMessage.vue (100%) rename frontend/{vue-app => }/src/components/shared/FloatingActionButton.vue (100%) rename frontend/{vue-app => }/src/components/shared/ItemList.vue (100%) rename frontend/{vue-app => }/src/components/shared/LoginButton.vue (100%) rename frontend/{vue-app => }/src/components/shared/MessageBlock.vue (100%) rename frontend/{vue-app => }/src/components/shared/ModalDialog.vue (100%) rename frontend/{vue-app => }/src/components/shared/ScheduleModal.vue (100%) rename frontend/{vue-app => }/src/components/shared/ScrollingList.vue (100%) rename frontend/{vue-app => }/src/components/shared/StatusMessage.vue (100%) rename frontend/{vue-app => }/src/components/shared/SuccessMessage.vue (100%) rename frontend/{vue-app => }/src/components/shared/TimePickerPopover.vue (100%) rename frontend/{vue-app => }/src/components/shared/TimeSelector.vue (100%) rename frontend/{vue-app => }/src/components/shared/ToggleField.vue (100%) rename frontend/{vue-app => }/src/components/shared/__tests__/DateInputField.spec.ts (100%) rename frontend/{vue-app => }/src/components/shared/__tests__/EntityEditForm.spec.ts (100%) rename frontend/{vue-app => }/src/components/shared/__tests__/LoginButton.spec.ts (100%) rename frontend/{vue-app => }/src/components/shared/__tests__/ScrollingList.spec.ts (100%) rename frontend/{vue-app => }/src/components/task/ChoreEditView.vue (100%) rename frontend/{vue-app => }/src/components/task/ChoreView.vue (100%) rename frontend/{vue-app => }/src/components/task/KindnessEditView.vue (100%) rename frontend/{vue-app => }/src/components/task/KindnessView.vue (100%) rename frontend/{vue-app => }/src/components/task/PenaltyEditView.vue (100%) rename frontend/{vue-app => }/src/components/task/PenaltyView.vue (100%) rename frontend/{vue-app => }/src/components/task/TaskSubNav.vue (100%) rename frontend/{vue-app => }/src/components/utils/ImagePicker.vue (100%) rename frontend/{vue-app => }/src/layout/AuthLayout.vue (100%) rename frontend/{vue-app => }/src/layout/ChildLayout.vue (100%) rename frontend/{vue-app => }/src/layout/ParentLayout.vue (100%) rename frontend/{vue-app => }/src/main.ts (100%) rename frontend/{vue-app => }/src/router/__tests__/authGuard.spec.ts (100%) rename frontend/{vue-app => }/src/router/index.ts (100%) rename frontend/{vue-app => }/src/services/pushSubscription.ts (100%) rename frontend/{vue-app => }/src/stores/__tests__/auth.childmode.spec.ts (100%) rename frontend/{vue-app => }/src/stores/__tests__/auth.expiry.spec.ts (100%) rename frontend/{vue-app => }/src/stores/auth.ts (100%) rename frontend/{vue-app => }/src/test/setup.ts (100%) rename frontend/{vue-app => }/targeted-test.txt (100%) rename frontend/{vue-app => }/test-output.txt (100%) rename frontend/{vue-app => }/tsconfig.app.json (100%) rename frontend/{vue-app => }/tsconfig.json (100%) rename frontend/{vue-app => }/tsconfig.node.json (100%) rename frontend/{vue-app => }/tsconfig.vitest.json (100%) rename frontend/{vue-app => }/vite.config.ts (100%) rename frontend/{vue-app => }/vitest.config.ts (100%) diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 403eac7..5305c23 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -44,15 +44,15 @@ jobs: with: node-version: "20.19.0" cache: "npm" - cache-dependency-path: frontend/vue-app/package-lock.json + cache-dependency-path: frontend/package-lock.json - name: Install frontend dependencies run: npm ci - working-directory: frontend/vue-app + working-directory: frontend - name: Run frontend unit tests run: npm run test:unit --if-present - working-directory: frontend/vue-app + working-directory: frontend - name: Build Backend Docker Image run: | @@ -60,7 +60,7 @@ jobs: - name: Build Frontend Docker Image run: | - docker build -t git.ryankegel.com:3000/kegel/chores/frontend:${{ steps.vars.outputs.tag }} ./frontend/vue-app + docker build -t git.ryankegel.com:3000/kegel/chores/frontend:${{ steps.vars.outputs.tag }} ./frontend - name: Log in to Registry uses: docker/login-action@v2 diff --git a/.github/agents/ui-planner.agent.md b/.github/agents/ui-planner.agent.md index 276ce4e..d88d8f3 100644 --- a/.github/agents/ui-planner.agent.md +++ b/.github/agents/ui-planner.agent.md @@ -17,7 +17,7 @@ You are a Senior UI/UX Architect specializing in clean, highly reactive web appl This is the **Reward** app — a family chore/reward tracker. Vue 3 (Composition API / `