Files
Evandro Fonseca Junior 01b629cb4a feat: add SettingsPage with HuggingFace model search and fix flexbox layout
- 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
2026-03-30 23:35:08 -03:00

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
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
true
truths artifacts key_links
O desktop detecta antes do start se as dependencias nativas do llama estao ausentes ou inacessiveis
Quando possivel, o app baixa/prepara automaticamente os artefatos nativos requeridos antes de iniciar o backend local
Falhas de preflight aparecem no RuntimeSnapshot com mensagem acionavel, sem spawn parcial do backend
path provides
tauri-app/src-tauri/src/runtime/mod.rs gancho de preflight no bootstrap/start antes de spawn_localllm
path provides
tauri-app/src-tauri/src/runtime/process.rs resolucao do binario local e resultado estruturado de preflight/dependencias
path provides
crates/inference-core/src/engine.rs erros de carga do llama mais especificos para consumo do preflight
path provides
crates/llama-sys/src/lib.rs descoberta consistente de caminho de biblioteca nativa e/ou helper reutilizavel
from to via pattern
tauri-app/src-tauri/src/runtime/mod.rs bootstrap_runtime/start_runtime_inner tauri-app/src-tauri/src/runtime/process.rs spawn_localllm preflight deve ocorrer antes de qualquer spawn ou health wait spawn_localllm
from to via pattern
crates/inference-core/src/engine.rs InferenceEngine::load crates/llama-sys/src/lib.rs LlamaLib::load_auto carga dinamica do llama e mensagens de erro para dependencias nativas Failed to load llama.dll
Adicionar um preflight no startup do desktop/backend para verificar se o runtime local tem as dependencias nativas do llama disponiveis e, quando houver origem configurada/suportada, baixar ou preparar esses artefatos antes de iniciar o backend.

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

Task 2: Implementar verificacao/download das dependencias nativas do llama tauri-app/src-tauri/src/runtime/process.rs crates/inference-core/src/engine.rs crates/llama-sys/src/lib.rs Revisar como `LlamaLib::load_auto()` localiza `llama.dll`/`libllama.*` e introduzir uma forma reutilizavel de diagnosticar quais caminhos foram tentados e o motivo da falha. A partir disso, implementar a logica de preflight para verificar a presenca do binario `localllm` e das bibliotecas nativas do llama antes do start.

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>
Ao concluir a execucao futura, criar `.planning/quick/2-preflight-llama-native-deps-startup/2-SUMMARY.md`