Files
transcript/docs/superpowers/plans/2026-06-10-transcription-app-native-integrations.md

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_model com 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-main para 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+Space no setup.

  • Ao pressionar, emitir evento transcript://toggle-recording para 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_text que 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.