3.4 KiB
Integrações Nativas do Transcript Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Implementar as integrações que faltavam no MVP: gerenciador real do modelo GGUF, captura de áudio WAV, execução CrispASR, hotkey global e inserção/cópia com fallback cross-platform.
Architecture: Manter cada integração atrás de um módulo pequeno. A UI chama comandos Tauri, os comandos consultam ManagedAppState, e integrações dependentes de SO retornam mensagens explícitas quando o ambiente limita a automação.
Tech Stack: Tauri 2, Rust, CPAL, hound, reqwest, Tauri global-shortcut plugin, TypeScript.
Task 1: Model manager real
Files:
-
Modify:
src-tauri/src/models/mod.rs -
Modify:
src-tauri/src/ui_commands.rs -
Modify:
src-tauri/Cargo.toml -
Add URL de download do Hugging Face e resolução de diretório local.
-
Add validação por existência e tamanho mínimo/esperado.
-
Add comando
download_default_modelcom escrita em arquivo temporário e rename atômico. -
Testar status notInstalled/ready sem baixar o arquivo real.
Task 2: Captura real de áudio
Files:
-
Modify:
src-tauri/src/audio/mod.rs -
Modify:
src-tauri/src/app_state.rs -
Modify:
src-tauri/src/ui_commands.rs -
Modify:
src-tauri/Cargo.toml -
Implementar gravador CPAL que escreve WAV via hound.
-
Manter stream vivo em thread de gravação e guardar handles seguros no estado.
-
Stop finaliza WAV e retorna caminho.
-
Manter teste unitário de máquina de estados.
Task 3: Execução CrispASR
Files:
-
Modify:
src-tauri/src/transcription/crispasr.rs -
Modify:
src-tauri/src/ui_commands.rs -
Modify:
src-tauri/tauri.conf.json -
Resolver binário padrão
parakeet-mainpara o modelo v3. -
Executar
parakeet-main -m <model> -f <audio> -t <threads>. -
Capturar stdout/stderr e retornar erro claro.
-
Parsear stdout como texto simples; JSON fica para evolução futura se o sidecar for configurado para isso.
Task 4: Hotkey global
Files:
-
Modify:
src-tauri/Cargo.toml -
Modify:
src-tauri/src/lib.rs -
Adicionar
tauri-plugin-global-shortcut. -
Registrar
Ctrl+Shift+Spaceno setup. -
Ao pressionar, emitir evento
transcript://toggle-recordingpara a UI.
Task 5: Inserção/cópia cross-platform
Files:
-
Modify:
src-tauri/src/injection/mod.rs -
Modify:
src-tauri/src/ui_commands.rs -
Modify:
src-tauri/Cargo.toml -
Adicionar clipboard backend com
arboard. -
Implementar
request_insert_textque sempre coloca o texto no clipboard. -
Retornar mensagens por plataforma/display server.
-
Manter Wayland como parcial/manual.
Task 6: UI, CI e docs
Files:
-
Modify:
src/app.ts -
Modify:
src/app.test.ts -
Modify:
.github/workflows/*.yml -
Modify:
README.md -
Mostrar status de modelo e botão de download.
-
Reagir ao evento de hotkey.
-
Atualizar CI Linux com
libasound2-dev. -
Rodar verificação final completa.
Verification
Run:
npm run typecheck
npm run test -- --run
npm run build
cargo test --manifest-path src-tauri/Cargo.toml
npm run tauri:build
Expected: todos passam; build Windows gera MSI/NSIS no ambiente atual.