[ImgBot] Optimize images - #1
Open
imgbot[bot] wants to merge 1 commit into
Open
Conversation
*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.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Beep boop. Your images are optimized!
Your image file size has been reduced by 16% 🎉
Details
📝 docs |
repo | 🙋🏾 issues | 🏪 marketplace
~Imgbot - Part of Optimole family