Skip to content

feat: add organization private sharing default and viewer invites - #2306

Open
richiemcilroy wants to merge 2 commits into
mainfrom
feature/organization-private-sharing-20260917
Open

richiemcilroy wants to merge 2 commits into
mainfrom
feature/organization-private-sharing-20260917

Conversation

@richiemcilroy

@richiemcilroy richiemcilroy commented Sep 17, 2026

Copy link
Copy Markdown
Member

Why

An organization can need new recordings to start Private while still inviting external viewers by email. The existing link sharing default remains in place until an owner or admin selects Private.

What changed

  • Add an organization preference for new recording visibility. The database column is nullable with no Private default; signup leaves it unset. The existing instance visibility setting defaults to public, so new signup organizations and their recordings stay public unless Private is selected. Existing recordings retain their own visibility, and an explicitly configured instance default remains effective.
  • Apply that preference in desktop, mobile, web upload, agent API, Loom import, and backend creation paths.
  • Let recording owners invite, list, and revoke viewers by email. A signed-in viewer with the invited email can open a Private recording, including from outside the organization domain. An invitation also grants access when an email domain restriction is enabled. Password gates still apply.
  • Show invited viewers in the sharing dialog and provide sign-in/account-switch guidance on the share page.
  • Add the viewer-grant table and nullable organization visibility column through generated migration 0046.

Verification

  • 176 focused Vitest tests passed in the final pre-publication run; 273 related tests passed during implementation.
  • TypeScript project typecheck, Drizzle migration check, database package build, scoped Biome, and git diff --check passed. Biome reports existing warnings in untouched VideosRepo.ts lines.
  • Read-only merge simulation with current main completed without conflicts.

Deployment note

Apply generated migration 0046 before deploying code that reads the new schema. UI runtime was not exercised in a browser because the repository prohibits starting another dev server.

Related: #2140 covers an older, overlapping organization default sharing proposal.

RetriggerConfidence Score: 5/5

The PR appears safe to merge, with no actionable new issue found in the changes since the previous review.

Summary

This PR adds organization-level default visibility for new recordings and email-based viewer grants for private recordings.

  • Applies the organization visibility preference across web, desktop, mobile, agent, upload, and Loom-import creation paths.
  • Adds owner-managed viewer invitations, revocation, access-policy enforcement, and invited-viewer guidance.
  • Adds the corresponding database schema, generated migration artifacts, email template registration, sharing UI, documentation, and focused tests.
  • Changes since the previous review complete the recording-viewer invitation email catalog and application registry entries.

Reviews (2) · Last reviewed commit: "fix: register recording viewer invitatio..."

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant