---
title: Close the agent session timeline's remaining surface gaps
type: task
status: completed
description: >-
  Remaining work after the timeline styling and interaction lane shipped: the share page renders the
  package default palette and no run duration, base is still not a consumer of react-agent-timeline,
  and a stale deploy worktree is registered.
base_uri: user:task/react-agent-timeline/close-agent-timeline-surface-gaps.md
created_at: '2026-09-06T19:15:28.506Z'
entity_id: b8d6ecea-3715-47fc-91ee-ec7bdcdcbea7
finished_at: '2026-09-06T19:34:12.206Z'
observations:
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
owner_identity_uri: █████████████████████████
priority: Medium
public_read: true
tags:
  - user:tag/league-xo-football.md
  - user:tag/software-task.md
updated_at: '2026-11-06T00:03:21.671Z'
visibility_analyzed_at: '2026-11-06T00:18:08.562Z'
---

The agent session timeline is live and deployed. This task carries what the styling and interaction lane left behind: two confirmed cosmetic defects on the share surface, the unfinished half of the package extraction, and workspace residue.

## Confirmed defects

**The share page renders the package's neutral defaults.** `app/views/pages/view-generation-share/view-generation-share.styl` sets no `--rat-*` custom properties, so `AgentSessionTimeline` there paints a white box and a `#0969da` blue accent inside league's newspaper-worksheet chrome. `view-generation-control.styl` was given the full token map in 2722d9001 and the share page was left out of scope, so the same component now looks like two different components depending on which surface you open. The fix is the block already written in the control's stylesheet, with `--rat-accent` mapped to ink rather than `$accentColor` (a literal red the design system spends only on hover, focus and error).

**A shared run shows no duration.** `view-generation-share.js` passes no `duration_ms`, so the footer that reads "Took 1m 28s" in the live panel is absent on the share link. The share payload is projected by `libs-server/data-views/generation/project-timeline-entries-for-share.mjs`, which is an allowlist — check whether the duration is even carried across the disclosure boundary before wiring the prop, and add it deliberately if not.

Neither is a regression. The share wrapper never scrolled, so the scrolling the package took over in 274d9927 did not collide with it.

## The extraction is still half done

`react-agent-timeline` has one consumer. Base still renders its own `client/views/components/ThreadTimelineView/`, which carries a virtualized list and a per-tool renderer registry the package does not have. The package README says "both consumers import source from `src/`", which is not true today. Either migrate base or correct the README — the current state reads as a finished extraction to anyone who opens it.

## Workspace residue

A deploy worktree under the system temp directory is registered against league at 2722d9001 and still on disk. It is not from the 2026-09-06 deploy — that one was created under `~/worktrees` and torn down — so it belongs to an earlier session that followed the recipe `preflight-deploy.sh` prints. It shows up in `git worktree list` for every session that looks.

## Deploy state

Production is at 2722d9001 on both hosts. Master has moved well past it. Anything shipped from here needs its own `DEPLOY_ACK_RANGE` against a range whose every commit is attributable — see `docs/guides/ship.md`.
