Repository navigation
deliverables: a Deliverables tab on the project, each file with its own public link - #106
Merged
Merged
Conversation
…wn public link A deliverable is one markdown file a guide uploads into the project's `Deliverables` folder (a new `deliverables` folder type, made on first upload with a deterministic id). The tab lists them for everyone on the project; a Guide or staff uploads, replaces in place (same id, same link) and flips each file's share switch (`file_refs.shared_at`, never `is_public`). The public page at `/public/deliverable/<fileId>` renders the file like a website page with no login, serves only the file ids the body names, and offers the markdown source to download. The link is the file's own id: the ids are 20 random characters, already unguessable, so no token table (`public-link-rule` composted). The Efforts share is untouched; its control is now the shared `ShareLinkControl`. The PDF is the next round. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
JanitorText a model or an agent reads changed in this branch (against
|
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.
What
deliverablesfolder type under a project, created by the first upload from the new Deliverables tab (second after Efforts; every group reads it).file_refs.shared_at, written only bysetDeliverableShared: a Guide on the project or staff. Notis_public, which would open the folder-browsing routes too./public/deliverable/<fileId>: rendered like a website page (WebsitePageContent+ the website directive registry), no Vault chrome, no login; serves only the file ids the body names (/api/deliverable/<fileId>/view|rendition/<id>); markdown source at/api/deliverable/<fileId>/download. 404 when off or the project is trashed.publicBody.ts: the one definition of "a file URL in a body", used by the shared Efforts page and the deliverable page.ShareLinkControlextracted so the Efforts share and a deliverable share are one element.Why ids, not tokens
The record ids are 20 random lowercase alphanumerics (about 103 bits). A token table would have bought only link rotation, which the seed said is not wanted.
public-link-ruleis composted on the board with that note.Tests
fruits/app/tests/deliverables.test.tsx(14),deliverablesResolve.test.ts(3), amediaUrlscase; webappfeatures/dashboardtab lists updated.tscclean./public/file/<id>stays 404, non-markdown refused, second upload reuses the folder.Not in this PR
The server-rendered PDF (next round on the same seed).
🤖 Generated with Claude Code