Skip to content

Ben/skill file uploader - #8

Open
vahid-ai wants to merge 26 commits into
EthereumPhone:mainfrom
vahid-ai:ben/skill-file-uploader
Open

Ben/skill file uploader#8
vahid-ai wants to merge 26 commits into
EthereumPhone:mainfrom
vahid-ai:ben/skill-file-uploader

Conversation

@vahid-ai

Copy link
Copy Markdown

No description provided.

vahid-ai and others added 26 commits March 12, 2026 01:51
Addresses findings from SECURITY_AUDIT.mdx:
- Fix hostname verifier to use platform default when not pinning (GatewayTls)
- Escape shell metacharacters in WiFi SSID/password (ConnectivitySkill)
- Disable ADB backup (allowBackup=false) and add proper exclusion rules
- Change FLAG_MUTABLE to FLAG_IMMUTABLE on PendingIntents (Termux, Aurora)
- Remove wallet addresses from log statements (MessengerSkill)
- Add caller UID validation to AiNameProvider ContentProvider
- Add manifest-level permission to exported HeartbeatBindingService and LauncherBindingService

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix critical and high security audit findings
…ras, RUN_COMMAND permission not requested at runtime

Problems found:
1. TermuxCommandRunner used PendingIntent.FLAG_IMMUTABLE which silently
   drops fill extras on API 31+. Termux sends stdout/stderr/exitCode
   via PendingIntent.send(ctx, code, fillIntent), but with IMMUTABLE
   the fillIntent extras are ignored — so the result callback always
   arrived with empty stdout, empty stderr, and exitCode -1.

2. com.termux.permission.RUN_COMMAND is declared as a dangerous (runtime)
   permission by Termux, not a normal/install-time permission. Declaring
   it in AndroidManifest.xml alone is insufficient — it must be granted
   at runtime like camera or contacts permissions.

3. The Termux diagnostic in debug settings only showed "non-zero exit
   code" without checking the internalError field, RUN_COMMAND permission
   status, or service resolution — making it hard to diagnose failures.

Fixes:
- Change FLAG_IMMUTABLE to FLAG_MUTABLE in TermuxCommandRunner so
  Termux result extras (stdout, stderr, exitCode) are delivered
- Add requiredPermissions = ["com.termux.permission.RUN_COMMAND"] to
  TermuxSkill's termux_run_command tool so the app's permission flow
  requests it automatically before execution
- Improve Termux debug diagnostic: check RUN_COMMAND permission grant
  status, verify RunCommandService resolves, show internalError field,
  provide specific failure guidance for common issues
- Add TermuxConnectionTest instrumented test that isolates each failure
  point: installation, permission, service resolution, broadcast
  roundtrip, FLAG_IMMUTABLE extras bug, and end-to-end command execution
- Make chat submit button blue when idle (minor UI change)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The diagnostic tried to access Termux's private data dir
(/data/data/com.termux/) which the shell user (uid 2000) cannot
read. The old code did a raw `ls` with no privilege escalation;
the updated code used `run-as com.termux` which only works for
debuggable apps (release Termux isn't debuggable).

Now the diagnostic: verifies Termux is installed via `pm path`,
tries `run-as` first at adb level, falls back to direct execution
for permissive SELinux / custom ROMs, and gives clear actionable
guidance when all strategies fail instead of a dead-end error.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add navigationBarsPadding() to ChatScreen and DgenBackNavigationBackground
so content respects the device nav bar dynamically across all screen sizes
and navigation modes. Replace hardcoded 32dp bottom padding in ChatInputBar
with 8dp since insets are now handled by the parent.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Redesign the app's theme system around Material 3 color roles with
blue (#2196F3) as primary, pure black backgrounds, and white text.
Replace dgen library theme imports with local compat aliases mapped
to M3 equivalents. Update typography to use SansSerif across all M3
slots. Tone down ChadBackground effects for a cleaner look.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace dgen SystemColorManager with MaterialTheme.colorScheme.primary
across all screens. Change text colors, icon tints, cursor colors, and
input field text from white to blue (#2196F3). Remove SystemColorManager
refresh calls that are no longer needed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…e setup

- Add GitHub Actions workflow that builds signed release + debug APKs on
  tag push or manual trigger with auto-versioning
- Fix release build by adding empty-string DEBUG_* buildConfigField
  defaults to the release build type
- Rewrite README build/release sections with end-to-end setup guide
  covering local builds, signing, GitHub Secrets, and CI releases
- Add troubleshooting section for common build and release errors

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add CI release workflow and build/release documentation
Filter tags with v*.*.* instead of v* so single-number tags (v19, v18,
etc.) are ignored during auto-versioning.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Use v*.*.* glob to skip non-semver tags (v19, v18, etc.)
- Use printf instead of heredoc to avoid leading whitespace in property keys

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…lchain

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The free GitHub runner (7GB RAM) was running out of memory building both
release and debug APKs in parallel with only 2GB heap for R8 minification.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fix release workflow and update README
Allow users to enter any OpenRouter model ID via a new "Add Custom Model"
button in the model selection screen. Custom models are persisted, shown
in the dropdown, and passed directly to the OpenRouter API.

Refactored AgentLoop to accept modelId/maxTokens strings instead of the
AnthropicModels enum so arbitrary model IDs work end-to-end.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add custom OpenRouter model support
Adds an "Upload" button in Settings > Registered Skills that opens a
file picker to select a .md skill file from the device. The file is
parsed for its frontmatter name, saved to the ClawHub managed skills
directory, and registered through the same pipeline as ClawHub downloads
so it immediately appears with enable/disable toggle.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant