Make the graph page read correctly - #149
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…-fade # Conflicts: # web/src/pages/Review.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Thirty-odd rounds of looking at the graph page and fixing what did not read.
Frontend only, except two small backend additions noted below.
Derived edges
like a tenth class there, and the fix could not be colour: this file's own rule
is chrome carries no hue, colour belongs to data. So it moved instead.
Order is the content: what people wrote lands first, what the engine worked out
arrives second.
white. Selection is when you look closest; that is the worst moment to erase
where an edge came from.
as notifications and the user menu), and "Run now" asks first — on a second
button, because two clicks on one control already means "close" here.
Class legend
collapse into "All N classes", which opens a searchable list of every class
with per-class counts.
hidden, so filtering is never silent.
Timeline
buckets. Before this the bars were years while playback stepped by days, and
nothing on screen said how long one step was.
seeks instead of stopping; bars ahead of the playhead are no longer lit; the
track glows once when a run finishes.
Routing
/kb/$kbId/...for graph, search,chat, library, ontology, mappings, review and settings. Old paths still work
and redirect. A link that omits the base used to silently show the reader
their base — same screen, different data.
entity,focusandatinto the URL, so a linkreproduces what you are looking at, including the moment in time.
Correctness
valid_from/valid_to) is a calendar date from adocument and renders in UTC everywhere; belief time (
recorded_at) is a realinstant and renders in the reader's zone. Entity history was doing the former
to the latter, shifting revisions by a day for anyone east of UTC. The two
functions now sit side by side with comments saying they are deliberately
different.
rgba(14,14,16)), which reached thenotification card, the user menu and both new panels. Now neutral.
for when you are not reading it.
the two idioms in one sentence made it look broken when the budget changed.
limitparameter on the overview endpoint (clamped server-side).Bugs fixed along the way
onAnimationEndhandler wascalling
.remove()on a React-owned node, so the next keyed render threwNotFoundErrorand unmounted the tree.the hover branches returned before the time filter.
started from full gold instead of from the colour they already had.
214 bars.
transitionshorthand on.glass-strongsilently dropped the island's widthtransition, because unlayered CSS beats a Tailwind utility.
What we tried and rejected
Two versions, neither readable: with hundreds of edges on screen you cannot
tell which premises belong to which conclusion. The entity sidebar's Derived
tab already says it one row at a time. The backend field added for it was
reverted rather than left unread.
felt limp; the deliberately strong values are back.
explaining why now sits in
palette.rs.Backend
Two additions only:
limitongraph/overview, and nothing else that ships —the derived-premise field was added and then reverted with the animation.
Notes
Verified against the demo base (548 entities / 912 facts / 28 derived edges).
Animation timing could not be observed in the preview environment, which does
not advance CSS transitions or
requestAnimationFrame; end states and layoutwere measured instead, and that limitation is called out where it matters.
🤖 Generated with Claude Code