Fanful
Open Fanful navigation
Fanful

Fanful roadmap

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

AndroidLive status offline77 done3 not done

Workstream

Android app

Kotlin, Compose, and Media3 work for Android: native playback, FCM, media sessions, Play readiness, and matching Fanful listener and creator jobs.

Roadmap stage

Maybe

0 items

Useful sparks that might become real once a dependency or user need gets sharper.

No maybe items right now.

Roadmap stage

Backlog

3 items

Committed roadmap work that exists, but is not the next thing to pull.

Admin

Add native Android artist Stripe product and price management

Backlog

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

Add Android lesson policy and credit surfaces

Backlog

Motivation 530 tracks lesson bundles, subscription credits, cancellation windows, skipweek behavior, refunds, and tierlinked lesson benefits as shared platform policy. Android n...

Ops

Prepare Android Play Store internal testing release

Backlog

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

Next

0 items

Committed follow-ups that are queued behind the active work.

No next items right now.

Roadmap stage

Active

0 items

Current branches and PRs. These should move as GitHub issue labels change.

No active items right now.

Roadmap stage

Recently done

77 items

Shipped work, newest first, with screenshots where the change is visual.

Admin

Add native Android lesson availability controls

Recently done

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

Issue #1880Screenshot pending

Admin

Add native Android lesson policy cutoff controls

Recently done

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

Issue #1877Screenshot pending

Admin

Add native Android membership tier lifecycle controls

Recently done

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

Issue #1874Screenshot pending

Admin

Add native Android shop product creation controls

Recently done

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

Issue #1867Screenshot pending

Admin

Add Android shop product details controls

Recently done

Context The shared creatorcommerce contract now advertises creator.shopproduct.detailsupdate as ready through /api/agent/creatorcommerce. This contract supports safe store item ...

Issue #1845Screenshot pending

Admin

Add Android shop product visibility controls

Recently done

Parent: 926 Related shared creatorcommerce contract: 1052 Parity/audit parent: 1261 Related iOS slice: 1658 Goal Expose the ready creator.shopproduct.visibilityupdate confirmedw...

Issue #1836Screenshot pending

Admin

Add Android shop product Stripe Price create/select controls

Recently done

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

Issue #1833Screenshot pending

Qa

Capture Android mixed-surface live chat parity QA

Recently done

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

Issue #1604Screenshot pending

Admin

Android native publisher notification center

Recently done

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

Issue #1592Screenshot pending

Live

Android native custom emoji file upload

Recently done

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

Issue #1584Screenshot pending

Commerce

Android publisher referral summary and handoff

Recently done

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

Issue #1538Screenshot pending

Live

Android live chat parity: typing, reactions, custom emoji, and notifications

Recently done

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

Issue #1503Screenshot pending

Admin

Add Android membership Stripe Price create/select controls

Recently done

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

Issue #1204Screenshot pending

Admin

Label or replace Android creator admin placeholders

Recently done

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

Issue #1168Screenshot pending

Admin

Make Android creator Go Live one-tap and native

Recently done

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

Issue #1167Screenshot pending

Admin

Add native Android community channel management

Recently done

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

Issue #1166Screenshot pending

Media

Make Android library row play controls easier to tap

Recently done

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

Issue #1104Screenshot pending

Admin

Add Android lesson Stripe Price create/select controls

Recently done

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

Issue #1098Screenshot pending

Platform

Add Android community and publisher-mode shell

Recently done

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

Issue #1091Screenshot pending

Platform

Add Android Fanful app-mode cue to Account

Recently done

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

Issue #1087Screenshot pending

Platform

Align Android onboarding and Play metadata with the Fanful one-app model

Recently done

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

Issue #1084Screenshot pending

Media

Polish Android Listen Along invite share copy

Recently done

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

Issue #1062Screenshot pending

Admin

Add Android always-on community channel readiness/create panel

Recently done

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

Issue #983Screenshot pending

Commerce

Add Android Live tab one-time support donation entry point

Recently done

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

Issue #966Screenshot pending

Admin

Add Android native creator-commerce readiness panel

Recently done

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

Issue #959Screenshot pending

Admin

Hide listener purchase prompts for artist accounts on Android

Recently done

Android child slice for 924. Acceptance criteria: When bootstrap includes artistAdmin, the Android Account panel uses artist/admin framing instead of listener membership, purcha...

Issue #954Screenshot pending

Admin

Add native Android artist community channel management

Recently done

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

Issue #923Screenshot pending

Live

Format Android live-room start dates for listeners

Recently done

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

Issue #905Screenshot pending

Auth

Add Android native display-name editor

Recently done

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

Issue #893Screenshot pending

Live

Add Android embedded-room calendar export action

Recently done

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

Issue #861Screenshot pending

Commerce

Add Android domain purchase status and checkout handoff

Recently done

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

Issue #731Screenshot pending

Admin

Add native Android idea-board admin curation controls

Recently done

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

Issue #677Screenshot pending

Live

Render creator-approved chat automation attribution on Android

Recently done

Context 629 / PR 660 added public creatorapproved community chat automation replies with durable audit rows and listenervisible attribution. Android base community chat is track...

Issue #663Screenshot pending

Live

Add Android embedded-room webinar attendee and host states

Recently done

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

Issue #655Screenshot pending

Live

Add native Android community chat reactions, replies, and mentions

Recently done

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

Issue #647Screenshot pending

Admin

Add native Android member idea-board parity

Recently done

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

Issue #601Screenshot pending

Live

Add native Android community chat channels to Live

Recently done

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

Issue #572Screenshot pending

Admin

Add native Android magic-link or test-credential path for artist/admin sign-in

Recently done

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

Issue #484Screenshot pending

Media

Adopt Listen Along state sync in the Android app

Recently done

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

Issue #384Screenshot pending

Media

Add Android autoplay-next toggle and ended-state behavior

Recently done

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

Issue #372Screenshot pending

Commerce

Add native Android Shop surface

Recently done

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

Issue #365Screenshot pending

Commerce

Add native Android Lessons surface

Recently done

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

Issue #364Screenshot pending

Commerce

Add native Android Support surface with Stripe checkout handoff

Recently done

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

Issue #363Screenshot pending

Auth

Add Android bottom navigation and account avatar menu

Recently done

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

Issue #362Screenshot pending

Media

Unify Android timed comment reactions to one Like action

Recently done

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

Issue #353Screenshot pending

Admin

Add native Android artist-admin end-to-end smoke with Laurel and listener accounts

Recently done

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

Issue #316Screenshot pending

Auth

Add native Android email verification resend and notification eligibility copy

Recently done

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

Issue #315Screenshot pending

Media

Add Android Listen Along invite, share link, and QR join UI

Recently done

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

Issue #314Screenshot pending

Admin

Native artist admin parity: timed comment and live note moderation

Recently done

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

Issue #298Screenshot pending

Platform

Replace Android website-like top header with native bottom navigation and profile entry

Recently done

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

Issue #280Screenshot pending

Media

Add native Android mixed audio/video queue playback

Recently done

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

Issue #279Screenshot pending

Media

Unify web timed comment reactions to one heart-like model

Recently done

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

Issue #277Screenshot pending

Media

Unify Android timed comment reactions to one heart-like model

Recently done

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

Issue #276Screenshot pending

Commerce

Add native Android support, shop, and lessons surfaces

Recently done

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

Issue #275Screenshot pending

Platform

Add native Android performance dates surface

Recently done

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

Issue #274Screenshot pending

Admin

Replace Android artist live web handoff with native go-live controls

Recently done

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

Issue #273Screenshot pending

Media

Add native Android listener Live Room for livestream viewing

Recently done

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

Issue #272Screenshot pending

Media

Hide raw Android playback event identifiers from listener UI

Recently done

Mark noticed raw event names such as trackcompleted, playbackstart, playbackseek, and trackchanged appearing in the Android app. Expected behavior: No internal event or analytic...

Issue #271Screenshot pending

Design

Polish Android player chrome and accessibility against the shared design contract

Recently done

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

Issue #269Screenshot pending

Design

Brand the Android app with a native Laurel home surface

Recently done

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

Issue #267Screenshot pending

Qa

Add an in-app roadmap and About build summary to Android

Recently done

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

Issue #265Screenshot pending

Media

Align Android mini and expanded player with shared player design notes

Recently done

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

Issue #189Screenshot pending

Media

Fix mobile bootstrap demo streams when seeded R2 media objects are missing

Recently done

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

Issue #172Screenshot pending

Media

Add playback queue and next-up controls to the Android app

Recently done

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

Issue #165Screenshot pending

Media

Add artwork, video-aware media UI, and richer playback states to the Android app

Recently done

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

Issue #164Screenshot pending

Media

Add MediaSessionService background playback and notification controls to the Android app

Recently done

Wrap Android playback in a native MediaSessionService so lock-screen, headphones, audio focus, and foreground playback notifications work correctly.

Issue #158Screenshot pending

Media

Add reliable playback progress queue and WorkManager retry to the Android app

Recently done

Make Android progress writes durable across spotty connectivity, backgrounding, and future offline playback with a local queue and WorkManager retry.

Issue #156Screenshot pending

Operations

Add release signing, Play Store readiness, and Android build flavors

Recently done

Prepare the Android project for real distribution with package identity, debug/release flavors, safe network config, signing notes, and Play testing documentation.

Issue #153Screenshot pending

Admin

Add artist dashboard and web admin handoff to the Android app

Recently done

Add an Android artist companion area for read-only signal and authenticated handoff to deeper web admin modules.

Issue #151Screenshot pending

Admin

Add artist live controls and moderation companion mode to the Android app

Recently done

Give Laurel a role-gated Android companion workflow for live-room status, quick room controls, presence, and chat moderation.

Issue #149Screenshot pending

Platform

Add listener hub links for Live, Dates, Support, Shop, Lessons, and Account to the Android app

Recently done

Give Android listeners a native home base with stable web handoff links for Laurel features that are not yet fully native.

Issue #147Screenshot pending

Media

Add offline downloads and signed media cache to the Android app

Recently done

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.

Issue #145Screenshot pending

Media

Add timed comments, replies, and reactions to the Android app

Recently done

Bring the website's timed listening conversation into Android playback with visible comments, timestamp seeking, replies, reactions, and moderation-aware states.

Issue #143Screenshot pending

Media

Add playback sync and Listen Here handoff to the Android app

Recently done

Connect Android to the Fanful playback sync socket so website, Android, and iPhone sessions can hand off track, position, and active-device state.

Issue #141Screenshot pending

Platform

Add notification preferences and push registration to the Android app

Recently done

Add FCM registration and account notification settings that distinguish OS push permission from per-category email and push preferences.

Issue #139Screenshot pending

Platform

Add native account sign-in and entitlements to the Android app

Recently done

Let Android listeners sign in natively, refresh account state, and unlock paid/member entitlements through the existing Fanful account contracts.

Issue #137Screenshot pending

Apps

Build first native Android listener app

Recently done

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.

Issue #130Screenshot pending

How this stays current

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