docs(32): capture phase context
This commit is contained in:
141
.planning/phases/32-setup-sharing-system/32-DISCUSSION-LOG.md
Normal file
141
.planning/phases/32-setup-sharing-system/32-DISCUSSION-LOG.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# Phase 32: Setup Sharing System - Discussion Log
|
||||
|
||||
> **Audit trail only.** Do not use as input to planning, research, or execution agents.
|
||||
> Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
|
||||
|
||||
**Date:** 2026-04-13
|
||||
**Phase:** 32-Setup Sharing System
|
||||
**Areas discussed:** Visibility model, Share UX & controls, Schema future-proofing, Public setup presentation
|
||||
|
||||
---
|
||||
|
||||
## Visibility Model
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Unlisted link (no token) | Setup ID in URL is the 'key'. Simple but IDs are guessable. | |
|
||||
| Secret token link | URL contains random token. More secure, requires generation/storage. | ✓ |
|
||||
| Two levels only (private/public) | Keep current boolean. Skip link-sharing. | Rejected by user upfront |
|
||||
|
||||
**User's choice:** Secret token link
|
||||
**Notes:** User explicitly stated "ditching the link share ain't it" — three levels are required.
|
||||
|
||||
### Follow-up: Share URL format
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| /setups/42?share=token | Query param on existing route | |
|
||||
| /s/token (short URL) | Dedicated short route, cleaner for sharing | ✓ (both) |
|
||||
|
||||
**User's choice:** Both should work, but `/s/token` is primary for sharing because it's shorter.
|
||||
|
||||
### Follow-up: Token revocation
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Regenerate button (single token) | One token per setup, regenerate invalidates old | |
|
||||
| Full shares list with management | Multiple shares per setup, each with permission/expiration/revocation | ✓ |
|
||||
|
||||
**User's choice:** Full shares management. Multiple coexisting shares with different permissions (read/write), expirations (default 14 days, settable, or infinite), individually revocable. Vision includes person-specific shares with write access.
|
||||
|
||||
### Follow-up: Scope check
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Read shares now, write schema only | Implement read link shares. Schema includes write/person columns unused. | ✓ |
|
||||
| Full system now | Implement everything including write shares and person-specific shares. | |
|
||||
| Minimal + schema | Single share link only. Full schema but minimal UI. | |
|
||||
|
||||
**User's choice:** Read shares now, write permission schema only.
|
||||
|
||||
---
|
||||
|
||||
## Share UX & Controls
|
||||
|
||||
### Visibility control UI
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Dropdown selector | Replace globe with dropdown for visibility levels | |
|
||||
| Visibility section in panel | Dedicated section below setup content | |
|
||||
| Modal dialog | Share button opens Google Docs-style modal | ✓ |
|
||||
|
||||
**User's choice:** Modal dialog
|
||||
|
||||
### Share button appearance
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Share icon button | Replace globe toggle with share icon showing visibility state | ✓ |
|
||||
| Keep globe + add share | Two buttons, two functions | |
|
||||
| Text button with state | Labeled button showing current state | |
|
||||
|
||||
**User's choice:** Share icon button
|
||||
|
||||
### Default expiration
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| 14 days default | Safe default, options for 7d/30d/infinite | ✓ |
|
||||
| No expiration default | Permanent by default, optional expiration | |
|
||||
| You decide | Claude picks | |
|
||||
|
||||
**User's choice:** 14 days default
|
||||
|
||||
---
|
||||
|
||||
## Schema Future-Proofing
|
||||
|
||||
### Shares table design
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Full shares table now | Complete table with permission, userId, expiresAt, revokedAt | ✓ |
|
||||
| Link shares only, extend later | Simpler table, add columns in future migrations | |
|
||||
| You decide | Claude picks based on tradeoffs | |
|
||||
|
||||
**User's choice:** Full shares table now
|
||||
|
||||
### Visibility storage
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Column on setups table | Replace isPublic with visibility text column | ✓ |
|
||||
| Derived from shares | No column, derive from shares table via JOINs | |
|
||||
|
||||
**User's choice:** Column on setups table — best for query speed, but must prevent conflicts with shares.
|
||||
**Notes:** User emphasized "it must be done right to prevent conflicts with the shares"
|
||||
|
||||
---
|
||||
|
||||
## Public Setup Presentation
|
||||
|
||||
### Link-shared viewer experience
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Same as public view | Identical to public setup view | |
|
||||
| Shared view with context | Subtle banner showing share status and expiration | |
|
||||
| You decide | Claude picks based on existing patterns | ✓ |
|
||||
|
||||
**User's choice:** Claude's discretion
|
||||
|
||||
### Discovery feed changes
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| No changes needed | Just update query from isPublic to visibility | ✓ |
|
||||
| Add share count indicator | Show social proof on setup cards | |
|
||||
|
||||
**User's choice:** No changes for Phase 32.
|
||||
**Notes:** Person-specific shares influencing feed algorithm is deferred to future.
|
||||
|
||||
## Claude's Discretion
|
||||
|
||||
- Viewer experience for link-shared setups (shared banner vs. clean view)
|
||||
|
||||
## Deferred Ideas
|
||||
|
||||
- Person-specific shares influencing discovery feed algorithm
|
||||
- Write-access share enforcement (collaborative editing)
|
||||
- Person-specific share UI (invite by username/email)
|
||||
Reference in New Issue
Block a user