-
-
Notifications
You must be signed in to change notification settings - Fork 254
Add WearOS companion app #3185
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
TheLastProject
merged 50 commits into
CatimaLoyalty:wip/wearos
from
blacklight:feat/wearos
Jul 19, 2026
Merged
Add WearOS companion app #3185
Changes from all commits
Commits
Show all changes
50 commits
Select commit
Hold shift + click to select a range
bf658e4
feat: add WearOS app with GMS-based Wearable Data Layer transport
blacklight 5a6aca2
feat: add GMS-free Bluetooth RFCOMM transport for Wear OS
blacklight 9f6d0d4
fix: resolve two wear card view bugs
blacklight 302af3d
fix: re-fetch cards on onResume to recover from post-reboot spinner
blacklight 60df23c
fix: prevent BluetoothServerService from being killed by app idle
blacklight a1d00e9
feat: keep screen on at full brightness while barcode is displayed
blacklight 744a745
refactor: remove all GMS/play-services-wearable dependencies
blacklight aa72cc1
feat: persist cards locally on watch for offline access
blacklight 7f08786
chore(build): Set debug applicationIdSuffix
blacklight b7cbe83
fix: check BLUETOOTH_CONNECT permission at call site in AcceptThread
blacklight 06c2fc5
refactor: Centralise notification/channel IDs in NotificationInfo
blacklight 71bbb86
chore: Addressed LINT warning on rejected Bluetooth permission
blacklight 75fd1f2
chore: Addressed LINT warnings in BluetoothServerService
blacklight 33a36ef
feat(wear): Version the Bluetooth sync protocol
blacklight 6b769c6
refactor(bluetooth): Move BluetoothServerService to wearos package
blacklight 5778d3e
feat(app): Add Wear OS sync setting and gate Bluetooth server
blacklight f4a45bc
refactor(bt-service): Remove pointless compatibility layer with previ…
blacklight 4fca884
feat(wear): Apply the same sorting as the phone app.
blacklight c3511d8
feat(wear): Default Wear OS sync to off; move permission flow to Sett…
blacklight 08f352b
fix(wear): Use LocalActivity instead of LocalContext cast in CardView…
blacklight c53e05d
feat(wear): Surface distinct Bluetooth error states to the user
blacklight 0a4374a
fix(wear): surface card parse failures to the user instead of silentl…
blacklight eb155f9
chore(wear): Replaced deprecated SharedPreferences usage
blacklight fc1c43d
chore(gitignore): Ignore /wear/release
blacklight ee33165
ci(wear): Add WearOS CI workflow for automatic build and LINT
blacklight 2eae0bf
Update wear/src/main/res/values/strings.xml
blacklight 5f74d07
fix(wear): paginate BT card sync to prevent timeout with many cards
blacklight 523938d
chore(wear): Set `Catima Debug` app_name for `wear`, like it's done f…
blacklight 1c47f85
refactor(wear): Replace boolean status flags with SyncStatus enum
blacklight c877568
perf(wear): add stable key to card list items
blacklight 80ed360
chore: Replaced absolute import
blacklight 451ffa1
fix: Reset Wear card screen brightness override on dispose
blacklight 7e7aa8a
refactor(wear): use theme background and alias ComposeColor in CardVi…
blacklight 603db47
chore(wear): Remove Java 21 compileOptions from Wear Gradle config
blacklight 703e895
chore(ci): Removed unnecessary echo
blacklight 3a5b02c
refactor(wearos): Remove legacy full cards request command
blacklight 2069eb0
Update wear/src/main/AndroidManifest.xml
blacklight 65cd6c4
Update wear/build.gradle.kts
blacklight ea22356
feat(wearos): Negotiate protocol via /VERSIONS command
blacklight fb0f797
fix(wear): Request BLUETOOTH_CONNECT when Wear sync is enabled
blacklight 884b863
Update gradle/libs.versions.toml
blacklight 825fbbc
fix(wear): Distinguish card sync parse failures
blacklight 52a31e4
feat(wear): Add shared Bluetooth protocol and permission handling
blacklight 531a9eb
Merge branch 'main' into feat/wearos
blacklight 49a8e6d
refactor(wearos): centralize sync service lifecycle management
blacklight d6eeb30
refactor(wear): Replace FetchStatus with shared SyncStatus
blacklight 2c69711
fix(gradle): Don't downgrade compose
blacklight 193c001
fix(manifest): Moved standalone metadata under the right section.
blacklight 6fa800d
fix(wearos): disable Wear OS sync toggle when Bluetooth permission is…
blacklight c64c3b8
fix(wear): Snackbar to guide users to grant sync permission
blacklight File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,46 @@ | ||
| name: Android Wear CI | ||
| on: | ||
| workflow_dispatch: | ||
| push: | ||
| branches: | ||
| - main | ||
| - staging | ||
| - trying | ||
| pull_request: | ||
| branches: | ||
| - main | ||
| permissions: | ||
| actions: none | ||
| checks: none | ||
| contents: read | ||
| deployments: none | ||
| discussions: none | ||
| id-token: none | ||
| issues: none | ||
| packages: none | ||
| pages: none | ||
| pull-requests: none | ||
| repository-projects: none | ||
| security-events: none | ||
| statuses: none | ||
| env: | ||
| JAVA_HOME: /usr/lib/jvm/java-25-openjdk-amd64 | ||
| jobs: | ||
| build: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v7.0.0 | ||
| - uses: gradle/actions/wrapper-validation@v6.2.0 | ||
| - name: set up OpenJDK 25 | ||
| run: | | ||
| sudo apt-get update | ||
| sudo apt-get install -y openjdk-25-jdk-headless | ||
| sudo update-alternatives --auto java | ||
| - name: Build | ||
| run: ./gradlew :wear:assembleRelease | ||
| - name: Check for non-free libraries | ||
| run: | | ||
| wget -q https://codeberg.org/Katastima/apkscanner/releases/download/v0.0.7/apk-scanner_v0.0.7.jar | ||
| java -jar apk-scanner_v0.0.7.jar scan-apk 'wear/build/outputs/apk/release/wear-release-unsigned.apk' | ||
| - name: Check lint | ||
| run: ./gradlew :wear:lintRelease |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| package protect.card_locker | ||
|
|
||
| object NotificationInfo { | ||
| object WearBluetooth { | ||
| const val NOTIFICATION_ID = 1001 | ||
| const val CHANNEL_ID = "catima_wear_bt" | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.