Skip to content

fix(web): restore unified activity logs and composer banners - #8734

Merged
juliusmarminge merged 8 commits into
mainfrom
restore/composer-activity-banners
Aug 31, 2026
Merged

fix(web): restore unified activity logs and composer banners#8734
juliusmarminge merged 8 commits into
mainfrom
restore/composer-activity-banners

Conversation

@t3dotgg

@t3dotgg t3dotgg commented Aug 30, 2026

Copy link
Copy Markdown
Member

Restores the activity log grouping and shared composer banners from #8693 after #8733, while deferring the composer-attached working timer.

Working for keeps main's placement in the conversation timeline, including the current task label, Thinking state, and turn lifecycle. Long task labels truncate to one line while the timer remains fully visible. The composer keeps the restored task controls, notice stacking, and shared Tailwind components. Task progress appears only in the composer; the duplicate timeline checklist is removed. Plan proposals remain in the timeline. Stash stays in its own tab beside notices and expanded task lists, including compact layouts; its footer variant is removed. Loading and syncing use the shared banner stack and hide task controls until the thread is up to date. Their spinner respects reduced-motion preferences.

Rebased onto current main, including interim response folding and the latest failed-tool icon fix. Orchestrator V2 and queueing are deferred until this main-targeted PR is merged.

All after screenshots below were recaptured from 35e6b6653e95. The timeline comparisons render the same scripted events through the actual timeline components from the PR base, 8b817cbcaad7, and the current PR. Each pair uses matching viewport dimensions. Completed-turn folds are open in both versions; the mixed activity group is shown both collapsed and expanded. The composer comparisons retain their earlier-iteration before images, labelled separately.

Mixed command, file-read, and status entries now get one useful summary. Main already summarized tool-only groups; the improvement here is that mixed groups use that presentation too.

PR base: last command and hidden log entries Current PR: summary of the whole group
PR base: last command and hidden log entries Current PR: summary of the whole group

Expanding that same group keeps the summary and shows compact detail rows, without separate Work Log headings.

PR base: expanded mixed log Current PR: expanded activity group
PR base: expanded mixed log Current PR: expanded activity group

Task updates no longer add Plan updated rows or a second checklist to the timeline. Commands stay in one group; task controls remain in the composer.

PR base: plan chatter and timeline checklist Current PR: one command group, no duplicate tasks
PR base: plan chatter and timeline checklist Current PR: one command group, no duplicate tasks

The earlier error screenshot incorrectly modeled a failed test as a runtime error. These two corrected scenarios use the server's actual event conversion and payload projection.

Failed command followed by a successful retry — unchanged. A test exits with code 1, the fixture is edited, and the test reruns successfully. All three tool calls stay in one group on both the PR base and this branch. A nonzero command exit code does not split the group, and no failure-count prefix is added.

PR base: failed test and retry in one group Current PR: same grouping
PR base: failed test and retry in one group Current PR: same grouping

Expanding the group and failed command reveals the failure output in both versions:

PR base: failed command details Current PR: same failure details
PR base: failed command details Current PR: same failure details

Provider crash at the end of a run. Two commands finish, then the provider exits unexpectedly and the turn ends. There are no commands continuing after the crash in this fixture. The base already shows the terminal runtime error; this PR gives the preceding commands their own summary and renders the error as a separate row.

PR base: terminal error with previous tool calls Current PR: command summary followed by runtime error
PR base: terminal error with previous tool calls Current PR: command summary followed by runtime error

The outer Worked for fold is open in every comparison. Collapsing that fold can still hide the error. The grouping boundary applies to error events, such as runtime failures, rather than ordinary failed tool results. This update corrects the evidence; it does not change production behavior.

The initial restore passed 242 focused web tests, web typecheck, and targeted lint. Checked the isolated fixture playground in the browser, including running/idle turns, task expansion, loading/syncing, notices, approvals, and stash. Stopping a turn removes the timer; deleting the last stashed prompt closes the stash. Preview fixtures remain local and are not part of the PR.

Earlier restore: attached timer Current PR: timeline timer, tasks only in composer
Timer attached to composer Timer retained in timeline

Long task labels checked at 1440px and 768px viewport widths. Targeted lint and web typecheck pass.

PR base: wrapping task label Current PR: single-line task label
Long task wraps Long task truncates

Loading and syncing now keep the combined banner behavior: the status stays attached, notices peek behind it, and task controls stay hidden until the thread is up to date. Stash keeps its separate tab. Verified loading and syncing with and without tasks, notice expansion, narrow layouts, and reduced motion. All 64 focused tests, web typecheck, and targeted lint passed.

Earlier iteration: separate status row, tasks visible Current PR: combined banner, tasks hidden
Separate loading status and tasks Combined loading banner

Narrow layout · Spinner recording

The stash placement update passed 61 focused tests, web typecheck, and targeted lint. Browser checks covered notices, expanded tasks, notice stacks, loading, narrow questions, compact-composer expansion, restoring a prompt, deleting the last entry, and the empty composer. This changes the shared web/desktop composer; native clients are unchanged.

Earlier iteration: stash in footer Current PR: separate stash tab
Stash in composer footer Stash beside the notice

With Stash closed, its tab stays beside the update notice:

Stash closed beside the update notice

Opening Stash shows the saved drafts in a drawer across the top of the composer, covering the notice underneath. Closing Stash reveals the notice again:

Stash expanded above the composer

Expanded tasks keep their own panel beside Stash:

Expanded tasks beside Stash

The task-list cleanup passed 218 focused tests, web typecheck, and targeted lint. Browser checks covered composer task expansion/collapse, command-group expansion, and completed turns. The working timer is unchanged. This uses the shared web/desktop timeline; native clients, providers, and wire contracts are unchanged.

Earlier restore: duplicate task checklist Current PR: tasks only in the composer
Tasks in the timeline and composer Tasks only in the composer

The composer task list still expands beside Stash:

Composer task list expanded

Note

Restore unified activity logs and rebuild composer banner system

  • Removes turn-plan timeline rows and the MAX_VISIBLE_WORK_LOG_ENTRIES cap/overflow toggle, so work log entries are always shown in unified activity groups instead of being collapsed behind '+N previous …'
  • Introduces a new update action type in ToolGroupAction for non-tool entries, with standalone rows for agent spawns and error-toned entries that bypass grouping
  • Replaces ad-hoc composer layout with a new ComposerBanner, ComposerBannerStack, and ComposerSurface primitive system; tasks, stash, pending approvals, and server update notices all render through these shared components
  • Integrates tasks progress into the banner stack (no longer dismissible per-turn) and adds a ComposerServerUpdateStatus component with dismissal support for failed update states
  • Risk: ChatComposerProps replaces externalDrawerAttached with bannerItems and adds threadSyncPhase; ComposerStashBadge removes the placement prop; ComposerTasksBadge removes onDismiss and hasTrailingShoulder; deriveTurnPlans is deleted and deriveTimelineEntries no longer accepts turn plans — any out-of-tree callers of these APIs will break

Macroscope summarized cfb3851.


Note

Medium Risk
Large, user-facing composer and timeline refactor with prop/API removals (externalDrawerAttached, task dismiss, turn plans); behavior changes for notices, sync, and work-log grouping are easy to miss in edge cases.

Overview
Restores unified timeline activity grouping and rebuilds the chat composer around shared ComposerSurface / ComposerBanner primitives.

Work log rendering drops the per-group visibility cap and turn-plan timeline rows. Mixed runs collapse into one expandable summary (including non-tool updates), while agent spawns and error-toned entries stay standalone. deriveTimelineEntries no longer takes turn plans.

Composer notices, thread sync, task progress, stash, approvals, and command/stash drawers all attach through ComposerBannerStack with explicit priority (activity / urgent / notice) instead of manual urgent/calm splits in ChatView. Banners move from above the glass shell into ChatComposer via bannerItems; threadSyncPhase suppresses task UI until sync finishes and can show ComposerActivityRow in the stack. Task progress is derived from the current turn’s activePlan (not sidebar planProgress); per-turn task dismiss is removed. Stash is a shoulder tab only (no inline/footer variant). Server-update banners use ComposerServerUpdateStatus and can dismiss failed updates. shoulderTabReserve and the extra overlay mutation observer are removed—scroll clearance uses full composer height. BranchToolbar uses ComposerSurface.ContextStrip.

