Milestone IDs remain stable requirement references. The timeline below separately records when each completed milestone actually reached its gate, so project history stays accurate even when work finishes out of numeric order.
M23 · Play-testing readiness
Seven reviewable release gates
M23 is an umbrella program, not one opaque task. Work can progress locally while owner, administrator, or Play Console dependencies remain visible.
In progress
M23.1
Signed release candidate
Protected Linux signing, exact upload-certificate checks, and Android developer-verification email confirmation pass; per-app Console status, version eligibility, and delivered-install validation remain.
The application moved from a buildable native shell through playback, station data, authenticated participation, adaptive UX, five-station certification, and platform/store hardening.
1
M1
Buildable baseline
Native Gradle and Compose baseline with a verified Windows build path.
Station opt-ins, exact-name matching, baseline and duplicate suppression, blocked-author filtering, private Android alerts, and gated Chat navigation for the actively observed feed.
Inbox and Sent Box discovery succeeded, but New Message selection remained suspect and a profile-originated MorgHubby test appeared to submit without delivery. The site owner has the reproduced result.
Development resumes only after the legacy server path is repaired and its production limits can be verified. The existing app does not pretend this capability works.
Before Alpha publication
Local mention delivery is working; true push remains
M24–M26 and M27.1 are complete with service, route, privacy, notification, and physical-Razr evidence. M27.2 remains the ordered feature gate ahead of M28: it needs an authorized event source for reliable closed-app delivery. Google Cast remains intentionally gated behind receiver compatibility and permitted stream use.
Complete
M24
Sleep Timer
Service-owned presets and custom duration, live remaining time, adjust/cancel, system cancellation state, restoration, and real-device expiry validation are complete.
Android's native output switcher and live route state cover system-managed device, Bluetooth, wired/USB, and remote routes without a relay or new endpoint; Google Cast remains capability-gated.
A user-reviewed fixed-allowlist snapshot covers app/build, coarse device/API, station, bounded playback/error/network/output state, and five enum-only transitions with explicit Android copy/share and no automatic transfer.
The local exact-name detector, station controls, filtering, dedupe, private channel, and Chat navigation are complete for actively observed Chat. M27.2 true closed-app push and future PM delivery still require an authorized event source.
Revalidate the changed release candidate and publish the explicitly authorized signed bundle to internal or closed testing only after M23–M27 have closed.
M27.1 now detects exact signed-in-name mentions from actively observed Chat, baselines existing messages, ignores blocked authors, suppresses duplicates, posts privacy-minimized Android alerts, and returns to gated station Chat. New Private Message notifications will reuse this contract only after M17 is repaired and verified.
M27.2 delivery gate: the app has no developer-operated backend and currently observes Chat only while its screen is selected. Reliable closed-app delivery requires an authorized station event source or privacy-compatible relay. Continuous background polling will not be presented as push.