All notable changes to AppLogger are documented in this file.
The format follows Keep a Changelog and the project adheres to Semantic Versioning.
- CLI project profiles:
APPLOGGER_CONFIGand--confignow support a shared JSON config file for multiple telemetry apps/projects. - Project selection controls:
APPLOGGER_PROJECTand--projectallow explicit project selection when multiple Supabase backends exist. - Workspace autodetection: the CLI can resolve the active telemetry project from the current working directory when
workspace_rootsare configured. - Machine-readable project context:
healthand telemetry JSON/agent responses now include the resolvedprojectandconfig_sourcewhen available. - Corporate-ready distribution pipeline: CLI release workflow now contains conditional publication jobs for Homebrew, Scoop, and Winget repositories.
- CLI CI gate hardening: multi-OS CLI tests now fail the pipeline on every protected runner instead of tolerating macOS or Windows failures.
- Release metadata embedding: CLI binaries now embed version, commit, and build date from valid linker targets and are verified in a governance gate before release.
- Security scanner reproducibility:
gosecis installed from a pinned immutable release instead of a mutable branch reference. - Supabase error guidance: CLI configuration errors now mention
APPLOGGER_SUPABASE_URLandAPPLOGGER_SUPABASE_KEYaliases explicitly. - Repository markdown governance: markdown quality is now enforced repository-wide through a centralized
.markdownlint.jsoncpolicy aligned with the real documentation style.
- Release governance now blocks
mainand tag deliveries when embedded CLI build metadata remains atdev,none, orunknown. - Package-manager publication remains gated behind explicit repository variables and secrets, reducing accidental distribution drift.
- CLI installers now enforce checksum verification as a hard requirement (no silent fallback when hash tooling is missing).
- Installer network hardening: Linux/macOS and Windows installers now apply retry and timeout policies for release and checksum downloads.
- Installer version input hardening: explicit version pin is now validated to
applogger-cli-v*format before download.
logger-transport-firebasemodule — transport to Firebase Realtime Database- Support for
logger-transport-grpc— direct delivery via gRPC to a custom server - Wear OS support in
PlatformDetector - Web dashboard for real-time log visualization
AppLoggerinterface — unified logging contract for Kotlin (Android / JVM / iOS).LogTransportinterface — swappable transport abstraction (REST, gRPC, stdio).LogBufferinterface — temporary event storage with configurable overflow policy.LogFilterinterface — event filtering with chain-of-responsibility support.LogFormatterinterface —LogEventserialization (JSON implementation included).DeviceInfoProviderinterface — technical device metadata without PII.CrashHandlerinterface —UncaughtExceptioncapture with synchronous pre-death flush.AppLoggerImpl— core event pipeline withChannel<LogEvent>from Kotlin Coroutines.BatchProcessor— batch processor with size-based, time-based, and severity-based flush.RateLimitFilter— per-tag rate limiter with auto-bypass for ERROR and CRITICAL.NoOpLogger— empty implementation for pre-init state and tests.InMemoryLogger— test implementation with built-in assertions.FakeTransport— transport mock with success/failure control for tests.SupabaseTransport— Supabase (PostgreSQL) transport withanon keyauth via Ktor.PlatformDetector— automatic detection of ANDROID_MOBILE, ANDROID_TV, WEAR_OS, JVM.SqliteOfflineBuffer— persistent FIFO buffer in SQLite for offline operation on Android TV.AppLoggerLifecycleObserver— automatic flush when app backgrounds.AppLoggerConfig.Builder— typed configuration builder with adaptive defaults per platform.AppLoggerSDK— public entry singleton (Android), idempotent initialization.AppLoggerIos— public iOS entry singleton for Kotlin Multiplatform (iosMain).logger-testmodule — testing utilities:NoOpTestLogger,InMemoryLogger,FakeTransport.- Privacy by design: no PII captured, ephemeral
session_id, optionaluser_idwith consent. - Crash handler chaining: SDK chains the previous handler, never replaces it.
- Mandatory TLS: builder rejects HTTP endpoints in production mode.
- Complete documentation:
docs/ES/desarrollo/,docs/ES/paquete/. - SQL migrations:
docs/ES/migraciones/001adocs/ES/migraciones/005for PostgreSQL / Supabase. - CI/CD with GitHub Actions: test workflows on PRs and automated release on tags.
- Monorepo structure:
sdk/,docs/ES/,docs/EN/,frontend/,cli/. - JitPack publication: all 3 modules with 6 KMP platform variants.
- GitHub Packages publication: automated via
release.ymlworkflow onv*tags. - Professional README: configuration guide, CI/CD docs, branching model.
local.properties.example: onboarding template for new contributors.
- API keys never hardcoded: injected via
BuildConfigfromlocal.propertiesor CI env vars. - Row Level Security in Supabase:
anonrole only hasINSERTpermission onapp_logs. - Production endpoint requires
https://— validated atConfigbuild time. - CodeQL security scanning in CI workflow.
- Dependency submission to GitHub for vulnerability alerts.