feat(collabs): add approval inbox and invite-to-existing-video flow#285
Open
rabble wants to merge 16 commits into
Open
feat(collabs): add approval inbox and invite-to-existing-video flow#285rabble wants to merge 16 commits into
rabble wants to merge 16 commits into
Conversation
Operator-facing desktop tool so partner accounts (Sony, Spider-Man, Tom
Holland, etc.) can log in/out as each account on web — where login
switching actually works — and approve collab invites posted from
mobile, plus invite collaborators onto already-published videos.
Three tabs at /collabs/{inbox,invite,confirmed}. Inbox discovers pending
invites with a relay query (kind 34236 #p=me, minus kind 34238 from me);
approve publishes kind 34238. Invite republishes kind 34236 with the
same d-tag and appended p-tags, preserving every original tag verbatim
(imeta, title, etc.). Confirmed reads /api/users/{me}/collabs.
Public p-tag invite model (no NIP-59 giftwrap in v1); privacy caveat
documented. Funnelcake change deferred — relay query is fine at partner
scale.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
15 TDD tasks split across three chunks: pure helpers + NIP-05 resolver (Tasks 1-2), data hooks (Tasks 3-7), UI tabs and routing (Tasks 8-15). Each task is RED/GREEN bite-size with explicit test code, exact paths, and a single commit. No backend changes required — relay-side discovery + existing useNostrPublish flow. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/collabspage (Inbox / Invite / Confirmed tabs) for partner accounts (e.g. Sony, Spider-Man, Tom Holland) to approve collab invites and add collaborators to videos they've already published.["a", "34236:creator:d-tag"].d-tag and appendedp-tags. Every original tag (imeta, title, etc.) is preserved verbatim./api/users/{me}/collabsfrom funnelcake and shows the videos where my acceptance is confirmed. Sanity check, not the public surface.Spec: docs/superpowers/specs/2026-04-27-collabs-web-tool-design.md
Plan: docs/superpowers/plans/2026-04-27-collabs-web-tool.md
Known follow-ups (NOT in this PR)
divine-funnelcake/crates/clickhouse/src/client.rs:get_user_feedfiltersWHERE vs.pubkey IN (following_list)and ignoresvideo_collaborators_current_data. Until that's fixed, approved collabs do not appear in followers' home feeds. Tracked as a separate funnelcake PR.unwrapListResponseenvelope helper lives onfix/funnelcake-envelope-tolerant. This PR uses an inlineasVideoArrayfallback marked// TODO(collab): replace with shared unwrapListResponse once that lands(src/lib/funnelcakeClient.ts).Card variant="brand"andButton variant="sticker"described in CLAUDE.md don't exist yet; new components fall back to plain<Card>andvariant="outline". Future brand sweep can revisit.Out of scope (deliberately)
Decline / reject button. Remove-collaborator. NIP-59 giftwrap (privacy caveat documented in spec). Funnelcake
/collabs/pendingendpoint. Mobile-pretty layout. In-tool account switcher.Test plan
🤖 Generated with Claude Code