Skip to content

feat: the showcase is readable, navigable, and laid out by provenance - #77

Merged
khaneight merged 2 commits into
mainfrom
feat/ui-reader
Aug 27, 2026
Merged

feat: the showcase is readable, navigable, and laid out by provenance#77
khaneight merged 2 commits into
mainfrom
feat/ui-reader

Conversation

@khaneight

Copy link
Copy Markdown
Owner

Stacked on #76. Everything asked for after seeing the first version.

Read the documents

The bundle carries the published prose now, so clicking a node opens it over the
graph, with a fullscreen view for reading properly. Cross-references and source
citations inside the text are live — following one opens that document and
moves the graph to it.

The prose is the text that was written to the site — links already defused,
attribution already appended — not a second rendering of the file. A reader in
the graph and a reader on the site see the same words. That costs bundle size
and the doc comment says so plainly instead of quoting the old metadata-only
figures.

Navigate it

Drag to pan, scroll to zoom toward the cursor rather than the middle, arrow
keys, +/-, 0 to fit. Zoom bounded 0.3–3.5.

Depth is provenance

layer comes from the exporter, not the page: 0 for a source document the
author actually wrote, rising through their compiled thinking (authored
hybridresearched) to the clone's work at the rim. Drawn in perspective,
so panning gives real parallax and the core sits nearest because it is nearest
the person.

Published sources are nodes now, with an edge from every article citing them.
Withheld ones are not — a node would put a private document's title on the site.
Tested both ways.

The layout was a force simulation twice, and is not one now

With the radius already fixed by provenance, the only free variable is angle.
Simulating that piled a ring's nodes onto each other while the radial constraint
fought the springs. I made the springs tangential; that was worse — I have
the screenshots. Rings are now placed deterministically: ordered by the mean
direction of the neighbours already on the board, spaced evenly so nothing can
collide, then rotated to face what they came from.

A flaw found by reading the result

The attribution appeared twice — the exporter's notice at the foot, and a
box this page composed at the top. On screen the foot is after you have read the
thing believing it might be theirs.

The reader now lifts the exporter's own wording to the top. Lifted, not
rewritten and not removed — and it falls back to composing one if the notice
cannot be found, so generated work can never be displayed without a disclosure.

ui/dev/

A development harness: a server that serves the real ui/index.html with the
Agentation toolbar bundled in and injected into the
HTTP response. Nothing there ships. The toolbar is never written to the
page, git status shows the published file changed only by the features above,
and tests/ui.rs still fails on any external reference in it. Delete the
directory and nothing else breaks.

536 tests (+11), clippy and fmt clean.

🤖 Generated with Claude Code

khaneight and others added 2 commits August 26, 2026 22:27
Three things, all asked for after seeing the first version.

**Read the documents.** The bundle now carries the published prose, so
clicking a node opens it in a panel over the graph, with a fullscreen
view for reading properly. Cross-references and source citations inside
the text are live: following one opens that document and moves the graph
to it, which is what makes this a wiki rather than a list of pages. The
prose is the text that was *written to the site* — links already defused,
attribution already appended — not a second rendering of the file, so the
reader and the site cannot disagree.

That costs size, and the doc comment now says so rather than quoting the
old metadata-only figures.

**Navigate it.** Drag to pan, scroll to zoom toward the cursor rather
than the middle, arrow keys, `+`/`-`, `0` to fit, and zoom bounded at
0.3–3.5.

**Depth is provenance.** `layer` comes from the exporter — 0 for a source
document the author actually wrote, rising through their compiled
thinking to the machine's work at the rim — and the page draws it in
perspective, so panning gives real parallax and the core sits nearest
because it is nearest the person. Published source documents are nodes
now, with an edge from every article that cites them; withheld ones are
not, since a node would put a private document's title on the site.

The layout was a force simulation twice and is not one now. With the
radius already fixed by provenance the only free variable is angle, and
simulating that produced rings whose nodes piled onto each other while
the radial constraint fought the springs — measured, then measured again
after making the springs tangential, which was worse. Rings are placed
deterministically: ordered by the mean direction of the neighbours
already on the board, then spaced evenly so nothing can collide, then
rotated to face what they came from.

One thing found by reading the result: the attribution appeared twice,
once as the exporter's notice at the foot and once as a box this page
composed. On screen the foot is after you have read the thing believing
it might be theirs, so the reader now *lifts* the exporter's own wording
to the top — lifted rather than rewritten, and it falls back to composing
one if the notice cannot be found, so generated work can never be
displayed without a disclosure.

`ui/dev/` is a development harness: a server that serves the real page
with the Agentation annotation toolbar overlaid at request time. Nothing
there ships — the toolbar is injected into the response and never written
to the page, so the file that deploys stays the file that was reviewed,
and `tests/ui.rs` still fails on any external reference in it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…d it

Both from annotations left on the page.

The panel opened against the left edge and pushed the graph behind a
blurred scrim. That treats the graph as clutter, when it is the context
for the document you are reading — the whole reason for opening a
document *in* the graph rather than on its own page.

It is now centred, and centred on the stage rather than on the window, so
the sidebar stays uncovered. Same reason as the scrim: the sidebar is the
other half of the context. The scrim still exists and still closes the
reader on a click outside; it just no longer paints anything. The panel
reads as foreground from its border and a slightly deeper shadow.

Fullscreen keeps working: `.full` clears the centring translate rather
than fighting it, and the transition drives `top`/`left` instead of
`inset`, which was never animating anything.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@khaneight
khaneight changed the base branch from feat/clone-docs to main August 27, 2026 02:27
@khaneight
khaneight merged commit 4dad38d into main Aug 27, 2026
6 checks passed
@khaneight
khaneight deleted the feat/ui-reader branch August 27, 2026 02:33
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