Configurações¶
A tela de configurações é um modal React único e extensível, com uma seção por área — cada
seção tem seu próprio hook e comandos dedicados, mas todas compartilham o mesmo Settings
carregado uma vez no nível do App (evita estado duplicado entre o cabeçalho e o modal).
Nome do dispositivo¶
Obrigatório no momento do login — o botão de conectar ao Drive só habilita depois de preenchido — porque identifica a origem de cada versão sincronizada desde o primeiro sync (usado tanto no snapshot publicado no Drive quanto, por arquivo, em conflitos). Pode ser renomeado depois nas configurações sem refazer a autenticação: é só um rótulo persistido localmente e republicado no próximo sync, então não há motivo para exigir OAuth de novo.
Categorias de sync¶
Cada emulador tem três categorias — saves, savestates e config — habilitáveis
independentemente (padrão: todas ativas). O caso comum é desativar config: resolução de tela
e mapeamento de controle costumam ser específicos da máquina, diferente de saves e savestates,
que quase sempre valem a pena levar para todo dispositivo. O filtro é aplicado na conversão
EmulatorProfile → SyncTarget (ver Sincronização e conflitos) —
o diff e a resolução de conflito nunca sabem que uma categoria foi desativada, só recebem
menos categorias para considerar.
Padrões de exclusão¶
Por emulador, uma lista de padrões glob (ex.: *.tmp, cache/**) cujos arquivos ficam fora do
sync nas duas direções. Cada padrão é validado antes de gravar; um padrão inválido rejeita a
mudança inteira em vez de salvar parcialmente.
Gatilhos automáticos¶
Cada gatilho automático pode ser ligado/desligado individualmente:
| Gatilho | Direção | Padrão |
|---|---|---|
startup |
Sync ao abrir o Slot2Sync | ligado |
emulator-start |
Download antes de o emulador abrir | ligado |
emulator-stop |
Upload ao fechar o emulador | ligado |
O gate fica na origem de cada gatilho (no ponto de inicialização, no consumidor do
watcher), nunca dentro do SyncEngine — assim o motor de sync continua "burro" e o botão
"Sincronizar agora" (manual) e o sync de despedida ao sair (shutdown) nunca são afetados por
essas configurações, mesmo com todos os automáticos desligados. Desligar um gatilho automático
não esconde do usuário que o emulador está rodando: o evento de status é sempre emitido: só a
transferência em si é que fica condicionada ao flag.
Nível de notificações¶
| Nível | Notifica |
|---|---|
all |
Sync concluído (só se houve transferência), erros e emulador detectado |
errors_only |
Apenas erros de sync |
none |
Nenhuma notificação |
Padrão all. Como os gatilhos automáticos disparam com frequência, notificar todo "nada a
sincronizar" no nível all seria ruído — por isso a notificação de conclusão só dispara quando
algo de fato foi transferido, independente do nível escolhido. As notificações continuam
disparando do backend (não do frontend) para funcionar mesmo com a janela oculta ou durante o
sync de despedida no encerramento — ver UI e tray.
Retenção de backup, versões e limites de transferência¶
Três ajustes adicionais, todos com efeito imediato (sem precisar reiniciar o app):
- Retenção de backups locais em dias (0 = manter para sempre); a limpeza roda no próximo startup.
- Máximo de versões arquivadas por arquivo no histórico pré-download (mínimo 1) — ver Referência — Boundary IPC.
- Limites de banda de upload/download em KB/s (0 = ilimitado) e intervalo do scan periódico em minutos (0 = desativado) — o cliente Drive e o timer de scan releem o valor a cada operação/ciclo, sem precisar reiniciar.