@marver-design/marver 0.11.1 → 0.12.0

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.
Files changed (39) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +1 -1
  3. package/dist/auth-DdUKeVKt.mjs +1150 -0
  4. package/dist/{build-DI31MFTB.mjs → build-DmfxJc6L.mjs} +188 -33
  5. package/dist/cli.mjs +16 -7
  6. package/dist/collab-BmaOjwP1.mjs +781 -0
  7. package/dist/{comments-CRqaO2MH.mjs → comments-pNxjTrGN.mjs} +3 -2
  8. package/dist/{daemon-DSmaS453.mjs → daemon-WjonKlPz.mjs} +3 -3
  9. package/dist/{dev-BWIL2ewj.mjs → dev-BXq7yE1p.mjs} +5 -5
  10. package/dist/events-C9k-ceOj.mjs +101 -0
  11. package/dist/{init-BSclDg4I.mjs → init-BpitOqRQ.mjs} +2 -3
  12. package/dist/{config-t9coJ-Pq.mjs → manifest-CS6krOTe.mjs} +236 -4
  13. package/dist/{marver-id-B8-3WiHk.mjs → marver-id-CVCoaMGI.mjs} +106 -1
  14. package/dist/{marver-id-gate-BDzW6ahN.mjs → marver-id-gate-DOjnZakC.mjs} +94 -6
  15. package/dist/{plugin-DjBFxEQ7.mjs → plugin-Boy7I_JH.mjs} +82 -9
  16. package/dist/{profile-DcsJyppw.mjs → profile-ChpTPd-X.mjs} +1 -1
  17. package/dist/{serve-3APqaNSB.mjs → serve-BeLLizNg.mjs} +70 -17
  18. package/dist/share-C64b1tdN.mjs +159 -0
  19. package/dist/summary-Bf9tiGrE.mjs +211 -0
  20. package/dist/{sync-DELGomPk.mjs → sync-WYxDN9IT.mjs} +3 -102
  21. package/package.json +1 -1
  22. package/src/client/shell/App.tsx +43 -8
  23. package/src/client/shell/Comments.tsx +9 -5
  24. package/src/client/shell/LockedApp.tsx +113 -0
  25. package/src/client/shell/Play.tsx +97 -18
  26. package/src/client/shell/Toolbar.tsx +26 -2
  27. package/src/client/shell/canvas/Canvas.tsx +5 -15
  28. package/src/client/shell/canvas/ctl.ts +26 -0
  29. package/src/client/shell/comments-store.ts +39 -9
  30. package/src/client/shell/hash.ts +19 -0
  31. package/src/client/shell/icons.tsx +1 -0
  32. package/src/client/shell/store.ts +54 -3
  33. package/src/client/shell/styles.css +27 -0
  34. package/src/shared/events.ts +8 -3
  35. package/dist/auth-B5yuwnOq.mjs +0 -494
  36. package/dist/collab-CWaG3Q4w.mjs +0 -340
  37. package/dist/manifest-C2tzkNaC.mjs +0 -233
  38. package/dist/update-DuWDj5nR.mjs +0 -77
  39. package/dist/utm-CxC3QN5X.mjs +0 -20
package/CHANGELOG.md CHANGED
@@ -2,6 +2,66 @@
2
2
 
3
3
  Notable changes to `@marver-design/marver`. Format follows [Keep a Changelog](https://keepachangelog.com); versions follow semver.
4
4
 
5
+ ## 0.12.0 - 2026-08-31
6
+
7
+ ### Added
8
+
9
+ - **Sharing: grant people access to a canvas, person by person, from the terminal or
10
+ the browser.** On a canvas with a persistent volume and an owner account, `marver share`
11
+ manages a roster of *people* - who may open the canvas, who may comment, and until when -
12
+ over the canvas's owner-only routes; the browser share dialog drives the same routes.
13
+ `add`, `remove`, `block`, `unblock`, `general <mode>`, `list`, `requests`, `explain`, and
14
+ `who` cover the whole surface. Exact-email grants work on a password canvas; domain grants
15
+ (`@acme.com`), refused-visitor access requests, and the front door need Marver Sign In.
16
+ The full guide is [docs/sharing.md](docs/sharing.md).
17
+
18
+ **One resolver, one place.** A single pure function answers "what can this person do here" -
19
+ blocklist first (the only deny), then the owner, then grants additive with the highest match
20
+ winning, then a general-access floor, all clamped by each board's published ceiling. The gate
21
+ and comment writes enforce from it, reading one `share.json`, so the policy is one thing in
22
+ one place rather than a rule re-implemented per door. `marver share explain <email>` traces
23
+ it for one person and `marver share who` prints the grant matrix (both convenience views -
24
+ the dialog is the accurate read for the owner and for domain principals).
25
+
26
+ - **`design/publish.json` v2: a board can carry its artifact type and landing view, not just
27
+ its ceiling.** A board level may now be an object - `{ "max": "read" | "comment", "type":
28
+ "doc" | "slides" | "design" | "sketch" | "refs" | "mix", "open": "canvas" | "board" |
29
+ "present" | "focus" | "slides", "lock": true }` - where `max` is the ceiling (the only
30
+ field that affects access) and the rest choose how the board presents. `open` accepts all
31
+ five view names, but slides mode is v1.5: `open: "slides"` currently lands in `present`.
32
+ Every 0.11 canvas parses unchanged: a bare `"read"` or `"comment"` string is still a valid
33
+ row. (This is a schema version, unrelated to the read-privacy "v2" below.) Source paths
34
+ in a published bundle now go opaque by default (`reveal.source` defaults off) - the inlined
35
+ manifest used to carry every frame's repo path, which is a disclosure the moment a canvas
36
+ is shared beyond its own repo.
37
+
38
+ - **Access requests: a refused visitor can ask, and you can approve from the terminal.** When
39
+ someone is turned away at the identity gate, the canvas offers a request form instead of a
40
+ dead end (authenticated by a short-lived, origin-bound, single-purpose token - the refused
41
+ visitor has no session). Requests surface in `marver share requests` and the dialog;
42
+ approving grants canvas-wide at the role you choose, declining resolves silently. One
43
+ pending row per address, swept after 30 days.
44
+
45
+ - **The front door at `app.marver.design`.** A signed-in home page that lists the canvases a
46
+ person can reach, each row lit by a short summary the canvas itself signs and serves. The
47
+ front door holds no roster and makes no access decision - it asks each canvas, and each
48
+ canvas answers for itself, against browser-pinned keys. Keep a canvas silent there with
49
+ `share: { frontDoor: false }` in `design/config.ts`.
50
+
51
+ ### Notes
52
+
53
+ - **Read privacy is still v2.** Sharing v1 controls who gets in and who may comment; every
54
+ admitted person can read every published board. The read boundary today is the bundle - a
55
+ board you do not publish is not in the build. Grants are canvas-scoped and approvals are
56
+ canvas-wide by design; `share.json` is already shaped for the per-board, per-person read
57
+ privacy that arrives in v2, served rather than bundled.
58
+
59
+ - **First boot writes `share.json` from your live 0.11 state and changes nothing you did not
60
+ ask for.** Every existing account gets the canvas-wide `comment` grant it already had
61
+ (clamped per board); until that first boot, every door keeps the legacy rules. Raising a
62
+ board's ceiling never silently re-promotes anyone granted under the old one - the roster
63
+ ratchets down on every boot and only your explicit re-confirm raises an entry.
64
+
5
65
  ## 0.11.1 - 2026-08-27
6
66
 
7
67
  ### Fixed
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  **The agent-native design canvas.** A `design/` folder in your repo, one command, and a canvas of live frames built from your app's real components and theme. Your coding agent designs by writing files; the tool ships no AI.
8
8
 
9
- [marver.design](https://marver.design) · [Live Jam](docs/live-jam.md) · [Deploying a canvas](docs/publish.md) · [Changelog](CHANGELOG.md) · [Contributing](CONTRIBUTING.md) · [Issues](https://github.com/TNEP4/marver/issues)
9
+ [marver.design](https://marver.design) · [Live Jam](docs/live-jam.md) · [Deploying a canvas](docs/publish.md) · [Sharing](docs/sharing.md) · [Changelog](CHANGELOG.md) · [Contributing](CONTRIBUTING.md) · [Issues](https://github.com/TNEP4/marver/issues)
10
10
 
11
11
  ## Quickstart
12
12