Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
322 commits
Select commit Hold shift + click to select a range
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
094ecfe
feat(web): establish redesign primitives and shell
maria-rcks Oct 31, 2026
09ded08
refactor(web): remove unused toggle pressed tokens
maria-rcks Oct 31, 2026
868e926
fix(web): match catalog button and type specimens
maria-rcks Oct 31, 2026
ec38f21
fix(web): honor reduced motion in overlay primitives
maria-rcks Oct 31, 2026
9a66264
fix(web): match shell and overlay design geometry
maria-rcks Oct 31, 2026
50ac3db
fix(web): align project search and sidebar badge sizes
maria-rcks Oct 31, 2026
b4230c9
fix(web): preserve shell type role and titlebar spacing
maria-rcks Oct 31, 2026
e650cad
fix(web): give provider tiles room for icons and labels
maria-rcks Oct 31, 2026
2949e62
fix(web): match browser address toolbar spacing to design
maria-rcks Oct 31, 2026
f22947f
fix(chat): match inline request cards to the timeline design
maria-rcks Oct 31, 2026
597870e
feat(ui): add relaxed picker spacing and compact key hints
maria-rcks Oct 31, 2026
e5f7661
fix(ui): use the inset field surface and format picker variants
maria-rcks Oct 31, 2026
796bc67
fix(ui): preserve web context menu widths
maria-rcks Oct 31, 2026
ec376b6
fix(ui): keep palette actions above provider notices
maria-rcks Oct 31, 2026
945d8df
fix(ui): fit browser previews inside a landscape floating frame
maria-rcks Oct 31, 2026
11035a3
fix(web): restore compact panel controls and touch targets
maria-rcks Oct 31, 2026
70fa6ae
fix(web): home screen project rows show the project they open (#29085)
flamboh Nov 2, 2026
b3329c6
fix(web): Snoozed and Settled rows drop the PR badge, and snooze time…
flamboh Nov 2, 2026
b34b201
fix(web): snoozed rows show the snooze time like main
maria-rcks Nov 2, 2026
1f56095
fix(web): project groups show an icon if any checkout has one (#29199)
flamboh Nov 2, 2026
2aa33fa
fix(web): open pull requests show the arrow icon again (#29213)
flamboh Nov 2, 2026
f77d0c7
fix(web): restore main sidebar thread rows
maria-rcks Nov 3, 2026
6cd0c38
fix(web): new-thread project rows inset their environment icon (#29985)
flamboh Nov 3, 2026
d8727ee
fix(web): palette project rows show the location under the name (#29980)
flamboh Nov 3, 2026
f391418
fix(web): sidebar New thread skips the project dialog (#29973)
flamboh Nov 3, 2026
0addf89
fix(web): preserve rebased server text and shortcut expectations
maria-rcks Nov 3, 2026
dee2da0
fix(web): sidebar rows no longer show a Merged status (#31105)
SunkenInTime Nov 5, 2026
4c1d766
fix(web): sidebar PR badges use the same green as the rest of the red…
flamboh Nov 5, 2026
2bbd07e
feat(web): redesign composer and conversation timeline
maria-rcks Oct 31, 2026
7535dfc
refactor(chat): remove unused work log helpers
maria-rcks Oct 31, 2026
78f313c
fix(chat): stop tool shine while waiting for input
maria-rcks Oct 31, 2026
0621db6
fix(chat): keep paused timer clear of question text
maria-rcks Oct 31, 2026
d3fef7e
fix(chat): keep approval decisions together on narrow screens
maria-rcks Oct 31, 2026
2cc5772
fix(chat): match composer corner and send slot dimensions
maria-rcks Oct 31, 2026
f24108b
fix(chat): match the collapsed working window dimensions
maria-rcks Oct 31, 2026
47a7a88
fix(chat): acknowledge custom question answers in the footer
maria-rcks Oct 31, 2026
0a00810
style(chat): format grouped approval actions
maria-rcks Oct 31, 2026
1ee1d16
fix(chat): summarize wake-ups and retain the latest answer
maria-rcks Oct 31, 2026
dc269bf
fix(chat): use the pill radius token and accessible wake-up label
maria-rcks Oct 31, 2026
fff5ec8
style(chat): format the composer surface
maria-rcks Oct 31, 2026
7bb038d
fix(chat): align timeline rows and attachment layouts with design
maria-rcks Oct 31, 2026
797075c
fix(chat): keep row class helper compiler eligible
maria-rcks Oct 31, 2026
b28b6a7
fix(chat): expose the existing interrupt action on live work rows
maria-rcks Oct 31, 2026
73b3f2c
fix(chat): keep interrupt available in grouped live rows
maria-rcks Oct 31, 2026
b064ce1
fix(chat): keep turn interrupt off task summary rows
maria-rcks Oct 31, 2026
5775d4f
fix(chat): match composer suggestion and picker menus to the design
maria-rcks Oct 31, 2026
7e73ede
fix(chat): keep branch picker separators stable
maria-rcks Oct 31, 2026
59e2b35
fix(chat): let the picker text role own its weight
maria-rcks Oct 31, 2026
ba1a14c
fix(chat): match the option c composer and integrated tray
maria-rcks Oct 31, 2026
9811061
fix(chat): validate plan actions and queued reorder commands
maria-rcks Oct 31, 2026
4d023cb
fix(chat): keep work and notices in the composer tray
maria-rcks Oct 31, 2026
10fabcb
fix(chat): reserve the machine chip for remote threads
maria-rcks Oct 31, 2026
b2d09d5
fix(chat): wire approval shortcuts in the composer tray
maria-rcks Oct 31, 2026
4bd6500
fix(chat): settle completed tasks and cap the prompt at eight lines
maria-rcks Oct 31, 2026
a9e588c
fix(chat): keep tray work bound to the active run
maria-rcks Oct 31, 2026
24949fc
fix(chat): accept approval keys from the focused workspace
maria-rcks Oct 31, 2026
2ba6b02
fix(chat): collapse composer controls on narrow panes
maria-rcks Oct 31, 2026
fa50cd9
fix(chat): keep picked attachments above the prompt
maria-rcks Oct 31, 2026
830cd70
fix(chat): preview queue order while dragging
maria-rcks Oct 31, 2026
4cf6f95
fix(chat): show the branch picker chevron in the tray
maria-rcks Oct 31, 2026
bcf0b26
fix(chat): stage file rows without an automatic reference
maria-rcks Oct 31, 2026
82dc38d
fix(chat): keep question actions in the tray panel
maria-rcks Oct 31, 2026
193418f
fix(chat): align composer and requests with final design
maria-rcks Oct 31, 2026
d6716ab
fix(chat): anchor composer and branch popup to design edges
maria-rcks Oct 31, 2026
387ae8f
fix(chat): keep approval actions together and remove unused drop overlay
maria-rcks Oct 31, 2026
1d648e0
fix(chat): keep tray border inside composer dimensions
maria-rcks Oct 31, 2026
6f7d5dd
fix(chat): reconcile node views outside React lifecycle
maria-rcks Oct 31, 2026
9cd701c
fix(chat): preserve synchronous caret updates and popup width
maria-rcks Oct 31, 2026
437e583
fix(web): steered turns' fold rows each show their own time and edits…
flamboh Nov 2, 2026
4d130ec
fix(web): a finished turn's label stays readable next to still-runnin…
flamboh Nov 2, 2026
405813e
fix(web): steered turns read like a chat with one fold at the end (#2…
flamboh Nov 2, 2026
6f79218
test(web): drop the removed assistant timestamp assertion
maria-rcks Nov 3, 2026
2f0c434
fix(web): the working window expands downward without moving the bar …
flamboh Nov 2, 2026
818f116
refactor(chat): remove obsolete thinking interrupt flag
maria-rcks Nov 3, 2026
2e92c7f
fix(web): keep background work off turn fold rows
maria-rcks Nov 2, 2026
7e50fca
feat(web): context chips drop the pill and read as colored text, in r…
flamboh Nov 2, 2026
d940645
fix(web): narrow composers collapse the env and branch chips instead …
flamboh Nov 2, 2026
9f504c3
fix(web): scroll collapsed working history independently
maria-rcks Nov 3, 2026
ad0bf5a
fix(web): Limits opens the usage limits popover directly (#29222)
flamboh Nov 3, 2026
013eae5
fix(web): clarify account scope in the usage limits popover
maria-rcks Nov 3, 2026
ccc341d
fix(web): the working bar shows its fold caret again (#29969)
flamboh Nov 3, 2026
7df179b
fix(web): collapsing the working window keeps its top fade (#29972)
flamboh Nov 3, 2026
db26e98
fix(web): a running turn's answer streams below the fold, not inside …
flamboh Nov 3, 2026
18967ab
fix(web): new wake-ups join their fold without shifting the timeline …
flamboh Nov 3, 2026
f1db15f
fix(web): retain composer compatibility after rebase
maria-rcks Nov 3, 2026
69294da
fix(web): composer text and placeholder stay clear of the send button…
flamboh Nov 5, 2026
c3c4af6
fix(web): pasting an image or file drops its chip in the prompt again…
flamboh Nov 5, 2026
dc83af7
fix(web): collapsing the working window no longer nudges the timeline…
flamboh Nov 5, 2026
4609b05
fix(web): the working window's scrollbar shows its whole history from…
flamboh Nov 5, 2026
ae29518
fix(web): finished and wake-up folds work like the live working fold …
flamboh Nov 5, 2026
4ee7ba8
fix(web): finished turn folds show the live timer's duration format (…
flamboh Nov 5, 2026
57ecd42
fix(web): tighten the bubble corner under the steer label
maria-rcks Nov 5, 2026
ff00df3
feat(web): redesign review panels and supporting pages
maria-rcks Oct 31, 2026
f658165
fix(web): restore three-row pull request headers
maria-rcks Oct 31, 2026
b57f283
fix(web): fill pull request tab bars with equal segments
maria-rcks Oct 31, 2026
a87fcee
fix(web): group pull request readiness in a merge card
maria-rcks Oct 31, 2026
6abb429
fix(web): avoid repeated unchanged preview scroll updates
maria-rcks Oct 31, 2026
7c77315
fix(web): collect pull request body media in attachments gallery
maria-rcks Oct 31, 2026
645e238
chore(web): format panel fixes and remove unused copy handler
maria-rcks Oct 31, 2026
17cf8d8
fix(web): account for segmented well border in header sizing
maria-rcks Oct 31, 2026
bc515bd
fix(web): use design tokens for pull request header dimensions
maria-rcks Oct 31, 2026
c9b6b3e
fix(web): align panel content hierarchy with design frames
maria-rcks Oct 31, 2026
cb2846b
fix(web): fit compact csv columns to file previews
maria-rcks Oct 31, 2026
383f5e5
fix(web): preserve filled file refresh control
maria-rcks Oct 31, 2026
dfa4096
fix(web): align pull request panels with design
maria-rcks Oct 31, 2026
033c55b
fix(web): match pull request filter menu dimensions
maria-rcks Oct 31, 2026
d313a13
fix(web): match file preview and diff menu density
maria-rcks Oct 31, 2026
6b63452
fix(web): size pull request tabs to the compact design
maria-rcks Oct 31, 2026
2060e77
fix(web): compare sampled table content before remeasuring
maria-rcks Oct 31, 2026
4da9008
fix(web): use the control type token for document notices
maria-rcks Oct 31, 2026
6f43c86
fix(web): center compact pr tab segments
maria-rcks Oct 31, 2026
fef123d
fix(web): pull request header shows its repo and collapses on scroll …
flamboh Nov 2, 2026
db280c4
fix(web): edit title expands the collapsed pull request header
maria-rcks Nov 2, 2026
4278cf2
fix(web): pull request state badge matches the redesign's status chip…
flamboh Nov 2, 2026
a58e4ad
feat(web): redesign settings and setup surfaces
maria-rcks Oct 31, 2026
2918ea1
refactor(web): share diagnostics statistic tooltip
maria-rcks Oct 31, 2026
3ab4cfe
chore(web): remove obsolete lint ceiling entries
maria-rcks Oct 31, 2026
321ec49
fix(web): keep snooze fields inside narrow settings panes
maria-rcks Oct 31, 2026
b5c9dc9
fix(web): preserve room for snooze amounts on mobile
maria-rcks Oct 31, 2026
fb4c098
fix(web): give settings a floating panel shell
maria-rcks Oct 31, 2026
4880a05
fix(web): scope settings navigation surface and insets
maria-rcks Oct 31, 2026
13711b9
fix(web): match settings scrim and retain mobile scope labels
maria-rcks Oct 31, 2026
6fe11a9
fix(web): match settings content spacing and defer shortcut editors
maria-rcks Oct 31, 2026
2c534f1
perf(web): share shortcut tooltip and skip offscreen row layout
maria-rcks Oct 31, 2026
d989c1c
perf(web): defer offscreen shortcut controls until visible
maria-rcks Oct 31, 2026
82b848f
fix(web): align diagnostics overview cards with settings design
maria-rcks Oct 31, 2026
580b559
fix(web): retain shortcut subgrid alignment when deferring controls
maria-rcks Oct 31, 2026
d281326
fix(web): match settings page content to design frames
maria-rcks Oct 31, 2026
dab7bb8
fix(web): use compact project choices and browser selects
maria-rcks Oct 31, 2026
c7f1cc1
fix(server): let partial session scans search farther on refresh
maria-rcks Oct 31, 2026
958ae3c
fix(web): align system dialogs and restore guided setup
maria-rcks Oct 31, 2026
e3007c4
fix(web): keep all configured agents reachable during setup
maria-rcks Oct 31, 2026
e292d91
fix(web): keep setup actions visible and project names readable
maria-rcks Oct 31, 2026
67d5efc
fix(web): use provider tile size in publish dialog
maria-rcks Oct 31, 2026
3a22844
fix(web): align pull request linking dialog with design
maria-rcks Oct 31, 2026
dbe5dbd
fix(web): match link dialog title and action dimensions
maria-rcks Oct 31, 2026
ee347fa
fix(web): preserve intrinsic link dialog action widths
maria-rcks Oct 31, 2026
c65ca0f
fix(web): align settings rows and defer offscreen shortcut layout
maria-rcks Oct 31, 2026
2da9210
fix(web): retain the deferred shortcut grid layout
maria-rcks Oct 31, 2026
904d38c
fix(web): keep publish provider names readable in one row
maria-rcks Oct 31, 2026
1516f90
fix(web): position pull request linking within content
maria-rcks Oct 31, 2026
75e13a6
fix(web): account for both content margins when centering
maria-rcks Oct 31, 2026
a992fdb
fix(web): restore settings scope sentence and page breadcrumb
maria-rcks Oct 31, 2026
d58e18f
fix(web): wrap settings scope labels on narrow screens
maria-rcks Oct 31, 2026
26a7f9a
fix(web): settings stay dark in the Iris, Ember, Ocean and Grove them…
flamboh Nov 2, 2026
8a65ca5
fix(web): the current thread row in Lineage nests inside its card (#3…
SunkenInTime Nov 3, 2026
a96171a
fix(web): the project picker's computer icon lines up with the other …
SunkenInTime Nov 3, 2026
ad02f65
fix(web): the content pane sits evenly in the window and follows the …
SunkenInTime Nov 3, 2026
18517a5
fix(desktop): restore main titlebar insets after pane geometry
maria-rcks Nov 3, 2026
de5bfad
fix(web): keep working row hooks ahead of the setup card early return
maria-rcks Nov 5, 2026
e9da291
feat(voice): add environment speech input
maria-rcks Oct 31, 2026
b2ca85b
fix(voice): skip cleanup when no provider is ready
maria-rcks Oct 31, 2026
fb472b2
fix(voice): keep mobile model cards in the page scroll
maria-rcks Oct 31, 2026
a9677cc
docs(voice): describe the microphone finish control
maria-rcks Oct 31, 2026
a5c9d5f
fix(web): dictating no longer flickers or shifts the timeline (#30437)
flamboh Nov 5, 2026
ac05fbc
fix(web): the timeline inset no longer reserves room for a speech tray
maria-rcks Nov 5, 2026
715b561
fix(web): Voice settings open on a short model list (#30410)
flamboh Nov 5, 2026
70bd268
Merge branch 'maria/redesign/5-voice' into t3/redesign-fix-speech-com…
maria-rcks Nov 5, 2026
ee0f6e5
feat(voice): add environment speech input
maria-rcks Oct 31, 2026
8c7a0c7
fix(voice): skip cleanup when no provider is ready
maria-rcks Oct 31, 2026
2ef5672
fix(voice): keep mobile model cards in the page scroll
maria-rcks Oct 31, 2026
cf794f4
docs(voice): describe the microphone finish control
maria-rcks Oct 31, 2026
8e63689
fix(web): dictating no longer flickers or shifts the timeline (#30437)
flamboh Nov 5, 2026
d4e8e12
fix(web): the timeline inset no longer reserves room for a speech tray
maria-rcks Nov 5, 2026
6277e2c
fix(web): Voice settings open on a short model list (#30410)
flamboh Nov 5, 2026
107d33d
merge: update speech compiler fix with current voice layer
flamboh Nov 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ Architecture and its constraints: `docs/internals/overview.md`. Glossary: `docs/
projection, tight loops) or duplicate an existing tracing boundary; explain that choice nearby.
Named `Effect.fn` creates a span; the unnamed form does not. Preserve existing span names and
options, and pass combinators as additional function-builder arguments.
- Before building UI, open `/design-system` in a dev build: it renders every primitive, variant and type role. Text takes a role (`<Text variant>` or `text-title` … `text-micro`), not `text-sm` or `font-medium`; a clickable thing is a `components/ui` control, not a styled `<button>` or `<a>`. `t3code/no-raw-type-classes` and `t3code/no-styled-raw-controls` fail lint, and their per-file ceilings in `vite.config.ts` only go down.
- Inferred types over annotations. `any` is the enemy.
- Default to no comment. Write one only for a constraint, an external quirk, or an invariant the code can't show, in one line where you can and four at most. Don't restate names or signatures, narrate steps, record history, or explain the fix you just made; the PR carries that. `t3code/no-low-value-comments` enforces the length cap and the mechanical cases.
- React effects are for synchronizing with something outside React. Derive in render and act in handlers instead of syncing state, but don't hide real lifecycle work in refs or stores to dodge one. The `t3code/no-unreasoned-state-sync` lint rule reports every effect; one that stays states its reason with `// oxlint-disable-next-line t3code/no-unreasoned-state-sync -- <why>`.
Expand Down
30 changes: 7 additions & 23 deletions apps/desktop/resources/dmg/dmg-background-latest.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 10 additions & 30 deletions apps/desktop/resources/dmg/dmg-background-nightly.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions apps/desktop/src/app/DesktopLifecycle.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,9 @@ function layerElectronApp(

const layerElectronTheme = Layer.succeed(ElectronTheme.ElectronTheme, {
shouldUseDarkColors: Effect.succeed(false),
shouldUseDarkChrome: Effect.succeed(false),
setSource: () => Effect.void,
setBlackChrome: () => Effect.void,
onUpdated: () => Effect.void,
});

Expand Down
21 changes: 21 additions & 0 deletions apps/desktop/src/electron/ElectronTheme.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,14 @@ export class ElectronTheme extends Context.Service<
ElectronTheme,
{
readonly shouldUseDarkColors: Effect.Effect<boolean>;
/**
* Whether the window chrome (native background, caption button symbols)
* is dark: the dark appearance, or the renderer's light, black chrome.
*/
readonly shouldUseDarkChrome: Effect.Effect<boolean>;
readonly setSource: (theme: DesktopTheme) => Effect.Effect<void, ElectronThemeSetSourceError>;
/** The renderer's light, black chrome appearance; notifies onUpdated listeners. */
readonly setBlackChrome: (enabled: boolean) => Effect.Effect<void>;
readonly onUpdated: (listener: () => void) => Effect.Effect<void, never, Scope.Scope>;
}
>()("@t3tools/desktop/electron/ElectronTheme") {}
Expand All @@ -38,6 +45,10 @@ type WatchSystemColorScheme = (onChange: (scheme: LinuxColorScheme) => void) =>
export const makeWith = Effect.fn("ElectronTheme.make")(function* (
watchSystemColorScheme: WatchSystemColorScheme | undefined,
) {
// Black chrome is renderer state, not a native theme source, so the service
// keeps it and fans changes out to the same listeners as native updates.
let blackChrome = false;
const blackChromeListeners = new Set<() => void>();
let source: DesktopTheme = Electron.nativeTheme.themeSource;
let systemScheme: LinuxColorScheme = null;
// On Linux, Electron reads the desktop color scheme once and then ignores the settings
Expand All @@ -64,6 +75,7 @@ export const makeWith = Effect.fn("ElectronTheme.make")(function* (

return ElectronTheme.of({
shouldUseDarkColors: Effect.sync(() => Electron.nativeTheme.shouldUseDarkColors),
shouldUseDarkChrome: Effect.sync(() => Electron.nativeTheme.shouldUseDarkColors || blackChrome),
setSource: Effect.fn("ElectronTheme.setSource")(function (theme) {
return Effect.try({
try: () => {
Expand All @@ -73,15 +85,24 @@ export const makeWith = Effect.fn("ElectronTheme.make")(function* (
catch: (cause) => new ElectronThemeSetSourceError({ source: theme, cause }),
});
}),
setBlackChrome: Effect.fn("ElectronTheme.setBlackChrome")(function (enabled) {
return Effect.sync(() => {
if (blackChrome === enabled) return;
blackChrome = enabled;
for (const listener of blackChromeListeners) listener();
});
}),
onUpdated: Effect.fn("ElectronTheme.onUpdated")(function (listener) {
return Effect.acquireRelease(
Effect.suspend(() => {
Electron.nativeTheme.on("updated", listener);
blackChromeListeners.add(listener);
return Effect.void;
}),
() =>
Effect.suspend(() => {
Electron.nativeTheme.removeListener("updated", listener);
blackChromeListeners.delete(listener);
return Effect.void;
}),
);
Expand Down
4 changes: 4 additions & 0 deletions apps/desktop/src/ipc/DesktopIpcHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ import {
pickFolder,
pickProjectFavicon,
pickThemeFiles,
setBlackChrome,
setTheme,
setWindowButtonsVisible,
showContextMenu,
} from "./methods/window.ts";
import {
Expand Down Expand Up @@ -140,6 +142,7 @@ export const installDesktopIpcHandlers = Effect.fn("desktop.ipc.installHandlers"
yield* ipc.handle(pickProjectFavicon);
yield* ipc.handle(pickThemeFiles);
yield* ipc.handle(setTheme);
yield* ipc.handle(setBlackChrome);
yield* ipc.handle(showContextMenu);
yield* ipc.handle(openExternal);
yield* ipc.handle(readMedia);
Expand All @@ -149,6 +152,7 @@ export const installDesktopIpcHandlers = Effect.fn("desktop.ipc.installHandlers"
yield* ipc.handle(checkSystemPermission);
yield* ipc.handle(pasteAsText);
yield* ipc.handle(revealWindow);
yield* ipc.handle(setWindowButtonsVisible);
yield* ipc.handle(probeRemoteEditors);
yield* ipc.handle(getUpdateState);
yield* ipc.handle(setUpdateChannel);
Expand Down
5 changes: 5 additions & 0 deletions apps/desktop/src/ipc/channels.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ export const SET_NOTIFICATION_BADGE_CHANNEL = "desktop:set-notification-badge";
export const PICK_PROJECT_FAVICON_CHANNEL = "desktop:pick-project-favicon";
export const PICK_THEME_FILES_CHANNEL = "desktop:pick-theme-files";
export const SET_THEME_CHANNEL = "desktop:set-theme";
export const SET_BLACK_CHROME_CHANNEL = "desktop:set-black-chrome";
export const CONTEXT_MENU_CHANNEL = "desktop:context-menu";
export const OPEN_EXTERNAL_CHANNEL = "desktop:open-external";
export const READ_MEDIA_CHANNEL = "desktop:read-media";
Expand All @@ -19,6 +20,7 @@ export const TRACKPAD_SCROLL_BEGIN_CHANNEL = "desktop:trackpad-scroll-begin";
export const TRACKPAD_SCROLL_END_CHANNEL = "desktop:trackpad-scroll-end";
export const GET_WINDOW_FULLSCREEN_STATE_CHANNEL = "desktop:get-window-fullscreen-state";
export const WINDOW_FULLSCREEN_STATE_CHANNEL = "desktop:window-fullscreen-state";
export const SET_WINDOW_BUTTONS_VISIBLE_CHANNEL = "desktop:set-window-buttons-visible";
export const DESKTOP_APP_ACTIVATION_READY_CHANNEL = "desktop:app-activation-ready";
export const DESKTOP_APP_ACTIVATION_COMPLETE_CHANNEL = "desktop:app-activation-complete";
export const DESKTOP_APP_ACTIVATION_REQUEST_CHANNEL = "desktop:app-activation-request";
Expand Down Expand Up @@ -122,5 +124,8 @@ export const PREVIEW_RECORDING_INPUT_CHANNEL = "desktop:preview-recording-input"

export const RECEIVE_PROVIDER_AUTH_CALLBACK_CHANNEL = "desktop:receive-provider-auth-callback";
export const CANCEL_PROVIDER_AUTH_CALLBACK_CHANNEL = "desktop:cancel-provider-auth-callback";

export const PREVIEW_ANNOTATION_VOICE_EVENT_CHANNEL = "desktop:preview-annotation-voice-event";
export const PREVIEW_ANNOTATION_VOICE_STATE_CHANNEL = "desktop:preview-annotation-voice-state";
export const TAKE_LEGACY_LOCAL_STORAGE_CHANNEL = "desktop:take-legacy-local-storage";
export const COMPLETE_LEGACY_LOCAL_STORAGE_CHANNEL = "desktop:complete-legacy-local-storage";
Loading
Loading