Atualização pelo próprio app (Tauri updater) com cartão de aviso

Ao abrir, o app consulta o latest.json da release no GitHub; havendo versão nova, um cartão
oferece Atualizar agora: baixa, confere a assinatura com a chave pública embutida, instala e
reabre (AppImage substituído no lugar; Windows e macOS pelo instalador). Instalação por .deb ou
.rpm só avisa. Configurações ganha a opção de desligar a consulta e o botão Verificar agora.

A release assina os pacotes com a chave guardada no ambiente 'release' do GitHub (só tags v*) e
o latest.json é montado de uma vez por scripts/make-latest-json.py, depois que todos os jobs
de empacotamento terminam.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Lucas RayanandClaude Sonnet 5.5 committed 2026-10-23 10:51:30 -03:00
1 parent 17b0e89e03
commit daa12ba117
20 files changed
+341 -7

No files matched your search

+5
View File
@@ -23,6 +23,10 @@ pub struct Settings {
/// Mostrar mapas das fotos com GPS (baixa blocos do OpenStreetMap pela internet).
#[serde(default)]
pub maps: bool,
/// Procurar versão nova no GitHub ao abrir o app (uma consulta ao `latest.json` da release,
/// sem enviar nada além do que qualquer navegador envia).
#[serde(default = "yes")]
pub updates: bool,
}
fn auto() -> String {
@@ -41,6 +45,7 @@ impl Default for Settings {
ui_lang: None,
notify: true,
maps: false,
updates: true,
}
}
}
+12
View File
@@ -298,6 +298,18 @@ fn configuracoes_de_tema_persistem() {
init();
let _ = std::fs::remove_file(settings::config_dir().join("settings.json"));
assert_eq!(settings::load().theme, "auto");
assert!(
settings::load().updates,
"a verificação de atualização vem ligada"
);
// arquivo de uma versão anterior, sem o campo novo
std::fs::write(
settings::config_dir().join("settings.json"),
r#"{"theme":"dark"}"#,
)
.unwrap();
assert!(settings::load().updates);
let _ = std::fs::remove_file(settings::config_dir().join("settings.json"));
settings::save(&settings::Settings {
theme: "dark".into(),
..Default::default()