Skip to content

fix(ci): add always() to ios-submit-review job to prevent skip#975

Closed
IgorGanapolsky wants to merge 8 commits intodevelopfrom
fix/ios-submit-review-gate
Closed

fix(ci): add always() to ios-submit-review job to prevent skip#975
IgorGanapolsky wants to merge 8 commits intodevelopfrom
fix/ios-submit-review-gate

Conversation

@IgorGanapolsky
Copy link
Copy Markdown
Owner

Summary

  • The ios-submit-review job in native-release.yml was silently skipped on every single-platform dispatch (e.g. platform=ios)
  • Root cause: GitHub Actions propagates the "skipped" state from transitive ancestors (android-release) even when verify-releases succeeds
  • Fix: add if: always() && needs.verify-releases.result == 'success' — the same pattern already used by tag-release and sync-main jobs

Evidence

  • All release/v1.3.15 native-release runs show ios-submit-review: skipped despite verify-releases: success
  • Run 23804334202: submit_review=true confirmed in logs, but job was still skipped

Test plan

  • Verify tag-release and sync-main already use this pattern
  • After merge, dispatch native-release with platform=ios + submit_review=true and confirm ios-submit-review runs

Made with Cursor

IgorGanapolsky and others added 3 commits March 31, 2026 10:24
Both platforms:
- VoiceGender enum (male/female) added to TimerConfig
- Segmented picker in setup screen (shown when voice enabled + Pro)
- Voice callout service accepts gender for future female voice pack

Male is default. Female voice files will be generated separately
via ElevenLabs with a female HIIT instructor voice.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Runs at 6 AM UTC on the 1st via cron schedule:
- Generates voice callouts via ElevenLabs TTS
- Generates alarm sounds via ElevenLabs Sound Effects
- Syncs to Android resources
- Creates a PR with the new pack

Also available via manual dispatch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The ios-submit-review job was silently skipped on every single-platform
dispatch because GitHub Actions propagates the "skipped" state from
transitive ancestors (android-release) even when verify-releases succeeds.
Adding `if: always() && needs.verify-releases.result == 'success'` matches
the pattern already used by tag-release and sync-main jobs.

Made-with: Cursor
@trunk-io
Copy link
Copy Markdown

trunk-io bot commented Mar 31, 2026

Merging to develop in this repository is managed by Trunk.

  • To merge this pull request, check the box to the left or comment /trunk merge below.

After your PR is submitted to the merge queue, this comment will be automatically updated with its status. If the PR fails, failure details will also be posted here

@gemini-code-assist
Copy link
Copy Markdown

Important

Installation incomplete: to start using Gemini Code Assist, please ask the organization owner(s) to visit the Gemini Code Assist Admin Console and sign the Terms of Services.

@github-actions github-actions bot added the pr-state:ci_running Required CI checks are still running label Mar 31, 2026
Comment on lines +35 to 45
* MALE = marine drill sergeant persona.
* FEMALE = female HIIT instructor persona.
*/
enum class VoiceGender {
MALE,
FEMALE,
}

/**
* Configuration for a random timer with all settings.
*/
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The selected voiceGender preference is not saved to the DataStore. The user's selection is lost upon app restart, reverting to the default value.
Severity: MEDIUM

Suggested Fix

Update TimerRepositoryImpl.saveTimerConfig() to persist the voiceGender field to DataStore, likely using a new preference key. Modify TimerRepositoryImpl.toTimerConfig() to load this value. Also, update related tests like TimerRepositoryImplTest.saveTimerConfig_persists_and_emits_stored_config() to verify the persistence of voiceGender.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location:
native-android/app/src/main/java/com/iganapolsky/randomtimer/domain/model/TimerConfig.kt#L30-L45

Potential issue: The `voiceGender` preference selected by a user on Android is not
persisted across application sessions. While the UI allows for selection and the current
session uses the correct gender, the `TimerRepositoryImpl.saveTimerConfig()` method was
not updated to save this setting to the DataStore. Similarly,
`TimerRepositoryImpl.toTimerConfig()` does not load it. Consequently, when the app is
closed and reopened, the `voiceGender` setting reverts to its default value of `MALE`,
ignoring the user's previous selection.

Did we get this right? 👍 / 👎 to inform future reviews.

@github-actions
Copy link
Copy Markdown
Contributor

CI All checks passed

Check Result
Android Tests success
iOS Build & Tests success
Python Unit Tests success
Python Script Tests + Release Gate success
Playwright Local Checks success
Security success

View details

@github-actions github-actions bot added pr-state:ci_green All required CI checks are green and removed pr-state:ci_running Required CI checks are still running labels Mar 31, 2026
@IgorGanapolsky IgorGanapolsky enabled auto-merge (squash) March 31, 2026 17:11
@github-actions
Copy link
Copy Markdown
Contributor

CI Some checks failed

Check Result
Android Tests success
iOS Build & Tests success
Python Unit Tests success
Python Script Tests + Release Gate success
Playwright Local Checks success
Security success

View details

@github-actions github-actions bot added pr-state:ci_running Required CI checks are still running and removed pr-state:ci_green All required CI checks are green labels Mar 31, 2026
@github-actions
Copy link
Copy Markdown
Contributor

CI Some checks failed

Check Result
Android Tests success
iOS Build & Tests cancelled
Python Unit Tests success
Python Script Tests + Release Gate success
Playwright Local Checks success
Security success

View details

@github-actions
Copy link
Copy Markdown
Contributor

CI Some checks failed

Check Result
Android Tests success
iOS Build & Tests success
Python Unit Tests success
Python Script Tests + Release Gate success
Playwright Local Checks success
Security success

View details

@sonarqubecloud
Copy link
Copy Markdown

@github-actions
Copy link
Copy Markdown
Contributor

CI Some checks failed

Check Result
Android Tests cancelled
iOS Build & Tests success
Python Unit Tests success
Python Script Tests + Release Gate success
Playwright Local Checks success
Security success

View details

@github-actions
Copy link
Copy Markdown
Contributor

CI Some checks failed

Check Result
Android Tests success
iOS Build & Tests success
Python Unit Tests success
Python Script Tests + Release Gate success
Playwright Local Checks success
Security success

View details

@IgorGanapolsky
Copy link
Copy Markdown
Owner Author

Closing: superseded by later work or has unresolvable merge conflicts. Reopen if still needed.

auto-merge was automatically disabled April 6, 2026 20:02

Pull request was closed

@IgorGanapolsky IgorGanapolsky deleted the fix/ios-submit-review-gate branch April 8, 2026 17:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-state:ci_running Required CI checks are still running

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant