Skip to content

feat(android): add Skill Workshop settings panel#101911

Merged
steipete merged 7 commits into
openclaw:mainfrom
snowzlmbot:android-skill-workshop-settings
Jul 9, 2026
Merged

feat(android): add Skill Workshop settings panel#101911
steipete merged 7 commits into
openclaw:mainfrom
snowzlmbot:android-skill-workshop-settings

Conversation

@snowzlmbot

@snowzlmbot snowzlmbot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

What Problem This Solves

Android Settings did not expose the Skill Workshop review queue, so mobile users could not inspect generated skill proposals or perform the same core proposal lifecycle actions available from the Web UI. This left proposal review dependent on desktop/Web access even when the Android app was already connected to a Gateway.

Summary

  • Add a dedicated Android Settings > Skill Workshop panel for proposal review.
  • Load proposal lists and details through existing Gateway skills.proposals.* RPCs with agent-scope support.
  • Auto-load selected proposal details to match Web controller behavior.
  • Support pending proposal lifecycle actions from mobile: apply, reject, and quarantine.
  • Gate apply/reject/quarantine on granted operator.admin scope in both UI and runtime paths.
  • Serialize inspect/mutation state so stale responses and rapid taps cannot restore an obsolete proposal or strand the UI busy.
  • Add Settings home summary counts and filtering/search/admin/busy-state coverage.

Implementation Notes

  • The Android UI uses a mobile list/detail layout rather than the Web desktop board layout.
  • No new Gateway API, config, dependency, storage, or protocol surface is introduced.
  • Gateway responses are guarded by agent scope, connection generation, and request generation.
  • Lifecycle actions use a closed action type and advance generations only after work actually starts.
  • GatewayHelloSummary carries granted auth role/scopes so Android fails closed without operator.admin.
  • Setup-code bootstrap handoff remains least-privilege and does not persist operator.admin.

Evidence

  • Final reviewed PR head: f0dabe5ea696cd5a48f69ce5ed51bd40a33401df.
  • Exact-head CI: https://github.com/openclaw/openclaw/actions/runs/29012926945
  • git diff --check — passed.
  • Android ktlint formatting — passed.
  • Play and third-party focused runs of SkillWorkshopAgentScopeRuntimeTest and ShellScreenLogicTest — passed.
  • Native i18n inventory regeneration/check — passed with no residual drift.
  • A broader local Play run completed 1,026 tests with two unrelated GatewaySessionInvokeTest timing failures; both exact failures passed on immediate isolated rerun.
  • Autoreview found an inspect/mutation race and a second-order busy-generation cleanup bug. Both were fixed; fresh local and whole-branch autoreviews are clean.

Real Media Evidence

The contributor’s real-Gateway Android proof predates the maintainer concurrency-only follow-up but covers the unchanged visible list/detail/action surface:

The workflow built the Gateway and Android app from the reviewed feature branch, started a temporary real Gateway, created a pending proposal, launched Android through the normal launcher, connected through the normal app shell, and captured the proposal list, detail/support content, and lifecycle controls. Screenshot fixture mode was not used.

Risk

  • Moderate Android Settings/RPC surface change, isolated to existing Skill Workshop Gateway methods.
  • Proposal mutation actions fail closed without operator.admin and remain gateway-authorized.
  • Request generations prevent stale agent/detail/action responses from replacing current state.
  • No dependency, workflow, release, config, storage, or Gateway API changes.

Release Note

Android Settings now includes Skill Workshop proposal review, inspection, filtering, and scope-gated apply/reject/quarantine actions. Thanks @snowzlmbot.

@openclaw-barnacle openclaw-barnacle Bot added app: android App: android size: XL triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence. labels Jul 7, 2026
@snowzlmbot
snowzlmbot force-pushed the android-skill-workshop-settings branch from 34337b6 to 3aeb80c Compare July 7, 2026 23:41
@clawsweeper

clawsweeper Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed July 9, 2026, 7:05 AM ET / 11:05 UTC.

Summary
The PR adds an Android Settings > Skill Workshop screen that lists, filters, inspects, and admin-gates apply/reject/quarantine proposal actions through existing Gateway proposal RPCs, with Android runtime state and tests.

PR surface: Docs +1, Other +1935. Total +1936 across 10 files.

Reproducibility: not applicable. this is a feature PR rather than a bug report. Current main has no Android SkillWorkshop symbols, and the PR proof shows the new real-Gateway Android UI path.

Review metrics: 1 noteworthy metric.

  • Admin-gated Android actions: 3 exposed, 0 new Gateway methods. Apply, reject, and quarantine now appear in Android but call existing operator.admin Gateway methods, so maintainers should notice the security boundary before merge.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🐚 platinum hermit ✨ 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:

  • Refresh the branch against current main and land from the final merge-result checks if maintainers accept the Android admin controls.

