Skip to content

feat: implement comprehensive app theme system with centralized color… - #56

Merged
Devasy merged 3 commits into
mainfrom
feat/UI-consistency
Jun 26, 2026
Merged

feat: implement comprehensive app theme system with centralized color…#56
Devasy merged 3 commits into
mainfrom
feat/UI-consistency

Conversation

@Devasy

@Devasy Devasy commented Jun 26, 2026

Copy link
Copy Markdown
Owner

… tokens and initial architecture setup

Summary by CodeRabbit

  • New Features
    • Enabled newer Flutter rendering options to improve performance.
    • Improved full-screen appearance with edge-to-edge system bar styling.
  • Bug Fixes
    • Added safeguards during backup, import, and save flows to prevent issues when leaving a screen mid-action.
    • Improved consistency of AI/analytics payload fields sent to services.
  • Style
    • Standardized button shapes and animation timing across key screens and widgets.
    • Refined analytics, home, profile, workout flow, and settings visuals.
  • Documentation
    • Added Graphify usage instructions for knowledge-graph updates.

@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

Pull request was closed or merged during review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 39cafd21-f500-431f-8ec3-0d46bc53fe6a

📥 Commits

Reviewing files that changed from the base of the PR and between dd5aefa and b9d9e11.

📒 Files selected for processing (4)
  • fdroid/metadata/com.devasy.repforge.yml
  • workout-logger/android/app/build.gradle.kts
  • workout-logger/android/app/src/main/AndroidManifest.xml
  • workout-logger/lib/main.dart

Walkthrough

The PR updates app startup configuration, shared theme tokens, UI animation and styling values, import/export handling, nullable payload serialization, and F-Droid release metadata.

Changes

Application changes

Layer / File(s) Summary
Graphify instructions
workout-logger/CLAUDE.md
Adds repository instructions that require reading graphify-out/GRAPH_REPORT.md first, optionally checking graphify-out/wiki/index.md, using Graphify commands for cross-module questions, and running graphify update . after code changes.
Startup and build flags
workout-logger/android/app/build.gradle.kts, workout-logger/android/app/src/main/AndroidManifest.xml, workout-logger/lib/main.dart
The Android manifest adds Flutter engine meta-data entries, Android build output version codes are adjusted per ABI, and main() enables edge-to-edge system UI with updated overlay styling.
Shared theme tokens
workout-logger/lib/theme/app_theme.dart
AppRadius values are revised, AppDurations is added, and dark button shapes use the shared button radius.
Screen motion and styling
workout-logger/lib/screens/analytics_screen.dart, workout-logger/lib/screens/home_screen.dart, workout-logger/lib/screens/workout_flow_screen.dart, workout-logger/lib/screens/widgets/analytics_overview.dart, workout-logger/lib/screens/widgets/exercise_progress_view.dart
Analytics, home, workout flow, analytics overview, and exercise progress controls switch to shared duration and radius tokens, and several chart callbacks only rename unused parameters.
Settings, profile, and widget styling
workout-logger/lib/screens/programs/program_designer_screen.dart, workout-logger/lib/screens/settings_screen.dart, workout-logger/lib/screens/widgets/profile_sections.dart, workout-logger/lib/screens/widgets/program_week_editor.dart
Program designer, settings, profile sections, and program-week widgets switch alpha handling, animation timing, and toggle styling to shared values.
Reusable RF widget updates
workout-logger/lib/screens/widgets/rf_cards.dart, workout-logger/lib/screens/widgets/rf_inputs.dart, workout-logger/lib/screens/widgets/rf_widgets.dart, workout-logger/lib/screens/ai_coach_screen.dart, workout-logger/lib/screens/routine_optimizer_screen.dart
Reusable RF widgets simplify trailing-slot rendering, update animation durations, remove AmbientGlow bottom wash rendering, and rename unused separator callback parameters in two bottom sheets.
File picker API updates
workout-logger/pubspec.yaml, workout-logger/lib/screens/profile_screen.dart, workout-logger/lib/screens/programs/import_program_screen.dart, workout-logger/lib/screens/settings_screen.dart
The file_picker dependency is bumped and picker call sites switch from FilePicker.platform.pickFiles to FilePicker.pickFiles.
Null payload fields
workout-logger/lib/services/ai/coach_tool_service.dart, workout-logger/lib/services/api_service.dart
The AI coach tool responses and event tracking payload always include their window_days or metadata keys with nullable values.

F-Droid metadata

Layer / File(s) Summary
Metadata and builds
fdroid/metadata/com.devasy.repforge.yml
Top-level metadata fields, the build matrix, and update-check settings are rewritten for the new release version.

Possibly related PRs

  • Devasy/Workout-logger#22: Adds the same repository-level CLAUDE.md instruction file pattern for AI-assisted workflow.
  • Devasy/Workout-logger#48: Refactored theme and analytics UI pieces that this PR continues by swapping in shared radius and duration tokens.
  • Devasy/Workout-logger#50: Introduced related shared widget and theme refactors that this PR extends in rf_widgets.dart and app_theme.dart.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the PR’s main theme work and centralized token updates, even though the diff also includes related setup and build changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Jun 26, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 35.71429% with 18 lines in your changes missing coverage. Please review.
