The new page-overlay HTML introduced six CSS classes (.overlay-pick, .overlay-intro, .overlay-file-row, .overlay-picked, .overlay-hint, .overlay-skip) plus the .btn-primary anchor and a native checkbox. None of them had stylesheet rules, so the user saw stacked unstyled buttons, an OS-native checkbox glyph, and broken alignment. Adds the missing block under "Overlay step (Flash + Overlay modes)": - .overlay-pick: vertical layout with consistent gap. - .overlay-intro: dim 13px paragraph; inline <code> gets a card-coloured pill so the filename mipi-panel.dtbo stands out. - .btn-primary: solid blue button variant used by the "Open the Overlay Generator" anchor. - .overlay-file-row: flex row gluing the file picker button and the selected-filename label; the label gets a mono font and wraps. - .overlay-hint: smaller dim hint above the skip checkbox. - .overlay-skip: custom checkbox styled to match the wizard (no native glyph, blue fill + white check when active). Also normalises the two preexisting var(--font-mono) refs (line 656 and 690) to a real monospace stack, since var(--font-mono) was never defined in :root and was silently inheriting the sans body font.
5.7 KiB
ArchR Flasher 2.0: Release Notes
Desktop app (Tauri 2 + Rust + JS) para gravar imagens ArchR em cartões SD, com gestão de overlay de painel integrada ao gerador on-line.
Destaques
- Geração de DTBO sai do flasher e migra inteiramente para o gerador on-line: o app agora pede o
mipi-panel.dtboproduzido emhttps://arch-r.io/overlay-generator/e o copia para/flash/overlays/durante a gravação. - Fluxo redesenhado em 5 passos: Console → Imagem → Overlay → SD → Flash. Modo "Overlay" separado, para aplicar/atualizar overlay em um cartão já gravado.
- Net -5.000 LOC: 4 módulos Rust apagados, lib Python
fdt/bundled removida, dependênciafdt = "0.1"removida doCargo.toml. - Suporte completo em 5 idiomas (en, pt-BR, es, zh, ru): 84 chaves cada, sincronizadas.
- XSS fix em
buildFlashSummaryebuildOverlaySummary(nomes de arquivo Linux/macOS podem conter<script>).
Por categoria
Mudança estratégica: overlay vem do site
A geração de overlay deixou de ser responsabilidade do flasher. O fluxo agora é:
- Console: usuário escolhe Original / Clone / Soysauce.
- Imagem: download da release ou seleção de arquivo local.
- Overlay:
- Botão "Open the Overlay Generator" abre
https://arch-r.io/overlay-generator/em nova janela. - File picker para o
mipi-panel.dtbobaixado. - Checkbox "Use default overlay (skip)" para hardware que funciona com o overlay padrão da imagem.
- Botão "Open the Overlay Generator" abre
- SD Card: seleção do dispositivo (já filtrado para removíveis).
- Flash: grava a imagem e copia o overlay para
/flash/overlays/mipi-panel.dtbo.
Modo "Overlay" (na sidebar): aplica/atualiza overlay em um cartão SD ArchR já gravado, sem reflashar.
Backend (Rust)
flash_image(image_path, device, overlay_path, variant): nova assinatura.overlay_pathvazio = manter o overlay padrão da imagem; preenchido = copiar verbatim para/flash/overlays/mipi-panel.dtbo.apply_custom_overlay(boot_path, dtbo_path): substitui o antigo multi-knobapply_overlay_with_config.OverlayStatusreduzido a{boot_path, has_archr, current_overlay, current_panel_name, variant}.- Módulos apagados:
dtb_to_overlay.rs,dtbo_builder.rs,panel_config.rs,panels.rs. - Script bundled apagado:
src-tauri/scripts/archr-dtbo.py+ libfdt/. - Cargo.toml:
fdt = "0.1"removido. cargo checklimpo.
Frontend (JS + HTML)
index.htmlreescrito com 5 passos (modo Flash) e 3 passos (modo Overlay).main.js:pickOverlayDtbo(): file picker viaTauri.dialog.open()com filtro.dtbo.buildFlashSummaryebuildOverlaySummaryreescritos comcreateElement+textContentem vez deinnerHTML. Corrige caminho de self-XSS via nome de arquivo: filenames em Linux/macOS podem conter caracteres<e>literais.
Internacionalização (5 arquivos)
en.json, pt-BR.json, es.json, zh.json, ru.json: 84 chaves cada, sincronizadas.
Chaves novas para o fluxo de overlay externo:
step_overlayoverlay_introopen_generatorpick_overlayno_overlay_pickedoverlay_will_skipoverlay_skip_hintoverlay_skip_labeloverlay_default_image
Chaves órfãs removidas: step_panel, step_customize, custom_dtb, custom_dtb_*, panel_disclaimer, panel_disclaimer_ok, panel_hint, online_generator, customizations, rotation, invert_lstick, invert_rstick, hp_invert, select_panel, select_panel_title, overlay_overlay_file, overlay_new_panel, overlay_current, etc.
Performance e UX
ddsubstituído por helperpwritenativo: progresso ao vivo via/proc/$PID/io, sem precisar de pipes.- Live MB / total ao lado da barra, label da fase abaixo (descompactando, gravando, verificando).
- Verificação de integridade pós-gravação com mensagens específicas por tipo de falha.
- udisks2 suspenso durante o flash para evitar corrupção por automount intermediário.
- Wipe de assinaturas (
wipefs) antes da gravação, invalidação de cache de imagens descompactadas quando a fonte muda.
Mudanças incompatíveis (atenção)
- Flasher 1.x não consegue mais gravar imagens ArchR 2.0 com overlay customizado (a interface de seleção de painel saiu do app). Use o Flasher 2.0 ou monte a partição BOOT manualmente.
- O fluxo de geração de painel foi removido: usuários que dependiam de selecionar painel dentro do flasher precisam agora ir até o gerador on-line, baixar o
mipi-panel.dtboe selecioná-lo no passo 3.
Compatibilidade
- Imagens: ArchR 2.0+. Imagens 1.x ainda gravam com o flasher 2.0 (o overlay padrão da imagem é mantido).
- Plataformas: Linux (AppImage), Windows, macOS.
- Permissões: pkexec (Linux), osascript (macOS), powershell elevation (Windows).
Como construir
cd /media/disco-local/ArchR/archr-flasher/src-tauri
cargo tauri build
Bundle de release sai em src-tauri/target/release/bundle/. Para AppImage no Linux, o build usa o helper interno do Tauri. O updater está configurado para https://github.com/archr-linux/archr-flasher/releases/latest.
Próximos passos da release
- Bump da versão em
src-tauri/Cargo.toml(atualmente 1.3.3 → 2.0.0). - Build em CI para Linux/Windows/macOS.
- Smoke test: gravar imagem ArchR 2.0 em Original, Clone e Soysauce, com overlay gerado pelo site.
- Tag
2.0.0. - Upload dos bundles para GitHub Releases.
- Anúncio no site (o updater pega a release automaticamente para usuários já em 1.3.x).
Créditos
ArchR Flasher é construído com Tauri 2, Rust, JS/HTML/CSS. Agradecimentos aos colaboradores que testaram as builds RC em hardware diverso e relataram bugs de SD lento, falhas de permissão e regressões de UI.