- Add SettingsPage component with macOS/Linear-style settings UI (sp-* classes) - Fix HuggingFace results list squeeze: sp-card-row--full now has align-items: stretch overriding the inherited flex-start, ensuring children fill 100% horizontal width - Fix sp-hf-file row layout: width 100%, grid columns for name/quant/size/download - Fix sp-hf-name truncation: explicit overflow/ellipsis/white-space in CSS - Add white-space: nowrap to sp-hf-size and sp-hf-quant-badge to protect secondary columns - Add runtime-deps crate, Tailwind/PostCSS config, runtime-defaults, MessageBubble test - Update Cargo workspace, inference-server, tauri runtime types and process handling
7.3 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
| phase | plan | type | wave | depends_on | files_modified | autonomous | requirements | must_haves | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| quick | 2 | execute | 1 |
|
true |
|
Purpose: hoje o desktop so descobre problemas de binario/biblioteca nativa no momento do spawn/carga do backend, o que gera falhas pouco acionaveis e deixa a UX vulneravel a estados de start quebrado. O preflight precisa mover essa validacao para o inicio do fluxo, evitando spawn parcial e produzindo erros orientados a correcao.
Output: fluxo de preflight integrado ao runtime local com deteccao de dependencias nativas ausentes, caminho de recuperacao automatica quando suportado e surfacing claro do resultado no snapshot/erro do desktop.
@.planning/STATE.md @tauri-app/src-tauri/src/runtime/mod.rs @tauri-app/src-tauri/src/runtime/process.rs @tauri-app/src-tauri/src/runtime/state.rs @crates/inference-core/src/engine.rs @crates/llama-sys/src/lib.rs Task 1: Definir contrato de preflight e pontos de integracao no startup local tauri-app/src-tauri/src/runtime/mod.rs tauri-app/src-tauri/src/runtime/process.rs tauri-app/src-tauri/src/runtime/state.rs Mapear o fluxo atual de `bootstrap_runtime()` e `start_runtime_inner()` para inserir um passo de preflight antes de `spawn_localllm()`. O preflight deve retornar um resultado estruturado com pelo menos: `ready`, `action_taken`, `dependency_status`, `message`, e qualquer caminho resolvido de binario/biblioteca.Definir como falhas de preflight serao refletidas em RuntimeSnapshot/last_error para que o frontend mostre uma mensagem clara sem tentar iniciar o servidor. Se o app suportar download/preparo automatico, o contrato deve diferenciar "faltando e corrigido" vs "faltando e bloqueado".
Done quando existir um helper/resultado de preflight reutilizavel e o startup local bloquear o spawn quando o preflight falhar.
cargo check -p tauri-app
- bootstrap_runtime e start_runtime_inner executam preflight antes do spawn
- Resultado de preflight alimenta erro acionavel no snapshot
- Nenhum processo do backend e iniciado quando dependencias nativas faltam
Se o projeto ja tiver uma origem confiavel definida para artefatos nativos (release bundle, pasta gerenciada pela app, ou URL/config local existente), o preflight deve baixar/copiar/preparar esses arquivos automaticamente; caso contrario, deve falhar com instrucao objetiva de como provisionar os artefatos esperados. Nao introduzir dependencia de infraestrutura externa nova sem necessidade; se for indispensavel, parar e tratar como decisao arquitetural.
Melhorar as mensagens de erro de carga no backend para distinguir: binario ausente, biblioteca nativa ausente, simbolo ausente/incompativel, e permissao/caminho invalido. cargo check -p llama-sys -p inference-core -p tauri-app - Preflight detecta binario local e bibliotecas nativas do llama antes do start - Fluxo automatizado prepara/baixa dependencias quando suportado - Mensagens de erro diferenciam ausencia de artefato vs incompatibilidade de carga
Task 3: Cobrir regressao de startup e bootstrap do desktop tauri-app/src-tauri/src/runtime/state.rs tauri-app/src-tauri/src/runtime/mod.rs tauri-app/src-tauri/src/runtime/process.rs Adicionar testes unitarios/integracao leve cobrindo os cenarios principais: dependencias presentes, dependencias ausentes com erro bloqueante, e recuperacao automatica bem-sucedida (quando suportada). Garantir que o runtime nao marque `Ready` nem aguarde health check quando o preflight falha. cargo test -p tauri-app runtime:: -- --nocapture - Testes cobrem falha e sucesso do preflight no startup local - RuntimeSnapshot exposto ao frontend preserva mensagem/estado coerentes - Autostart no bootstrap respeita o mesmo gate de preflight do start manual - `cargo check -p llama-sys -p inference-core -p tauri-app` passa - `cargo test -p tauri-app runtime:: -- --nocapture` cobre gating de preflight - Startup manual e autostart nao executam spawn quando faltam dependencias nativas do llama - Mensagens de erro indicam acao concreta para restaurar o runtime local<success_criteria>
- Um operador entende antes do start se o runtime local esta pronto para carregar o llama
- O app corrige automaticamente a falta de dependencias quando existir origem suportada
- Falhas de dependencias nativas nao aparecem mais como erro generico tardio de spawn/health </success_criteria>