Skip to content
Open
Changes from all commits
Commits
Show all changes
157 commits
Select commit Hold shift + click to select a range
55cc696
feat(web): establish redesign primitives and shell
maria-rcks Oct 31, 2026
498f626
refactor(web): remove unused toggle pressed tokens
maria-rcks Oct 31, 2026
29ceb9f
fix(web): match catalog button and type specimens
maria-rcks Oct 31, 2026
11fa95c
fix(web): honor reduced motion in overlay primitives
maria-rcks Oct 31, 2026
b32de9a
fix(web): match shell and overlay design geometry
maria-rcks Oct 31, 2026
28c4ad9
fix(web): align project search and sidebar badge sizes
maria-rcks Oct 31, 2026
90b1f27
fix(web): preserve shell type role and titlebar spacing
maria-rcks Oct 31, 2026
560bc09
fix(web): give provider tiles room for icons and labels
maria-rcks Oct 31, 2026
e089371
fix(web): match browser address toolbar spacing to design
maria-rcks Oct 31, 2026
8292963
fix(chat): match inline request cards to the timeline design
maria-rcks Oct 31, 2026
1ec75c4
feat(ui): add relaxed picker spacing and compact key hints
maria-rcks Oct 31, 2026
7e6c9eb
fix(ui): use the inset field surface and format picker variants
maria-rcks Oct 31, 2026
e4ec2e7
fix(ui): preserve web context menu widths
maria-rcks Oct 31, 2026
1669b40
fix(ui): keep palette actions above provider notices
maria-rcks Oct 31, 2026
bdd4f51
fix(ui): fit browser previews inside a landscape floating frame
maria-rcks Oct 31, 2026
bcc9773
fix(web): restore compact panel controls and touch targets
maria-rcks Oct 31, 2026
38eca42
fix(web): home screen project rows show the project they open (#29085)
flamboh Nov 2, 2026
7abffd7
fix(web): Snoozed and Settled rows drop the PR badge, and snooze time…
flamboh Nov 2, 2026
e8ba9f9
fix(web): snoozed rows show the snooze time like main
maria-rcks Nov 2, 2026
eff4bec
fix(web): project groups show an icon if any checkout has one (#29199)
flamboh Nov 2, 2026
6bc4952
fix(web): open pull requests show the arrow icon again (#29213)
flamboh Nov 2, 2026
8556a4d
fix(web): restore main sidebar thread rows
maria-rcks Nov 3, 2026
2854db4
fix(web): new-thread project rows inset their environment icon (#29985)
flamboh Nov 3, 2026
3baac34
fix(web): palette project rows show the location under the name (#29980)
flamboh Nov 3, 2026
d127b65
fix(web): sidebar New thread skips the project dialog (#29973)
flamboh Nov 3, 2026
c0c5bde
fix(web): preserve rebased server text and shortcut expectations
maria-rcks Nov 3, 2026
c1fa14d
fix(web): sidebar rows no longer show a Merged status (#31105)
SunkenInTime Nov 5, 2026
a74752a
fix(web): sidebar PR badges use the same green as the rest of the red…
flamboh Nov 5, 2026
53b7cf0
feat(web): redesign composer and conversation timeline
maria-rcks Oct 31, 2026
f026960
refactor(chat): remove unused work log helpers
maria-rcks Oct 31, 2026
5a383cc
fix(chat): stop tool shine while waiting for input
maria-rcks Oct 31, 2026
e35e5ce
fix(chat): keep paused timer clear of question text
maria-rcks Oct 31, 2026
c489f79
fix(chat): keep approval decisions together on narrow screens
maria-rcks Oct 31, 2026
8afc3f8
fix(chat): match composer corner and send slot dimensions
maria-rcks Oct 31, 2026
2461f8b
fix(chat): match the collapsed working window dimensions
maria-rcks Oct 31, 2026
0099eb7
fix(chat): acknowledge custom question answers in the footer
maria-rcks Oct 31, 2026
a042ba5
style(chat): format grouped approval actions
maria-rcks Oct 31, 2026
558c746
fix(chat): summarize wake-ups and retain the latest answer
maria-rcks Oct 31, 2026
28326b9
fix(chat): use the pill radius token and accessible wake-up label
maria-rcks Oct 31, 2026
7da2977
style(chat): format the composer surface
maria-rcks Oct 31, 2026
3de0ae4
fix(chat): align timeline rows and attachment layouts with design
maria-rcks Oct 31, 2026
2202215
fix(chat): keep row class helper compiler eligible
maria-rcks Oct 31, 2026
7dd97ec
fix(chat): expose the existing interrupt action on live work rows
maria-rcks Oct 31, 2026
074bd24
fix(chat): keep interrupt available in grouped live rows
maria-rcks Oct 31, 2026
e7242e0
fix(chat): keep turn interrupt off task summary rows
maria-rcks Oct 31, 2026
a0d4575
fix(chat): match composer suggestion and picker menus to the design
maria-rcks Oct 31, 2026
4d7fafa
fix(chat): keep branch picker separators stable
maria-rcks Oct 31, 2026
2bf437f
fix(chat): let the picker text role own its weight
maria-rcks Oct 31, 2026
b70adf4
fix(chat): match the option c composer and integrated tray
maria-rcks Oct 31, 2026
9c18be6
fix(chat): validate plan actions and queued reorder commands
maria-rcks Oct 31, 2026
a4c2528
fix(chat): keep work and notices in the composer tray
maria-rcks Oct 31, 2026
061530f
fix(chat): reserve the machine chip for remote threads
maria-rcks Oct 31, 2026
bde20ee
fix(chat): wire approval shortcuts in the composer tray
maria-rcks Oct 31, 2026
98d95a9
fix(chat): settle completed tasks and cap the prompt at eight lines
maria-rcks Oct 31, 2026
737ff10
fix(chat): keep tray work bound to the active run
maria-rcks Oct 31, 2026
4ec71a0
fix(chat): accept approval keys from the focused workspace
maria-rcks Oct 31, 2026
0972d45
fix(chat): collapse composer controls on narrow panes
maria-rcks Oct 31, 2026
11df489
fix(chat): keep picked attachments above the prompt
maria-rcks Oct 31, 2026
ece6490
fix(chat): preview queue order while dragging
maria-rcks Oct 31, 2026
3c62ce4
fix(chat): show the branch picker chevron in the tray
maria-rcks Oct 31, 2026
46da87f
fix(chat): stage file rows without an automatic reference
maria-rcks Oct 31, 2026
eecea45
fix(chat): keep question actions in the tray panel
maria-rcks Oct 31, 2026
bb3f0ff
fix(chat): align composer and requests with final design
maria-rcks Oct 31, 2026
e5f4c50
fix(chat): anchor composer and branch popup to design edges
maria-rcks Oct 31, 2026
fdaf3c4
fix(chat): keep approval actions together and remove unused drop overlay
maria-rcks Oct 31, 2026
90c491e
fix(chat): keep tray border inside composer dimensions
maria-rcks Oct 31, 2026
1445f97
fix(chat): reconcile node views outside React lifecycle
maria-rcks Oct 31, 2026
b284f75
fix(chat): preserve synchronous caret updates and popup width
maria-rcks Oct 31, 2026
4d35ddb
fix(web): steered turns' fold rows each show their own time and edits…
flamboh Nov 2, 2026
13347e6
fix(web): a finished turn's label stays readable next to still-runnin…
flamboh Nov 2, 2026
13cb59f
fix(web): steered turns read like a chat with one fold at the end (#2…
flamboh Nov 2, 2026
76ad813
test(web): drop the removed assistant timestamp assertion
maria-rcks Nov 3, 2026
19ac4b5
fix(web): the working window expands downward without moving the bar …
flamboh Nov 2, 2026
16d48fd
refactor(chat): remove obsolete thinking interrupt flag
maria-rcks Nov 3, 2026
e7efeb9
fix(web): keep background work off turn fold rows
maria-rcks Nov 2, 2026
22e371f
feat(web): context chips drop the pill and read as colored text, in r…
flamboh Nov 2, 2026
e499a8f
fix(web): narrow composers collapse the env and branch chips instead …
flamboh Nov 2, 2026
46c45a8
fix(web): scroll collapsed working history independently
maria-rcks Nov 3, 2026
21f66c3
fix(web): Limits opens the usage limits popover directly (#29222)
flamboh Nov 3, 2026
36677ef
fix(web): clarify account scope in the usage limits popover
maria-rcks Nov 3, 2026
2af28ca
fix(web): the working bar shows its fold caret again (#29969)
flamboh Nov 3, 2026
b5279d8
fix(web): collapsing the working window keeps its top fade (#29972)
flamboh Nov 3, 2026
07b4858
fix(web): a running turn's answer streams below the fold, not inside …
flamboh Nov 3, 2026
fd55a64
fix(web): new wake-ups join their fold without shifting the timeline …
flamboh Nov 3, 2026
44477ba
fix(web): retain composer compatibility after rebase
maria-rcks Nov 3, 2026
fedee9c
fix(web): composer text and placeholder stay clear of the send button…
flamboh Nov 5, 2026
f5b7f0d
fix(web): pasting an image or file drops its chip in the prompt again…
flamboh Nov 5, 2026
7af9a91
fix(web): collapsing the working window no longer nudges the timeline…
flamboh Nov 5, 2026
50e3ee5
fix(web): the working window's scrollbar shows its whole history from…
flamboh Nov 5, 2026
2024c9f
fix(web): finished and wake-up folds work like the live working fold …
flamboh Nov 5, 2026
c4cef16
fix(web): finished turn folds show the live timer's duration format (…
flamboh Nov 5, 2026
4b84927
feat(web): redesign review panels and supporting pages
maria-rcks Oct 31, 2026
a8ed41b
fix(web): restore three-row pull request headers
maria-rcks Oct 31, 2026
e17f5e9
fix(web): fill pull request tab bars with equal segments
maria-rcks Oct 31, 2026
a175346
fix(web): group pull request readiness in a merge card
maria-rcks Oct 31, 2026
0f11b51
fix(web): avoid repeated unchanged preview scroll updates
maria-rcks Oct 31, 2026
c6c312f
fix(web): collect pull request body media in attachments gallery
maria-rcks Oct 31, 2026
5fa1ed0
chore(web): format panel fixes and remove unused copy handler
maria-rcks Oct 31, 2026
3d8b7ff
fix(web): account for segmented well border in header sizing
maria-rcks Oct 31, 2026
c0fda39
fix(web): use design tokens for pull request header dimensions
maria-rcks Oct 31, 2026
777c4ee
fix(web): align panel content hierarchy with design frames
maria-rcks Oct 31, 2026
57aff6a
fix(web): fit compact csv columns to file previews
maria-rcks Oct 31, 2026
788d78c
fix(web): preserve filled file refresh control
maria-rcks Oct 31, 2026
adeeb0b
fix(web): align pull request panels with design
maria-rcks Oct 31, 2026
e9bfeb2
fix(web): match pull request filter menu dimensions
maria-rcks Oct 31, 2026
86d77fc
fix(web): match file preview and diff menu density
maria-rcks Oct 31, 2026
a0313de
fix(web): size pull request tabs to the compact design
maria-rcks Oct 31, 2026
0e18853
fix(web): compare sampled table content before remeasuring
maria-rcks Oct 31, 2026
021bb86
fix(web): use the control type token for document notices
maria-rcks Oct 31, 2026
d12429c
fix(web): center compact pr tab segments
maria-rcks Oct 31, 2026
725a5a2
fix(web): pull request header shows its repo and collapses on scroll …
flamboh Nov 2, 2026
88d3012
fix(web): edit title expands the collapsed pull request header
maria-rcks Nov 2, 2026
3ed29f3
fix(web): pull request state badge matches the redesign's status chip…
flamboh Nov 2, 2026
953197e
feat(web): redesign settings and setup surfaces
maria-rcks Oct 31, 2026
ef6effe
refactor(web): share diagnostics statistic tooltip
maria-rcks Oct 31, 2026
0f12eb7
chore(web): remove obsolete lint ceiling entries
maria-rcks Oct 31, 2026
32c51d2
fix(web): keep snooze fields inside narrow settings panes
maria-rcks Oct 31, 2026
4b2c104
fix(web): preserve room for snooze amounts on mobile
maria-rcks Oct 31, 2026
2d60923
fix(web): give settings a floating panel shell
maria-rcks Oct 31, 2026
a47a725
fix(web): scope settings navigation surface and insets
maria-rcks Oct 31, 2026
a66e877
fix(web): match settings scrim and retain mobile scope labels
maria-rcks Oct 31, 2026
e3a1a01
fix(web): match settings content spacing and defer shortcut editors
maria-rcks Oct 31, 2026
da10bc0
perf(web): share shortcut tooltip and skip offscreen row layout
maria-rcks Oct 31, 2026
615b8bd
perf(web): defer offscreen shortcut controls until visible
maria-rcks Oct 31, 2026
a9532bb
fix(web): align diagnostics overview cards with settings design
maria-rcks Oct 31, 2026
8d98f5f
fix(web): retain shortcut subgrid alignment when deferring controls
maria-rcks Oct 31, 2026
eb57f48
fix(web): match settings page content to design frames
maria-rcks Oct 31, 2026
843dcc0
fix(web): use compact project choices and browser selects
maria-rcks Oct 31, 2026
5c5ab49
fix(server): let partial session scans search farther on refresh
maria-rcks Oct 31, 2026
ee0d29e
fix(web): align system dialogs and restore guided setup
maria-rcks Oct 31, 2026
ec5c547
fix(web): keep all configured agents reachable during setup
maria-rcks Oct 31, 2026
059fa8f
fix(web): keep setup actions visible and project names readable
maria-rcks Oct 31, 2026
eb1da61
fix(web): use provider tile size in publish dialog
maria-rcks Oct 31, 2026
272f6e3
fix(web): align pull request linking dialog with design
maria-rcks Oct 31, 2026
60a8cec
fix(web): match link dialog title and action dimensions
maria-rcks Oct 31, 2026
e8bb0fd
fix(web): preserve intrinsic link dialog action widths
maria-rcks Oct 31, 2026
15a685b
fix(web): align settings rows and defer offscreen shortcut layout
maria-rcks Oct 31, 2026
d6effe8
fix(web): retain the deferred shortcut grid layout
maria-rcks Oct 31, 2026
028d9c2
fix(web): keep publish provider names readable in one row
maria-rcks Oct 31, 2026
393f31a
fix(web): position pull request linking within content
maria-rcks Oct 31, 2026
11f76b1
fix(web): account for both content margins when centering
maria-rcks Oct 31, 2026
bbd085c
fix(web): restore settings scope sentence and page breadcrumb
maria-rcks Oct 31, 2026
6ed6c06
fix(web): wrap settings scope labels on narrow screens
maria-rcks Oct 31, 2026
7326bf9
fix(web): settings stay dark in the Iris, Ember, Ocean and Grove them…
flamboh Nov 2, 2026
35f8bba
fix(web): the current thread row in Lineage nests inside its card (#3…
SunkenInTime Nov 3, 2026
7f4d843
fix(web): the project picker's computer icon lines up with the other …
SunkenInTime Nov 3, 2026
c6ccc9a
fix(web): the content pane sits evenly in the window and follows the …
SunkenInTime Nov 3, 2026
64d5619
fix(desktop): restore main titlebar insets after pane geometry
maria-rcks Nov 3, 2026
8152d13
fix(web): keep working row hooks ahead of the setup card early return
maria-rcks Nov 5, 2026
6faf31c
feat(voice): add environment speech input
maria-rcks Oct 31, 2026
97d7c18
fix(voice): skip cleanup when no provider is ready
maria-rcks Oct 31, 2026
4009384
fix(voice): keep mobile model cards in the page scroll
maria-rcks Oct 31, 2026
9c25609
docs(voice): describe the microphone finish control
maria-rcks Oct 31, 2026
dea8658
fix(web): dictating no longer flickers or shifts the timeline (#30437)
flamboh Nov 5, 2026
8e4982a
fix(web): Voice settings open on a short model list (#30410)
flamboh Nov 5, 2026
0e95102
fix(web): voice input start compiles with the React Compiler again
flamboh Nov 5, 2026
70bd268
Merge branch 'maria/redesign/5-voice' into t3/redesign-fix-speech-com…
maria-rcks Nov 5, 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
26 changes: 17 additions & 9 deletions apps/web/src/speech/useEnvironmentSpeechInput.ts
Original file line number Diff line number Diff line change
Expand Up @@ -323,24 +323,32 @@ export function useEnvironmentSpeechInput(input: HookInput) {
request === startRequestRef.current &&
controllerRef.current === expectedController &&
latestInputRef.current.ownerKey === expectedOwner;
let latestStatus: EnvironmentSpeechStatus;
pendingStartRef.current = request;
try {
latestStatus = await runtime.runPromise(getEnvironmentSpeechStatus(prepared));
if (!stillCurrent()) return;
const waitForStatus = async () => {
let latestStatus = await runtime.runPromise(getEnvironmentSpeechStatus(prepared));
if (!stillCurrent()) return null;
if (latestStatus.supported && latestStatus.state === "transcribing") {
setQueuedStart({ prepared, request });
// Remember the press and start when the previous stream drains,
// like Handy does, instead of erroring after a fixed wait.
// Esc, cancel, or a draft change (stillCurrent) abandons the queue.
while (latestStatus.supported && latestStatus.state === "transcribing") {
await new Promise<void>((resolve) => window.setTimeout(resolve, 250));
if (!stillCurrent()) return;
if (!stillCurrent()) return null;
latestStatus = await runtime.runPromise(getEnvironmentSpeechStatus(prepared));
if (!stillCurrent()) return;
if (!stillCurrent()) return null;
}
}
return latestStatus;
};
const clearPendingStart = () => {
if (pendingStartRef.current === request) pendingStartRef.current = null;
};
pendingStartRef.current = request;
let latestStatus: EnvironmentSpeechStatus | null;
try {
latestStatus = await waitForStatus();
} catch (error) {
clearPendingStart();
if (!stillCurrent()) return;
toastManager.add({
type: "error",
Expand All @@ -349,9 +357,9 @@ export function useEnvironmentSpeechInput(input: HookInput) {
});
setQueuedStart(null);
return;
} finally {
if (pendingStartRef.current === request) pendingStartRef.current = null;
}
clearPendingStart();
if (!latestStatus) return;
setQueuedStart(null);
if (!latestStatus.supported) return;
setStatus({ prepared, value: latestStatus });
Expand Down
Loading