You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: specs/ROADMAP.md
+67-58Lines changed: 67 additions & 58 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -343,7 +343,7 @@ Track: Lead [M] [-][+3][+] [16] [▼]
343
343
344
344
Complete the sharing model defined in [SESSION-LIFECYCLE.md](./SESSION-LIFECYCLE.md).
345
345
346
-
> **Note:** The original "Sessions vs Beats" concept has been moved to Phase 12 (Publishing Platform) for reconsideration. The current Invite/Send Copy/Remix model covers core sharing needs.
346
+
> **Note:** The sharing model has been simplified. See [SHARING-AND-PUBLISHING.md](./SHARING-AND-PUBLISHING.md) for the current Publish/Invite/Remix/New model. Phase 18 implements publishing (immutable sessions) without the complexity of a separate "Beat" type.
347
347
348
348
#### Remaining Tasks
349
349
@@ -1419,81 +1419,90 @@ Allow multiplayer users to share recorded samples in real-time.
1419
1419
1420
1420
---
1421
1421
1422
-
### Phase 24: Publishing Platform (Beats)
1422
+
### Phase 24: Publishing (Immutable Sessions)
1423
1423
1424
-
> ⚠️ **NEEDS RETHINKING**— This phase was originally "Sessions vs Beats" but requires reconsideration. The core sharing model (Invite/Send Copy/Remix) already handles most use cases. This phase should only be pursued if there's clear demand for a publishing/social platform.
1424
+
> **Spec:**See [SHARING-AND-PUBLISHING.md](./SHARING-AND-PUBLISHING.md)for the complete specification.
1425
1425
1426
-
#### The Original Idea
1426
+
#### Summary
1427
1427
1428
-
Distinguish between:
1429
-
-**Session** — "Come make music with me" (mutable, collaborative)
1430
-
-**Beat** — "Listen to what I made" (immutable, presentational)
1428
+
Replace "Send Copy" with "Publish" — a single action that creates an immutable copy safe for 1:many broadcast.
1431
1429
1432
-
#### Why It Was Deferred
1430
+
#### The Simplified Model
1433
1431
1434
-
1.**"Send Copy" already creates snapshots** — Recipient gets a frozen copy at that moment
1435
-
2.**Immutability adds complexity** — Separate `/b/` URLs, readonly views, Beat data type
1436
-
3.**Against UI Philosophy** — Mode switching, separate views, extra flows
1437
-
4.**It's really a platform feature** — Publishing implies social features, discoverability, attribution
|**Attribution**| Artist name, track title, description |
1448
-
|**Social features**| Play count, likes, comments |
1449
-
|**Discoverability**| Browse, search, featured beats |
1450
-
|**User profiles**| "My published beats" gallery |
1448
+
#### Button Order
1451
1449
1452
-
#### Data Model (If Implemented)
1453
-
1454
-
```typescript
1455
-
interfaceBeat {
1456
-
id:string; // UUID v4
1457
-
sourceSessionId:string; // Session it was created from
1458
-
createdAt:number;
1459
-
createdBy:string|null; // User ID (requires auth)
1460
-
1461
-
// Metadata
1462
-
name:string; // Track title (required)
1463
-
description:string|null;
1464
-
tags:string[];
1465
-
1466
-
// State
1467
-
state:SessionState; // Frozen copy
1468
-
1469
-
// Social
1470
-
playCount:number;
1471
-
likeCount:number;
1472
-
isPublic:boolean; // Listed in browse/search
1473
-
}
1474
1450
```
1451
+
[Publish] [Remix] [New] [Invite]
1452
+
───────────────────────── ─────────
1453
+
Filled (safe) Outline (exposes session)
1454
+
```
1455
+
1456
+
Invite is visually separated and styled differently because it's the only action that exposes your editable session. Safe actions (which create copies) are grouped and prominent.
1457
+
1458
+
#### Key Design Decisions
1475
1459
1476
-
#### Questions to Answer First
1460
+
1.**Immutability at birth** — Published sessions are frozen forever, not toggleable
1461
+
2.**No separate URL scheme** — All sessions use `/s/{id}`, behavior determined by `immutable` flag
1462
+
3.**Text-only lineage** — "Remixed from X" shown as text, not a clickable link (prevents traversal attacks)
1463
+
4.**Teaching affordances** — Published sessions show prompts guiding users to Remix if they want to edit
1464
+
5.**Invite is distinct** — Outline style + separation signals "different intent" for collaboration
1477
1465
1478
-
1. Is there demand for public publishing, or is private sharing enough?
1479
-
2. Do we want to become a "platform" with user-generated content moderation needs?
1480
-
3. What's the minimum viable version that adds value beyond Send Copy?
1481
-
4. Should beats be tied to user accounts, or allow anonymous publishing?
1466
+
#### Implementation Tasks
1482
1467
1483
-
#### Possible Minimal Version
1468
+
**Data & API:**
1469
+
-[ ] Add `immutable: boolean` field to Session data model
Copy file name to clipboardExpand all lines: specs/SESSION-LIFECYCLE.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,7 @@
1
1
# Session Lifecycle & Sharing Specification
2
2
3
+
> **Note:** For the simplified sharing model (Publish/Invite/Remix/New), see [SHARING-AND-PUBLISHING.md](./SHARING-AND-PUBLISHING.md). This document covers the session state machine, orphan handling, and admin observability requirements. The sharing flows below will be updated to align with the new model.
4
+
3
5
## Overview
4
6
5
7
This document defines the session state machine, sharing modes, remix lineage, orphan handling, and admin observability requirements.
Copy file name to clipboardExpand all lines: specs/SESSION-SHARING.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,7 @@
1
1
# Session Sharing Specification
2
2
3
+
> ⚠️ **DEPRECATED** — This spec has been superseded by [SHARING-AND-PUBLISHING.md](./SHARING-AND-PUBLISHING.md), which defines a simplified model with Publish/Invite/Remix/New actions. The information below is retained for historical context but should not be used for new implementation work.
4
+
3
5
> **See also:**[SESSION-LIFECYCLE.md](./SESSION-LIFECYCLE.md) for the full session state machine, sharing modes (Remix vs Share Session vs Share Snapshot), and admin dashboard requirements.
0 commit comments