Mobile: Scaffold dual-runtime foundation / 移动端:搭建双运行时基础#6633
Draft
SivanCola wants to merge 6 commits into
Draft
Conversation
Add the mobile foundation: versioned MobileEnvelope, mobilecore JSON SDK, reasonix node multi-session hub, and a Capacitor-ready React shell with platform chrome (iOS/Android), SessionBackend, and local/remote create flow. Cache-impact: none (new packages only; no provider/system/tool schema changes) Cache-guard: local capability order frozen at session create; covered by protocol/mobilecore tests System-prompt-review: n/a — no system prompt changes
Polish the mobile shell with platform motion, a pairing bottom sheet that renders QR/URI payloads and persists fingerprints, and a risk-aware approval sheet with long-press allow for dangerous writes.
Wire a dedicated CI job that gofmt/vets/tests mobileprotocol, mobilecore, and node, then runs npm ci/typecheck/test/build under mobile/. Document the local make mobile-ci mirror.
- Session panes had no layout rules below 900px, so the pane height collapsed to content: the chat composer floated mid-screen, the Android FAB sat mid-screen, and long session lists were clipped by the overflow:hidden root with no way to scroll. Base-layer flex rules now size both panes at every width. - The tablet split view was dead CSS: .app-body > .sessions-root (0-2-0) always beat the media query's .sessions-split display:grid (0-1-0), stacking the panes vertically. The grid rule now matches that specificity. - riskFromTool/isDangerousWrite used \b keyword checks, but \b does not break at underscores, so snake_case tools (delete_file, write_file) always classified as low risk and the long-press allow flow was unreachable. Separators are normalized to spaces before matching; covered by new approval.test.ts wired into npm test. - Composer Enter now ignores IME composition (isComposing) so committing a CJK candidate no longer sends the draft.
# Conflicts: # .github/workflows/ci.yml
| const send = useCallback(async () => { | ||
| if (!active || !activeBackend || !draft.trim() || sending) return; | ||
| const text = draft.trim(); | ||
| const sessionId = active.id; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
mobilecorefoundation.reasonix nodefoundation with replay and deduplication primitives for phone-to-computer/server connections.Current scope
This draft establishes the mobile architecture, protocol, documentation, and UI foundation. Provider streaming and controller wiring, authenticated/encrypted remote pairing, native iOS/Android projects, secure credential storage, relay/push delivery, device testing, and store packaging remain follow-up work. This is not production-ready yet.
Compatibility
reasonix serveSessionDescriptorValidation
make mobile-cigo run github.com/rhysd/actionlint/cmd/actionlint@v1.7.7 .github/workflows/ci.ymlgit diff --cached --checkCache-impact: none; this draft adds isolated mobile packages and does not change existing provider requests, system prompts, or tool schemas.
Cache-guard: local capability order is frozen and covered by focused protocol/mobilecore tests; provider-visible byte guards will be added when provider wiring lands.
System-prompt-review: n/a; no system prompt changes.