[Bug]: Voice settings shows device-local rows (Microphone etc.) under the environment/project scope header
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 68/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 活跃
- 技术栈
- react, typescript
调研方向
从 issue 指出的源头 apps/web/src/components/settings/VoiceSettingsPanel.tsx 和 SettingsScopeSentence.tsx 开始;issue 认为它们导致了设备范围和环境范围混杂的呈现。检查仅限设备的行和 serverScoped 行是如何分组或标记的。完成标准是页面能清楚区分哪些设置适用于此设备,哪些设置遵循所选范围;issue 没有指定要运行的测试。
由索引模型根据 Issue 内容生成。
描述
Before submitting
- I searched existing issues and did not find a duplicate. (#28685 is about the iPad composer missing its mic button, not this.)
- I included enough detail to reproduce or investigate the problem.
Area
apps/web
Steps to reproduce
- Run the desktop app on a Windows client and connect it to a remote Mac environment.
- Open Settings → Voice.
- Set the scope header to "Applying settings for All projects on Mac environment".
- Open the Microphone dropdown.
Expected behavior
The page makes clear which rows belong to the device I'm sitting at and which belong to the selected environment or project. The Microphone row should say that audio is recorded on this device and transcribed by the "Transcribe with" environment.
Actual behavior
The Microphone dropdown lists the Windows client's input devices, such as a virtual audio device, while the header directly above it names the Mac environment. It looks like the Mac's microphones are being shown wrongly, or like a setting for the Mac that was filled in from the wrong machine. I couldn't tell whether the microphone has to be set up on the PC or on the Mac. "Transcribe with" was set to the Windows environment, which made it even harder to tell what applies where.
What actually happens is correct (you record on the device in front of you), but the layout says otherwise. On this page, most rows are device-local client settings and only two follow the scope header:
| Row | Where it's saved | Does the scope header affect it? |
|---|---|---|
| Microphone, Dictation shortcut | Client settings (voiceMicrophone, voiceShortcutMode) |
No |
| Language, Translate to English | Client settings (speechLanguage, speechTranslateToEnglish) |
No |
| Silence filtering, Remove filler words, Dictionary | Client settings | No (Dictionary already says "saved on this device") |
| Clean up transcripts, Cleanup instructions, Correction cue | Client settings | No |
| Transcribe with | Chosen on this client; selects the environment that transcribes | No |
| Hardware, Unload model, model downloads | The "Transcribe with" environment | No: they follow "Transcribe with", not the header |
| Project / Shared dictionary, Cleanup model | Environment settings (serverScoped) |
Yes |
Code pointers (main @ afb4f91):
- Device list comes from
navigator.mediaDevices.enumerateDevices()in the client window:VoiceSettingsPanel.tsx#L1182. The choice is saved withupdateClientSettings({ voiceMicrophone }):#L1280. voiceMicrophoneis inClientSettingsSchema:packages/contracts/src/settings.ts#L552. Recording reads it asgetMicrophoneId: () => clientSettings.voiceMicrophone:useEnvironmentSpeechInput.ts#L299.- Only the two dictionary/cleanup-model rows pass
serverScoped:#L445,#L524. /settings/voiceisn't inSETTINGS_DEVICE_ONLY_PATHS, so the scope sentence is shown above the whole page:SettingsScopeSentence.tsx#L45. That's reasonable, because the page mixes both kinds of row, but nothing marks which rows the header actually affects.
Suggested fixes
Any of these would help, in rough order of value:
- Group the client-local rows (Input, plus the language and cleanup preferences) in a "This device" section placed outside or above the scope header, or label them "This device (<device name>)".
- Add a hint to the Microphone row, for example: "Audio is recorded on this device and sent to <Transcribe with environment> for transcription."
- Label Hardware, Unload model and the models list with the "Transcribe with" environment, since that is the machine they change.
- Optionally, dim or annotate the scope picker when the focused row doesn't depend on it, or show a small scope badge only on the
serverScopedrows.
Impact
Cosmetic issue
Version or commit
Desktop app 0.1.8 (behavior is the same on main @ afb4f91)
Environment
Windows desktop client connected to a remote macOS environment
Workaround
None needed once you know the rule: pick the microphone on the device you're sitting at, and the Mac doesn't need one.
- 主要语言
- TypeScript
- 星标
- 24.8k
- 派生
- 6.4k
- 平均合并
- 10 小时 56 分钟
- 30 天内合并 PR
- 226
环境准备
在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
pingdotgg/t3code 的其他 Issue
-
[Bug]: request_secret file delivery has no trailing newline, and the tool text does not say so可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 2/5 1-3 小时 新手友好度 69/100
维护者通常 1 天内回复
-
[Bug]: Changing the sidebar project filter collapses an expanded Settled shelf back to 10 threads未关闭
难度 2/5 1-3 小时 新手友好度 78/100
pingdotgg/t3code#34291 · 2 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 83/100
维护者通常 1 天内回复
-
via-triage
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
pingdotgg/t3code#34041 · 1 条评论 ·
维护者通常 1 天内回复
相似的 Issue
-
nb stats: the high-error-rate anomaly and the error-causes line give different cause splits for the same errors可能已有人在做 @jeanibarz 今天认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 89/100
jeanibarz/agent-notebook#418 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
维护者通常 1 天内回复
-
enhancement
难度 2/5 1-3 小时 新手友好度 68/100
josephfung/curia#2563 ·
维护者通常 1 天内回复
-
README demo: offer a controlled video variant next to the GIF for reduced motion and mobile data未关闭accessibility
难度 2/5 1-3 小时 新手友好度 76/100
onetechgroupll/eigen-beam#26 ·
维护者通常 1 天内回复
-
maintenance
难度 2/5 1-3 小时 新手友好度 77/100
killi199/time-tracking#532 ·
维护者通常 1 天内回复