Automated NutsNews Android Merge Log
Section titled “Automated NutsNews Android Merge Log”This log records merged Android changes. It is an unreviewed draft; approval metadata remains present and does not claim human review.
Merge entries
Section titled “Merge entries”2026-07-30 — PR #148: Match Android launcher icon to the iOS artwork
Section titled “2026-07-30 — PR #148: Match Android launcher icon to the iOS artwork”- Repository:
ramideltoro/nutsnews-android - Merge commit:
9724b3a88ac840c077853dac5dcd0be589466d45 - Affected components:
app/src/main/res/drawable/ic_launcher_foreground.xml; legacyic_launcher.pngresources in themdpi,hdpi,xhdpi,xxhdpi, andxxxhdpifamilies;docs/branding/android-brand-assets.md;scripts/generate-brand-assets.swift;scripts/generate-play-store-assets.swift;fastlane/metadata/android/en-US/images/icon.pngand its SHA-256 manifest entry; andscripts/validate-brand-assets.sh. - Behavior: The adaptive foreground now wraps
@drawable/brand_iconin an inset of19.4444%on every edge. This fits the complete iOS composition into Android’s centered 66dp safe zone of the 108dp adaptive-icon layer, so launcher masks do not enlarge or clip the upper-right highlights. Legacy square and round assets are generated as full-composition resizes at 48, 72, 96, 144, and 192 pixels; round variants retain only Android’s circular clip. The Play listing’s 512px icon is rendered without the removed rounded-corner crop, and its SHA-256 manifest value changes accordingly. Brand validation now requires the four foreground insets and@drawable/brand_iconsource reference. - Reader and operator impact: Android launchers and the Play listing use the iOS icon composition without the prior Android-only framing or listing crop. The validation script checks the adaptive safe-zone contract; no new operator command is established by this merge.
- Safety boundary: This merge establishes the documented asset rendering, generator, checksum-manifest, and validation changes only. Deployment, migration, configuration, compatibility, security, rollback, release version, execution, and successful Play listing publication facts are not established by this merge.
2026-07-30 — PR #146: Stage Alpha when Play requires Console review
Section titled “2026-07-30 — PR #146: Stage Alpha when Play requires Console review”- Repository:
ramideltoro/nutsnews-android - Merge commit:
b97a5f4951a3529366f5cc47be1953a8d4a5938f - Affected components:
.github/workflows/play-closed-promotion.yml,scripts/promote-play-closed.sh,scripts/validate-play-closed-promotion.sh, andscripts/tests/test-play-closed-promotion.sh. - Behavior: After putting the verified bundle on Alpha, the script first commits the Play edit normally. It retries with
changesNotSentForReview=trueonly when Play returns HTTP 400 with the exact message that changes cannot be sent for review automatically and asks for that parameter. When that retry succeeds, the script reportspending-console-review. Other first-attempt failures still use the existing Alpha-commit error path; retry failures say that Play could not be reached or rejected the deferred Alpha commit. The workflow acceptspending-console-reviewand says the required action is to send changes for review from Google Play Console. The validator requires the fallback parameter and status, and a negative test checks that changing the parameter makes validation fail. - Reader and operator impact: If the specified Play review requirement appears, the promotion can stage Alpha instead of failing immediately. The workflow summary tells the operator to send the staged changes for review in Google Play Console.
- Safety boundary: This merge establishes only the exact HTTP-400/message-gated fallback, its status, workflow summary, validator, and test. Deployment, migration, configuration beyond that request parameter, compatibility, security, rollback, a successful Play promotion, Console submission, release, and execution facts are not established by this merge.
2026-07-30 — PR #145: Report Google Play Alpha commit errors
Section titled “2026-07-30 — PR #145: Report Google Play Alpha commit errors”- Repository:
ramideltoro/nutsnews-android - Merge commit:
bfefe83ebedd25f5fa6ea7afc38d79ecb9d8c4c8 - Affected components:
scripts/promote-play-closed.sh,scripts/validate-play-closed-promotion.sh, andscripts/tests/test-play-closed-promotion.sh. - Behavior: The Alpha promotion script saves the Play commit reply in
commit-response.jsonand records the HTTP status. If it cannot reach Play, it reports that. If Play returns a non-2xx status, it uses the.error.messagefrom the reply whenjqcan read one; otherwise it saysPlay returned no structured error message.It then reportsPlay rejected the Alpha release commit (HTTP <status>): <message>. The commit still useschangesInReviewBehavior=${review_behavior}. The validator checks for the saved reply, status capture, and Alpha-specific error message. A negative test confirms that changing the message makes validation fail. - Reader and operator impact: When an Alpha promotion is rejected, operators can see the HTTP status and a Play error message when Play supplies one.
- Safety boundary: This merge changes Alpha commit diagnostics only. Deployment, migration, configuration, compatibility, security, rollback, a successful Play promotion, release, and execution facts are not established by this merge.
2026-07-30 — PR #144: Make Play Internal deployment review-safe
Section titled “2026-07-30 — PR #144: Make Play Internal deployment review-safe”- Repository:
ramideltoro/nutsnews-android - Merge commit:
9c18d7dce6b11299f0aef61d3a77367dddc2df21 - Affected components:
scripts/deploy-play-internal.sh,scripts/validate-tagged-release.sh, andscripts/tests/test-tagged-release.sh. - Behavior: The Internal deployment script commits its Play edit with
changesNotSentForReview=true. It saves the reply incommit-response.jsonand records the HTTP status. If it cannot reach Play, it reports that. If Play returns a non-2xx status, it uses the.error.messagewhenjqcan read one; otherwise it saysPlay returned no structured error message.It then reportsPlay rejected the internal release commit (HTTP <status>): <message>. Tagged-release validation requires the review-safe parameter and the Internal error message. A negative test confirms that removing the parameter makes validation fail. - Reader and operator impact: Internal commits explicitly request that changes are not sent for review, and a rejected commit now includes its HTTP status and a Play error message when available.
- Safety boundary: The evidence supports only the Internal commit parameter and diagnostics. Whether this changes an active Alpha review, any deployment result, migration, configuration, compatibility, security, rollback, release, and execution facts are not established by this merge.
2026-07-30 — PR #143: Center and widen Read Story button
Section titled “2026-07-30 — PR #143: Center and widen Read Story button”- Repository:
ramideltoro/nutsnews-android - Merge commit:
4868451e13786353677d1089c4970ce412f4da09 - Affected components: the home-feed
ReadStoryButtoninapp/src/main/kotlin/com/nutsnews/app/feature/feed/ArticleCard.ktand its regression test inapp/src/test/kotlin/com/nutsnews/app/feature/feed/ArticleCardTest.kt. - Behavior: Read Story now uses a
Boxthat is fixed at 160 dp wide and 48 dp high. It keeps the existing shadow, clipping, border, click handling, andarticle_read_storytest tag. The Box centers its content. TheRead Storylabel fills the available width, stays on one line, and is centered. The regression test checks the 160 dp width, 48 dp height, and that the label and button have the same horizontal and vertical centers. - Reader and operator impact: On the home feed, Read Story is wider and its label is centered inside a fixed 160 × 48 dp control. The test protects those dimensions and alignment.
- Safety boundary: Deployment, migration, configuration, compatibility, security, rollback, release, and execution facts are not established by this merge.
2026-07-30 — PR #142: Add guarded Play Alpha promotion
Section titled “2026-07-30 — PR #142: Add guarded Play Alpha promotion”- Repository:
ramideltoro/nutsnews-android - Merge commit:
2ce2ee0aec3d64079b41764c6430413e1498bb16 - Affected components:
.github/workflows/play-closed-promotion.yml,config/play/closed-testing.json,scripts/promote-play-closed.sh, its validator and contract test, Android CI validation, and release-operations documentation. - Behavior: A manually started workflow on
maintakes a version name, numeric version code, English (United States) release notes, and the exactREPLACE_ALPHA_REVIEWacknowledgement. It runs inplay-internal, checks that the requested deterministic version is on Internal, checks Alpha, and either reportsalready-presentor requires a version code greater than Alpha’s current maximum. It moves the verified Internal bundle toalphaas a completed rollout, commits withCANCEL_IN_REVIEW_AND_SUBMIT, then checks Alpha again for that version. Only one promotion can run at a time; a running one is not cancelled. - Reader and operator impact: Replacing an Alpha release already in Play review is an explicit, traceable action instead of an implicit edit behavior. The exact acknowledgement is required before the workflow can replace and resubmit the review; a version already on Alpha does not create a new submission.
- Safety boundary: The workflow uses the
play-internalenvironment and the Play service-account secret, creates restricted temporary credential files, and has no signing or production access. It does not upload or sign an artifact; the bundle must already be verified on Internal. The supplied evidence establishes no deployment outside this workflow, migration, compatibility guarantee, successful Play promotion, or rollback procedure. Those facts are not established by this merge.
2026-07-30 — PR #141: Use a standard Read Story button shape
Section titled “2026-07-30 — PR #141: Use a standard Read Story button shape”- Repository:
ramideltoro/nutsnews-android - Merge commit:
fc6d4d8dfeb8a6d310c7a379bc01e405d90f5ffc - Affected components: the home-feed
ReadStoryButtoninArticleCard.ktandArticleCardTest.kt. - Behavior: Read Story now gets one
RoundedCornerShapefromNutsNewsTheme.dimensions.controlCornerRadiusand uses it for the shadow, clip, and border. A regression test makes the shape at 120 by 48 and checks a 16 dp corner radius that is less than half the control height, so it cannot return to capsule geometry. - Reader and operator impact: The home-feed Read Story control now has the standard rounded-rectangle outline instead of a circle-based capsule on text-width buttons. Its gradient, glow animation, border behavior, button accessibility role, and 48 dp minimum touch target remain in place.
- Safety boundary: No deployment, migration, configuration, compatibility, security, or rollback facts are established by this merge.
2026-07-29 — PR #140: Use Play automatic review submission
Section titled “2026-07-29 — PR #140: Use Play automatic review submission”- Repository:
ramideltoro/nutsnews-android - Merge commit:
411c4d1b3d0a3f6cfb0966c459a61665aaa5d492 - Affected components:
scripts/publish-play-store-metadata.sh, its fake transaction test, andscripts/validate-play-store-metadata.sh. - Behavior: The publisher now sends the metadata-edit commit request with
changesInReviewBehavior=ERROR_IF_IN_REVIEWand omitschangesNotSentForReview. The validator requires the retained in-review behavior and rejects a publisher that containschangesNotSentForReview. - Reader and operator impact: Metadata publishing follows the app’s automatic review-submission mode instead of sending the parameter that Play rejected. The retained guard still requests an error if changes are already in review.
- Safety boundary: The evidence states that this change does not cancel, combine, or bypass changes already in review. Deployment procedure, migration steps, configuration changes beyond the app’s existing review mode, compatibility beyond the reported Play behavior, security impact, and rollback procedure are not established by this merge.
2026-07-29 — PR #139: Report Play metadata commit errors
Section titled “2026-07-29 — PR #139: Report Play metadata commit errors”- Repository:
ramideltoro/nutsnews-android - Merge commit:
33c2bb254c6f3a3237d370d36b89daebd2af3dfe - Affected components:
scripts/publish-play-store-metadata.shandscripts/tests/test-play-store-metadata.sh. - Behavior: When the Play metadata commit fails, the publisher captures the response, reads a non-empty
.error.messagethroughjqwhen available, and fails with that sanitized message. If no structured message is available, it reportsPlay returned no structured error message.The test covers a rejected commit that returns a structured error. - Reader and operator impact: Operators receive the reported Play API error instead of every HTTP 400 being presented as an in-review conflict, making the immediate rejection reason more diagnosable.
- Safety boundary: This merge preserved the guarded commit behavior then in use; PR #140 subsequently changed its URL as recorded above. Deployment procedure, migration, configuration changes, compatibility, security impact, and rollback procedure are not established by this merge.
Scope and evidence boundary
Section titled “Scope and evidence boundary”The supplied evidence establishes the documented source, workflow, configuration, script, validator, test, CI, and release-documentation changes only. It does not establish a release, execution in any environment, a successful Play submission or promotion, additional configuration requirements, or any command for operators to run.
