Skip to content

Releases

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 30 Oct 16:53
v0.1.1
958d8bd

Added

  • Account area behind the avatar in the bottom bar, replacing the Settings tab: athlete profile
    (latest values of FTP, threshold, max and resting heart rate and weight at a glance; every
    parameter with its dated history, add and delete), gear (active and retired, lifetime numbers,
    create, edit, retire, delete), personal records grouped by sport with the per-record history and
    its progression chart, settings (account, editable format and units, server, device approval),
    an about page and sign-out.

Changed

  • Format and unit preferences are edited in the app and saved on the server
    (AuthService.UpdateUserPreferences).

Verify

cosign verify-blob --bundle cairn-0.1.1-android.apk.sigstore.json \
  --certificate-identity-regexp 'https://github.com/opencairn-org/cairn-kmp/' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com cairn-0.1.1-android.apk
gh attestation verify cairn-0.1.1-android.apk --repo opencairn-org/cairn-kmp

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 20:34
v0.1.0
a0f2614

First release: a view-only client for cairn-core 0.6.0 or later, as a signed Android APK on the
GitHub release page and desktop packages for Linux, Windows and macOS.

Added

  • Protos vendored from the cairn-core v0.6.0 release, the first tagged core that ships the whole
    handover; make proto-check verifies against that tag.
  • Kotlin Multiplatform project skeleton (Android, desktop, iOS) with the quality gates,
    task runner, CI and fleetlint policy shared with the other cairn repositories.
  • Connect-protocol transport over Ktor for the Wire-generated cairn.v1 stubs, with error
    mapping and a one-shot retry after a token refresh.
  • Sign-in: server discovery (GetInstanceInfo + OAuth metadata), dynamic client registration,
    authorization code + PKCE in the system browser, personal-access-token fallback, token
    refresh with rotation, sign-out with revocation; tokens in Keychain / Keystore-encrypted
    preferences / a 0600 file; accounts and servers in SQLDelight.
  • Overview (lifetime totals, this and last week, home feed with Mine/Friends/Federated chips),
    activity list with facets, date presets, flags, sort and cursor paging, and the activity
    detail page (header, badges, gear, primary and secondary stats, static map, photos, best
    efforts, description, sources). Everything renders from the local cache first and refreshes
    from the server (SearchActivities, GetActivity, ListBestEfforts, ListAttachments,
    StatsService.GetOverview, SocialService.ListHomeFeed).
  • Interactive MapLibre route map on the activity detail page (track with casing, start and finish
    markers, cursor marker) and a full-screen map view; stream charts (Vico) per channel with a
    shared cursor that moves the map marker, and a full-screen streams view.
  • Activity detail shows every stream channel in one normalised chart with a legend readout at
    the cursor; "See all" opens the stacked per-channel view sized to the screen. The detail
    page, the full-screen map and the streams view share one view model, so the cursor carries over.
    Tapping a legend entry hides or shows that channel in both views.
  • Activity sub-pages (detail, map, streams) share a compact header with back navigation, sport
    icon, title and page name; on the detail page it slides away while scrolling.
  • Cairn launcher icon (adaptive with monochrome variant and legacy densities) and the desktop
    window and package icon.
  • Sign in from another device (RFC 8628 device authorization): the login screen shows an
    8-digit code and a QR code of the verification link and waits for approval; Settings gains
    "Sign in another device", where a signed-in account enters such a code, sees the requesting
    app and scopes and approves or denies it. The app now asks for the devices:read and
    devices:write scopes and re-registers a client that predates the device grant.
  • make e2e: end-to-end run of the app graph against a live cairn-core; debug builds allow
    cleartext HTTP to localhost for emulator testing.
  • App shell: bottom navigation (Overview, Activities, Settings) on Navigation 3, settings with
    account and server information and sign-out.

Verify

cosign verify-blob --bundle cairn-0.1.0-android.apk.sigstore.json \
  --certificate-identity-regexp 'https://github.com/opencairn-org/cairn-kmp/' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com cairn-0.1.0-android.apk
gh attestation verify cairn-0.1.0-android.apk --repo opencairn-org/cairn-kmp