Skip to content

[codex] Add Android App Functions timer controls#1072

Closed
IgorGanapolsky wants to merge 4 commits intodevelopfrom
feat/android-appfunctions-v1
Closed

[codex] Add Android App Functions timer controls#1072
IgorGanapolsky wants to merge 4 commits intodevelopfrom
feat/android-appfunctions-v1

Conversation

@IgorGanapolsky
Copy link
Copy Markdown
Owner

What changed

  • add Android Jetpack App Functions v1 for configureRandomTimer, startRandomTimer, pauseTimer, resumeTimer, and stopTimer
  • wire RandomTimerApp into AppFunctionConfiguration.Provider so Android 16+ callers can discover the app as a tool
  • reuse the existing timer config, start-use-case, repository, analytics, and service-controller paths instead of adding a parallel execution stack
  • fix the Android service launch path so voiceGender survives the foreground-service handoff
  • update Android build and CI/workflow setup for App Functions requirements (compileSdk 36, AGP 8.9.1, Gradle 8.11.1, KSP wiring, Android 36 SDK packages in Actions)
  • add unit and App Function end-to-end tests for the new handler, API surface, config factory, and service extras parser

Why

Android App Functions gives the app a higher-value Android entry path than launcher/deep-link only. This branch exposes the timer controls as callable Android 16+ functions while keeping the implementation on the existing timer stack.

Impact

  • Android 16+ capable callers can discover and invoke timer controls directly
  • Pro entitlement rules are enforced at the App Function boundary
  • the existing female-voice path no longer risks dropping voiceGender when the timer starts through the service path
  • no iOS behavior is touched

Validation

  • cd native-android && ANDROID_SDK_ROOT="$HOME/Library/Android/sdk" ANDROID_HOME="$HOME/Library/Android/sdk" ./gradlew :app:testDebugUnitTest :app:assembleDebug :app:lintDebug
  • cd native-android && ANDROID_SDK_ROOT="$HOME/Library/Android/sdk" ANDROID_HOME="$HOME/Library/Android/sdk" ./gradlew :app:testDebugUnitTest --tests "com.iganapolsky.randomtimer.appfunctions.RandomTimerAppFunctionsE2ETest"
  • verified generated App Functions schema/assets exist in app/build/generated/ksp/debug/resources/assets/
  • verified merged debug manifest includes the App Function services and permissions

Notes

  • local Jacoco proves the new handwritten App Functions classes are heavily covered, but not 100%. Current fresh report on this branch shows:
    • RandomTimerAppFunctions: line 100%, method 100%, branch 60.0%
    • RandomTimerAppFunctionHandler: line 100%, method 100%, branch 68.2%
    • RandomTimerAppFunctionConfigFactory: line 90.6%, method 100%, branch 90.0%
    • TimerForegroundServiceKt: line 100%, method 100%
  • I am not claiming store release from this branch. This is implementation + local verification only.

@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.

@trunk-io
Copy link
Copy Markdown

trunk-io bot commented Apr 3, 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

@github-actions github-actions bot added the pr-state:draft PR is currently in draft state label Apr 3, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 3, 2026

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
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 6, 2026

⚠️ CI Checks completed with warnings

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

github-actions bot commented Apr 6, 2026

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

@IgorGanapolsky IgorGanapolsky force-pushed the feat/android-appfunctions-v1 branch from 33ceeba to cd9bcf9 Compare April 6, 2026 15:15
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Apr 6, 2026

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 6, 2026

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

@IgorGanapolsky
Copy link
Copy Markdown
Owner Author

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

@IgorGanapolsky IgorGanapolsky deleted the feat/android-appfunctions-v1 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:draft PR is currently in draft state

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant