# 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)