Commit Graph

1586 Commits

Author SHA1 Message Date
Peter Steinberger
49e7004664 fix(macos): group usage by selected model 2026-01-11 01:51:04 +01:00
Peter Steinberger
21ba04755b fix(macos): onboarding location + layout 2026-01-11 01:36:00 +01:00
Peter Steinberger
d2098e4492 fix(macos): avoid discovery retries during tests 2026-01-11 01:16:39 +01:00
Peter Steinberger
3dbd6766ab fix(macos): improve onboarding discovery + restart onboarding 2026-01-11 01:13:53 +01:00
Peter Steinberger
f3882671c9 fix(macos): avoid hiding gateways by substring match 2026-01-11 00:47:01 +01:00
Peter Steinberger
d4a93bc25c fix: normalize model picker refs (#683) (thanks @benithors) 2026-01-10 23:43:06 +01:00
benithors
7fb0b4e1eb macOS: fix model picker formatting + protocol sync 2026-01-10 23:42:24 +01:00
benithors
04951b0629 Config: add searchable model picker with provider/model hints 2026-01-10 23:42:24 +01:00
Peter Steinberger
621f710d60 fix(mac): add tailnet discovery fallback and debug CLI 2026-01-10 23:39:27 +01:00
Peter Steinberger
66bc003126 fix: harden mac bridge disconnect handling (#676) (thanks @ngutman) 2026-01-10 22:27:09 +01:00
Nimrod Gutman
55d2608808 fix(macos): stabilize bridge tunnels 2026-01-10 22:26:47 +01:00
Peter Steinberger
ee5acd6d4b fix: move attach-only toggle to General settings 2026-01-10 22:21:40 +01:00
Peter Steinberger
d45c27e51f chore(protocol): regenerate GatewayModels.swift 2026-01-10 22:15:06 +01:00
Peter Steinberger
8dd8818e08 style: swiftformat GatewayEnvironment 2026-01-10 18:31:36 +01:00
Peter Steinberger
e3cd431551 fix(auto-reply): RawBody commands + locked session updates (#643) 2026-01-10 17:32:31 +01:00
Peter Steinberger
e2733d21bf refactor(ios): require bridge stable ID 2026-01-10 16:23:53 +00:00
Peter Steinberger
701e146c06 refactor(shared): default ToolDisplay config 2026-01-10 16:23:53 +00:00
Peter Steinberger
8bc9209094 refactor(apple): share AsyncTimeout helper 2026-01-10 16:23:53 +00:00
Peter Steinberger
5805bb051b fix(android): enforce strict lint checks 2026-01-10 16:04:32 +00:00
Peter Steinberger
ef3bab5a74 fix(macos): improve activity tool labels 2026-01-10 16:04:32 +00:00
Peter Steinberger
f428ed9038 fix(ios): enable strict concurrency checks 2026-01-10 16:04:32 +00:00
Kristijan Jovanovski
e4fea2b80b fix(ios): add Swift 6 strict concurrency compatibility
Applies the same Swift 6 compatibility patterns from PR #166 (macOS) to the iOS app.

Changes:
- LocationService.swift: Added Sendable constraint to withTimeout<T> generic,
  made CLLocationManagerDelegate methods nonisolated with Task { @MainActor in }
  pattern to safely access MainActor state
- TalkModeManager.swift: Fixed OSLog string interpolation to avoid operator
  overload issues with OSLogMessage in Swift 6

Addresses #164

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 16:04:32 +00:00
Peter Steinberger
001a19eb2c refactor: tidy mac bundled gateway packaging 2026-01-10 16:03:36 +01:00
Peter Steinberger
449bee9645 fix: bundle node runtime for mac app 2026-01-10 15:28:37 +01:00
Peter Steinberger
870c9f0b99 refactor: stop pinning hardcoded main session in chat UI 2026-01-09 23:20:58 +01:00
Peter Steinberger
50461c23c0 fix(protocol): sync generated Swift models 2026-01-09 22:12:28 +00:00
Peter Steinberger
15757d01bc fix(protocol): regen Swift GatewayModels 2026-01-09 22:10:01 +00:00
Peter Steinberger
92cc7a841c refactor: centralize main session key normalization in apps 2026-01-09 22:38:17 +01:00
Wes
6f5503688d fix(macos): prevent launch-at-login plist deletion on startup 2026-01-09 21:53:32 +01:00
Peter Steinberger
81e7e25b3a style(macos): swiftformat cleanup 2026-01-09 19:49:12 +00:00
Peter Steinberger
dac3b675cc fix: stabilize CI path assumptions 2026-01-09 18:35:52 +01:00
Peter Steinberger
c892fd174e refactor(sessions): add sessions.resolve + label helper (#570) 2026-01-09 17:02:57 +01:00
Peter Steinberger
7d518e336e feat(sessions): label lookup tightening (#570) (thanks @azade-c) 2026-01-09 16:42:09 +01:00
Peter Steinberger
f5cc6bb283 fix: harden node bridge keepalive 2026-01-09 15:46:45 +01:00
Peter Steinberger
f7e8cd8ac8 chore: regen protocol models (#570) (thanks @azade-c) 2026-01-09 15:32:49 +01:00
Peter Steinberger
cb86d0d6d4 fix: land mac node bridge ping loop (#572) (thanks @ngutman) 2026-01-09 14:01:20 +01:00
Nimrod Gutman
975aa5bf82 fix(macos): add node bridge ping loop 2026-01-09 13:50:38 +01:00
Peter Steinberger
7b81d97ec2 feat: wire multi-agent config and routing
Co-authored-by: Mark Pors <1078320+pors@users.noreply.github.com>
2026-01-09 12:48:42 +00:00
Peter Steinberger
e0c310d056 chore: bump versions to 2026.1.9 2026-01-09 10:02:15 +01:00
Peter Steinberger
151523f47b feat: add usage cost reporting 2026-01-09 02:29:54 +00:00
Erik von Essen Fisher
fb0c566b2a Rebrand app icons from Clawdis to Clawdbot
Replace app icons with new Clawdbot branding (lobster-in-phone-booth design) across iOS, Android, and macOS.

Changes:
- iOS: Updated all 14 icon sizes in AppIcon.appiconset (20px to 1024px)
- Android: Updated launcher icons for all density buckets (mdpi to xxxhdpi)
- macOS: Updated Icon.icon bundle and regenerated Clawdbot.icns

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-08 23:31:24 +01:00
Peter Steinberger
f1bc178141 fix: land macos resource bundle guard (#473) — thanks @gupsammy 2026-01-08 19:24:20 +00:00
gupsammy
29e9a574b0 fix(macos): prevent crash from missing ClawdbotKit resources and Swift library
The macOS app was crashing in two scenarios:

1. Bundle.module crash (fixes #213): When the first tool event arrived,
   ToolDisplayRegistry tried to load config via ClawdbotKitResources.bundle,
   which used Bundle.module directly. In packaged apps, Bundle.module
   couldn't find the resource bundle at the expected path, causing a
   fatal assertion failure after ~40-80 minutes of runtime.

2. dyld crash (fixes #417): Swift 6.2 requires libswiftCompatibilitySpan.dylib
   but SwiftPM doesn't bundle it automatically, causing immediate crash on
   launch with "Library not loaded" error.

Changes:
- ClawdbotKitResources.swift: Replace direct Bundle.module access with a
  safe locator that checks multiple paths and falls back gracefully
- package-mac-app.sh: Copy ClawdbotKit_ClawdbotKit.bundle to Resources
- package-mac-app.sh: Copy libswiftCompatibilitySpan.dylib from Xcode
  toolchain to Frameworks

Tested on macOS 26.2 with Swift 6.2 - app launches and runs without crashes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 19:24:20 +00:00
Peter Steinberger
257204f0cd fix: remove swift/android build warnings 2026-01-08 05:57:27 +00:00
Peter Steinberger
7d492cb0ab chore: sync app versions 2026-01-08 05:21:20 +00:00
Peter Steinberger
9fd2fd9362 chore: bump version to 2026.1.8 2026-01-08 05:15:51 +00:00
Peter Steinberger
0bcf3f40f4 fix(ci): sync logs tail protocol artifacts 2026-01-08 03:49:19 +00:00
Peter Steinberger
1e1293cc0a style: swiftformat sweep 2026-01-08 02:36:29 +00:00
SirCrumpet
2381c19925 fix(macos): fix node bridge tunnel port override 2026-01-08 03:09:31 +01:00
Peter Steinberger
1ebde4dc24 style: align voice wake text utils format 2026-01-08 01:49:29 +00:00
Peter Steinberger
d9482719fb refactor: share voice wake text utils 2026-01-08 01:46:25 +00:00
Peter Steinberger
45deb50e1a fix: voice wake logging privacy (PR #438 @xadenryan) 2026-01-08 01:37:42 +00:00
Xaden Ryan
a15943c809 Mac: format voice wake files 2026-01-08 01:36:16 +00:00
Xaden Ryan
da972b119d Voice Wake: trigger on wake-word pause 2026-01-08 01:36:15 +00:00
Xaden Ryan
804177b1f5 Voice Wake: preserve mic selection across disconnects
- Keep the chosen mic label visible when it disconnects and show a disconnected hint while falling back to system default.
- Avoid clearing the preferred mic on device changes so it auto-restores when available.
- Add audio input change and default-input logs in voice wake runtime/tester/meter to debug routing.
2026-01-08 01:36:15 +00:00
Xaden Ryan
830613d9fa Mac: keep voice wake tester local-only
Why: Start Test is a local verification tool, but it was forwarding transcripts to the gateway/chat, which confused users and made tests look like real commands.

What: stop forwarding from VoiceWakeTester and clarify in docs that the tester does not send to the gateway.
2026-01-08 01:36:15 +00:00
Xaden Ryan
0f1a262ae1 Mac: stabilize voice wake test flow
Why: voice wake tests often delivered partial/final transcripts without reliable word timings, so trigger matching failed, timeouts overwrote detections, and test runs/mic capture kept running after UI changes.

What: add text-only/prefix fallback and silence-based detection in the test flow, stop/clean up any prior test, cancel timeout on detection/stop, and tear down meter/test when the Voice Wake tab is inactive. Runtime detection now falls back on final text-only matches when timing is missing. UI state now reflects finalizing and prevents hanging tests.
2026-01-08 01:36:15 +00:00
Peter Steinberger
02ad9eccad fix: resolve CI asset/protocol drift 2026-01-08 01:25:17 +00:00
Peter Steinberger
9859ad3176 style(macos): swiftformat + swiftlint cleanup 2026-01-07 20:41:41 +00:00
Peter Steinberger
2b6adc9e60 test(macos): make env/defaults helper Swift 6-safe 2026-01-07 20:32:15 +00:00
Peter Steinberger
eb5f0b73a9 refactor(macos): inject main-actor services into node runtime 2026-01-07 20:32:15 +00:00
Peter Steinberger
5a09926126 test(macos): isolate env + defaults 2026-01-07 20:32:15 +00:00
Peter Steinberger
d45fcc44da refactor(macos): move launchctl + plist snapshot 2026-01-07 20:32:15 +00:00
Peter Steinberger
f10d1fd9ac fix(macos): stabilize node runtime + menu sessions 2026-01-07 19:42:49 +00:00
Peter Steinberger
8913bfbcd5 refactor(macos): drop duplicate AnyCodable 2026-01-07 19:42:49 +00:00
Peter Steinberger
e4f62c5b0c fix(macos): make launchd enable idempotent 2026-01-07 19:42:49 +00:00
gupsammy
c572859c86 fix(macos): prevent gateway launchd race condition on startup (#306) 2026-01-07 19:42:49 +00:00
Peter Steinberger
9be7e1b332 fix(ClawdbotKit): bundle tool-display.json 2026-01-07 18:30:45 +00:00
François Catuhe
04ae9bdbef fix(android): rotate camera photos by EXIF orientation 2026-01-07 19:19:07 +01:00
Manuel Jiménez Torres
6de2a1d958 fix(android): fix build error 2026-01-07 18:09:31 +00:00
Peter Steinberger
ec0ae6fb85 fix(android): drop broken apk output renaming 2026-01-07 18:04:37 +00:00
Peter Steinberger
b83570c5e7 fix(android): restore tool display config 2026-01-07 15:38:10 +00:00
Peter Steinberger
491a6e02fb Merge branch 'main' into pr-402 2026-01-07 15:36:34 +00:00
Peter Steinberger
7f6b98929f build(android): bump 2026.1.7 + apk naming 2026-01-07 15:30:03 +00:00
François Catuhe
d3ae92aaa8
android: set version 2026.1.5, add APK naming convention, remove duplicate asset 2026-01-07 16:05:26 +01:00
Peter Steinberger
85e536f3ff fix(macos): validate remote ports 2026-01-07 11:00:21 +00:00
Nima Karimi
a5b29623b8 fix(macos): honor discovered gateway ports 2026-01-07 10:51:06 +00:00
Peter Steinberger
9bf6684366 feat: add provider usage tracking 2026-01-07 11:42:46 +01:00
Peter Steinberger
86fde78442 chore: sync swift protocol models 2026-01-07 06:14:15 +00:00
Peter Steinberger
b0bd7b946e fix(macos): fix swiftformat lint in A2UI handler 2026-01-06 21:54:46 +01:00
Peter Steinberger
250debcc00 Merge PR #310 2026-01-06 20:25:47 +01:00
Peter Steinberger
91f67f5bd7 build(protocol): regenerate protocol artifacts 2026-01-06 18:37:20 +00:00
Peter Steinberger
dbfa316d19 feat: multi-agent routing + multi-account providers 2026-01-06 18:33:37 +00:00
Nimrod Gutman
62e590323a fix(macOS): keep gateway config sync local 2026-01-06 18:05:28 +02:00
Peter Steinberger
dbac51e60f chore(protocol): regenerate GatewayModels.swift 2026-01-06 09:55:58 +01:00
Shadow
69f285c5ca
chore: fixed CI 2026-01-05 23:36:48 -06:00
Marcus Neves
67e1452f4a
Cron: normalize cron.add inputs + align channels (#256)
* fix: harden cron add and align channels

* fix: keep cron tool id params

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 02:09:48 +00:00
Peter Steinberger
8e8d07cbf4 fix(ci): satisfy formatter checks 2026-01-05 13:55:53 +00:00
Peter Steinberger
d9103b387a fix: sync gateway mode via gateway config 2026-01-05 06:39:37 +00:00
Peter Steinberger
30038f7d37 fix: custom connections sidebar 2026-01-05 07:25:13 +01:00
Peter Steinberger
7c51efe8f8 fix: prefer gateway config in local mode 2026-01-05 06:16:48 +00:00
Peter Steinberger
1119f2003e fix: preserve JSON5 config parsing 2026-01-05 06:16:48 +00:00
Peter Steinberger
0d0da2e297 fix: remove sidebar toggle toolbar item safely 2026-01-05 06:49:57 +01:00
Peter Steinberger
82c16a8bed fix: remove settings sidebar toggle 2026-01-05 06:48:49 +01:00
Peter Steinberger
545f52d7d5 fix: hide settings toolbar row 2026-01-05 06:36:34 +01:00
Peter Steinberger
a7d33c06f9 refactor: align agent lifecycle 2026-01-05 05:55:02 +01:00
Peter Steinberger
a89204362e fix: use sidebar settings layout 2026-01-05 05:54:21 +01:00
Peter Steinberger
95d9160e27 fix: avoid settings toolbar overflow 2026-01-05 05:32:14 +01:00
Peter Steinberger
8a31a868c0 fix: honor tailnet bind for macOS gateway endpoint 2026-01-05 05:30:40 +01:00
Peter Steinberger
f871563f37 chore: sync generated protocol swift 2026-01-05 00:54:54 +00:00
Peter Steinberger
39e482414a chore: apply upstream autostash 2026-01-05 00:26:52 +00:00
Andranik Sahakyan
d9a9f6db7d
fix(mac): add Sendable conformance to generated Swift protocol structs (#195)
* fix(mac): add Sendable conformance to generated Swift protocol structs

* fix(mac): make generated protocol types Sendable

* chore(mac): drop redundant Sendable extensions

* docs(changelog): thank @andranik-sahakyan for Sendable fix

* chore(swiftformat): exclude generated protocol models

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-04 22:39:21 +00:00
Nachx639
fa3a768a3a
fix(macos): remove authorizedWhenInUse references (iOS-only API) (#165)
CLAuthorizationStatus.authorizedWhenInUse only exists on iOS. On macOS,
location services only support .authorizedAlways. This was causing
compilation warnings and potentially incorrect behavior.

Fixes:
- GeneralSettings.swift: Remove authorizedWhenInUse check
- PermissionManager.swift: Update ensureLocation and status methods
- MacNodeRuntime.swift: Update location permission check

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 17:58:01 +00:00
Peter Steinberger
5dcf43d6ad test: cover macos location permission status 2026-01-04 18:49:36 +01:00
Peter Steinberger
9eee832282 chore: update protocol swift models 2026-01-04 18:16:36 +01:00
Peter Steinberger
564cc9359d style: swiftformat gateway models 2026-01-04 18:12:33 +01:00
Peter Steinberger
e2c6a96cd3 test(android): cover notification tap intent 2026-01-04 18:05:26 +01:00
Manuel Jiménez Torres
7200dabfb2 feat(android): open app when tapping foreground service notification
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 18:05:26 +01:00
Peter Steinberger
d923dc56ec fix: update ClawdBot Swift references 2026-01-04 17:57:53 +01:00
Peter Steinberger
5eb6b779f5 fix: macOS Swift cleanup 2026-01-04 17:57:53 +01:00
Peter Steinberger
4e072d59c1 chore(protocol): regenerate GatewayModels 2026-01-04 16:05:47 +00:00
Peter Steinberger
5d29985c4f fix: avoid sendable issue in mac location timeout 2026-01-04 16:27:17 +01:00
Peter Steinberger
026a25d164 chore: lint and format cleanup 2026-01-04 16:24:17 +01:00
Peter Steinberger
fd95ededaa refactor: streamline node invoke handling 2026-01-04 16:24:17 +01:00
Peter Steinberger
c0b248f291 refactor: split connections settings/store 2026-01-04 16:24:17 +01:00
Peter Steinberger
246adaa119 chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
Peter Steinberger
529cf91ac3 fix: keep node presence fresh 2026-01-04 14:41:52 +01:00
Peter Steinberger
71fdf46f18 fix(android): refresh hello on sms permission grant 2026-01-04 13:59:05 +01:00
Peter Steinberger
0d56a73118 fix(android): add sms permission flow and tests 2026-01-04 13:59:05 +01:00
Vasanth Rao Naik Sabavat
1318276105 feat(android): add SMS sending capability to Android node
Add sms.send command to allow sending text messages via the paired Android device.

Changes:
- Add SmsManager class to handle SMS sending via Android SmsManager API
- Add ClawdisSmsCommand enum and Sms capability to protocol constants
- Wire sms.send command into NodeRuntime invoke handler
- Add SEND_SMS permission to AndroidManifest.xml
- Advertise sms capability when SEND_SMS permission is granted

The SMS capability is only advertised when the user has granted SEND_SMS
permission. Messages longer than 160 chars are automatically split into
multipart messages.
2026-01-04 13:58:05 +01:00
Peter Steinberger
259b14d66a chore: refresh protocol models 2026-01-04 07:07:21 +01:00
Peter Steinberger
04cd1bd11a fix(macos): bridge wizard option values 2026-01-04 06:17:07 +01:00
Tu Nombre Real
b978cc4e91 feat(macos): add Swift 6 strict concurrency compatibility
Prepares the macOS app for Swift 6 strict concurrency mode by:

1. Adding Sendable conformance to WizardNextResult, WizardStartResult,
   and WizardStatusResult in GatewayModels.swift

2. Adding AnyCodable bridging helpers in OnboardingWizard.swift to
   handle type conflicts between ClawdisProtocol and local module

3. Making CLLocationManagerDelegate methods nonisolated in:
   - MacNodeLocationService.swift
   - PermissionManager.swift (LocationPermissionRequester)

   Using Task { @MainActor in } pattern to safely access MainActor
   state from nonisolated protocol requirements.

These changes are forward-compatible and don't affect behavior on
current Swift versions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 06:09:52 +01:00
Peter Steinberger
add1301a51 feat(sessions): add agent-to-agent post step 2026-01-04 03:04:55 +01:00
Peter Steinberger
052cec70ae fix: render thinking text in italics 2026-01-04 02:44:11 +01:00
Cash Williams
12186e14a9 fix(android): handle unreachable gateway gracefully
Previously, if the gateway was unreachable (wrong IP, offline, etc.),
the Android app would crash with an unhandled socket exception.

Changes:
- Wrap socket.connect() in try/catch to handle connection failures
- Return PairResult with error message instead of crashing
- Display actual error message in status text instead of generic 'pairing required'

This gives users useful feedback like 'Connection refused' or
'Network is unreachable' instead of a crash.
2026-01-04 01:44:43 +01:00
Peter Steinberger
44bdd4ca0c chore: regen Swift protocol models 2026-01-04 01:20:20 +01:00
Peter Steinberger
5862f95bd2 fix: lock main session deletion 2026-01-03 23:57:17 +00:00
Peter Steinberger
e1dd764504 feat: add node location support 2026-01-04 00:54:44 +01:00
Peter Steinberger
3d39e2ad75 feat(macos): sync gateway config 2026-01-03 22:17:04 +01:00
Peter Steinberger
52458a5628 Discord: default reaction notifications to own 2026-01-03 18:48:36 +00:00
Shadow
451174ca10 Discord: add reaction notification allowlist 2026-01-03 18:48:36 +00:00
Peter Steinberger
0af89022ff fix: avoid Swift compiler crash in onboarding wizard 2026-01-03 17:59:37 +00:00
Peter Steinberger
53baba71fa feat: unify onboarding + config schema 2026-01-03 16:48:08 +01:00
Peter Steinberger
be3da5b856 fix: update protocol models and android parsing 2026-01-03 15:04:24 +00:00
Peter Steinberger
3043dd3a0c fix: restructure macOS connections settings 2026-01-03 14:25:03 +01:00
Peter Steinberger
f11b352089 fix(macos): expand onboarding window height 2026-01-03 13:34:30 +01:00
Peter Steinberger
6e16c0699a feat: centralize tool display metadata 2026-01-03 13:18:27 +01:00
Peter Steinberger
7165c8a7e5 refactor: rename bundle identifiers to com.clawdis 2026-01-03 12:26:22 +01:00
Peter Steinberger
f47c7ac369 feat: support configurable gateway port 2026-01-03 12:00:17 +01:00
Shadow
7400c0946e
Discord: update UIs to use the new config 2026-01-03 01:02:22 -06:00
Peter Steinberger
c3e1b8cfd9 chore: update protocol swift models 2026-01-03 06:44:21 +01:00
Peter Steinberger
b417fe5727 fix: show rich session names in chat UIs 2026-01-03 05:07:13 +01:00
Shadow
98a1deb129 UI: add discord action toggles 2026-01-03 03:07:13 +01:00
Shadow
0c38f2df2a Discord: drop enableReactions config 2026-01-03 03:07:13 +01:00
Peter Steinberger
c5d70019bb fix: respect onboarding scroll indicator preference 2026-01-03 02:55:43 +01:00
Shadow
a35fb3a9b4 macOS: add onboarding scroll gutter 2026-01-03 02:55:43 +01:00
Peter Steinberger
75a9cd83a0 fix(mac): resolve camera type deprecation 2026-01-03 01:49:27 +01:00
Peter Steinberger
9dd613edf7 fix(mac): harden remote tunnel recovery 2026-01-03 00:02:27 +01:00
Peter Steinberger
118a6d7421 fix: align discord config ui 2026-01-02 21:15:59 +01:00