Commit graph

3 commits

Author SHA1 Message Date
54a5b38fc6 feat: add countries, devices, browsers, OS dashboard sections
Add 4 new dimension queries (concurrent with existing 4, total 8) to
the dashboard: countries, devices, browsers, and operating systems.
All reuse the existing DimensionSection component with proportional
progress bars.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 16:57:38 +01:00
d9e4b18a52 fix: API compatibility, smart navigation, and dashboard controls
- Fix Plausible API v2 compatibility: move `limit` into `pagination`
  object, add `expectSuccess = true` to Ktor client so API errors are
  surfaced instead of "Illegal input" serialization errors, configure
  `explicitNulls = false` to avoid sending null fields
- Add smart start destination: app checks DataStore on launch and
  navigates directly to dashboard if an instance/site was previously
  selected, skipping the setup screen
- Add settings and sites icons to dashboard top bar for navigating
  back to instance management and site list
- Add site editing (inline rename) to site list screen
- Fix DateRangeSelector crash caused by sealed class data object
  initialization issue in Compose lambda captures

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 16:50:06 +01:00
aa66172d58 feat: implement Phase 1 MVP of Implausibly
Working Android dashboard app for self-hosted Plausible Analytics CE.
Connects to Plausible API v2 (POST /api/v2/query), displays top stats,
visitor chart, top sources, and top pages with date range selection.

Architecture: Kotlin + Jetpack Compose + Material 3 + Hilt + Ktor +
SQLDelight + EncryptedSharedPreferences. Single :app module, four-layer
unidirectional data flow (UI → ViewModel → Repository → Data).

Includes: instance management, site list, caching with TTL per date
range, encrypted API key storage, custom Canvas visitor chart,
pull-to-refresh, and unit tests for API, cache, repository, and
domain model layers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 16:46:08 +01:00