Changelog for Octi
v1.2.2-rc0 - August 25, 2026
What’s Changed
Enhancements
- Keep Google from refunding purchases when the app is closed too soon by @d4rken in #379
- Show always-on devices like Home Assistant as servers by @d4rken in #381
Bug fixes
- Fix operating system names shown for non-Android devices by @d4rken in #383
Other changes
- Upgrade json from 2.21.1 to 2.21.2 in fastlane bundle by @d4rken in #378
- Publish a sync protocol reference for third-party clients by @d4rken in #382
- Explain when the Octi icon may be used by other projects by @d4rken in #384
- Update app translations from Crowdin by @d4rken in #386
v1.2.1-rc0 - August 16, 2026
What’s Changed
Bug fixes
- Fix device linking on Android TV and unclear link code errors by @d4rken in #375
Other changes
- Retire the hardcoded settings upgrade row title by @d4rken in #368
- Shrink issue screenshots uploaded as HTML img tags by @d4rken in #369
- Stop naming the Play tier on screens where it does not apply by @d4rken in #372
- Update app translations from Crowdin by @d4rken in #373
- Show when a Google Play payment is still being processed by @d4rken in #374
- Update app translations from Crowdin by @d4rken in #376
v1.2.0-rc1 - August 07, 2026
What’s Changed
Enhancements
- Guide second devices to link instead of creating a new account by @d4rken in #327
- Guide new users from onboarding to their second device by @d4rken in #330
- Polish first-run guidance placement and sync setup picker by @d4rken in #337
- General: See your Pro status and switch to a one-time purchase by @d4rken in #338
- Make Google Play billing more reliable and recover from Play problems by @d4rken in #349
- Rework the FOSS upgrade screen and improve billing reliability by @d4rken in #350
- Brand the FOSS supporter screens and harden the sponsor flow by @d4rken in #351
- Improve the upgrade screens and FOSS supporter error handling by @d4rken in #353
- Ask happy users for a Play Store review by @d4rken in #359
Bug fixes
- Fix devices stuck ‘Synchronizing’ and blocked device linking by @d4rken in #340
- Show devices as syncing instead of broken while data loads by @d4rken in #343
- Fix “Device no longer linked” warning doing nothing when tapped by @d4rken in #344
- Fix background sync stopping until the app is restarted by @d4rken in #345
- Fix device cards showing hours-old timestamps despite active sync by @d4rken in #348
- Protect the supporter date and improve the debug log warning by @d4rken in #352
- Keep the debug log usable when a recording fails to start by @d4rken in #354
- Fix rare crashes and back-navigation issues in the error dialog by @d4rken in #355
- Fix a misleading Google Play error message by @d4rken in #356
- Keep the review prompt working when Google Play hangs by @d4rken in #361
Other changes
- General: Fix ‘Restore purchase’ failing when you already own Pro by @d4rken in #328
- General: Keep one-time Pro buyers Pro through longer Play outages by @d4rken in #329
- General: Show returning Pro buyers a restore prompt, not a paywall by @d4rken in #331
- General: Show progress while restoring a purchase by @d4rken in #332
- General: Show an error when Google Play can’t start a purchase by @d4rken in #333
- General: Fix grace re-stamping and handle async already-owned purchases by @d4rken in #334
- Rewrite Play Store listing to lead with concrete use cases by @d4rken in #335
- General: Faster billing recovery and accurate trial copy by @d4rken in #336
- Enable google-play Claude plugin by @d4rken in #339
- Rework the gplay upgrade screen into a card dashboard by @d4rken in #341
- Upgrade androidx.test runner/rules from 1.6.2 to 1.7.0 by @d4rken in #342
- Upgrade fastlane to 2.237.0 to fix excon and json CVEs by @d4rken in #346
- Update translations from Crowdin by @d4rken in #347
- Add shared screenshot thumbnail workflow by @d4rken in #357
- Update translations from Crowdin by @d4rken in #360
- Update translations from Crowdin by @d4rken in #362
- General: Show clearer errors when Google Play offers can’t load by @d4rken in #363
- Fix inconsistent paid tier name for Hebrew users by @d4rken in #364
- Let translators own the upgraded app title’s word order by @d4rken in #365
- Declare the upgraded title template once, in app-common by @d4rken in #366
- Fix release builds failing on a missing Play Core annotation by @d4rken in #367
v1.1.0-rc0 - July 01, 2026
What’s Changed
Enhancements
- Add per-device capability tags to sync metadata by @d4rken in #309
Bug fixes
- Don’t apply Android version checks to web and desktop peers by @d4rken in #308
- Fix reappearing battery alert for stale devices by @d4rken in #322
- Fix crash when sharing a file that was moved or deleted by @d4rken in #323
- Clean up leftover blobs when a file share is interrupted by @d4rken in #324
- Show a clearer message when a shared file goes unreadable mid-upload by @d4rken in #325
- Avoid orphaned blobs when cancelling a multi-device share by @d4rken in #326
Other changes
- Fix widget visibility, refresh, and upgrade routing by @d4rken in #299
- Extract widgetCornerRadius helper to app-common by @d4rken in #300
- Remove unused rowSpacingForHeight from ClipboardWidgetSizing by @d4rken in #301
- Refresh widgets on Pro entitlement changes app-wide by @d4rken in #302
- Add overflow scenario tests to ClipboardWidgetContentGlanceTest by @d4rken in #303
- Bump clipboard/network padding to 8dp to fix corner mismatch by @d4rken in #304
- Add Glance render tests for battery and network widgets by @d4rken in #305
- Extend MetaInfo for desktop and browser clients by @d4rken in #306
- Add cross-language Tink test vectors exporter for octi-web by @d4rken in #307
- Document device-capabilities contract for agents by @d4rken in #310
- Mention desktop and web companion clients in README by @d4rken in #311
- Add Discord badge to README by @d4rken in #312
- Add ecosystem entry to settings menu by @d4rken in #313
- Move cross-repo interop fixtures into sync-core by @d4rken in #314
- Run web + desktop tests against wire-format PRs by @d4rken in #315
- Consume octi-web’s published wire-format fixtures by @d4rken in #318
- Consume octi-desktop’s published wire-format fixtures by @d4rken in #319
- Upgrade jwt from 2.10.2 to 3.2.0 in fastlane bundle by @d4rken in #320
- Upgrade faraday from 1.10.5 to 1.10.6 in fastlane bundle by @d4rken in #321
v1.0.4-rc0 - May 16, 2026
What’s Changed
Enhancements
- Show widget previews in the picker on Android 9-11 by @d4rken in #296
- Add ‘Remove device’ to the dashboard card menu by @d4rken in #298
Bug fixes
- Fix battery widget hiding devices on small sizes by @d4rken in #294
- Fix Network and Clipboard widget tiles silently failing for non-Pro accounts by @d4rken in #295
Other changes
- Switch to smoke-only Play Store screenshot commits by @d4rken in #290
- Update README screenshots to current Fastlane en-US set by @d4rken in #291
- Update translations by @d4rken in #297
v1.0.3-rc0 - May 06, 2026
What’s Changed
Other changes
- Upgrade Conscrypt from 2.5.2 to 2.5.3 for 16 KB pages by @d4rken in #289
v1.0.2-rc0 - May 05, 2026
What’s Changed
Enhancements
- Show device name and type in module bottom sheets by @d4rken in #283
Bug fixes
- Fix NavigationController crash from onNewIntent before Compose attaches by @d4rken in #284
- Fix Octi Server sync encryption error on older Android by @d4rken in #286
- Fix dashboard crash when a device appears in multiple sync services by @d4rken in #288
Other changes
- Extract CryptoBootstrap from PayloadEncryption by @d4rken in #287
v1.0.1-rc0 - May 03, 2026
What’s Changed
Enhancements
- Enable live foreground sync for free users by @d4rken in #268
- Reduce Google Drive sync API call volume by @d4rken in #269
- Show a consistent ‘Pro’ badge across all gated settings by @d4rken in #270
- Extract and polish DeviceRow composable by @d4rken in #271
- Polish sync connector action sheet by @d4rken in #274
- Disambiguate duplicate device labels by @d4rken in #275
- Make dashboard sync card chevron tappable by @d4rken in #276
- Add sort modes to synced devices list by @d4rken in #277
- Show connector identity and refresh on Synced devices screen by @d4rken in #278
- Show full device details in sync action sheet by @d4rken in #279
- Add device metadata tile to dashboard by @d4rken in #280
Bug fixes
- Fix widgets missing from cover-screen pickers by @d4rken in #266
- Fix GDrive sync not showing device data after restart by @d4rken in #272
Other changes
- Add localized Compose Play Store screenshots by @d4rken in #267
- Cache sync device metadata by @d4rken in #273
- Migrate Hilt plugin to plugins block syntax by @d4rken in #281
- Update translations from Crowdin by @d4rken in #282
v1.0.0-beta1 - May 01, 2026
What’s Changed
Enhancements
- Rewrite UI from Fragments and XML to Jetpack Compose by @d4rken in #174
- Add theme color and contrast style settings by @d4rken in #176
- Add Compose previews to all major screens by @d4rken in #177
- Show upgrade prompt when tapping locked theme settings by @d4rken in #178
- Improve DataStore with deduplication, error resilience, and logging by @d4rken in #179
- Fix build warnings for AGP 9.0 and Kotlin K2 compiler by @d4rken in #180
- Improve debug recorder and contact support reliability by @d4rken in #187
- Require time on sponsors page before unlocking FOSS pro by @d4rken in #189
- Add configurable sync intervals by @d4rken in #192
- Use new round mascot image on onboarding and upgrade screens by @d4rken in #193
- Add sync status bar to dashboard by @d4rken in #194
- Migrate battery widget from RemoteViews to Glance by @d4rken in #196
- Improve upgrade card on dashboard with details and device limit hint by @d4rken in #195
- Replace dashboard module rows with visual tile grid and drag editor by @d4rken in #200
- Add instant sync with real-time notifications by @d4rken in #205
- Rename K-Server to Octi Server and add type-safe connector identification by @d4rken in #206
- Reduce Google Drive API calls with change detection and targeted sync by @d4rken in #208
- Add warning icon and red date for stale devices on dashboard by @d4rken in #210
- Add device reorder and card edit menu to dashboard by @d4rken in #211
- Skip directory traversal for event-driven Google Drive syncs by @d4rken in #212
- Show battery alert thresholds on dashboard progress bar by @d4rken in #213
- Improve clock skew detection accuracy and show offset direction by @d4rken in #217
- Show upgrade icon instead of toggle for pro-only pause sync by @d4rken in #218
- Improve apps tile to show full app name on its own line by @d4rken in #220
- Distinguish multiple sync accounts on dashboard by @d4rken in #222
- Show waiting indicator on device link host screen by @d4rken in #223
- Upgrade encryption to AES256-GCM-SIV with device compatibility detection by @d4rken in #226
- Show server device metadata on sync devices screen by @d4rken in #227
- Replace raw encryption type strings with typed enum by @d4rken in #228
- Add connector issue system for warnings and errors by @d4rken in #231
- Support adding multiple Google Drive accounts by @d4rken in #239
- Show warning details on sync connector and device screens by @d4rken in #240
- Improve sync performance and reduce redundant network operations by @d4rken in #243
- Modernize codebase and prepare for future multiplatform deployments by @d4rken in #244
- Add clipboard and network widgets by @d4rken in #242
- Choose which devices each widget shows by @d4rken in #248
- Polish file-sharing: storage UX, streaming uploads, server v2 sync by @d4rken in #252
- Surface auth-issue pause for unregistered OctiServer device by @d4rken in #255
- OctiServer: simpler create-account flow and clearer device warning by @d4rken in #256
- Fix cross-device file deletion and add delete confirmation by @d4rken in #259
- Show BETA chip in toolbar and fix Support issues link by @d4rken in #264
Bug fixes
- Force widget color configuration screen on placement by @d4rken in #173
- Point in-app changelog link to octi.darken.eu by @d4rken in #175
- Navigate to sync list after successful account creation by @d4rken in #190
- Fix stale share code when linking additional devices via KServer by @d4rken in #197
- Fix Live sync mode not showing on dashboard at startup by @d4rken in #221
- Fix transient sync error after linking a new device by @d4rken in #224
- Fix sync being cancelled when navigating between screens by @d4rken in #225
- Fix paused sync connector still showing activity by @d4rken in #229
- Fix foreground sync and WebSocket never activating by @d4rken in #230
- Fix duplicate meta module syncs every 10 seconds by @d4rken in #238
- Stop all activity on paused sync connectors by @d4rken in #246
- Read release type from version.properties by @d4rken in #247
- Fix crashes from uncaught errors in ViewModel background flows by @d4rken in #249
- Persist widget config in DataStore to survive reboot by @d4rken in #250
- Hide legacy encryption warning when modern connector reaches device by @d4rken in #260
Other changes
- Replace Moshi with kotlinx.serialization by @d4rken in #188
- Replace waitForState with asStateFlow + collectAsState by @d4rken in #183
- Update GitHub Actions to Node.js 24-compatible versions by @d4rken in #191
- Modularize dashboard UI and convert action dialogs to bottom sheets by @d4rken in #198
- Show per-module sync progress in dashboard status bar by @d4rken in #199
- Add Fastlane metadata length validation to CI by @d4rken in #201
- Upload R8 mapping files to Google Play for crash reporting by @d4rken in #202
- Remove mapping file references from Fastlane by @d4rken in #203
- Restrict GITHUB_TOKEN permissions to minimum required by @d4rken in #204
- Enable Quick Sync by default for pro users by @d4rken in #209
- Improve onboarding and add adaptive multi-column dashboard by @d4rken in #214
- Fix module data not syncing to server on idle or newly configured devices by @d4rken in #215
- Upgrade Tink API and align test dependency versions by @d4rken in #216
- Centralize experimental API opt-ins in Gradle compiler args by @d4rken in #219
- Replace battery optimization chip with reliability bottom sheet by @d4rken in #232
- Refactor sync to single-path writes with per-connector hash tracking by @d4rken in #235
- Fix last synced timestamp updating on failed or skipped sync by @d4rken in #233
- Modernize Google Drive authorization by @d4rken in #236
- Replace @file:UseSerializers with per-property annotations by @d4rken in #234
- Migrate Long milliseconds to kotlin.time.Duration by @d4rken in #245
- File sharing module by @d4rken in #185
- Migrate Pages to Actions deploy and fix changelog race by @d4rken in #251
- Upgrade addressable to 2.9.0 and json to 2.19.4 by @d4rken in #253
- Add cross-version regression test against v0.8.1 server by @d4rken in #254
- Fix dashboard issue device navigation by @d4rken in #257
- Limit free-tier file sharing to 1 file per device by @d4rken in #258
- Migrate release process to GitHub Actions by @d4rken in #261
- CI: Skip release bump-only workflow runs by @d4rken in #262
- Update translations from Crowdin by @d4rken in #263
v0.16.0-rc0 - February 18, 2026
What’s Changed
Enhancements
- Add widget color customization with presets and custom picker by @d4rken in #168
Bug fixes
- Use plurals for minutes quantity display by @d4rken in #166
Other changes
- Upgrade AGP from 9.0.0 to 9.0.1 by @d4rken in #165
- Extract missing translations from acknowledgements screen by @d4rken in #169
- Update translations by @d4rken in #170
v0.15.1-rc0 - February 13, 2026
What’s Changed
Bug fixes
- Auto-pause KServer connector on device auth failure by @d4rken in #164
v0.15.0-rc0 - February 10, 2026
What’s Changed
Enhancements
- Upgrade AGP from 8.13.2 to 9.0.0 by @d4rken in #150
- Add sort options to the apps list by @d4rken in #154
- Replace sync interval SeekBar with slider and text input dialog by @d4rken in #156
- Redesign battery widget with rounded bars and Material You colors by @d4rken in #158
- Add connectivity module with public IP, connection type, and network details by @d4rken in #159
- Add detail bottom sheets for all dashboard module rows by @d4rken in #161
- Add build type and git hash to user agent for dev builds by @d4rken in #162
Bug fixes
- Fix status bar color split in landscape mode on API 35+ by @d4rken in #147
- Fix crash when deleting device via Google Drive by @d4rken in #149
- Upgrade WorkManager from 2.7.1 to 2.11.0 by @d4rken in #151
- Fix SyncWorkerControl combine flow terminating on WorkManager exception by @d4rken in #153
- Fix system bar overlap and missing scroll on sync setup screens by @d4rken in #155
- Add Droidify and F-Droid Basic as recognized installers by @d4rken in #157
- Fix KT-73255 annotation default target warning by @d4rken in #160
Other changes
- Restructure Claude Code config into modular rule files by @d4rken in #148
- Narrow release APK glob to avoid duplicate uploads by @d4rken in #152
- Update translations by @d4rken in #163
v0.14.0-rc0 - February 03, 2026
What’s Changed
Enhancements
- Add BATTERY_LOW and BATTERY_OKAY events for immediate sync by @d4rken in #141
Bug fixes
- Fix display cutout and edge-to-edge insets in landscape mode by @d4rken in #137
Other changes
- Upgrade AGP from 8.12.2 to 8.13.2 by @d4rken in #138
- Update translations by @d4rken in #139
- Remove deprecated lifecycle-extensions and update test dependencies by @d4rken in #140
- Remove unimplemented NFC linking option by @d4rken in #142
- Remove non-debug unit test variants from CI by @d4rken in #143
- Sync: Improve SyncWorker resilience with per-operation error handling by @d4rken in #144
- Remove dead commented code from SyncWorker by @d4rken in #145
v0.13.0-rc0 - December 09, 2025
What’s Changed
Enhancements
- Sort devices alphabetically by label in widget and sync devices list by @d4rken in #133
- Add high battery notification alert for charging devices by @d4rken in #134
v0.12.1-rc0 - November 21, 2025
What’s Changed
Other changes
- Remove pro-check restriction for viewing devices in GDrive/KServer actions by @d4rken in #129
- Update translations by @d4rken in #130
v0.12.0-rc0 - September 03, 2025
What’s Changed
Enhancements
- Show temperature in Fahrenheit depending on user locale by @d4rken in #114
- Restyle limited devices by @d4rken in #116
- Add “Manage devices” action to device limit dashboard item by @d4rken in #117
- Warn of stale sync data/devices by @d4rken in #119
- Add dashboard UI improvements for device states and interactions by @d4rken in #122
Bug fixes
- Fix device limit text in dashboard by @d4rken in #115
- Fix navigation bar color in bottom sheets for light mode by @d4rken in #120
Other changes
- Refine wording and use plurals for app counts by @d4rken in #107
- Fix typo in manual link code string by @d4rken in #108
- Fix typo in Google Drive setup description by @d4rken in #109
- Update translations by @d4rken in #113
- Update Android Gradle Plugin to 8.12.2 by @d4rken in #121
- Update translations by @d4rken in #124
v0.11.2-rc0 - July 07, 2025
What’s Changed
Bug fixes
- Fix crash when entering sync settings by @d4rken in #106
v0.11.1-rc0 - July 02, 2025
What’s Changed
Other changes
- Google Play maintenance by @d4rken in #102
v0.11.0-rc0 - June 24, 2025
What’s Changed
Other changes
- Remove Twitter by @d4rken in #92
- Update default store changelog by @d4rken in #91
- Adjust build scripts (based on SDMSE) and use pinning by @d4rken in #94
- Improve changelog and add translations by @d4rken in #99
- Update, add and improve translations by @d4rken in #100
v0.10.2-rc0 - March 19, 2025
What’s Changed
Other changes
- Update privacy policy link by @d4rken in #90
v0.10.1-rc0 - March 04, 2025
What’s Changed
Enhancements
- Add translation support via crowdin.com by @d4rken in #87
Other changes
New Contributors
- @reindex-ot made their first contribution in #85
v0.10.0-rc0 - November 26, 2024
What’s Changed
Other changes
- Remove J-Server code by @d4rken in #84
v0.9.1-rc0 - September 14, 2024
What’s Changed
Enhancements
- Include install source in synced app-data (gplay, fdroid, samsung, amazon) by @d4rken in #82
Other changes
- Remove foreground service requirements and change debug log behavior by @d4rken in #81
v0.9.0-rc0 - September 13, 2024
What’s Changed
Enhancements
- Add base support for new synchronization option:
K-Serverby @d4rken in #48 - Improve device disconnect and reset behavior for K-Server by @d4rken in #52
- Provide meaningful user-agent to the server, e.g.
octi/0.8.3-rc0/FOSSby @d4rken in #53 - Improve Google Drive related behavior by @d4rken in #56
- Add option to pause sync connectors without removing them by @d4rken in #58
- Improve upgrade flow by @d4rken in #59
- Update material design and bump target API to 34 by @d4rken in #60
- Clicking entries in the app list opens their Google Play Store page by @d4rken in #61
- Material you by @d4rken in #64
- Nicer onboarding by @d4rken in #66
- Add update check for FOSS builds by @d4rken in #67
- Automatically do initial refresh when adding sync methods by @d4rken in #70
- Add screen to manage devices per connector by @d4rken in #72
- Allow entry of custom address for KServer connectors by @d4rken in #73
- Add battery low notifications by @d4rken in #75
- Improve battery module by @d4rken in #76
- Improve Google Drive sync by @d4rken in #77
- Disallow new-lines in device labels by @d4rken in #78
Bug fixes
- Fix sharecode visibility in landscape mode by @d4rken in #54
- Fix release mode issues by @d4rken in #65
- When removing a connector, also clean up its paused state by @d4rken in #71
Other changes
- fix GitHub releases link by @Hakuin123 in #37
- Update README.md by @d4rken in #47
- Bump CI JDK version by @d4rken in #49
- Remove email and add discord link in Settings>Support by @d4rken in #50
- Deprecate J-Server: Prevent creating new accounts and add info to switch to K-Server by @d4rken in #51
- Replace REQUEST_IGNORE_BATTERY_OPTIMIZATIONS with manual user prompt by @d4rken in #55
- Little improvements, debug statements and cleanup by @d4rken in #57
- Fix tests by @d4rken in #62
- Code fluff by @d4rken in #63
- Resource cleanup by @d4rken in #68
- Don’t allow going back to onboarding after reaching dashboard by @d4rken in #69
- Fix displayed information for KServer connector by @d4rken in #74
New Contributors
- @Hakuin123 made their first contribution in #37
v0.8.3-rc0 - September 12, 2023
What’s Changed
Bug fixes
- Fix crash on Android 6.0 (API 23) when determining signal wifi strength by @d4rken in #29
- Catch exception if the user doesn’t have a browser by @d4rken in #31
Other changes
- Update Spanish translation by @cyanwolfg in #16
- Update Spanish translations. by @d4rken in #22
- Remove bugsnag by @d4rken in #30
- Add extra onboarding screen by @d4rken in #32
v0.8.2-rc0 - January 06, 2023
What’s Changed
Enhancements
- Prominent disclosure for debug logs by @d4rken in #15
Other changes
- Update Spanish translation by @cyanwolfg in #14
v0.8.1-rc0 - November 14, 2022
What’s Changed
Other changes
- Update Spanish translation by @cyanwolfg in #7
v0.8.0-rc0 - November 08, 2022
What’s Changed
Enhancements
- Clipboard sharing by @d4rken in #6
Other changes
- Add Spanish translation by @cyanwolfg in #4
- Add setting to enable/disable the apps module. by @d4rken in #5
New Contributors
- @cyanwolfg made their first contribution in #4
v0.7.1-rc0 - November 04, 2022
No release notes available.
v0.7.0-rc1 - November 04, 2022
What’s Changed
Other changes
- Battery widget by @d4rken in #1
New Contributors
- @d4rken made their first contribution in #1
v0.6.1-rc1 - November 02, 2022
No release notes available.
v0.6.1-rc0 - November 02, 2022
No release notes available.
v0.6.0-rc1 - November 01, 2022
No release notes available.
v0.6.0-rc0 - November 01, 2022
No release notes available.
v0.5.2-beta0 - October 31, 2022
No release notes available.
v0.5.1-beta0 - October 29, 2022
No release notes available.
v0.5.0-beta1 - October 29, 2022
No release notes available.