openclaw/apps/macos
Guillaume Nodet 479fc7450e macOS: fix voice wake crash in trimmedAfterTrigger
Fixed an index out of bounds crash in VoiceWakeRuntime.trimmedAfterTrigger that occurred when processing voice transcripts. The issue was caused by attempting to subscript a string with an index that could exceed the string's endIndex when using indices from a lowercased version of the string.

Added a guard statement to check that the index is within bounds before attempting to subscript the string. If the index is out of bounds, the function continues to the next trigger instead of crashing.

Fixes the crash reported in crash.txt at line 743.
2026-01-28 15:15:36 +01:00
..
Icon.icon refactor: rename clawdbot to moltbot with legacy compat 2026-01-27 12:21:02 +00:00
Sources macOS: fix voice wake crash in trimmedAfterTrigger 2026-01-28 15:15:36 +01:00
Tests/MoltbotIPCTests macOS: fix voice wake crash in trimmedAfterTrigger 2026-01-28 15:15:36 +01:00
Package.resolved chore: update Package.resolved after dependency resolution 2026-01-27 14:17:20 -06:00
Package.swift Mac: finish Moltbot rename 2026-01-27 14:12:17 -06:00
README.md Mac: finish Moltbot rename 2026-01-27 14:12:17 -06:00

Moltbot macOS app (dev + signing)

Quick dev run

# from repo root
scripts/restart-mac.sh

Options:

scripts/restart-mac.sh --no-sign   # fastest dev; ad-hoc signing (TCC permissions do not stick)
scripts/restart-mac.sh --sign      # force code signing (requires cert)

Packaging flow

scripts/package-mac-app.sh

Creates dist/Moltbot.app and signs it via scripts/codesign-mac-app.sh.

Signing behavior

Auto-selects identity (first match):

  1. Developer ID Application
  2. Apple Distribution
  3. Apple Development
  4. first available identity

If none found:

  • errors by default
  • set ALLOW_ADHOC_SIGNING=1 or SIGN_IDENTITY="-" to ad-hoc sign

Team ID audit (Sparkle mismatch guard)

After signing, we read the app bundle Team ID and compare every Mach-O inside the app. If any embedded binary has a different Team ID, signing fails.

Skip the audit:

SKIP_TEAM_ID_CHECK=1 scripts/package-mac-app.sh

Library validation workaround (dev only)

If Sparkle Team ID mismatch blocks loading (common with Apple Development certs), opt in:

DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh

This adds com.apple.security.cs.disable-library-validation to app entitlements. Use for local dev only; keep off for release builds.

Useful env flags

  • SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"
  • ALLOW_ADHOC_SIGNING=1 (ad-hoc, TCC permissions do not persist)
  • CODESIGN_TIMESTAMP=off (offline debug)
  • DISABLE_LIBRARY_VALIDATION=1 (dev-only Sparkle workaround)
  • SKIP_TEAM_ID_CHECK=1 (bypass audit)