- Notifications
You must be signed in to change notification settings - Fork 0
App-wide refactor and feature expansion#48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Uh oh!
There was an error while loading. Please reload this page.
Merged
Changes from all commits
Commits
Show all changes
44 commits
Select commit
Hold shift + click to select a range
05d491f
feat: add workout summary screen and enhance app theme colors
Devasy 90426bc
feat: add predictive back page transitions for Android in AppTheme
Devasy 6fe15db
Refactor Programs Screen and add Week Structure Editor
Devasy 36ea469
feat: Enhance UI with new glassmorphic components and charts
Devasy 9b86aad
feat: add personal records feature
Devasy 8027a7c
feat: update exercise library screen tests with new icon and text cha…
Devasy f7328c9
feat: update .gitignore and CLAUDE.md for new graphify output and pro…
Devasy b7f01b0
analytics_screen.dart
Devasy e3fe4ae
feat: enhance UI components and improve data handling across screens
Devasy 465e2ef
feat: update ExerciseLibraryScreen tests to include SettingsProvider …
Devasy a9743cb
feat: enhance workout session data collection by including weight in …
Devasy 6a8715e
feat: update Android build configuration, enhance analytics screen, a…
Devasy 9ddd6af
feat: add muscle recovery and growth tracking features in WorkoutProv…
Devasy a612864
feat: refactor NumberInputCard to StatefulWidget and enhance RFNavBar…
Devasy 3e9a8ec
feat: enhance ProfileScreen and ProfileSections with Google Fonts for…
Devasy 674b0ec
feat: update Create button in ProgramsScreen to allow for non-full wi…
Devasy f0dd98e
feat: Integrate Gemini AI features for personalized coaching and insi…
Devasy 609180d
feat: enhance various screens and models with improved error handling…
Devasy 76d5b55
feat: improve error handling in program saving and adjust opacity cal…
Devasy 201bf88
Add comprehensive tests for MLService, model serialization, PRManager…
Devasy 761fb2f
fix: ensure opacity calculation in heatmap drawing is explicitly a do…
Devasy f069ec8
chore: update version to 2.0.0+21 in pubspec.yaml
Devasy b64ed67
feat: enhance UI responsiveness with layout adjustments and breakpoin…
Devasy c7bfea3
feat: enhance UI layout and responsiveness with padding adjustments f…
Devasy 2546d7b
feat: add advanced metrics toggle and display estimated 1RM badge in …
Devasy cce1a11
Add widget tests for AnalyticsScreen and ExerciseProgressView
Devasy 5bcf86d
feat: update app label handling and improve navigation in home screen
Devasy 380ae18
feat: Implement Gemini AI service for AI coach functionality (#49)
Devasy a895686
feat: Add muscle volume trend chart and recent sessions section in Mu…
Devasy 21953c1
docs: add conversational routine optimizer design spec
Devasy f5b1384
refactor: remove one-shot routine optimizer (replaced by conversation…
Devasy 4a8661f
feat: add Conversation.kind and AI question models (QuestionSpec, Ans…
Devasy cf82944
feat: scope ConversationManager by kind ('coach' | 'optimizer')
Devasy c883253
feat: add ask_user_questions tool declaration and optimizer system pr…
Devasy 15fa743
feat: add RFQuestionCard reusable widget (option chips + custom input)
Devasy 6116d58
feat: rewrite RoutineOptimizerViewModel as conversational streaming V…
Devasy f021429
fix: handle aborted completer and await appendMessage in submitAnswers
Devasy cfb95b4
feat: add RoutineOptimizerScreen (conversational UI with question car…
Devasy 4b85ef3
style: fix magic padding values and header button consistency in Rout…
Devasy 1ea67e4
feat: add data gate (<3 sessions) and navigate to RoutineOptimizerScr…
Devasy 339b185
feat: add testBody method for RoutineOptimizerScreen to facilitate wi…
Devasy ff1761c
feat: add workout summary screen and enhance app theme colors (#50)
Devasy c77d690
test: update lastNightSleep test to sum all periods in the night window
Devasy 7126bc6
feat: bundle Geist fonts locally and add F-Droid metadata (Option B) …
Devasy File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Jump to file
Failed to load files.
Loading
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,92 @@ | ||
| # Future Improvements — Open Source Store Launch | ||
| This file tracks the remaining work for Options B and C of the open-source store launch plan. | ||
| Option A (production signing + IzzyOnDroid/Obtainium) is complete. | ||
| --- | ||
| ## Option B — F-Droid Readiness | ||
| ### 1. Bundle Geist fonts locally (google_fonts) | ||
| Currently `google_fonts` may fetch font files from Google's CDN at first launch. F-Droid requires | ||
| all network access to be under user control — a silent font download at startup fails that bar. | ||
| **Fix:** Download the Geist Sans and Geist Mono `.ttf` files, add them to `assets/fonts/`, declare | ||
| them in `pubspec.yaml` under `flutter.fonts`, and replace `GoogleFonts.geist(...)` calls with | ||
| `TextStyle(fontFamily: 'Geist')`. Then remove the `google_fonts` package. | ||
| ### 2. F-Droid metadata file | ||
| Create `fdroid/metadata/com.devasy.repforge.yml` following the F-Droid metadata spec: | ||
| ```yaml | ||
| Categories: | ||
| - Sports & Health | ||
| License: Apache-2.0 | ||
| SourceCode: https://github.com/<your-org>/repforge | ||
| IssueTracker: https://github.com/<your-org>/repforge/issues | ||
| AutoName: RepForge | ||
| Summary: Workout logger with AI-powered coaching | ||
| Description: |- | ||
| RepForge is an open-source workout logging app with set/rep/weight tracking, | ||
| progress analytics, AI coaching (optional, requires user-supplied Gemini API key), | ||
| and Health Connect integration. | ||
| AntiFeatures: | ||
| NonFreeNet: | ||
| - description: > | ||
| Optional AI Coach and Routine Optimizer features send data to Google's Gemini API. | ||
| These features are disabled unless the user provides their own API key in Settings. | ||
| Builds: | ||
| - versionName: 2.x.x | ||
| versionCode: xx | ||
| commit: vX.X.X | ||
| subdir: workout-logger | ||
| gradle: | ||
| - release | ||
| ``` | ||
| ### 3. Fastlane store metadata | ||
| Create `fastlane/metadata/android/en-US/` with: | ||
| - `title.txt` — "RepForge" | ||
| - `short_description.txt` — one-line summary (≤80 chars) | ||
| - `full_description.txt` — full store description | ||
| - `changelogs/<versionCode>.txt` — per-release changelog | ||
| IzzyOnDroid also reads fastlane metadata for its store listing. | ||
| --- | ||
| ## Option C — Strict F-Droid Compliance | ||
| ### 4. Health Connect graceful degradation | ||
| Health Connect is an OS API (not Google Play Services) so F-Droid accepts it. However, for | ||
| maximum compatibility on AOSP/custom ROMs without Health Connect: | ||
| - Add an `isHealthConnectAvailable()` check at startup | ||
| - Show a "Health Connect not available" state in the Readiness screen instead of crashing | ||
| - Make daily readiness score optional in the Home screen when Health Connect is absent | ||
| ### 5. Replace google_fonts package entirely | ||
| After completing item B.1, the `google_fonts` package can be removed from `pubspec.yaml` entirely. | ||
| This eliminates any risk of runtime Google CDN fetches and removes a transitive dependency. | ||
| --- | ||
| ## IzzyOnDroid Submission Checklist | ||
| - [ ] Merge this branch to main and confirm a production-signed release appears on GitHub Releases | ||
| - [ ] Submit via: https://gitlab.com/IzzyOnDroid/repo/-/issues (open a new issue, "App submission" template) | ||
| - [ ] Provide: repo URL, anti-features (NonFreeNet), brief description | ||
| - [ ] Wait for review (typically 1–7 days) | ||
| ## Obtainium | ||
| No submission needed. Users add the GitHub repo URL directly in Obtainium and install the latest | ||
| release APK automatically. Share the repo URL in your README. |
Oops, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Oops, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
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.
Uh oh!
There was an error while loading. Please reload this page.