Repository navigation
Conversation
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — Adds optional model folders so speech can reuse verified catalog downloads without modifying external files. Existing behavior remains unchanged until folders are configured, and model deletion remains limited to app-owned storage. You can add or adjust custom eligibility rules. Learn more. |
b6239a3 to
f70f0bb
Compare
86cb4a6 to
274caed
Compare
df060bc to
60f68d3
Compare
521cde2 to
bb84779
Compare
60f68d3 to
4577fd2
Compare
bb84779 to
20726eb
Compare
8673be9 to
94e50e3
Compare
Maria wanted the space above and below the list changed, not between its items.
Uses the Orbital Sunrise vector itself instead of its grayscale render, dimmed to the level that render used.
Off by default. Web and desktop play a short click when recording starts, on every dictation path that shares the speech hook. Retrying saved audio stays silent because nothing new is being recorded. Settings search for Model folders also falls back to the destination row when that row is not on screen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace the camera shutter with Hex's seven dictation start sounds and add a picker beside the Sound cue switch. Choosing a sound previews it. The selected cue loads while recording prepares so it plays on time. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The external-folder test overwrote a verified file with same-size bytes and expected a re-hash. Verification is keyed on size, mtime, device and inode, so two writes in one filesystem clock tick looked unchanged and CI failed intermittently. Set a distinct mtime for the replacement, and assert that removing the owned model leaves the external bytes intact. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Note 🤖 GPT-6.1 Sol responding on behalf of screen-gd Updated to the latest redesign and resolved the conflicts. Model folders and the optional recording sounds are preserved. Hex's MIT attribution is included in the shipped notices. Checks passed; the description lists the remaining limits and approval needed for the sound cue. This replaces the earlier progress updates. Current details and screenshots are in the PR description. |
binjamshid
left a comment
There was a problem hiding this comment.
Restoring Model folders looks well contained: external files are SHA-256 verified before use, only the app-owned copy is ever removed, and the new endpoint sits behind AuthSettingsWriteScope. Most of my notes are about scope rather than logic.
-
medium, PR scope. The PR currently shows 100 commits / 295 files (+10.5k) against
maria/redesign/6-workspace-panes, because the head merged a newer redesign than the base has. Only five commits (9934c4d,56f7529,8e78835,20726eb,751dfbf) are this change, so the voice work is hard to find among unrelated pane, sidebar, orchestration and mobile-theme diffs. A rebase onto the current base (or retargeting) would bring this down to the ~25 voice files and avoid reintroducing redesign commits if the base moves again. -
low,
apps/server/src/speech/SpeechModelStore.ts:83.verifiedExternallives only in memory, so a shared model is fully re-hashed on the first transcription after every server restart. For large GGUF files this adds noticeable first-use latency each launch. That may be the right tradeoff for "never write into external folders", but a one-line comment, or a verification marker kept under T3's own state dir and keyed by path + identity, would make it explicit. -
low,
apps/server/src/speech/SpeechService.ts:976. Dedupe is onlytrim(), so/modelsand/models/(orC:\modelsvsC:/models) are stored as two folders and both are scanned.path.normalizebefore theSetwould fix it. Separately,updateModelDirectoriesalways callsdisposeModel(), even when the list is unchanged or only an unrelated folder was removed. That forces a cold reload on the next dictation. Skipping the dispose when the normalized list equals the current setting would avoid it. -
low,
apps/web/src/speech/useEnvironmentSpeechInput.ts:401-402. The cue plays when the controller emitsrecording. Incontroller.ts, that happens right afterrecorder.record(), so on laptop speakers the cue can end up at the start of the captured audio and the live stream. Hex starts its sound before capture begins. Playing it just beforerecord(), or briefly delaying capture, would keep it out of the transcript input. This is worth checking once audibly, since the description notes playback wasn't verified. -
low,
apps/web/src/components/settings/VoiceSettingsPanel.tsx. The client-sidevalidregex accepts\\serverwithout a share segment, but the server rejects that on win32 withinvalid_command. The user then sees a generic "Could not update model folders". Either align the regex with the server's UNC check or surface the invalid-directory reason.
Process: the description already notes this bundles the folder restore with the new sound cue, and the cue has no linked approval. Splitting the cue into its own PR would let the restore land independently.
84ea585 to
2c7c7a4
Compare
|
Note 🤖 Claude Opus 5.5 responding on behalf of screen-gd Closing this. #34096, now in The sound cue moved to #34265, rebuilt on the current base as one commit (18 files instead of 1,094). It also fixes point 4: the cue now plays and finishes before |
Problem
The redesign removed Model folders, so users could no longer reuse voice models downloaded by another app. Dictation also had no sound to indicate when recording started.
Change
Restore Model folders in Voice settings. T3 verifies models before loading them and never changes files in those folders.
Add an optional recording sound, off by default, with seven choices. It plays when recording starts; retrying saved audio stays silent. Available on web and desktop.
The sounds are unchanged from Hex. Its MIT license permits reuse with attribution. The full copyright and license notice are included in T3's web and desktop notices.
Scope and approval
Model folders restores the behavior from merged #30224 on the redesign branch. The recording sound is a separate addition; no maintainer approval to include it here is linked yet.
Verification
Screenshots show the folder fix; they predate the sound picker.
Made with GPT-6.1 Sol in Codex and Claude Opus 5.5 in Claude Code, through T3 Code.