Risk before merge

  • [P1] Merging intentionally adds an Android path to existing admin-scoped Skill Workshop lifecycle actions; the server still enforces operator.admin, but maintainers should explicitly accept exposing those controls on mobile.
  • [P1] GitHub reports the branch as mergeable but behind current main, so final landing should use the refreshed merge result and exact-head checks.

Maintainer options:

  1. Accept the gated mobile admin surface (recommended)
    Merge once maintainers are comfortable that Android should expose apply/reject/quarantine behind both server authorization and the client operator.admin gate.
  2. Narrow to read-only Skill Workshop
    If mobile mutation controls are not desired yet, keep list/inspect and remove the Android action buttons and mutation calls from this PR.

Next step before merge

  • Manual review is appropriate because the patch appears technically ready, but the remaining decision is whether maintainers want Android to expose admin-scoped Skill Workshop lifecycle controls and how to land the behind branch.

Maintainer decision needed

  • Question: Should Android Settings expose full Skill Workshop lifecycle actions, including apply/reject/quarantine, or should this mobile panel stay read-only for now?
  • Rationale: The code path appears correctly gated and proven, but exposing proposal mutation controls on Android is a product/security-boundary choice rather than a mechanical bug fix.
  • Likely owner: steipete — They authored the latest lifecycle-action follow-up commits on this PR and are the strongest observed owner signal for the Android admin-control decision.
  • Options:
    • Accept gated lifecycle controls (recommended): Land the feature with list, inspect, apply, reject, and quarantine available only when the connected session has operator.admin.
    • Ship review-only first: Keep list and inspect on Android now, and defer mobile proposal mutations until maintainers explicitly want the admin controls there.

Security
Cleared: The diff touches an admin-sensitive Android path, but it adds no dependencies, workflows, lockfiles, or secret handling and keeps proposal mutations behind existing server authorization plus a runtime/UI operator.admin gate.

Review details

Best possible solution:

If maintainers accept the Android admin surface, land the current Android-owned implementation while preserving the existing skills.proposals.* RPC contract, server authorization, and runtime/UI operator.admin gates.

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

Not applicable; this is a feature PR rather than a bug report. Current main has no Android SkillWorkshop symbols, and the PR proof shows the new real-Gateway Android UI path.

Is this the best way to solve the issue?

Yes, pending maintainer product acceptance: the implementation uses Android-owned UI/runtime state and existing skills.proposals.* methods instead of adding new protocol, config, storage, or dependency surface.

AGENTS.md: found and applied where relevant.

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

Label changes

Label changes:

  • add merge-risk: 🚨 security-boundary: The PR exposes existing Skill Workshop proposal mutation actions in Android, so a bad merge could weaken the operator.admin boundary even though this implementation appears gated.
  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR body and downloaded artifact summary/screenshots show a real Android Play build connected to a temporary real Gateway and rendering the Skill Workshop proposal list, detail, support-file content, and admin controls; no contributor action is needed for proof.
  • add proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body and downloaded artifact summary/screenshots show a real Android Play build connected to a temporary real Gateway and rendering the Skill Workshop proposal list, detail, support-file content, and admin controls; no contributor action is needed for proof.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The PR body and downloaded artifact summary/screenshots show a real Android Play build connected to a temporary real Gateway and rendering the Skill Workshop proposal list, detail, support-file content, and admin controls; no contributor action is needed for proof.

Label justifications:

  • P2: This is a bounded Android platform-parity feature with tests and proof, not an urgent regression or release blocker.
  • merge-risk: 🚨 security-boundary: The PR exposes existing Skill Workshop proposal mutation actions in Android, so a bad merge could weaken the operator.admin boundary even though this implementation appears gated.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit 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 and downloaded artifact summary/screenshots show a real Android Play build connected to a temporary real Gateway and rendering the Skill Workshop proposal list, detail, support-file content, and admin controls; no contributor action is needed for proof.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body and downloaded artifact summary/screenshots show a real Android Play build connected to a temporary real Gateway and rendering the Skill Workshop proposal list, detail, support-file content, and admin controls; no contributor action is needed for proof.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body and downloaded artifact summary/screenshots show a real Android Play build connected to a temporary real Gateway and rendering the Skill Workshop proposal list, detail, support-file content, and admin controls; no contributor action is needed for proof.
Evidence reviewed

PR surface:

Docs +1, Other +1935. Total +1936 across 10 files.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 0 0 0 0
Docs 1 1 0 +1
Config 0 0 0 0
Generated 0 0 0 0
Other 9 2151 216 +1935
Total 10 2152 216 +1936

Acceptance criteria:

  • [P1] gh pr checks 101911 --repo openclaw/openclaw --watch=false.
  • [P1] Verify android-build-play, android-test-play, android-test-third-party, android-ktlint, and native-i18n pass on the refreshed head.

