You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Retroactive ticket for work already delivered in Iteration 74 (2026-08-11 ~ 08-17). The Android app and its entire store-submission kit landed across 6 PRs with no tracking issue — only an untitled draft item on the board. This ticket exists so the work is reviewable and the remaining blockers have an owner.
Android counterpart to #181 (iOS App Store submission prep).
Delivered
[feature] android: native Android app — live meetings, audio import, cloud sync #228 — native Android app from zero (+13,156 / -0, 78 files). Kotlin + Compose/Material 3, single Activity + NavHost. :parleykit is a pure-JVM Kotlin port of ios/ParleyKit with the Swift test suite ported 1:1 (28 tests). Hand-written Ogg/Opus encoder (MediaCodec + MediaMuxer), windowed-sinc resampler, AudioFileDecoder (~1,600 lines of DSP, no third-party library). minSdk 29, targetSdk 35. Same backend contract as iOS. Covers: sign-in, live meetings (foreground service), audio file import (a capability iOS does not have), cloud sync with a durable pending-upload queue, history + detail, zh-TW + en.
[feature] android: release signing config and Play release workflow #234 — release signing config (env-var first, unsigned artifact + warning when no keystore, so open-source contributors can still build) + android-v* tag-triggered Play workflow with tag/version and signed-bundle guards.
Also in this iteration, the STT billing attribution fixes that shipped alongside: #226 (iOS keyboard dictation was sending a feature tag outside the cloud whitelist) and #227 (desktop was sending no feature tag at all). Both platforms' hosted STT usage was previously unattributed.
Parity with iOS
Positioned as iOS 1.1 parity + import. Not at parity with iOS 1.2.
Android does not have: voice keyboard / dictation extension, the 45-second live coaching loop, the recording consent prompt.
Android has that iOS does not: import of existing audio files.
Remaining blockers
Play organization identity verification (account 6541030546953107772, pending). Until this clears there is no Play Developer API, therefore no service account, therefore PLAY_SERVICE_ACCOUNT_JSON cannot exist and the upload step in the workflow will keep skipping. Root blocker, not solvable in code.
First bundle must be uploaded by hand — Play refuses API uploads until a release exists in the console.
Context
Retroactive ticket for work already delivered in Iteration 74 (2026-08-11 ~ 08-17). The Android app and its entire store-submission kit landed across 6 PRs with no tracking issue — only an untitled draft item on the board. This ticket exists so the work is reviewable and the remaining blockers have an owner.
Android counterpart to #181 (iOS App Store submission prep).
Delivered
:parleykitis a pure-JVM Kotlin port ofios/ParleyKitwith the Swift test suite ported 1:1 (28 tests). Hand-written Ogg/Opus encoder (MediaCodec + MediaMuxer), windowed-sinc resampler,AudioFileDecoder(~1,600 lines of DSP, no third-party library). minSdk 29, targetSdk 35. Same backend contract as iOS. Covers: sign-in, live meetings (foreground service), audio file import (a capability iOS does not have), cloud sync with a durable pending-upload queue, history + detail, zh-TW + en.android-v*tag-triggered Play workflow with tag/version and signed-bundle guards.dumpsys netstatsshowing zero rx/tx) + 4 screenshots per locale.Also in this iteration, the STT billing attribution fixes that shipped alongside: #226 (iOS keyboard dictation was sending a feature tag outside the cloud whitelist) and #227 (desktop was sending no feature tag at all). Both platforms' hosted STT usage was previously unattributed.
Parity with iOS
Positioned as iOS 1.1 parity + import. Not at parity with iOS 1.2.
Android does not have: voice keyboard / dictation extension, the 45-second live coaching loop, the recording consent prompt.
Android has that iOS does not: import of existing audio files.
Remaining blockers
6541030546953107772, pending). Until this clears there is no Play Developer API, therefore no service account, thereforePLAY_SERVICE_ACCOUNT_JSONcannot exist and the upload step in the workflow will keep skipping. Root blocker, not solvable in code.appreview@pathors.comis live and has sample meetings (marked[TODO: confirm with Jack]in the review notes).android/AppStore/README.mdstill lists account deletion, demo mode, and the feature graphic as open, all of which [feature] android: in-app account deletion, and a web deletion route for both platforms #235/[feature] android: screenshot demo mode with fictional fixtures #236/[docs] android: store screenshots for both locales #237/[docs] android: Play Store listing kit — copy, data safety, review notes, assets #232 resolved.RELEASING.md§5 still says account deletion "is not solved yet". Anyone following those files today will be misled.Upload keys (
PLAY_UPLOAD_*) are already set.