Admin
Add native Android artist Stripe product and price management
Laurel/admin should be able to manage membership commerce from the Android app with parity to iOS. In Stripe terms, this means editing products/entitlements and adding or select...
A live tracker for what is shipped, what is active, and what is queued next across the Fanful creator platform, agent surfaces, and mobile apps.
GitHub issue labels ยท updated 1:54 AM
Workstream
Kotlin, Compose, and Media3 work for Android: native playback, FCM, media sessions, Play readiness, and matching Fanful listener and creator jobs.
Roadmap stage
Useful sparks that might become real once a dependency or user need gets sharper.
No maybe items right now.
Roadmap stage
Committed roadmap work that exists, but is not the next thing to pull.
Admin
Laurel/admin should be able to manage membership commerce from the Android app with parity to iOS. In Stripe terms, this means editing products/entitlements and adding or select...
Commerce
Motivation 530 tracks lesson bundles, subscription credits, cancellation windows, skipweek behavior, refunds, and tierlinked lesson benefits as shared platform policy. Android n...
Ops
Motivation The Android app now has a productionRelease build and a Play Store runbook, but it is not actually ready for Google Play internal testing until release/uploadkey sign...
Roadmap stage
Committed follow-ups that are queued behind the active work.
No next items right now.
Roadmap stage
Current branches and PRs. These should move as GitHub issue labels change.
No active items right now.
Roadmap stage
Shipped work, newest first, with screenshots where the change is visual.
Admin
Parent lesson platform issue: 530 Android parity audit: 1261 Shared agent/backend availability write: 1550 Agent confirmation widget: 1753 Related Android lesson policy slice: 1...
Admin
Parent Android issue: 858 Shared lesson policy parent: 530 Android parity audit: 1261 Related iOS proof: 1671 / iOS userjourney rows for lesson policy cutoff updates Why Fanful'...
Admin
Parent: 534 Related Android parent: 926 Parity audit: 1261 Related shared contract: 1371 Related iOS parity: 1573 Why The public Fanful Memberships promise includes recurring su...
Admin
Parent: 926 Shared contract parent: 1052 Parity source: web 1862, agents 1692 and 1750 Audit parent: 1261 Context Web admin and agent surfaces now expose confirmed shop product ...
Admin
Context The shared creatorcommerce contract now advertises creator.shopproduct.detailsupdate as ready through /api/agent/creatorcommerce. This contract supports safe store item ...
Admin
Parent: 926 Related shared creatorcommerce contract: 1052 Parity/audit parent: 1261 Related iOS slice: 1658 Goal Expose the ready creator.shopproduct.visibilityupdate confirmedw...
Admin
Parent: 926 Shared backend/API parent: 1052 Parity sibling context: agent creator shop product tools are covered by the shared MCP/agent smoke suite. Add native Android artist/a...
Qa
Parent QA issue: 1504 Android implementation issue: 1503 (closed after PRs 1542, 1577, 1580, 1582, 1588, and 1599) Feature parent: 1499 Goal Produce documented Android evidence ...
Admin
Parent: 1503 Crossplatform parity: 1499 QA followup: 1504 Goal Give Android publisher/admin users a native notification center surface for the publisher notification events now ...
Live
Parent: 1503 Shared parity parent: 1499 Goal Let signedin Android listeners upload a communityscoped custom emoji from the native app instead of handing off to Fanful web. Scope...
Commerce
Context Parent 1493 tracks referral scheme parity for agents, iOS, and Android. Agent read parity shipped in 1509 and iOS publisher referral summary parity shipped in 1530. Andr...
Live
Parent: 1499 Depends on shared contract issue: 1500 Web parity reference: 1501 iOS parity reference: 1502 Goal Bring the Android app to parity with the Discord/Slackgrade Fanful...
Admin
Parent: 926 Shared backend/API dependency shipped: 1186 Parity siblings: iOS 1195 and web 1205. Add the native Android artist/admin controls for membershiptier Stripe Price crea...
Admin
Parity sibling: iOS 1164. Android creator/admin screens should either show real backend values or explicitly label placeholder/unavailable states. Mark specifically called out c...
Admin
Parity sibling: iOS 1163. Parent: 560. Related: 851. Android should match iOS/web creator intent: a creator should be able to start a live room with a simple native "Go live now...
Admin
Parity sibling: iOS 1162. Parent: 560. Android should match the agreed community model: live video/event chat is separate from alwayson text channels like general, intros, membe...
Media
Context Parity followup from 1101. The iOS libraryrow direct play/pause control now has a clearer visible target and a 56pt hit area. Android also has an explicit libraryrow Fil...
Admin
Parent: 926. Shared backend/API parent: 1052. Backend/agent write slice: 1083. Web parity sibling: 1086. iOS parity sibling: 1095. Add the native Android artist/admin controls f...
Platform
Parent: 560 Contract: 1078 Related: iOS 1090, Android mode cue 1087 Why 1090 is adding an iOS selectedcommunity and fan/publisher mode shell. Android now has the smaller Account...
Platform
Parent: 1078 Parity siblings: iOS 1077, Android identity/docs 1084 Related: 560 Why iOS now shows a native Fanful appmode cue in Account so the app presents one Fanful app with ...
Platform
Context Parent: 1075. iOS sibling: 1077. Related Android releasereadiness umbrella: 847. Fanful is now the intended MVP product identity: one app, one human account, multiple cr...
Media
Parent: 448 Sibling: 1061 Why The shared Listen Along contract says native share sheets should mirror the web invitemessage pattern: include enough context for a friend to under...
Admin
Parent: 923 Depends on shipped shared contract: 921 Context 923 asks for full native Android artist community channel management. The shared 921 terminology/cap contract is now ...
Commerce
Parent: 928 Context 928 asks for live donations across web, iOS, and Android. Current investigation shows a safe Androidfirst slice is available now: Existing /api/checkout alre...
Admin
Parent: 926 Ship the safe Androidnative slice for creator commerce before broader price/product editing. Scope: Add an Android artist/admin panel that reads the existing /api/ag...
Admin
Android child slice for 924. Acceptance criteria: When bootstrap includes artistAdmin, the Android Account panel uses artist/admin framing instead of listener membership, purcha...
Admin
Artists logged into the Android app should be able to create, rename, and configure artist community text channels with parity to iOS and web.\n\nAcceptance criteria:\n Laurel/a...
Live
Problem During the 851 multiplayer smoke pass, Android Seeker showed the live room start as a raw ISO timestamp: Starts 20260808T00:00:00.000Z The same room is humanformatted on...
Auth
Parent Part of 873. Depends on the shared displayname update route from the web/API child issue. Scope Add a native Android editprofile/displayname path. Show the current listen...
Live
Motivation PR 856 adds GET /api/rooms/{roomId}/calendar plus the Android model field for endpoints.calendarExport, but Android does not yet have a native action that downloads/s...
Commerce
Goal Bring Cloudflare Registrar domain purchase parity to the Android admin surface after the platform/web contract in 680 is stable. Scope Decode and display domain search quot...
Admin
Why 601 is adding the native Android member ideaboard flow: browse, submit, vote, and refresh. Android also supports artist/admin mode, so Laurel should eventually curate the id...
Live
Context 629 / PR 660 added public creatorapproved community chat automation replies with durable audit rows and listenervisible attribution. Android base community chat is track...
Live
Parent: 505 Related server/web slice: 524 Related iOS parity issue: 654 Related admin/agent safety issue: 656 Production credential blocker: 650 Context 524 adds the web/admin/s...
Live
Context 639 is adding community chat reactions, lightweight replies, and mention parsing/rendering on the web surface. Android base community chat is tracked separately in 572, ...
Admin
Why 599 tracks parity for the member idea/upvoting board that shipped on web in 511. Android should get a native implementation rather than relying on a webonly board. Scope Add...
Live
Motivation 507 is adding firstparty community chat channels as a platform feature, not only a web /live widget. The Android app needs the same communityscoped chat experience in...
Admin
Problem Issue 316 still cannot complete the Laurel artist/admin smoke from Android because the native Android auth surface currently exposes email/password signin only. I can cr...
Media
Motivation PR 373 shipped the shared web/backend Listen Along state contract. The Android app has invite/join UI, but realtime coplayback and coscrub should now move from the ol...
Media
Motivation Mark expects the Android player to follow the shared autoplaynext contract: if a listener has a next queue item and autoplay is enabled, Android should advance cleanl...
Commerce
Motivation Mark wants Shop to be native in iOS and Android. The app should not link to the website for normal browsing or product detail tasks. Scope Add a native Android Shop d...
Commerce
Motivation Lessons should be a native Android module, not a website handoff. A listener should be able to discover lesson availability and request/booking options from inside th...
Commerce
Motivation Support is the explicit exception to the nowebhandoff rule: Mark wants Stripehosted checkout for support/contributions rather than Apple/Google inapp purchase. The An...
Auth
Motivation Mark's Android feedback: the top bar currently reads like a website shell (Fanful Listener, laurelharned.com, refresh icon). The app should feel like a native media/l...
Media
Motivation Mark feedback from the Android app session: timed comments should not show star, heart, and save as competing peer actions. The shared product direction is one visibl...
Admin
Motivation Mark wants the Android app tested as a real artist/listener product, not just a UI shell. Artist account laurel@laurelharned.com should be able to go live from Androi...
Auth
Motivation Mark's nativeapp feedback: email notifications can be separate from email confirmation, push should be enableable for any loggedin native user, and unconfirmed email ...
Media
Motivation Sameaccount Listen here handoff is intentionally exclusive: one listener account on two devices should stop the other device. Mark wants a separate social listening m...
Admin
Goal\nGive Laurel native iOS and Android moderation for timed comments and liveroom notes.\n\n Scope\n Native moderation queue combining recent/flagged/hidden timed comments and...
Platform
Mark feedback: the current Android top area reads like a website header (Fanful Listener, laurelharned.com, refresh icon). The Android app should feel native, closer to Spotifys...
Media
Goal: prove Android can play audio and video in one native queue, matching the web demo capability. Expected behavior: Android library/queue shows both audio and video items. Se...
Media
Mark feedback from the Android app session applies across platforms: comments should use one primary reaction, heart/like, not competing star/heart/save actions. Expected behavi...
Media
Mark feedback: Android currently exposes star, heart, and savestyle actions for comments, which is confusing. Product direction is one primary reaction: heart/like. Expected beh...
Commerce
Goal: replace generic listenerhub web handoffs for Support, Shop, and Lessons with native Android surfaces. Expected behavior: Support: native ways to support Laurel, with exter...
Platform
Goal: listeners should be able to browse Laurel performance dates natively in Android without a web handoff. Expected behavior: List upcoming and recent dates. Show venue/date/t...
Admin
Goal: when Laurel is logged in as the artist/admin, she should be able to go live from the Android app without a web handoff. Expected behavior: Native live status panel for off...
Media
Goal: loggedin listeners should be able to view Laurel livestreams natively in the Android app, without opening a web handoff. Expected behavior: Show live/offline/scheduled sta...
Media
Mark noticed raw event names such as trackcompleted, playbackstart, playbackseek, and trackchanged appearing in the Android app. Expected behavior: No internal event or analytic...
Design
Motivation The Android app has one persistent Media3 player, queue, background controls, and an expanded Now Playing sheet. Now it needs a polish pass so the compact player, exp...
Design
Motivation The Android app now has substantial native functionality, but the first screen still feels like a generic Material utility surface. iOS has a native Laurel homesurfac...
Qa
Motivation Mark wants each native app to expose a selfcontained roadmap/about surface so a tester can see what this build contains, what is partly shipped, and what remains with...
Media
Workstream Android mobile app. Goal Bring the Android player shell into alignment with the shared player design notes in docs/design/player/, especially the Spotify/Applestyle s...
Media
Context The native Android MediaSession work can start the shared player and foreground media notification, but production mobile bootstrap is currently handing the app a playab...
Media
Workstream Android mobile app. Goal Make Android playback feel like a real listener app with a clear queue, nextup context, and tracktotrack continuity instead of one isolated p...
Media
Workstream Android mobile app. Goal Bring the Android listener library and player closer to the website media surface before deeper social/offline work lands. Listener jobs to b...
Media
Wrap Android playback in a native MediaSessionService so lock-screen, headphones, audio focus, and foreground playback notifications work correctly.
Media
Make Android progress writes durable across spotty connectivity, backgrounding, and future offline playback with a local queue and WorkManager retry.
Operations
Prepare the Android project for real distribution with package identity, debug/release flavors, safe network config, signing notes, and Play testing documentation.
Admin
Add an Android artist companion area for read-only signal and authenticated handoff to deeper web admin modules.
Admin
Give Laurel a role-gated Android companion workflow for live-room status, quick room controls, presence, and chat moderation.
Platform
Give Android listeners a native home base with stable web handoff links for Laurel features that are not yet fully native.
Media
Let entitled Android listeners save eligible recordings for offline playback under the #536 protected-native-cache decision once the signed offline manifest and entitlement refresh contracts are ready.
Media
Bring the website's timed listening conversation into Android playback with visible comments, timestamp seeking, replies, reactions, and moderation-aware states.
Media
Connect Android to the Fanful playback sync socket so website, Android, and iPhone sessions can hand off track, position, and active-device state.
Platform
Add FCM registration and account notification settings that distinguish OS push permission from per-category email and push preferences.
Platform
Let Android listeners sign in natively, refresh account state, and unlock paid/member entitlements through the existing Fanful account contracts.
Apps
Create the first Kotlin/Compose listener app that consumes the mobile bootstrap/progress contracts, streams playable tracks with Media3/ExoPlayer, and documents emulator and phone testing.
GitHub issues are the engineering source of truth. This page reads public Fanful roadmap issues, merges them with curated summaries and screenshots, infers the Web/iOS/Android/agent workstream, polls for label changes, and can overlay short-lived sanitized Codex status when an active agent publishes it.
Open GitHub roadmap issues