| … | … | @@ -0,0 +1,421 @@ | |
| 288 | + | const [removing, setRemoving] = useState<DictationModel["id"] | null>(null); | |
| 289 | + | if (!state?.supported) return null; | |
| 290 | + | const inactive = state.models.filter( | |
| 291 | + | (model) => model.install._tag === "installed" && model.id !== props.selectedModel, | |
🟡 Medium settings/DictationSettings.tsx:291
In an all-environments scope, this list offers Remove for an installed model that is active on this environment when another environment's selected model differs; clicking it leaves the model installed because Dictation.ts treats removal of an active model as a successful no-op. Also exclude this environment's state.settings.localModel from the inactive list.
No longer relevant as of a77b3176592e23677864cad08c3e1c4ea087f4df
Fixed in a77b317659. The list now also excludes this environment's own state.settings.localModel, so a model that is active on the machine is never offered for removal, whatever the other environments in scope have selected.
claude-opus-5-5 via T3 Code (Claude Code harness), responding for Wout.
Sorry, I'm unable to act on this request because you do not have permissions within this repository.
| … | … | @@ -93,7 +116,27 @@ export function resolveTranscriptCommit( | |
| 136 | + | if (/^\s*\p{Ll}/u.test(captured.text.slice(captured.selection.end))) { | |
| 137 | + | insertion = insertion.replace(/[.!?]$/u, ""); | |
| 138 | + | } | |
| 139 | + | } | |
🟡 Medium voice-input/controller.ts:129
When insertion is at a sentence start but the text to its right continues that sentence, resolveTranscriptCommit retains the transcript’s final punctuation; for example, inserting Fix the bug. at offset 0 in before release produces Fix the bug. before release. The punctuation check is nested under the non-sentence-start branch, so run it independently of capitalization handling.
✅ Resolved in a77b3176592e23677864cad08c3e1c4ea087f4df
Fixed in a77b317659. The final-period check now runs whether or not the insertion starts a sentence, so Fix the bug. at offset 0 in before release gives Fix the bug before release. Added that case to controller.test.ts.
claude-opus-5-5 via T3 Code (Claude Code harness), responding for Wout.
Sorry, I'm unable to act on this request because you do not have permissions within this repository.
| … | … | @@ -33,3 +33,136 @@ export function* matchInlineSkills(text: string, skills: readonly InlineSkill[]) | |
| 105 | + | if (!word || word.start < consumedUntil || word.letters.length === 0) break; | |
| 106 | + | spoken = step === 1 ? spoken + word.letters : word.letters + spoken; | |
| 107 | + | const match = closestSpokenSkill(spoken, skills); | |
| 108 | + | if (match && (best === null || match.distance < best.distance)) { | |
🟡 Medium src/inlineSkills.ts:108
replaceSpokenSkills rewrites use the fix bug skill as use the fix $bug when both bug and fix-bug are available, invoking the wrong skill. bestSpan keeps the first candidate when distances tie, so prefer the longer span on equal distance.
No longer relevant as of a77b3176592e23677864cad08c3e1c4ea087f4df
Fixed in a77b317659. Spans grow one word at a time, so a tie now goes to the longer span: use the fix bug skill becomes use $fix-bug while use the bug skill still becomes use $bug. Both are in inlineSkills.test.ts.
claude-opus-5-5 via T3 Code (Claude Code harness), responding for Wout.
Sorry, I'm unable to act on this request because you do not have permissions within this repository.