Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
f3b741a
feat(web): establish redesign primitives and shell
maria-rcks Oct 31, 2026
2211f13
refactor(web): remove unused toggle pressed tokens
maria-rcks Oct 31, 2026
bb015e1
fix(web): match catalog button and type specimens
maria-rcks Oct 31, 2026
58123d3
fix(web): honor reduced motion in overlay primitives
maria-rcks Oct 31, 2026
fa924ec
fix(web): match shell and overlay design geometry
maria-rcks Oct 31, 2026
a1f5f86
fix(web): align project search and sidebar badge sizes
maria-rcks Oct 31, 2026
2321723
fix(web): preserve shell type role and titlebar spacing
maria-rcks Oct 31, 2026
68cd8ea
fix(web): give provider tiles room for icons and labels
maria-rcks Oct 31, 2026
5610557
fix(web): match browser address toolbar spacing to design
maria-rcks Oct 31, 2026
e2f0308
fix(chat): match inline request cards to the timeline design
maria-rcks Oct 31, 2026
2dcf169
feat(ui): add relaxed picker spacing and compact key hints
maria-rcks Oct 31, 2026
e131483
fix(ui): use the inset field surface and format picker variants
maria-rcks Oct 31, 2026
3ef8882
fix(ui): preserve web context menu widths
maria-rcks Oct 31, 2026
de00e01
fix(ui): keep palette actions above provider notices
maria-rcks Oct 31, 2026
731b9fe
fix(ui): fit browser previews inside a landscape floating frame
maria-rcks Oct 31, 2026
96030d0
fix(web): restore compact panel controls and touch targets
maria-rcks Oct 31, 2026
9436b4e
fix(web): home screen project rows show the project they open (#29085)
flamboh Nov 2, 2026
f567517
fix(web): Snoozed and Settled rows drop the PR badge, and snooze time…
flamboh Nov 2, 2026
6e860df
fix(web): snoozed rows show the snooze time like main
maria-rcks Nov 2, 2026
1fa874c
fix(web): project groups show an icon if any checkout has one (#29199)
flamboh Nov 2, 2026
9e2ab27
fix(web): open pull requests show the arrow icon again (#29213)
flamboh Nov 2, 2026
a9d9831
fix(web): restore main sidebar thread rows
maria-rcks Nov 3, 2026
922494c
feat(web): redesign composer and conversation timeline
maria-rcks Oct 31, 2026
30440ad
refactor(chat): remove unused work log helpers
maria-rcks Oct 31, 2026
7c9651e
fix(chat): stop tool shine while waiting for input
maria-rcks Oct 31, 2026
4dc755d
fix(chat): keep paused timer clear of question text
maria-rcks Oct 31, 2026
31bbe9e
fix(chat): keep approval decisions together on narrow screens
maria-rcks Oct 31, 2026
0a58f48
fix(chat): match composer corner and send slot dimensions
maria-rcks Oct 31, 2026
51e2ded
fix(chat): match the collapsed working window dimensions
maria-rcks Oct 31, 2026
7696ecb
fix(chat): acknowledge custom question answers in the footer
maria-rcks Oct 31, 2026
f14d2a7
style(chat): format grouped approval actions
maria-rcks Oct 31, 2026
53c31f4
fix(chat): summarize wake-ups and retain the latest answer
maria-rcks Oct 31, 2026
cef664f
fix(chat): use the pill radius token and accessible wake-up label
maria-rcks Oct 31, 2026
01ebc94
style(chat): format the composer surface
maria-rcks Oct 31, 2026
047f863
fix(chat): align timeline rows and attachment layouts with design
maria-rcks Oct 31, 2026
31293ae
fix(chat): keep row class helper compiler eligible
maria-rcks Oct 31, 2026
3f869bd
fix(chat): expose the existing interrupt action on live work rows
maria-rcks Oct 31, 2026
363d732
fix(chat): keep interrupt available in grouped live rows
maria-rcks Oct 31, 2026
5abadbb
fix(chat): keep turn interrupt off task summary rows
maria-rcks Oct 31, 2026
cd26ded
fix(chat): match composer suggestion and picker menus to the design
maria-rcks Oct 31, 2026
2a24ba4
fix(chat): keep branch picker separators stable
maria-rcks Oct 31, 2026
c387ffc
fix(chat): let the picker text role own its weight
maria-rcks Oct 31, 2026
edd4753
fix(chat): match the option c composer and integrated tray
maria-rcks Oct 31, 2026
d8b42bb
fix(chat): validate plan actions and queued reorder commands
maria-rcks Oct 31, 2026
ad333d3
fix(chat): keep work and notices in the composer tray
maria-rcks Oct 31, 2026
a311dbf
fix(chat): reserve the machine chip for remote threads
maria-rcks Oct 31, 2026
33781bd
fix(chat): wire approval shortcuts in the composer tray
maria-rcks Oct 31, 2026
befe05c
fix(chat): settle completed tasks and cap the prompt at eight lines
maria-rcks Oct 31, 2026
b6b9738
fix(chat): keep tray work bound to the active run
maria-rcks Oct 31, 2026
d2312d2
fix(chat): accept approval keys from the focused workspace
maria-rcks Oct 31, 2026
aea11cf
fix(chat): collapse composer controls on narrow panes
maria-rcks Oct 31, 2026
7774a2a
fix(chat): keep picked attachments above the prompt
maria-rcks Oct 31, 2026
6610f7e
fix(chat): preview queue order while dragging
maria-rcks Oct 31, 2026
8da000c
fix(chat): show the branch picker chevron in the tray
maria-rcks Oct 31, 2026
7789ec2
fix(chat): stage file rows without an automatic reference
maria-rcks Oct 31, 2026
e026896
fix(chat): keep question actions in the tray panel
maria-rcks Oct 31, 2026
b82cc5e
fix(chat): align composer and requests with final design
maria-rcks Oct 31, 2026
0b8fe9b
fix(chat): anchor composer and branch popup to design edges
maria-rcks Oct 31, 2026
e8dae18
fix(chat): keep approval actions together and remove unused drop overlay
maria-rcks Oct 31, 2026
93b556e
fix(chat): keep tray border inside composer dimensions
maria-rcks Oct 31, 2026
c386ae9
fix(chat): reconcile node views outside React lifecycle
maria-rcks Oct 31, 2026
2dd1ef7
fix(chat): preserve synchronous caret updates and popup width
maria-rcks Oct 31, 2026
976b135
fix(web): steered turns' fold rows each show their own time and edits…
flamboh Nov 2, 2026
814aaa7
fix(web): a finished turn's label stays readable next to still-runnin…
flamboh Nov 2, 2026
2d9ebda
fix(web): steered turns read like a chat with one fold at the end (#2…
flamboh Nov 2, 2026
44451c4
test(web): drop the removed assistant timestamp assertion
maria-rcks Nov 3, 2026
7a693c7
fix(web): the working window expands downward without moving the bar …
flamboh Nov 2, 2026
6cfca87
refactor(chat): remove obsolete thinking interrupt flag
maria-rcks Nov 3, 2026
b81e576
fix(web): keep background work off turn fold rows
maria-rcks Nov 2, 2026
2237eed
feat(web): context chips drop the pill and read as colored text, in r…
flamboh Nov 2, 2026
7d21a90
fix(web): narrow composers collapse the env and branch chips instead …
flamboh Nov 2, 2026
386fed8
fix(web): scroll collapsed working history independently
maria-rcks Nov 3, 2026
935eae0
fix(web): Limits opens the usage limits popover directly (#29222)
flamboh Nov 3, 2026
29d9cb3
fix(web): clarify account scope in the usage limits popover
maria-rcks Nov 3, 2026
681ae23
fix(web): collapsing work window keeps its top fade
flamboh Nov 3, 2026
0c99886
Merge maria/redesign/2-composer-timeline into t3/redesign-fix-working…
maria-rcks Nov 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions apps/web/src/components/chat/TimelineWorkGroupRows.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -892,6 +892,12 @@ function WorkingWindowView({ window, itemKey }: { window: WorkingWindow; itemKey
}
const windowRef = useRef<HTMLDivElement>(null);
const spacerRef = useRef<HTMLDivElement>(null);
const [collapseClips, setCollapseClips] = useState(false);
// oxlint-disable-next-line t3code/no-unreasoned-state-sync -- reads the expanded height before the collapse transition paints its first frame
useLayoutEffect(() => {
if (open) return;
setCollapseClips((windowRef.current?.scrollHeight ?? 0) > WORKING_WINDOW_COLLAPSED_HEIGHT);
}, [open]);
// oxlint-disable-next-line t3code/no-unreasoned-state-sync -- older items stay mounted until the collapse transition finishes clipping them
useEffect(() => {
if (open || history === null) return;
Expand Down Expand Up @@ -964,6 +970,7 @@ function WorkingWindowView({ window, itemKey }: { window: WorkingWindow; itemKey
open
? "[height:calc-size(auto,size)]"
: "[height:calc-size(auto,min(size,220px))] not-supports-[height:calc-size(auto,size)]:max-h-[220px]",
!open && history !== null && collapseClips && "working-window-collapse-fade",
)}
>
{history === null ? (
Expand Down Expand Up @@ -1027,6 +1034,7 @@ function CollapsedWorkingWindow({
);
const content = contentRef.current;
if (!viewport || !content) return;
viewport.scrollTop = viewport.scrollHeight;
return observeResize([content, viewport], () => {
if (followRef.current) viewport.scrollTop = viewport.scrollHeight;
});
Expand Down Expand Up @@ -1101,6 +1109,7 @@ function workingWindowItemIsLive(item: WorkingWindowItem | undefined): boolean {
}

const WORKING_WINDOW_TAIL = 12;
const WORKING_WINDOW_COLLAPSED_HEIGHT = 220;

const WORKING_HISTORY_BATCH = 50;

Expand Down
5 changes: 5 additions & 0 deletions apps/web/src/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -1155,6 +1155,11 @@ html[data-mobile-composer-route-transition="true"]::view-transition-old(t3-mobil
var(--app-scrollbar-width) 100%;
}

@utility working-window-collapse-fade {
-webkit-mask-image: linear-gradient(to bottom, transparent 0.5rem, black 2rem);
mask-image: linear-gradient(to bottom, transparent 0.5rem, black 2rem);
}

/* Stage-channel art needs a mask and pseudo-element gradient, so keep the
behavior composable without tying it to the global components layer. */
@utility sidebar-stage-backdrop {
Expand Down
Loading