Pimp My IDE / garage dispatchBack to the garage
October 8, 2026 / interface craft / accessibility

Make the activity stream count.

Agent work arrives as comments, commits, tool calls, reviews, and failures. Put that history in a real ordered list. Announce what loaded. Move focus to the new evidence.

A visible rail needs a semantic rail.

The timeline is now part of the IDE.

JetBrains describes Air as a place to watch several agent sessions across projects. The interface reports activity, unread updates, changed files, outgoing commits, and cost. Each session can run beside the code, in a terminal, or in the cloud.[2]

That turns activity history into a working control. A developer needs to find the newest failure, move back to the decision that caused it, and return to the current state. A decorative vertical line does not provide that route.

The chronology must survive when the rail is invisible.

GitHub fixed the quiet half.

GitHub now exposes issue and pull request timelines as lists to screen readers. Assistive technology can announce the item count, current position, and movement between events. When a reader loads more history, focus moves to the newest loaded event and the screen reader reports how many events appeared.[1]

The visual interface did not need to change. The improvement sits in structure, focus, and feedback. That is the point. A timeline can look finished while its order and pagination remain unavailable to someone who does not scan the line.

Use HTML before patching with ARIA.

MDN recommends native <ol>, <ul>, and <li> elements when the content is a list. The list and listitem roles are fallback tools for markup you cannot control.[3]

An agent activity stream usually has an order, so start with <ol>. Put one event in each <li>. Keep timestamps in the event, not in a separate visual column that loses its connection when styles disappear.

Loading history is a focus transaction.

A "Load more" button changes the reader's place. Record the previous count. Insert the new events. Focus the first new event without adding it to the normal tab sequence. Announce the number loaded and the new total through one polite live region.

Do not dump the whole event text into the live region. The focused item already carries that content. The announcement only needs to explain the state change.

Run the five-part timeline test.

  • Structure uses an ordered list with one event per item.
  • Names distinguish commits, decisions, failures, and proof.
  • Position exposes the count and the reader's place in the sequence.
  • Loading moves focus to the new history and announces the added count.
  • Fallback keeps the full event text readable without color or the vertical rail.

The ratchet rack below combines an ordered event stream, progressive loading, a live count, and a copyable review card. It demonstrates browser behavior. It does not certify a screen reader or production application.

Interactive makeover / activity history

Crank the timeline backward.

This replaces a decorative activity rail with an ordered list and a focus handoff. Load older events, then choose what the production review card must inspect.

Mark up the orderLoad and announceCopy the test card

Event drive

The list starts with three current events. The button inserts three older events, updates the visible count, moves focus, and sends one polite announcement.

Agent run history3 events loaded
  1. Smoke check passed

    Revision 8c31f2a returned the expected route marker.

  2. Reviewer requested one change

    The receipt must name the fallback route.

  3. Patch produced

    Two files changed on the isolated branch.

Current window: 3 events
Review controls / structure only

Timeline test card

Select the checks this card will require. Selection records scope, not a passing result.

Choose timeline checks
2 test sections selectedThe card requests list and focus checks. Announcement and screen reader sections remain open.
Sources read / October 8, 2026

Source log

Open the evidence boundary
  1. GitHub Changelog, "Screen readers can navigate timelines as lists", October 8, 2026. GitHub documents list structure, item count and position, focus movement after pagination, load announcements, covered timeline types, and availability.
  2. JetBrains, "A New Agentic Experience: JetBrains Air in IDEs", October 1, 2026. JetBrains describes cross-project session activity, unread updates, changed files, commits, cost, worktree isolation, local and cloud runs, and multiple session interfaces.
  3. MDN, "ARIA: list role", read October 8, 2026. MDN explains list and listitem semantics and recommends native ordered or unordered list elements when the markup is under your control.

Evidence boundary: we read the three linked sources. The ratchet rack is an original browser demo. Its loading behavior uses native HTML, focus, and a polite live region, but we did not test it with VoiceOver, NVDA, JAWS, JetBrains Air, GitHub's production timeline, or a production agent session. A completed card means the test structure is selected. It does not mean the checks passed.