# Fanful roadmap

Canonical browser roadmap: https://fanful.net/roadmap
Live JSON snapshot: https://fanful.net/api/roadmap
Generated at: 2026-05-30T05:19:35.409Z
Source: GitHub roadmap issues

## Status summary

| Status | Items |
| --- | ---: |
| Active | 0 |
| Next | 0 |
| Backlog | 13 |
| Recently done | 427 |
| Maybe | 2 |
| Unlikely | 1 |

## Active items

- No roadmap items are currently marked active.

## Roadmap by status

### Active

- No items.

### Next

- No items.

### Backlog

- [#1504](https://github.com/markitics/laurelharned/issues/1504) QA: cross-platform live chat emoji and notification parity - Website and shared platform; Qa.
  Parent: 1499 Shared contract: 1500 Web: 1501 iOS: 1502 Android: 1503 Goal Prove feature parity for the Discord/Slackgrade live chat bundle across web, iOS, and Android. Scope Cr...
  GitHub updated: 2026-05-24T23:03:21Z.

- [#1499](https://github.com/markitics/laurelharned/issues/1499) Parity: Discord/Slack-grade live chat, custom emoji, and notifications - Website and shared platform; Live.
  Goal Bring Fanful text live chat up to Discord/Slackgrade parity across web, iOS, and Android for creator communities. In this issue, "community" means the Fanful community scop...
  GitHub updated: 2026-05-24T23:03:23Z.

- [#1052](https://github.com/markitics/laurelharned/issues/1052) Define shared Stripe product price and entitlement management API - Website and shared platform; Commerce.
  Parents: 925, 926, 534 Native dependents: iOS 925 and Android 926. Define and implement the shared backend contract for creator/admin Stripe Product, Price, tier, and entitlemen...
  GitHub updated: 2026-05-23T15:49:50Z.

- [#931](https://github.com/markitics/laurelharned/issues/931) Investigate slow cross-device playback handoff between native apps - Website and shared platform; Media.
  Mark observed that changing track on one phone was slow to update on another while logged in as the same listener on iPhone and Android. Determine whether Durable Object/realtim...
  GitHub updated: 2026-05-24T23:03:26Z.

- [#926](https://github.com/markitics/laurelharned/issues/926) Add native Android artist Stripe product and price management - Android app; 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...
  GitHub updated: 2026-05-23T14:54:45Z.

- [#925](https://github.com/markitics/laurelharned/issues/925) Add native iOS artist Stripe product and price management - iOS mobile app; Admin.
  Laurel/admin should be able to manage membership commerce from the iOS app instead of seeing purchase prompts. In Stripe terms, this means editing products/entitlements and addi...
  GitHub updated: 2026-05-23T23:40:41Z.

- [#858](https://github.com/markitics/laurelharned/issues/858) Add Android lesson policy and credit surfaces - Android app; Commerce.
  Motivation 530 tracks lesson bundles, subscription credits, cancellation windows, skipweek behavior, refunds, and tierlinked lesson benefits as shared platform policy. Android n...
  GitHub updated: 2026-05-22T00:47:33Z.

- [#851](https://github.com/markitics/laurelharned/issues/851) Run recurring Fanful multiplayer smoke across web, iOS, and Android - Website and shared platform; Admin.
  Context Mark asked Goal Runner to keep periodically testing the real Fanful multiplayer experience across all available surfaces at the same time: web in Brave iOS through iPhon...
  GitHub updated: 2026-05-22T02:35:43Z.

- [#847](https://github.com/markitics/laurelharned/issues/847) Prepare Android Play Store internal testing release - Android app; 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...
  GitHub updated: 2026-05-23T15:46:34Z.

- [#636](https://github.com/markitics/laurelharned/issues/636) Prepare first production iOS App Store submission - iOS mobile app; Ops.
  Context The native iOS app now has TestFlight/releasereadiness documentation and physicaldevice build coverage, but the first public App Store submission is a separate checklist...
  GitHub updated: 2026-05-24T23:03:28Z.

- [#534](https://github.com/markitics/laurelharned/issues/534) Create cross-platform creator tiers and entitlement management - Website and shared platform; Admin.
  Motivation Creators need to define membership/support/product tiers once and have those tiers drive access across the website, native apps, realtime rooms, live chat, paid webin...
  GitHub updated: 2026-05-21T06:34:13Z.

- [#530](https://github.com/markitics/laurelharned/issues/530) Add lesson bundles, subscription credits, and cancellation policies - Website and shared platform; Admin.
  Motivation 504 mixes the first lessonbooking slice with later commercial policy work. Keep the first slice focused on fixing the current booking path and basic artist availabili...
  GitHub updated: 2026-05-23T15:47:25Z.

- [#448](https://github.com/markitics/laurelharned/issues/448) Harden Listen Along invites, QR join, and co-scrub across devices - Website and shared platform; Media.
  Captured from Mark's crossplatform listening feedback in the Codex iOS app session on 20260511. Problem Mark wants two distinct crossdevice behaviors: For one user logged in on ...
  GitHub updated: 2026-05-24T23:03:30Z.

### Recently done

- [#1883](https://github.com/markitics/laurelharned/issues/1883) Add native iOS lesson availability controls - iOS mobile app; Admin.
  Motivation Agent/backend lesson availability writes are available through the shared creator.commerce.lessonavailabilityupdate contract, and Android parity shipped in 1880/1882....
  GitHub updated: 2026-05-23T13:14:48Z.

- [#1880](https://github.com/markitics/laurelharned/issues/1880) Add native Android lesson availability controls - Android app; 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...
  GitHub updated: 2026-05-23T11:55:44Z.

- [#1877](https://github.com/markitics/laurelharned/issues/1877) Add native Android lesson policy cutoff controls - Android app; 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'...
  GitHub updated: 2026-05-23T10:34:54Z.

- [#1874](https://github.com/markitics/laurelharned/issues/1874) Add native Android membership tier lifecycle controls - Android app; 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...
  GitHub updated: 2026-05-22T14:34:21Z.

- [#1869](https://github.com/markitics/laurelharned/issues/1869) Audit web parity against Fanful feature promises - Website and shared platform; Qa.
  Context Android has 1261 as a durable featurepromise parity audit against the public Fanful feature set. The web app has shipped many individual slices, but there is not yet an ...
  GitHub updated: 2026-05-22T10:34:08Z.

- [#1868](https://github.com/markitics/laurelharned/issues/1868) Add native iOS shop product creation controls - iOS mobile app; Admin.
  Parent: 925 Shared contract parent: 1052 Parity source: web 1862, agents 1692 and 1750 Related Android parity: 1867 Context Web admin and agent surfaces now expose confirmed sho...
  GitHub updated: 2026-05-23T11:23:19Z.

- [#1867](https://github.com/markitics/laurelharned/issues/1867) Add native Android shop product creation controls - Android app; 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 ...
  GitHub updated: 2026-05-22T11:03:31Z.

- [#1850](https://github.com/markitics/laurelharned/issues/1850) Add iOS shop product details controls - iOS mobile app; Admin.
  Context Android now exposes guarded native shop product details controls through 1845 and records executed local APPENV=test evidence through 1847. The shared agent contract is ...
  GitHub updated: 2026-05-22T03:33:47Z.

- [#1845](https://github.com/markitics/laurelharned/issues/1845) Add Android shop product details controls - Android app; Admin.
  Context The shared creatorcommerce contract now advertises creator.shopproduct.detailsupdate as ready through /api/agent/creatorcommerce. This contract supports safe store item ...
  GitHub updated: 2026-05-22T02:33:21Z.

- [#1836](https://github.com/markitics/laurelharned/issues/1836) Add Android shop product visibility controls - Android app; Admin.
  Parent: 926 Related shared creatorcommerce contract: 1052 Parity/audit parent: 1261 Related iOS slice: 1658 Goal Expose the ready creator.shopproduct.visibilityupdate confirmedw...
  GitHub updated: 2026-05-21T23:01:11Z.

- [#1833](https://github.com/markitics/laurelharned/issues/1833) Add Android shop product Stripe Price create/select controls - Android app; 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...
  GitHub updated: 2026-05-21T21:56:08Z.

- [#1715](https://github.com/markitics/laurelharned/issues/1715) Expose listener display-name update to agents - Agents and developers; Auth.
  Scope Move listener.profile.displayname.update from contractonly to an executable, confirmed agent write. Deliverables Add a confirmed listener write wrapper, likely through POS...
  GitHub updated: 2026-05-21T03:48:38Z.

- [#1710](https://github.com/markitics/laurelharned/issues/1710) Mark listener community post action contract ready - Agents and developers; Web.
  Problem listener.community.post in /api/agent/actioncontracts still reports contractonly, even though PR 1553 / issue 1546 shipped fanfullistenercommunitymessagesread and fanful...
  GitHub updated: 2026-05-23T23:44:56Z.

- [#1702](https://github.com/markitics/laurelharned/issues/1702) Expose member idea submit and vote agent writes - Agents and developers; Web.
  Problem Fanful exposes member ideaboard reads to agents, but the actioncontract manifest still marks member.ideas.submitandvote as contractonly. A listener should be able to ask...
  GitHub updated: 2026-05-23T23:44:59Z.

- [#1692](https://github.com/markitics/laurelharned/issues/1692) Expose shop product creation agent writes - Agents and developers; Admin.
  Motivation Fanful creatorcommerce agents can now update existing shop product visibility, safe details, inventory metadata, and Stripe Price mappings, but they still cannot crea...
  GitHub updated: 2026-05-23T23:45:01Z.

- [#1684](https://github.com/markitics/laurelharned/issues/1684) Expose shop product Stripe Price agent writes - Agents and developers; Commerce.
  Parent: 1052 Related: 1681, 1682, 918, 799 Why PR 1682 made safe existing shop product details agentwritable, but deliberately left product prices and Stripe Price mapping block...
  GitHub updated: 2026-05-23T23:45:04Z.

- [#1673](https://github.com/markitics/laurelharned/issues/1673) Add web publisher notification center UI - Website and shared platform; Live.
  Parent: 1501 Shared contract: 1500 Goal Add a visible web publisher/admin notification center so artist admins can review creatorappropriate notification events from the web app...
  GitHub updated: 2026-05-23T23:45:07Z.

- [#1671](https://github.com/markitics/laurelharned/issues/1671) Add iOS lesson policy cutoff controls - iOS mobile app; Admin.
  Parent: 1417 Contract parent: 530 Context The iOS app already consumes the shared lessonpolicyreadiness.v1 read contract and has simulator evidence for ready and unavailable les...
  GitHub updated: 2026-05-23T23:45:08Z.

- [#1659](https://github.com/markitics/laurelharned/issues/1659) Add web custom emoji picker and My emojis UI - Website and shared platform; Live.
  Parent: 1501 Related: 1499 Goal Finish the web UI slice for community custom emoji parity now that the API, storage, reaction persistence, usage analytics, and executable API jo...
  GitHub updated: 2026-05-23T23:45:11Z.

- [#1658](https://github.com/markitics/laurelharned/issues/1658) Add iOS shop product visibility controls - iOS mobile app; Admin.
  Parent: 925 Related shared creatorcommerce contract: 1052 Goal Expose the ready creator.shopproduct.visibilityupdate confirmedwrite contract in native iOS so an artist/admin can...
  GitHub updated: 2026-05-23T23:45:13Z.

- [#1634](https://github.com/markitics/laurelharned/issues/1634) Add web listener notification center - Website and shared platform; Live.
  Parent: 1501 Shared contract: 1500 Goal Give web listeners an accountlevel notification center for the same reaction, reply, scheduled live show, and donationthanks event catego...
  GitHub updated: 2026-05-20T09:00:06Z.

- [#1632](https://github.com/markitics/laurelharned/issues/1632) Add expanded web system emoji reaction controls - Website and shared platform; Live.
  Parent: 1501 Shared contract: 1500 Goal Expose the shared communitychat system emoji reaction set in the web live/community chat UI instead of limiting web listeners to the lega...
  GitHub updated: 2026-05-20T05:33:40Z.

- [#1624](https://github.com/markitics/laurelharned/issues/1624) Show web community chat typing indicators - Website and shared platform; Live.
  Parent: 1501 Shared contract: 1500 Parity parent: 1499 Problem The shared communitychat contract already defines realtime typing presence and native Android/iOS have evidence fo...
  GitHub updated: 2026-05-20T03:12:10Z.

- [#1614](https://github.com/markitics/laurelharned/issues/1614) Add iOS web-created live chat notification QA evidence - iOS mobile app; Qa.
  Parent QA issue: 1504 Related iOS parity issue: 1502 Android precedent: 1604 Journey catalog: 1231 Goal Prove that native iOS can consume local webcreated live chat reply/reacti...
  GitHub updated: 2026-05-23T23:45:24Z.

- [#1610](https://github.com/markitics/laurelharned/issues/1610) Add iOS community channel notification mute controls - iOS mobile app; Qa.
  Parent catalog: 1231 Live chat parent: 1502 Shared notification contract: 159 Goal Add native iOS controls for muting and unmuting community channel notifications, covering the ...
  GitHub updated: 2026-05-23T23:45:25Z.

- [#1604](https://github.com/markitics/laurelharned/issues/1604) Capture Android mixed-surface live chat parity QA - Android app; 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 ...
  GitHub updated: 2026-05-23T23:45:27Z.

- [#1600](https://github.com/markitics/laurelharned/issues/1600) Add iOS native custom emoji file upload - iOS mobile app; Live.
  Parent: 1502 Shared parity parent: 1499 Android reference: 1584 Earlier iOS shell: 1527 Goal Let signedin iOS listeners upload a communityscoped custom emoji from the native app...
  GitHub updated: 2026-05-23T23:45:29Z.

- [#1592](https://github.com/markitics/laurelharned/issues/1592) Android native publisher notification center - Android app; 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 ...
  GitHub updated: 2026-05-19T21:32:33Z.

- [#1589](https://github.com/markitics/laurelharned/issues/1589) Add iOS publisher notification refresh and mark-read actions - iOS mobile app; Live.
  Parent: 1502 Backend route: /api/admin/notifications Goal Bring the native iOS publisher/admin notification center closer to the live Fanful notification contract by adding refr...
  GitHub updated: 2026-05-23T23:45:30Z.

- [#1585](https://github.com/markitics/laurelharned/issues/1585) Add iOS notification inbox refresh and mark-read actions - iOS mobile app; Live.
  Parent: 1502 Depends on shipped backend route work: 1539 Context iOS already has a native Notifications tab with listener and publisher event rows from the mobile bootstrap/fixt...
  GitHub updated: 2026-05-23T23:45:32Z.

- [#1584](https://github.com/markitics/laurelharned/issues/1584) Android native custom emoji file upload - Android app; 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...
  GitHub updated: 2026-05-19T19:48:46Z.

- [#1579](https://github.com/markitics/laurelharned/issues/1579) Persist iOS custom emoji reactions in community chat - iOS mobile app; Live.
  Parent: 1502 Depends on shipped backend endpoint issue: 1539 Related shared parity parent: 1499 Goal Replace the native iOS custom emoji "coming soon" shell with real persisted ...
  GitHub updated: 2026-05-23T23:45:34Z.

- [#1573](https://github.com/markitics/laurelharned/issues/1573) Add iOS membership tier creation controls - iOS mobile app; Admin.
  Parent: 1371 Related commerce parent: 925 Goal Add native iOS publisher controls for creating an inactive membership tier through the alreadyshipped confirmed creatorcommerce ti...
  GitHub updated: 2026-05-23T23:39:35Z.

- [#1555](https://github.com/markitics/laurelharned/issues/1555) Add iOS membership tier profile and benefit editing - iOS mobile app; Admin.
  Parent: 925 Contract parent: 1371 Follows: 1540 Context PR 1552 shipped native iOS archive/restore controls for existing membership tiers. The shared creatorcommerce API on main...
  GitHub updated: 2026-05-23T23:39:35Z.

- [#1540](https://github.com/markitics/laurelharned/issues/1540) Add iOS membership tier lifecycle controls - iOS mobile app; Admin.
  Parent: 925 Shared lifecycle API: 1371 Crossplatform tier parent: 534 Goal Add native iOS publisher/admin controls for membership tier lifecycle management now that the shared c...
  GitHub updated: 2026-05-19T13:07:25Z.

- [#1539](https://github.com/markitics/laurelharned/issues/1539) Implement executable custom emoji and notification-center endpoints - Website and shared platform; Live.
  Parent: 1499\\nContract predecessor: 1500\\nBlocks native parity: 1502, 1503\\nQA parity: 1504\\n\\n Problem\\n\\nPR 1534 / 1500 shipped the shared schema, D1 tables, migration, and ag...
  GitHub updated: 2026-05-19T14:37:21Z.

- [#1538](https://github.com/markitics/laurelharned/issues/1538) Android publisher referral summary and handoff - Android app; 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...
  GitHub updated: 2026-05-20T21:33:37Z.

- [#1533](https://github.com/markitics/laurelharned/issues/1533) Update iOS journey catalog for notification, emoji, and referral evidence - iOS mobile app; Qa.
  Goal Update the internal /admin/userjourneys iOS catalog so the latest shipped native iOS parity slices are indexed with exact evidence, related issues, and blocker notes. Scope...
  GitHub updated: 2026-05-19T11:24:41Z.

- [#1530](https://github.com/markitics/laurelharned/issues/1530) iOS publisher referral summary and handoff - iOS mobile app; Commerce.
  Context 1493 tracks referral scheme parity for agents, iOS, and Android. The agent read contract from 1509 is now live through the creatorcommerce manifest, but iOS still lacks ...
  GitHub updated: 2026-05-19T10:17:55Z.

- [#1527](https://github.com/markitics/laurelharned/issues/1527) iOS custom emoji picker and My emojis shell - iOS mobile app; Live.
  Parent: 1502 Shared contract dependency: 1500 Goal Add the native iOS shell for communityscoped custom emoji so the app can render/pick custom emojis from the mobile bootstrap c...
  GitHub updated: 2026-05-23T23:45:38Z.

- [#1522](https://github.com/markitics/laurelharned/issues/1522) iOS notification inbox shell for listener and publisher events - iOS mobile app; Live.
  Parent: 1502\\nDepends on shared event delivery contract: 1500\\n\\n Goal\\n\\nAdd the native iOS notification inbox surface for Discord/Slackgrade Fanful community events without in...
  GitHub updated: 2026-05-23T23:45:40Z.

- [#1518](https://github.com/markitics/laurelharned/issues/1518) Add platform filters to the Fanful roadmap - Website and shared platform; Web.
  Goal Add platform filters to fanful.net/roadmap so Mark can view the main roadmap at a feature/workstream level instead of digging through noisy GitHub issue lists. Scope Add a ...
  GitHub updated: 2026-05-23T23:45:41Z.

- [#1512](https://github.com/markitics/laurelharned/issues/1512) iOS live chat: system emoji reactions - iOS mobile app; Live.
  Parent: 1502 Shared contract: 1500 Master parity: 1499 Goal Let iOS listeners react to any community chat message with more than the legacy heartonly control, using system emoji...
  GitHub updated: 2026-05-23T23:45:43Z.

- [#1503](https://github.com/markitics/laurelharned/issues/1503) Android live chat parity: typing, reactions, custom emoji, and notifications - Android app; 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...
  GitHub updated: 2026-05-19T21:40:49Z.

- [#1502](https://github.com/markitics/laurelharned/issues/1502) iOS live chat parity: typing, reactions, custom emoji, and notifications - iOS mobile app; Live.
  Parent: 1499 Depends on shared contract issue: 1500 Web parity reference: 1501 Goal Bring the iOS app to parity with the Discord/Slackgrade Fanful live chat contract. Scope Nati...
  GitHub updated: 2026-05-22T03:44:59Z.

- [#1501](https://github.com/markitics/laurelharned/issues/1501) Web live chat: typing, reactions, custom emoji, and notification centers - Website and shared platform; Live.
  Parent: 1499 Depends on shared contract issue: 1500 Goal Add the Discord/Slackgrade live chat capability set to the web app. Scope Show typing indicators such as Rob is typing.....
  GitHub updated: 2026-05-20T11:51:36Z.

- [#1500](https://github.com/markitics/laurelharned/issues/1500) Shared live-chat contract for typing, reactions, custom emoji, and notifications - Agents and developers; Live.
  Parent: 1499 Goal Define and implement the shared Fanful contract for Discord/Slackgrade live chat primitives before individual clients build UI on divergent assumptions. Scope ...
  GitHub updated: 2026-05-19T10:53:48Z.

- [#1491](https://github.com/markitics/laurelharned/issues/1491) Ship web/backend publisher referral scheme v1 - Website and shared platform; Commerce.
  Scope Implement the first shippable web/backend publisher referral scheme. Acceptance criteria D1 schema records publisher referral codes, referredpublisher claims, reward terms...
  GitHub updated: 2026-05-19T04:31:13Z.

- [#1490](https://github.com/markitics/laurelharned/issues/1490) Major ship: Fanful publisher referral scheme - Agents and developers; Growth.
  Add a publisher referral loop with shareable artist codes, first-party referral capture, Stripe-safe checkout attribution, reward qualification, admin visibility, and docs for how the growth loop was built.
  Shipped: Publisher referrals v1.
  GitHub updated: 2026-05-19T04:31:11Z.
  PRs: [#1495](https://github.com/markitics/laurelharned/pull/1495).

- [#1303](https://github.com/markitics/laurelharned/issues/1303) Define shared creator tier CRUD and entitlement contract - Website and shared platform; Admin.
  Parent: 534 Related platform parent: 1052 Parity driver: 1260 Why The public Fanful feature set now has stronger fanfacing account, shop, lesson, listen, and upload/provenance c...
  GitHub updated: 2026-05-23T23:47:06Z.

- [#1231](https://github.com/markitics/laurelharned/issues/1231) Build Fanful iOS user journey evidence catalog - iOS mobile app; Qa.
  Goal Create fanful.net/userjourneys as the durable catalog of essential Fanful jobs to be done, with iPhone/iOS test steps, screenshots, observations, and links to the related G...
  GitHub updated: 2026-05-22T03:47:47Z.

- [#1205](https://github.com/markitics/laurelharned/issues/1205) Add web admin membership Stripe Price create/select controls - Website and shared platform; Admin.
  Parent: 1052 Shared backend/API dependency shipped: 1186 Parity siblings: iOS 1195 and Android 1204. Add human web/admin controls for membershiptier Stripe Price create/select n...
  GitHub updated: 2026-05-16T17:08:04Z.

- [#1204](https://github.com/markitics/laurelharned/issues/1204) Add Android membership Stripe Price create/select controls - Android app; 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...
  GitHub updated: 2026-05-16T16:28:00Z.

- [#1195](https://github.com/markitics/laurelharned/issues/1195) Add iOS membership Stripe Price create/select controls - iOS mobile app; Admin.
  Parent: 925 Backend/API dependency shipped: 1186 Add the native iOS artist/admin controls for membershiptier Stripe Price create/select now that the shared serverowned creatorco...
  GitHub updated: 2026-05-16T14:13:53Z.

- [#1186](https://github.com/markitics/laurelharned/issues/1186) Add shared membership Stripe Price create/select API - Website and shared platform; Admin.
  Parent: 1052\\nNative dependents: iOS 925 and Android 926. Related platform parent: 534.\\n\\n Why\\n\\nThe native creator/admin apps need to let Laurel manage membershiptier prices ...
  GitHub updated: 2026-05-16T15:51:44Z.

- [#1168](https://github.com/markitics/laurelharned/issues/1168) Label or replace Android creator admin placeholders - Android app; 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...
  GitHub updated: 2026-05-23T23:47:52Z.

- [#1167](https://github.com/markitics/laurelharned/issues/1167) Make Android creator Go Live one-tap and native - Android app; 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...
  GitHub updated: 2026-05-19T23:57:22Z.

- [#1166](https://github.com/markitics/laurelharned/issues/1166) Add native Android community channel management - Android app; 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...
  GitHub updated: 2026-05-16T11:08:08Z.

- [#1165](https://github.com/markitics/laurelharned/issues/1165) Add unattended iOS TestFlight upload credential path - iOS mobile app; Ops.
  Parent: 636 Why The iOS TestFlight commandline upload path currently depends on Xcode's local Apple account/keychain state. Build 0.1.0 (3) archived successfully, but upload fai...
  GitHub updated: 2026-05-16T11:15:14Z.

- [#1164](https://github.com/markitics/laurelharned/issues/1164) Label or replace iOS creator admin placeholders - iOS mobile app; Admin.
  Why Mark noted that admin/native screens can be confusing when they show numbers or controls that might be placeholders. In the iOS app, creator/admin metrics and controls shoul...
  GitHub updated: 2026-05-16T11:18:30Z.

- [#1163](https://github.com/markitics/laurelharned/issues/1163) Make iOS creator Go Live one-tap and native - iOS mobile app; Admin.
  Parent: 560 Related: 851 Why Mark's admin feedback: when signed in as Laurel/the creator, the native app should not ask for lowlevel stream URLs. It should provide a simple nati...
  GitHub updated: 2026-05-16T11:45:33Z.

- [#1162](https://github.com/markitics/laurelharned/issues/1162) Add native iOS community channel management - iOS mobile app; Admin.
  Parent: 560 Parity sibling to create/track for Android and web/agent surfaces as needed. Why Mark clarified that live video/chat rooms are separate from alwayson 24/7 text chann...
  GitHub updated: 2026-05-16T11:51:54Z.

- [#1147](https://github.com/markitics/laurelharned/issues/1147) Add iOS first-run Fanful fan/publisher onboarding - iOS mobile app; Platform.
  Parent: 560. Related product decision: 1075. Builds on 1107. Context Mark clarified that the MVP should be one Fanful app with fan mode and publisher mode, not a dedicated Laure...
  GitHub updated: 2026-05-16T09:33:00Z.

- [#1108](https://github.com/markitics/laurelharned/issues/1108) Make idea-board artist scoping tenant-aware - Agents and developers; Platform.
  Parent: 526. Related: 511, 525, 527. Why The shipped ideaboard data model already stores artistid, and the module should remain reusable for future Fanful creator communities. T...
  GitHub updated: 2026-05-16T07:57:18Z.

- [#1107](https://github.com/markitics/laurelharned/issues/1107) Add iOS joined-community switcher sheet - iOS mobile app; Live.
  Parent: 560. Contract: 1078. Builds on shipped iOS shell 1090. Context The iOS app now has a selectedcommunity and fan/publisher mode shell, but Mark's oneapp Fanful model also ...
  GitHub updated: 2026-05-16T07:58:41Z.

- [#1104](https://github.com/markitics/laurelharned/issues/1104) Make Android library row play controls easier to tap - Android app; 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...
  GitHub updated: 2026-05-23T23:48:00Z.

- [#1101](https://github.com/markitics/laurelharned/issues/1101) Make iOS library row play controls easier to tap - iOS mobile app; Media.
  Context Mark asked whether the tiny play buttons in iOS library rows are supposed to be tappable. They should work as direct play/pause controls, but the target is visually and ...
  GitHub updated: 2026-05-16T06:28:25Z.

- [#1098](https://github.com/markitics/laurelharned/issues/1098) Add Android lesson Stripe Price create/select controls - Android app; 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...
  GitHub updated: 2026-05-23T23:48:02Z.

- [#1095](https://github.com/markitics/laurelharned/issues/1095) Add iOS lesson Stripe Price create/select controls - iOS mobile app; Admin.
  Parent: 925. Shared backend/API parent: 1052. Backend/agent write slice: 1083. Web parity sibling: 1086. Add the native iOS artist/admin controls for the nowsupported lesson Str...
  GitHub updated: 2026-05-16T05:49:22Z.

- [#1091](https://github.com/markitics/laurelharned/issues/1091) Add Android community and publisher-mode shell - Android app; 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...
  GitHub updated: 2026-05-16T04:15:21Z.

- [#1090](https://github.com/markitics/laurelharned/issues/1090) Add iOS community and publisher-mode shell - iOS mobile app; Platform.
  Parent: 560. Contract: 1078. Related iOS identity slice: 1077. Android parity sibling: 1087. Add the first native iOS selectedcommunity and fan/publisher mode shell so the app s...
  GitHub updated: 2026-05-16T04:36:08Z.

- [#1087](https://github.com/markitics/laurelharned/issues/1087) Add Android Fanful app-mode cue to Account - Android app; 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 ...
  GitHub updated: 2026-05-16T04:05:04Z.

- [#1086](https://github.com/markitics/laurelharned/issues/1086) Add web admin lesson Stripe Price create/select controls - Website and shared platform; Admin.
  Parent: 1052 Depends on: 1083 Related: 1058, 925, 926 Why 1083 is adding the confirmed serverowned Stripe Price createandselect wrapper for one lesson/coaching offering through ...
  GitHub updated: 2026-05-16T05:20:49Z.

- [#1084](https://github.com/markitics/laurelharned/issues/1084) Align Android onboarding and Play metadata with the Fanful one-app model - Android app; 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...
  GitHub updated: 2026-05-16T03:50:49Z.

- [#1083](https://github.com/markitics/laurelharned/issues/1083) Add confirmed lesson Stripe Price creation agent wrapper - Agents and developers; Commerce.
  Parent: 1052 Builds on: 1053, 1057 Related: 799, 925, 926, 534 Why 1057 lets an agent select or clear an alreadyknown Stripe Price mapping for one lesson/coaching offer, but the...
  GitHub updated: 2026-05-16T04:23:48Z.

- [#1078](https://github.com/markitics/laurelharned/issues/1078) Define Fanful community and publisher-mode switching contract - Website and shared platform; Platform.
  Context Parent: 1075. Related community shell issue: 560. Fanful's MVP model is one app with fan mode and publisher mode, not one whitelabeled app per artist. Existing community...
  GitHub updated: 2026-05-16T03:50:49Z.

- [#1077](https://github.com/markitics/laurelharned/issues/1077) Align iOS onboarding and TestFlight metadata with the Fanful one-app model - iOS mobile app; Platform.
  Context Parent: 1075. Related TestFlight/App Store umbrella: 636. Fanful is now the intended MVP product identity: one app, one human account, multiple creator communities, with...
  GitHub updated: 2026-05-16T03:50:49Z.

- [#1075](https://github.com/markitics/laurelharned/issues/1075) Define Fanful one-app fan and publisher mode product model - Website and shared platform; Platform.
  Context Mark clarified the intended MVP product model after the first iOS App Store Connect record was created: Start with one Fanful app, not one whitelabeled app per artist. T...
  GitHub updated: 2026-05-16T02:41:41Z.

- [#1070](https://github.com/markitics/laurelharned/issues/1070) Route homepage lesson card to the booking surface - Website and shared platform; Commerce.
  Parent: 504. Motivation The first lessonbooking path already has a dedicated /lessons surface, adminmanaged offerings, and open availability. The homepage support band still sen...
  GitHub updated: 2026-05-15T23:28:18Z.

- [#1064](https://github.com/markitics/laurelharned/issues/1064) Fix admin Stripe catalog journey after price selection wrapper merge - Agents and developers; Admin.
  Parent: 1052 Related: 1058, 1057, 1059, 1060 Why Main CI is red after 1059 and 1060 both landed. The browser journey failure is in tests/journeys/admin.spec.ts, where the 1059 a...
  GitHub updated: 2026-05-16T02:31:35Z.

- [#1062](https://github.com/markitics/laurelharned/issues/1062) Polish Android Listen Along invite share copy - Android app; 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...
  GitHub updated: 2026-05-16T02:31:33Z.

- [#1061](https://github.com/markitics/laurelharned/issues/1061) Polish iOS Listen Along invite share copy - iOS mobile app; Media.
  Parent: 448 Why The shared Listen Along design notes say hosts should be able to share an invite message that includes the current track, shared position, sharedcontrols context...
  GitHub updated: 2026-05-16T02:31:31Z.

- [#1058](https://github.com/markitics/laurelharned/issues/1058) Add web admin Stripe catalog readiness panel - Agents and developers; Admin.
  Parent: 1052 Builds on: 1053 Related: 925, 926, 1057, 534 Why 1053 shipped the shared Stripe catalog readiness API and made it visible to agents and native discovery, while 925/...
  GitHub updated: 2026-05-16T03:48:05Z.

- [#1057](https://github.com/markitics/laurelharned/issues/1057) Add confirmed lesson Stripe Price selection agent wrapper - Agents and developers; Admin.
  Parent: 1052 Builds on: 1053 Related: 799, 925, 926, 534 Why 1053 made the shared Stripe catalog/readiness boundary visible to web/admin, agents, iOS, and Android, but all billi...
  GitHub updated: 2026-05-15T21:49:13Z.

- [#1053](https://github.com/markitics/laurelharned/issues/1053) Add shared Stripe catalog readiness API for creator commerce - Website and shared platform; Commerce.
  Parent: 1052 Unblocks later native write work in 925 and 926. Related tier/entitlement parent: 534. Why The iOS and Android creatorcommerce panels can already read the shared /a...
  GitHub updated: 2026-05-15T21:01:57Z.

- [#1051](https://github.com/markitics/laurelharned/issues/1051) Add iOS lesson policy and credit surfaces - iOS mobile app; Commerce.
  Parent: 530 Parity sibling: Android 858. Ship the native iOS surface for lesson policy and credit state once the shared 530 contract exists. Why Lesson cancellation windows, bun...
  GitHub updated: 2026-05-18T06:15:06Z.

- [#1049](https://github.com/markitics/laurelharned/issues/1049) Add iOS native creator-commerce readiness panel - iOS mobile app; Admin.
  Parent: 925 Parity sibling: Android 959. Ship the safe iOSnative slice for creator commerce before broader Stripe product/price editing. Why 925 remains blocked for actual Strip...
  GitHub updated: 2026-05-15T18:38:56Z.

- [#1046](https://github.com/markitics/laurelharned/issues/1046) Use net.fanful.ios as the checked-in iOS bundle identifier - iOS mobile app; Ops.
  Context Mark asked to stop using the longer iOS bundle identifiers and make the iOS app be net.fanful.ios. The release config already uses net.fanful.ios, but checkedin Debug st...
  GitHub updated: 2026-05-15T17:22:41Z.

- [#1045](https://github.com/markitics/laurelharned/issues/1045) Add native iOS idea-board admin curation controls - iOS mobile app; Admin.
  Goal Bring native iOS artist/admin ideaboard curation to parity with web, Android, and agent contracts. Why 599 tracks ideaboard parity across the four channels. Web 511, iOS me...
  GitHub updated: 2026-05-15T17:39:18Z.

- [#1028](https://github.com/markitics/laurelharned/issues/1028) Add confirmed embedded-room roster and stage agent wrapper - Agents and developers; Admin.
  Context 800 now has confirmed live status, schedule update, and liveevent create wrappers. The remaining useful embeddedroom/stage gap is narrower than the whole 505 Zoomalterna...
  GitHub updated: 2026-05-15T20:51:54Z.

- [#1012](https://github.com/markitics/laurelharned/issues/1012) Add confirmed live event creation wrapper for agents - Agents and developers; Admin.
  Why Parent 800 now has shipped live status preview/write, live schedule preview, and confirmed existingevent schedule updates. The remaining creator scheduling gap is creating a...
  GitHub updated: 2026-05-15T01:50:22Z.

- [#998](https://github.com/markitics/laurelharned/issues/998) Add confirmed live schedule update wrapper for agents - Agents and developers; Admin.
  Why Parent 800 has shipped live status preview/write and live schedule preview, but the schedule path is still contractonly. Artists should be able to ask an agent to apply a pr...
  GitHub updated: 2026-05-14T23:59:53Z.

- [#988](https://github.com/markitics/laurelharned/issues/988) Add shared community channel membership access contract - Website and shared platform; Admin.
  Parent/parity context: 921 defined alwayson community channels, and 922/923 need iOS/Android management UI to show membership/entitlement access per channel. That access model i...
  GitHub updated: 2026-05-14T22:24:27Z.

- [#987](https://github.com/markitics/laurelharned/issues/987) Add shared community channel rename and archive contract - Website and shared platform; Admin.
  Parent/parity context: 921 clarified the alwayson communitychannel model, while 922 and 923 still need native iOS/Android management parity. Both native issues are blocked on a ...
  GitHub updated: 2026-05-14T20:43:06Z.

- [#983](https://github.com/markitics/laurelharned/issues/983) Add Android always-on community channel readiness/create panel - Android app; 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 ...
  GitHub updated: 2026-05-23T23:48:13Z.

- [#979](https://github.com/markitics/laurelharned/issues/979) Correct live support agent attribution readiness after #968 - Agents and developers; Commerce.
  Context PR 976 shipped the 971 agentreadable live support preview while 968 was still treated as a blocker. 968 has now shipped liveeventattributed support metadata, purchase ro...
  GitHub updated: 2026-05-14T18:23:42Z.

- [#971](https://github.com/markitics/laurelharned/issues/971) Expose agent-readable live donation readiness and purchase preview - Agents and developers; Commerce.
  Parent: 928 Context 928 originally covered web, iOS, and Android live donations. Mark's parity direction also requires agentic surfaces so assistants can answer what live suppor...
  GitHub updated: 2026-05-14T18:18:08Z.

- [#970](https://github.com/markitics/laurelharned/issues/970) Add iOS live-room support donation entry point with payment-policy gating - iOS mobile app; Commerce.
  Parent: 928 Related: 700, 709 Context 928 asks for live donations across web, iOS, and Android while respecting App Store payment policy. 700 resolved the Stripeonly posture and...
  GitHub updated: 2026-05-14T18:25:03Z.

- [#968](https://github.com/markitics/laurelharned/issues/968) Add live donation attribution and artist totals - Agents and developers; Admin.
  Parent: 928 Context 928 requires artist/admin visibility into donation totals for a live stream. Existing support checkout records generic support/donation purchases, but livero...
  GitHub updated: 2026-05-14T17:26:32Z.

- [#967](https://github.com/markitics/laurelharned/issues/967) Add web live-room one-time support donation entry point - Website and shared platform; Commerce.
  Parent: 928 Context 928 asks for live donations across web, iOS, Android, and admin reporting. Android child 966 covers the native Android Live tab slice. The web can ship a sma...
  GitHub updated: 2026-05-14T18:26:12Z.

- [#966](https://github.com/markitics/laurelharned/issues/966) Add Android Live tab one-time support donation entry point - Android app; 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...
  GitHub updated: 2026-05-14T16:31:59Z.

- [#960](https://github.com/markitics/laurelharned/issues/960) Add live schedule preview agent tool - Agents and developers; Admin.
  Why 800 has shipped live status preview and confirmed live status writes, but agents still cannot safely preview a new live schedule or reschedule/edit payload before a creator ...
  GitHub updated: 2026-05-14T15:55:28Z.

- [#959](https://github.com/markitics/laurelharned/issues/959) Add Android native creator-commerce readiness panel - Android app; 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...
  GitHub updated: 2026-05-14T15:11:50Z.

- [#957](https://github.com/markitics/laurelharned/issues/957) Add native iOS community channel management readiness panel - iOS mobile app; Admin.
  Child slice of 922 and 921.\\n\\nGoal: give Laurel/admin a native iOS Community Channels panel that reflects the current alwayson channel backend honestly, without faking unsuppor...
  GitHub updated: 2026-05-23T23:48:14Z.

- [#954](https://github.com/markitics/laurelharned/issues/954) Hide listener purchase prompts for artist accounts on Android - Android app; 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...
  GitHub updated: 2026-05-14T14:28:54Z.

- [#946](https://github.com/markitics/laurelharned/issues/946) Hide listener purchase prompts for artist accounts on iOS - iOS mobile app; Admin.
  iOS child slice for 924.\\n\\nAcceptance criteria:\\n When bootstrap includes artistAdmin, the iOS Account panel uses artist/admin framing instead of listener membership, purchase ...
  GitHub updated: 2026-05-23T23:48:16Z.

- [#945](https://github.com/markitics/laurelharned/issues/945) Add confirmed creator service price/policy write wrapper for agents - Agents and developers; Admin.
  Parent: 799 PR 906 shipped the nonmutating creator service price/policy preview surface. The next executable slice is a confirmed write wrapper that can safely turn a preview in...
  GitHub updated: 2026-05-14T14:39:00Z.

- [#939](https://github.com/markitics/laurelharned/issues/939) Remove legacy dark Now Playing homepage player - Website and shared platform; Media.
  Mark sees an old darkbackground Now Playing player low on the homepage. The sticky player is now the canonical playback surface, so the legacy embedded player should likely be r...
  GitHub updated: 2026-05-23T23:48:20Z.

- [#938](https://github.com/markitics/laurelharned/issues/938) Decide and clean up signed-in Get Laurel updates homepage CTA - Website and shared platform; Auth.
  Mark questioned whether 'Get Laurel updates' belongs on the homepage when the visitor is already signed in.\\n\\nAcceptance criteria:\\n Audit homepage newsletter/update CTA for si...
  GitHub updated: 2026-05-23T23:48:22Z.

- [#937](https://github.com/markitics/laurelharned/issues/937) Hide Cmd-K and Ctrl-K shortcut hints on mobile - Website and shared platform; Design.
  Mobile users should not see CmdK or CtrlK shortcut hints because they are irrelevant on phone layouts.\\n\\nAcceptance criteria:\\n Keyboard shortcut hints are hidden on mobile/tou...
  GitHub updated: 2026-05-23T23:48:24Z.

- [#936](https://github.com/markitics/laurelharned/issues/936) Remove Alerts from hamburger menu and keep alerts under Account - Website and shared platform; Auth.
  Mark wants 'Alerts' removed from the hamburger menu because alerts/notifications belong as a suboption inside Account.\\n\\nAcceptance criteria:\\n Mobile hamburger menu no longer ...
  GitHub updated: 2026-05-23T23:48:25Z.

- [#935](https://github.com/markitics/laurelharned/issues/935) Keep roadmap off laurelharned.com and scoped to fanful.net - Website and shared platform; Platform.
  Mark clarified that the roadmap is for fanful.net only, not laurelharned.com.\\n\\nAcceptance criteria:\\n laurelharned.com does not expose the public roadmap as a Laurel artistsit...
  GitHub updated: 2026-05-14T15:05:42Z.

- [#934](https://github.com/markitics/laurelharned/issues/934) Dismiss mobile hamburger menu on outside click, scroll, or page interaction - Website and shared platform; Design.
  In Safari/mobile, the hamburger/dropdown menu does not autodismiss when Mark clicks outside it or scrolls/interacts with the page.\\n\\nAcceptance criteria:\\n Menu closes on outsi...
  GitHub updated: 2026-05-23T23:48:27Z.

- [#933](https://github.com/markitics/laurelharned/issues/933) Hide signed-in homepage join/sign-in CTAs on Laurel site - Website and shared platform; Auth.
  On the Laurel homepage in Safari/mobile, Mark can still see a lowerpage 'new listener? join / sign in' CTA even when signed in and account is available in the topright navigatio...
  GitHub updated: 2026-05-23T23:48:28Z.

- [#930](https://github.com/markitics/laurelharned/issues/930) Audit duplicate login and sign-up CTAs in native apps - Website and shared platform; Auth.
  Mark noticed possible duplicate log in / sign up buttons. Native apps should have one clear auth path per context, and every visible auth CTA should work.\\n\\nAcceptance criteria...
  GitHub updated: 2026-05-14T12:10:11Z.

- [#929](https://github.com/markitics/laurelharned/issues/929) Label placeholder admin metrics or replace them with live values - Website and shared platform; Admin.
  Admin/native dashboards currently risk showing numbers that are unclear as real vs fake/demo. Mark wants real numbers where available, such as 0 subscribers or /bin/zsh.00 sales...
  GitHub updated: 2026-05-14T13:16:54Z.

- [#928](https://github.com/markitics/laurelharned/issues/928) Enable live donations during live streams - Website and shared platform; Admin.
  During a live stream, listeners should be able to donate/tip in a way that works consistently across web, iOS, and Android while respecting App Store payment policy.\\n\\nAcceptan...
  GitHub updated: 2026-05-14T19:06:38Z.

- [#927](https://github.com/markitics/laurelharned/issues/927) Simplify native Go Live Now for artist accounts - Website and shared platform; Admin.
  When Laurel/admin wants to start a live stream from iOS or Android, the app should offer a simple Go Live Now flow instead of asking for technical stream URL details.\\n\\nAccepta...
  GitHub updated: 2026-05-14T13:38:15Z.

- [#924](https://github.com/markitics/laurelharned/issues/924) Hide listener purchase prompts for artist accounts on native apps - Website and shared platform; Admin.
  When Laurel/admin is logged into iOS or Android, the app should not show listener purchase/subscribe CTAs. The artist is not a buyer in her own app context.\\n\\nAcceptance criter...
  GitHub updated: 2026-05-14T14:29:13Z.

- [#923](https://github.com/markitics/laurelharned/issues/923) Add native Android artist community channel management - Android app; 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...
  GitHub updated: 2026-05-15T13:27:45Z.

- [#922](https://github.com/markitics/laurelharned/issues/922) Add native iOS artist community channel management - iOS mobile app; Admin.
  Artists logged into the iOS app should be able to create, rename, and configure the artist community text channels defined by the shared channel contract.\\n\\nAcceptance criteria...
  GitHub updated: 2026-05-15T13:27:42Z.

- [#921](https://github.com/markitics/laurelharned/issues/921) Separate always-on community channels from live-stream chat - Website and shared platform; Live.
  Mark clarified that 507 shipped the foundation but the product contract needs to clearly separate two concepts:\\n\\n1. Alwayson 24/7 community text channels, Slackstyle, such as ...
  GitHub updated: 2026-05-23T23:48:30Z.

- [#920](https://github.com/markitics/laurelharned/issues/920) Add confirmed live status write wrapper for agents - Agents and developers; Admin.
  Parent: 800 PR 912 shipped the nonmutating live status preview action for agents. The next executable slice is the confirmed write wrapper that can safely turn a preview into a ...
  GitHub updated: 2026-05-14T14:43:16Z.

- [#915](https://github.com/markitics/laurelharned/issues/915) Use case: partiful alternative - Agents and developers; Platform.
  Add a user persona: events (paid tickets like eventbrite or Luna)
  GitHub updated: 2026-05-15T07:49:58Z.

- [#905](https://github.com/markitics/laurelharned/issues/905) Format Android live-room start dates for listeners - Android app; 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...
  GitHub updated: 2026-05-14T07:03:33Z.

- [#902](https://github.com/markitics/laurelharned/issues/902) Smoke-test production embedded-room RealtimeKit A/V in two browsers - Website and shared platform; Admin.
  Goal Prove the production embeddedroom media path with real RealtimeKit credentials, not just mocked local journeys or Durable Object socket smoke tests. Scope Create or reuse a...
  GitHub updated: 2026-05-14T06:37:32Z.

- [#895](https://github.com/markitics/laurelharned/issues/895) Define agent display-name update contract - Agents and developers; Auth.
  Parent Part of 873. Depends on the shared displayname update route from the web/API child issue. Scope Decide and expose the agentfacing listener profile update contract. If age...
  GitHub updated: 2026-05-23T23:48:33Z.

- [#894](https://github.com/markitics/laurelharned/issues/894) Add iOS native display-name editor - iOS mobile app; Auth.
  Parent Part of 873. Depends on the shared displayname update route from the web/API child issue. Scope Add the matching native iOS Account/Profile displayname editor after the s...
  GitHub updated: 2026-05-23T23:48:35Z.

- [#893](https://github.com/markitics/laurelharned/issues/893) Add Android native display-name editor - Android app; 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...
  GitHub updated: 2026-05-14T07:35:18Z.

- [#892](https://github.com/markitics/laurelharned/issues/892) Add shared listener display-name update contract - Website and shared platform; Auth.
  Parent Part of 873. Scope Add the shared signedin listener displayname update contract that native clients can use without depending on Better Auth internals. Add a server route...
  GitHub updated: 2026-05-14T06:04:20Z.

- [#879](https://github.com/markitics/laurelharned/issues/879) Restore production magic-link sign-in for native smoke accounts - Website and shared platform; Auth.
  Summary Manual native crossdevice smoke is blocked because the production magiclink signin endpoint is failing. Android can reach the network and the account form is interactive...
  GitHub updated: 2026-05-14T10:01:03Z.

- [#873](https://github.com/markitics/laurelharned/issues/873) Add editable listener profile and display name - Website and shared platform; Auth.
  Context Mark asked for an editprofile path so listeners can change their display name after account creation. This also surfaced during native chat testing because message attri...
  GitHub updated: 2026-05-14T08:19:25Z.

- [#868](https://github.com/markitics/laurelharned/issues/868) Add public Fanful agent work log - Agents and developers; Ops.
  Goal Add fanful.net/worklog as a public work diary for humans and agents, with instructions at the top and D1backed agent worklog entries below. Scope Create a public /worklog p...
  GitHub updated: 2026-05-14T02:19:21Z.

- [#865](https://github.com/markitics/laurelharned/issues/865) Add filtering and search to the Fanful competitor matrix - Website and shared platform; Platform.
  Context PR 426 shipped the first static Fanful competitor matrix at /fanful/competitors and documented that filters/search can come later if the data keeps growing. Goal Make th...
  GitHub updated: 2026-05-14T22:32:39Z.

- [#861](https://github.com/markitics/laurelharned/issues/861) Add Android embedded-room calendar export action - Android app; 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...
  GitHub updated: 2026-05-14T04:33:13Z.

- [#849](https://github.com/markitics/laurelharned/issues/849) Consolidate Fanful marketing checkpoint PR stack - Agents and developers; Platform.
  Context During travel/offline cleanup, several partial Fanful marketing and agentsupport branches were preserved as draft PRs so local work would not remain stranded on one lapt...
  GitHub updated: 2026-05-14T13:39:42Z.

- [#848](https://github.com/markitics/laurelharned/issues/848) Add calendar invite export for embedded rooms - Website and shared platform; Live.
  Parent: 505 Related room slices: 523, 524, 839, 844 Production credential blocker: 650 Goal Let a listener, student, or host add a firstparty embedded room to their calendar wit...
  GitHub updated: 2026-05-14T04:24:21Z.

- [#844](https://github.com/markitics/laurelharned/issues/844) Add native embedded-room index for invited rooms - Website and shared platform; Live.
  Motivation Issue 505 needs iOS and Android to treat embedded rooms as a native platform feature, not only as a web URL handed out by email. The current native contract can read ...
  GitHub updated: 2026-05-14T02:21:21Z.

- [#839](https://github.com/markitics/laurelharned/issues/839) Attach lesson bookings to first-party embedded rooms - Website and shared platform; Admin.
  Motivation Issue 505 needs the first paid lesson/coaching path to stop treating Zoom as the default handoff. The embedded room layer already supports sourceType: lessonbooking, ...
  GitHub updated: 2026-05-14T02:21:09Z.

- [#830](https://github.com/markitics/laurelharned/issues/830) Create docs.fanful.net developer docs for humans and agents - Agents and developers; Platform.
  Why Mark asked for docs.fanful.net to be like docs.stripe.com, targeting both AI agents and human developers. This should become the developerfacing entrypoint for Fanful's agen...
  GitHub updated: 2026-05-14T01:38:28Z.

- [#829](https://github.com/markitics/laurelharned/issues/829) Fix fanful.net roadmap branding and navigation - Agents and developers; Web.
  Context Mark noticed fanful.net/roadmap still shows Laureloriented navigation/branding. Fanful roadmap pages should not feel like Laurel's artist website when served on fanful.n...
  GitHub updated: 2026-05-14T13:28:58Z.

- [#828](https://github.com/markitics/laurelharned/issues/828) Add Fanful developers and agents hub - Agents and developers; Web.
  Context Mark wants a Developers and agents topnav category that summarizes the Fanful MCP server, ChatGPT app direction, agentreadable pages, and automation posture. Scope Build...
  GitHub updated: 2026-05-13T21:02:10Z.

- [#827](https://github.com/markitics/laurelharned/issues/827) Build Fanful target-user pages - Agents and developers; Platform.
  Context Mark wants specific Fanful pages for target user types under /users, with the option to move some to /blog later. Scope Create the top 10 targetuser pages: /users/musici...
  GitHub updated: 2026-05-14T05:14:38Z.

- [#826](https://github.com/markitics/laurelharned/issues/826) Build Who uses Fanful landing page - Agents and developers; Platform.
  Context Mark wants Fanful's version of Stripe Solutions: "Who uses Fanful?" for use cases by creator/professional type. Scope Build /users as the landing page for Fanful target ...
  GitHub updated: 2026-05-14T04:33:24Z.

- [#825](https://github.com/markitics/laurelharned/issues/825) Refine Fanful features overview - Agents and developers; Platform.
  Context The existing /features page needs to become the overall Fanful product overview that the navbar can link to. Scope Refine /features as an overview of Fanful products/fea...
  GitHub updated: 2026-05-14T11:54:38Z.

- [#824](https://github.com/markitics/laurelharned/issues/824) Build Fanful feature detail pages - Agents and developers; Platform.
  Context Mark wants productspecific Fanful feature pages behind the top navbar. Scope Create individual feature pages for major Fanful product areas, starting with: /features/liv...
  GitHub updated: 2026-05-14T09:53:43Z.

- [#823](https://github.com/markitics/laurelharned/issues/823) Add sticky Fanful top navigation - Agents and developers; Platform.
  Context Mark wants fanful.net to have a sticky top navigation inspired by Stripe's toplevel categories, adjusted for Fanful. Scope Add a sticky Fanful navbar to fanful.net marke...
  GitHub updated: 2026-05-14T08:02:52Z.

- [#820](https://github.com/markitics/laurelharned/issues/820) Add Fanful comparison links to competitor source notes - Agents and developers; Web.
  Context Mark asked that every individual company listed under /compare/all "Platforms checked / Source notes" keep its existing public source links and also gain an internal Com...
  GitHub updated: 2026-05-14T06:05:28Z.

- [#819](https://github.com/markitics/laurelharned/issues/819) Add agent grant management and revocation surface - Agents and developers; Auth.
  Why Fanful users need a humanreadable place to inspect and revoke agent access after approving an MCP/CLI/ChatGPT/Codex/Claude client. That should be separate from the codeexcha...
  GitHub updated: 2026-05-13T22:11:03Z.

- [#818](https://github.com/markitics/laurelharned/issues/818) Build agent authorization approval and code exchange endpoints - Agents and developers; Auth.
  Why 816 needs a concrete first executable slice for firstparty agent authorization. This issue owns the signedin approval and onetime code exchange path, while keeping the userf...
  GitHub updated: 2026-05-13T21:51:04Z.

- [#816](https://github.com/markitics/laurelharned/issues/816) Build first-party agent authorization and token exchange - Agents and developers; Auth.
  Why 810 selects scoped delegated grants as the Fanful agent authorization model, 811 owns the durable grant/token state, and 812 owns resolving scoped principals in /mcp and /ap...
  GitHub updated: 2026-05-13T22:06:14Z.

- [#812](https://github.com/markitics/laurelharned/issues/812) Resolve scoped agent principals in MCP and agent manifests - Agents and developers; Auth.
  Why The current public MCP endpoint and agent manifests are guest/readsafe, while admin reads are local environmentgated. After 810 and 811, the MCP and HTTP manifest layers nee...
  GitHub updated: 2026-05-13T21:28:56Z.

- [#811](https://github.com/markitics/laurelharned/issues/811) Add scoped agent authorization grants and revocation state - Agents and developers; Auth.
  Why After 810 defines the Fanful agent authorization model, Fanful needs durable state for scoped agent grants so private MCP/ChatGPT/CLI reads can be authorized, expired, and r...
  GitHub updated: 2026-05-14T01:38:28Z.

- [#810](https://github.com/markitics/laurelharned/issues/810) Define the Fanful agent authorization model - Agents and developers; Auth.
  Why 809 needs a concrete auth design before implementation starts. Public MCP and public manifests already work, but private listener/creator access needs a portable authorizati...
  GitHub updated: 2026-05-14T01:38:28Z.

- [#809](https://github.com/markitics/laurelharned/issues/809) Map first-party auth sessions into MCP and ChatGPT agent clients - Agents and developers; Auth.
  Why Fanful now has public MCP discovery and safe public/read manifests, but private creator/listener reads still rely on firstparty web sessions or local environmentgated admin ...
  GitHub updated: 2026-05-13T22:06:33Z.

- [#808](https://github.com/markitics/laurelharned/issues/808) Expose fan profile and notification preferences to agents - Agents and developers; Auth.
  Why For listeners/fans to use Fanful entirely through agent clients, they need safe access to ordinary account workflows too: inspect profile/contact state, understand notificat...
  GitHub updated: 2026-05-14T05:15:49Z.

- [#807](https://github.com/markitics/laurelharned/issues/807) Expose fan live-room and Listen Along readiness to agents - Agents and developers; Media.
  Why Fan/listener agent parity needs more than creator golive controls. A listener should be able to ask an agent whether a live room, webinar, Listen Along session, or gated eve...
  GitHub updated: 2026-05-14T04:05:21Z.

- [#805](https://github.com/markitics/laurelharned/issues/805) Expose fan membership and entitlement status to agents - Agents and developers; Auth.
  Why A listener/fan should be able to ask an agent what memberships, tiers, purchases, credits, or gated experiences they currently have access to. 777 exposes the tier catalog, ...
  GitHub updated: 2026-05-14T03:59:08Z.

- [#801](https://github.com/markitics/laurelharned/issues/801) Track listener and fan agent parity beyond the idea board - Agents and developers; Auth.
  Why The first agent work exposed public manifests and the member idea board, but Mark's AX goal is broader: listeners/fans should be able to interact with Fanful through agent c...
  GitHub updated: 2026-05-14T19:50:50Z.

- [#800](https://github.com/markitics/laurelharned/issues/800) Expose live scheduling and go-live agent actions - Agents and developers; Admin.
  Why Mark's AX goal explicitly calls out artists scheduling a golive through agents. Embedded rooms and live/community work already exist as platform issues, but agent scheduling...
  GitHub updated: 2026-05-22T03:59:21Z.

- [#799](https://github.com/markitics/laurelharned/issues/799) Expose creator service price and policy agent actions - Agents and developers; Admin.
  Why Mark's AX goal explicitly calls out creators using agents to do real work, including "amend price of their coaching." The shared write envelope in 786 makes this safer, but ...
  GitHub updated: 2026-05-22T03:59:16Z.

- [#798](https://github.com/markitics/laurelharned/issues/798) Expose Fanful payment-routing readiness status - Agents and developers; Admin.
  Motivation Fanful now advertises a 2% platform fee and has a Stripe Connect feerouting plan, but admin and agent surfaces should clearly show that live applicationfee routing is...
  GitHub updated: 2026-05-14T19:18:54Z.

- [#795](https://github.com/markitics/laurelharned/issues/795) Add Cloudflare cost-unit notes to Fanful pricing - Agents and developers; Platform.
  Motivation Fanful pricing now lists plan limits based on what can create Cloudflare cost, but the page should be more explicit about the actual metered units: email sends, R2 st...
  GitHub updated: 2026-05-14T18:16:47Z.

- [#792](https://github.com/markitics/laurelharned/issues/792) Document Stripe Connect fee-routing plan for Fanful - Agents and developers; Commerce.
  Motivation Fanful's public pricing now advertises a 2% platform fee on fan payments, but the production checkout code currently records that policy in metadata rather than routi...
  GitHub updated: 2026-05-14T17:18:09Z.

- [#788](https://github.com/markitics/laurelharned/issues/788) Add agent-readable roadmap markdown mirror - Agents and developers; Web.
  Motivation Mark asked to be able to check progress on fanful.net/roadmap or GitHub issues while Codex keeps working. The browser roadmap exists, but the Fanful marketing archite...
  GitHub updated: 2026-05-14T15:56:14Z.

- [#784](https://github.com/markitics/laurelharned/issues/784) Fix artist-host pricing markdown alias - Agents and developers; Platform.
  Motivation Laurel's Fanful artist host uses /tiers for the fanfacing paidaccess table, with /pricing as a friendly alias. The browser alias exists, but the markdown alias does n...
  GitHub updated: 2026-05-14T16:59:58Z.

- [#782](https://github.com/markitics/laurelharned/issues/782) Wire Laurel fan membership tiers to Stripe Prices - Agents and developers; Commerce.
  Motivation Laurel's fanfacing membership tiers are seeded in D1 and checkout can create subscription sessions today, but the seeded tiers still have stripepriceid = NULL. That m...
  GitHub updated: 2026-05-14T20:03:55Z.

- [#777](https://github.com/markitics/laurelharned/issues/777) Expose fan membership tier catalog across admin, web, and agents - Agents and developers; Admin.
  Motivation The Fanful pricing/admin work now distinguishes artist platform plans from fanfacing membership tiers. Laurel's fan tiers already exist in D1 and on /tiers, but the t...
  GitHub updated: 2026-05-14T21:40:37Z.

- [#774](https://github.com/markitics/laurelharned/issues/774) Persist Fanful artist plan assignments in D1 - Agents and developers; Admin.
  Motivation Fanful admin entitlements are visible now, but the artist platformplan assignment is still hardcoded in application code. The next backend/platform step is to make th...
  GitHub updated: 2026-05-13T14:10:15Z.

- [#768](https://github.com/markitics/laurelharned/issues/768) Record Fanful platform fee policy on fan checkouts - Agents and developers; Commerce.
  Motivation Fanful now advertises a 2% platform fee on fan payments, but checkout metadata should carry that policy consistently so webhooks, admin records, analytics, future age...
  GitHub updated: 2026-05-13T13:37:59Z.

- [#754](https://github.com/markitics/laurelharned/issues/754) Expose Fanful MCP over HTTPS for agent clients - Agents and developers; Auth.
  Why Fanful now has a local stdio MCP server and public agentreadable manifests, but ChatGPT Apps SDK connectors and many hosted agent clients need a reachable HTTPS MCP endpoint...
  GitHub updated: 2026-05-13T16:11:57Z.

- [#741](https://github.com/markitics/laurelharned/issues/741) Set up Laurel Fanful subdomain and fan-facing tiers page - Agents and developers; Commerce.
  Motivation Laurel should be the concrete Fanful case study tenant: laurel.fanful.net should behave like the artist brought an existing site to Fanful, and her fans should have a...
  GitHub updated: 2026-05-13T12:12:02Z.

- [#740](https://github.com/markitics/laurelharned/issues/740) Show Fanful plan entitlements in publisher admin - Agents and developers; Admin.
  Motivation Artists/publishers need to understand exactly what their Fanful plan unlocks inside their admin panel, especially as pricing limits and support tiers become real. Sco...
  GitHub updated: 2026-05-13T11:27:53Z.

- [#739](https://github.com/markitics/laurelharned/issues/739) Create Fanful artist pricing tiers and Stripe products - Agents and developers; Commerce.
  Motivation Fanful needs simple annual artist pricing that reflects real Cloudflare cost drivers and sets expectations before any artist upgrades. Proposed tiers Tester: $2/year,...
  GitHub updated: 2026-05-13T09:33:09Z.

- [#738](https://github.com/markitics/laurelharned/issues/738) Align Fanful.net branding, navigation, and features surface - Agents and developers; Platform.
  Motivation Fanful is the current platform name and fanful.net should read as the platform home, not a MusicWebs salvage route or hidden app path. Scope Remove new/publicfacing M...
  GitHub updated: 2026-05-13T10:32:53Z.

- [#733](https://github.com/markitics/laurelharned/issues/733) Expose Cloudflare Registrar domain purchase actions to agents - Agents and developers; Commerce.
  Goal Expose the domainpurchase flow to future MCP, ChatGPT app, or CLI agents through a permissioned serverside contract rather than browser automation over the web checkout. Sc...
  GitHub updated: 2026-05-14T19:37:29Z.

- [#732](https://github.com/markitics/laurelharned/issues/732) Add gated Cloudflare Registrar final registration execution - Website and shared platform; Commerce.
  Goal Turn a paid artistdomainregistrationintents row from issue 680 into an actual Cloudflare Registrar registration only after a fresh quote check, exactdomain confirmation, pa...
  GitHub updated: 2026-05-13T10:32:42Z.

- [#731](https://github.com/markitics/laurelharned/issues/731) Add Android domain purchase status and checkout handoff - Android app; 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...
  GitHub updated: 2026-05-13T13:37:31Z.

- [#730](https://github.com/markitics/laurelharned/issues/730) Add iOS domain purchase status and checkout handoff - iOS mobile app; Commerce.
  Goal Bring Cloudflare Registrar domain purchase parity to the iOS admin surface after the platform/web contract in 680 is stable. Scope Decode and display domain search quote, p...
  GitHub updated: 2026-05-15T15:27:20Z.

- [#729](https://github.com/markitics/laurelharned/issues/729) Track Cloudflare Registrar domain purchase parity across web, iOS, Android, and agents - Website and shared platform; Commerce.
  Why 680 is a meaty Cloudflare Registrar purchase feature with irreversible billing/registration boundaries and four product surfaces. Track parity as a linked issue family so ea...
  GitHub updated: 2026-05-15T15:28:01Z.

- [#721](https://github.com/markitics/laurelharned/issues/721) Add Fanful migration guide pages for top alternatives - Agents and developers; Web.
  Motivation The Fanful comparison pages now name migration/importer intent, but highintent searchers and AI agents need concrete switching guidance for each major source platform...
  GitHub updated: 2026-05-13T08:46:47Z.

- [#709](https://github.com/markitics/laurelharned/issues/709) Gate iOS native checkout entry points for App Review builds - iOS mobile app; Commerce.
  Context Issue 700 documents the paymentpolicy posture for Stripeonly native commerce before external TestFlight or App Store review. The policy audit found that iOS currently ha...
  GitHub updated: 2026-05-13T07:32:23Z.

- [#704](https://github.com/markitics/laurelharned/issues/704) Add audited live-event action log and dedicated go-live route - Agents and developers; Agents.
  Record live-event admin and automation writes with redacted before/after summaries, and give agents a confirmed status-only route for go-live, end, and cancel transitions.
  Shipped: Live-event admin audit.
  GitHub updated: 2026-05-13T09:52:12Z.
  PRs: [#743](https://github.com/markitics/laurelharned/pull/743).

- [#700](https://github.com/markitics/laurelharned/issues/700) Resolve iOS App Store payment policy for Stripe-only native commerce - iOS mobile app; Commerce.
  Context\\n\\nMark's direction is Stripeonly for support/shop/lessons and no Apple inapp purchase. Before an App Store or external TestFlight review build, iOS needs an explicit po...
  GitHub updated: 2026-05-13T07:13:20Z.

- [#699](https://github.com/markitics/laurelharned/issues/699) Publish public privacy and support URLs for native store submissions - Website and shared platform; Platform.
  Context\\n\\nApple App Store Connect and Google Play both need stable public privacy/support URLs before broader TestFlight/Play testing and production submission. The current iOS...
  GitHub updated: 2026-05-13T08:13:07Z.

- [#694](https://github.com/markitics/laurelharned/issues/694) Capture Fanful marketing screenshots and production smoke evidence - Website and shared platform; Qa.
  Context The cloud handoff for 690 could not capture Playwright screenshots because the container lacked browser system dependencies. Local or another capable Codex environment s...
  GitHub updated: 2026-05-13T06:05:56Z.

- [#693](https://github.com/markitics/laurelharned/issues/693) Expand Fanful thematic guide SEO and schema - Agents and developers; Design.
  Context 690 preserves initial thematic guide routes for 2026 ecommerce, coaching, and community platform comparisons. The handoff calls out richer guide content and SEO/schema a...
  GitHub updated: 2026-05-13T06:05:56Z.

- [#692](https://github.com/markitics/laurelharned/issues/692) Deepen Fanful alternative pages with proof and migration content - Agents and developers; Platform.
  Context 690 preserves scaffolded onetoone alternative pages for Shopify, Substack, Bandcamp, Patreon, Kajabi, Circle, and Linktree. The handoff explicitly says the current copy ...
  GitHub updated: 2026-05-13T06:05:56Z.

- [#691](https://github.com/markitics/laurelharned/issues/691) Deploy and verify fanful.net Worker routing - Website and shared platform; Platform.
  Context 690 preserves local code for serving Fanful marketing pages from the existing Worker. Production deployment and domain smoke evidence are still separate because the clou...
  GitHub updated: 2026-05-13T06:05:56Z.

- [#690](https://github.com/markitics/laurelharned/issues/690) Preserve Fanful.net marketing and comparison architecture - Agents and developers; Platform.
  Context A cloud Codex session created a local Fanful.net marketing/comparison surface but could not use GitHub or Cloudflare from that environment. This local branch preserves t...
  GitHub updated: 2026-05-13T07:00:17Z.

- [#689](https://github.com/markitics/laurelharned/issues/689) Add durable screenshots and production smoke evidence for Fanful marketing pages - Website and shared platform; Qa.
  Goal Capture durable screenshots and production smoke evidence for the Fanful marketing/comparison surfaces so PRs and postmerge notices are reviewable after branches are delete...
  GitHub updated: 2026-05-13T07:10:28Z.

- [#688](https://github.com/markitics/laurelharned/issues/688) Expand Fanful thematic 2026 comparison guides - Agents and developers; Platform.
  Goal Turn the thematic /blog/best...platforms2026 pages into more useful comparison guides for highintent searches. Initial routes /blog/bestecommerceplatforms2026 /blog/bestcoa...
  GitHub updated: 2026-05-13T08:06:40Z.

- [#687](https://github.com/markitics/laurelharned/issues/687) Deepen Fanful 1:1 alternative comparison pages - Agents and developers; Platform.
  Goal Improve the /compare/COMPANYalternative pages beyond scaffold copy so each page has stronger competitorspecific proof, transparent tradeoffs, source notes, and migration gu...
  GitHub updated: 2026-05-13T07:31:46Z.

- [#686](https://github.com/markitics/laurelharned/issues/686) Deploy and verify fanful.net Cloudflare routing - Website and shared platform; Ops.
  Goal Deploy the Fanful.net routing changes and verify production behavior on the apex and www hosts. Acceptance checks https://fanful.net/ serves the Fanful marketing page. http...
  GitHub updated: 2026-05-13T07:10:07Z.

- [#685](https://github.com/markitics/laurelharned/issues/685) Fanful.net marketing and comparison architecture - Agents and developers; Platform.
  Goal Move Fanful marketing and comparison surfaces onto fanful.net with a Shopifystyle comparison architecture, agentreadable markdown mirrors, and a durable path for iterative ...
  GitHub updated: 2026-05-13T06:03:43Z.

- [#680](https://github.com/markitics/laurelharned/issues/680) Build Cloudflare Registrar domain purchase flow - Website and shared platform; Commerce.
  Goal Let a Fanful artist buy an available domain through Fanful using Cloudflare Registrar, charge exactly Cloudflare's cost with no markup, and then let Fanful manage the DNS s...
  GitHub updated: 2026-05-13T08:44:27Z.

- [#678](https://github.com/markitics/laurelharned/issues/678) Build Fanful subdomain and BYO domain setup - Website and shared platform; Auth.
  Goal Let Fanful artists claim a branded web address before we sell or transfer domains for them. This is the first domain issue because the DNS model affects website routing, cr...
  GitHub updated: 2026-05-13T07:27:59Z.

- [#677](https://github.com/markitics/laurelharned/issues/677) Add native Android idea-board admin curation controls - Android app; 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...
  GitHub updated: 2026-05-13T08:16:28Z.

- [#674](https://github.com/markitics/laurelharned/issues/674) Build Fanful ChatGPT app on top of the MCP server - Agents and developers; Platform.
  Why Mark asked to research and build a ChatGPT app if relevant. The current direction from the project docs is MCP first, ChatGPT app second: keep the MCP server as the portable...
  GitHub updated: 2026-05-13T10:57:00Z.

- [#673](https://github.com/markitics/laurelharned/issues/673) Expose listener and fan experiences to agents - Agents and developers; Media.
  Why Mark's Agent Experience goal says listener/fan experiences should be doable through Claude Code, ChatGPT, Codex, or another agent client. A fan should be able to ask what th...
  GitHub updated: 2026-05-13T09:08:16Z.

- [#672](https://github.com/markitics/laurelharned/issues/672) Expose live scheduling and go-live controls to agents - Agents and developers; Agents.
  Expose live room scheduling, go-live readiness, event-linked community channels, live-note moderation, and embedded-room stage controls through the agent manifest and MCP surface.
  Shipped: Agent live controls.
  GitHub updated: 2026-05-13T07:36:08Z.
  PRs: [#705](https://github.com/markitics/laurelharned/pull/705).

- [#671](https://github.com/markitics/laurelharned/issues/671) Expose creator coaching and commerce actions to agents - Agents and developers; Commerce.
  Why Mark's Agent Experience goal explicitly includes creator workflows such as changing coaching prices and managing commercial policy from Claude Code, ChatGPT, Codex, or anoth...
  GitHub updated: 2026-05-13T08:03:32Z.

- [#663](https://github.com/markitics/laurelharned/issues/663) Render creator-approved chat automation attribution on Android - Android app; 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...
  GitHub updated: 2026-05-13T03:33:33Z.

- [#662](https://github.com/markitics/laurelharned/issues/662) Render creator-approved chat automation attribution on iOS - iOS mobile app; Live.
  Context 629 / PR 660 added public creatorapproved community chat automation replies with durable audit rows and listenervisible attribution. iOS already has base community chat ...
  GitHub updated: 2026-05-13T06:04:17Z.

- [#656](https://github.com/markitics/laurelharned/issues/656) Add audited embedded-room roster and chat moderation actions - Agents and developers; Agents.
  Record embedded-room roster/stage writes and private room-chat moderation with actor attribution, redacted summaries, and executable agent-safe moderation/audit endpoints.
  GitHub updated: 2026-05-13T14:48:46Z.

- [#655](https://github.com/markitics/laurelharned/issues/655) Add Android embedded-room webinar attendee and host states - Android app; 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...
  GitHub updated: 2026-05-13T12:07:42Z.

- [#654](https://github.com/markitics/laurelharned/issues/654) Add iOS embedded-room webinar attendee and host states - iOS mobile app; Live.
  Parent: 505 Split from: 524 Related Android parity issue: 655 Related admin/agent safety issue: 656 Production credential blocker: 650 Goal Bring the iOS app into parity with th...
  GitHub updated: 2026-05-13T05:29:23Z.

- [#650](https://github.com/markitics/laurelharned/issues/650) Install production RealtimeKit credentials for embedded rooms - Website and shared platform; Live.
  Parent: 505 Followup from 523 / PR 597. Why this exists PR 597 deployed the firstparty embeddedroom RealtimeKit media path, remote D1 migration 0022embeddedroommediaparticipants...
  GitHub updated: 2026-05-14T01:14:02Z.

- [#648](https://github.com/markitics/laurelharned/issues/648) Expose community chat reactions, replies, and mentions to agents - Agents and developers; Agents.
  Expose community chat reply context, reaction toggles, and scoped mention metadata through the agent manifest and server-side tool contract.
  Shipped: Agent chat affordances.
  GitHub updated: 2026-05-13T00:32:52Z.
  PRs: [#658](https://github.com/markitics/laurelharned/pull/658).

- [#647](https://github.com/markitics/laurelharned/issues/647) Add native Android community chat reactions, replies, and mentions - Android app; 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, ...
  GitHub updated: 2026-05-13T04:20:17Z.

- [#646](https://github.com/markitics/laurelharned/issues/646) Add native iOS community chat reactions, replies, and mentions - iOS mobile app; Live.
  Context 639 is adding community chat reactions, lightweight replies, and mention parsing/rendering on the web surface. iOS already has base community chat in Live from 571, so n...
  GitHub updated: 2026-05-13T05:40:23Z.

- [#640](https://github.com/markitics/laurelharned/issues/640) Add community chat notification digests and mention routing - Agents and developers; Live.
  Route community chat digests and mentions through listener notification preferences, creator-community membership, and mute boundaries.
  Shipped: Chat notification routing.
  GitHub updated: 2026-05-12T23:49:20Z.
  PRs: [#653](https://github.com/markitics/laurelharned/pull/653).

- [#639](https://github.com/markitics/laurelharned/issues/639) Add community chat reactions, lightweight replies, and mentions - Website and shared platform; Live.
  Add low-density reactions, reply context, and scoped mention rendering for community chat without turning the Live tab into a full Discord clone.
  Shipped: Chat affordances.
  GitHub updated: 2026-05-12T22:27:36Z.
  PRs: [#649](https://github.com/markitics/laurelharned/pull/649).

- [#638](https://github.com/markitics/laurelharned/issues/638) Add configurable community chat slow mode and rate-limit controls - Website and shared platform; Live.
  Add creator-configurable slow mode and per-listener rate limits across REST and WebSocket posting, scoped to creator community and channel.
  Shipped: Community slow mode.
  GitHub updated: 2026-05-12T21:49:15Z.
  PRs: [#645](https://github.com/markitics/laurelharned/pull/645).

- [#629](https://github.com/markitics/laurelharned/issues/629) Build community chat automation reply processor - Agents and developers; Agents.
  Turn confirmed creator-approved community automation rules into visibly attributed public replies with trigger linkage, revocation, and durable audit rows.
  Shipped: Automation reply processor.
  PRs: [#660](https://github.com/markitics/laurelharned/pull/660).

- [#622](https://github.com/markitics/laurelharned/issues/622) Add executable community chat agent manifest endpoint - Agents and developers; Agents.
  Expose `GET /api/agent/community-chat` so agents can discover caller capabilities, public channel state, event-linked channels, and permissioned operation descriptors without browser automation.
  Shipped: Agent manifest endpoint.
  GitHub updated: 2026-05-12T19:09:59Z.
  PRs: [#625](https://github.com/markitics/laurelharned/pull/625).

- [#616](https://github.com/markitics/laurelharned/issues/616) Add audited community chat agent automations and admin action log - Agents and developers; Agents.
  Add durable audit rows and creator-approved automation rules before agents can perform repeated moderation, settings, channel, or public creator-speech actions.
  Shipped: Community chat audit registry.
  GitHub updated: 2026-05-12T19:56:07Z.
  PRs: [#624](https://github.com/markitics/laurelharned/pull/624).

- [#610](https://github.com/markitics/laurelharned/issues/610) Publish llms.txt and agent-readable integration docs - Agents and developers; Ops.
  Why 606 called out llms.txt and markdown docs as part of making the site agentready. Agents should be able to discover the platform's public docs and safe integration surfaces w...
  GitHub updated: 2026-05-13T07:16:11Z.

- [#609](https://github.com/markitics/laurelharned/issues/609) Ship first MusicWebs/Fanful MCP server slice - Agents and developers; Auth.
  Why 442 identified a permissioned MCP server as the canonical agent contract, and 606 called out MCP as one of the remaining agentready implementation slices. Scope Build the fi...
  GitHub updated: 2026-05-13T06:13:50Z.

- [#608](https://github.com/markitics/laurelharned/issues/608) Define agent-facing API contracts for listener and admin actions - Agents and developers; Auth.
  Why 606 split the remaining agentready checklist after 442 established agents as the fourth surface. MCP, CLI, ChatGPT app, and future agent integrations all need explicit serve...
  GitHub updated: 2026-05-13T13:11:52Z.

- [#607](https://github.com/markitics/laurelharned/issues/607) Show event-linked community channels in native iOS Live - iOS mobile app; Live.
  Why 528 connected persistent community channels to scheduled/live/ended broadcast context after 571 had already shipped the base iOS communitychat Live tab. iOS should consume t...
  GitHub updated: 2026-05-12T19:04:56Z.

- [#602](https://github.com/markitics/laurelharned/issues/602) Expose member idea board to agents - Agents and developers; Admin.
  Why 599 tracks parity for the member idea/upvoting board that shipped on web in 511. Agent parity means future MusicWebs/Fanful MCP, ChatGPT app, or CLI tools can use the board ...
  GitHub updated: 2026-05-13T14:20:53Z.

- [#601](https://github.com/markitics/laurelharned/issues/601) Add native Android member idea-board parity - Android app; 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...
  GitHub updated: 2026-05-13T06:34:25Z.

- [#600](https://github.com/markitics/laurelharned/issues/600) Add native iOS member idea-board parity - iOS mobile app; Admin.
  Why 599 tracks parity for the member idea/upvoting board that shipped on web in 511. iOS should get a native implementation rather than relying on a webonly board. Scope Add nat...
  GitHub updated: 2026-05-15T01:54:26Z.

- [#599](https://github.com/markitics/laurelharned/issues/599) Track member idea-board parity across web, iOS, Android, and agents - Website and shared platform; Admin.
  Why 511 shipped the firstparty web member idea/upvoting board. This is a meaty product feature, so parity should be tracked as a linked issue family rather than buried inside on...
  GitHub updated: 2026-05-15T17:39:19Z.

- [#573](https://github.com/markitics/laurelharned/issues/573) Expose community chat channels to agents - Agents and developers; Agents.
  Defines the first agent-safe community chat contract so MCP, ChatGPT app, CLI, and automation clients can read channel state, understand event-linked channels, and respect listener/admin/creator-speech permissions without browser automation.
  Shipped: Agent contract seed.
  GitHub updated: 2026-05-12T18:16:56Z.
  PRs: [#617](https://github.com/markitics/laurelharned/pull/617).

- [#572](https://github.com/markitics/laurelharned/issues/572) Add native Android community chat channels to Live - Android app; 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...
  GitHub updated: 2026-05-13T02:45:04Z.

- [#571](https://github.com/markitics/laurelharned/issues/571) Add native iOS community chat channels to Live - iOS mobile app; Live.
  Motivation 507 is adding firstparty community chat channels as a platform feature, not only a web /live widget. The iOS app needs the same communityscoped chat experience in the...
  GitHub updated: 2026-05-12T15:18:42Z.

- [#560](https://github.com/markitics/laurelharned/issues/560) Define multi-community listener app shell, Live tab, and presence model - Website and shared platform; Live.
  Context Mark's 20260512 crossplatform design feedback says the listener app should feel social and realtime, with a prominent Live tab, notifications, visible community presence...
  GitHub updated: 2026-05-22T04:02:32Z.

- [#552](https://github.com/markitics/laurelharned/issues/552) Track Picture-in-Picture parity across web, iOS, and Android - Website and shared platform; Media.
  Motivation PictureinPicture/background video continuity is now a parity feature family, not one platformonly issue. Android and iOS have shipped native slices, with web still tr...
  GitHub updated: 2026-05-12T13:42:18Z.

- [#529](https://github.com/markitics/laurelharned/issues/529) Add advanced community chat moderation and Discord-lite affordances - Website and shared platform; Live.
  First slice: expose creator/admin flag, hide, and restore review controls for community notes while keeping flagged/hidden notes out of public reads and realtime updates.
  Shipped: Community note review flow.
  GitHub updated: 2026-05-12T20:46:45Z.
  PRs: [#641](https://github.com/markitics/laurelharned/pull/641).

- [#528](https://github.com/markitics/laurelharned/issues/528) Connect community channels to live broadcasts - Website and shared platform; Live.
  Link scheduled/live/replay rooms to one persistent community channel so broadcasts, member webinars, and between-stream chat feel like one conversation without duplicating message history.
  Shipped: Broadcast-linked community.
  GitHub updated: 2026-05-12T17:38:45Z.
  PRs: [#605](https://github.com/markitics/laurelharned/pull/605).

- [#524](https://github.com/markitics/laurelharned/issues/524) Add paid webinar access and bring-attendee-on-stage controls - Agents and developers; Commerce.
  Add purchase/membership gates, stage role promotion, attendee moderation, and paid private stream controls on top of the embedded room contract.
  GitHub updated: 2026-05-13T01:02:32Z.

- [#523](https://github.com/markitics/laurelharned/issues/523) Wire Cloudflare realtime media engine for embedded rooms - Website and shared platform; Live.
  Attach Cloudflare Realtime or Calls media sessions to embedded rooms with token minting, WebRTC track exchange, device controls, and operational fallback states.
  GitHub updated: 2026-05-12T22:04:53Z.

- [#512](https://github.com/markitics/laurelharned/issues/512) Add unattended native UI smoke harness for Listen Along device evidence - Website and shared platform; Media.
  Context Common Design issue 448 still needs nativedevice Listen Along invite/QR/coscrub evidence. The current code is healthier than before: iOS preflight passes, the iPhone app...
  GitHub updated: 2026-05-14T10:25:02Z.

- [#511](https://github.com/markitics/laurelharned/issues/511) Build first-party member idea upvoting board - Website and shared platform; Admin.
  Scope for this issue Build a firstparty member idea board for Laurel now, shaped as the reusable MusicWebs/Fanful alternative to Canny later. The first shippable slice should le...
  GitHub updated: 2026-05-12T16:07:32Z.

- [#509](https://github.com/markitics/laurelharned/issues/509) Fix iOS queue preflight failures before Listen Along smoke - iOS mobile app; Media.
  Motivation Common Design tried to resume 448 iOS evidence on 20260512 after Xcode began seeing both the physical iPhone and iOS 26.5 simulators. The iOS smoke preflight now runs...
  GitHub updated: 2026-05-12T08:42:12Z.

- [#507](https://github.com/markitics/laurelharned/issues/507) Build first-party live chat channels - Agents and developers; Live.
  Replaces the Discord-shaped gap with Laurel-owned community channels on `/live`: durable D1 messages, signed realtime sockets, listener posting, guest reading, and admin moderation.
  Shipped: Community channels.
  GitHub updated: 2026-05-14T10:38:36Z.
  PRs: [#567](https://github.com/markitics/laurelharned/pull/567).

- [#505](https://github.com/markitics/laurelharned/issues/505) Build on-platform Zoom alternative for paid lessons, coaching, and webinars - Website and shared platform; Live.
  Create first-party embedded rooms with host/attendee roles, durable chat, access policies, and a Cloudflare-native media path for lessons, coaching calls, webinars, and private paid sessions.
  GitHub updated: 2026-05-14T06:34:51Z.

- [#504](https://github.com/markitics/laurelharned/issues/504) Fix first lesson-booking path and manual availability - iOS mobile app; Commerce.
  Motivation This issue now owns the first focused lessonbooking slice from the broader booking notes: make the current lesson entry path work, let Laurel/creators define basic av...
  GitHub updated: 2026-05-22T04:04:31Z.

- [#501](https://github.com/markitics/laurelharned/issues/501) Fix iOS Account scrolling under mini player and bottom navigation - iOS mobile app; Design.
  Motivation Physicaldevice smoke on Mark's iPhone 17 Pro Max showed the signedin Account tab rendering its lower Account actions behind the persistent mini player and native bott...
  GitHub updated: 2026-05-12T09:10:44Z.

- [#486](https://github.com/markitics/laurelharned/issues/486) Add native iOS magic-link or test-credential path for artist/admin sign-in - iOS mobile app; Admin.
  Captured from Mark's realdevice testing request in the Codex iOS app session on 20260511/12. Problem Mark wants realaccount iOS smoke using listener demo accounts and laurel@lau...
  GitHub updated: 2026-05-12T06:44:34Z.

- [#484](https://github.com/markitics/laurelharned/issues/484) Add native Android magic-link or test-credential path for artist/admin sign-in - Android app; 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...
  GitHub updated: 2026-05-12T07:11:06Z.

- [#470](https://github.com/markitics/laurelharned/issues/470) Align web and native playback catalogs for reliable Listen Here handoff - Website and shared platform; Media.
  Mark confirmed that Listen Here / crossdevice playback handoff is impressive when the same track exists on both surfaces, but can become nonsensical when web and native apps hav...
  GitHub updated: 2026-05-12T06:21:27Z.

- [#469](https://github.com/markitics/laurelharned/issues/469) Make the iOS mini-player tap target open Now Playing across the full bar - iOS mobile app; Media.
  Mark reported from the physical iPhone build that tapping the playing song name opens the full Now Playing sheet, but tapping the blank/right side of the miniplayer bar does not...
  GitHub updated: 2026-05-12T05:43:17Z.

- [#468](https://github.com/markitics/laurelharned/issues/468) Add iOS timed comment Like details and single-heart reaction parity - iOS mobile app; Media.
  Mark asked that comment reaction behavior stay consistent across iOS, Android, and web: comments should have one emoji reaction option, a heart/Like, and users should be able to...
  GitHub updated: 2026-05-12T05:19:59Z.

- [#462](https://github.com/markitics/laurelharned/issues/462) Harden web Listen Along invite auto-join credentials - Website and shared platform; Media.
  Problem During Common Design 448 smoke on 20260511, an Android emulator host created a production Listen Along invite and a separate web listener was signed in through Better Au...
  GitHub updated: 2026-05-12T05:32:58Z.

- [#449](https://github.com/markitics/laurelharned/issues/449) Audit native mobile surfaces for remaining web handoffs except Stripe support checkout - Website and shared platform; Qa.
  Captured from Mark's nativeapp parity directive in the Codex iOS app session on 20260511. Problem Mark explicitly does not want native iOS/Android features to cheat by linking o...
  GitHub updated: 2026-05-12T05:47:34Z.

- [#447](https://github.com/markitics/laurelharned/issues/447) Remove iOS offline manifest debug copy from listener track cards - iOS mobile app; Media.
  Captured from Mark's iPhone feedback in the Codex iOS app session on 20260511. Problem Track cards can show truncated copy like "Offline caching requires a signed native manifes...
  GitHub updated: 2026-05-12T05:10:46Z.

- [#446](https://github.com/markitics/laurelharned/issues/446) Fix iOS ended-state playback UI and autoplay-next behavior - iOS mobile app; Media.
  Captured from Mark's physical iPhone feedback in the Codex iOS app session on 20260511. Problem When "Romance Anonimo" ends on iPhone, audio stops but the playhead remains at th...
  GitHub updated: 2026-05-12T05:03:33Z.

- [#445](https://github.com/markitics/laurelharned/issues/445) Restore iOS bottom navigation visibility with mini player - iOS mobile app; Media.
  Captured from Mark's rapid iOS physicaldevice feedback in the Codex iOS app session on 20260511. Problem Mark reported that the bottom navbar is missing on iPhone. Shared design...
  GitHub updated: 2026-05-12T04:50:15Z.

- [#444](https://github.com/markitics/laurelharned/issues/444) Fix native mobile push state, email verification copy, and device registration - Website and shared platform; Auth.
  Captured from Mark's rapid mobile feedback in the Codex iOS app session on 20260511. Problem iPhone and Android settings currently imply email notifications are ON even when ema...
  GitHub updated: 2026-05-12T04:58:34Z.

- [#422](https://github.com/markitics/laurelharned/issues/422) Collate competitor platform notes and Fanful feature matrix - Website and shared platform; Platform.
  Goal Create one durable place for notes from other platforms and add an entrepreneurfacing web view that compares Fanful against relevant creator, commerce, course, funnel, and ...
  GitHub updated: 2026-05-12T11:52:43Z.

- [#402](https://github.com/markitics/laurelharned/issues/402) Add native iOS artist/listener real-account end-to-end smoke - iOS mobile app; Admin.
  Motivation Mark asked for realaccount native testing across iOS, Android, and web using listener accounts and Laurel's artist account, including comments, live chat, golive flow...
  GitHub updated: 2026-05-12T10:29:17Z.

- [#386](https://github.com/markitics/laurelharned/issues/386) Retarget native Listen Along state-sync references after #370 shipped - Website and shared platform; Media.
  Motivation PR 373 closed 370 by shipping the shared web/backend Listen Along state endpoint. Some docs and one Android listenerfacing/debug string still say realtime coscrub is ...
  GitHub updated: 2026-05-11T16:41:18Z.

- [#385](https://github.com/markitics/laurelharned/issues/385) Adopt Listen Along state sync in the iOS app - iOS mobile app; Media.
  Motivation PR 373 shipped the shared web/backend Listen Along state contract. The iOS app should now adopt that contract so a joined friend session can actually coplay, copause,...
  GitHub updated: 2026-05-11T16:50:42Z.

- [#384](https://github.com/markitics/laurelharned/issues/384) Adopt Listen Along state sync in the Android app - Android app; 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...
  GitHub updated: 2026-05-11T17:21:48Z.

- [#381](https://github.com/markitics/laurelharned/issues/381) Run manual cross-platform realtime smoke with demo accounts - Website and shared platform; Media.
  Motivation Mark asked for thorough crossplatform smoke testing across web, iPhone, and Android using demo listener accounts and the Laurel artist account. The existing issue 288...
  GitHub updated: 2026-05-11T16:26:32Z.

- [#372](https://github.com/markitics/laurelharned/issues/372) Add Android autoplay-next toggle and ended-state behavior - Android app; 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...
  GitHub updated: 2026-05-11T16:15:16Z.

- [#370](https://github.com/markitics/laurelharned/issues/370) Implement realtime Listen Along co-playback and co-scrub sync - Website and shared platform; Media.
  Motivation Mark wants Listen Along to be more than an invite/join state: two different listener accounts should be able to keep playback synchronized, and either participant sho...
  GitHub updated: 2026-05-11T16:18:06Z.

- [#365](https://github.com/markitics/laurelharned/issues/365) Add native Android Shop surface - Android app; 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...
  GitHub updated: 2026-05-12T04:04:48Z.

- [#364](https://github.com/markitics/laurelharned/issues/364) Add native Android Lessons surface - Android app; 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...
  GitHub updated: 2026-05-11T21:12:59Z.

- [#363](https://github.com/markitics/laurelharned/issues/363) Add native Android Support surface with Stripe checkout handoff - Android app; 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...
  GitHub updated: 2026-05-11T20:35:35Z.

- [#362](https://github.com/markitics/laurelharned/issues/362) Add Android bottom navigation and account avatar menu - Android app; 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...
  GitHub updated: 2026-05-11T16:16:17Z.

- [#355](https://github.com/markitics/laurelharned/issues/355) Align shared listener catalog and media queue across web, iOS, and Android - Website and shared platform; Media.
  Motivation Mark feedback from crossdevice playback testing: Listen here handoff is impressive when both surfaces reference the same item, but sync becomes nonsense when web and ...
  GitHub updated: 2026-05-11T15:12:18Z.

- [#354](https://github.com/markitics/laurelharned/issues/354) Define shared autoplay and ended-state behavior for the player - Website and shared platform; Media.
  Motivation Mark feedback from iPhone testing: when Romance Anonimo ended, playback stopped at the end while the large play/pause control still showed pause. He also raised wheth...
  GitHub updated: 2026-05-11T15:12:12Z.

- [#353](https://github.com/markitics/laurelharned/issues/353) Unify Android timed comment reactions to one Like action - Android app; 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...
  GitHub updated: 2026-05-11T13:45:57Z.

- [#351](https://github.com/markitics/laurelharned/issues/351) Make the entire native iOS mini player bar open Now Playing - iOS mobile app; Media.
  Motivation Mark tested on a physical iPhone and found that tapping the playing song name opens the expanded player, but tapping the blank/rightside area of the mini player bar d...
  GitHub updated: 2026-05-11T12:26:11Z.

- [#342](https://github.com/markitics/laurelharned/issues/342) Move themeColor metadata to viewport exports - Website and shared platform; Design.
  Motivation\\n\\nNext 16 warns during every production build that no longer belongs in the metadata export. The warning repeats for many routes and makes CI output noisier while we...
  GitHub updated: 2026-05-11T11:11:10Z.

- [#327](https://github.com/markitics/laurelharned/issues/327) Remove remaining native listener web handoffs except Stripe checkout - Website and shared platform; Commerce.
  Motivation Mark was explicit: Live, Dates, Shop, Lessons, and Account should be native in iOS/Android, not webview shortcuts. The main exception is Support/Stripe checkout, wher...
  GitHub updated: 2026-05-11T15:12:08Z.

- [#326](https://github.com/markitics/laurelharned/issues/326) Make native offline availability copy listener-friendly - Website and shared platform; Media.
  Motivation Mark saw truncated native copy like Offline caching requires a signed native manifest... on iPhone track rows. That sounds like internal implementation detail and doe...
  GitHub updated: 2026-05-11T13:26:05Z.

- [#325](https://github.com/markitics/laurelharned/issues/325) Add native iOS email verification resend and notification eligibility copy - iOS mobile app; Auth.
  Motivation Mark's iPhone feedback showed confusing notification state: email notifications appeared enabled before email confirmation, while push seemed blocked or still prompti...
  GitHub updated: 2026-05-11T12:15:15Z.

- [#324](https://github.com/markitics/laurelharned/issues/324) Prepare iOS TestFlight beta upload and tester onboarding - iOS mobile app; Qa.
  Motivation Mark wants Laurel and friends to test the native iOS app through TestFlight, not only by plugging in his iPhone and pressing CmdR in Xcode. Scope Document the exact l...
  GitHub updated: 2026-05-12T05:18:16Z.

- [#323](https://github.com/markitics/laurelharned/issues/323) Add native iOS bottom navigation and keep mini player above it - iOS mobile app; Platform.
  Motivation Mark observed that the iOS app currently lacks a bottom navigation bar, while the shared player/design notes point toward native app chrome similar to Spotify, Apple ...
  GitHub updated: 2026-05-11T10:52:54Z.

- [#322](https://github.com/markitics/laurelharned/issues/322) Add web Listen Along invite, share link, and QR join UI - Website and shared platform; Media.
  Motivation Listen Along needs a web surface as well as native app surfaces: a listener should be able to invite a friend by link, or show a QR code when they are beside each oth...
  GitHub updated: 2026-05-11T14:39:39Z.

- [#319](https://github.com/markitics/laurelharned/issues/319) Promote Join/Login to primary cross-platform navigation - Website and shared platform; Auth.
  Motivation Guest signin/join is currently too buried and too playbackhandoffspecific. Mark wants account entry to be a primary navigation action: on web, the homepage topright C...
  GitHub updated: 2026-05-11T13:35:21Z.

- [#318](https://github.com/markitics/laurelharned/issues/318) Fix web player dismissal, remote banner, and duplicate controls - Website and shared platform; Media.
  Motivation Mark's screenshots show the web player taking over too much of the page when playback is remote or expanded. The bottom mini player remains visible under the expanded...
  GitHub updated: 2026-05-11T12:34:05Z.

- [#317](https://github.com/markitics/laurelharned/issues/317) Add native iOS Listen Along invite, share link, and QR join UI - iOS mobile app; 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...
  GitHub updated: 2026-05-11T16:49:32Z.

- [#316](https://github.com/markitics/laurelharned/issues/316) Add native Android artist-admin end-to-end smoke with Laurel and listener accounts - Android app; 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...
  GitHub updated: 2026-05-12T07:11:08Z.

- [#315](https://github.com/markitics/laurelharned/issues/315) Add native Android email verification resend and notification eligibility copy - Android app; 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 ...
  GitHub updated: 2026-05-11T11:32:42Z.

- [#314](https://github.com/markitics/laurelharned/issues/314) Add Android Listen Along invite, share link, and QR join UI - Android app; 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...
  GitHub updated: 2026-05-11T15:56:30Z.

- [#313](https://github.com/markitics/laurelharned/issues/313) Build Cloudflare Listen Along sessions, invite links, and QR-safe join contract - Website and shared platform; Media.
  Motivation Social listening needs a crossdevice contract before native apps can implement it cleanly. A listener should be able to invite another listener to listen along remote...
  GitHub updated: 2026-05-11T13:48:28Z.

- [#302](https://github.com/markitics/laurelharned/issues/302) Paginate live GitHub roadmap issue fetch - Website and shared platform; Qa.
  Motivation Production /api/roadmap is GitHubbacked, but the server fetch currently requests only perpage=100 from the GitHub Issues API. The roadmap has grown beyond 100 GitHub ...
  GitHub updated: 2026-05-11T08:23:06Z.

- [#301](https://github.com/markitics/laurelharned/issues/301) Fix wide roadmap Kanban sticky headers - Website and shared platform; Design.
  The shipped roadmap stage headers still feel off in wide Kanban view. Observed from Mark's screenshot: card text briefly appears above the floating stage header while scrolling ...
  GitHub updated: 2026-05-11T08:30:38Z.

- [#298](https://github.com/markitics/laurelharned/issues/298) Native artist admin parity: timed comment and live note moderation - Android app; 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...
  GitHub updated: 2026-05-12T04:16:04Z.

- [#297](https://github.com/markitics/laurelharned/issues/297) Native artist admin parity: create, schedule, and control live rooms - Website and shared platform; Admin.
  Goal\\nWhen Laurel signs into iOS or Android, she can create a live room, go live now, schedule a future room, update chat/subscriber settings, and end/cancel live events without...
  GitHub updated: 2026-05-11T17:30:45Z.

- [#296](https://github.com/markitics/laurelharned/issues/296) Native artist admin parity: analytics dashboards and drill-downs - iOS mobile app; Admin.
  Goal\\nBring /admin analytics visibility into iOS and Android for Laurel/owner accounts, not just compact metric tiles.\\n\\n Scope\\n Native analytics overview for listeners, playb...
  GitHub updated: 2026-05-12T04:23:45Z.

- [#295](https://github.com/markitics/laurelharned/issues/295) Native artist admin parity: email inbox, replies, and campaigns - iOS mobile app; Admin.
  Goal\\nWhen Laurel signs into iOS or Android, she can handle the same practical email work available in /admin: view inbound mail, reply to people, review campaign drafts, send p...
  GitHub updated: 2026-05-11T20:46:20Z.

- [#294](https://github.com/markitics/laurelharned/issues/294) Native artist admin parity: subscribers and membership plan management - Website and shared platform; Admin.
  Goal\\nWhen an owner or Laurel artistadmin signs into iOS or Android, they can manage subscriber and membership state without webadmin handoff for routine support work.\\n\\n Scope...
  GitHub updated: 2026-05-11T18:57:01Z.

- [#292](https://github.com/markitics/laurelharned/issues/292) Make roadmap workstreams trust platform labels - Website and shared platform; Qa.
  Motivation The live /roadmap page reads GitHub issues and infers a Web/iOS/Android workstream. Newer native issues carry explicit labels like area:iosapp and area:androidapp, bu...
  GitHub updated: 2026-05-11T08:11:51Z.

- [#291](https://github.com/markitics/laurelharned/issues/291) Fix iOS end-of-track state and queue advancement - iOS mobile app; Media.
  Motivation Mark observed that on iPhone, when Romance Anonimo ends, audio stops but the playhead remains at the end of the track and the large primary button still shows a pause...
  GitHub updated: 2026-05-11T10:54:38Z.

- [#290](https://github.com/markitics/laurelharned/issues/290) Fix native push registration state after OS permission grant - iOS mobile app; Auth.
  Motivation Mark enabled iPhone push through the system prompt, but the app still showed the large enablepush button, confusing device counts, and contradictory copy such as iOS ...
  GitHub updated: 2026-05-11T15:47:20Z.

- [#289](https://github.com/markitics/laurelharned/issues/289) Polish the web player queue, artwork, and motion to flagship quality - Website and shared platform; Media.
  Motivation The web player should not merely be functional; it should feel like the strongest surface. Use Spotifylevel product expectations as a reference for clear hierarchy, c...
  GitHub updated: 2026-05-11T15:10:26Z.

- [#288](https://github.com/markitics/laurelharned/issues/288) Add cross-platform realtime listener smoke matrix for web and native apps - Website and shared platform; Media.
  Motivation Mark recommended thorough realaccount testing across listener comments, live chat, live creation, and playback sync using demo listener accounts and the Laurel artist...
  GitHub updated: 2026-05-11T10:57:14Z.

- [#287](https://github.com/markitics/laurelharned/issues/287) Expose native-ready Live, Dates, Shop, Lessons, and go-live contracts - Website and shared platform; Admin.
  Motivation Mark wants iOS and Android to avoid cheating by linking to web for app features. Support/Stripe checkout can link out, but Live, Dates, Shop, Lessons, and artist goli...
  GitHub updated: 2026-05-11T13:44:39Z.

- [#286](https://github.com/markitics/laurelharned/issues/286) Add shared autoplay-next queue preference across web, iOS, and Android - Website and shared platform; Media.
  Motivation When a track ends, the platform needs a deliberate queue policy. Mark asked whether a next track should autoplay and suggested an adjustable autoplaynext toggle, espe...
  GitHub updated: 2026-05-11T11:12:13Z.

- [#285](https://github.com/markitics/laurelharned/issues/285) Align canonical media catalog and playback queue identity across platforms - Website and shared platform; Media.
  Motivation Mark noticed playback sync can become nonsense when web and native apps do not expose the same playlist/catalog order and media identities. Example: one platform has ...
  GitHub updated: 2026-05-11T12:34:42Z.

- [#284](https://github.com/markitics/laurelharned/issues/284) Design shared Listen along mode separate from same-account Listen here handoff - Website and shared platform; Media.
  Motivation Current handoff behavior is good for one listener using multiple devices: Listen here claims playback and the other device should stop. Mark wants a separate social m...
  GitHub updated: 2026-05-11T12:34:41Z.

- [#283](https://github.com/markitics/laurelharned/issues/283) Clarify email verification, resend, and push readiness across web/native - Website and shared platform; Auth.
  Motivation Mark's nativeapp feedback exposed a shared accountstate problem that web/backend should help solve: email notification state, email verification prompts, push registr...
  GitHub updated: 2026-05-11T08:25:58Z.

- [#280](https://github.com/markitics/laurelharned/issues/280) Replace Android website-like top header with native bottom navigation and profile entry - Android app; 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...
  GitHub updated: 2026-05-11T11:01:59Z.

- [#279](https://github.com/markitics/laurelharned/issues/279) Add native Android mixed audio/video queue playback - Android app; 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...
  GitHub updated: 2026-05-11T12:22:37Z.

- [#278](https://github.com/markitics/laurelharned/issues/278) Unify iOS timed comment reactions to one heart-like model - iOS mobile app; 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...
  GitHub updated: 2026-05-11T21:10:54Z.

- [#277](https://github.com/markitics/laurelharned/issues/277) Unify web timed comment reactions to one heart-like model - Android app; 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...
  GitHub updated: 2026-05-11T15:35:08Z.

- [#276](https://github.com/markitics/laurelharned/issues/276) Unify Android timed comment reactions to one heart-like model - Android app; 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...
  GitHub updated: 2026-05-11T09:44:45Z.

- [#275](https://github.com/markitics/laurelharned/issues/275) Add native Android support, shop, and lessons surfaces - Android app; 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...
  GitHub updated: 2026-05-11T15:09:23Z.

- [#274](https://github.com/markitics/laurelharned/issues/274) Add native Android performance dates surface - Android app; 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...
  GitHub updated: 2026-05-11T19:45:59Z.

- [#273](https://github.com/markitics/laurelharned/issues/273) Replace Android artist live web handoff with native go-live controls - Android app; 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...
  GitHub updated: 2026-05-11T17:03:04Z.

- [#272](https://github.com/markitics/laurelharned/issues/272) Add native Android listener Live Room for livestream viewing - Android app; 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...
  GitHub updated: 2026-05-11T17:58:17Z.

- [#271](https://github.com/markitics/laurelharned/issues/271) Hide raw Android playback event identifiers from listener UI - Android app; 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...
  GitHub updated: 2026-05-11T10:02:06Z.

- [#269](https://github.com/markitics/laurelharned/issues/269) Polish Android player chrome and accessibility against the shared design contract - Android app; 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...
  GitHub updated: 2026-05-11T19:16:25Z.

- [#267](https://github.com/markitics/laurelharned/issues/267) Brand the Android app with a native Laurel home surface - Android app; 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...
  GitHub updated: 2026-05-12T05:18:43Z.

- [#265](https://github.com/markitics/laurelharned/issues/265) Add an in-app roadmap and About build summary to Android - Android app; 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...
  GitHub updated: 2026-05-12T08:06:21Z.

- [#264](https://github.com/markitics/laurelharned/issues/264) Add an in-app roadmap and About build summary to iOS - iOS mobile app; 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...
  GitHub updated: 2026-05-11T19:43:48Z.

- [#262](https://github.com/markitics/laurelharned/issues/262) Add native iOS diagnostics and support summary - iOS mobile app; Qa.
  Motivation Mark will be testing the iOS app on simulators, physical iPhones, and eventually TestFlight. When playback sync, push, auth, offline downloads, or API origin behavior...
  GitHub updated: 2026-05-11T08:02:01Z.

- [#260](https://github.com/markitics/laurelharned/issues/260) Add native iOS track sharing - iOS mobile app; Media.
  Goal Add a native iOS share affordance so listeners can share a Laurel track or the current Now Playing item through the system share sheet. Scope Add share controls to track ro...
  GitHub updated: 2026-05-11T08:01:59Z.

- [#258](https://github.com/markitics/laurelharned/issues/258) Add native iOS playback speed controls - iOS mobile app; Media.
  Goal Add native iOS playback speed controls to the expanded Now Playing surface so listeners can slow down or speed up longform audio without leaving the app. Scope Add a native...
  GitHub updated: 2026-05-11T08:01:56Z.

- [#256](https://github.com/markitics/laurelharned/issues/256) Add native iOS sleep timer controls - iOS mobile app; Media.
  Goal Add a native iOS sleep timer so listeners can start Laurel's music and let the app pause itself after a chosen interval. Listener jobs to be done Start a timer from the exp...
  GitHub updated: 2026-05-11T08:01:53Z.

- [#254](https://github.com/markitics/laurelharned/issues/254) Add native iOS audio session and background playback handling - iOS mobile app; Media.
  Goal Make the iOS app behave like a real listener app on a physical iPhone when audio leaves the foreground: background playback, route changes, interruptions, and mediaservice ...
  GitHub updated: 2026-05-11T08:01:51Z.

- [#252](https://github.com/markitics/laurelharned/issues/252) Add native iOS lesson booking flow - iOS mobile app; Commerce.
  Motivation The iOS app can now expose listener/support/catalog surfaces, but lesson booking is still a webonly handoff. A listener should be able to pick an available lesson slo...
  GitHub updated: 2026-05-11T08:01:48Z.

- [#250](https://github.com/markitics/laurelharned/issues/250) Add native iOS support, memberships, and shop catalog - iOS mobile app; Commerce.
  Goal Give the native iOS app a Support surface that feels like Laurel's app, not just a weblink grid. Scope Add a mobilesafe support/catalog endpoint for membership tiers, publi...
  GitHub updated: 2026-05-11T08:01:46Z.

- [#248](https://github.com/markitics/laurelharned/issues/248) Add native iOS performance dates surface - iOS mobile app; Platform.
  Goal Give the native iOS app a real Dates surface instead of only handing listeners to the website. Why now The website already has structured performance data through getPublic...
  GitHub updated: 2026-05-11T08:01:44Z.

- [#246](https://github.com/markitics/laurelharned/issues/246) Add native iOS playback device context pills - iOS mobile app; Media.
  Goal Add a clear native iOS playbackdevice context pill so listeners can tell whether playback is local, remote, connected, offline, or localonly without reading the larger stat...
  GitHub updated: 2026-05-11T08:01:41Z.

- [#244](https://github.com/markitics/laurelharned/issues/244) Brand the iOS app with a native Laurel home surface - iOS mobile app; Design.
  Goal Make the native iOS app feel like Laurel Harned's listener app from the first screen instead of a generic MusicWebs utility shell. Why now The core iOS features are now bro...
  GitHub updated: 2026-05-11T08:01:39Z.

- [#242](https://github.com/markitics/laurelharned/issues/242) Add a native iOS listener Live Room surface - iOS mobile app; Media.
  Motivation The iOS app currently offers a Live hub handoff, while the website already has a real Laurel Live room with room state, stream/replay metadata, presence, and live not...
  GitHub updated: 2026-05-11T08:01:37Z.

- [#239](https://github.com/markitics/laurelharned/issues/239) Add native iOS Continue Listening resume panel - iOS mobile app; Media.
  Goal Add a native Continue Listening surface so returning iOS listeners can resume the most relevant inprogress track without hunting through the full library. Scope Use existin...
  GitHub updated: 2026-05-11T08:01:34Z.

- [#237](https://github.com/markitics/laurelharned/issues/237) Add native iOS library search and media filters - iOS mobile app; Media.
  Goal Make the native iOS library easier to browse as Laurel's catalog grows by adding native search and quick filters. Scope Add a SwiftUI search field for track title/composer/...
  GitHub updated: 2026-05-11T08:01:32Z.

- [#235](https://github.com/markitics/laurelharned/issues/235) Add a native iOS video playback surface in Now Playing - iOS mobile app; Media.
  Goal Add a native iOS video playback surface so video tracks are not only labeled as video, and keep the player aligned with the shared web/Android design direction. Scope Use n...
  GitHub updated: 2026-05-11T10:54:41Z.

- [#233](https://github.com/markitics/laurelharned/issues/233) Document iPhone testing and TestFlight release for the iOS app - iOS mobile app; Qa.
  Goal Document the exact morning path for Mark to test the native iOS listener app on a physical iPhone and prepare an internal TestFlight build. Scope Physical iPhone testing ch...
  GitHub updated: 2026-05-11T08:01:30Z.

- [#227](https://github.com/markitics/laurelharned/issues/227) Polish iOS player motion, haptics, and accessibility against the shared design contract - iOS mobile app; Design.
  Goal After the core player surfaces land, add the last layer of native polish so iOS feels intentional while staying aligned with web and Android design decisions. Listener jobs...
  GitHub updated: 2026-05-11T10:54:43Z.

- [#226](https://github.com/markitics/laurelharned/issues/226) Complete native iOS account settings beyond sign-in - iOS mobile app; Auth.
  Goal Extend the iOS account surface beyond base signin so listeners can manage the account tasks that matter on the website without losing nativeapp context. Listener jobs to be...
  GitHub updated: 2026-05-11T17:53:16Z.

- [#225](https://github.com/markitics/laurelharned/issues/225) Add iOS cross-device playback handoff and sync conflict states - iOS mobile app; Media.
  Goal Make the iOS listener app explicit about crossdevice playback ownership, progress sync, and API gaps so it behaves consistently with the website and future Android app. Lis...
  GitHub updated: 2026-05-10T11:39:42Z.

- [#224](https://github.com/markitics/laurelharned/issues/224) Add queue, skip, and remote-control parity to the iOS player - iOS mobile app; Media.
  Goal Bring the native iOS player closer to website player parity by adding queue/nextup behavior and full iOS system remotecontrol integration. Listener jobs to be done See what...
  GitHub updated: 2026-05-10T11:23:10Z.

- [#218](https://github.com/markitics/laurelharned/issues/218) Refactor the iOS player into a compact mini player and expanded Now Playing sheet - iOS mobile app; Media.
  Goal Bring the native iOS player in line with the shared player design direction: a genuinely compact persistent mini player while browsing, plus a native expanded Now Playing s...
  GitHub updated: 2026-05-11T08:01:28Z.

- [#213](https://github.com/markitics/laurelharned/issues/213) Add native-safe Turnstile flow for iOS timed comments - iOS mobile app; Auth.
  Motivation PR 212 added a Turnstile challenge for brandnew verified sessions that post timed comments on the website. The native iOS timedcomments composer added in 142 posts th...
  GitHub updated: 2026-05-10T10:59:01Z.

- [#207](https://github.com/markitics/laurelharned/issues/207) Add subtle motion polish to roadmap stage headers - Website and shared platform; Design.
  Followup to 166. The stage headers are now visually distinct and sticky. Add a small polish pass so they feel smoother in use: restrained transitions, hover/focus affordance, an...
  GitHub updated: 2026-05-10T06:33:22Z.

- [#189](https://github.com/markitics/laurelharned/issues/189) Align Android mini and expanded player with shared player design notes - Android app; 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...
  GitHub updated: 2026-05-11T08:01:26Z.

- [#172](https://github.com/markitics/laurelharned/issues/172) Fix mobile bootstrap demo streams when seeded R2 media objects are missing - Android app; 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...
  GitHub updated: 2026-05-11T08:01:24Z.

- [#167](https://github.com/markitics/laurelharned/issues/167) Define shared listener player design contract across web, iOS, and Android - Website and shared platform; Media.
  Goal Create the durable design source of truth for the Laurel/MusicWebs listener player across web, iOS, and Android so platform work does not drift into three different audio p...
  GitHub updated: 2026-05-11T08:01:22Z.

- [#165](https://github.com/markitics/laurelharned/issues/165) Add playback queue and next-up controls to the Android app - Android app; 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...
  GitHub updated: 2026-05-11T10:54:45Z.

- [#164](https://github.com/markitics/laurelharned/issues/164) Add artwork, video-aware media UI, and richer playback states to the Android app - Android app; 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...
  GitHub updated: 2026-05-11T10:54:47Z.

- [#159](https://github.com/markitics/laurelharned/issues/159) Add shared notification preferences, email/push granularity, and device-token APIs - Website and shared platform; Platform.
  Add the website/backend account layer for per-category email versus push preferences and native APNs/FCM device-token registration.
  Shipped: Shared notification preference API.
  GitHub updated: 2026-05-10T01:27:41Z.
  PRs: [#179](https://github.com/markitics/laurelharned/pull/179).

- [#158](https://github.com/markitics/laurelharned/issues/158) Add MediaSessionService background playback and notification controls to the Android app - Android app; Media.
  Wrap Android playback in a native MediaSessionService so lock-screen, headphones, audio focus, and foreground playback notifications work correctly.
  GitHub updated: 2026-05-10T01:56:21Z.

- [#157](https://github.com/markitics/laurelharned/issues/157) Add artwork, video-aware media UI, and richer playback states to the iOS app - iOS mobile app; Media.
  Polish iOS library cards with artwork, media-kind labels, locked/loading/error states, and clear member-only calls to action.
  Shipped: Richer iOS media states.
  GitHub updated: 2026-05-10T00:42:22Z.
  PRs: [#170](https://github.com/markitics/laurelharned/pull/170).

- [#156](https://github.com/markitics/laurelharned/issues/156) Add reliable playback progress queue and WorkManager retry to the Android app - Android app; Media.
  Make Android progress writes durable across spotty connectivity, backgrounding, and future offline playback with a local queue and WorkManager retry.
  GitHub updated: 2026-05-11T09:28:11Z.

- [#155](https://github.com/markitics/laurelharned/issues/155) Add reliable playback progress queue and retry to the iOS app - iOS mobile app; Media.
  Make iOS progress writes durable across spotty connectivity, backgrounding, and future offline playback with a local retry queue.
  Shipped: Durable iOS progress queue.
  GitHub updated: 2026-05-10T00:59:38Z.
  PRs: [#176](https://github.com/markitics/laurelharned/pull/176).

- [#154](https://github.com/markitics/laurelharned/issues/154) Add shared native mobile API contracts and generated models - iOS mobile app; Platform.
  Define shared native fixtures and contract tests under contracts/mobile-listener/v1 so Swift and Kotlin clients stay aligned with website APIs without forcing a shared UI stack.
  Shipped: Shared native contract fixtures.
  GitHub updated: 2026-05-10T03:37:53Z.
  PRs: [#202](https://github.com/markitics/laurelharned/pull/202).

- [#153](https://github.com/markitics/laurelharned/issues/153) Add release signing, Play Store readiness, and Android build flavors - Android app; Operations.
  Prepare the Android project for real distribution with package identity, debug/release flavors, safe network config, signing notes, and Play testing documentation.
  GitHub updated: 2026-05-11T10:54:48Z.

- [#152](https://github.com/markitics/laurelharned/issues/152) Add release signing, TestFlight, and App Store readiness to the iOS app - iOS mobile app; Operations.
  Prepare the iOS project for real distribution with bundle identity, signing notes, release-safe configuration, app assets, and TestFlight documentation.
  GitHub updated: 2026-05-11T08:01:20Z.

- [#151](https://github.com/markitics/laurelharned/issues/151) Add artist dashboard and web admin handoff to the Android app - Android app; Admin.
  Add an Android artist companion area for read-only signal and authenticated handoff to deeper web admin modules.
  GitHub updated: 2026-05-12T08:22:35Z.

- [#150](https://github.com/markitics/laurelharned/issues/150) Add artist dashboard and web admin handoff to the iOS app - iOS mobile app; Admin.
  Add an iOS artist companion area for read-only signal and authenticated handoff to deeper web admin modules.
  Shipped: iOS artist dashboard companion.
  GitHub updated: 2026-05-11T08:01:17Z.
  PRs: [#203](https://github.com/markitics/laurelharned/pull/203).

- [#149](https://github.com/markitics/laurelharned/issues/149) Add artist live controls and moderation companion mode to the Android app - Android app; Admin.
  Give Laurel a role-gated Android companion workflow for live-room status, quick room controls, presence, and chat moderation.
  GitHub updated: 2026-05-11T10:19:18Z.

- [#148](https://github.com/markitics/laurelharned/issues/148) Add artist live controls and moderation companion mode to the iOS app - iOS mobile app; Admin.
  Give Laurel a role-gated iPhone companion workflow for live-room status, quick room controls, presence, and chat moderation.
  Shipped: iOS live companion.
  GitHub updated: 2026-05-10T03:19:46Z.
  PRs: [#201](https://github.com/markitics/laurelharned/pull/201).

- [#147](https://github.com/markitics/laurelharned/issues/147) Add listener hub links for Live, Dates, Support, Shop, Lessons, and Account to the Android app - Android app; Platform.
  Give Android listeners a native home base with stable web handoff links for Laurel features that are not yet fully native.
  GitHub updated: 2026-05-11T08:01:15Z.

- [#146](https://github.com/markitics/laurelharned/issues/146) Add listener hub links for Live, Dates, Support, Shop, Lessons, and Account to the iOS app - iOS mobile app; Platform.
  Give iOS listeners a native home base with stable web handoff links for Laurel features that are not yet fully native.
  Shipped: Native hub links.
  GitHub updated: 2026-05-10T00:06:54Z.
  PRs: [#163](https://github.com/markitics/laurelharned/pull/163).

- [#145](https://github.com/markitics/laurelharned/issues/145) Add offline downloads and signed media cache to the Android app - Android app; 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.
  GitHub updated: 2026-05-12T09:32:10Z.

- [#144](https://github.com/markitics/laurelharned/issues/144) Add offline downloads and signed media cache to the iOS app - iOS mobile app; Media.
  Let entitled iOS 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.
  GitHub updated: 2026-05-11T08:01:13Z.

- [#143](https://github.com/markitics/laurelharned/issues/143) Add timed comments, replies, and reactions to the Android app - Android app; Media.
  Bring the website's timed listening conversation into Android playback with visible comments, timestamp seeking, replies, reactions, and moderation-aware states.
  GitHub updated: 2026-05-11T09:44:43Z.

- [#142](https://github.com/markitics/laurelharned/issues/142) Add timed comments, replies, and reactions to the iOS app - iOS mobile app; Media.
  Bring the website's timed listening conversation into iOS playback with visible comments, timestamp seeking, replies, reactions, and moderation-aware states.
  GitHub updated: 2026-05-11T08:01:10Z.

- [#141](https://github.com/markitics/laurelharned/issues/141) Add playback sync and Listen Here handoff to the Android app - Android app; Media.
  Connect Android to the Fanful playback sync socket so website, Android, and iPhone sessions can hand off track, position, and active-device state.
  GitHub updated: 2026-05-10T02:33:31Z.

- [#140](https://github.com/markitics/laurelharned/issues/140) Add playback sync and Listen Here handoff to the iOS app - iOS mobile app; Media.
  Connect iOS to the Fanful playback sync socket so website, iPhone, and Android sessions can hand off track, position, and active-device state.
  Shipped: iOS playback handoff.
  GitHub updated: 2026-05-10T02:48:46Z.
  PRs: [#199](https://github.com/markitics/laurelharned/pull/199).

- [#139](https://github.com/markitics/laurelharned/issues/139) Add notification preferences and push registration to the Android app - Android app; Platform.
  Add FCM registration and account notification settings that distinguish OS push permission from per-category email and push preferences.
  GitHub updated: 2026-05-11T10:54:50Z.

- [#138](https://github.com/markitics/laurelharned/issues/138) Add notification preferences and push registration to the iOS app - iOS mobile app; Platform.
  Add APNs registration and account notification settings that distinguish OS push permission from per-category email and push preferences.
  Shipped: iOS notification settings.
  GitHub updated: 2026-05-10T02:11:05Z.
  PRs: [#194](https://github.com/markitics/laurelharned/pull/194).

- [#137](https://github.com/markitics/laurelharned/issues/137) Add native account sign-in and entitlements to the Android app - Android app; Platform.
  Let Android listeners sign in natively, refresh account state, and unlock paid/member entitlements through the existing Fanful account contracts.
  GitHub updated: 2026-05-11T08:01:08Z.

- [#136](https://github.com/markitics/laurelharned/issues/136) Add native account sign-in and entitlements to the iOS app - iOS mobile app; Platform.
  Let iOS listeners sign in natively, refresh account state, and unlock paid/member entitlements through the existing Fanful account contracts.
  Shipped: Native iOS account sign-in.
  GitHub updated: 2026-05-10T01:48:58Z.
  PRs: [#184](https://github.com/markitics/laurelharned/pull/184).

- [#135](https://github.com/markitics/laurelharned/issues/135) Split the public roadmap into Web, iOS, and Android workstreams - Website and shared platform; Roadmap.
  Make `/roadmap` separate website/shared-platform, iOS native app, and Android native app work so future branches and agents can stay focused.
  GitHub updated: 2026-05-09T22:09:52Z.

- [#130](https://github.com/markitics/laurelharned/issues/130) Build first native Android listener app - Android app; 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 updated: 2026-05-09T22:09:50Z.

- [#129](https://github.com/markitics/laurelharned/issues/129) Build first native iOS listener app - iOS mobile app; Apps.
  Create the first SwiftUI listener app that consumes the mobile bootstrap/progress contracts, streams playable tracks with AVPlayer, and documents Xcode simulator and phone testing.
  GitHub updated: 2026-05-09T22:09:48Z.

- [#119](https://github.com/markitics/laurelharned/issues/119) Prepare options for native mobile apps - Website and shared platform; Apps.
  Research native iOS/Android, Kotlin Multiplatform, React Native, Flutter, and PWA options so future Fanful listener apps start from the right architecture.
  Shipped: Native app options.
  GitHub updated: 2026-05-09T08:40:22Z.
  PRs: [#120](https://github.com/markitics/laurelharned/pull/120).

- [#118](https://github.com/markitics/laurelharned/issues/118) Clarify notification preferences across email, browser, and future mobile - Website and shared platform; Admin.
  Goal Design and implement a clearer notification preference model that works for launch email alerts now, browser push next, and future iOS/Android app notifications later. Prod...
  GitHub updated: 2026-05-11T08:01:06Z.

- [#115](https://github.com/markitics/laurelharned/issues/115) Expand artist analytics with attribution funnels and listener cohorts - Website and shared platform; Admin.
  Followup from 108. This builds on the firstparty analytics event stream and durable playback state after the initial dashboard lands. Context 108 ships the schema, ingestion, se...
  GitHub updated: 2026-05-16T13:26:46Z.

- [#114](https://github.com/markitics/laurelharned/issues/114) Wire explicit player analytics intents from the persistent media player - Website and shared platform; Media.
  Followup from 108. This belongs with the active 98 media player surface, not the analytics foundation branch. Context 108 added firstparty analytics storage, ingestion routes, d...
  GitHub updated: 2026-05-16T12:57:37Z.

- [#113](https://github.com/markitics/laurelharned/issues/113) Integrate first-party analytics into admin navigation and global page tracking - Website and shared platform; Admin.
  Followup from 108. This should wait for the active admin/email and roadmap/admin layout branches to settle before touching shared admin UI files. Context 108 added an isolated /...
  GitHub updated: 2026-05-11T10:55:24Z.

- [#112](https://github.com/markitics/laurelharned/issues/112) Sanitized Codex status stream for active roadmap items - Agents and developers; Operations.
  Add a privacy-filtered Durable Object status stream so active roadmap cards can show short-lived Codex progress without exposing private terminal or mailbox details.
  GitHub updated: 2026-05-22T07:54:26Z.

- [#108](https://github.com/markitics/laurelharned/issues/108) Ambitious first-party analytics, dashboards, and playback progress - Agents and developers; Analytics.
  Build a first-party event stream, durable listener playback state, source/referrer insight, and artist-facing analytics views without depending on GA4.
  Shipped: First-party dashboard.
  GitHub updated: 2026-05-09T08:40:19Z.
  PRs: [#116](https://github.com/markitics/laurelharned/pull/116).

- [#107](https://github.com/markitics/laurelharned/issues/107) 🛡️ Security center and API authorization audit follow-up - Website and shared platform; Admin.
  Source From Mark's Obsidian notes: TOPIC 8 SECURITY.md and howcodexworkswithmark.md (ranked priority 7 in the corrected list), plus Mark's followup confirmation in Codex chat. G...
  GitHub updated: 2026-05-09T22:09:55Z.

- [#106](https://github.com/markitics/laurelharned/issues/106) Add small design delight and polished flourishes - Website and shared platform; Design.
  Adds restrained motion and microinteractions to CTAs, support cards, newsletter success, and the listening room while respecting reduced-motion preferences.
  Shipped: Subtle flourishes.
  GitHub updated: 2026-05-09T01:53:09Z.
  PRs: [#124](https://github.com/markitics/laurelharned/pull/124).

- [#103](https://github.com/markitics/laurelharned/issues/103) ⚙️ Fan account settings: alert toggle, deletion, contributions - Website and shared platform; Media.
  Source From Mark's Obsidian notes: TOPIC 5 FAN ACCOUNT SETTINGS.md (ranked priority 5), plus Mark's followup confirmation in Codex chat. Goal Make /account feel fast, stable, co...
  GitHub updated: 2026-05-09T22:09:46Z.

- [#102](https://github.com/markitics/laurelharned/issues/102) ✅ Account creation, magic-link, and email confirmation flows - Website and shared platform; Auth.
  Source From Mark's Obsidian notes: TOPIC 4 AUTH AND SIGN UP.md (ranked priority 4), plus Mark's followup confirmation in Codex chat. Goal Implement the agreed relationship betwe...
  GitHub updated: 2026-05-09T22:09:44Z.

- [#101](https://github.com/markitics/laurelharned/issues/101) 🔐 Make auth session state consistent across the site - Website and shared platform; Auth.
  Source From Mark's Obsidian notes: TOPIC 4 AUTH AND SIGN UP.md (ranked priority 4). Goal Eliminate contradictory loggedin/loggedout UI states across the site and use Better Auth...
  GitHub updated: 2026-05-09T22:09:42Z.

- [#100](https://github.com/markitics/laurelharned/issues/100) 📝 Join the List modal/panel and logged-in newsletter UX - Website and shared platform; Auth.
  Source From Mark's Obsidian notes: TOPIC 4 AUTH AND SIGN UP.md (ranked priority 4), plus Mark's followup confirmation in Codex chat. Goal Replace the disruptive Join the list ju...
  GitHub updated: 2026-05-09T22:09:40Z.

- [#98](https://github.com/markitics/laurelharned/issues/98) 🎧 Persistent audio/video player with scrubbing and mixed media playlist - iOS mobile app; Media.
  Current Session 3 Status PR: 117 — https://github.com/markitics/laurelharned/pull/117 Branch: codex/session3audiovideoplayer Latest pushed commit: c98bb8e fix: harden playback h...
  GitHub updated: 2026-05-09T10:01:18Z.

- [#96](https://github.com/markitics/laurelharned/issues/96) Roadmap kanban polish and realtime Codex status - Agents and developers; Roadmap.
  Polish the public roadmap layout, park unlikely ideas by default, and document the right architecture for live Codex/agent status updates.
  Shipped: Kanban polish.
  GitHub updated: 2026-05-08T16:52:38Z.
  PRs: [#111](https://github.com/markitics/laurelharned/pull/111).

- [#95](https://github.com/markitics/laurelharned/issues/95) 📥 Debug inbound email ingestion and Codex mail workflow - Website and shared platform; Email.
  Source From Mark's Obsidian notes: TOPIC 1 ADMIN AND EMAIL.md and howcodexworkswithmark.md (ranked priority 1). Goal Make inbound mail to site addresses visible and understandab...
  GitHub updated: 2026-05-11T08:01:03Z.

- [#94](https://github.com/markitics/laurelharned/issues/94) ✉️ Complete admin email portal: subscribers, inboxes, compose, campaigns - Website and shared platform; Admin.
  Source From Mark's Obsidian notes: TOPIC 1 ADMIN AND EMAIL.md (ranked priority 1). Goal Make /admin/email a complete email/subscriber work area rather than a crowded block on th...
  GitHub updated: 2026-05-11T08:01:01Z.

- [#93](https://github.com/markitics/laurelharned/issues/93) 🛡️ Admin access and route structure for Mark and Laurel - Website and shared platform; Admin.
  Source From Mark's Obsidian notes: TOPIC 1 ADMIN AND EMAIL.md (ranked priority 1). Goal Make the admin surface clearer and safer for the two real admins: Mark and Laurel. Detail...
  GitHub updated: 2026-05-11T08:00:58Z.

- [#88](https://github.com/markitics/laurelharned/issues/88) Codex PR email reply intake and feedback routing - Website and shared platform; Operations.
  Adds a privacy-safe intake helper and operating docs for routing replies to codex@laurelharned.com into PR comments or follow-up GitHub issues.
  Shipped: Reply intake helper.
  GitHub updated: 2026-05-09T09:21:54Z.
  PRs: [#92](https://github.com/markitics/laurelharned/pull/92).

- [#87](https://github.com/markitics/laurelharned/issues/87) Fanful multi-artist workspace and onboarding architecture - Website and shared platform; Platform.
  Documents the Laurel-first Fanful platform path, second-artist pilot, artist data rules, workspace split triggers, and the Awesound/Fanful boundary.
  Shipped: Architecture guardrails.
  GitHub updated: 2026-05-08T05:16:41Z.
  PRs: [#91](https://github.com/markitics/laurelharned/pull/91).

- [#86](https://github.com/markitics/laurelharned/issues/86) Media provenance, Laurel-owned replacements, and large uploads - Website and shared platform; Media.
  Track where each public asset came from, capture upload rights metadata, add a replacement review queue, and document the future resumable large-upload path before more artists depend on the media library.
  Shipped: Provenance review.
  GitHub updated: 2026-05-08T03:18:02Z.
  PRs: [#90](https://github.com/markitics/laurelharned/pull/90).

- [#85](https://github.com/markitics/laurelharned/issues/85) Admin timed-comment moderation and anti-abuse controls - Website and shared platform; Admin.
  Give Laurel and Mark admin controls to hide, flag, and restore timed comments while keeping the public player limited to visible notes.
  Shipped: Comment controls.
  GitHub updated: 2026-05-08T01:44:14Z.

- [#78](https://github.com/markitics/laurelharned/issues/78) Record holistic roadmap triage and next work lanes - Website and shared platform; Operations.
  Read ahead through queued feedback, cluster it into coherent next issues, and update the fallback roadmap plus handoff docs before more deep coding.
  Shipped: Queue reset.
  GitHub updated: 2026-05-07T18:40:11Z.
  PRs: [#79](https://github.com/markitics/laurelharned/pull/79).

- [#77](https://github.com/markitics/laurelharned/issues/77) Codex ops dashboard for queued feedback, worktrees, and time buckets - Agents and developers; Operations.
  Make queued feedback, active branches/worktrees, time buckets, and post-merge feedback handling easier to inspect so future sessions drift less.
  Shipped: Ops snapshot.
  GitHub updated: 2026-05-07T19:52:11Z.
  PRs: [#80](https://github.com/markitics/laurelharned/pull/80).

- [#76](https://github.com/markitics/laurelharned/issues/76) Homepage launch polish: timed comments story, guitar favicon, and navigation clarity - Website and shared platform; Design.
  Give the browser tab a Laurel-specific guitar icon, surface the timed-comments/listening story on the homepage, and make mobile navigation back from Listen obvious.
  Shipped: Launch polish.
  GitHub updated: 2026-05-07T20:24:43Z.
  PRs: [#83](https://github.com/markitics/laurelharned/pull/83).

- [#75](https://github.com/markitics/laurelharned/issues/75) Build original platform landing page for Fanful positioning - Website and shared platform; Platform.
  Add the original platform-facing page that used Laurel as the proof case before the public naming moved fully to Fanful.
  Shipped: Platform page.
  GitHub updated: 2026-05-07T20:05:44Z.
  PRs: [#82](https://github.com/markitics/laurelharned/pull/82).

- [#74](https://github.com/markitics/laurelharned/issues/74) Unify listener signup, sign-in, sign-out, and account state UX - Website and shared platform; Auth.
  Audit newsletter confirmation, listen-page account creation, magic-link login, account settings, and sign-out so listeners see one coherent account/subscription state.
  Shipped: Account state.
  GitHub updated: 2026-05-07T23:22:42Z.

- [#73](https://github.com/markitics/laurelharned/issues/73) Fix Durable Object runtime exports and production realtime smoke tests - Website and shared platform; Realtime.
  Resolve or prove harmless the Cloudflare deploy warning around PlaybackCoordinator and LiveRoomCoordinator exports, then add production-oriented socket smoke checks.
  Shipped: Realtime smoke.
  GitHub updated: 2026-05-07T19:27:47Z.
  PRs: [#81](https://github.com/markitics/laurelharned/pull/81).

- [#70](https://github.com/markitics/laurelharned/issues/70) Sync roadmap fallback data and project tracker after overnight ships - Website and shared platform; QA.
  Sync static roadmap fallback data, project tracker notes, worklog, prompt notes, and transcript after the overnight PR batch.
  Shipped: Fallback synced.
  GitHub updated: 2026-05-07T17:24:00Z.
  PRs: [#71](https://github.com/markitics/laurelharned/pull/71).

- [#69](https://github.com/markitics/laurelharned/issues/69) Admin security center and abuse-test journeys - Website and shared platform; QA.
  Add an admin-only security center for access, runtime configuration, abuse controls, and focused tests for route gating and raw timed-comment HTML escaping.
  Shipped: Security center.
  GitHub updated: 2026-05-07T17:57:11Z.
  PRs: [#72](https://github.com/markitics/laurelharned/pull/72).

- [#53](https://github.com/markitics/laurelharned/issues/53) Fix production Stripe checkout on Cloudflare Workers - Website and shared platform; Commerce.
  Use Stripe's fetch/Web Crypto runtime paths under Cloudflare Workers and keep checkout failures bounded and inspectable.
  Shipped: Checkout smoke.
  GitHub updated: 2026-05-07T06:23:38Z.
  PRs: [#54](https://github.com/markitics/laurelharned/pull/54).

- [#51](https://github.com/markitics/laurelharned/issues/51) Live GitHub-backed roadmap with polling, anchors, kanban, and PR screenshots - Website and shared platform; Roadmap.
  Make /roadmap read live issue status, poll GitHub, jump between sections, show a wide-screen board, and attach shipped PR screenshots.
  Shipped: Live tracker.
  GitHub updated: 2026-05-07T08:56:27Z.
  PRs: [#56](https://github.com/markitics/laurelharned/pull/56).

- [#49](https://github.com/markitics/laurelharned/issues/49) Promote Fanful roadmap priorities - Website and shared platform; Roadmap.
  Move Mark's favorite Fanful ideas into the committed queue and document the parallel work plan.
  Shipped: Priorities reset.
  GitHub updated: 2026-05-06T22:03:49Z.
  PRs: [#50](https://github.com/markitics/laurelharned/pull/50).

- [#47](https://github.com/markitics/laurelharned/issues/47) Harden Stripe secrets and PR notification ops - Website and shared platform; Operations.
  Clarify Stripe secret setup, prefer codex@laurelharned.com for PR notices, and document the reply/screenshot hygiene loop.
  Shipped: Ops scripts.
  GitHub updated: 2026-05-06T20:51:30Z.
  PRs: [#48](https://github.com/markitics/laurelharned/pull/48).

- [#45](https://github.com/markitics/laurelharned/issues/45) Use live D1 performance dates on the public homepage - Website and shared platform; Dates.
  Homepage performance dates now read from D1, hide drafts, move old published dates into Recent automatically, and show ticket links.
  Shipped: Auto-classified dates.
  GitHub updated: 2026-05-06T16:11:38Z.
  PRs: [#46](https://github.com/markitics/laurelharned/pull/46).

- [#42](https://github.com/markitics/laurelharned/issues/42) Theme system for multiple musician sites - Website and shared platform; Platform.
  Adds typed Fanful artist theme presets, app-level CSS variables, feature-flagged modules, docs, and a roadmap theme/module preview.
  Shipped: Theme presets.
  GitHub updated: 2026-05-07T12:25:01Z.
  PRs: [#62](https://github.com/markitics/laurelharned/pull/62).

- [#41](https://github.com/markitics/laurelharned/issues/41) Electronic press kit and booking page - Website and shared platform; Bookings.
  Adds public `/press` EPK content, downloads, presenter-ready copy, media links, technical needs, and a validated booking inquiry flow.
  Shipped: EPK page.
  GitHub updated: 2026-05-07T13:45:24Z.
  PRs: [#64](https://github.com/markitics/laurelharned/pull/64).

- [#40](https://github.com/markitics/laurelharned/issues/40) Advanced waveform comments and reactions - Website and shared platform; Listening.
  Adds seekable waveform peaks, threaded timed comments, visible-only moderation, reaction toggles, markers, and rollback on failed D1 comment saves.
  Shipped: Waveform replies.
  GitHub updated: 2026-05-07T10:42:06Z.
  PRs: [#58](https://github.com/markitics/laurelharned/pull/58).

- [#39](https://github.com/markitics/laurelharned/issues/39) Mobile listener bootstrap contract for future native apps - Website and shared platform; Apps.
  Adds `GET /api/mobile/bootstrap`, a typed native-client response builder, mobile architecture docs, and journey coverage for guest and signed-in bootstrap fields.
  Shipped: Bootstrap API.
  GitHub updated: 2026-05-07T16:15:40Z.
  PRs: [#67](https://github.com/markitics/laurelharned/pull/67).

- [#38](https://github.com/markitics/laurelharned/issues/38) Lessons booking with calendar and Zoom workflow - Website and shared platform; Lessons.
  Adds D1 lesson offerings, availability, bookings, meeting URLs, notes, reminders, public booking, admin controls, and Stripe Checkout metadata.
  Shipped: Lesson booking.
  GitHub updated: 2026-05-07T16:44:19Z.
  PRs: [#68](https://github.com/markitics/laurelharned/pull/68).

- [#37](https://github.com/markitics/laurelharned/issues/37) Fan memberships and patron tiers - Website and shared platform; Community.
  Adds recurring supporter tiers, Stripe subscription checkout/webhook recording, account membership state, and centralized member media entitlements.
  Shipped: Membership tiers.
  GitHub updated: 2026-05-07T09:39:20Z.
  PRs: [#55](https://github.com/markitics/laurelharned/pull/55).

- [#36](https://github.com/markitics/laurelharned/issues/36) Cloudflare Stream livestream with moderated realtime chat - Website and shared platform; Live.
  Adds Stream input/playback metadata, signed chat sockets, Durable Object realtime notes and presence, subscriber gates, moderation state, and replay metadata.
  Shipped: Stream + chat.
  GitHub updated: 2026-05-07T11:56:40Z.
  PRs: [#57](https://github.com/markitics/laurelharned/pull/57).

- [#34](https://github.com/markitics/laurelharned/issues/34) Email portal analytics and inbound reply center - Website and shared platform; Email.
  Add opens, clicks, bounces, suppression lists, inbound retention, reply workflows, and per-artist email usage accounting.
  Shipped: Reply center.
  GitHub updated: 2026-05-07T05:42:54Z.
  PRs: [#52](https://github.com/markitics/laurelharned/pull/52).

- [#33](https://github.com/markitics/laurelharned/issues/33) Shop feature flags, inventory, and digital downloads - Website and shared platform; Commerce.
  Adds D1-backed shop feature flags, inventory counts, digital download metadata, public `/shop`, admin product controls, and checkout inventory checks.
  Shipped: Shop controls.
  GitHub updated: 2026-05-07T14:16:16Z.
  PRs: [#65](https://github.com/markitics/laurelharned/pull/65).

- [#31](https://github.com/markitics/laurelharned/issues/31) Show possible future ideas separately from committed work - Website and shared platform; Roadmap.
  Keep current Laurel work distinct from optional Fanful ideas, so the public tracker can be complete without hiding the next sparks.
  Shipped: Maybe Later.
  GitHub updated: 2026-05-06T15:30:43Z.
  PRs: [#44](https://github.com/markitics/laurelharned/pull/44).

- [#22](https://github.com/markitics/laurelharned/issues/22) Cross-device playback coordinator - Website and shared platform; Media.
  Use Durable Objects and WebSockets so desktop, mobile web, and future native apps can share active playback state and device handoff.
  Shipped: Device sync.
  GitHub updated: 2026-05-06T14:00:44Z.
  PRs: [#30](https://github.com/markitics/laurelharned/pull/30).

- [#21](https://github.com/markitics/laurelharned/issues/21) Playback engine and sync architecture - Website and shared platform; Media.
  Choose the playback engine, add Media Session and same-browser handoff, load signed-in D1 progress, and document the future device-sync path.
  Shipped: Native media + sync notes.
  GitHub updated: 2026-05-05T22:39:28Z.
  PRs: [#23](https://github.com/markitics/laurelharned/pull/23).

- [#19](https://github.com/markitics/laurelharned/issues/19) Musician email portal - Website and shared platform; Email.
  Admin campaign drafts, preview sends, confirmed-subscriber broadcasts, inbound inbox rows, message attempts, and per-artist usage accounting are D1-backed.
  Shipped: Admin email.
  GitHub updated: 2026-05-06T12:34:49Z.
  PRs: [#29](https://github.com/markitics/laurelharned/pull/29).

- [#12](https://github.com/markitics/laurelharned/issues/12) Livestream room and chat foundation - Website and shared platform; Live.
  Make the live room D1-backed, add admin room controls, and lay the Cloudflare-native path for realtime chat/moderation.
  Shipped: D1 live room.
  GitHub updated: 2026-05-06T10:30:06Z.
  PRs: [#28](https://github.com/markitics/laurelharned/pull/28).

- [#11](https://github.com/markitics/laurelharned/issues/11) Stripe payments - Website and shared platform; Commerce.
  Stripe Checkout Sessions, signed webhook persistence, listener purchase history, and D1-backed admin commerce reporting are wired.
  Shipped: Checkout + webhook.
  GitHub updated: 2026-05-06T08:25:12Z.
  PRs: [#27](https://github.com/markitics/laurelharned/pull/27).

- [#10](https://github.com/markitics/laurelharned/issues/10) R2 upload workflow - Website and shared platform; Media.
  Let Laurel upload audio/video and optional artwork from `/admin`; the Worker writes files to R2, publishes metadata into D1, and serves uploaded media with range requests.
  Shipped: Admin uploads.
  GitHub updated: 2026-05-06T01:22:12Z.
  PRs: [#24](https://github.com/markitics/laurelharned/pull/24).

- [#9](https://github.com/markitics/laurelharned/issues/9) Laurel Instagram media import - Website and shared platform; Media.
  Homepage hero and media rail now use a committed Laurel Instagram snapshot with source links and a documented path to official Meta API import.
  Shipped: Instagram snapshot.
  GitHub updated: 2026-05-06T06:53:56Z.
  PRs: [#26](https://github.com/markitics/laurelharned/pull/26).

- [#8](https://github.com/markitics/laurelharned/issues/8) Automated browser journey tests - Website and shared platform; QA.
  Codify listener sign-in, comments, sign-out, and admin editing journeys so deployments are tested like a human would use them.
  Shipped: Playwright + Wrangler.
  GitHub updated: 2026-05-05T21:49:31Z.
  PRs: [#18](https://github.com/markitics/laurelharned/pull/18).

- [#7](https://github.com/markitics/laurelharned/issues/7) Email confirmation and magic-link login - Website and shared platform; Auth.
  Cloudflare Email sends account verification and magic links; newsletter confirmation signs the listener in and confirms the global Laurel mailing list.
  Shipped: Magic links.
  GitHub updated: 2026-05-06T05:11:02Z.
  PRs: [#20](https://github.com/markitics/laurelharned/pull/20), [#25](https://github.com/markitics/laurelharned/pull/25).

- [#6](https://github.com/markitics/laurelharned/issues/6) Mark owner and Laurel artist-admin roles - Website and shared platform; Auth.
  Document and enforce Mark's owner privileges, Laurel's artist-admin privileges, and normal listener account permissions.
  Shipped: Admin gate.
  GitHub updated: 2026-05-05T08:18:56Z.
  PRs: [#16](https://github.com/markitics/laurelharned/pull/16).

- [#5](https://github.com/markitics/laurelharned/issues/5) Real D1-backed admin dashboard - Website and shared platform; Admin.
  Admin reads live D1 tracks, performances, subscribers, comments, and drafts, and can add/edit Laurel tour dates.
  Shipped: D1 dashboard.
  GitHub updated: 2026-05-05T09:55:46Z.
  PRs: [#17](https://github.com/markitics/laurelharned/pull/17).

- [#4](https://github.com/markitics/laurelharned/issues/4) Real open-source audio playback - Website and shared platform; Media.
  Replace simulated playback with a legal open-source/public-domain audio source, attribution, and real play/pause/progress.
  Shipped: Real playback.
  GitHub updated: 2026-05-05T07:16:36Z.
  PRs: [#15](https://github.com/markitics/laurelharned/pull/15).

- [#3](https://github.com/markitics/laurelharned/issues/3) Public project tracker - Website and shared platform; Operations.
  A public roadmap backed by GitHub issues so project status survives chat compaction and late-night context drift.
  Shipped: This page.
  GitHub updated: 2026-05-05T04:55:37Z.

- [#2](https://github.com/markitics/laurelharned/issues/2) Listener accounts, newsletter, comments, and D1 persistence - Website and shared platform; Listener data.
  Better Auth email/password accounts, newsletter rows, timed comments, progress writes, and the first account page.
  Shipped: Deployed.
  GitHub updated: 2026-05-05T04:30:48Z.

- [#1](https://github.com/markitics/laurelharned/issues/1) Cloudflare foundation and first deployment - Website and shared platform; Foundation.
  Next.js on Cloudflare Workers via OpenNext, D1, R2, migrations, seed data, custom routes, and deployment notes.
  Shipped: Deployed.
  GitHub updated: 2026-05-05T04:30:46Z.

### Maybe

- [#35](https://github.com/markitics/laurelharned/issues/35) Official Instagram import via Meta OAuth - Website and shared platform; Media.
  Replace the committed Instagram snapshot with an official API import, scheduled refreshes, R2 copies, and manual curation controls.
  GitHub updated: 2026-05-10T01:24:16Z.

- [#32](https://github.com/markitics/laurelharned/issues/32) Stripe Connect platform accounts for Fanful artists - Website and shared platform; Commerce.
  Onboard each musician as a connected account, route money directly to artists, and collect a platform fee if Fanful becomes a business.
  GitHub updated: 2026-05-13T13:07:17Z.

### Unlikely

- [#43](https://github.com/markitics/laurelharned/issues/43) AI-assisted admin drafts and content curation - Website and shared platform; Admin.
  Help artists draft newsletters, performance notes, captions, and product copy from site context, with human review before publishing.
  GitHub updated: 2026-05-10T01:24:17Z.
