Skip to content

Latest commit

 

History

History
90 lines (81 loc) · 5.89 KB

File metadata and controls

90 lines (81 loc) · 5.89 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Changed

  • CI/CD & Release Process
    • Rewrite release.yml — branch-aware versioning, GitHub Environments (development/production), auto-commit VERSION file, prerelease flag for develop releases
    • Move fmt-lint.sh from .github/scripts/ to scripts/ (local dev tools separated from CI scripts)
    • Add .github/pull_request_template.md with checklist
    • Add CODEOWNERS file
    • Update ROADMAP.md tag format references (vX.Y.Z instead of release/vX.Y.Z)
    • Commit Package.resolved (was gitignored; required by Xcode Cloud)
    • Rename app display name from "Charstack" to "Charflow" (CFBundleDisplayName)
    • Update README and docs to use "Charflow" as the product name

Added

  • Backlog & Day Rollover (Phase 1 Week 3)
    • BacklogView + BacklogViewModel — dedicated backlog tab with tasks grouped by date ("Today", "Yesterday", "This Week", "Older")
    • BacklogDateGroup enum — categorizes backlog tasks by relative date with display names and SF Symbols
    • TaskService.fetchGroupedBacklogTasks() — grouped query returning backlog tasks organized by date category
    • EmptyStateView shared component — reusable empty state with icon, title, and optional subtitle
    • TaskEditSheet extracted to Shared/Components/ — shared between RegionFocusView and BacklogView
    • TabView navigation with Today and Backlog tabs
    • AppCoordinator.Tab enum — manages tab selection state
    • ScenePhase observer in RootView — triggers day rollover when app returns from background
    • Last rollover date tracking to avoid redundant rollover calls within the same day
    • Move-to-region action from backlog with bucket selection and 1-3-5 constraint validation
    • BacklogDateGroupTests (7 tests) — date grouping, sorting, display names, system images
    • TaskServiceTests — 3 new grouped backlog tests (grouping, empty, exclusion)

Changed

  • TodayView now shows only active regions (Morning, Afternoon, Evening) — backlog is its own tab

  • TodayViewModel no longer fetches backlog tasks (separated to BacklogViewModel)

  • RegionFocusView uses shared EmptyStateView instead of inline empty state

  • TodayView uses shared EmptyStateView for empty day message

  • AppCoordinator updated with Tab enum and selectedTab state for TabView support

  • RootView restructured from single NavigationStack to TabView with per-tab NavigationStacks

  • Unit test count: 86 tests (up from previous count), all passing

  • UI Layer (Phase 1 Week 2)

    • TodayView + TodayViewModel — main dashboard with four region cards, daily progress bar, rollover banner
    • RegionCard component — region summary with icon, must-do title, bucket fill counts, progress bar
    • RegionFocusView + RegionFocusViewModel — single-region task list grouped by bucket (Must/Comp/Misc)
    • TaskRow component — checkbox, title, notes preview, bucket badge, swipe actions (complete/delete), context menu
    • QuickAddBar component — inline task creation with title field, bucket picker, and add button
    • TaskEditSheet — modal sheet for editing task title and notes
    • AppCoordinator — lightweight NavigationStack coordinator with type-safe Route enum
    • RootView — root view wiring NavigationStack, coordinator, and destination mapping
    • Theme system — centralized colors (semantic + region/bucket), typography, spacing, and corner radius constants
    • PreviewData — in-memory container factory with sample tasks for SwiftUI previews
    • Navigation: Today → RegionFocus (tap region card), back navigation, context menu "Move to..." with sub-menus
    • Empty states for regions with no tasks and days with no planned tasks
    • Accessibility: labels, hints, combined elements, VoiceOver-friendly descriptions throughout
    • SwiftUI previews for all components (RegionCard, TaskRow, TodayView, RegionFocusView, QuickAddBar)

Fixed

  • release.yml — added missing -destination and code signing flags to archive step

  • Data Layer (Phase 1 Week 1)

    • CharstackTask SwiftData model — CloudKit-safe (no unique constraints, all defaults)
    • Region enum (Morning, Afternoon, Evening, Backlog) with display names, SF Symbols, and sort ordering
    • TaskBucket enum (Must, Complementary, Misc, None) with 1-3-5 max counts
    • TaskStatus enum (Todo, InProgress, Done, Deferred) with lifecycle semantics
    • ModelContainerSetup — production (on-disk) and testing (in-memory) container factories
    • TaskService — full CRUD, 1-3-5 constraint enforcement, day rollover, capacity queries
    • Date+Extensions — startOfDay, endOfDay, isSameDay, addingDays, isBeforeToday
    • SwiftData wired into CharstackApp.swift entry point
  • Unit Tests (38 tests, all passing)

    • RegionTests — all cases, display names, sort order, constraints
    • TaskBucketTests — max counts, 1-3-5 total, constrained buckets
    • TaskStatusTests — lifecycle flags, bucket limit semantics
    • CharstackTaskTests — initialization, accessors, completion, deferral, overdue logic
    • TaskServiceTests — CRUD, 1-3-5 enforcement per region/day, move, toggle, rollover, idempotency
    • DateExtensionsTests — all date helper methods
  • Initial project structure with SwiftUI and MVVM architecture

  • Documentation files:

    • Requirements specification
    • Architecture documentation
    • Project roadmap
  • .gitignore configuration for Xcode projects

  • LICENSE file (MIT License)

  • README.md with project overview and setup instructions

  • GitHub workflow templates for CI/CD and project management

  • App Store compliance requirements (account deletion, Sign in with Apple, privacy policy)

  • CloudKit-first cloud sync strategy documented in architecture