Skip to content

feat(android): add system/photos/contacts/calendar/motion capabilities#29398

Merged
obviyus merged 9 commits intomainfrom
android-caps
Feb 28, 2026
Merged

feat(android): add system/photos/contacts/calendar/motion capabilities#29398
obviyus merged 9 commits intomainfrom
android-caps

Conversation

@obviyus
Copy link
Contributor

@obviyus obviyus commented Feb 28, 2026

Summary

  • Add Android handlers for iOS-parity capability surface:
    • system.notify
    • photos.latest
    • contacts.search, contacts.add
    • calendar.events, calendar.add
    • motion.activity, motion.pedometer
  • Wire handlers into runtime/dispatcher/command registry and protocol constants.
  • Add required Android manifest permissions for notifications, photos, contacts, calendar, and motion recognition.

Testing

  • cd apps/android && ./gradlew :app:testDebugUnitTest
  • Manual emulator invokes for all new commands; all passed except motion.pedometer on emulator (step counting not supported), which is expected hardware limitation.

@openclaw-barnacle openclaw-barnacle bot added app: android App: android size: XL maintainer Maintainer-authored PR labels Feb 28, 2026
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 28, 2026

Greptile Summary

Added comprehensive Android handlers for iOS-parity capabilities including system notifications, photos, contacts, calendar, and motion/pedometer. Implementation follows established patterns with clean separation via data source interfaces, proper permission handling, and thorough test coverage.

Key changes:

  • SystemHandler: notification posting with priority/sound control
  • PhotosHandler: retrieves latest photos with adaptive compression
  • ContactsHandler: search/add contacts with structured name/org/phone/email fields
  • CalendarHandler: query/create events with timezone support and calendar resolution
  • MotionHandler: activity classification via accelerometer + step counting
  • Wired all handlers into InvokeDispatcher, InvokeCommandRegistry, and NodeRuntime
  • Added required Android manifest permissions for all new capabilities
  • Updated DeviceHandler.permissionsPayloadJson() to report new permission states

Confidence Score: 4/5

  • Safe to merge with one minor fix
  • Well-structured implementation with good test coverage and proper integration. One unreachable code branch should be fixed, but doesn't affect runtime behavior.
  • Review MotionHandler.kt:216-222 for the unreachable else branch fix

Last reviewed commit: 535196f

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

20 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 535196fccf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@obviyus obviyus self-assigned this Feb 28, 2026
@obviyus obviyus merged commit 079bc24 into main Feb 28, 2026
3 checks passed
@obviyus obviyus deleted the android-caps branch February 28, 2026 03:57
@obviyus
Copy link
Contributor Author

obviyus commented Feb 28, 2026

Landed via temp rebase onto main.

  • Gate: cd apps/android && ./gradlew :app:testDebugUnitTest
  • Land commit: 3986419
  • Merge commit: 079bc24

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 398641926f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

requiresForeground = true,
),
InvokeCommandSpec(
name = OpenClawSystemCommand.Notify.rawValue,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Allowlist Android system.notify by default

This commit advertises system.notify for Android nodes, but the gateway’s Android default allowlist still omits that command (src/gateway/node-command-policy.ts, and src/gateway/gateway-misc.test.ts expects allow.has("system.notify") to be false), so default node.invoke requests will be rejected as command not allowlisted. As shipped, the new Android system.notify path is effectively unusable unless operators add a manual gateway.nodes.allowCommands override.

Useful? React with 👍 / 👎.

r4jiv007 pushed a commit to r4jiv007/openclaw that referenced this pull request Feb 28, 2026
mylukin pushed a commit to mylukin/openclaw that referenced this pull request Feb 28, 2026
wanjizheng pushed a commit to wanjizheng/openclaw that referenced this pull request Feb 28, 2026
wanjizheng pushed a commit to wanjizheng/openclaw that referenced this pull request Feb 28, 2026
wanjizheng pushed a commit to wanjizheng/openclaw that referenced this pull request Feb 28, 2026
wanjizheng pushed a commit to wanjizheng/openclaw that referenced this pull request Feb 28, 2026
vincentkoc pushed a commit to Sid-Qin/openclaw that referenced this pull request Feb 28, 2026
vincentkoc pushed a commit to rylena/rylen-openclaw that referenced this pull request Feb 28, 2026
newtontech pushed a commit to newtontech/openclaw-fork that referenced this pull request Feb 28, 2026
wanjizheng pushed a commit to wanjizheng/openclaw that referenced this pull request Mar 1, 2026
wanjizheng pushed a commit to wanjizheng/openclaw that referenced this pull request Mar 1, 2026
hughdidit pushed a commit to hughdidit/DAISy-Agency that referenced this pull request Mar 1, 2026
ansh pushed a commit to vibecode/openclaw that referenced this pull request Mar 2, 2026
steipete pushed a commit to Sid-Qin/openclaw that referenced this pull request Mar 2, 2026
safzanpirani pushed a commit to safzanpirani/clawdbot that referenced this pull request Mar 2, 2026
steipete pushed a commit to Sid-Qin/openclaw that referenced this pull request Mar 2, 2026
venjiang pushed a commit to venjiang/openclaw that referenced this pull request Mar 2, 2026
robertchang-ga pushed a commit to robertchang-ga/openclaw that referenced this pull request Mar 2, 2026
execute008 pushed a commit to execute008/openclaw that referenced this pull request Mar 2, 2026
hughdidit pushed a commit to hughdidit/DAISy-Agency that referenced this pull request Mar 3, 2026
dorgonman pushed a commit to kanohorizonia/openclaw that referenced this pull request Mar 3, 2026
sachinkundu pushed a commit to sachinkundu/openclaw that referenced this pull request Mar 6, 2026
zooqueen pushed a commit to hanzoai/bot that referenced this pull request Mar 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: android App: android maintainer Maintainer-authored PR size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant