Skip to content

Releases: yrkan/KPedal

KPedal v1.8.2

12 Feb 21:42

Choose a tag to compare

What's New in v1.8.2

Layout polish pass for all 19 DataType data fields — larger fonts, removed redundant labels, and fixed text truncation issues for better readability while cycling.


📊 SMALL Layout Fixes

  • Removed all labels from SMALL data fields to maximize value readability
  • Bumped primary font sizes for arm's-length visibility
  • Fixed balance text truncation: Split combined "49/51" strings into separate elements to prevent Glance maxLines=1 cutting text to "49/..."

📏 SMALL_WIDE Label Cleanup

Removed redundant labels (BAL, TE, HR, SYM, GRADE, etc.) from 8 DataTypes:

  • Balance Trend, Symmetry Index, Climbing Mode, Power Focus
  • Single Balance, HR Efficiency, Left Leg, Right Leg

These labels wasted vertical space in the 58-73sp usable height. Only unit suffixes (w, rpm) are kept where helpful.


🔤 LARGE Layout Header Removal

Removed decorative name headers from 5 DataTypes:

  • Climbing Mode ("▲ CLIMB MODE")
  • Sprint Mode ("● SPRINT MODE")
  • HR Efficiency ("HR + EFFICIENCY")
  • Symmetry Index ("SYMMETRY INDEX")
  • Pedaling Score ("PEDALING SCORE")

Headers wasted a full row on names users already know from setup. Activity indicators (▲, ●) moved inline with their primary values. Primary metrics bumped to 34-40sp, secondary to 24-28sp.


📈 NARROW Layout Font Bumps

Bumped secondary values (3s/10s averages, TE/PS, balance, cadence, grade) by 4-6sp across all DataTypes for better readability at arm's length.


🐛 Bug Fixes

  • Fixed FullOverview SMALL balance showing "49/..." instead of "49/51"
  • Fixed PowerBalance SMALL_WIDE separator being too wide
  • Fixed PS validation upper bound in cloud settings sync (40 → 30)

📦 Build Changes

Change Before After
versionCode 18 19
versionName 1.8.1 1.8.2

Full Changelog: v1.8.1...v1.8.2

KPedal v1.8.1

14 Jan 00:29

Choose a tag to compare

What's New in v1.8.1

Minor update with UI improvements for data fields and preparation for Hammerhead App Store publishing.


🏪 Hammerhead App Store

KPedal is now ready for the Hammerhead App Store! The app can be discovered and installed directly from your Karoo device.

Note for developers: APK filename changed from kpedal-X.X.X.apk to stable kpedal.apk. This allows the manifest URL releases/latest/download/kpedal.apk to always point to the current version.


📊 Full Overview DataType Improvements

SMALL layout fix:

  • Fixed balance text "48:52" being truncated to "..."
  • Split into separate L|R values with smaller fonts
  • Added individual colors for left/right imbalance indication

LARGE layout fix:

  • Fixed values being too close to vertical dividers
  • Added proper spacing (8dp) between values and dividers

📈 Live DataType Improvements

Time In Zone section redesigned:

  • New professional segmented progress bar showing proportional zone widths
  • Color-coded chips with dot indicators for each zone percentage
  • Visual representation of optimal (green), attention (yellow), and problem (red) zones

🧩 New Glance Components

  • ZoneSegmentedBar - horizontal bar with colored segments for each zone
  • ZoneChip - colored indicator dot with percentage value

📦 Build Changes

Change Before After
APK filename kpedal-1.8.0.apk kpedal.apk
versionCode 17 18
versionName 1.8.0 1.8.1

Full Changelog: v1.8.0...v1.8.1

KPedal v1.8.0

09 Jan 22:59

Choose a tag to compare

What's New in v1.8.0

This is a major update featuring a complete rewrite of the data field rendering system, 15 brand new layouts, and important sync reliability fixes.


🎨 Complete DataType Migration to Jetpack Glance

We've completely rewritten all data fields using Jetpack Glance technology. This solves the crash that some users experienced after 10-15 minutes of riding.

Technical details:

  • Old system: A single RemoteViews instance accumulated actions over time (900 updates × 25 actions = 22,500 actions → crash)
  • New system: Fresh RemoteViews created on each update, max ~25 actions per instance → stable indefinitely

📊 15 New Data Field Layouts (22 total!)

Layout Description
Pedaling Score Overall pedaling quality score from 0-100
Fatigue Indicator Shows fatigue level based on how your metrics change during the ride
Cadence + Balance RPM display with L/R balance percentage
Delta vs Average Current metrics compared to your ride average with +/- indicators
Left Leg Focus All metrics for left leg (balance %, TE, PS)
Right Leg Focus All metrics for right leg (balance %, TE, PS)
Climbing Mode Grade percentage, elevation gain, and power - optimized for climbs
Sprint Mode Extra large power display for sprints and intervals
Power Focus Power as the primary metric with pedaling quality secondary
HR + Efficiency Heart rate combined with TE/PS efficiency metrics
Symmetry Index Balance shown as symmetry percentage (100% = perfect 50/50)
Compact Multi Maximum pedaling information in minimum screen space

All layouts are adaptive and look great at any size - from small data field slots to full-width displays.


🔄 Sync Reliability Improvements

  • Auto-retry for failed syncs: Previously failed sync attempts are now automatically retried on each sync
  • Visual feedback: Settings screen now shows the count of failed items in red
  • More robust cleanup: Fixed a rare issue where the settings sync flag could get stuck
  • Cloud settings validation: Added bounds checking to prevent invalid values

🏠 Home Screen Updates

  • Score display: Your ride score is now prominently displayed with a color-coded quality label (Excellent/Great/Good/Improving/Needs Work)
  • Zone distribution bar: Visual breakdown of time spent in optimal/attention/problem zones

📱 Layouts Screen Redesign

  • Layouts are now organized into categories: Core, Analysis, Focus, and With Context
  • Each layout has a preview card showing what it looks like
  • Updated count: "19 layouts" (was "6 layouts")

🌐 Localization

All new strings have been translated to all 17 supported languages:
Arabic, Chinese, Danish, Dutch, English, French, German, Hebrew, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Swedish, Ukrainian


Full Changelog

Added:

  • 15 new data field layouts
  • Score hero display on home screen
  • Zone distribution bar on home screen
  • Layout categories in layouts screen
  • Failed sync count display in settings
  • Cloud settings validation

Changed:

  • Migrated all DataTypes from RemoteViews to Jetpack Glance
  • Sync now includes failed items for automatic retry
  • Layouts screen now shows 22 layouts in 4 categories

Fixed:

  • Crash after 10-15 minutes of riding (RemoteViews action accumulation)
  • isApplyingCloudSettings flag getting stuck on coroutine cancellation
  • Failed syncs never being retried

Removed:

  • Old RemoteViews-based DataType classes
  • 35 XML layout files (replaced by Glance composables)
  • 8 drawable XML files (colors now in code)

Full Changelog: v1.7.6...v1.8.0

KPedal v1.7.6

06 Jan 17:47

Choose a tag to compare

Bug Fixes

Multi-View DataType Fix

  • Fix data fields freezing when multiple views of same DataType exist on screen
  • Remove shared instance variables that caused state conflicts between views
  • Each view now maintains independent state captured in closures
  • Affects all 7 DataType layouts (Quick Glance, Balance, Efficiency, etc.)

Sensor Disconnect Handling

  • Improved sensor disconnect detection and tracking
  • New alert strings for sensor disconnection in all 17 languages
  • Better state management in PedalingEngine and AlertManager

Improvements

Pedal Info Screen

  • Enhanced pedal information display
  • Better status indicators and connection details

Documentation

  • README updated with Crash Recovery section
  • Tech stack versions updated (Hono 4.11.3, Workers Types 4.20260101.0)
  • Removed deprecated Chart.js reference

Technical Details

  • 40 files changed, 1951 insertions, 257 deletions
  • All 8 DataType classes refactored for multi-view support
  • PedalMonitor and PedalingEngine improvements

KPedal v1.7.5

03 Jan 01:45

Choose a tag to compare

Bug Fixes

  • Fix data fields freezing during rides
  • Fix sync staying blocked if ride save fails
  • Properly handle coroutine cancellation

KPedal v1.7.4

03 Jan 00:50

Choose a tag to compare

What's New

Crash Recovery System

  • Ride data is now protected from app crashes and device restarts
  • Checkpoints are saved every minute during rides
  • Auto-restore on app restart (silent, no user interaction needed)
  • Checkpoints automatically expire after 24 hours

Privacy Policy

  • Updated to document crash recovery checkpoint data storage
  • Translations for all 17 languages

Technical Details

  • New Room database migration (v10 → v11)
  • 23 unit tests for checkpoint logic
  • Emergency save on service destroy

KPedal v1.7.3

01 Jan 11:56

Choose a tag to compare

What's New

Sync on App Launch

When you open the KPedal app, it now automatically syncs pending data to the cloud. This ensures rides recorded offline are uploaded as soon as possible.

How it works:

  1. App opens → checks if user is logged in
  2. Checks network availability
  3. Skips if ride is currently recording
  4. Respects 5-minute cooldown between syncs
  5. If pending rides/drills/achievements exist → syncs them

Sync Decision Logic

New SyncOnLaunchDecider class with clear priority chain:

  • NotLoggedIn → skip (no account linked)
  • Offline → skip (no network)
  • Recording → skip (don't interrupt active ride)
  • Cooldown → skip (synced less than 5 min ago)
  • NothingPending → skip (nothing to upload)
  • Sync → proceed with upload

Cooldown Periods

Trigger Cooldown
App launch sync 5 minutes
Network restore sync 60 seconds
Settings upload 2 seconds

Testing

Added 24 unit tests for SyncOnLaunchDecider:

  • Skip conditions (5 tests)
  • Sync decisions (4 tests)
  • Cooldown calculations (6 tests)
  • Priority of conditions (4 tests)
  • Edge cases (5 tests)

Documentation

Updated README with:

  • Sync decision flow diagram
  • Cooldown periods table
  • Pending data detection explanation

Full Changelog: v1.7.2...v1.7.3

KPedal v1.7.2

01 Jan 09:55

Choose a tag to compare

What's New

🔄 Auto-Sync on Network Restore

Rides now automatically sync when your Karoo reconnects to WiFi after an offline ride.

How it works:

  1. Start ride offline — Ride data is collected normally
  2. End ride — Saved locally with syncStatus=PENDING
  3. Arrive home — Karoo connects to WiFi
  4. NetworkCallback triggers — Auto-sync uploads pending rides

Safety mechanisms:

  • 60-second cooldown between network-triggered syncs
  • Sync blocked during active rides
  • Retry on failure with next trigger

📊 Ride Sync Architecture

Karoo Recording → LiveDataCollector (1s samples)
                         ↓
                  RideStateMonitor
                         ↓ (ride ends)
                  Room DB (local)
                  syncStatus=PENDING
                         ↓
                   SyncService
         ┌─────────────┼─────────────┐
    Auto-sync    NetworkCallback   Manual
   (ride end)   (offline→online)   button
         └─────────────┴─────────────┘
                         ↓
              POST /sync/ride → Cloud
                         ↓
              syncStatus=SYNCED

Sync Triggers

Trigger When
Ride completion Immediate sync after ride ends
Network restored Auto-sync pending (60s cooldown)
App start Sync pending + fetch settings
Manual button Sync all pending + fetch settings

Error Handling

Error Behavior
No network Mark PENDING, retry on restore
HTTP 5xx Retry 3x with backoff
HTTP 401 Refresh token, retry
HTTP 403 Device revoked, stop syncing

Other Changes

  • Fix ChallengeTest.kt for i18n migration
  • Update hono 4.11.0 → 4.11.3
  • Update @cloudflare/workers-types

KPedal v1.7.1

01 Jan 09:09

Choose a tag to compare

What's New

Bug Fixes

  • Fixed data fields freezing during rides while data continued recording correctly
  • A single exception in the view update loop no longer kills the entire polling loop
  • Errors are now logged but the loop continues, preventing freeze

Affected DataTypes

  • PowerBalance
  • SingleBalance
  • FullOverview
  • QuickGlance
  • BalanceTrend
  • Efficiency
  • Live

KPedal v1.7.0

31 Dec 02:42

Choose a tag to compare

What's New

RTL Support

  • Hebrew and Arabic now display with correct right-to-left layout

Localization Fixes

  • Fixed dates showing in system locale instead of selected app language
  • Updated all screens to use correct locale for date formatting

DataType Translations

  • Fixed Karoo data field labels not translating to selected language
  • All 7 DataTypes now properly localized