Skip to content

Adding a Digital Mode

Marcelo Trindade edited this page Aug 29, 2026 · 1 revision

Adicionar um modo digital

Este é um checklist de manutenção, não uma API de plugins.

1. Domínio

  • crie metadata, input, enums e validações;
  • adicione variante a ModeMetadata;
  • atualize compatibilidade mode ↔ metadata;
  • escolha um único nome interno persistido;
  • mantenha aliases na borda da UI/importação.

2. SQLite

  • crie migration nova;
  • nunca edite migrations publicadas;
  • use tabela metadata 1:1 com qso_id como PK/FK;
  • use ON DELETE CASCADE;
  • replique invariantes relevantes com checks;
  • crie índices apenas com evidência de consulta/plano;
  • atualize validação de objetos e matriz de migrations.

3. Repository e queries

  • insert/update transacionais;
  • leitura agregada;
  • limpeza de metadata incompatível;
  • materialização sem N+1;
  • filtros e SQL explícitos quando necessário.

4. ADIF

Defina:

  • forma histórica aceita;
  • forma canônica exportada;
  • campos privados exatos;
  • reconciliação entre campos conhecidos e extras;
  • round-trip completo.

Campos que se tornam conhecidos para o novo modo não devem sobreviver duplicados em extras.

5. UI

Adicione:

  • campos condicionais;
  • preenchimento na edição;
  • limpeza;
  • dirty-state;
  • resumo de rota/sinal;
  • filtros;
  • normalização de aliases.

Preserve teclado, acessibilidade e baseline de layout.

6. Testes/documentação

Cubra:

  • domínio;
  • rollback;
  • transições entre modos;
  • migrations;
  • filtros;
  • ADIF;
  • handlers;
  • UI.

Atualize documentação de arquitetura, interoperabilidade, changelog e demais documentos afetados.

Abstrações

Traits/plugins só devem aparecer quando eliminarem duplicação real sem esconder SQL, schema, ADIF ou UI específicos.

A arquitetura atual preferiu caminhos explícitos para DMR, FT8, D-STAR e YSF/C4FM.

Veja também

Clone this wiki locally