NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
Framework Flutter empresarial — services (API, auth, cache offline-first), widgets Material 3, templates de tela CRUD, validadores brasileiros (CPF/CNPJ) e CLI generator.
Last release 24 days ago
13 Sep 2026
Release timing varies
gaps range from 1 weeks to 2 months
Nearly every release is documented
notes for 7 of 7 stable releases
Nothing withdrawn
no release was ever pulled
4 months old
7 releases · first in 2026
One column per month.
`ArchbaseConfig.authorizationScheme` — esquema do header Authorization. 'Bearer' (padrão) mantém Bearer ; string vazia envia o token puro, formato que
ArchbaseConfig.authorizationScheme — esquema do header Authorization.
'Bearer' (padrão) mantém Bearer <token>; string vazia envia o token puro,
formato que o archbase-security usa para tokens de API (UUID), já que reserva
Bearer para JWT.ApiResponse.code e ApiResponse.errorData — código de erro de negócio
(error.code ou code na raiz) e corpo bruto da resposta de erro, propagados
pelo ArchbaseApiClient e por orThrow()/map().ArchbaseTheme.light/dark(cardElevation:) — elevação dos cards; com 0
o card ganha borda fina (borderColor) para se destacar do fundo.ArchbaseThemeController(defaultMode:) — tema usado enquanto o usuário
não escolhe um (antes era sempre o do sistema).JsonParse.date aceita dd/MM/yyyy, dd/MM/yyyy HH:mm e
dd/MM/yyyy HH:mm:ss, além de ISO.ArchbaseStorageService usa o keychain clássico no macOS
(MacOsOptions(useDataProtectionKeyChain: false)): o keychain "data
protection" exige o entitlement keychain-access-groups e falha em builds
assinados localmente.logout() é reentrante-seguro e a falha de autenticação
(401/403 sem refresh) derruba só a sessão local, sem chamar o logout remoto
(que falhava com o mesmo 401/403 e disparava outro logout, indefinidamente).ArchbaseErrorInterceptor rejeitava a cadeia antes
do ArchbaseLoggingInterceptor; a ordem foi invertida e o ✕ <status>
passa a aparecer. extra['__noAuthRetry'] = true desliga o refresh/logout
automático para uma chamada específica.{"error": {...}}: o interceptor de erros lê message, code,
path e errors também quando vêm aninhados em error.ColorScheme do tema: primaryContainer, surfaceContainer*, outline
e outlineVariant derivam da paleta (ArchbaseColors) nos dois temas; antes
o Material 3 aplicava o cinza arroxeado padrão em balões, barras e chips.ArchbaseButton em loading: o spinner usa a cor primária nas variantes
secondary/ghost (antes era branco, invisível em fundo claro).ArchbaseEmptyState rola quando falta altura (teclado aberto) em vez de
estourar o layout.mobile_scanner ^5.2.3 → ^6.0.0 (GoogleMLKit 7 / GoogleDataTransport 10, resolve conflito de pods com firebase_messaging 15.x)
mobile_scanner ^5.2.3 → ^6.0.0 (GoogleMLKit 7 / GoogleDataTransport 10, resolve conflito de pods com firebase_messaging 15.x)archbase_flutter 0.7.0 — coalescência por mutação (SYNC-001/002) + es…
archbase_flutter 0.7.0 — coalescência por mutação (SYNC-001/002) + es…
ArchbaseSyncEngine.save(coalesce: true) — coalescência local por
(type, aggregateId), opt-in (default false). Desacopla a chave de
coalescência (estável) do operationId (id de mutação, único por envio):
(type, aggregateId)
substitui o payload da op ainda não enviada (preserva a posição na fila
e reusa o id, que nunca saiu do device);SKIPPED por reuso de id.operationId estável
TYPE:aggregateId (edições descartadas após o primeiro envio).ArchbaseAtomicWriteStore — capacidade OPCIONAL do store: grava a
entidade otimista e a operação de outbox na mesma transação. O motor a
usa quando o store implementa (o ArchbaseSqfliteStore implementa); senão,
cai no modo sequencial. Evita o estado inconsistente (entidade pendente sem
op, ou registro removido antes do delete entrar na fila) após um crash.type/aggregate_id já existentes).ArchbaseLocalStore seguem válidas sem mudança;
para ganhar a escrita atômica, basta também implementar
ArchbaseAtomicWriteStore.archbase_flutter 0.6.2 — coalescing anti-ghost + resgate de dead-letter
archbase_flutter 0.6.2 — coalescing anti-ghost + resgate de dead-letter
ArchbaseSyncEngine.save(..., supersedeAggregate: true) cancela todas as
operações do mesmo agregado — abertas e terminais (exhausted/rejected/
conflict) — antes de enfileirar a nova. Elimina o "registro que ressuscita":
um DELETE não deixa para trás um UPSERT no dead-letter que seria recriado depois.maxRescuesPerOperation (default 0 =
desligado). Quando > 0, o drain() promove operações exhausted de volta a
pending até este teto por operação — destrava a fila quando o erro terminal
pode ter sido resolvido no servidor (ex.: a dependência voltou a existir), sem
virar retry infinito. Contador em memória (por sessão). Também exposto como
ArchbaseSyncEngine.rescueExhausted() para chamada manual.Reconciliação por transação no motor: ArchbaseSyncEngine.reconcilePendentes() pergunta ao servidor (via ArchbaseSyncSender.queryStatus) quais das oper
ArchbaseSyncEngine.reconcilePendentes()
pergunta ao servidor (via ArchbaseSyncSender.queryStatus) quais das operações
ainda não confirmadas (pending/sending/failed/blocked/exhausted) já foram
processadas e fecha essas — marca a entidade sincronizado e remove a op.
Resolve o caso "o servidor deu commit mas o cliente perdeu o response"
(inclusive ops que esgotaram o retry). Read-only, por transação individual.ArchbaseSyncSender.queryStatus(operationIds) + ArchbaseSyncStatusResponse
(contrato do endpoint POST /api/v1/sync/operations/status).ArchbaseSyncEngine.failedOperations() — expõe as ops em erro terminal
(conflict/exhausted/rejected) com lastError, para o app listar com o motivo.ArchbaseSyncSender agora precisam do método queryStatus
(mudança de contrato).archbase_flutter 0.6.0 — motor offline-first
archbase_flutter 0.6.0 — motor offline-first
lib/src/offline/ (barrel archbase_offline.dart):
ArchbaseSyncEngine — outbox + drain single-flight, backoff exponencial + jitter,
dependsOn que BLOQUEIA, dead-letter (exhausted) com retry manual, gating de binário,
snapshot reativo para badges e hook de reconciliação.ArchbaseSyncable / ArchbaseSyncState — contrato de entidade sincronizável
(id UUID cliente, syncState, clientUpdatedAt, serverVersion, deletedAt).ArchbaseSqfliteStore (implementa ArchbaseLocalStore) — store local em single-table
JSON + outbox, watch<T>() reativo, opener injetável para SQLCipher; registro por
ArchbaseEntityCodec (sem codegen).archbase_sync_protocol.dart): ArchbaseSyncSender (porta),
serialização de operações e parsing de ACKs (PROCESSED/SKIPPED/CONFLICT/BLOCKED/
REJECTED/FAILED) — casa com POST /api/v1/sync/operations do archbase-offline-sync.ArchbaseBinaryUploader (porta) para upload de binários em canal separado, com gating.docs/.🎉 Primeira release pública no pub.dev
📦 https://pub.dev/packages/archbase_flutter
dependencies:
archbase_flutter: ^0.5.3Junto com a lib principal, os 2 adapters de state management também subiram:
📚 Documentação completa: https://edsonmartins.github.io/archbase-flutter-docs/
🚀 Boilerplate (template repo): https://github.com/edsonmartins/archbase-flutter-boilerplate
Ver CHANGELOG.md para o histórico completo desde 0.1.0.
documentation: no pubspec aponta para o URL real do site
(/archbase-flutter-docs/ — o repo de docs é separado da lib)_riverpod, _getx) também atualizados — agora dependem
de archbase_flutter: ^0.5.3 e o documentation URL corretoYour coding agent can read these notes before it upgrades. Set up the MCP server →