The personal role library (TYP-761): where a role is KEPT, as the document's table is where one
is USED. Applying from the library copies the role into the document — keeping its uuid, so the
same role in two documents is recognisably the same — as a swatch is copied from a palette.
In this browser's localStorage, per person, per device. That matches the preferences doctrine
("what to use when the user creates something NEW") and needs no service; shared organisation
presets would be one, and nothing here stands in their way.
⚠️ Storage can be missing or refuse writes (a private window, a sandboxed frame, a full quota).
Every access is guarded, and a library that cannot be read is simply empty — the document's own
roles never depend on it.
The personal role library (TYP-761): where a role is KEPT, as the document's table is where one is USED. Applying from the library copies the role into the document — keeping its uuid, so the same role in two documents is recognisably the same — as a swatch is copied from a palette.
In this browser's localStorage, per person, per device. That matches the preferences doctrine ("what to use when the user creates something NEW") and needs no service; shared organisation presets would be one, and nothing here stands in their way.
⚠️ Storage can be missing or refuse writes (a private window, a sandboxed frame, a full quota). Every access is guarded, and a library that cannot be read is simply empty — the document's own roles never depend on it.