Skip to content

feat(android): show cron job details#95107

Merged
steipete merged 4 commits into
openclaw:mainfrom
Tosko4:feat/android-cron-detail-edit
Jul 6, 2026
Merged

feat(android): show cron job details#95107
steipete merged 4 commits into
openclaw:mainfrom
Tosko4:feat/android-cron-detail-edit

Conversation

@Tosko4

@Tosko4 Tosko4 commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

No linked issue. This is a narrow Android settings usability improvement.

What Problem This Solves

Android users could see the Cron Jobs settings summary and list, but tapping a cron job did not open the job itself. That made it hard to inspect the schedule, payload, delivery state, or copy the job id when discussing a cron job in chat or support.

Why This Change Was Made

This adds an Android-only cron job detail view that uses the existing cron.get gateway method. The view stays read-only: it does not add cron editing, new gateway methods, protocol changes, auth scopes, or command actions.

The cron job id row is now copyable, with a copy affordance and a toast, so users can quickly reference the exact job id elsewhere.

User Impact

Users can now open Settings > Cron Jobs, tap a scheduled job, inspect the gateway-provided details, copy the cron job id, refresh the detail view, and use either the toolbar back button or Android system back to return to the Cron Jobs list.

Evidence

Redacted local Android emulator proof against a running OpenClaw gateway:

View What it proves Proof
Cron Jobs list Cron jobs render as tappable rows with status and chevrons. Private cron names/prompts are redacted. Cron Jobs list
Cron job detail Tapping a row opens the read-only cron.get detail view. Private title/id are redacted. Cron job detail
Copy id affordance The ID row exposes a copy icon and Tap to copy; Android clipboard preview is redacted. Copy cron id
System back Android system back from detail returns to the Cron Jobs list instead of Settings home. Private cron names/prompts are redacted. System back returns to list

Validation run after rebasing onto current upstream/main:

ANDROID_HOME=/home/nabu/Android/Sdk ./gradlew :app:testThirdPartyDebugUnitTest --no-daemon --stacktrace
ANDROID_HOME=/home/nabu/Android/Sdk ./gradlew :app:assembleThirdPartyDebug --no-daemon --stacktrace
git diff --check
/home/nabu/.openclaw/workspace/skills/autoreview/scripts/autoreview --mode branch --base upstream/main

All four checks passed.

Additional note: :app:ktlintMainSourceSetCheck was attempted, but it is currently blocked by pre-existing unrelated ktlint violations in ChatController.kt and ChatScreen.kt that are outside this Android cron detail patch.

AI-assisted: implemented and validated with Codex, then manually inspected and tested in a local Android/OpenClaw setup.

@clawsweeper

clawsweeper Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed July 6, 2026, 1:10 AM ET / 05:10 UTC.

Summary
The PR adds an Android Settings > Cron Jobs detail view backed by cron.get, copyable job IDs, nested back navigation, parsing tests, native i18n inventory, and Android changelog text.

PR surface: Docs +2, Other +743. Total +745 across 7 files.

Reproducibility: not applicable. as a bug reproduction; this is a feature PR. Current main is list-only, and the inspected emulator screenshots show the after-change list, detail, copy, and system-back flows.

Review metrics: 1 noteworthy metric.

  • Android cron detail surface: 1 read-only detail screen added. The new screen exposes cron schedule, payload, delivery, and error fields on mobile, which matters for product/privacy acceptance before merge.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Get the remaining failing/in-progress CI lanes green or documented as unrelated.
  • Have the Android/product owner confirm that mobile cron payload, delivery, and error detail visibility should ship.

Risk before merge

  • [P1] Merging intentionally makes cron payload text, delivery state, and error details visible in Android settings, so an Android/product owner should accept that mobile surface before release.
  • [P1] The current head still has one failing CI lane and one in-progress smoke lane from the live check query; landing should wait for required CI to finish green or for maintainers to classify the failure as unrelated.

Maintainer options:

  1. Accept the new Android cron-detail surface (recommended)
    Proceed once Android/product review confirms that showing cron payload, delivery, and error details on mobile is intended.
  2. Reduce exposed detail before merge
    Keep navigation and ID copy but remove or redact sensitive-looking payload and error fields from the Android detail screen.
  3. Pause as product-surface expansion
    Close or defer the PR if Android should stay list-only until a broader cron management design is approved.

Next step before merge

  • No automated repair candidate: the review found no narrow code defect, and the remaining action is maintainer Android/product approval plus CI resolution.

Maintainer decision needed

  • Question: Should OpenClaw's Android app ship a read-only Cron Job detail screen that displays schedule, payload, delivery state, errors, and copyable job IDs?
  • Rationale: The code path is focused and uses an existing gateway method, but exposing detailed cron data on mobile is a product/UX acceptance choice that automated review should not decide alone.
  • Likely owner: steipete — steipete is the current assignee, pushed the latest hardening commits, and has recent history in both Android runtime/settings and cron gateway surfaces.
  • Options:
    • Ship after Android review (recommended): Accept the new read-only Android detail surface once an Android/product owner is satisfied and CI is green.
    • Narrow visible fields: Ask the contributor to hide or redact payload/error fields while keeping basic schedule/status and copyable ID support.
    • Decline the mobile surface: Close or pause the PR if cron details should remain in desktop/web and CLI surfaces for now.

Security
Cleared: Security review cleared: the diff stays in Android Kotlin UI/runtime code, uses the existing authorized cron.get RPC, and adds no dependency, workflow, permission, protocol, secret, package-resolution, or publishing surface.

Review details

Best possible solution:

