Version history UI: list, view, diff, restore #42
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#42
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
Users need to see who changed what and restore old states (ADR 0013).
Scope
Page history panel: version list (time, trigger, label, contributors), read-only render of a selected version (Yjs snapshot → doc → HTML via shared code), text diff against current (markdown-level, insert/delete highlighting), restore action (creates
pre_restoresnapshot, applies restored content as a regular update through the collab document so live participants converge). API endpoints for list/get/restore.Acceptance criteria
Technical notes
Dependencies
Depends on #41.
Size: ~2 days
Conventions: English code/comments, clear human-readable code, no hard-coded UI strings (ADR 0012, add
deanden), permission checks only via the shared guard (docs/architecture/permissions.md). Read the referenced ADRs before starting.Done in
1bda137. Version history: list, view, diff, restore (ADR 0013). Completes M3.diffMarkdown(unit-tested);PageVersionContentView;page_restoreNOTIFY channel.GET /pages/:id/versions(list),GET .../:versionId(read-only HTML + Markdown for diffing),POST .../:versionId/restore. All write-permission-gated (history is gated like editing, permissions.md). Restore checks permission then emits the notification; the api never deletes a version.page_restorelistener applies the restore on the live document viaopenDirectConnection— snapshots the current state asPRE_RESTORE, then replaces the content in one transaction, so every connected client converges and it persists like a normal edit.HistoryPanel(version list with time/trigger/label/contributors, read-only render, Markdown diff vs current, restore), toggled from the page menu. de+en.AC:
Pipeline green (CI+CD, Test+Int). Live on Test (fixture-user): created a named version (label+creator), listed, fetched content, restored → collab logged
restore.appliedand history shows manual + pre_restore + auto (append-only). With this, M3 (#33–#42) is complete.