video-sharing
Video Sharing
Rule
Recording sharing uses the framework sharing system — not a custom share table. Recordings are registered via registerShareableResource({ type: "recording", ... }) in server/db/index.ts. The share-resource, unshare-resource, list-resource-shares, and set-resource-visibility actions are auto-mounted and handle per-user grants, per-org grants, and the three visibility levels (private / org / public).
Unlike the framework-wide private default, normal Clips recordings and uploaded videos default to public so their copied share links work immediately. Embedded bug-report recordings are the exception and default to organization visibility. Callers can still explicitly create a private or organization-only recording, and owners/admins can change visibility from the Share dialog.
Clips adds two things on top of the framework system:
- Password — an optional bcrypt'd string on the
recordingsrow. When set, all non-owner viewers must enter it to play the recording. expiresAt— an optional ISO timestamp on therecordingsrow. After this time, all non-owner access is denied (even to principals with explicit grants).
These are additive — they never grant access the framework denies, only tighten it.