Skip to content

Surface materialised UIs: canvas library / Omadia Graph integration with user assignments #12

Description

@Weegy

Summary

Once canvases become durable, shareable objects (#6) with lifecycle (#8) and replayable recipes (#11), they are first-class entities — but there is currently no place where a user can see them. A canvas exists only inside the session that has it open.

This issue proposes surfacing all materialised UIs (persisted canvases) in a browsable view, including their user assignments (owner + grantees), with two candidate presentations to evaluate:

  • (A) Integrate into the Omadia Graph — canvases appear as nodes in the kernel's graph alongside the entities they were built from, with edges to their data sources (via recorded dataRefs / recipe tool calls) and to the users they are assigned to.
  • (B) Dedicated canvas overview — a separate view (canvas library) in the host app listing all canvases the user owns or has been granted, with assignment info per canvas.

These are not mutually exclusive — (B) is the likely v1, (A) the richer follow-up once canvases carry enough provenance metadata (#11 provides exactly that).

Motivation

Proposed behavior (v1 — canvas overview)

  1. A canvas library view in the host app: every canvas the user holds a reference to (owner or grantee), with title, preview/thumbnail of the last revision, owner, shared-with list, last-refreshed timestamp, and refreshable/static state (Deterministic refresh for data-driven canvases (no LLM turn) #5/Bind the originating query to the canvas: persisted tool-call recipes for deterministic replay #11).
  2. Per-canvas actions from the list: open (attach a surface), refresh (Deterministic refresh for data-driven canvases (no LLM turn) #5), share / manage assignments (Canvas sharing: grant read access to other users (snapshot + live modes) #6), delete (Delete canvases from the Omadia UI (per-user removal, full delete on last reference) #8) — the library is the single management surface for the canvas lifecycle.
  3. User assignments inline: owner badge + grantee list with mode (snapshot/live); owners can revoke from here. This is the UI for the grant model rather than a separate admin screen.
  4. Tenant-scoped, permission-aware: users only ever see canvases they hold a reference to; there is no tenant-wide browse in v1.

Graph integration (follow-up scope)

Open questions

  • Thumbnails: render-side snapshot of the last revision (cheap, may go stale) vs. live mini-render (costly)? A stale thumbnail with the last-refreshed timestamp is probably fine for v1.
  • Where does the library live in the host app shell — alongside the session/start view, or as a pane the agent can also open (i.e., is the library itself a canvas)?
  • Does the graph variant belong in this repo at all, or entirely kernel-side with the host app only deep-linking into it?

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions