Mark the pinned version in the revision history
- Dominant language
- Scala
- Stars
- 314
- Forks
- 187
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 214
Description
### Task Summary
Part of #7828. The author pins a version and their working copy moves on. This is their way
back: pinning leaves an anchor in the revision history they already use, and the panel marks it
as the one currently public, so restoring the published version is the restore they already
know — no second list of publications to learn.
- **The anchor** is a version row whose delta is the identity patch, so replaying it returns
exactly what was pinned however many edits pile up after. An existing version row cannot stand
in: a version row replays to the content as it was *before* the change it records.
- **Pinning unchanged content reuses its anchor** rather than adding a twin, and the read that
decides takes a row lock so two pins arriving together cannot both insert.
- **The anchor must not start the panel's aggregation window.** It lands seconds after the save
it freezes, and the panel folds close-together versions into the newest of them, which would
hide the author's own save behind a row they never made.
- **The revision history becomes readable only with granted access, or while nothing is
pinned.** Replaying a version folds deltas back from the author's *current* content, so
listing the versions of a pinned workflow would hand a public viewer exactly the edits the pin
is holding back. While following there is nothing to hold back, and the history stays open as
it is today.
- **`publish-status` carries the pinned version's date**, read from the version row so the
dialog and the panel print one value rather than two clocks'. The public view of a workflow is
dated by the version on show rather than by an edit the viewer cannot see.
Covered by `WorkflowPublishSpec` and `WorkflowVersionResourceSpec`: the anchor is left, marked
and important enough that neither collapsing rule hides it; the save it was taken from stays
visible; the mark moves when the pin moves; the anchor replays to exactly what was published
after two further edits; pinning again unchanged adds no second row; a stranger gets an empty
history for a pinned workflow but a full one while it follows; a collaborator keeps theirs.
### Task Type
- [ ] Refactor / Cleanup
- [ ] DevOps / Deployment / CI
- [ ] Testing / QA
- [ ] Documentation
- [ ] Performance
- [x] Other
Contributor guide
Assessment
This issue has not been assessed yet.