Repository navigation
Releases
Releases · opencairn-org/cairn-kmp
v0.1.1
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-kmpv0.1.0
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.0release, the first tagged core that ships the whole
handover;make proto-checkverifies 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.v1stubs, 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 thedevices:readand
devices:writescopes 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