--- status: complete phase: 32-setup-sharing-system source: [32-01-SUMMARY.md, 32-02-SUMMARY.md, 32-03-SUMMARY.md, 32-04-SUMMARY.md] started: 2026-04-13T18:00:00.000Z updated: 2026-04-19T00:00:00Z --- ## Current Test [complete] ## Tests ### 1. Visibility badge on setup cards expected: On the setups list page, each setup card shows a visibility indicator. Public setups show a green globe icon, link-shared show a blue link icon, and private show a gray lock icon. result: PASS ### 2. Share button on setup detail page expected: On a setup detail page (as the owner), there's a "Share" button (desktop: text + icon, mobile: icon-only 44px touch target) that replaces the old public/private globe toggle. The icon reflects the current visibility state. result: PASS ### 3. Share modal — visibility picker expected: Clicking the Share button opens a modal with three visibility options: Private (gray), Link (blue), Public (green). Selecting one immediately updates the setup's visibility via API call. Current state is highlighted. result: PASS ### 4. Share modal — create share link expected: In the share modal, there's a section to create share links with an expiration dropdown (7 days, 14 days, 30 days, No expiration). Creating a link generates a URL and shows it in the active links list. result: PASS ### 5. Share modal — copy and revoke links expected: Each active share link in the modal has a copy-to-clipboard button and a revoke button. Copying puts the URL in the clipboard. Revoking removes the link from the active list. result: PASS ### 6. Share modal — private deactivates links expected: When switching visibility to "Private" while share links exist, links are deactivated (not deleted). Switching back to "Link" reactivates them. result: PASS ### 7. Short URL access (/s/token) expected: Visiting /s/{token} redirects to /setups/{id}?share={token}. The setup loads correctly showing its items and totals. result: PASS ### 8. Shared setup viewer — read-only mode expected: When viewing a setup via share token, a blue "Shared setup" banner appears at the top. All owner controls are hidden: no Add Items, no Share button, no Delete, no item removal, no classification cycling. result: PASS ### 9. Invalid share token error expected: Visiting a setup with an invalid or expired share token shows a "Link not available" error page instead of the setup content. result: PASS ### 10. Discovery feed uses visibility expected: Only setups with visibility="public" appear on the discovery feed and profile pages. Link-shared and private setups do not appear. result: PASS ## Summary total: 10 passed: 10 issues: 0 pending: 0 skipped: 0 ## Gaps [none]