chore: start Focus Seed 1.0.1 development
This commit is contained in:
@@ -2,6 +2,18 @@
|
|||||||
|
|
||||||
All notable product changes are recorded here.
|
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
|
## [1.0.0] - 2026-06-10
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -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.
|
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.
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
+1
-1
@@ -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
|
# 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
|
# 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.
|
# 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:
|
environment:
|
||||||
sdk: ^3.7.2
|
sdk: ^3.7.2
|
||||||
|
|||||||
Reference in New Issue
Block a user