Skip to content

[ImgBot] Optimize images - #1

Open
imgbot[bot] wants to merge 1 commit into
mainfrom
imgbot
Open

[ImgBot] Optimize images#1
imgbot[bot] wants to merge 1 commit into
mainfrom
imgbot

Conversation

@imgbot

@imgbot imgbot Bot commented Jul 8, 2026

Copy link
Copy Markdown

Beep boop. Your images are optimized!

Your image file size has been reduced by 16% 🎉

Details
File Before After Percent reduction
/docs/assets/shot-ios-today.png 951.76kb 593.38kb 37.65%
/docs/assets/shot-android-trend.png 137.07kb 98.57kb 28.09%
/StrandiOS/Resources/Assets.xcassets/scene2.imageset/scene2.png 181.33kb 130.72kb 27.91%
/Strand/Resources/Assets.xcassets/scene2.imageset/scene2.png 181.33kb 130.72kb 27.91%
/android/app/src/main/res/drawable-nodpi/scene2.png 181.33kb 130.72kb 27.91%
/Strand/Resources/Assets.xcassets/scene3.imageset/scene3.png 165.09kb 122.04kb 26.08%
/StrandiOS/Resources/Assets.xcassets/scene3.imageset/scene3.png 165.09kb 122.04kb 26.08%
/android/app/src/main/res/drawable-nodpi/scene3.png 165.09kb 122.04kb 26.08%
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_512x512.png 25.04kb 18.68kb 25.38%
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png 25.04kb 18.68kb 25.38%
/Strand/Resources/Assets.xcassets/scene8.imageset/scene8.png 164.08kb 128.40kb 21.74%
/android/app/src/main/res/drawable-nodpi/scene8.png 164.08kb 128.40kb 21.74%
/StrandiOS/Resources/Assets.xcassets/scene8.imageset/scene8.png 164.08kb 128.40kb 21.74%
/Strand/Resources/Assets.xcassets/scene1.imageset/scene1.png 147.26kb 115.82kb 21.35%
/android/app/src/main/res/drawable-nodpi/scene1.png 147.26kb 115.82kb 21.35%
/StrandiOS/Resources/Assets.xcassets/scene1.imageset/scene1.png 147.26kb 115.82kb 21.35%
/Tools/noop_icon_1024.png 142.76kb 112.95kb 20.88%
/NOOPWatch/Assets.xcassets/AppIcon.appiconset/AppIcon1024.png 32.34kb 25.83kb 20.12%
/StrandiOS/Resources/Assets.xcassets/AppIcon.appiconset/icon_1024.png 32.34kb 25.83kb 20.12%
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png 32.34kb 25.83kb 20.12%
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png 11.32kb 9.13kb 19.37%
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_256x256.png 11.32kb 9.13kb 19.37%
/StrandiOS/Resources/AltIcons/NavyTitanium@3x.png 36.13kb 29.45kb 18.48%
/docs/assets/hero-v3.png 1,386.46kb 1,142.03kb 17.63%
/android/app/src/main/res/drawable-nodpi/scene10.png 160.16kb 132.07kb 17.54%
/Strand/Resources/Assets.xcassets/scene10.imageset/scene10.png 160.16kb 132.07kb 17.54%
/StrandiOS/Resources/Assets.xcassets/scene10.imageset/scene10.png 160.16kb 132.07kb 17.54%
/Strand/Resources/Assets.xcassets/scene4.imageset/scene4.png 193.43kb 160.89kb 16.83%
/android/app/src/main/res/drawable-nodpi/scene4.png 193.43kb 160.89kb 16.83%
/StrandiOS/Resources/Assets.xcassets/scene4.imageset/scene4.png 193.43kb 160.89kb 16.83%
/Strand/Resources/Assets.xcassets/scene6.imageset/scene6.png 153.16kb 127.89kb 16.50%
/StrandiOS/Resources/Assets.xcassets/scene6.imageset/scene6.png 153.16kb 127.89kb 16.50%
/android/app/src/main/res/drawable-nodpi/scene6.png 153.16kb 127.89kb 16.50%
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_128x128.png 5.48kb 4.62kb 15.61%
/Strand/Resources/Assets.xcassets/scene5.imageset/scene5.png 189.11kb 160.08kb 15.35%
/StrandiOS/Resources/Assets.xcassets/scene5.imageset/scene5.png 189.11kb 160.08kb 15.35%
/android/app/src/main/res/drawable-nodpi/scene5.png 189.11kb 160.08kb 15.35%
/StrandiOS/Resources/AltIcons/NavyTitanium@2x.png 17.69kb 14.98kb 15.31%
/android/app/src/main/res/drawable/ic_launcher_metal_navy.png 47.19kb 40.36kb 14.48%
/android/app/src/main/res/drawable/ic_launcher_metal.png 47.19kb 40.36kb 14.48%
/Tools/noop_icon_432.png 47.19kb 40.36kb 14.48%
/docs/assets/logo-v3.png 65.25kb 55.93kb 14.28%
/docs/assets/banner.svg 1.71kb 1.48kb 13.24%
/StrandiOS/Resources/Assets.xcassets/AppIcon-Navy.appiconset/icon_1024.png 128.54kb 112.95kb 12.13%
/docs/assets/shot-android-today.png 331.54kb 293.68kb 11.42%
/Tools/noop_icon_preview.png 181.55kb 160.94kb 11.35%
/android/app/src/main/res/drawable-nodpi/scene7.png 180.06kb 160.22kb 11.02%
/StrandiOS/Resources/Assets.xcassets/scene7.imageset/scene7.png 180.06kb 160.22kb 11.02%
/Strand/Resources/Assets.xcassets/scene7.imageset/scene7.png 180.06kb 160.22kb 11.02%
/StrandiOS/Resources/Assets.xcassets/scene9.imageset/scene9.png 160.58kb 144.38kb 10.09%
/Strand/Resources/Assets.xcassets/scene9.imageset/scene9.png 160.58kb 144.38kb 10.09%
/android/app/src/main/res/drawable-nodpi/scene9.png 160.58kb 144.38kb 10.09%
/docs/assets/logo.svg 1.01kb 0.92kb 9.05%
/docs/assets/v7-hero.jpg 671.08kb 628.60kb 6.33%
/docs/assets/hero-v8.jpg 2,639.40kb 2,489.11kb 5.69%
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png 2.61kb 2.57kb 1.31%
Total : 12,094.12kb 10,143.84kb 16.13%

📝 docs | :octocat: repo | 🙋🏾 issues | 🏪 marketplace

~Imgbot - Part of Optimole family

*Total -- 12,094.12kb -> 10,143.84kb (16.13%)

/docs/assets/shot-ios-today.png -- 951.76kb -> 593.38kb (37.65%)
/docs/assets/shot-android-trend.png -- 137.07kb -> 98.57kb (28.09%)
/StrandiOS/Resources/Assets.xcassets/scene2.imageset/scene2.png -- 181.33kb -> 130.72kb (27.91%)
/Strand/Resources/Assets.xcassets/scene2.imageset/scene2.png -- 181.33kb -> 130.72kb (27.91%)
/android/app/src/main/res/drawable-nodpi/scene2.png -- 181.33kb -> 130.72kb (27.91%)
/Strand/Resources/Assets.xcassets/scene3.imageset/scene3.png -- 165.09kb -> 122.04kb (26.08%)
/StrandiOS/Resources/Assets.xcassets/scene3.imageset/scene3.png -- 165.09kb -> 122.04kb (26.08%)
/android/app/src/main/res/drawable-nodpi/scene3.png -- 165.09kb -> 122.04kb (26.08%)
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_512x512.png -- 25.04kb -> 18.68kb (25.38%)
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png -- 25.04kb -> 18.68kb (25.38%)
/Strand/Resources/Assets.xcassets/scene8.imageset/scene8.png -- 164.08kb -> 128.40kb (21.74%)
/android/app/src/main/res/drawable-nodpi/scene8.png -- 164.08kb -> 128.40kb (21.74%)
/StrandiOS/Resources/Assets.xcassets/scene8.imageset/scene8.png -- 164.08kb -> 128.40kb (21.74%)
/Strand/Resources/Assets.xcassets/scene1.imageset/scene1.png -- 147.26kb -> 115.82kb (21.35%)
/android/app/src/main/res/drawable-nodpi/scene1.png -- 147.26kb -> 115.82kb (21.35%)
/StrandiOS/Resources/Assets.xcassets/scene1.imageset/scene1.png -- 147.26kb -> 115.82kb (21.35%)
/Tools/noop_icon_1024.png -- 142.76kb -> 112.95kb (20.88%)
/NOOPWatch/Assets.xcassets/AppIcon.appiconset/AppIcon1024.png -- 32.34kb -> 25.83kb (20.12%)
/StrandiOS/Resources/Assets.xcassets/AppIcon.appiconset/icon_1024.png -- 32.34kb -> 25.83kb (20.12%)
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png -- 32.34kb -> 25.83kb (20.12%)
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png -- 11.32kb -> 9.13kb (19.37%)
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_256x256.png -- 11.32kb -> 9.13kb (19.37%)
/StrandiOS/Resources/AltIcons/NavyTitanium@3x.png -- 36.13kb -> 29.45kb (18.48%)
/docs/assets/hero-v3.png -- 1,386.46kb -> 1,142.03kb (17.63%)
/android/app/src/main/res/drawable-nodpi/scene10.png -- 160.16kb -> 132.07kb (17.54%)
/Strand/Resources/Assets.xcassets/scene10.imageset/scene10.png -- 160.16kb -> 132.07kb (17.54%)
/StrandiOS/Resources/Assets.xcassets/scene10.imageset/scene10.png -- 160.16kb -> 132.07kb (17.54%)
/Strand/Resources/Assets.xcassets/scene4.imageset/scene4.png -- 193.43kb -> 160.89kb (16.83%)
/android/app/src/main/res/drawable-nodpi/scene4.png -- 193.43kb -> 160.89kb (16.83%)
/StrandiOS/Resources/Assets.xcassets/scene4.imageset/scene4.png -- 193.43kb -> 160.89kb (16.83%)
/Strand/Resources/Assets.xcassets/scene6.imageset/scene6.png -- 153.16kb -> 127.89kb (16.5%)
/StrandiOS/Resources/Assets.xcassets/scene6.imageset/scene6.png -- 153.16kb -> 127.89kb (16.5%)
/android/app/src/main/res/drawable-nodpi/scene6.png -- 153.16kb -> 127.89kb (16.5%)
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_128x128.png -- 5.48kb -> 4.62kb (15.61%)
/Strand/Resources/Assets.xcassets/scene5.imageset/scene5.png -- 189.11kb -> 160.08kb (15.35%)
/StrandiOS/Resources/Assets.xcassets/scene5.imageset/scene5.png -- 189.11kb -> 160.08kb (15.35%)
/android/app/src/main/res/drawable-nodpi/scene5.png -- 189.11kb -> 160.08kb (15.35%)
/StrandiOS/Resources/AltIcons/NavyTitanium@2x.png -- 17.69kb -> 14.98kb (15.31%)
/android/app/src/main/res/drawable/ic_launcher_metal_navy.png -- 47.19kb -> 40.36kb (14.48%)
/android/app/src/main/res/drawable/ic_launcher_metal.png -- 47.19kb -> 40.36kb (14.48%)
/Tools/noop_icon_432.png -- 47.19kb -> 40.36kb (14.48%)
/docs/assets/logo-v3.png -- 65.25kb -> 55.93kb (14.28%)
/docs/assets/banner.svg -- 1.71kb -> 1.48kb (13.24%)
/StrandiOS/Resources/Assets.xcassets/AppIcon-Navy.appiconset/icon_1024.png -- 128.54kb -> 112.95kb (12.13%)
/docs/assets/shot-android-today.png -- 331.54kb -> 293.68kb (11.42%)
/Tools/noop_icon_preview.png -- 181.55kb -> 160.94kb (11.35%)
/android/app/src/main/res/drawable-nodpi/scene7.png -- 180.06kb -> 160.22kb (11.02%)
/StrandiOS/Resources/Assets.xcassets/scene7.imageset/scene7.png -- 180.06kb -> 160.22kb (11.02%)
/Strand/Resources/Assets.xcassets/scene7.imageset/scene7.png -- 180.06kb -> 160.22kb (11.02%)
/StrandiOS/Resources/Assets.xcassets/scene9.imageset/scene9.png -- 160.58kb -> 144.38kb (10.09%)
/Strand/Resources/Assets.xcassets/scene9.imageset/scene9.png -- 160.58kb -> 144.38kb (10.09%)
/android/app/src/main/res/drawable-nodpi/scene9.png -- 160.58kb -> 144.38kb (10.09%)
/docs/assets/logo.svg -- 1.01kb -> 0.92kb (9.05%)
/docs/assets/v7-hero.jpg -- 671.08kb -> 628.60kb (6.33%)
/docs/assets/hero-v8.jpg -- 2,639.40kb -> 2,489.11kb (5.69%)
/Strand/Resources/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png -- 2.61kb -> 2.57kb (1.31%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
jaedonvs pushed a commit to jaedonvs/noop that referenced this pull request Aug 15, 2026
… Android logs silent write-stalls (#13)

ParthJadhav#1 (both platforms): in finishChunk the trim==0xFFFFFFFF "no banked history, fully charge it" gate
read sessionRowsPersisted at the TOP of the function, but this chunk's rows are tallied LATER (after
store.insert). So a bad-clock/flash strap that emits records on its no-cursor END logged the alarming
false "no history" line even though the END just delivered rows. Relocated the gate to AFTER
`sessionRowsPersisted += tally.rows` (and before setCursor); the genuinely-empty session path is
preserved (empty frames skip the persist block, gate still sees 0 rows). End-to-end test on Swift
(real v25 record frames + a 0xFFFFFFFF END) + a Kotlin ordering-contract test.

#13 (Android only): two failure returns in Backfiller.kt (decoded-insert catch, cursor-write catch)
returned silently with no log(), while the Swift twin logs both. Added the matching log lines so a
#601-class write-stall (history stalls while live HR still works) is falsifiable in the Android strap
log. The third candidate point already logs and was left untouched.
jaedonvs pushed a commit to jaedonvs/noop that referenced this pull request Aug 15, 2026
…8.2.2 elsewhere)