✅ Project coverage is 38.50%. Comparing base (1b14ee1) to head (b9d9e11).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
.../lib/screens/programs/program_designer_screen.dart 0.00% 3 Missing ⚠️
workout-logger/lib/screens/widgets/rf_widgets.dart 50.00% 3 Missing ⚠️
...out-logger/lib/services/ai/coach_tool_service.dart 0.00% 2 Missing ⚠️
workout-logger/lib/main.dart 0.00% 1 Missing ⚠️
workout-logger/lib/screens/ai_coach_screen.dart 0.00% 1 Missing ⚠️
workout-logger/lib/screens/profile_screen.dart 0.00% 1 Missing ⚠️
...er/lib/screens/programs/import_program_screen.dart 0.00% 1 Missing ⚠️
...t-logger/lib/screens/routine_optimizer_screen.dart 0.00% 1 Missing ⚠️
...t-logger/lib/screens/widgets/profile_sections.dart 0.00% 1 Missing ⚠️
workout-logger/lib/screens/widgets/rf_cards.dart 0.00% 1 Missing ⚠️
... and 3 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #56      +/-   ##
==========================================
- Coverage   38.54%   38.50%   -0.04%     
==========================================
  Files          85       85              
  Lines       14088    14084       -4     
==========================================
- Hits         5430     5423       -7     
- Misses       8658     8661       +3     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@workout-logger/android/app/src/main/AndroidManifest.xml`:
- Around line 55-57: The AndroidManifest metadata is using the deprecated
Flutter SurfaceControl opt-in, so update the existing `<meta-data>` entry in the
manifest to use the current Hybrid Composition++ key instead. Locate the
`EnableSurfaceControl` declaration in `AndroidManifest.xml` and replace it with
`io.flutter.embedding.android.EnableHcpp` while keeping the enabled value
unchanged.

In `@workout-logger/CLAUDE.md`:
- Line 1: The CLAUDE.md file starts with an h2 instead of a top-level heading,
so update the first line to use a single top-level title; either promote the
existing graphify heading to a top-level heading or add a proper file title
above it so the document begins with an H1 and satisfies markdownlint MD041.

In `@workout-logger/lib/main.dart`:
- Around line 47-53: The Android transparent bar styling in
SystemChrome.setSystemUIOverlayStyle is missing the contrast-enforcement flags,
so fully transparent bars may still get a scrim on SDK 29+ devices. Update the
SystemUiOverlayStyle used in main.dart to explicitly disable both
systemStatusBarContrastEnforced and systemNavigationBarContrastEnforced
alongside the existing transparent colors. Keep the change localized to the
overlay style definition in the app startup setup.

In `@workout-logger/pubspec.yaml`:
- Line 62: The Web file selection flow in the file picker migration still relies
on a non-Web path-based file lookup, which will fail because Web returns null
paths and file data is not loaded by default. Update the file picking logic that
uses FilePicker.pickFiles to request bytes with withData: true, then handle the
selected file via result.files.single.bytes on Web while keeping the existing
path-based handling for non-Web targets. Refer to the file picker usage in the
upload/import flow so the fix is applied wherever FilePicker is consumed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: a1c992ae-243e-4eeb-b80b-8dc3504d0683

📥 Commits

Reviewing files that changed from the base of the PR and between ed8be24 and dd5aefa.

⛔ Files ignored due to path filters (1)
  • workout-logger/pubspec.lock is excluded by !**/*.lock
📒 Files selected for processing (23)
  • workout-logger/CLAUDE.md
  • workout-logger/android/app/src/main/AndroidManifest.xml
  • workout-logger/lib/main.dart
  • workout-logger/lib/screens/ai_coach_screen.dart
  • workout-logger/lib/screens/analytics_screen.dart
  • workout-logger/lib/screens/home_screen.dart
  • workout-logger/lib/screens/profile_screen.dart
  • workout-logger/lib/screens/programs/import_program_screen.dart
  • workout-logger/lib/screens/programs/program_designer_screen.dart
  • workout-logger/lib/screens/routine_optimizer_screen.dart
  • workout-logger/lib/screens/settings_screen.dart
  • workout-logger/lib/screens/widgets/analytics_overview.dart
  • workout-logger/lib/screens/widgets/exercise_progress_view.dart
  • workout-logger/lib/screens/widgets/profile_sections.dart
  • workout-logger/lib/screens/widgets/program_week_editor.dart
  • workout-logger/lib/screens/widgets/rf_cards.dart
  • workout-logger/lib/screens/widgets/rf_inputs.dart
  • workout-logger/lib/screens/widgets/rf_widgets.dart
  • workout-logger/lib/screens/workout_flow_screen.dart
  • workout-logger/lib/services/ai/coach_tool_service.dart
  • workout-logger/lib/services/api_service.dart
  • workout-logger/lib/theme/app_theme.dart
  • workout-logger/pubspec.yaml

Comment thread workout-logger/android/app/src/main/AndroidManifest.xml
Comment thread workout-logger/CLAUDE.md
Comment thread workout-logger/lib/main.dart
Comment thread workout-logger/pubspec.yaml
Devasy and others added 2 commits June 27, 2026 00:50
@Devasy
Devasy merged commit b06c73d into main Jun 26, 2026
3 checks passed
@Devasy
Devasy deleted the feat/UI-consistency branch June 26, 2026 19:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant