v1.1.68
Mudanças:
- llamacpp.py: adicionei status de first-run, persistência de downloads, retomada por .part, validação de tamanho/checksum quando disponível no Hugging Face, recuperação após restart e lock por modelo.
- llamacpp.ts: novo client para /llamacpp/status e estados extras de download.
- DownloadNeveModelsModal.svelte: empty state melhor quando catálogo/internet/backend falha e texto de retomada.
- UnifiedModels.svelte: mensagens melhores para falta de modelos, llama.cpp, GPU/VRAM e mmproj.
- +layout.svelte e vite.config.ts: logs de frontend ficam silenciosos/removidos em produção, mantendo uso normal em dev.
- Adicionei o texto de retomada no progresso. Se o backend informar que o download está continuando de um arquivo parcial, o modal mostra Retomando... em vez de Baixando....
- Alterei o SearchModal.svelte para ter o botão X no canto superior direito, com o mesmo estilo visual dos outros modais.
- SettingsModal.svelte (linha 136): adicionei a aba Sobre abaixo de Dados.
- SearchModal.svelte: deixei o modal responsivo em altura usando 100dvh e rolagem interna.
- MessageInput.svelte: adicionei Tokens/s no dropdown de Uso de Tokens.
response.py (linha 19): normalizei tokens_per_second no backend quando vier de llama.cpp/outros formatos. - Corrigi o caso em que uma falha momentânea de refresh após descarregar um modelo fazia a interface trocar a lista pela tela “Não foi possível acessar modelos locais”. Agora esse empty state só aparece quando realmente não existe nenhuma lista/cache de modelos carregada para mostrar.
- Deixei o unload atualizar o modelo como descarregado imediatamente no frontend e tornei o refresh global pós-ação tolerante a falhas rápidas, sem transformar isso em erro visual de backend.
Agora, ao descarregar, o modelo fica no visual Processando... com spinner durante o unload e durante o refresh da lista local. Ele só limpa esse estado depois que a lista foi atualizada e o modelo já foi marcado como descarregado, evitando aquele retorno momentâneo para o botão de Descarregar. - Também reforcei a identificação do modelo por id ou filename, para não falhar em modelos onde o identificador visual e o identificador interno não batem perfeitamente.