Resolves PR ParthJadhav#1 (ryanbr/noop) so main can adopt the v8.2.2 snapshot while retaining
the fork-only pieces. The 9 conflicting files were all cases where the fork's perf
(ranged CRC, O(1) Reassembler drain) and firmware-version-display work had ALREADY
been reimplemented independently in v8.2.2 — same features, different variable names
and comments. Taking v8.2.2 for those keeps a single upstream implementation instead
of a divergent fork copy; the features are retained (TodayScreen v8.2.2 is even a
superset: #827 calibrating-dismissal plus a new carried-sleep card).

Kept (non-conflicting, fork-unique): the unified fork testing-build CI workflow,
fork debug keystore, fork appId/identity (build.gradle.kts, project.yml), and the
fork update-source plumbing (UpdateCheck.kt / UpdateChecker.swift).
jaedonvs pushed a commit to jaedonvs/noop that referenced this pull request Aug 15, 2026
Import v8.2.2 snapshot (upstream catch-up + board wave; ports PRs #1035/#1036 + BLE/readiness fixes)
jaedonvs pushed a commit to jaedonvs/noop that referenced this pull request Aug 15, 2026
…to the notes

Each release's GitHub body is now: the curated docs/releases/<TAG>.md notes + GitHub's
auto-generated "What's Changed" breakdown (every merged PR since the previous RELEASE, with
authors/links + New Contributors + full-changelog compare link) + the downloads footer.

Uses the generate-notes REST API (deterministic; not dependent on gh flag-combining) diffed from
the most recent NON-prerelease release (so testing-latest snapshots are ignored). Skipped on the
very first release (no prior tag would diff to repo start). Best-effort — a failure is ignored.
Verified: the API returns the PR list (ParthJadhav#1..#9); first-release PREV detection returns empty as expected.
jaedonvs pushed a commit to jaedonvs/noop that referenced this pull request Aug 15, 2026
…ck skew

Rounds out the Alarm block to cover the full alarm-failure matrix, not just 'didn't stick':
- ParthJadhav#1 last fired: persist STRAP_DRIVEN_ALARM_EXECUTED → 'Last fired: Nh ago / never observed'
  (the 'did the strap actually buzz?' leg of the armed→reports→fired sequence).
- ParthJadhav#3 model + 5/MG experimental gate → 'Model: 5.0/MG · experimental: off → NOT armed', the ParthJadhav#1
  '5/MG alarm never fires' cause (silently gated off).
- ParthJadhav#4 strap clock skew: persist the newest banked record → 'Strap clock: 446d behind (reset)',
  the actual #34 root cause, surfaced instead of buried in the CLOCK-WARNING log line.

Now the block triages: didn't arm (model/experimental/connected), didn't stick (sent-vs-
reports + clock), didn't fire (last-fired). Both platforms; persists at low-frequency points
(fired event, GET_DATA_RANGE). Android compiles clean; iOS gated by CI.
jaedonvs pushed a commit to jaedonvs/noop that referenced this pull request Aug 15, 2026
…description typos (#492) (#496)

* Today (Android): unclip the day title + drop the bogus Strain % (#492)

Two Android-only visual bugs from #492 (iOS already handles both correctly):

- ParthJadhav#1: the tappable day-title Column had .clip(RoundedCornerShape(cornerSm)) with
  indication = null — no ripple to shape, but the rounded corners clipped the
  title/date text's bottom-left (the 'W' of 'Wednesday'). Drop the clip; the
  clickable still defines the tap area. iOS uses contentShape(Rectangle()), no clip.

- #8: the Strain Key-Metrics tile hardcoded unit = "%". Strain/Effort is a load
  index (0–21 WHOOP / 0–100 NOOP), not a percentage, so the % was wrong — most
  visibly on the 0–21 scale ('5.7%'). Recovery/Rest are genuine 0–100 % and keep
  it. iOS shows the strain axis as an 'of 21'/'of 100' caption with no %.

compileFullDebugKotlin: BUILD SUCCESSFUL. Reported by bartmuskala.

* Trends (Android): fix two metric-description punctuation typos (#492 follow-up)

Spotted in the #492 screenshots (not in the reporter's list): the Charge/Sleep
metric-explorer descriptions had a space before the comma, and the Sleep one
also used a comma where iOS uses a colon. These are documented to 'match the
macOS MetricCatalog entries exactly' (TrendsExploreScreen :190), so this
restores that parity:
  - 'you are , led'      -> 'you are, led'
  - 'sleep was , dura...' -> 'sleep was: dura...'  (matches MetricCatalog.swift)

String-literal only; no logic.
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