Expose project version history

This commit is contained in:
2026-07-25 22:56:51 +02:00
parent 384a5769ab
commit d00ae30bda
13 changed files with 759 additions and 10 deletions
+2 -2
View File
@@ -143,5 +143,5 @@ Covered operations include:
- apply sorted order
The toolbar currently exposes availability through its Undo/Redo buttons.
Named restore points can be created, listed and restored through the API. A
browsable revision/snapshot UI remains future work.
Named restore points and the revision timeline are available on the project
page; the circuit editor keeps only the compact Undo/Redo controls.
@@ -4,11 +4,10 @@
persistent project commands and project-wide toolbar undo/redo, including
moves, atomic multi-section reorders and explicit renumbering. Undo/redo
eligibility is restored from server history after a page reload.
- A paginated revision-metadata API exists, but there is no browsable timeline
UI yet; the editor currently exposes only the next eligible Undo/Redo
actions.
- The project page exposes the paginated revision timeline; the circuit editor
itself currently exposes only the next eligible Undo/Redo actions.
- Named logical project snapshots can be created, listed and restored through
the API with persistent Undo/Redo. Snapshot UI and periodic snapshots are
the project page with persistent Undo/Redo. Automatic periodic snapshots are
not implemented yet.
- No Revit/CSV/IFCGUID import and export workflow is implemented yet.
- Persistence currently targets local SQLite; PostgreSQL is an architectural option, not an implemented runtime.
+5
View File
@@ -117,6 +117,11 @@ ein vollständiges inverses Kommando. Undo und Redo können deshalb auch einen
Restore nach einem Neustart exakt zurücknehmen oder wiederholen. Kompatible
Upgrade-only-Verknüpfungen und Migrationsnachweise bleiben erhalten, obwohl sie
nicht Bestandteil des logischen Snapshots sind.
Die Projektseite bindet diese APIs in einem einklappbaren Bereich
„Versionen und Sicherungspunkte“ ein. Dort können Benutzer Sicherungspunkte
benennen, nach expliziter Bestätigung wiederherstellen und die paginierte
Revisions-Timeline mit deutschen Quellen- und Änderungsbezeichnungen lesen.
Nach einem Restore lädt die Seite sämtliche Projektdaten neu.
`circuit-device-row.move` verschiebt oder sortiert eine oder mehrere Zeilen
zwischen vorhandenen Stromkreisen derselben Liste. Erwartete und neue
Stromkreis-/Sortierpositionen machen Forward und Inverse deterministisch;
@@ -97,6 +97,9 @@ Implemented named-snapshot foundation:
separately and are never imported into the logical snapshot payload
- arbitrary restore payloads are rejected by the generic user-command
endpoint; only server-stored snapshots can initiate a forward restore
- the project page provides an initially collapsed snapshot/timeline panel,
explicit inline restore confirmation and cursor-based loading of older
revisions; a successful restore reloads all project read models
## Revit / CSV / IFCGUID Round-Trip Direction
@@ -252,7 +255,7 @@ Completed foundation:
Remaining constraints before completing project version history:
- add a browsable timeline/snapshot UI and periodic snapshot policy
- define and implement a periodic snapshot and retention policy
- extend project-scoped commands only when further project mutations are
deliberately added to history; the generic versioned envelope is complete
- do not model IFCGUID as an overloaded circuit equipment identifier
@@ -371,6 +371,8 @@ Tasks:
- add periodic logical project snapshots
- [x] restore a historical snapshot as a new auditable revision with
persistent undo/redo
- [x] expose named snapshots, confirmed restore and the paginated revision
timeline on the project page
- keep database backups separate from logical history
Implemented foundation:
@@ -397,6 +399,8 @@ Implemented foundation:
- named snapshot Create/List endpoints persist complete project-scoped runtime
state with the source revision and SHA-256 without changing revision or
undo/redo stacks
- the project page lists, creates and explicitly restores named snapshots and
displays paginated revision metadata without exposing command payloads
- a central application dispatcher reconstructs persisted commands and exposes
optimistic command, undo and redo endpoints for Circuit and CircuitDeviceRow
field updates