Land the app-layer read-only detail view after Android/product acceptance and green CI, keeping it on existing cron.get without new protocol, auth, or config surface.

Do we have a high-confidence way to reproduce the issue?

Not applicable as a bug reproduction; this is a feature PR. Current main is list-only, and the inspected emulator screenshots show the after-change list, detail, copy, and system-back flows.

Is this the best way to solve the issue?

Yes, if Android product direction is accepted: using the existing cron.get RPC from Android runtime code is the narrow maintainable path. The safer alternative is to narrow which detail fields are shown if mobile cron payload/error visibility is not desired.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against d5371395218c.

Label changes

Label justifications:

  • P3: This is a useful Android settings usability feature with limited blast radius, not an urgent regression or blocked core runtime path.
  • merge-risk: 🚨 other: The PR adds a new mobile surface for detailed cron job payload/state visibility, a product/privacy acceptance risk that green CI does not settle.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The PR body includes inspected Android emulator screenshots showing the list, detail view, ID copy affordance with clipboard preview, and system-back return path after the change.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes inspected Android emulator screenshots showing the list, detail view, ID copy affordance with clipboard preview, and system-back return path after the change.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body includes inspected Android emulator screenshots showing the list, detail view, ID copy affordance with clipboard preview, and system-back return path after the change.
Evidence reviewed

PR surface:

Docs +2, Other +743. Total +745 across 7 files.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 0 0 0 0
Docs 1 2 0 +2
Config 0 0 0 0
Generated 0 0 0 0
Other 6 886 143 +743
Total 7 888 143 +745

What I checked:

Likely related people:

  • steipete: Live PR timeline shows steipete assigned and force-pushed the current head, and current main history/blame ties Peter Steinberger to the Android settings/runtime structure and cron.get gateway contract this PR extends. (role: current assignee and recent area contributor; confidence: high; commits: d2d5911c3296, fdc9aa82d785, 2b48e9814840; files: apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt, apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt, src/gateway/server-methods/cron.ts)
  • IWhatsskill: Commit-to-PR lookup ties the recent Android settings layout polish on current main to IWhatsskill, adjacent to the SettingsScreens.kt surface changed here. (role: recent Android settings contributor; confidence: medium; commits: 58bbf5a117eb; files: apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt)
  • obviyus: The contributor explicitly requested Android review from obviyus in the PR discussion, making them a likely review route for the Android UX/product surface even though local code history did not show recent matching commits. (role: requested Android reviewer; confidence: medium; files: apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt, apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. labels Jun 19, 2026
@Tosko4
Tosko4 force-pushed the feat/android-cron-detail-edit branch from 61a93c8 to e133964 Compare June 19, 2026 22:33
@Tosko4
Tosko4 marked this pull request as ready for review June 19, 2026 22:33
@Tosko4

Tosko4 commented Jun 19, 2026

Copy link
Copy Markdown
Contributor Author

Ready for Android review, @obviyus.

This is intentionally Android-only and read-only: Cron Jobs list rows now open a detail view through the existing cron.get RPC, the cron ID can be copied, Android system back returns to the Cron Jobs list, and stale cron.get responses are guarded. No gateway/protocol/edit/scope changes in this PR.

@Tosko4
Tosko4 force-pushed the feat/android-cron-detail-edit branch from e133964 to 330adba Compare June 19, 2026 22:39
@Tosko4

Tosko4 commented Jun 19, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added the merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. label Jun 21, 2026
@steipete steipete self-assigned this Jul 6, 2026
@steipete
steipete force-pushed the feat/android-cron-detail-edit branch from 330adba to d3b24c2 Compare July 6, 2026 04:54
@steipete
steipete force-pushed the feat/android-cron-detail-edit branch from d3b24c2 to 4b387e2 Compare July 6, 2026 04:59
@steipete
steipete force-pushed the feat/android-cron-detail-edit branch from 4b387e2 to e5906d0 Compare July 6, 2026 05:11
@steipete

steipete commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Land-ready maintainer rewrite completed.

  • Rebased onto current main and replaced the parallel detail fields with one closed detail state plus an atomic stale-response guard.
  • Preserved the existing 20-job list page, kept the screen read-only, and intentionally excluded command environment values from rendering.
  • Added focused parser, request-encoding, malformed-response, stale-selection, and command-environment regression coverage.
  • Sanitized AWS Crabbox run_3277cfe4bd2a passed testThirdPartyDebugUnitTest, testPlayDebugUnitTest, and assemblePlayDebug for the intended Android tree.
  • Native i18n inventory check passed. Exact prepared-head CI 28769321954 and Workflow Sanity 28769326508 passed for e5906d05a7fe140652ebb07633c68a9085dac836.
  • Three fresh GPT-5.5 autoreviews, including the final post-hardening review, found no actionable defects.

Contributor emulator evidence covers list, detail, copy-id, and system-back behavior. Source-blind interactive refresh/disconnect/race probes were unavailable; the focused unit tests cover those state transitions.

@steipete
steipete merged commit d924ddc into openclaw:main Jul 6, 2026
98 checks passed
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 6, 2026
* feat(android): add cron job detail view

* fix(android): harden cron job detail loading

* chore(android): refresh native i18n inventory

* test(plugins): register workboard typed hook

---------

Co-authored-by: Peter Steinberger <[email protected]>
giodl73-repo pushed a commit to giodl73-repo/openclaw that referenced this pull request Jul 8, 2026
* feat(android): add cron job detail view

* fix(android): harden cron job detail loading

* chore(android): refresh native i18n inventory

* test(plugins): register workboard typed hook

---------

Co-authored-by: Peter Steinberger <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: android App: android merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: XL status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants