Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
fd4f835
Point update mechanism and install docs at this fork
noaetmatthias Aug 12, 2026
e09d8ee
Complete French localization across app, watch and Android
noaetmatthias Aug 12, 2026
f0b6c01
Merge pull request #1 from MatB57/claude/whoop-app-fork-improvements-…
MatB57 Aug 12, 2026
c39f67f
Bump to 8.2.1 for fork's first release build
noaetmatthias Aug 12, 2026
b12d949
Merge origin/main (PR #1 merge commit) back into working branch
noaetmatthias Aug 12, 2026
9834144
Fix bug-report URL tests after retargeting to this fork
noaetmatthias Aug 12, 2026
54ff3b3
Publish v8.2.1 in the AltStore source
noaetmatthias Aug 12, 2026
cd44ac3
Bump to 8.2.2 (test release, no other changes)
noaetmatthias Aug 12, 2026
5fe0e9b
Android: prompt for the Doze battery-optimisation exemption
MatB57 Sep 10, 2026
2f708bc
Android: in-app APK update with a launch-time prompt
MatB57 Sep 10, 2026
8c0323c
Revert "Android: in-app APK update with a launch-time prompt"
MatB57 Sep 10, 2026
69ecdd4
Revert "Android: prompt for the Doze battery-optimisation exemption"
MatB57 Sep 10, 2026
a55ca5b
Android: in-app APK update + Doze battery-optimisation prompt
MatB57 Sep 10, 2026
ba99c44
Bump to 8.2.3
MatB57 Sep 10, 2026
745f5df
Publish 8.2.3 in the AltStore source
MatB57 Sep 10, 2026
29b9711
CI: sign release APKs with a stable keystore from repo secrets
MatB57 Sep 10, 2026
6f0c6e1
Auto-reload after restore; point Support at this fork
MatB57 Sep 10, 2026
5c5a855
Android: runtime French dictionary scaffold (Fr.tr / res/raw)
MatB57 Sep 10, 2026
ae956cb
iOS: fill 51 French strings missing from the catalog
MatB57 Sep 10, 2026
3f54bf2
Docs: point support at this fork, drop upstream community channels
MatB57 Sep 10, 2026
39a38f9
Android: wrap UI string literals in tr() for French
MatB57 Sep 10, 2026
c2e6e5f
Android: 100% French coverage for the wrapped UI strings
MatB57 Sep 10, 2026
123ac34
Bump to 8.2.4
MatB57 Sep 10, 2026
ed3177e
Publish 8.2.4 in the AltStore source
MatB57 Sep 10, 2026
39e289f
Android: auto-backup to Downloads right before an in-app update
MatB57 Sep 11, 2026
2e1ab08
Bump to 8.2.5 — first release signed with the stable Android key
MatB57 Sep 11, 2026
4e89d7b
Publish 8.2.5 in the AltStore source
MatB57 Sep 11, 2026
9f9c947
Android FR pass 2: enum/computed-property labels + analytics sentences
MatB57 Sep 11, 2026
fc3cbc3
Bump to 8.2.6 — French localization pass 2 + onboarding skip
MatB57 Sep 11, 2026
92fa334
Publish 8.2.6 in the AltStore source
MatB57 Sep 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 4 additions & 19 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,5 @@
blank_issues_enabled: false
blank_issues_enabled: true
contact_links:
- name: 💬 NOOP Discord — questions, setup help & chat
url: https://discord.com/invite/nHK9FHczu
about: "Got a question, stuck on setup, or not sure something's a bug? Discord is the fastest place for a quick answer. (Confirmed bugs still go to a GitHub issue, with a strap log.)"
- name: ❓ FAQ — start here (most questions are answered)
url: https://github.com/ParthJadhav/noop/wiki/FAQ
about: "Live HR, recovery/sleep, steps, importing data, privacy, updates — the common questions are answered here. Please check before filing."
- name: ⌚ WHOOP 5.0 / MG — what works & what doesn't
url: https://github.com/ParthJadhav/noop/wiki/WHOOP-5.0-and-MG-Status
about: "SpO₂, steps, recovery/sleep on the 5.0 and MG — what's supported today, what's still being decoded, and why. Read this before reporting a 5/MG issue."
- name: 🔧 Troubleshooting — pairing, sync & no-data
url: https://github.com/ParthJadhav/noop/wiki/Troubleshooting
about: '"History syncs but no data", pairing/bond failures, generic heart-rate straps, "no recovery/sleep" — most connection issues are solved here first.'
- name: 💡 Feature ideas & questions — Discussions
url: https://github.com/ParthJadhav/noop/discussions
about: "Got an idea, or not sure if something's a bug? Open a Discussion. Issues are for confirmed bugs with a strap log."
- name: 👽 Community, tips & release news — r/NOOPApp
url: https://www.reddit.com/r/NOOPApp/
about: "Setup help, tips and release news on the subreddit. (Please still file confirmed bugs as a GitHub issue, with a strap log.)"
- name: 📖 README — install, pairing, privacy, importing history
url: https://github.com/MatB57/noop#readme
about: "Install on iPhone / Android / Mac, pair a WHOOP 5.0 / MG, import your WHOOP or Apple Health history, and how the on-device scoring works."
26 changes: 26 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,32 @@ jobs:
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4

# A STABLE signing key is what lets an in-app update install over the previous version
# (same key = "update"; a different key = Android refuses and forces an uninstall → data loss).
# The key lives ONLY in repo secrets (never in git). One-time setup:
# keytool -genkeypair -v -keystore noop-release.jks -alias noop -keyalg RSA -keysize 2048 \
# -validity 10000 -storepass <PW> -keypass <PW> -dname "CN=NOOP, O=NoopApp, C=US"
# base64 -w0 noop-release.jks # -> paste as secret ANDROID_KEYSTORE_B64
# then add secrets ANDROID_KEYSTORE_PASSWORD / ANDROID_KEY_ALIAS (noop) / ANDROID_KEY_PASSWORD.
# Until the secret is set, the APK falls back to an ephemeral debug key (updates need a reinstall).
- name: Prepare release signing keystore
working-directory: android
env:
KS_B64: ${{ secrets.ANDROID_KEYSTORE_B64 }}
KS_PASS: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
KEY_PASS: ${{ secrets.ANDROID_KEY_PASSWORD }}
run: |
set -euo pipefail
if [ -n "${KS_B64:-}" ]; then
echo "$KS_B64" | base64 -d > noop-release.jks
printf 'storeFile=noop-release.jks\nstorePassword=%s\nkeyAlias=%s\nkeyPassword=%s\n' \
"$KS_PASS" "$KEY_ALIAS" "$KEY_PASS" > keystore.properties
echo "Signing with the stable release keystore from repo secrets."
else
echo "::warning::ANDROID_KEYSTORE_B64 secret is not set — this APK is signed with an ephemeral debug key, so installing it needs the previous version uninstalled first (data loss). Add the secret for seamless in-app updates."
fi

- name: Build full release APK
run: ./gradlew assembleFullRelease
working-directory: android
Expand Down
Loading