What I checked:

  • Repository policy read: Root AGENTS.md and apps/android/AGENTS.md were read fully; the review applied the PR/security-boundary guidance and the Android scoped guardrails. (AGENTS.md:1, c067802cda3a)
  • Current main gap: Current main has no Android SkillWorkshop symbols under the Android main/test sources, so the central feature is not already implemented on main. (c067802cda3a)
  • Live PR surface: Live GitHub PR file metadata reports the actual 10-file Android/i18n/README/test surface; the branch is mergeable but behind current main. (f0dabe5ea696)
  • Android runtime implementation: NodeRuntime loads list/inspect data through existing skills.proposals RPCs and checks operator.admin before mutation calls. (apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt:3858, f0dabe5ea696)
  • Auth scope handling: GatewaySession carries granted auth scopes into the Android runtime and deliberately filters setup-code bootstrap handoff scopes so operator.admin is not persisted through least-privilege onboarding. (apps/android/app/src/main/java/ai/openclaw/app/gateway/GatewaySession.kt:886, f0dabe5ea696)
  • Existing Gateway contract: Core descriptors and the Skill Workshop docs already define list/inspect as operator.read and apply/reject/quarantine as operator.admin, so the PR uses existing protocol surface. (src/gateway/methods/core-descriptors.ts:142, f0dabe5ea696)

Likely related people:

  • steipete: Authored the current-head commits that serialize Skill Workshop lifecycle actions and refresh native i18n after review feedback. (role: recent PR maintainer and likely follow-up owner; confidence: high; commits: 4a0b0b31a9c0, f0dabe5ea696; files: apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt, apps/.i18n/native-source.json)
  • Solvely-Colin: Live PR metadata lists this person as the current assignee for the Android Skill Workshop feature review. (role: assigned reviewer; confidence: medium; files: apps/android/app/src/main/java/ai/openclaw/app/ui/SkillWorkshopSettingsScreen.kt, apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt)
  • mahmoud: In this shallow/grafted checkout, blame on current main attributes adjacent Android settings and Skill Workshop RPC lines to commit 32510a3; this is useful only as a low-confidence routing signal. (role: recent adjacent contributor; confidence: low; commits: 32510a3225b8; files: apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt, ui/src/pages/skill-workshop/proposals.ts, src/gateway/server-methods/skills.ts)
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.
Review history (24 earlier review cycles; latest 8 shown)
  • reviewed 2026-07-08T09:00:00.377Z sha 8c9fb6f :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-08T10:37:18.338Z sha f482450 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-08T11:05:30.729Z sha f482450 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-08T11:15:04.524Z sha f482450 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T02:10:51.141Z sha d4c01ef :: needs real behavior proof before merge. :: [P2] Refresh the native i18n inventory for new Android copy
  • reviewed 2026-07-09T02:45:49.492Z sha d4c01ef :: needs real behavior proof before merge. :: [P2] Refresh the native i18n inventory
  • reviewed 2026-07-09T07:59:05.700Z sha e10f366 :: needs changes before merge. :: [P2] Split the enum constructor onto multiple lines
  • reviewed 2026-07-09T09:48:30.106Z sha 885879d :: needs maintainer review before merge. :: none

@openclaw-barnacle openclaw-barnacle Bot removed the triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence. label Jul 7, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. labels Jul 7, 2026
@snowzlmbot
snowzlmbot force-pushed the android-skill-workshop-settings branch 5 times, most recently from 4c3f1d1 to f11bbb2 Compare July 8, 2026 00:36
@clawsweeper clawsweeper Bot removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jul 8, 2026
@snowzlmbot

This comment was marked as outdated.

@clawsweeper

clawsweeper Bot commented Jul 8, 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 rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jul 8, 2026
@snowzlmbot

This comment was marked as off-topic.

@clawsweeper clawsweeper Bot added the proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. label Jul 8, 2026
@snowzlmbot
snowzlmbot force-pushed the android-skill-workshop-settings branch 2 times, most recently from e4c6d2e to b2bfd3b Compare July 8, 2026 02:55
@clawsweeper clawsweeper Bot removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. labels Jul 8, 2026
@snowzlmbot
snowzlmbot force-pushed the android-skill-workshop-settings branch from b2bfd3b to c2beff5 Compare July 8, 2026 03:10
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Jul 8, 2026
@snowzlmbot

This comment was marked as outdated.

@clawsweeper

clawsweeper Bot commented Jul 8, 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.

@snowzlmbot
snowzlmbot force-pushed the android-skill-workshop-settings branch from 8c9fb6f to f482450 Compare July 8, 2026 10:25
@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. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. labels Jul 8, 2026
@snowzlmbot

This comment was marked as outdated.

@clawsweeper

clawsweeper Bot commented Jul 8, 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 rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. labels Jul 8, 2026
@Solvely-Colin Solvely-Colin self-assigned this Jul 8, 2026
@clawsweeper

clawsweeper Bot commented Jul 9, 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.

@steipete

steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Merged via squash.

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: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. P2 Normal backlog priority with limited blast radius. 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.

3 participants