• v0.4.1 cccba68036

    lgcosta released this 2026-11-06 10:38:19 -03:00 | 0 commits to main since this release

    O que mudou

    • Sync 5xx com retry: push/pull mapeiam ApiResult.Server 5xx para SyncOutcome.Transient; SyncWorker retorna Result.retry() (antes caia em Failed sem retry).
    • runSync robusto: trata Failed -> SyncPhase.Error e NotConfigured explicitamente (antes o cast push as Success quebraria nesses casos).
    • SSE multilinha: SseClient junta blocos data: com \n conforme a spec SSE.
    • ApiClient: remove imports sem uso.

    Verificado

    • testDebugUnitTest verde + assembleDebug + assembleRelease limpos (JDK 21 / AGP 8.13.2 / Kotlin 2.2.20 / SDK 36).
    • Release R8 aprox 1,9 MB.

    APK: app-debug-v0.4.1.apk anexado — adb install -r app-debug-v0.4.1.apk (se a versão anterior estiver instalada com assinatura diferente, adb uninstall com.labexposed.notas antes).

    Downloads
  • v0.4.0 81e945b490

    lgcosta released this 2026-11-06 08:48:52 -03:00 | 3 commits to main since this release

    Fatia B — toolchain moderna, alvo Android 16 real:

    • Gradle 8.13 · AGP 8.13.2 · Kotlin 2.2.20 · KSP 2.2.20-2.0.4
    • compileSdk/targetSdk 36 (Android 16 como alvo, não só compatibilidade)
    • Compose BOM 2026.06 (material3 1.4.0 estável — sem betas, a pedido)
    • Room 2.8.3 · WorkManager 2.10.1 · navigation-compose 2.9.0 · lifecycle 2.9.0 · activity-compose 1.10.1 · DataStore 1.1.7 · kotlinx-serialization 1.8.1 · coroutines 1.10.2
    • Testes unitários verdes; APKs debug + release (R8) OK

    Verificado no emulador Android 16 (API 36, Pixel 6): upgrade in-place da v0.3.1 sem bloqueio, criar nota → autosave → Room → lista, editor WYSIWYG/Preview, sem crashes.

    APK: app-debug-v0.4.0.apk anexado — adb install -r app-debug-v0.4.0.apk.

    Downloads
  • v0.3.1 641c374a03

    lgcosta released this 2026-11-05 22:10:32 -03:00 | 4 commits to main since this release

    Corrige o bloqueio de instalação no Android 16 / One UI 8.

    O APK v0.3.0 ficou sem targetSdkVersion no manifest (regressão do bump de versão da v0.2.2: o AGP usou minSdk 26 como alvo), e o instalador do Android 16 recusa apps "construídos para versão antiga do Android".

    • targetSdk = 35 restaurado; aapt2 dump badging confirma targetSdkVersion:'35'.
    • Verificado em emulador Android 16 (API 36, Pixel 6): adb install sem bloqueio, boot limpo, fluxo config → lista (status compacto, busca, empty state) funcionando.

    Mesmo conteúdo visual da v0.3.0 (edge-to-edge, chips de sync M3, busca, pull-to-refresh, ícones).

    APK: app-debug-v0.3.1.apk anexado — adb install -r app-debug-v0.3.1.apk (se a versão anterior estiver instalada com assinatura diferente, adb uninstall com.labexposed.notas antes).

    Downloads
  • v0.3.0 a8c8a5a998

    lgcosta released this 2026-11-05 21:48:41 -03:00 | 5 commits to main since this release

    ⚠️ NÃO INSTALAR — APK sem targetSdkVersion (regressão); o Android 16 / One UI 8 bloqueia a instalação. Use a v0.3.1.

    Downloads
  • v0.2.2 8561ae2f8b

    lgcosta released this 2026-11-05 21:04:01 -03:00 | 6 commits to main since this release

    Correções de robustez de sincronização:

    • SyncEngine: CancellationException volta a propagar (não vira erro falso)
    • SyncWorker: erro de servidor (4xx/5xx) agora é falha definitiva, só falta de rede retenta
    • ApiClient: retry com delay() não-bloqueante
    • SseClient: cancelar fecha o socket; parse tolera data: sem espaço
    • Room v3: migração real 2→3 preservando a fila de sync

    APK: app-debug.apk anexado — instale com adb install -r app-debug.apk.

    Downloads
  • v0.2.1 9508dbf24a

    lgcosta released this 2026-11-05 07:47:40 -03:00 | 9 commits to main since this release

    • Botão Excluir no card da lista e na barra do editor, com diálogo de confirmação
    • Exclusões entram na fila (delete) e sobem na próxima sincronização; nota local-only some direto; 404 no servidor limpa a fila
    • Outras sessões (web/app) recebem o evento SSE deleted e a nota some para elas também

    APK assinado (~1,8 MB) para celular real: minSdk 26. Atualiza por cima da v0.2.0 sem perder dados.

    Downloads
  • v0.2.0 61d4abebbd

    lgcosta released this 2026-11-04 20:53:44 -03:00 | 11 commits to main since this release

    Correções (bug reportado em celular real)

    • Mudanças só de título/formato/categorias agora entram na fila de sync
    • Auto-reconciliação: qualquer nota suja sem entrada na fila é enfileirada a cada rodada
    • Sync também ao voltar para o app (ON_RESUME); botão Sincronizar com feedback visual
    • WYSIWYG: chamadas de WebView sempre na main thread (corrigido crash que fechava o app)

    Novidades

    • SSE em tempo real: nota limpa recarrega sozinha quando a Web edita; banner de conflito quando você estava editando; selo 👥 de presença
    • Editor com 3 modos: Editar (toolbar Markdown) / WYSIWYG (contenteditable com conversão html→md) / Preview
    • Lista rica: chips de filtro por categoria (caminho da árvore) e tags, status de sync por nota, Material 3 dynamic color

    APK assinado (~1,8 MB, R8) para celular real: minSdk 26. Instale notas-v0.2.0.apk, configure URL + token na primeira tela.

    Downloads
  • v0.1.0 9e0bcc3e9b

    lgcosta released this 2026-11-04 19:28:19 -03:00 | 12 commits to main since this release

    Cliente Android offline-first (Kotlin + Jetpack Compose) para a plataforma notas-online.

    • Room + outbox FIFO com índice único; sync bidirecional via WorkManager (periódico 1h + gatilhos de rede/edição/manual)
    • Conflitos: base_hash/409 → servidor vence a nota + cópia local "(conflito)" (idempotente)
    • Autosave por ociosidade (10 s), silencioso; editor com categorias multi-seleção
    • Validado no emulador Android 15 x86_64 contra o servidor real (criar offline, fila, pull, conflito)

    APK assinado (R8, ~1,6 MB) para celular real: minSdk 26. Instale notas-v0.1.0.apk, configure URL + token na primeira tela.

    Downloads