From e740c7da6de2674b8f558a766ad32f8ad824b64c Mon Sep 17 00:00:00 2001 From: Devasy Patel <110348311+Devasy23@users.noreply.github.com> Date: Sun, 16 Aug 2026 10:33:46 +0530 Subject: [PATCH 1/2] ci: drop --obfuscate from release build; refresh README with screenshots --obfuscate --split-debug-info embeds a random build-unique ID in libapp.so by design (so a given obfuscated crash report maps to exactly one debug-symbols file), which made it impossible for the F-Droid submission (fdroiddata MR 40630) to byte-match F-Droid's own rebuild from source even after fixing the earlier libdartjni.so build-id mismatch. Neither of the reference apps used as a model for this submission (mhabit, tech.lolli.toolbox) obfuscate their release builds either. Documented the tradeoff in CLAUDE.md. Also rewrote README.md: filled in the long-empty screenshots section with the curated set from fastlane/metadata, fixed the license badge (was MIT, actually Apache-2.0 per LICENSE), fixed repo URLs pointing at the old Devasy23/Workout-logger path, and brought the feature list up to date (AI Coach, Health Connect sync, routines/programs, PRs) to match what the app actually does now. Co-Authored-By: Claude Sonnet 5 --- .github/workflows/release.yml | 2 +- CLAUDE.md | 6 +++- README.md | 62 ++++++++++++++++++++++++----------- 3 files changed, 49 insertions(+), 21 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e12a3fe..0bedfde 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -149,7 +149,7 @@ jobs: KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }} KEY_ALIAS: ${{ secrets.KEY_ALIAS }} KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} - run: flutter build apk --release --split-per-abi --obfuscate --split-debug-info=build/app/outputs/symbols + run: flutter build apk --release --split-per-abi - name: Rename APKs run: | diff --git a/CLAUDE.md b/CLAUDE.md index eddf7f9..afb10a0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -78,7 +78,11 @@ flutter test test/workout_provider_test.dart flutter analyze # Build release APKs (split per ABI) -flutter build apk --release --split-per-abi --obfuscate --split-debug-info=build/debug-info +# Note: deliberately not obfuscated - the F-Droid submission verifies the +# GitHub release APK byte-for-byte against F-Droid's own rebuild from source +# (see fdroiddata MR 40630), and --obfuscate embeds a build-unique ID by +# design, which breaks that comparison even for identical source. +flutter build apk --release --split-per-abi # Generate Mockito mocks (after modifying interfaces) dart run build_runner build --delete-conflicting-outputs diff --git a/README.md b/README.md index 6662424..04b7dcf 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,10 @@

Flutter Badge Dart Badge - Stars Badge - Forks Badge - Issues Badge - License Badge + Stars Badge + Forks Badge + Issues Badge + License Badge

@@ -17,21 +17,40 @@ ## 📖 About RepForge -**RepForge** (formerly Workout-logger) is an open-source, beautifully designed workout logging mobile application built with Flutter. Whether you're a powerlifter, a casual gym-goer, or someone just starting their fitness journey, RepForge empowers you to track your workouts seamlessly, visualize your progress with detailed analytics, and stay motivated. +**RepForge** (formerly Workout-logger) is an open-source, beautifully designed workout logging mobile application built with Flutter. Whether you're a powerlifter, a casual gym-goer, or someone just starting their fitness journey, RepForge empowers you to track your workouts seamlessly, visualize your progress with detailed analytics, and stay motivated. Tired of subscription-heavy fitness apps? RepForge is built *by* lifters, *for* lifters. It keeps your data local, offline, and completely under your control. ## ✨ Key Features -- **📊 Advanced Analytics:** Visualize your gains, volume, and consistency with stunning charts powered by `fl_chart`. -- **⚡ Super-Fast Logging:** An intuitive UI that gets out of your way so you can focus on the pump. -- **📱 Offline-First:** Your data is stored locally using Hive for lightning-fast, secure access anywhere, even without internet. +- **📊 Advanced Analytics:** Volume trends, per-exercise progression with estimated 1RM, muscle-group focus and recovery balance, and a full personal-records log — powered by `fl_chart`. +- **⚡ Super-Fast Logging:** An intuitive active-workout flow with AI-suggested weight/reps for your next set, dropsets, and rest timers that gets out of your way so you can focus on the pump. +- **🗓️ Routines & Programs:** Build reusable routines, queue up your next session, and follow structured multi-week training programs. +- **🫀 Health Connect Integration:** Syncs workouts to Android Health Connect and reads sleep/heart-rate data back in to score daily training readiness. +- **🤖 AI Coach:** A conversational, tool-calling coach (powered by Gemini) that can query your own workout history, chart correlations, and explain your progress — see [Anti-Features](#-anti-features) below. +- **📱 Offline-First:** Your data is stored locally for fast, secure access anywhere, even without internet. - **🔄 Export/Import:** Never lose your data. Back up and restore your workout history at your convenience. -- **🤖 Smart Insights:** Machine Learning integration for AI-powered workout insights. -- **🎨 Custom Theming:** A modern, sleek interface with customizable themes tailored to your style. +- **🎨 Custom Theming:** A modern, soft-futurist interface with a consistent design system. ## 📸 Screenshots -*(Coming soon: Add screenshots of your app's dashboard, workout logger, and analytics screens here)* + +

