This repository was archived by the owner on Oct 13, 2026. It is now read-only.
Repository navigation
fix(ui): open the viewer on the timeline and the selected event's diff - #3
Merged
Merged
Conversation
The first screen was spent on controls and an empty panel. This makes the viewer lead with the timeline and a filled diff, and gives each panel the room its content needs. - Toolbar: the filter row wraps (flex-wrap on #toolbar > div), so a 390px page is 390px wide, not 708px, and all nine type filters are on screen. The three export buttons become one Export button with a format select. - Filters: All and None are actions, not states. They are no longer highlighted beside nine highlighted chips; each is disabled when it would change nothing. The chips are buttons with aria-pressed, so they can be reached and toggled from the keyboard. - Diff: the timeline selects its first listed event on load, and again when a filter hides the selected one, so the diff panel shows a change instead of "Click an event". Selection is held by reference, since eventId is optional. The diff now reads as one run of text. Before, its word chunks were laid out in a two-column grid. - Layout: diff, citation churn and model confidence stack beside the timeline, so the confidence chart is no longer in a 1398px panel. The second row has three equal columns, and no panel is stretched to a taller neighbour's height. - Source changes: the Rev column moves to each row's tooltip. The short columns shrink to their content, so Detail gets the rest of the row: 210px at 1440, up from 26px visible. The panel is 245px tall, not 886px. Cells are built with textContent. They were built with innerHTML, which ran markup from an uploaded file. - Event schema: "present in every event" is said once in the header, and only fields some events lack show a percentage, which never rounds up to 100%. The fields share one grid so their columns stay aligned. - The "Timeline" and "Changes" labels above panels that say the same thing are removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EpGaiBuSk5nCSV2hKyD6PN
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
The viewer should open on the timeline and the changes the user loaded it to read. Before this change, the first screen went to controls and an empty panel, and at 390px the page was 708px wide.
What changes
aria-pressed, so a keyboard can reach and toggle them. They used to be click-only spans.textContent. They usedinnerHTML, and markup in an uploaded JSONL file (for example<img onerror>in a fact or section) ran as script. Both remaininginnerHTMLwrites insrcare fixed strings.Measured (Chromium, before → after)
Not changed
.mdfile:biome check --writeexits with "No files were processed". Adding--no-errors-on-unmatchedshould fix it.var(--font-mono)is used in three components, but the variable is named--mono.Checks
bun run lint,tsc --noEmit,bun run test,bun run buildandbun run assets:checkpass.eventIds works;🤖 Generated with Claude Code
https://claude.ai/code/session_01EpGaiBuSk5nCSV2hKyD6PN
Generated by Claude Code