Commit b21cb8f
committed
fix(mobile): repair dictation placement defects found in review
Adversarial review of the hand-placed dictation UI found three ways the
composer strands the user. All three are in code written by hand rather
than ported, and none was caught by typecheck, lint, or 1042 tests.
The editor was never frozen. NewTaskDraftScreen passes
readOnly={voiceInput.freezesEditor}; the thread composer did not, so the
keyboard stayed live during recording. One keystroke makes
resolveTranscriptCommit see a changed draft and discard the entire
transcript as stale - up to five minutes of speech, silently. It also made
every native read-only guard this branch adds dead code on this surface.
Send was gated on isVoiceInputPresented rather than
voicePresentation.showsSend. Those look equivalent but diverge in exactly
one phase: error shows a status label AND keeps send. Any dictation failure
- denied permission, no speech detected, the stale-draft error above - left
the composer with no send control until the user found the dismiss button.
Worse on entry, since dispose() no-ops in the error phase, so a stale error
survives navigating away and back.
Stop sat inside ComposerToolbarScroller, which is the else branch of the
dictation ternary, so an agent was unstoppable for the whole recording and
transcription window. Moved to the always-rendered right cluster.
Also: guard both submission entry points on blocksSubmission, since canSend
is derived above voiceInput and cannot include it; move the 4px spacer
outside ComposerDictationToolbar's fixed 44px box, where it was overflowing
and clipping the collapsed dictation strip; restore pointerEvents="none" on
the glass layer with a comment matching the new sibling structure; and
rebrand two T3 Code strings in docs.
The showsSend divergence now has a regression test. It is the one defect
here that is a pure predicate rather than JSX placement, and it is the one
most likely to be reintroduced.1 parent 7202195 commit b21cb8f
5 files changed
Lines changed: 73 additions & 25 deletions
File tree
- apps/mobile/src/features
- threads
- voice-input
- docs
- internals
- user
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
323 | 323 | | |
324 | 324 | | |
325 | 325 | | |
326 | | - | |
327 | | - | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
328 | 329 | | |
329 | 330 | | |
330 | 331 | | |
| |||
1261 | 1262 | | |
1262 | 1263 | | |
1263 | 1264 | | |
| 1265 | + | |
| 1266 | + | |
| 1267 | + | |
1264 | 1268 | | |
1265 | 1269 | | |
1266 | 1270 | | |
| |||
1292 | 1296 | | |
1293 | 1297 | | |
1294 | 1298 | | |
| 1299 | + | |
| 1300 | + | |
| 1301 | + | |
1295 | 1302 | | |
1296 | 1303 | | |
1297 | 1304 | | |
| |||
1612 | 1619 | | |
1613 | 1620 | | |
1614 | 1621 | | |
| 1622 | + | |
| 1623 | + | |
| 1624 | + | |
| 1625 | + | |
1615 | 1626 | | |
1616 | 1627 | | |
1617 | 1628 | | |
| |||
1729 | 1740 | | |
1730 | 1741 | | |
1731 | 1742 | | |
| 1743 | + | |
1732 | 1744 | | |
1733 | 1745 | | |
1734 | 1746 | | |
1735 | 1747 | | |
1736 | 1748 | | |
1737 | 1749 | | |
1738 | | - | |
| 1750 | + | |
1739 | 1751 | | |
1740 | 1752 | | |
1741 | 1753 | | |
| |||
1919 | 1931 | | |
1920 | 1932 | | |
1921 | 1933 | | |
1922 | | - | |
1923 | | - | |
1924 | | - | |
1925 | | - | |
1926 | | - | |
1927 | | - | |
1928 | | - | |
1929 | | - | |
1930 | | - | |
1931 | 1934 | | |
1932 | 1935 | | |
1933 | 1936 | | |
1934 | | - | |
1935 | | - | |
1936 | | - | |
1937 | | - | |
1938 | | - | |
1939 | | - | |
1940 | | - | |
1941 | | - | |
| 1937 | + | |
| 1938 | + | |
| 1939 | + | |
| 1940 | + | |
| 1941 | + | |
| 1942 | + | |
| 1943 | + | |
| 1944 | + | |
| 1945 | + | |
1942 | 1946 | | |
1943 | 1947 | | |
1944 | | - | |
| 1948 | + | |
| 1949 | + | |
| 1950 | + | |
| 1951 | + | |
| 1952 | + | |
| 1953 | + | |
| 1954 | + | |
| 1955 | + | |
| 1956 | + | |
| 1957 | + | |
| 1958 | + | |
| 1959 | + | |
1945 | 1960 | | |
1946 | 1961 | | |
1947 | 1962 | | |
| |||
1950 | 1965 | | |
1951 | 1966 | | |
1952 | 1967 | | |
1953 | | - | |
| 1968 | + | |
1954 | 1969 | | |
1955 | 1970 | | |
1956 | 1971 | | |
| |||
Lines changed: 33 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
| 65 | + | |
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
157 | 157 | | |
158 | 158 | | |
159 | 159 | | |
160 | | - | |
161 | 160 | | |
| 161 | + | |
162 | 162 | | |
163 | 163 | | |
164 | 164 | | |
| |||
0 commit comments