Skip to content

feat(ui): wire the lineage and changes pages to the live control API - #1373

Merged
kvlonge merged 4 commits into
mainfrom
feat/ui-lineage-changes
Nov 8, 2026
Merged

kvlonge merged 4 commits into
mainfrom
feat/ui-lineage-changes

Conversation

@kvlonge

@kvlonge kvlonge commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

Why

The Lineage and Changes pages still needed reads that the control API didn't have, so the served build hid them.

Changes

  • New person read GET /api/control/locations/{location_id}/targets/{target}/snapshots (listPersonSnapshots). It returns a target's publications newest first (limit 20 by default, capped at 100). Each one carries its git revision, dirty flag, author, environment hash, sqb version, and the subjects it changed, with no content hashes. It uses the same listing gate as jobs and triggers.
  • A changed role is named only for people who may assign roles server-wide. Everyone else sees role:, which the page shows as "a role".
  • The Changes page reads the new endpoint. The Lineage page builds its graph and inspector from the catalog listing and shows Execute only when ad hoc runs are supported.
  • The regenerated TypeScript client.

Verification

  • test_reads.rs checks newest-first order, changed subjects only, the limit, the dirty flag, and role names for an administrator and a viewer. The snapshots path is added to the role matrix in test_person_sessions.rs. Both pass on SQLite and PostgreSQL.
  • UI: svelte-check and vitest pass.
  • make check-ci passes.
  • Checked against a live sqb server with a synthetic DuckDB project: the lineage graph shows edges, and Changes shows a role's name to an administrator and "a role" to a viewer.

Add a person read of a target's published snapshots with the subjects
each one changed, behind the same listing authorisation as jobs. The
Changes page reads it, and the Lineage page builds its graph and
inspector from the catalog listing, so neither page needs mock data.
The publication history shows a changed role as a bare `role:` to people
without the role.assign action server-wide, and the Changes page lists
it as "a role".
@kvlonge
kvlonge enabled auto-merge (squash) November 8, 2026 12:56
@kvlonge
kvlonge merged commit 20c406a into main Nov 8, 2026
49 checks passed
@kvlonge
kvlonge deleted the feat/ui-lineage-changes branch November 8, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant