Files
GearBox/.planning/phases/32-setup-sharing-system/32-DISCUSSION-LOG.md

5.1 KiB

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

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)