From 740cb1b18ada58774ca18b9b39979d25419ac82e Mon Sep 17 00:00:00 2001 From: leavy Date: Thu, 11 Jun 2026 00:12:51 +0800 Subject: [PATCH] chore: start Focus Seed 1.0.1 development --- CHANGELOG.md | 12 ++ README.md | 8 ++ docs/branching-and-releases.md | 32 +++++ launch/roadmaps/v1.0.1-experience-brief.md | 146 +++++++++++++++++++++ pubspec.yaml | 2 +- 5 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 docs/branching-and-releases.md create mode 100644 launch/roadmaps/v1.0.1-experience-brief.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bdc9ca..5b4a88f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All notable product changes are recorded here. +## [Unreleased] - 1.0.1 + +### Planned + +- Strengthen timer lifecycle reliability and prevent invalid session completion. +- Select and implement one coherent visual direction instead of mixing styles. +- Define a reusable motion, feedback, dialog, navigation, and accessibility system. +- Make the Daily Anchor Loop and seed-growth concept the product's distinctive experience. +- Establish Flutter localization and responsive-layout foundations. +- Expand domain, widget, lifecycle, and visual regression test coverage. +- Keep the complete free core loop uninterrupted by ads or paywalls. + ## [1.0.0] - 2026-06-10 ### Added diff --git a/README.md b/README.md index b58034d..1154f23 100644 --- a/README.md +++ b/README.md @@ -44,3 +44,11 @@ flutter build appbundle --release ``` The upload keystore and `key.properties` are intentionally excluded from Git. Keep them backed up securely because future Play updates require the same upload key. + +## Version Control + +- `main`: sealed, releasable versions only +- `v1.0.0`: immutable tag for the first Google Play testing release +- `codex/1.0.1`: active product-quality and experience development + +See `docs/branching-and-releases.md` before creating release or feature branches. diff --git a/docs/branching-and-releases.md b/docs/branching-and-releases.md new file mode 100644 index 0000000..815bc39 --- /dev/null +++ b/docs/branching-and-releases.md @@ -0,0 +1,32 @@ +# Branching And Releases + +## Branches + +- `main` contains only verified release states. +- `codex/1.0.1` is the active integration branch for version 1.0.1. +- Short-lived work branches should use `codex/feature-name` and merge back into the active version branch after review. + +## Release Flow + +1. Implement on the active version branch. +2. Run format, analyze, tests, release build, permission review, and device smoke tests. +3. Update `CHANGELOG.md` and create a release record under `launch/releases`. +4. Merge the verified state into `main`. +5. Create an annotated version tag such as `v1.0.1`. +6. Preserve the AAB outside Git and record its SHA-256 in the release record. + +## Protected Material + +Never commit: + +- Upload keystores +- `key.properties` +- `local.properties` +- Tester email lists +- Play Console account exports +- Passwords, verification codes, or API secrets +- Generated APK/AAB files + +## Quality Gate + +A release cannot be tagged unless all required checks pass and the exact build has been smoke-tested. Visual changes also require screenshots on narrow and standard phone widths, light/dark themes, text scaling, and the supported locales. diff --git a/launch/roadmaps/v1.0.1-experience-brief.md b/launch/roadmaps/v1.0.1-experience-brief.md new file mode 100644 index 0000000..31739f4 --- /dev/null +++ b/launch/roadmaps/v1.0.1-experience-brief.md @@ -0,0 +1,146 @@ +# Focus Seed 1.0.1 Experience Brief + +Status: approved product direction, visual route not yet selected. + +## Product Intent + +Focus Seed should feel exceptionally calm, responsive, and effortless even though its feature set is intentionally small. Product quality comes from the complete experience: clear flows, immediate feedback, reliable behavior, thoughtful motion, coherent visual identity, and low cognitive load. + +The differentiated loop is: + +```text +Choose today's anchor -> focus -> complete one small habit -> reflect -> see the seed grow +``` + +Every screen and feature should strengthen this loop. Generic feature accumulation is not a goal. + +## Design Principles + +1. One coherent visual language + - Do not mix clay, cyberpunk, glass, paper, and flat Material styles indiscriminately. + - Select one primary direction after reviewing three complete visual routes. + - The chosen route must work in light/dark mode, on low-end Android devices, and across supported languages. + +2. Interaction before decoration + - Primary actions must be obvious and reachable. + - Taps acknowledge immediately through state, motion, and selective haptics. + - Navigation preserves context and never surprises the user. + - Dialogs are reserved for confirmation, focused input, or meaningful decisions. + +3. Motion with purpose + - Tap/state feedback: 100-160ms. + - Component transitions: 160-240ms. + - Page or major-state transitions: 220-320ms. + - Respect reduced-motion settings. + - Avoid continuous decorative animation, layout shifts, and motion that delays input. + +4. Reliability is part of UX + - Timer state must survive backgrounding, interruption, and process recreation. + - A session cannot be recorded as fully completed without valid elapsed time or explicit, honest manual entry. + - Saving, deleting, importing, and restoring data must have clear success and recovery states. + +5. Global-ready foundations + - Move user-facing strings into ARB localization files. + - Format dates, numbers, durations, and plurals by locale. + - Support longer translated strings, text scaling, and RTL-safe layout primitives. + - Country availability, store listing language, privacy, pricing, and in-app language remain separate release decisions. + +6. Accessibility by default + - Minimum comfortable touch targets. + - Strong contrast in both themes. + - Semantic labels for icon-only controls and progress. + - Keyboard/focus order where relevant. + - Test at increased system font sizes. + +## Visual Direction Gate + +Before implementation, create and review exactly three full-screen directions using the same Today and Timer content: + +1. Organic Clay Growth, recommended starting point + - Soft dimensional seed/growth objects, restrained tactile depth, calm teal and warm yellow. + - Strong brand fit without turning the whole UI into toy-like clay controls. + +2. Quiet Precision + - Crisp typography, calm surfaces, subtle floating depth, high information clarity. + - Best for long-term productivity credibility and accessibility. + +3. Botanical Editorial + - More expressive type and organic composition, grounded by functional controls. + - Stronger emotional identity but higher localization and layout risk. + +Cyberpunk is not the default recommendation for this product. It can look striking, but its high-energy visual language conflicts with calm focus and broad global accessibility unless research demonstrates a specific audience fit. + +The chosen visual route must define: + +- Color tokens and contrast states +- Typography scale +- Surface/elevation model +- Icon treatment +- Illustration/growth system +- Navigation and tab behavior +- Dialog, sheet, menu, snackbar, empty, loading, error, success, and destructive states +- Motion curves and durations +- Light/dark behavior +- Localization and text-expansion behavior + +## 1.0.1 Priority Order + +### P0: Trust And Stability + +- Timer lifecycle based on timestamps, not only an in-memory periodic timer. +- Background/foreground/process-restoration behavior. +- Honest session completion rules. +- Persistence growth plan and migration tests. +- More unit, widget, and lifecycle tests. + +### P1: Signature Experience + +- Seed-growth feedback tied to meaningful user progress. +- Smoother navigation and continuity between Today, Timer, Habits, and Reflect. +- Refined input, dialog, deletion, save, and completion flows. +- Clear first-run experience that reaches the first useful action quickly. + +### P1: International Foundation + +- English ARB baseline. +- Locale-aware dates, durations, and plurals. +- Responsive phone/tablet constraints. +- Text scaling and RTL-ready component structure. + +### P2: Retention And Completeness + +- Gentle reminders only after explicit user choice. +- Better history and progress explanation. +- Useful widgets or shortcuts after the core loop is stable. +- Export/import refinement and future database migration path. + +## Monetization Guardrail + +The free product must complete the full Daily Anchor Loop. Do not put an ad or paywall in front of choosing an anchor, starting/finishing a timer, checking a habit, saving a reflection, or deleting/exporting personal data. + +Preferred paid value: + +- Advanced history and reports +- Additional themes and growth environments +- Home-screen widgets +- Custom focus routines +- Enhanced export formats +- Cloud backup/sync only if a real service is introduced + +Preferred order: + +1. Validate retention and repeated use. +2. Test a one-time Pro unlock. +3. Consider subscription only when ongoing services create ongoing value and cost. +4. Add ads only if they can remain outside the core loop and do not reduce trust. + +## Acceptance Signals + +1.0.1 is successful when: + +- The timer remains correct through backgrounding and restoration. +- Main actions respond immediately and consistently. +- No screen overflows at supported text scales and locales. +- Users can explain the Daily Anchor Loop after one session. +- Testers return without being prompted solely for testing compliance. +- Visual identity is recognizable without sacrificing clarity or performance. diff --git a/pubspec.yaml b/pubspec.yaml index 33c3aa9..f694c56 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.0.0+1 +version: 1.0.1+2 environment: sdk: ^3.7.2