Repository navigation
fix(android/i18n): German strings for the compact widget (fixes Android CI on main) - #303
Merged
Merged
Conversation
GermanLocalizationTest.germanResourcesResolveForEveryLocalizedKey fails on main since the compact widget landed (#77): widget_compact_name and widget_compact_description exist in values/ but not values-de/. Adds both, reusing the app's established German terms (Ruhe/Ladung/Anstrengung, Live-Herzfrequenz, Band-Akku) from widget_description.
DX23876
pushed a commit
to DX23876/noop
that referenced
this pull request
Jul 22, 2026
GermanLocalizationTest.germanResourcesResolveForEveryLocalizedKey fails on main since the compact widget landed (ryanbr#77): widget_compact_name and widget_compact_description exist in values/ but not values-de/. Adds both, reusing the app's established German terms (Ruhe/Ladung/Anstrengung, Live-Herzfrequenz, Band-Akku) from widget_description.
simoncad7
pushed a commit
to simoncad7/noop
that referenced
this pull request
Aug 17, 2026
GermanLocalizationTest.germanResourcesResolveForEveryLocalizedKey fails on main since the compact widget landed (ryanbr#77): widget_compact_name and widget_compact_description exist in values/ but not values-de/. Adds both, reusing the app's established German terms (Ruhe/Ladung/Anstrengung, Live-Herzfrequenz, Band-Akku) from widget_description.
ryanbr
added a commit
that referenced
this pull request
Aug 25, 2026
Diagnostic only. The detector is untouched and no number moves. A WHOOP 4.0 field log showed 22 days of `kept=0`: 2211 candidate runs, 1661 after the #303 bridge, 1271 that never reached minExerciseMin, and 390 that DID and failed the intensity bar instead. `droppedShort` is tested first and short-circuits, so that last figure means sustained five-minute-plus efforts were reaching the intensity gate every one of those days. The detector was right to reject them — the reporter confirmed they had not trained, and sustained walking is not a workout. What the counts cannot say is how SUBSTANTIAL the best survivor was, and that is the whole verdict: a five-minute stroll rejected on intensity is routine, while an hour-long effort rejected on intensity is a defect. Both print identical counts. DetectionFunnel now carries longestRunS and meanRunS, measured on the bridged runs before any qualification gate: … runs=89 bridged=79 longestRunS=312 meanRunS=41 short=64 lowIntensity=15 kept=0 Read longestRunS against 290 s, not 300 — the gate is `minDurS - motionSmoothS`, because the smoothing window costs a run its first samples. Both docs name that figure and both tests pin it against the constants it derives from, so tuning either cannot leave it silently stale. Byte-identical line on both platforms. A test per side pins the case that matters: two fixtures carrying IDENTICAL counts from the log, separated only by longestRunS — 312 s against 3600 s. The counts alone cannot tell those apart, which is the point of the field. Verified: full Android suite green, assembleFullDebug, doc lint, and swift-packages CI green including StrandAnalytics (which cannot build on Linux — GRDB's CSQLite needs sqlite3.h — so the Swift twin was CI-verified rather than run locally).
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.
Android CI on main fails since the compact widget (#77):
GermanLocalizationTest.germanResourcesResolveForEveryLocalizedKey—widget_compact_nameandwidget_compact_descriptionwere added tovalues/strings.xmlbut notvalues-de/.This adds the two German strings, reusing the established terms from
widget_description(Ruhe/Ladung/Anstrengung, Live-Herzfrequenz, Band-Akku):widget_compact_name→ "NOOP Kompakt"widget_compact_description→ "Kompaktes Widget für Ruhe, Ladung und Anstrengung, mit Live-Herzfrequenz und Band-Akku."Verified the test's key-parity check passes with the same XML parse it uses (every non-
app_namekey invalues/now resolves invalues-de/, none blank,app_namenot redeclared). I can't run the Gradle suite locally (no Android toolchain), so CI here is the proof.