Feat/typing streak - #17
Merged
Merged
Conversation
The Hook-Model retention feature: the keyboard counts Tibetan typing on-device and turns it into a daily streak with weekly insights. Privacy-first by design: only aggregate numbers are ever stored — no typed text. Vocabulary size is tracked via one-way SHA-256 hashes, and nothing leaves the device unless the user opts into the numbers-only community comparison. App: - StreakLogic (pure JVM, unit-tested) + TypingStatsStore (on-device counters, streak, hashed vocabulary, 60-day retention) - IME counts Tibetan chars/words in onKey/onSuggestionSelected - Streak flame chip in the keyboard toolbar -> Journey screen - Journey screen (Compose MVVM): streak hero with milestone progress (3/7/14/30/60/108/365), stats grid, weekly bar chart + vocabulary + community percentile (PRO-gated), privacy card, share action - Home screen streak banner card - Daily WorkManager reminder (~7pm) when the streak is at risk + Sunday weekly insight notification, with a Settings toggle - New analytics events (journey_opened, streak_milestone, etc.) Backend: - POST /journey/weekly — validates and stores two aggregate integers per user, returns community percentile via Firestore count queries Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPzMhQP4rp1KbdtMX5i2ts
Sharpen the three highest-intent moments for free users: - Replace the generic locked-insights card with a personalized teaser: real weekly word/character counts plus an honest estimate of the keystrokes PRO autocomplete would have saved, with vocabulary / weekly chart / community rank shown as the locked reveal. - Celebrate streak milestones (3/7/14/30/60/108/365) with a gold banner; for free users the banner pitches PRO at the reward moment and taps through to the upgrade flow. - Weekly insight notification now lands everyone on the Journey screen, which carries the teaser + Unlock PRO CTA for free users. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPzMhQP4rp1KbdtMX5i2ts
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



No description provided.