@praxisui/page-builder 10.0.0-rc.7 → 10.0.0-rc.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,6 +4,54 @@ Visual page and dashboard builder for Praxis UI applications.
4
4
 
5
5
  Use this package when an application must let users compose governed operational pages from registered widgets, visual layout, shell settings, component editors, `composition.links`, and optional AI-assisted authoring.
6
6
 
7
+ ## Dashboard pages and persistence ownership
8
+
9
+ A dashboard is a `WidgetPageDefinition` rendered by `praxis-dynamic-page` and edited
10
+ by `praxis-dynamic-page-builder`. The beta `PraxisDashboardPage` wrapper was removed;
11
+ use these existing components instead. Application titles, toolbar presentation and
12
+ business navigation remain host concerns.
13
+
14
+ For manual page editing, opt in to the Core persistence lifecycle:
15
+
16
+ ```html
17
+ <praxis-dynamic-page-builder
18
+ #builder
19
+ [page]="defaultPage"
20
+ [pageIdentity]="identity"
21
+ [autoPersist]="true"
22
+ [enableCustomization]="editing"
23
+ (persistenceChange)="persistence = $event"
24
+ />
25
+ ```
26
+
27
+ `autoPersist` defaults to `false` on the builder, preserving its previous effective
28
+ behavior (the child runtime previously always received `false`). Hosts that already
29
+ persist `pageAuthoringChange`/`pageSaveRequested` must leave it disabled. Core Dynamic
30
+ Page keeps its own existing default. Do not enable a second host writer when Core
31
+ owns persistence.
32
+
33
+ Pass `PageIdentity` with the application's actual tenant/user/route. Core uses the
34
+ configured `ASYNC_CONFIG_STORAGE`; no separate localStorage cache, browser globals
35
+ or persona-specific host reconciler is needed. Storage identity is not backend
36
+ authorization. Persisted documents, including an empty widget list, are authoritative;
37
+ new factory widgets are not silently appended to a user's saved page.
38
+
39
+ `persistenceChange` forwards Core's operational `WidgetPagePersistenceState`:
40
+ `idle`, `loading`, `saving`, `saved`, `resetting` or `error`, with `customized`, optional
41
+ ISO `savedAt`, operation and a safe `errorKind`. Show success only after acknowledgement,
42
+ and distinguish conflicts from a pending or failed write. It is not business metadata
43
+ and must not be persisted in `WidgetPageDefinition`.
44
+
45
+ `builder.resetPersistedPage(defaultPage)` deletes this identity's saved page and applies
46
+ the supplied default only after acknowledgement. `builder.reloadPersistedPage(defaultPage)`
47
+ explicitly discards the draft and reloads storage, using the supplied default when no saved
48
+ page exists. Make that destructive-to-draft intent visible in the host. The existing Save
49
+ button retries through Core for manually managed pages; conflicts require an explicit reload.
50
+
51
+ For `authoringDocument` or agentic authoring, Core automatic persistence is disabled even
52
+ when requested: the existing host/server apply lifecycle owns revisions and provenance.
53
+ An AI preview must never be saved through an automatic generic config write.
54
+
7
55
  ## Widget shell editor integrity
8
56
 
9
57
  The shell editor exposes **Keep header visible while scrolling the page**
@@ -1089,6 +1137,10 @@ losing unrelated context. Arrangement choices track their draft baseline even wh
1089
1137
  selected distribution initially produces no changes, so later edits clear stale status.
1090
1138
  These fixes are not part of the already published 9.0.68-rc.2 package.
1091
1139
 
1140
+ `retryPersistedPage()` retries the current draft after a non-conflict save failure,
1141
+ including empty pages, without emitting host save lifecycle events. Conflicts require
1142
+ explicit `reloadPersistedPage(defaultPage)`; reload discards the local draft.
1143
+
1092
1144
  <!-- praxis-npm-catalog-links:start -->
1093
1145
  ## Official documentation and examples
1094
1146