Reviewed by Cursor Bugbot for commit 35e6b66. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f3a66e84-043e-4bc3-b47b-654eccf47321

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 30, 2026
@github-actions

github-actions Bot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.3 KiB 13.3 KiB +9 B (+0.1%) 15.1 KiB
Codex Thread snapshot wire 6.9 KiB 6.9 KiB −5 B (−0.1%) 7.3 KiB
Codex Live turn WebSocket wire 6.4 KiB 6.4 KiB +14 B (+0.2%) 7.8 KiB
Codex Live turn WebSocket decoded 55.6 KiB 55.6 KiB 0 B (0.0%) 66.4 KiB
Codex Live turn messages 11 11 0 (0.0%) 21
Claude Total thread wire 13.4 KiB 13.3 KiB −16 B (−0.1%) 15.1 KiB
Claude Thread snapshot wire 6.9 KiB 6.9 KiB +3 B (+0.0%) 7.3 KiB
Claude Live turn WebSocket wire 6.5 KiB 6.4 KiB −19 B (−0.3%) 7.8 KiB
Claude Live turn WebSocket decoded 56.4 KiB 56.4 KiB 0 B (0.0%) 66.4 KiB
Claude Live turn messages 11 11 0 (0.0%) 21

Baseline: 8b817cb · PR result: 35e6b66 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Comment thread apps/web/src/components/chat/ComposerBannerStack.tsx

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review found 2 issues in the new composer banner primitives. Details inline.

Posted via Macroscope — UI Consistency

</ComposerBanner.Actions>
</CollapsibleTrigger>
<CollapsiblePanel>
<ComposerBanner.Body>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The removed CollapsiblePanel className="px-3 sm:px-4" carried a comment explaining that the panel clips its content while the height animates, so the option buttons have to sit inside that padding or their focus rings get shaved. ComposerBanner.Body only supplies padding-inline-start, so the w-full option buttons now touch the panel's inline-end and block-end edges and their focus-visible:ring-1 is clipped by overflow-hidden. Restoring end/bottom padding inside the clipped box keeps the ring visible.

Suggested change
<ComposerBanner.Body>
<ComposerBanner.Body className="pb-1 pe-1">

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/chat/ComposerBanner.tsx
@macroscopeapp

macroscopeapp Bot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This XXL change replaces shared composer and timeline behavior across many production paths, including notice stacking, task and sync visibility, activity grouping, and layout measurement. Several unresolved findings also identify interaction, accessibility, loading-state, and test-coverage regressions that require focused human review.

Not approved because:

  • 3 blocking correctness issues found at or above your repo's Minimum Blocking Severity

Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more.

@CDVolvik

Copy link
Copy Markdown
Contributor

Verified fix(web): restore unified activity logs and composer banners at 39283f4 as CDVolvik.

Restores #8693 after #8733 revert — git diff 33 files +1506/-2094 identical to original. Activity logs: MessagesTimeline working row removed, work entries grouped contiguously, ChatView active task progress tied to activePlan of current turn, ChatComposer exposes bannerItems/isWorking. Composer banners: ComposerSurface/Banner primitives, priority activity<urgent<notice, custom tasks content, accessible peek. Tests: MessagesTimeline.logic+session-logic+versionSkew+ChatView.logic 194/194, MessagesTimeline 37/37 pass. Note per PR: Compact/dismiss alignment and banner padding not fixed yet — author defers to Julius — hold merge until follow-up. Otherwise LGTM, no push.

@juliusmarminge
juliusmarminge force-pushed the restore/composer-activity-banners branch from 39283f4 to 9ec8bab Compare August 31, 2026 00:51
"absolute inset-x-0 bottom-0 z-0 mx-auto h-3 w-[96%] cursor-pointer rounded-t-2xl border border-b-0 shadow-[0_6px_18px_rgb(0_0_0/6%)]",
"bg-[color-mix(in_srgb,var(--chat-composer-attached-surface)_var(--glass-opacity),transparent)] backdrop-blur-(--glass-blur) backdrop-saturate-(--glass-saturation)",
"not-supports-[(backdrop-filter:blur(1px))_or_(-webkit-backdrop-filter:blur(1px))]:bg-(--chat-composer-attached-surface)",
"transition-opacity duration-150 ease-out focus-visible:outline-2 focus-visible:outline-ring",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Medium chat/ComposerBanner.tsx:94

When the notice stack is expanded, the Peek button remains pointer-interactive and keyboard-focusable despite receiving opacity-0, so keyboard users tab to an undiscoverable “Show other notices” control and pointer events can still reach it. Hide it from interaction as well—conditionally apply pointer-events-none and disabled (or omit it from the DOM) while the stack is expanded.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @apps/web/src/components/chat/ComposerBanner.tsx around line 94:

When the notice stack is expanded, the `Peek` button remains pointer-interactive and keyboard-focusable despite receiving `opacity-0`, so keyboard users tab to an undiscoverable “Show other notices” control and pointer events can still reach it. Hide it from interaction as well—conditionally apply `pointer-events-none` and `disabled` (or omit it from the DOM) while the stack is expanded.

</ComposerBanner.Root>
) : null}
{activeTasksProgress && activeTaskSteps ? (
<ComposerTasksBadge

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Medium chat/ChatComposer.tsx:3602

ComposerTasksBadge and ComposerTasksDrawer no longer expose the former “Dismiss tasks for this turn” action, so users can only collapse an active task list; completed or stale task indicators remain attached until the underlying task state disappears. Restore the per-turn dismissal state and pass a dismiss handler to both render paths.

Also found in 2 other location(s)

apps/web/src/components/chat/ComposerTasksBadge.tsx:112

ComposerTasksBadge no longer accepts or renders an onDismiss action, so users have no way to invoke the previously available “Dismiss tasks for this turn” control. When a task progress banner remains visible, it can only be collapsed, not dismissed for the rest of that turn.

apps/web/src/components/chat/ComposerTasksBadge.tsx:232

ComposerTasksDrawer no longer accepts or renders the former onDismiss action, so an active task indicator cannot be dismissed for the current turn. The prior caller tracked the dismissed turn and passed dismissTasks to both the badge and drawer; the new component exposes only collapse, leaving users unable to hide task progress they explicitly dismissed.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @apps/web/src/components/chat/ChatComposer.tsx around line 3602:

`ComposerTasksBadge` and `ComposerTasksDrawer` no longer expose the former “Dismiss tasks for this turn” action, so users can only collapse an active task list; completed or stale task indicators remain attached until the underlying task state disappears. Restore the per-turn dismissal state and pass a dismiss handler to both render paths.

Also found in 2 other location(s):
- apps/web/src/components/chat/ComposerTasksBadge.tsx:112 -- `ComposerTasksBadge` no longer accepts or renders an `onDismiss` action, so users have no way to invoke the previously available “Dismiss tasks for this turn” control. When a task progress banner remains visible, it can only be collapsed, not dismissed for the rest of that turn.
- apps/web/src/components/chat/ComposerTasksBadge.tsx:232 -- `ComposerTasksDrawer` no longer accepts or renders the former `onDismiss` action, so an active task indicator cannot be dismissed for the current turn. The prior caller tracked the dismissed turn and passed `dismissTasks` to both the badge and drawer; the new component exposes only collapse, leaving users unable to hide task progress they explicitly dismissed.

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review of the restored composer banner/surface system. Three findings below; the two findings posted on the previous head (ComposerBanner.ToggleIcon inheriting the coarse-pointer hit-target pseudo-element, and ComposerBanner.Body losing the clipped panel's end/bottom padding) are still open on this head and are not repeated here.

Posted via Macroscope — UI Consistency

Comment on lines +245 to +247
<ComposerBanner.Row layout="wrap-actions">
<ComposerBanner.Icon>{item.icon}</ComposerBanner.Icon>
<ComposerBanner.Content className="font-medium">{item.title}</ComposerBanner.Content>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Notices with a description now bind both the icon and the action/dismiss controls to the title Row, with the description rendered as a separate row underneath (ComposerBanner.Children). That reproduces the alignment regression this PR's description acknowledges as the reason #8693 was reverted: Compact / dismiss sit on the title line instead of being centered against the whole title + description block.

The primitive it replaced did this in one row: Alert (controlAlignment: "center") lays out icon | title+description column | actions in a single items-center flex row, so the controls center against the full block and only opt into first-line alignment explicitly.

Smallest fix: keep the description inside the same Row's ComposerBanner.Content (stacked, e.g. className="flex-col items-start gap-0.5" with the title span keeping font-medium) and reserve ComposerBanner.Children for item.children, so the row's items-center centers the icon and actions over both lines. The other half of the revert — banner edge padding, now p-1 on ComposerBanner.Root versus the old px-3 pt-2 sm:px-4 — belongs on Root rather than at each call site.

Posted via Macroscope — UI Consistency

Comment on lines +107 to +108
className={cn(
"mx-auto -mb-[calc(1rem+1px)] w-[calc(100%-2.75rem)] max-w-[45.25rem]",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Attachment hardcodes the drawer inset (w-[calc(100%-2.75rem)], max-w-[45.25rem]), while this PR deletes the only declaration of --chat-composer-drawer-inset: 1.375rem from index.css. That variable still has an imperative consumer: ComposerCommandMenuLayer reads it with getComputedStyle(form ?? anchor).getPropertyValue("--chat-composer-drawer-inset") (ChatComposer.tsx:233) to compute the command menu's left and width. The read now always resolves to "" and silently takes the || 1.375 fallback, so the menu lines up only because 2.75rem happens to be twice that fallback, and the two owners will drift the next time this width changes.

Suggest keeping one owner: declare [--chat-composer-drawer-inset:1.375rem] on an ancestor the composer form inherits from (ComposerSurface.Shell) and derive the widths here from it, e.g. w-[calc(100%-2*var(--chat-composer-drawer-inset))] max-w-[calc(48rem-2*var(--chat-composer-drawer-inset))].

Posted via Macroscope — UI Consistency

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test was dropped when the working row left the timeline, but the follow-up commit restored WorkingTimelineRow/ThinkingActivityRow and the activeTurnStartedAt prop, and LiveActivityContent still emits gap-1.5 py-0.5 px-1 for the iconless variant — so the assertions still hold and the restored row is now unguarded, right as this PR reworks neighbouring row indentation (TurnPlanTimelineRow's chevron column and pl-6pl-8). Suggest restoring it as-is.

Posted via Macroscope — UI Consistency

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the composer banner/surface migration at fe1774e. One new finding below (list semantics lost in the tasks/stash list migration). The findings from my earlier reviews on this PR are still open and are not reposted here:

  • ComposerBannerStack.tsx — description notices bind icon/actions to the title row, so Compact/dismiss no longer center against the title + description block.
  • ComposerBanner.tsx Attachment — hardcoded inset while --chat-composer-drawer-inset is deleted from index.css, leaving ComposerCommandMenuLayer's getPropertyValue read resolving to "".
  • ComposerBanner.tsx ToggleIcon — decorative aria-hidden span inherits buttonVariants' pointer-coarse:after:min-h-11/min-w-11 hit overlay inside Row render={<button/>}.
  • ComposerPendingUserInputPanel.tsxComposerBanner.Body supplies only inline-start padding, so option-button focus rings are clipped by the animating CollapsiblePanel.
  • MessagesTimeline.test.tsx — the iconless Thinking/working-timer alignment test is still dropped while the row it covered is restored.

Posted via Macroscope — UI Consistency

? "text-foreground/90"
: "text-muted-foreground/70",
)}
>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The task list loses its list semantics in this migration: the old drawer rendered role="list" + role="listitem" explicitly (the deleted ComposerTasksBadge.test.tsx asserted both), while this <ul> relies on implicit roles. Tailwind's preflight sets list-style: none on ul, which makes WebKit drop the list role — and with it the aria-label on this container, since a generic element's label is not announced. Suggest re-asserting the role on the container (the li children keep listitem once the list role is explicit). ComposerStashMenu.tsx:133 has the same shape (render={<ul />} with aria-label="Stashed prompts") and needs the same fix.

Suggested change
>
render={<ul role="list" />}

Posted via Macroscope — UI Consistency

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit c0d3d53. Configure here.

Comment thread apps/web/src/components/chat/ThreadSyncStatusPill.tsx Outdated

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the two new commits (c0d3d53 restoring the sync status, 4977016 moving the stash tab into the banner dock) plus the surrounding banner/surface migration.

One new finding on the restored ThreadSyncStatusPill (inline). The findings from earlier runs on this PR still apply at 4977016 and are not repeated here:

  • ComposerBanner.ToggleIcon inherits buttonVariants' pointer-coarse:after:min-h-11/min-w-11 overlay on a decorative span.
  • ComposerBanner.Body supplies only padding-inline-start, so the pending-input option buttons' focus-visible ring is clipped by the collapsible panel's overflow-hidden (ComposerPendingUserInputPanel.tsx:203-262).
  • ComposerBannerStackAlert binds actions/dismiss to the title row while the description renders as a separate row, so controls are no longer centered against the title + description block.
  • The tasks list (ComposerBanner.Children render={<ul />}) relies on implicit list semantics, which Tailwind preflight's list-style: none drops in WebKit along with the container aria-label.
  • apps/web/src/components/chat/MessagesTimeline.test.tsx still drops the working/thinking row assertions even though WorkingTimelineRow was restored.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/chat/ThreadSyncStatusPill.tsx Outdated
activeLatestTurn !== null && !latestTurnSettled
? (activeThreadShell?.planProgress ?? null)
: null;
const activeComposerTasksProgress = useMemo(() => {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Medium components/ChatView.tsx:4556

activeComposerTasksProgress returns null while thread details are loading because it now derives entirely from activePlan, which reads threadActivities — but buildLoadingThreadFromShell forces activities: [] during the loading window. The previous code fell back to activeThreadShell?.planProgress, which is available on the shell even before full details arrive. This causes the task progress indicator and step controls to disappear during the thread-detail loading/sync phase and only reappear once the full detail payload lands.

Consider falling back to activeThreadShell?.planProgress when activePlan is null and the thread is still loading, so the shell-level progress remains visible during that window.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @apps/web/src/components/ChatView.tsx around line 4556:

`activeComposerTasksProgress` returns `null` while thread details are loading because it now derives entirely from `activePlan`, which reads `threadActivities` — but `buildLoadingThreadFromShell` forces `activities: []` during the loading window. The previous code fell back to `activeThreadShell?.planProgress`, which is available on the shell even before full details arrive. This causes the task progress indicator and step controls to disappear during the thread-detail loading/sync phase and only reappear once the full detail payload lands.

Consider falling back to `activeThreadShell?.planProgress` when `activePlan` is `null` and the thread is still loading, so the shell-level progress remains visible during that window.

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One new finding in this push's neighbourhood: the composer server-update notice lost the live/failure indicator that ServerUpdateProgress used to own, and now shows a static InfoIcon even in the error variant. Previously reported findings on the earlier commits (banner Attachment inset vs. the deleted --chat-composer-drawer-inset, ToggleIcon inheriting buttonVariants' coarse-pointer overlay, ComposerBanner.Body end/bottom padding, notice description/action alignment, ThreadSyncStatusPill bypassing the banner row grid, task-list role="list", and the dropped working-row alignment test) still apply and are not repeated here.

Posted via Macroscope — UI Consistency

),
// Prioritize update progress over passive notices, but keep activity attached.
priority: updateInProgress ? "urgent" : "notice",
icon: <InfoIcon aria-hidden />,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This notice now uses a static InfoIcon for all three states, which drops the only live cue for a running update and puts an info icon on an error-variant banner. The removed code explained why: ServerUpdateProgress carried a pulsing dot while running and a destructive dot on failure, and only the idle offer needed an icon. ComposerServerUpdateStatus renders text only, so the pulse is gone and the failed row reads as informational next to the sibling notices that do pick situational icons (WifiOffIcon, AlarmClockIcon, GitBranchIcon) and a pulsing dot for live states.

Suggest keeping InfoIcon for the idle offer and restoring the dots for the other two states (ComposerBanner.Dot exists for exactly this and currently has no consumer, if you prefer routing it through the primitive):

Suggested change
icon: <InfoIcon aria-hidden />,
icon: updateInProgress ? (
<span
className="size-1.5 animate-status-pulse rounded-full bg-foreground"
aria-hidden="true"
/>
) : updateFailed ? (
<span className="size-1.5 rounded-full bg-destructive" aria-hidden="true" />
) : (
<InfoIcon aria-hidden />
),

Posted via Macroscope — UI Consistency

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the composer banner/surface migration again against the new commit (53c1702, "restore combined loading and syncing banners").

The sync status now composes ComposerBanner.Row / Icon / Content (ComposerActivityStatus.tsx), which resolves the icon-column misalignment flagged on 4977016. One new finding below on the verification gate for the primitives this PR introduces.

Findings raised on earlier commits that are still present at this head (not re-posted):

  • ComposerBanner.ToggleIcon inherits the full buttonVariants base, including the pointer-coarse 44x44 ::after hit box, inside rows that are themselves buttons.
  • ComposerBanner.Body supplies only padding-inline-start, so the pending-input option buttons' focus rings are clipped by the animating CollapsiblePanel.
  • The task list relies on implicit ul/li roles after Preflight's list-style: none, dropping the list role and its aria-label in WebKit.
  • Notice descriptions render as a second row, so actions/dismiss align to the title line instead of the whole block.
  • ComposerCommandMenuLayer still reads --chat-composer-drawer-inset, whose only declaration this PR deletes.
  • ChatView's server-update notice uses a static InfoIcon for running/failed/idle states.

Posted via Macroscope — UI Consistency

Comment on lines +145 to +149
function Root({
className,
placement = "attached",
variant = "default",
width = "fill",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ComposerBanner and ComposerSurface now own the behaviors that four deleted test files pinned — attachment seam and placement (attached vs floating), per-variant outline/tint, stack-cap severity, tab vs inline rendering, and the sync status row — while ComposerBannerStack.test.tsx, ComposerStashBadge.test.tsx, ComposerTasksBadge.test.tsx and ThreadSyncStatusPill.test.tsx are removed and assertions are trimmed from ComposerCommandMenu.test.tsx / ComposerStashMenu.test.tsx. Nothing in apps/web renders ComposerBanner or ComposerSurface in a test, so the migrated contracts are unpinned.

This commit adds one more untested contract right here: width defaulting ("content" collapses to w-fit max-w-full flex-none and drops @container, so Row layout="wrap-actions" silently loses its container queries), plus the ChatComposer swap where threadSyncPhase suppresses activeTasksProgress/activeTaskSteps and takes the stack's attached slot.

Suggest a focused renderToStaticMarkup test for ComposerBanner.Root/Row covering attached vs floating placement, each variant's outline/tint tokens, and both width values, so these behaviors stay pinned the way the replaced components were.

Posted via Macroscope — UI Consistency

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency: one new finding on the latest push (combined loading/syncing banner). The earlier ThreadSyncStatusPill hand-rolled-row finding is resolved — ComposerActivityRow now composes Row/Icon/Content and shares the --composer-banner-icon-column grid. Findings from previous runs on this PR (server-update InfoIcon, banner description/action alignment, missing role="list" on the migrated task and stash lists, ToggleIcon inheriting buttonVariants' coarse-pointer overlay, ComposerBanner.Body dropping the clipped panel's end/bottom padding, the deleted --chat-composer-drawer-inset declaration still read by ComposerCommandMenuLayer, and the removed Thinking-row test) are still open and are not repeated here.

Posted via Macroscope — UI Consistency

className={cn(
surfaceColors,
neutralOutline,
"absolute inset-x-0 bottom-0 z-0 mx-auto h-3 w-[96%] cursor-pointer rounded-t-2xl border border-b-0 shadow-[0_6px_18px_rgb(0_0_0/6%)]",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Peek is now the only pointer affordance for revealing the hidden notices, but its hit area is the 12px cap itself (h-3). ComposerBannerStack skips onPointerEnter when event.pointerType === "touch" and collapses the stack on onPointerDownCapture over the front banner, so on a coarse pointer this 12px strip is the only way to open the stack — before this PR any tap inside group/banner-stack revealed it through hover/focus-within. Elsewhere the system guarantees coarse pointers a 44px box (buttonVariants' pointer-coarse:after:min-h-11).

Suggest growing the tappable box upward only, so it stays clear of the front banner's dismiss/actions directly below:

Suggested change
"absolute inset-x-0 bottom-0 z-0 mx-auto h-3 w-[96%] cursor-pointer rounded-t-2xl border border-b-0 shadow-[0_6px_18px_rgb(0_0_0/6%)]",
"absolute inset-x-0 bottom-0 z-0 mx-auto h-3 w-[96%] cursor-pointer rounded-t-2xl border border-b-0 shadow-[0_6px_18px_rgb(0_0_0/6%)]",
"pointer-coarse:before:absolute pointer-coarse:before:inset-x-0 pointer-coarse:before:bottom-0 pointer-coarse:before:h-8",

Posted via Macroscope — UI Consistency

@juliusmarminge
juliusmarminge merged commit 30175a8 into main Aug 31, 2026
25 of 26 checks passed
@juliusmarminge
juliusmarminge deleted the restore/composer-activity-banners branch August 31, 2026 03:24
sandscooling pushed a commit to sandscooling/t3code that referenced this pull request Aug 31, 2026
Absorbs 36 upstream commits up to 9b2d043 (v0.0.37). Ten files conflicted
across fifteen hunks; every carried feature survives.

Additive conflicts, both sides kept: the agent orchestration setting beside
upstream's browser recording frame rate, the fork's rate-limit activity skip
beside upstream's turn-plan skip, the fork's plan usage meter import beside
upstream's video thumbnail helper, and the fork's debugger-capture test beside
upstream's renamed recording test.

Tie-breaks going upstream's way: the failed-tool icon is now circle-alert,
TurnPlanEntry is gone because upstream removed its own parameter, and
ThreadSyncStatusPill went with upstream's sync banner rework.

Re-wired rather than picked: upstream pingdotgg#8734 rebuilt the composer banners on new
primitives, so the carried dismiss control now rides ComposerBanner.Dismiss with
the trigger stretched across the row, and upstream pingdotgg#8828 folds every work group
behind one toggle, so the carried pin moved onto upstream's own standalone-row
path. Image rows join that pin, since the fold would otherwise hide the carried
work-log image row behind "+N tool calls".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
alexcstark added a commit to alexcstark/t3code that referenced this pull request Sep 1, 2026
fc3751f kept call sites while dropping the definitions from both
sides, so the built app threw "deriveTurnPlans is not defined" on
render. tsgo reported 16 errors in apps/web on that commit.

- drop the stale deriveTurnPlans call and the extra deriveTimelineEntries
  argument (upstream removed the function in pingdotgg#8734)
- restore the workingStepLabel memo TerminalShellStatus reads
- restore NOOP_USE_ARTIFACT_TEMPLATE / NOOP_OPEN_ATTACHMENT and rename
  ctx.onFileDownload to upstream's ctx.onFileOpen
- restore the video play-button rendering from pingdotgg#8919; its props and the
  userVideos split merged in but nothing rendered them
- restore the helpers dropped from ChatMarkdown.workspace-images.test.tsx
  and delete the orphaned resolveSidebarStageBadgeLabel test that
  branding.test.ts already covers

Claude-Session: https://claude.ai/code/session_01VucnEAuRBJ3icH9fzd7Mqu
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 1, 2026
## What's Changed
* Add mobile composer attachment menu with video support by @juliusmarminge in pingdotgg/t3code#8843
* fix(web): restore unified activity logs and composer banners by @t3dotgg in pingdotgg/t3code#8734
* fix(web): address composer banner review follow-ups by @juliusmarminge in pingdotgg/t3code#8850
* fix(web): widen sync banners and simplify the working timer by @juliusmarminge in pingdotgg/t3code#8855
* fix(preview): improve browser recording quality by @maria-rcks in pingdotgg/t3code#8839
* fix(web): mark pull request links as external by @juliusmarminge in pingdotgg/t3code#8856
* fix(mobile): replace Callstack glass with Expo glass by @juliusmarminge in pingdotgg/t3code#8862
* fix(server): skip IDE detection in Claude probes by @yashranaway in pingdotgg/t3code#8634
* chore(macroscope): review diagnostic overrides by @t3-code[bot] in pingdotgg/t3code#8917
* fix(contracts): accept CLI event origins by @nateEc in pingdotgg/t3code#8905
* fix(web): hide invalid slash skill completions by @nateEc in pingdotgg/t3code#8904
* fix(mobile): defer draft navigation until submission completes by @juliusmarminge in pingdotgg/t3code#8914
* chore: disable CodeRabbit review status by @juliusmarminge in pingdotgg/t3code#8933
* Delete app.json by @juliusmarminge in pingdotgg/t3code#8934
* fix(web): show scrollbar for wide markdown tables by @UtkarshUsername in pingdotgg/t3code#8868
* fix(mobile): shimmer active tool rows by @juliusmarminge in pingdotgg/t3code#8932
* chore(deps): bump Electron to 43.4.1 by @StiensWout in pingdotgg/t3code#8626
* fix(chat): smooth worktree setup status by @juliusmarminge in pingdotgg/t3code#8922
* feat(mobile): add video playback with native iOS controls by @juliusmarminge in pingdotgg/t3code#8919
* fix(web): prevent chat metadata overlap by @MatthewFeroz in pingdotgg/t3code#8851
* fix(server): preserve usage cache outside walked roots by @Lucenx9 in pingdotgg/t3code#8540
* feat(mobile): add native image and PDF previews by @juliusmarminge in pingdotgg/t3code#8959
* fix(server): allow long thread IDs in HTTP routes by @nateEc in pingdotgg/t3code#8898
* fix(shared): preserve Windows shell PATH priority by @UtkarshUsername in pingdotgg/t3code#8748
* fix(web): make WSL settings searchable by @UtkarshUsername in pingdotgg/t3code#8881
* feat(web): add expand/collapse all control to the files surface by @UtkarshUsername in pingdotgg/t3code#8889
* feat(mobile): upload attachments while composing by @juliusmarminge in pingdotgg/t3code#8978
* fix(chat): keep agent activity visible between actions by @maria-rcks in pingdotgg/t3code#8984
* fix(server): isolate remote web session cookies by @Bil0000 in pingdotgg/t3code#8085
* feat(pull-requests): link GitHub references in markdown by @maria-rcks in pingdotgg/t3code#8812
* perf(server): reduce frequency of full tool call output being loaded into memory from db by @t3dotgg in pingdotgg/t3code#8988
* feat(web): add pull request list filters by @maria-rcks in pingdotgg/t3code#8809
* feat(web): search individual settings by detail by @maria-rcks in pingdotgg/t3code#8831
* feat(client): render viewed images in work logs by @maria-rcks in pingdotgg/t3code#8936
* fix(client): use package import for markdown image helpers by @juliusmarminge in pingdotgg/t3code#9010
* test: remove static presentation snapshots by @t3-code[bot] in pingdotgg/t3code#9008
* perf(server): bound snapshot activity payload memory by @t3dotgg in pingdotgg/t3code#9000
* perf(server): cut idle CPU use and stop provider event leaks by @t3dotgg in pingdotgg/t3code#8187
* perf(server): scan only appended transcript bytes for usage summaries by @StiensWout in pingdotgg/t3code#9024
* perf(server): cut chatty tool-update frames by 90% by @Adamulek123 in pingdotgg/t3code#8368
* fix(server): settle threads server-side by @t3dotgg in pingdotgg/t3code#8600
* fix(clients): dedupe skills in composer menus by @Adamulek123 in pingdotgg/t3code#8043
* fix(server): stop OpenCode child sessions by @t3dotgg in pingdotgg/t3code#9005
* perf(web): defer pull request line stats until visible by @Adamulek123 in pingdotgg/t3code#6471
* perf(server): skip full-message reads while streaming by @t3dotgg in pingdotgg/t3code#9032
* perf(client-runtime): halve server config bootstrap traffic by @Adamulek123 in pingdotgg/t3code#8367
* fix(web): align un-settle banner action by @StiensWout in pingdotgg/t3code#9033
* fix(web): block type-to-focus behind open dialogs by @Lucenx9 in pingdotgg/t3code#8139
* feat(shortcuts): copy active thread reference by @maria-rcks in pingdotgg/t3code#8994
* fix(mobile): keep thread scroll bounds current after animations by @juliusmarminge in pingdotgg/t3code#9013
* fix(server): cache project favicon resolution by @willsheldon in pingdotgg/t3code#9080
* feat(claude): add Claude Fable 5.1 model by @q1 in pingdotgg/t3code#9078
* fix(preview): restore recording and macOS rendering after Electron 43 by @StiensWout in pingdotgg/t3code#9001
* feat(desktop): add configurable quit shortcut confirmation by @juliusmarminge in pingdotgg/t3code#9076
* feat(web): open project settings from thread menus by @SunkenInTime in pingdotgg/t3code#8925
* fix(chat): reuse one row for live activity by @maria-rcks in pingdotgg/t3code#9062
* feat(models): discover Claude models from remote manifest by @juliusmarminge in pingdotgg/t3code#9084
* Revert "fix(chat): reuse one row for live activity" by @maria-rcks in pingdotgg/t3code#9096
* fix(web): sync sidebar PR state from open panel by @t3-code[bot] in pingdotgg/t3code#9092
* fix(web): changing projects no longer creates a draft by @extoci in pingdotgg/t3code#9097
* fix(web): keep theme placeholder text dimmer than entered text by @flamboh in pingdotgg/t3code#9104
* fix(web): keep the selected environment when changing projects by @t3dotgg in pingdotgg/t3code#9102

## New Contributors
* @willsheldon made their first contribution in pingdotgg/t3code#9080
* @q1 made their first contribution in pingdotgg/t3code#9078

**Full Changelog**: pingdotgg/t3code@v0.0.37...v0.0.38

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.38
brentkelly added a commit to brentkelly/t3code-orchestrator that referenced this pull request Sep 2, 2026
* feat(analytics): threads and turns now know which client started them (pingdotgg#7774)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* fix(web): stop marking mixed tool runs as failed (pingdotgg#7893)

* fix(web): command-click spaced folder links (pingdotgg#6439)

Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>

* fix(chat): stop pushing follow-up messages to the top (pingdotgg#7897)

* test(desktop): remove redundant release note assertion (pingdotgg#7873)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(web): handle wide ordered-list marker edge cases (pingdotgg#7856)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* fix(ssh): restore user PATH for remote servers (pingdotgg#7213)

* fix(desktop): keep tailscale spawn defects from breaking advertised endpoints (pingdotgg#7116)

* fix(web): keep Codex service tier labels readable (pingdotgg#4503)

* fix: render workspace images in chat markdown (pingdotgg#6433)

* fix(clients): keep opening responses visible after turns settle (pingdotgg#7723)

* feat(web): add appearance contrast control (pingdotgg#7906)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>

* fix(server): stop completed Codex threads from staying stuck on working (pingdotgg#7937)

* fix(mobile): preserve markdown image dimensions (pingdotgg#7940)

* fix(web): remove duplicate provider update progress (pingdotgg#7761)

* fix(server): fall back to the remote default branch instead of assuming main (pingdotgg#7078)

* fix(web): give sidebar project menu rows the same side padding as other menus (pingdotgg#7913)

* fix(clients): reconnect after credentials fail during remote server updates (pingdotgg#7953)

* feat(codex): submit thread feedback to OpenAI (pingdotgg#7949)

* fix(server): stop kills lingering Claude work (pingdotgg#5891)

* fix(ci): let Macroscope approve pull requests again (pingdotgg#7970)

* fix(clients): move settled pinned threads into the settled section (pingdotgg#7969)

* perf(ci): speed up release builds and Windows packaging (pingdotgg#7975)

* fix(web): stop tool calls from leaving a blank page in threads (pingdotgg#7971)

* fix(web): stop recovered tool failures from marking work logs red (pingdotgg#7999)

* fix(mobile): isolate markdown image requests (pingdotgg#7942)

* feat(web): redesign skills in `$` menu and in `/` menu (pingdotgg#8009)

* fix(web): restore right panel toggle clicks after closing on desktop (pingdotgg#8016)

* fix(web): keep server update banners flush with the composer (pingdotgg#8000)

* perf(web): reuse work log rows during streaming (pingdotgg#8006)

* fix(web): keep provider badge legible in dark themes (pingdotgg#7968)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>

* fix(web): treat configured urls with uppercase schemes as secure (pingdotgg#8005)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>

* fix(desktop): keep release notes visible while downloading (pingdotgg#6412)

* fix(web): show only providers with usage in usage views (pingdotgg#7563)

* fix(web): prevent expanded tool calls from hiding thread content (pingdotgg#8052)

* test(server): remove no-op live activity tests (pingdotgg#8056)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(web): clarify terminal sidebar grouping (pingdotgg#7967)

* fix(codex): show app access approval prompts (pingdotgg#8058)

* feat(web): upload image attachments before sending (pingdotgg#8048)

* fix(server): bound OpenCode skill discovery output (pingdotgg#7675)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>

* fix(mobile): persist thread shelf collapse state (pingdotgg#5152)

* fix(mobile): restore Android tablet thread controls, clean up header (pingdotgg#5385)

* fix(mobile): land the first thread open above the composer on Android (pingdotgg#5585)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): check out submodules in a new worktree (pingdotgg#7674)

Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>

* fix(server): preserve merged PR badges after branch deletion (pingdotgg#6216)

* fix(server): return fresh live pull request reads (pingdotgg#6472)

* fix(web): compare client and server versions as semver, not strings (pingdotgg#7579)

* fix(web): stop follow-ups from leaving giant blank space (pingdotgg#8068)

* fix(marketing): stop automatic Vercel deployments on pull requests (pingdotgg#8070)

* chore: vouch repeat contributors (pingdotgg#8071)

* fix(server): keep the authoritative subagent model when snapshots race task_started (pingdotgg#7583)

* fix(server): honor auto-accept edits for the OpenCode provider (pingdotgg#7100)

* fix(server): run the CLI on Node versions without import.meta.main (pingdotgg#7141)

* fix(server): recover from provider interrupt failures (pingdotgg#7412)

* fix(server): recreate a thread's worktree before starting a turn (pingdotgg#7839)

* fix(server): thread delete no longer fails on already-removed worktrees (pingdotgg#8076)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* fix(web): stop update notices showing through the composer (pingdotgg#8083)

* fix(web): detect outdated nightly servers (pingdotgg#8124)

* fix(web): align usage page skeleton layout (pingdotgg#8111)

* fix(web): make terminal links appear clickable only when clickable (pingdotgg#7488)

* fix(web): make Windows file links clickable in chat (pingdotgg#8081)

* fix(web): sort usage models by token count (pingdotgg#8108)

* fix: open agent file links in the file viewer (pingdotgg#8098)

* fix(server): stop routine events from rescanning thread history (pingdotgg#8150)

* fix(deps): stop pnpm installs from changing the lockfile (pingdotgg#8163)

* feat(web): settle and restore threads with a keyboard shortcut (pingdotgg#8089)

* perf(desktop): cut macOS signing calls by 81% (pingdotgg#8093)

* feat: link pull requests to threads (pingdotgg#8160)

* feat(web): safely attach HEIC photos as JPEG images (pingdotgg#8161)

Co-authored-by: mweinbach <maxweinbach5@gmail.com>

* feat(mobile): track device models and OS versions (pingdotgg#8169)

* fix(grok): bound cumulative tool output updates (pingdotgg#7279)

* fix(web): delay thread shortcut hints by 200 ms (pingdotgg#8172)

* fix(server): stop probing Cursor until enabled (pingdotgg#8175)

* docs(release): verify remote updates with database migrations (pingdotgg#8177)

* fix(server): keep provider CLIs available in the macOS service (pingdotgg#8173)

* feat(claude): compact old threads before they burn through usage (pingdotgg#8144)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* fix(client-runtime): retry queries after connection interruption (pingdotgg#8117)

* fix(server): keep previously used providers working after upgrades (pingdotgg#8176)

* feat(desktop): build macOS previews from a PR label (pingdotgg#8182)

* fix(web): thread jump hints no longer stick after a dictation paste (pingdotgg#8189)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* fix(web): keep grouped project renames (pingdotgg#7831)

* feat(web): reveal chat file chips in the system file manager (pingdotgg#7140)

Co-authored-by: Dara Adedeji <daraaded@amazon.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>

* fix(server): push no longer writes a feature branch's commits to its base branch (pingdotgg#8228)

* chore(deps): bump @clerk/electron to 0.0.37 (pingdotgg#8240)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* feat(server): fetch legacy model classification from a hosted manifest (pingdotgg#8227)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* chore(release): prepare v0.0.34

* fix(desktop): let Clerk UI receive stable auth fixes (pingdotgg#8248)

* fix(app): un-settled threads return to the top of the list (pingdotgg#8231)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* perf(ci): cut about a minute from every release (pingdotgg#8250)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* feat(ci): download macOS preview DMGs without signing in (pingdotgg#8243)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* fix(codex): accept Codex 0.150 multi-agent events (pingdotgg#8346)

* chore(release): prepare v0.0.35

* fix(grok): improve skills, plans, usage, and turn reliability (pingdotgg#8358)

Co-authored-by: Dara Adedeji <daraadedeji07@gmail.com>
Co-authored-by: Ahmed Besic <ahmed-besic@users.noreply.github.com>
Co-authored-by: Michael Brown <michaeltbrown.mtb@gmail.com>
Co-authored-by: Lars Nieuwenhuis <35393046+lnieuwenhuis@users.noreply.github.com>
Co-authored-by: Guilherme Barros <gbarros1095@gmail.com>
Co-authored-by: PC <pc@localhost>
Co-authored-by: 1xpixi <157762409+1xpixi@users.noreply.github.com>

* fix(server): recover stale Codex approval callbacks (pingdotgg#5195)

* test(server): remove duplicate missing worktree test (pingdotgg#8252)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(server): replay all un-applied events during projection bootstrap (pingdotgg#7538)

Co-authored-by: Theo Browne <me@t3.gg>

* test: remove low-signal test files (pingdotgg#8397)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>

* test: prune trivial error and layout tests (pingdotgg#8400)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>

* Fix Android adaptive launcher icon (pingdotgg#4332)

Co-authored-by: Yash Singh <saiansh2525@gmail.com>

* feat(web): split provider settings into list and editor (pingdotgg#8380)

* fix(codex): accept Codex 0.150 account plans (pingdotgg#8447)

* fix(tooling): allow ignored-only staged changes (pingdotgg#8468)

* fix(mobile): keep iOS home header stable (pingdotgg#8467)

Co-authored-by: Julius Marminge <julius@mac.lan>

* fix(web): stop showing red x summaries for ordinary tool failures (pingdotgg#8395)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* fix(mobile): refine Git action toast glass styling (pingdotgg#8399)

* fix(desktop): allow preview automation in agent-created threads (pingdotgg#8483)

* test(web): remove redundant cache key test (pingdotgg#8484)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* fix(release): move nightly schedule to minute 38

Recent scheduled nightlies have been delayed or skipped.

Move the nightly cron from minute 7 to minute 38. Keep the existing three-hour interval. This tests a different point in each three-hour window without claiming it will fix GitHub schedule delivery.

Authored by GPT-5.6 Sol with the Codex harness.

* fix(web): stabilize the provider settings editor (pingdotgg#8472)

* fix(web): open GitHub pull requests in browser when loading fails (pingdotgg#8507)

* fix(codex): show sub-agent models (pingdotgg#8502)

* feat(analytics): report connected client platforms (pingdotgg#8481)

* feat(server): accept PDF, ZIP, and other file uploads up to 50MB (pingdotgg#8235)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* feat(web): toggle thread pin from the keyboard

Add a mod+shift+p shortcut that pins or unpins the active thread. Ignore the shortcut during terminal focus and when the server does not support thread pinning.

* fix(web): add back button to project settings (pingdotgg#8168)

* refactor(mobile): compile semantic themes for Uniwind (pingdotgg#7327)

Co-authored-by: codex <codex@users.noreply.github.com>

* fix(desktop): Cache Runtime locally on WSL Filesystem, dramatically improving launch times  (pingdotgg#5769)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>

* fix(mobile): show OpenCode model sources in picker (pingdotgg#8573)

Co-authored-by: Julius Marminge <julius@mac.lan>

* fix(clients): honor project default models in new threads (pingdotgg#6011)

Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com>

* fix(mobile): show file actions on Android (pingdotgg#8215)

Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com>

* fix(connect): explain DPoP connection failures (pingdotgg#8351)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* feat(web): make the sidebar project filter a searchable combobox (pingdotgg#5931)

* fix(server): a draft can retry its first send after a failed bootstrap (pingdotgg#8226)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* fix(desktop): stop hidden previews draining battery (pingdotgg#8567)

* fix(desktop): oauth popups open from the browser preview (pingdotgg#8435)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): keep long task drawers usable on small screens (pingdotgg#8313)

* fix(opencode): handle child approvals, stops, and model catalogs (pingdotgg#8480)

* fix: make thread auto-settling opt-in (pingdotgg#8321)

* fix(web): stop session activity timing test from blocking releases (pingdotgg#8585)

* fix(mobile): show composer menus when starting a task (pingdotgg#8587)

Co-authored-by: Julius Marminge <julius@mac.lan>

* fix(web): show the configured stash shortcut (pingdotgg#8437)

Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com>

* feat(web): add toggleable confirmation before unpinning a thread (pingdotgg#7313)

Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com>

* fix: restore automatic thread settling defaults (pingdotgg#8596)

* fix(mobile): restore composer glass and rounded shadows (pingdotgg#8597)

Co-authored-by: Julius Marminge <julius@mac.lan>

* Remove Messages Glass Lab experiment (pingdotgg#8599)

* chore(release): prepare v0.0.36

* Require human review for pull requests changing product defaults (pingdotgg#8603)

* fix(codex): avoid quadratic app-server input buffering (pingdotgg#8605)

* fix(mobile): stabilize iOS header item transitions (pingdotgg#8607)

Co-authored-by: Julius Marminge <julius@mac.lan>

* chore(mobile): upgrade to Expo SDK 57 (pingdotgg#8609)

Co-authored-by: Julius Marminge <julius@mac.lan>

* fix(mobile): harden native header toolbar items (pingdotgg#8611)

Co-authored-by: Julius Marminge <julius@mac.lan>

* fix(server): stop querying Claude context usage after turns (pingdotgg#8610)

* chore: vouch ryanrhughes (pingdotgg#8613)

* feat(web): attach PDFs, ZIPs, and other files to a turn (pingdotgg#8236)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* fix(web): pass stashShortcutLabel in the mixed-attachments stash test

PRs pingdotgg#8437 and pingdotgg#8236 crossed: one made stashShortcutLabel a required
ComposerStashMenu prop, the other added a test case without it, so
main fails web typecheck.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(web): keybinding settings as settings rows (pingdotgg#8532)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* feat: let an environment publish themes as a file (pingdotgg#8569)

Co-authored-by: Theo Browne <me@t3.gg>

* fix(web): clean up provider settings list and editor (pingdotgg#8504)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): keep project picker popup inside the sidebar (pingdotgg#8627)

* fix(mobile): prevent header overflow and back-button artifacts (pingdotgg#8624)

* fix(server): retry automatic thread title generation (pingdotgg#8087)

* fix(client-runtime): refresh edited pull request comments (pingdotgg#8094)

* fix(web): four composer spacing defects (pingdotgg#8090)

* perf(desktop): skip duplicate browser updates (pingdotgg#8018)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): render nested markdown images correctly (pingdotgg#8501)

* fix(web): unify activity logs and composer banners (pingdotgg#8693)

* fix(mobile): reduce dev-client reload and Metro startup cost (pingdotgg#8694)

Co-authored-by: Julius Marminge <julius@mac.lan>

* revert(web): restore previous composer banners (pingdotgg#8733)

* test(web): remove tests for unreachable helpers (pingdotgg#8738)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* feat(mobile): update tool summaries and chat transitions (pingdotgg#8793)

* feat(web): play video attachments in chat (pingdotgg#8688)

* fix(web,mobile): snooze menu no longer offers the same wake time twice (pingdotgg#8741)

* fix(grok): allow model changes in existing threads (pingdotgg#8392)

Co-authored-by: Ahmed Besic <ahmed-besic@users.noreply.github.com>

* feat(mobile): pick, share, and receive files in threads (pingdotgg#8237)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): reduce title bar scroll fade height (pingdotgg#8799)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(windows): strip quotes from repaired PATH (pingdotgg#8746)

* fix(web): open agent images in expanded preview (pingdotgg#8807)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(git): follow repository instructions in generated source control text (pingdotgg#8804)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(server): stop overpricing cached Claude tokens (pingdotgg#8806)

* fix(web): keep image preview above sidebar control (pingdotgg#8811)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(web): keep right panel synced with agent edits (pingdotgg#8803)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(web,mobile): render Codex citations and artifact templates (pingdotgg#8584)

* chore: add Windows setup script to t3.json (pingdotgg#8814)

* fix(web): fold interim turn responses (pingdotgg#8828)

* fix(web): use circle alert for failed tool calls (pingdotgg#8840)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* feat(mobile): add offline iPhone voice input (pingdotgg#8614)

Co-authored-by: Julius Marminge <julius@mac.lan>

* fix(web): prevent pull request metadata overlap (pingdotgg#8790)

* chore(release): prepare v0.0.37

* Add mobile composer attachment menu with video support (pingdotgg#8843)

* fix(mobile): map native menu icon colors explicitly

* fix(web): restore unified activity logs and composer banners (pingdotgg#8734)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>

* fix(web): address composer banner review follow-ups (pingdotgg#8850)

* fix(web): widen sync banners and simplify the working timer (pingdotgg#8855)

* fix(preview): improve browser recording quality (pingdotgg#8839)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(web): mark pull request links as external (pingdotgg#8856)

* fix(mobile): replace Callstack glass with Expo glass (pingdotgg#8862)

* fix(server): skip IDE detection in Claude probes (pingdotgg#8634)

* chore(macroscope): review diagnostic overrides (pingdotgg#8917)

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>

* fix(contracts): accept CLI event origins (pingdotgg#8905)

* fix(web): hide invalid slash skill completions (pingdotgg#8904)

* fix(mobile): defer draft navigation until submission completes (pingdotgg#8914)

* chore: disable CodeRabbit review status (pingdotgg#8933)

* Delete app.json (pingdotgg#8934)

* fix(web): show scrollbar for wide markdown tables (pingdotgg#8868)

* fix(mobile): shimmer active tool rows (pingdotgg#8932)

Co-authored-by: Julius Marminge <julius@mac.lan>

* chore(deps): bump Electron to 43.4.1 (pingdotgg#8626)

* fix(chat): smooth worktree setup status (pingdotgg#8922)

* feat(mobile): add video playback with native iOS controls (pingdotgg#8919)

Co-authored-by: Julius Marminge <julius@mac.lan>

* fix(web): prevent chat metadata overlap (pingdotgg#8851)

* fix(server): preserve usage cache outside walked roots (pingdotgg#8540)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>

* feat(mobile): add native image and PDF previews (pingdotgg#8959)

Co-authored-by: Julius Marminge <julius@mac.lan>

* fix(server): allow long thread IDs in HTTP routes (pingdotgg#8898)

* fix(shared): preserve Windows shell PATH priority (pingdotgg#8748)

* fix(web): make WSL settings searchable (pingdotgg#8881)

* feat(web): add expand/collapse all control to the files surface (pingdotgg#8889)

* Add auto_review configuration to coderabbit.yaml

* style: format CodeRabbit configuration

* feat(mobile): upload attachments while composing (pingdotgg#8978)

Co-authored-by: Julius Marminge <julius@mac.lan>

* fix(chat): keep agent activity visible between actions (pingdotgg#8984)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(server): isolate remote web session cookies (pingdotgg#8085)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* feat(pull-requests): link GitHub references in markdown (pingdotgg#8812)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* perf(server): reduce frequency of full tool call output being loaded into memory from db (pingdotgg#8988)

* feat(web): add pull request list filters (pingdotgg#8809)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* feat(web): search individual settings by detail (pingdotgg#8831)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* feat(client): render viewed images in work logs (pingdotgg#8936)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(client): use package import for markdown image helpers (pingdotgg#9010)

* test: remove static presentation snapshots (pingdotgg#9008)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>

* perf(server): bound snapshot activity payload memory (pingdotgg#9000)

* perf(server): cut idle CPU use and stop provider event leaks (pingdotgg#8187)

* perf(server): scan only appended transcript bytes for usage summaries (pingdotgg#9024)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Theo Browne <me@t3.gg>

* perf(server): cut chatty tool-update frames by 90% (pingdotgg#8368)

* fix(server): settle threads server-side (pingdotgg#8600)

* fix(clients): dedupe skills in composer menus (pingdotgg#8043)

* fix(server): stop OpenCode child sessions (pingdotgg#9005)

* perf(web): defer pull request line stats until visible (pingdotgg#6471)

Co-authored-by: Theo Browne <me@t3.gg>

* perf(server): skip full-message reads while streaming (pingdotgg#9032)

* perf(client-runtime): halve server config bootstrap traffic (pingdotgg#8367)

Reuse one server config subscription for session bootstrap and live updates.

Preserve environment theme opt-in, replay, deletion, slow subscriber recovery, and config stream failure handling.

Co-authored-by: Adamulek123 <adam.bogucki2018@gmail.com>

* fix(web): align un-settle banner action (pingdotgg#9033)

* fix(web): block type-to-focus behind open dialogs (pingdotgg#8139)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>

* feat(shortcuts): copy active thread reference (pingdotgg#8994)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(mobile): keep thread scroll bounds current after animations (pingdotgg#9013)

Co-authored-by: Julius Marminge <julius@mac.lan>

* fix(server): cache project favicon resolution (pingdotgg#9080)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>

* feat(claude): add Claude Fable 5.1 model (pingdotgg#9078)

* fix(preview): restore recording and macOS rendering after Electron 43 (pingdotgg#9001)

Co-authored-by: Guillermo Casanova <guillermo.casanova.b@gmail.com>

* feat(desktop): add configurable quit shortcut confirmation (pingdotgg#9076)

* feat(web): open project settings from thread menus (pingdotgg#8925)

* fix(chat): reuse one row for live activity (pingdotgg#9062)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* feat(models): discover Claude models from remote manifest (pingdotgg#9084)

* Revert "fix(chat): reuse one row for live activity" (pingdotgg#9096)

* fix(web): sync sidebar PR state from open panel (pingdotgg#9092)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>

* fix(web): changing projects no longer creates a draft (pingdotgg#9097)

* fix(web): keep theme placeholder text dimmer than entered text (pingdotgg#9104)

* fix(web): keep the selected environment when changing projects (pingdotgg#9102)

* docs(plans): t3o-31 upstream sync to v0.0.38

* fix(board): clear the ten pre-existing typecheck errors before the upstream sync (t3o-31 P0)

Two test fakes failed with a bare Error in the Effect failure channel, a
closure-assigned let narrowed to never, and a single-override pill read
overriddenRows[0] under noUncheckedIndexedAccess. None changed behaviour;
they were masked because the recursive typecheck never reached apps/server.

* fix(sync): the three type errors and two test failures the v0.0.38 merge caused

- BoardModelRow reads planModeEnabled from client settings, as the composer does.
- findBranchPullRequest resolves the default branch for upstream's widened PR
  cache key instead of passing null.
- The orphaned-session integration test mocks the supervisor reactor that the
  startup seam yields (new inventory row).
- The projection resume test seeds board projector watermarks into
  boards.projection_state, where t3o-26 reads them, and asserts over the union.
- searchSettings("work") now also matches upstream's worktree/network items.

* refactor(board): native title attributes become BoardHint tooltips

Upstream's new no-native-title-tooltip rule flags every intrinsic-element
title= in the board (61 sites). BoardHint wraps the styled Tooltip primitive
and renders its child as the trigger, so layout is unchanged; a nullish label
renders the child alone.

* docs(seams): record the v0.0.38 sync (t3o-31)

Merge-log row, the decisions taken (plans stay tracked, upstream's settlement
reactor accepted after audit, projector-enumeration policy, launcher protocol
note), an unmarked-edits debt table for the next sync, a marker census, the
three new upstream workflows to disable, and the runbook's per-package
verification notes.

* review(t3o-31): announce the board's status dots, and order the merge log

Round-1 nitpicks: a bare span's aria-label is not announced, so the working,
running and awaiting dots now carry role="img"; the v0.0.38 merge-log row
moves below the two 2026-08-09 rows so the table reads chronologically.

---------

Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: abcdmku <63693423+abcdmku@users.noreply.github.com>
Co-authored-by: Guilherme Barros <gbarros1095@gmail.com>
Co-authored-by: Rishet11 <154429365+Rishet11@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: Naveed Iqbal <naveediqbal949@gmail.com>
Co-authored-by: Ishaan Kothari <ishaanko.mail@gmail.com>
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Rakshith Bhat <88523594+RakshithBhat03@users.noreply.github.com>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: Tristan Knight <admin@snappeh.com>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Pavlo Trinko <paul.trinko95@gmail.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Rodrigo Brechard <rodrigobrechard@gmail.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: Adamulek123 <adam.bogucki2018@gmail.com>
Co-authored-by: spiky02plateau <155588579+spiky02plateau@users.noreply.github.com>
Co-authored-by: Carlos Jimenez <cjimenez@r21digital.com>
Co-authored-by: Mark Griffin <mrmg@deflexion.net>
Co-authored-by: MacKinley Smith <smithmackinley@gmail.com>
Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com>
Co-authored-by: mweinbach <maxweinbach5@gmail.com>
Co-authored-by: Lars Nieuwenhuis <35393046+lnieuwenhuis@users.noreply.github.com>
Co-authored-by: Mohtasham Murshid <154406804+MohtashamMurshid@users.noreply.github.com>
Co-authored-by: Dara Adedeji <daraaded@amazon.com>
Co-authored-by: Dara Adedeji <daraadedeji07@gmail.com>
Co-authored-by: Ahmed Besic <ahmed-besic@users.noreply.github.com>
Co-authored-by: Michael Brown <michaeltbrown.mtb@gmail.com>
Co-authored-by: PC <pc@localhost>
Co-authored-by: 1xpixi <157762409+1xpixi@users.noreply.github.com>
Co-authored-by: Josh <gitlucky@pipelab.org>
Co-authored-by: Tradi3 <56069280+krutftw@users.noreply.github.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Ivan Malison <IvanMalison@gmail.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: Gianmarco <gianmarcosimone89@gmail.com>
Co-authored-by: Julius Marminge <julius@mac.lan>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Matheson Steplock <ikifar2012@users.noreply.github.com>
Co-authored-by: Anirudh Coontoor <anirudh@gosupernova.live>
Co-authored-by: Nick Anisimov <n.anisimov.23@gmail.com>
Co-authored-by: Muhammad Waleed <114993336+walid-baharwal@users.noreply.github.com>
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
Co-authored-by: Vitaly Iegorov <vitalyiegorov@gmail.com>
Co-authored-by: Ahmed Besic <ahmed.besic2000@gmail.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: Matthew Feroz <136640686+MatthewFeroz@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Aditya Garud <153842990+yashranaway@users.noreply.github.com>
Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com>
Co-authored-by: Will Sheldon <will@autimo.com>
Co-authored-by: mic <85814106+q1@users.noreply.github.com>
Co-authored-by: Guillermo Casanova <guillermo.casanova.b@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants