Skip to content

Adopt #9106 tool group summaries: mobile work-log needs an architectural merge #263

Description

@rynfar

#9106 (b520120cf169ce63a5606447a292451e97622c9a, 27 files) is the largest
remaining commit from the 2026-09-03 upstream batch and the hub that gates at
least two others. Seven of its eight conflicted files are already resolved
and saved at /tmp/pylon-9106/ (see below). One file needs real design work.

The blocker

apps/mobile/src/features/threads/thread-work-log.tsx — Pylon 567 lines,
upstream 1055. #9106 does not modify this component, it replaces its
architecture:

Upstream introduces Pylon has
ThreadWorkGroupList with scroll anchoring flat View list
resolveWorkGroupScrollAnchor, shouldFollowThreadWorkGroupAppend
WorkLogIcon wrapper direct SymbolView with tintColorClassName
THREAD_WORK_ROW_MIN_HEIGHT, workLogRowsHeight(activities, rowHeight) WORK_ROW_HEIGHT = 32, collapsedWorkLogHeight()
renderImage: MarkdownImageRenderer, onToggleRow(rowId, anchorKey) onToggleRow(rowId), compactActivityDetail

The largest conflict region is 141 lines of Pylon rendering against 13 lines of
upstream's new component call.

This must not be rushed. AGENTS.md names this file as the reference for
gated animation — "an unbounded animation that survives all three gates pegs
the GPU on high-refresh displays". Pylon's shimmer gate here is deliberate and
is exactly what an architectural port is most likely to drop.

Already resolved (restore over the conflicted files after re-picking)

  • apps/mobile/src/lib/threadActivity.ts — took upstream's active/live
    shape. latestActiveActivity already encodes Pylon's gate (isWorking &&
    unsettled turn && inProgress), so upstream's shimmer: active preserves
    Pylon's shimmer discipline rather than loosening it.
  • apps/mobile/src/lib/threadActivity.test.ts — upstream rewrote the
    "respects the %s lifecycle of trailing task progress" body to a single
    shimmer assertion; Pylon's other tests in that block are kept.
  • apps/web/src/components/chat/MessagesTimeline.tsx — six regions. Kept
    Pylon's groupLabel/GroupContainer aria wrapper, missingResponse /
    turnSettled / neutral+success indicators, and the chevron/failed block.
    Took upstream's icon rendering (Pylon's WorkEntryIconSvg and
    showEntryIcon no longer exist after the commit's clean hunks) and its
    richer canExpand. Renamed isExpandedToolGroupEntry -> isExpandedToolGroup.
  • apps/web/src/components/chat/MessagesTimeline.logic.ts#9106 moves
    normalizeCompactToolLabel, toolGroupAction, workLogEntryIsLocalCodeSearch,
    summarizeToolGroup, omitSupersededLifecycleMarkers, toolGroupSummaryKind
    and the ToolGroupSummaryKind type into client-runtime. Pylon's local copies
    were verified identical apart from WorkLogEntry vs WorkLogPresentationEntry
    and removed.
  • apps/web/src/components/sidebar/SidebarChrome.tsx — Pylon-first: upstream
    reverts to T3Wordmark, Pylon keeps PylonMark. Never restore T3 branding.
  • packages/client-runtime/src/work-log/presentation.ts — union of Pylon's
    detail? and upstream's toolData?.
  • packages/client-runtime/package.json — union of Pylon's ./rollback and
    upstream's ./work-log/scroll-anchor export.

Web typechecks clean with these applied; only the mobile file remains.

Unblocks

  • #9172 8339508f5c align failed task progress test
  • #9359 24799de4f8 size expanded tool groups correctly

Both were confirmed chained on this commit.

Context

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions