Files
bot/docs/platforms/mac/webchat.md
zooqueenandHanzo Dev cbacae5efd chore: complete Hanzo Bot rebranding — purge all bot.molt legacy names
Replace all bot.molt.* identifiers with ai.hanzo.bot.* across:
- LaunchAgent labels (constants.ts + tests)
- iOS bundle IDs, dispatch queues, logger subsystems
- iOS fastlane Appfile (bot.molt.ios → ai.hanzo.bot.ios)
- iOS project.yml branding (display name → Hanzo Bot)
- macOS icon file rename (Bot.icns → HanzoBot.icns)
- appcast.xml title (Bot → Hanzo Bot)
- auto-response workflow (moltbook → off-topic)
- All English and Chinese documentation (32 doc files)
- scripts/restart-mac.sh launchd plist reference

Co-authored-by: Hanzo Dev <[email protected]>
2026-02-22 16:21:56 -08:00

1.3 KiB
Raw Permalink Blame History

summary, read_when, title
summary read_when title
How the mac app embeds the gateway WebChat and how to debug it
Debugging mac WebChat view or loopback port
WebChat

WebChat (macOS app)

The macOS menu bar app embeds the WebChat UI as a native SwiftUI view. It connects to the Gateway and defaults to the main session for the selected agent (with a session switcher for other sessions).

  • Local mode: connects directly to the local Gateway WebSocket.
  • Remote mode: forwards the Gateway control port over SSH and uses that tunnel as the data plane.

Launch & debugging

  • Manual: Bot menu → "Open Chat".

  • Auto‑open for testing:

    dist/Hanzo Bot.app/Contents/MacOS/Hanzo Bot --webchat
    
  • Logs: ./scripts/botlog.sh (subsystem ai.hanzo.bot, category WebChatSwiftUI).

How it’s wired

  • Data plane: Gateway WS methods chat.history, chat.send, chat.abort, chat.inject and events chat, agent, presence, tick, health.
  • Session: defaults to the primary session (main, or global when scope is global). The UI can switch between sessions.
  • Onboarding uses a dedicated session to keep first‑run setup separate.

Security surface

  • Remote mode forwards only the Gateway WebSocket control port over SSH.

Known limitations

  • The UI is optimized for chat sessions (not a full browser sandbox).