+ Home dashboard + Routines + Active workout logging + Workout history + Analytics overview +

+

+ Exercise progression + Health Connect settings + AI Coach analysis + AI Coach muscle recovery +

+ +## 🚫 Anti-Features + +RepForge's core workout logging, routines, and analytics work fully offline. The **AI Coach** is optional and relies on Google's Gemini API over the network — it's the only feature that isn't free/local, and it's disclosed as such in the app's F-Droid listing. --- @@ -43,14 +62,14 @@ Want to take RepForge for a spin or contribute? Follow these steps to build the - [Flutter SDK](https://docs.flutter.dev/get-started/install) - Android Studio / VS Code -- An Android/iOS device or emulator +- An Android device or emulator ### Installation 1. **Clone the repository:** ```bash - git clone https://github.com/Devasy23/Workout-logger.git - cd Workout-logger/workout-logger + git clone https://github.com/Devasy/RepForge.git + cd RepForge/workout-logger ``` 2. **Install dependencies:** @@ -66,9 +85,14 @@ Want to take RepForge for a spin or contribute? Follow these steps to build the ### Building for Production To build a release APK for Android: ```bash -flutter build apk --release +flutter build apk --release --split-per-abi ``` -The APK will be available in `build/app/outputs/flutter-apk/app-release.apk`. +The APKs will be available under `build/app/outputs/flutter-apk/`. + +### Getting the App + +- **GitHub Releases:** [github.com/Devasy/RepForge/releases](https://github.com/Devasy/RepForge/releases) +- **F-Droid:** submission in progress --- @@ -84,7 +108,7 @@ We believe in the power of open-source! Whether you want to fix a bug, add a fea 5. Open a **Pull Request** and describe your changes. ### What to work on? -Check out the **[Issues](https://github.com/Devasy23/Workout-logger/issues)** tab! If you have a new idea, feel free to open a new issue for a feature request or bug report before starting your work. Whether it's a UI tweak, performance upgrade, or a brand new workout mode, we'd love to see it! +Check out the **[Issues](https://github.com/Devasy/RepForge/issues)** tab! If you have a new idea, feel free to open a new issue for a feature request or bug report before starting your work. Whether it's a UI tweak, performance upgrade, or a brand new workout mode, we'd love to see it! ### Development Guidelines - Follow standard Flutter and Dart formatting (`flutter format .`). @@ -95,7 +119,7 @@ Check out the **[Issues](https://github.com/Devasy23/Workout-logger/issues)** ta ## 🛡️ License -This project is a personal workout tracking application. +RepForge is licensed under the [Apache License 2.0](LICENSE). ## 👨‍💻 Developer @@ -106,4 +130,4 @@ This project is a personal workout tracking application. ---
Forge your strength, track your progress, achieve your goals! 💪 -
\ No newline at end of file + From 5367ea1dabee1b7639a806b59c1d862790e4d303 Mon Sep 17 00:00:00 2001 From: Devasy Patel <110348311+Devasy23@users.noreply.github.com> Date: Sun, 16 Aug 2026 10:46:05 +0530 Subject: [PATCH 2/2] ci: use --enforce-lockfile in release workflow's pub get Matches fdroiddata's own recipe, which already uses --enforce-lockfile. Aligns dependency resolution between the two builds being compared for F-Droid's reproducible-build verification. --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0bedfde..5689292 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -47,7 +47,7 @@ jobs: - name: Install dependencies working-directory: ./workout-logger run: | - flutter pub get + flutter pub get --enforce-lockfile : "${PUB_CACHE:?PUB_CACHE is not set}" mapfile -t targets < <(find "$PUB_CACHE" -type f -path '*/jni-*/src/CMakeLists.txt') if [ "${#targets[@]}" -eq 0 ]; then