From 7f0326eff1d0a98531e4e97bcbec3fe4f1c00b9a Mon Sep 17 00:00:00 2001 From: Ryan Kegel Date: Sun, 12 Jul 2026 18:52:59 -0400 Subject: [PATCH] feat: add child actions menu and achievements feature design - Introduced a new feature specification for displaying a menu with actions (Award Certificate, Award Badge) when a child's card is clicked in ParentView. - Created a detailed plan for an achievements system, outlining phases for implementation, including achievement taxonomy, MVP set, and UX considerations. - Added a template for future feature specifications to standardize documentation. --- .opencode/agents/architect.md | 98 ++++++++++++++++++ .opencode/agents/developer.md | 28 +++++ .opencode/agents/reviewer.md | 29 ++++++ .opencode/agents/tester.md | 20 ++++ .opencode/agents/writer.md | 24 +++++ .opencode/commands/code-architect.md | 58 +++++++++++ .opencode/commands/code-explorer.md | 58 +++++++++++ .opencode/skills/feature-pipeline/SKILL.md | 23 ++++ frontend/e2e/.auth/user-cc.json | 12 +-- frontend/e2e/.auth/user-delete.json | 12 +-- frontend/e2e/.auth/user.json | 12 +-- frontend/test-results/.last-run.json | 65 +++++++++++- .../ROUTINES-IMPLEMENTATION-SUMMARY.md | 0 .../bug-both-system-and-user-items-shown.md | 0 .../specs => specs}/archive/bugs-1.0.5-001.md | 0 .../specs => specs}/archive/bugs-1.0.5-002.md | 0 .../archive/bugs-1.0.6-01/bugs-1.0.6-set01.md | 0 .../archive/bugs-1.0.6-01/image-1.png | Bin .../archive/bugs-1.0.6-01/image.png | Bin .../archive/bugs-1.0.6-02/bugs-1.0.6-set02.md | 0 .../archive/bugs-1.0.6-02/image.png | Bin .../archive/e2e-routines-test-plan.md | 0 .../archive/feat-account-delete-scheduler.md | 0 .../feat-calendar-chore-component01.png | Bin .../feat-calendar-chore.md | 0 .../feat-calendar-schedule-refactor-01.md | 0 .../feat-calendar-schedule-refactor-02.md | 0 .../archive/feat-child-confirm-chore.md | 0 .../IMPLEMENTATION_SUMMARY.md | 0 .../feat-dynamic-points-after.png | Bin .../feat-dynamic-points-before.png | Bin .../feat-dynamic-points-edit-modal.png | Bin .../feat-dynamic-points.md | 0 .../feat-dynamic-points/feat-tracking.md | 0 .../archive/feat-hashed-passwords.md | 0 .../archive/feat-landing-page.md | 0 .../archive/feat-login-security.md | 0 .../archive/feat-nav-selector-icons.md | 0 ...feat-no-delete-system-tasks-and-rewards.md | 0 .../archive/feat-notify-ending-chore.md | 0 .../feat-parent-chore-notifications.md | 0 .../archive/feat-parent-mode-expire.md | 0 .../feat-profile-mark-remove-account.md | 0 .../archive/feat-schedule-enable-disable.md | 0 .../archive/feat-state-expire.md | 0 .../archive/plan-routinesFeature.prompt.md | 0 .../feat-profile-icon-button-menu.md | 0 .../archive/profile-button-menu/mockup.png | Bin .../specs => specs}/feat-child-actions.md | 0 {.github/specs => specs}/plan-achievements.md | 0 .../specs => specs}/template/feat-template.md | 0 51 files changed, 419 insertions(+), 20 deletions(-) create mode 100644 .opencode/agents/architect.md create mode 100644 .opencode/agents/developer.md create mode 100644 .opencode/agents/reviewer.md create mode 100644 .opencode/agents/tester.md create mode 100644 .opencode/agents/writer.md create mode 100644 .opencode/commands/code-architect.md create mode 100644 .opencode/commands/code-explorer.md create mode 100644 .opencode/skills/feature-pipeline/SKILL.md rename {.github/specs => specs}/archive/ROUTINES-IMPLEMENTATION-SUMMARY.md (100%) rename {.github/specs => specs}/archive/bug-both-system-and-user-items-shown.md (100%) rename {.github/specs => specs}/archive/bugs-1.0.5-001.md (100%) rename {.github/specs => specs}/archive/bugs-1.0.5-002.md (100%) rename {.github/specs => specs}/archive/bugs-1.0.6-01/bugs-1.0.6-set01.md (100%) rename {.github/specs => specs}/archive/bugs-1.0.6-01/image-1.png (100%) rename {.github/specs => specs}/archive/bugs-1.0.6-01/image.png (100%) rename {.github/specs => specs}/archive/bugs-1.0.6-02/bugs-1.0.6-set02.md (100%) rename {.github/specs => specs}/archive/bugs-1.0.6-02/image.png (100%) rename {.github/specs => specs}/archive/e2e-routines-test-plan.md (100%) rename {.github/specs => specs}/archive/feat-account-delete-scheduler.md (100%) rename {.github/specs => specs}/archive/feat-calendar-chore/feat-calendar-chore-component01.png (100%) rename {.github/specs => specs}/archive/feat-calendar-chore/feat-calendar-chore.md (100%) rename {.github/specs => specs}/archive/feat-calendar-chore/feat-calendar-schedule-refactor-01.md (100%) rename {.github/specs => specs}/archive/feat-calendar-chore/feat-calendar-schedule-refactor-02.md (100%) rename {.github/specs => specs}/archive/feat-child-confirm-chore.md (100%) rename {.github/specs => specs}/archive/feat-dynamic-points/IMPLEMENTATION_SUMMARY.md (100%) rename {.github/specs => specs}/archive/feat-dynamic-points/feat-dynamic-points-after.png (100%) rename {.github/specs => specs}/archive/feat-dynamic-points/feat-dynamic-points-before.png (100%) rename {.github/specs => specs}/archive/feat-dynamic-points/feat-dynamic-points-edit-modal.png (100%) rename {.github/specs => specs}/archive/feat-dynamic-points/feat-dynamic-points.md (100%) rename {.github/specs => specs}/archive/feat-dynamic-points/feat-tracking.md (100%) rename {.github/specs => specs}/archive/feat-hashed-passwords.md (100%) rename {.github/specs => specs}/archive/feat-landing-page.md (100%) rename {.github/specs => specs}/archive/feat-login-security.md (100%) rename {.github/specs => specs}/archive/feat-nav-selector-icons.md (100%) rename {.github/specs => specs}/archive/feat-no-delete-system-tasks-and-rewards.md (100%) rename {.github/specs => specs}/archive/feat-notify-ending-chore.md (100%) rename {.github/specs => specs}/archive/feat-parent-chore-notifications.md (100%) rename {.github/specs => specs}/archive/feat-parent-mode-expire.md (100%) rename {.github/specs => specs}/archive/feat-profile-mark-remove-account.md (100%) rename {.github/specs => specs}/archive/feat-schedule-enable-disable.md (100%) rename {.github/specs => specs}/archive/feat-state-expire.md (100%) rename {.github/specs => specs}/archive/plan-routinesFeature.prompt.md (100%) rename {.github/specs => specs}/archive/profile-button-menu/feat-profile-icon-button-menu.md (100%) rename {.github/specs => specs}/archive/profile-button-menu/mockup.png (100%) rename {.github/specs => specs}/feat-child-actions.md (100%) rename {.github/specs => specs}/plan-achievements.md (100%) rename {.github/specs => specs}/template/feat-template.md (100%) diff --git a/.opencode/agents/architect.md b/.opencode/agents/architect.md new file mode 100644 index 0000000..5904454 --- /dev/null +++ b/.opencode/agents/architect.md @@ -0,0 +1,98 @@ +--- +name: architect +description: "Defines system requirements, data contracts, and architectural blueprints." +mode: subagent +model: "deepseek-v4-pro" +thinking: "enabled" +permission: + edit: allow + bash: deny +--- + +You are the Lead Systems Architect. You are responsible for ensuring all subagents work from a shared technical specification. Understand the codebase deeply, identify and ask about underspecified details, design elegant architectures + +## Core Responsibilities + +- **Specification:** Create and maintain `specs/` markdown files for new features. +- **Clarity:** Understand before acting — Read and comprehend existing code patterns first. +- **Contracts:** Define API payload shapes (JSON schemas), Python type hints, and Vue prop interfaces before any code is written. +- **Decision Log:** Maintain a `decisions.md` file to track _why_ certain architectural choices were made (e.g., why you chose a specific Vue state management pattern). + +## Working discipline + +These bias toward caution over speed — use judgment on trivial tasks. + +- **Think before acting** — state assumptions; if the request has more than one reading, surface them instead of silently choosing; if a simpler path exists, say so. +- **Simplicity first** — the minimum that solves the problem; no speculative features, abstractions, configurability, or handling of impossible cases. +- **Surgical changes** — touch only what the task needs; do not refactor or restyle adjacent code; match existing style; clean up only the orphans your change created, and mention unrelated dead code rather than deleting it. +- **Goal-driven** — turn the task into a concrete success check and iterate until it passes. + +## Phase 1: Discovery + +Goal: Understand what needs to be built. + +1. Create a todo list covering all seven phases. +2. If the feature is unclear, ask the user: + - What problem are they solving? + - What should the feature do? + - Any constraints or requirements? +3. Summarize your understanding and confirm with the user before proceeding. + +## Phase 2: Codebase exploration + +Goal: Understand relevant existing code at both high and low levels. + +1. Dispatch 2–3 `code-explorer` sub-tasks in parallel. Each should: + - Trace through the code comprehensively, focusing on abstractions, architecture, and control flow. + - Target a different aspect (similar features, high-level architecture, UX, extension points). + - Return a list of 5–10 key files to read. +2. After they return, read every file they identified to build deep understanding. +3. Present a comprehensive summary of findings and patterns to the user. + +## Phase 3: Clarifying questions + +Goal: Fill gaps and resolve ambiguities before designing. + +**This is one of the most important phases. Do not skip.** + +1. Review the codebase findings and the original feature request. +2. Identify underspecified aspects: edge cases, error handling, integration points, scope boundaries, design preferences, backward compatibility, performance. +3. Present all questions to the user as a clear, organized list. +4. **Wait for answers** before moving to architecture. + +If the user says "whatever you think is best", make your recommendation explicit and get confirmation. + +## Phase 4: Architecture design + +Goal: Design multiple implementation approaches with different trade-offs. + +1. Dispatch 2–3 `code-architect` sub-tasks in parallel, each with a different focus: + - **Minimal changes** — smallest diff, maximum reuse of existing code. + - **Clean architecture** — maintainability, elegant abstractions. + - **Pragmatic balance** — speed plus quality. +2. Review all approaches and form an opinion on which fits best for this task. Consider scope (small fix vs. large feature), urgency, complexity, and team context. +3. Present to the user: a brief summary of each approach, a trade-offs comparison, your recommendation with reasoning, and concrete differences in implementation. +4. **Ask the user which approach they prefer.** + +## Phase 5: Create Spec + +Goal: Build the spec. +**Do not start without explicit user approval.** + +1. Wait for approval. +2. Re-read all relevant files identified earlier. +3. Spec following the chosen architecture. We are not writing code, just the specification. +4. Strictly follow codebase conventions (naming, style, error-handling patterns). +5. Update todos as you progress. + +## Phase 6: Summary + +Goal: Document what was accomplished. + +1. Mark all todos complete. +2. Save spec to specs/[feature-name].md +3. Summarize: + - What was built + - Key decisions made + - Files modified + - Suggest running the @feature-pipeline skill to begin implementation diff --git a/.opencode/agents/developer.md b/.opencode/agents/developer.md new file mode 100644 index 0000000..7bfd4b8 --- /dev/null +++ b/.opencode/agents/developer.md @@ -0,0 +1,28 @@ +--- +name: Developer +description: Implements core application features across Python backends and Vue frontends. +mode: subagent +model: deepseek-v4-pro +temperature: 0.2 +maxSteps: 50 +permission: + edit: allow + bash: allow +options: + reasoningEffort: high + thinking: + type: enabled +--- + +You are an expert full-stack developer focused on building clean, modular features. + +### Technical Stack Focus + +- **Backend:** Python. Prioritize clean architecture, explicit type hinting, and robust error/exception handling. +- **Frontend:** Vue 3. Utilize the Composition API, structured reactive state management, and semantic components. + +### Core Instructions + +1. Maintain a strong separation of concerns between business logic and the transport layer. +2. Match the established formatting, design tokens, and architectural conventions of the existing codebase. +3. Avoid pulling in heavy external dependencies when clean native implementations are straightforward. diff --git a/.opencode/agents/reviewer.md b/.opencode/agents/reviewer.md new file mode 100644 index 0000000..9b9bdf1 --- /dev/null +++ b/.opencode/agents/reviewer.md @@ -0,0 +1,29 @@ +--- +name: reviewer +description: "Performs read-only code reviews, security audits, and architectural soundness checks on Python/Vue code." +mode: "subagent" +model: deepseek-v4-pro +temperature: 0.2 +maxSteps: 50 +permission: + edit: deny + bash: allow +options: + reasoningEffort: max + thinking: + type: enabled +--- + +You are a specialized code reviewer subagent. + +### Strict Constraints + +- **Read-Only Context:** Your role is to analyze, critique, and guide. Do not use `write`, `edit`, or patch tools to modify the workspace files directly. + +### Audit Focus Areas + +- Ensure asynchronous tasks in your Vue components balance resource utilization correctly. +- Catch containerization bottlenecks or environment sync gaps in Docker configurations. +- Verify strict typing boundaries between backend Python data models and frontend components. + +Provide feedback by explicitly noting the file, logical block, and detected issue. diff --git a/.opencode/agents/tester.md b/.opencode/agents/tester.md new file mode 100644 index 0000000..4090273 --- /dev/null +++ b/.opencode/agents/tester.md @@ -0,0 +1,20 @@ +--- +name: tester +description: "Holistic QA: Manages unit, integration, and E2E test suites." +mode: "subagent" +model: "moonshot/kimi-k2.7-code" +permission: + edit: allow + bash: + "pytest *": "allow" + "npx playwright *": "allow" +--- + +You are a comprehensive QA Engineer. You own the quality of the entire repository. + +## Operational Directives + +- **Unit Testing:** Audit the Developer's unit tests. If you identify missing coverage for edge cases, write the additional unit tests yourself. +- **E2E Ownership:** Author and maintain all Playwright E2E suites. Prioritize user-facing locators (`getByRole`, `getByLabel`). +- **Gatekeeping:** Before any task is considered "Done," run the full suite (unit + E2E). If a test fails, you own the investigation. +- **Verification:** When a failure occurs, do not just notify. Trace the stack trace, identify the breaking commit or configuration change, and suggest a fix. diff --git a/.opencode/agents/writer.md b/.opencode/agents/writer.md new file mode 100644 index 0000000..e0dae2c --- /dev/null +++ b/.opencode/agents/writer.md @@ -0,0 +1,24 @@ +--- +description: "Drafts and updates technical documentation, architecture guides, and API specs." +mode: "subagent" +model: "deepseek/deepseek-v4-flash" +permission: + edit: allow + bash: deny +options: + thinking: + type: disabled +--- + +You are a technical writer who communicates complex software architectures with pinpoint precision. + +### Deliverables + +- Clear, architectural READMEs, system setup guides, and internal team runbooks. +- Clean API documentation maps outlining payload shapes, status codes, and endpoint routing. + +### Style Guide + +1. Keep prose technical, precise, and highly scannable. +2. Avoid generic corporate or marketing phrases. Lead with the technical details immediately. +3. Maximize the use of Markdown tables, bulleted structural lists, and code blocks for readability. diff --git a/.opencode/commands/code-architect.md b/.opencode/commands/code-architect.md new file mode 100644 index 0000000..04241ef --- /dev/null +++ b/.opencode/commands/code-architect.md @@ -0,0 +1,58 @@ +--- +description: Design a feature architecture by analyzing existing codebase patterns and conventions, then provide a comprehensive implementation blueprint with specific files to create or modify, component designs, data flows, and a build sequence. Use this skill when the user asks for an architecture design, an implementation plan for a non-trivial feature, or when dispatched as a sub-task during feature-dev architecture phase. +--- + +# Code Architect + +You are a senior software architect who delivers comprehensive, actionable architecture blueprints by deeply understanding codebases and making confident architectural decisions. + +## Working discipline + +These bias toward caution over speed — use judgment on trivial tasks. + +- **Think before acting** — state assumptions; if the request has more than one reading, surface them instead of silently choosing; if a simpler path exists, say so. +- **Simplicity first** — the minimum that solves the problem; no speculative features, abstractions, configurability, or handling of impossible cases. +- **Surgical changes** — touch only what the task needs; do not refactor or restyle adjacent code; match existing style; clean up only the orphans your change created, and mention unrelated dead code rather than deleting it. +- **Goal-driven** — turn the task into a concrete success check and iterate until it passes. + +## Core process + +### 1. Codebase pattern analysis + +Extract existing patterns, conventions, and architectural decisions. Identify: + +- The technology stack +- Module boundaries and abstraction layers +- Project guidelines (`CLAUDE.md` / `AGENTS.md`) +- Similar features already implemented — how were they structured? +- Key abstractions the codebase already provides + +### 2. Architecture design + +Based on patterns found, design the complete feature architecture: + +- Make decisive choices. Pick one approach and commit to it. +- Ensure seamless integration with existing code. +- Design for testability, performance, and maintainability. + +### 3. Complete implementation blueprint + +Specify every file to create or modify, component responsibilities, integration points, and data flow. Break the implementation into clear phases. + +## Output + +Deliver a decisive, complete architecture blueprint. Include: + +- **Patterns & conventions found** — list existing patterns with `file:line` references, similar features, and key abstractions to leverage. +- **Architecture decision** — your chosen approach with rationale and trade-offs. +- **Component design** — each component with its file path, responsibilities, dependencies, and interfaces. +- **Implementation map** — specific files to create or modify, with detailed change descriptions. +- **Data flow** — complete flow from entry points through transformations to outputs. +- **Build sequence** — phased implementation steps as a checklist. +- **Critical details** — error handling, state management, testing approach, performance, security. + +Make confident architectural choices. Be specific and actionable: provide file paths, function names, and concrete steps. Avoid presenting multiple equally-weighted options unless the user specifically asked for trade-off analysis. + +--- + +**User arguments:** $ARGUMENTS diff --git a/.opencode/commands/code-explorer.md b/.opencode/commands/code-explorer.md new file mode 100644 index 0000000..dcd27e8 --- /dev/null +++ b/.opencode/commands/code-explorer.md @@ -0,0 +1,58 @@ +--- +description: Deeply analyze an existing codebase feature by tracing execution paths, mapping architecture layers, understanding patterns and abstractions, and documenting dependencies. Use this skill when you need to understand how a feature works before modifying or extending it, when dispatched as a sub-task during feature-dev exploration, or when the user asks "how does X work in this codebase". +--- + +# Code Explorer + +You are an expert code analyst specializing in tracing and understanding feature implementations across codebases. + +## Core mission + +Provide a complete understanding of how a specific feature works by tracing its implementation from entry points to data storage, through all abstraction layers. + +## Analysis approach + +### 1. Feature discovery + +- Find entry points: APIs, UI components, CLI commands. +- Locate core implementation files. +- Map feature boundaries and configuration surface. + +### 2. Code-flow tracing + +- Follow call chains from entry to output. +- Trace data transformations at each step. +- Identify all dependencies and integrations. +- Document state changes and side effects. + +### 3. Architecture analysis + +- Map abstraction layers: presentation → business logic → data. +- Identify design patterns and architectural decisions. +- Document interfaces between components. +- Note cross-cutting concerns: auth, logging, caching, observability. + +### 4. Implementation details + +- Key algorithms and data structures. +- Error handling and edge cases. +- Performance considerations. +- Technical debt or improvement areas. + +## Output + +Deliver a comprehensive analysis that helps developers understand the feature deeply enough to modify or extend it. Always include: + +- **Entry points** with `file:line` references +- **Step-by-step execution flow** with data transformations +- **Key components** and their responsibilities +- **Architecture insights** — patterns, layers, design decisions +- **Dependencies** — internal and external +- **Observations** about strengths, issues, or opportunities +- **Essential files list** — the files a developer absolutely must read to understand this topic + +Structure the response for maximum clarity and usefulness. Always cite specific file paths and line numbers. + +--- + +**User arguments:** $ARGUMENTS diff --git a/.opencode/skills/feature-pipeline/SKILL.md b/.opencode/skills/feature-pipeline/SKILL.md new file mode 100644 index 0000000..2fbccb3 --- /dev/null +++ b/.opencode/skills/feature-pipeline/SKILL.md @@ -0,0 +1,23 @@ +--- +name: feature-pipeline +description: "Executes the full dev-to-docs pipeline: Developer -> Tester -> Reviewer -> Writer." +--- + +## What I do + +I orchestrate a sequential feature implementation and verification pipeline: + +1. **Developer**: Implements the feature based on the spec. +2. **Reviewer**: Audits the code and architectural soundness. +3. **Tester**: Runs full unit/E2E test suites; repairs failures if found. +4. **Writer**: Updates README and API docs based on verified code. + +## Execution Rules + +- Stop and ask the user for clarification if a step fails or is ambiguous. +- Use the `@` mention to trigger the respective subagents sequentially. +- Pass the context from the previous stage to the next stage to ensure consistency. + +## When to use me + +Invoke me when you are ready to begin a new feature or when the Architect has finished a specification. diff --git a/frontend/e2e/.auth/user-cc.json b/frontend/e2e/.auth/user-cc.json index caf7f8f..ddfd585 100644 --- a/frontend/e2e/.auth/user-cc.json +++ b/frontend/e2e/.auth/user-cc.json @@ -2,20 +2,20 @@ "cookies": [ { "name": "refresh_token", - "value": "reYniSI2OIXUAcXkeBNTaaOD7MJOzNEhwxwSDO42bew", + "value": "G_lq6dT7MCHBDgoW18PimjumaPeyWi7hRSwj2WKA_JI", "domain": "localhost", "path": "/api/auth", - "expires": 1787504746.987795, + "expires": 1791672153.30646, "httpOnly": true, "secure": true, "sameSite": "Strict" }, { "name": "access_token", - "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZS1jY0B0ZXN0LmNvbSIsInVzZXJfaWQiOiJhNDQyY2E4Ni1lNGIzLTRjZjEtYThmYS0zNWJmYmZhNzk5NjYiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3Nzk3Mzk1NDZ9.3zqjc9RdG9jpr5wbmhbqYUCvzxUl9d8tcc4EY1-BYJc", + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZS1jY0B0ZXN0LmNvbSIsInVzZXJfaWQiOiJkMWU3MzM3OC04N2I4LTQ2ZjQtYmE2ZC1hMDdhYjE0YjFkOWUiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3ODM5MDY5NTN9.9GiSopufAFJ7qa9Cu0AhYpUDfempiYayhLaYIA_IoSc", "domain": "localhost", "path": "/", - "expires": 1779739546.987748, + "expires": 1783906953.306413, "httpOnly": true, "secure": true, "sameSite": "Lax" @@ -27,11 +27,11 @@ "localStorage": [ { "name": "authSyncEvent", - "value": "{\"type\":\"logout\",\"at\":1779728746835}" + "value": "{\"type\":\"logout\",\"at\":1783896153166}" }, { "name": "parentAuth", - "value": "{\"expiresAt\":1779901547148}" + "value": "{\"expiresAt\":1784068953466}" } ] } diff --git a/frontend/e2e/.auth/user-delete.json b/frontend/e2e/.auth/user-delete.json index dc04d94..eeebc47 100644 --- a/frontend/e2e/.auth/user-delete.json +++ b/frontend/e2e/.auth/user-delete.json @@ -2,20 +2,20 @@ "cookies": [ { "name": "refresh_token", - "value": "DlW9UoiIvVxuPPp3wfo3qsVP5tlO2Iw2e8TZThWeMDw", + "value": "fgz_j-G_5UJ-xLf2dJBqcrtiWJkC3amMr8Y90dx_Kdo", "domain": "localhost", "path": "/api/auth", - "expires": 1787504746.877459, + "expires": 1791672153.435032, "httpOnly": true, "secure": true, "sameSite": "Strict" }, { "name": "access_token", - "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZS1kZWxldGVAdGVzdC5jb20iLCJ1c2VyX2lkIjoiM2E3ZDA3NjYtYTQyNy00NTQ5LWE0NGEtMWU0ZjUwOGRhZDBhIiwidG9rZW5fdmVyc2lvbiI6MCwiZXhwIjoxNzc5NzM5NTQ2fQ.jFLpGeJBM7U-x-N1jT-muHjBStXFyeb5oQS0LryWwr0", + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZS1kZWxldGVAdGVzdC5jb20iLCJ1c2VyX2lkIjoiYjExZTViNzItNGJlOC00YmY1LTk0ODYtMjE2Nzc5ZGU4Y2ViIiwidG9rZW5fdmVyc2lvbiI6MCwiZXhwIjoxNzgzOTA2OTUzfQ.rTfjAYCaaRGAtRrP3eOegQNkIq_o7kTIgvGW9Sn3bO0", "domain": "localhost", "path": "/", - "expires": 1779739546.877411, + "expires": 1783906953.43499, "httpOnly": true, "secure": true, "sameSite": "Lax" @@ -27,11 +27,11 @@ "localStorage": [ { "name": "authSyncEvent", - "value": "{\"type\":\"logout\",\"at\":1779728746722}" + "value": "{\"type\":\"logout\",\"at\":1783896153271}" }, { "name": "parentAuth", - "value": "{\"expiresAt\":1779901547028}" + "value": "{\"expiresAt\":1784068953610}" } ] } diff --git a/frontend/e2e/.auth/user.json b/frontend/e2e/.auth/user.json index ab7a4a7..443aa49 100644 --- a/frontend/e2e/.auth/user.json +++ b/frontend/e2e/.auth/user.json @@ -2,20 +2,20 @@ "cookies": [ { "name": "refresh_token", - "value": "Xz4WQkQNdryfFsS3GaA09dGDz3yEaRwHxF2VdIh8LwQ", + "value": "5-wHHNkUIcILfUZqXFDTiggTIE4F_rhifieI07DQ6WQ", "domain": "localhost", "path": "/api/auth", - "expires": 1787504745.201123, + "expires": 1791672151.681425, "httpOnly": true, "secure": true, "sameSite": "Strict" }, { "name": "access_token", - "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZUB0ZXN0LmNvbSIsInVzZXJfaWQiOiJhMWVlZGNkOC1hMGE0LTQyYjMtOWU3ZC01MWRmNGM1ZTFiNTUiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3Nzk3Mzk1NDV9.Q2q-xiDjAw8pu3t8ioaawUpGK1__5wBiPZ-vFvXHnmw", + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZUB0ZXN0LmNvbSIsInVzZXJfaWQiOiIyNTgxZmQwOS05OTMxLTQ3ZTctYmRkYi00MjEwZmQxM2U1MDkiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3ODM5MDY5NTF9.8qvDLe203vx2YOUnzAoOmBDcT6uov4HhsM5o00UseMg", "domain": "localhost", "path": "/", - "expires": 1779739545.201078, + "expires": 1783906951.68138, "httpOnly": true, "secure": true, "sameSite": "Lax" @@ -27,11 +27,11 @@ "localStorage": [ { "name": "authSyncEvent", - "value": "{\"type\":\"logout\",\"at\":1779728745058}" + "value": "{\"type\":\"logout\",\"at\":1783896151561}" }, { "name": "parentAuth", - "value": "{\"expiresAt\":1779901545328}" + "value": "{\"expiresAt\":1784068951811}" } ] } diff --git a/frontend/test-results/.last-run.json b/frontend/test-results/.last-run.json index cbcc1fb..f148683 100644 --- a/frontend/test-results/.last-run.json +++ b/frontend/test-results/.last-run.json @@ -1,4 +1,65 @@ { - "status": "passed", - "failedTests": [] + "status": "failed", + "failedTests": [ + "ef79c4d59112f5749637-c6693163663a7bc4af47", + "3949411e68481643919b-e327f34655d14e94d19b", + "fec17c26f90fca53cae9-b0219eaf807eb93484de", + "539fbf55106c07a0b0af-4dbe4ab6bd5b824248fe", + "a0ff00fe9db1b94ee976-70bd0af5bd4dc0fc90f8", + "60daab3ab23c5105aded-4ff2d3abc6221e754043", + "573422bc1cb767632e56-3b881fd32c8dca14d993", + "a0ede9b164ff4874e0ea-1430723f42605dce5096", + "73e956d909565ee0ca8d-2027a05776ace22fcea7", + "7aed7c2f6df74087d7cf-768260ba8f7794e89556", + "f29a758461fac766bf43-480f0ca0072bcc8fb76f", + "fee2e0be313c94e5185c-2badde8a28abc5c92483", + "09d158a9a9fa648fe02b-834e154496de68909d7e", + "57f43742bac53b67778c-267067f10b8182dd62d2", + "d687e3783b3095baa295-34bf92454984a3e87508", + "af256c240cf1a2fb3f6b-194c319d22a4af671ff8", + "c71403f444e9a906f110-e6ecd6bb63b4ec5a5a25", + "d6f8839cd56b790be4c0-34272e575f57bb690613", + "252e6efd0a4ebdeaacb8-a975d50326943969dc39", + "b3bc53914d8153862f2d-cf454c9d14c4d890a799", + "0445e4f0b57f766a6451-f4a2bd69ecb1b7eff202", + "1aca78671e91610cfc9f-6588e52abfbc15f784e0", + "b774d3e2b6f2ab46c8be-712d31bbc4fd0bd84af0", + "cce20a13127be7ea2249-a1e21277b88115dec270", + "03642ed65289ed2617e8-8509dd8e7ffa8afb8dd4", + "5a9cc0eb7bb05d0304c1-ccef440cfe201a210d22", + "f962074ab28ffe10b237-ea88306db2c45f2140d7", + "6c63717f825d79d1f694-1c19b7cf35610bc938bd", + "b9f570289262774d1452-2cea4ebc13e842e0985f", + "198b299b4340f34d5cd8-1382ca783eb1a0df2f90", + "2fc044a25384fd9f0d2e-e5dc2182f906ab69b27e", + "1fe10bf5a089bf03c3d4-54a8b73063048512c9a8", + "88fb6b12140d9598bca5-63e11902b68d2508ccd1", + "9196a99e5e3448680c82-30e720656820ccdbdae8", + "4cf8bbd68887cddb5d7d-8ae6e42f7fc7d3fa7e6a", + "5da8774fa40a8b041983-096e580bb83c023e014d", + "f023cabcfbd72e9c251e-766e068ad9eb2a388263", + "29cf2a7310bfafff8608-9edd7583e0e756876a86", + "d8a456b031baa1625a54-0c1555e61dea4396c276", + "abb177b0248c39107c83-969aa0015db0fc99d5ee", + "0d5d17a469d01de6a6b0-65be18163a6824f56957", + "0d5d17a469d01de6a6b0-69e9aaee75fe0e476257", + "0d5d17a469d01de6a6b0-98cb437eec17db3eeb0d", + "0d5d17a469d01de6a6b0-211b11979089425fba87", + "0d5d17a469d01de6a6b0-cb56e46a1465364b8983", + "0d5d17a469d01de6a6b0-5787b1c19c5c3b93cbb4", + "22fbaea7d0c75fbdca8e-4aaa785e7a4dfdc6c43a", + "d450fb075a7292ee9d55-51b084418c21b19c1e90", + "367d416bc67f2212f2ea-d7b6f60f5a9c28db1e79", + "e7caec8f355ec9da3afb-126bac0fba5fb25bb468", + "68f4a83ea53b695d9889-c260f9d095c72937b8d6", + "4a81e53ab660f2d9ca43-237bf2b7adc9bcde6cd8", + "4a81e53ab660f2d9ca43-d60881fdd2c89e327569", + "4a524ee12c5a95d8b699-fa48b54e49f31839e5a8", + "f7f03fab22cee8cdd386-53724737f77985005257", + "f7f03fab22cee8cdd386-9e5db08c6f11001430bf", + "05c60e5489894b04b806-a583933cd36dbec0fbc8", + "1aeb41645bc07733ddab-0bfabbf02a8ee16b1c21", + "1aeb41645bc07733ddab-63443be391ff2e2e6a9a", + "cc1bb6b0a79d3836a965-6ecd8fb21115aebcda0d" + ] } \ No newline at end of file diff --git a/.github/specs/archive/ROUTINES-IMPLEMENTATION-SUMMARY.md b/specs/archive/ROUTINES-IMPLEMENTATION-SUMMARY.md similarity index 100% rename from .github/specs/archive/ROUTINES-IMPLEMENTATION-SUMMARY.md rename to specs/archive/ROUTINES-IMPLEMENTATION-SUMMARY.md diff --git a/.github/specs/archive/bug-both-system-and-user-items-shown.md b/specs/archive/bug-both-system-and-user-items-shown.md similarity index 100% rename from .github/specs/archive/bug-both-system-and-user-items-shown.md rename to specs/archive/bug-both-system-and-user-items-shown.md diff --git a/.github/specs/archive/bugs-1.0.5-001.md b/specs/archive/bugs-1.0.5-001.md similarity index 100% rename from .github/specs/archive/bugs-1.0.5-001.md rename to specs/archive/bugs-1.0.5-001.md diff --git a/.github/specs/archive/bugs-1.0.5-002.md b/specs/archive/bugs-1.0.5-002.md similarity index 100% rename from .github/specs/archive/bugs-1.0.5-002.md rename to specs/archive/bugs-1.0.5-002.md diff --git a/.github/specs/archive/bugs-1.0.6-01/bugs-1.0.6-set01.md b/specs/archive/bugs-1.0.6-01/bugs-1.0.6-set01.md similarity index 100% rename from .github/specs/archive/bugs-1.0.6-01/bugs-1.0.6-set01.md rename to specs/archive/bugs-1.0.6-01/bugs-1.0.6-set01.md diff --git a/.github/specs/archive/bugs-1.0.6-01/image-1.png b/specs/archive/bugs-1.0.6-01/image-1.png similarity index 100% rename from .github/specs/archive/bugs-1.0.6-01/image-1.png rename to specs/archive/bugs-1.0.6-01/image-1.png diff --git a/.github/specs/archive/bugs-1.0.6-01/image.png b/specs/archive/bugs-1.0.6-01/image.png similarity index 100% rename from .github/specs/archive/bugs-1.0.6-01/image.png rename to specs/archive/bugs-1.0.6-01/image.png diff --git a/.github/specs/archive/bugs-1.0.6-02/bugs-1.0.6-set02.md b/specs/archive/bugs-1.0.6-02/bugs-1.0.6-set02.md similarity index 100% rename from .github/specs/archive/bugs-1.0.6-02/bugs-1.0.6-set02.md rename to specs/archive/bugs-1.0.6-02/bugs-1.0.6-set02.md diff --git a/.github/specs/archive/bugs-1.0.6-02/image.png b/specs/archive/bugs-1.0.6-02/image.png similarity index 100% rename from .github/specs/archive/bugs-1.0.6-02/image.png rename to specs/archive/bugs-1.0.6-02/image.png diff --git a/.github/specs/archive/e2e-routines-test-plan.md b/specs/archive/e2e-routines-test-plan.md similarity index 100% rename from .github/specs/archive/e2e-routines-test-plan.md rename to specs/archive/e2e-routines-test-plan.md diff --git a/.github/specs/archive/feat-account-delete-scheduler.md b/specs/archive/feat-account-delete-scheduler.md similarity index 100% rename from .github/specs/archive/feat-account-delete-scheduler.md rename to specs/archive/feat-account-delete-scheduler.md diff --git a/.github/specs/archive/feat-calendar-chore/feat-calendar-chore-component01.png b/specs/archive/feat-calendar-chore/feat-calendar-chore-component01.png similarity index 100% rename from .github/specs/archive/feat-calendar-chore/feat-calendar-chore-component01.png rename to specs/archive/feat-calendar-chore/feat-calendar-chore-component01.png diff --git a/.github/specs/archive/feat-calendar-chore/feat-calendar-chore.md b/specs/archive/feat-calendar-chore/feat-calendar-chore.md similarity index 100% rename from .github/specs/archive/feat-calendar-chore/feat-calendar-chore.md rename to specs/archive/feat-calendar-chore/feat-calendar-chore.md diff --git a/.github/specs/archive/feat-calendar-chore/feat-calendar-schedule-refactor-01.md b/specs/archive/feat-calendar-chore/feat-calendar-schedule-refactor-01.md similarity index 100% rename from .github/specs/archive/feat-calendar-chore/feat-calendar-schedule-refactor-01.md rename to specs/archive/feat-calendar-chore/feat-calendar-schedule-refactor-01.md diff --git a/.github/specs/archive/feat-calendar-chore/feat-calendar-schedule-refactor-02.md b/specs/archive/feat-calendar-chore/feat-calendar-schedule-refactor-02.md similarity index 100% rename from .github/specs/archive/feat-calendar-chore/feat-calendar-schedule-refactor-02.md rename to specs/archive/feat-calendar-chore/feat-calendar-schedule-refactor-02.md diff --git a/.github/specs/archive/feat-child-confirm-chore.md b/specs/archive/feat-child-confirm-chore.md similarity index 100% rename from .github/specs/archive/feat-child-confirm-chore.md rename to specs/archive/feat-child-confirm-chore.md diff --git a/.github/specs/archive/feat-dynamic-points/IMPLEMENTATION_SUMMARY.md b/specs/archive/feat-dynamic-points/IMPLEMENTATION_SUMMARY.md similarity index 100% rename from .github/specs/archive/feat-dynamic-points/IMPLEMENTATION_SUMMARY.md rename to specs/archive/feat-dynamic-points/IMPLEMENTATION_SUMMARY.md diff --git a/.github/specs/archive/feat-dynamic-points/feat-dynamic-points-after.png b/specs/archive/feat-dynamic-points/feat-dynamic-points-after.png similarity index 100% rename from .github/specs/archive/feat-dynamic-points/feat-dynamic-points-after.png rename to specs/archive/feat-dynamic-points/feat-dynamic-points-after.png diff --git a/.github/specs/archive/feat-dynamic-points/feat-dynamic-points-before.png b/specs/archive/feat-dynamic-points/feat-dynamic-points-before.png similarity index 100% rename from .github/specs/archive/feat-dynamic-points/feat-dynamic-points-before.png rename to specs/archive/feat-dynamic-points/feat-dynamic-points-before.png diff --git a/.github/specs/archive/feat-dynamic-points/feat-dynamic-points-edit-modal.png b/specs/archive/feat-dynamic-points/feat-dynamic-points-edit-modal.png similarity index 100% rename from .github/specs/archive/feat-dynamic-points/feat-dynamic-points-edit-modal.png rename to specs/archive/feat-dynamic-points/feat-dynamic-points-edit-modal.png diff --git a/.github/specs/archive/feat-dynamic-points/feat-dynamic-points.md b/specs/archive/feat-dynamic-points/feat-dynamic-points.md similarity index 100% rename from .github/specs/archive/feat-dynamic-points/feat-dynamic-points.md rename to specs/archive/feat-dynamic-points/feat-dynamic-points.md diff --git a/.github/specs/archive/feat-dynamic-points/feat-tracking.md b/specs/archive/feat-dynamic-points/feat-tracking.md similarity index 100% rename from .github/specs/archive/feat-dynamic-points/feat-tracking.md rename to specs/archive/feat-dynamic-points/feat-tracking.md diff --git a/.github/specs/archive/feat-hashed-passwords.md b/specs/archive/feat-hashed-passwords.md similarity index 100% rename from .github/specs/archive/feat-hashed-passwords.md rename to specs/archive/feat-hashed-passwords.md diff --git a/.github/specs/archive/feat-landing-page.md b/specs/archive/feat-landing-page.md similarity index 100% rename from .github/specs/archive/feat-landing-page.md rename to specs/archive/feat-landing-page.md diff --git a/.github/specs/archive/feat-login-security.md b/specs/archive/feat-login-security.md similarity index 100% rename from .github/specs/archive/feat-login-security.md rename to specs/archive/feat-login-security.md diff --git a/.github/specs/archive/feat-nav-selector-icons.md b/specs/archive/feat-nav-selector-icons.md similarity index 100% rename from .github/specs/archive/feat-nav-selector-icons.md rename to specs/archive/feat-nav-selector-icons.md diff --git a/.github/specs/archive/feat-no-delete-system-tasks-and-rewards.md b/specs/archive/feat-no-delete-system-tasks-and-rewards.md similarity index 100% rename from .github/specs/archive/feat-no-delete-system-tasks-and-rewards.md rename to specs/archive/feat-no-delete-system-tasks-and-rewards.md diff --git a/.github/specs/archive/feat-notify-ending-chore.md b/specs/archive/feat-notify-ending-chore.md similarity index 100% rename from .github/specs/archive/feat-notify-ending-chore.md rename to specs/archive/feat-notify-ending-chore.md diff --git a/.github/specs/archive/feat-parent-chore-notifications.md b/specs/archive/feat-parent-chore-notifications.md similarity index 100% rename from .github/specs/archive/feat-parent-chore-notifications.md rename to specs/archive/feat-parent-chore-notifications.md diff --git a/.github/specs/archive/feat-parent-mode-expire.md b/specs/archive/feat-parent-mode-expire.md similarity index 100% rename from .github/specs/archive/feat-parent-mode-expire.md rename to specs/archive/feat-parent-mode-expire.md diff --git a/.github/specs/archive/feat-profile-mark-remove-account.md b/specs/archive/feat-profile-mark-remove-account.md similarity index 100% rename from .github/specs/archive/feat-profile-mark-remove-account.md rename to specs/archive/feat-profile-mark-remove-account.md diff --git a/.github/specs/archive/feat-schedule-enable-disable.md b/specs/archive/feat-schedule-enable-disable.md similarity index 100% rename from .github/specs/archive/feat-schedule-enable-disable.md rename to specs/archive/feat-schedule-enable-disable.md diff --git a/.github/specs/archive/feat-state-expire.md b/specs/archive/feat-state-expire.md similarity index 100% rename from .github/specs/archive/feat-state-expire.md rename to specs/archive/feat-state-expire.md diff --git a/.github/specs/archive/plan-routinesFeature.prompt.md b/specs/archive/plan-routinesFeature.prompt.md similarity index 100% rename from .github/specs/archive/plan-routinesFeature.prompt.md rename to specs/archive/plan-routinesFeature.prompt.md diff --git a/.github/specs/archive/profile-button-menu/feat-profile-icon-button-menu.md b/specs/archive/profile-button-menu/feat-profile-icon-button-menu.md similarity index 100% rename from .github/specs/archive/profile-button-menu/feat-profile-icon-button-menu.md rename to specs/archive/profile-button-menu/feat-profile-icon-button-menu.md diff --git a/.github/specs/archive/profile-button-menu/mockup.png b/specs/archive/profile-button-menu/mockup.png similarity index 100% rename from .github/specs/archive/profile-button-menu/mockup.png rename to specs/archive/profile-button-menu/mockup.png diff --git a/.github/specs/feat-child-actions.md b/specs/feat-child-actions.md similarity index 100% rename from .github/specs/feat-child-actions.md rename to specs/feat-child-actions.md diff --git a/.github/specs/plan-achievements.md b/specs/plan-achievements.md similarity index 100% rename from .github/specs/plan-achievements.md rename to specs/plan-achievements.md diff --git a/.github/specs/template/feat-template.md b/specs/template/feat-template.md similarity index 100% rename from .github/specs/template/feat-template.md rename to specs/template/feat-template.md