Skip to content

Add shared OAuth services and connected App Hub app hosting - #347

Merged
ymote merged 10 commits into
mainfrom
feat/app-hub-connected-samples
Oct 7, 2026
Merged

ymote merged 10 commits into
mainfrom
feat/app-hub-connected-samples

Conversation

@ymote

@ymote ymote commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Ordinary App Hub apps can reuse host-owned GitHub/Google authorization and their declared tools against shared provider services. This supports GitHub Notes, Inbox Assistant and Google Calendar without introducing an OctoSense account. Existing system Mail and Calendar remain available.

The host owns credentials, scopes, account selection and revocation. Provider operations retain the calling app/account. Inbox completes durable incoming-mail events only after a consented peer records a quiet decision or persists a bound card. Failed turns release their lease and back off. Protected writes retain native review; model and remote inputs cannot approve sending.

Installed apps publish admitted Glance templates and reopen their originating app/event. Foreground workspaces retain drafts and own host review sheets. Modal review draws exclusively in its host isolate, preventing the underlying editor text from being batched above it, while preserving the resident app VM. Cancellation, collapse and cold restoration retain the original request and unsent draft. Notes now uses Rinx’s article writer layout: an icon header, desktop source/split/preview, phone bottom formatting, styles and native table picker. Its file caption and publish-position icon retain GitHub semantics. Failed draft loads cannot expose a blank editor that overwrites the retained note. Floating shell navigation hides throughout native IME display and returns at its prior dock. Android multiline Enter now finishes composition before inserting a newline, preserving the last word; ordinary soft-IME replacement is unchanged. ADR 0010 and bilingual guides document the boundaries.

Dependencies

  • App Hub #119 and #124 are integrated. App Hub crates are pinned to d6a14133527d803a26032550d50427c17d126ca4, which preserves legacy catalog parsing and accurately discloses network access through host services. Its full core suite passed 207 tests and the published-contract semver check passed 202 checks.
  • App Design Flow #154 contains the three samples, monitoring-status fix, soak drivers and original evidence.
  • Official signed publication of the three ymote previews is tracked separately in App Hub #125. Provider credentials and existing personal profiles are not included in either change.

Validation

Final head 84e3438b7ee25b43ba945bfe063db594a71e61ba includes current main and its Makepad/octos pins. Complete local CI passed on this exact clean head: all 45 steps across desktop, phone, apps and ROM, with no skipped or failed steps (44m 45s). This includes 959 shell tests, real-kernel two-lane/security checks, connected accounts, the Rinx editor, AppCard, ROM product tests and browser installer checks. The run used macOS; Linux-only behavior is covered separately by the successful GitHub services/kernel-security jobs. GitHub desktop, apps/services and ROM workflows also passed; its Home workflow was still building when the local run completed.

The normal production macOS package from this exact source passed the official signed Store journey for all three previews: Search → Get → permission review → Install → Open, local editing, and exact draft restoration after a full restart. Nine functional checks and six independently reviewed visual gates passed, including real Command-A replacement. The original captures and hashes are in App Hub #126. Fourteen read-only capture errors and one driver stop/resume are retained; there were zero input errors or uncertain input replays. This is not a clean instrumentation soak or live provider acceptance.

The app, kernel, ZIP, mounted DMG and evidence archive passed privacy scans. ZIP and mounted DMG match all 416 packaged files, with source-bound licensing notices included. The preview is not Developer ID signed or notarized.

Earlier focused and device evidence below remains bound to its recorded source; it is separate from the final production Store check.

48 OAuth tests and the explicitly run macOS vault test passed earlier. After the final editor and IME navigation changes, 956 shell tests, desktop checks with/without mobile apps, Home checks and both dependency graphs passed. The reusable editor also passed 3 unit tests and both wide/narrow native writer journeys. The later Java-only Enter patch passed 96 ROM tests, 18 setup tests, fixed-source/stack validation and native-app generation. Its regression reproduces the lost composing word before the fix and passes afterward.

Strict signed private-catalog install/reopen/tamper refusal passed for all three current bundles, including the changed Inbox digest. Hidden native Makepad acceptance uses actual installed apps and host services with synthetic provider HTTP/vault dependencies:

  • Notes: original Rinx native captures at matching window sizes guide the new writer. The complete 10-case installed provider journey passes. A 36-cycle/601.819s soak precedes the final rejected-load guard; the final source passes a separate 12-cycle/10.272s regression plus fault-injected oversized-draft recovery. Eight rich-edit/Undo/review/cancel rounds, two exact cold reopens and zero writes across these two soaks. Original older UI receipts remain historical.
  • Calendar: existing 8 installed checks plus 36 cycles over 620 seconds, 36 review cancellations, three synthetic saves/readbacks, three stale-ETag refusals and four cold restarts. Separate full-shell/DeepSeek receipts cover admitted tools and Glance routing.
  • Inbox: actual DeepSeek v4 Flash published a clinic card, kept a newsletter quiet and changed the shared reply from 9:00 to 10:30 Pacific. 33 functional cycles over 610 seconds and cold restart retained the exact draft; zero send attempts. Review overlap was repaired. Two explicit frame-submission acknowledgement errors remain in the final soak; no input was replayed and downstream state checks passed. This is not a clean rendering/instrument pass.
  • OnePlus 6: separate OctoSenseNotesTest APK with the Rinx layout; existing draft retained through update, actual soft Enter/text input, keyboard toolbar reachability, IME bubble suppression/restoration, preview and exact cold restart passed. The final signed bundle adds rejected-load protection. No configured GitHub connection or copied provider credentials. Original captures and APK/source hashes are recorded.

Original images were inspected independently from state assertions. Reproduction scripts, bilingual docs and allowlisted receipts retain failures and exact source/binary hashes. Changed-file privacy, syntax, links and diff checks passed. Measurements are instrument round trips, not FPS or physical display latency.

Preview limits

Memory increased in the finite soaks (Notes and Calendar provider hosts; Inbox full Shell); long-term stability remains unproven. The two Makepad frame-submission errors remain unresolved.

Live provider sign-in/read/write/send requires registered clients and user consent; none is claimed. Physical Gmail approval and MiniMax remain unverified. Android shared Google authorization still needs its native adapter; background lifecycle is unverified. Linux protocol/build checks passed but its native vault was unavailable/locked and no GUI was available. Windows cross-compilation was blocked by absent Windows SDK headers; native Windows execution and protected Gmail sending on Windows/Linux are unverified. No numeric UX or release score is claimed.

ymote added 3 commits October 6, 2026 18:22
Preserve the connected OAuth services, native Markdown editor, App Hub catalog compatibility pin, and macOS Select All fix while merging main 2baa5c1. Keep the desktop approval provenance and Android Enter overlays on the newer Makepad base; drop overlays already merged upstream.
@ymote

ymote commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

Local CI passed on 84e3438 (tools/ci-local.sh --only all, 44m45s, Darwin arm64).

GitHub would run for this PR: desktop.yml, phone.yml, apps.yml, rom.yml. Merged on this local pass (macOS runner queue); GitHub CI runs on the merge commit on main.

Job Step Result Time
ci-local / drift The local mapping fits the workflows PASS -
desktop.yml / desktop Prepare the pinned framework sources PASS 12s
desktop.yml / desktop Compile the desktop with the shared runtime PASS 7m23s
desktop.yml / desktop One copy of every shell source PASS -
desktop.yml / desktop Desktop tools and scripts PASS 31s
desktop.yml / desktop One Makepad, App Hub, octos and Rinx in the locked graph PASS 11s
desktop.yml / desktop The native apps' generated places match native-apps.json PASS 0s
phone.yml / home Prepare pinned sources and the reviewed runtime patch PASS 2s
phone.yml / home Validate launcher icons and Apple asset catalogs PASS 7s
phone.yml / home Compile Home and its bundled modules PASS 4m04s
phone.yml / home Verify the single runtime graph PASS 2s
phone.yml / home The native apps' generated places match native-apps.json PASS 0s
phone.yml / home The pinned octos revision PASS 0s
phone.yml / home Build octos (unless cached) PASS -
phone.yml / home Build Home, App Hub admission and runtime policy tests PASS 5m12s
phone.yml / home Test Home, App Hub admission and runtime policy PASS 12m44s
phone.yml / home Two-lane scenario (real kernel, scripted model) PASS 37s
apps.yml / services python3 tools/setup.py PASS 1s
apps.yml / services Kernel service PASS 56s
apps.yml / services App peers PASS 45s
apps.yml / services AI providers config PASS 10s
apps.yml / services Connected provider protocols and Linux host adapter PASS 30s
apps.yml / services L0 in-card chat (sys.chat, host side) PASS 22s
apps.yml / services System toolbox (workflow templates) PASS 2m54s
apps.yml / kernel-security python3 tools/setup.py PASS 1s
apps.yml / kernel-security The pinned octos revision PASS 0s
apps.yml / kernel-security Build octos (unless cached) PASS -
apps.yml / kernel-security Real-kernel tests PASS 34s
apps.yml / apps python3 tools/setup.py PASS 1s
apps.yml / apps Host services (Mail, AI providers, News) PASS 1m41s
apps.yml / apps Connected accounts and Rinx editor PASS 1m13s
apps.yml / apps Shell AI services (crates/ai-host) PASS 3m02s
apps.yml / apps AppCard runtime setup safeguards PASS 0s
apps.yml / apps AppCard clippy (own crates; shared runtime compiles) PASS 22s
apps.yml / apps AppCard transport and store PASS 16s
apps.yml / apps One Makepad, App Hub, octos and Rinx in the locked graph PASS 3s
rom.yml / product python3 -m unittest discover -s tests -v PASS 36s
rom.yml / product Check generated Agent Binder client PASS 0s
rom.yml / product bash -n scripts/stage-forks.sh scripts/publish-release.sh scripts/apply-to-tree.sh scripts/build-rom.sh PASS -
rom.yml / web-installer npm ci --ignore-scripts --no-audit --no-fund PASS 5s
rom.yml / web-installer npm test PASS 1s
rom.yml / web-installer npx playwright install --with-deps chromium PASS 1s
rom.yml / web-installer npm run test:browser PASS 4s
rom.yml / web-installer python3 -m unittest discover -s tests -p test_installer_manifest.py -v PASS 0s
rom.yml / web-installer bash -n scripts/release.sh PASS -

Notes:

  • GitHub runs Python 3.12; this run used Python 3.9.6
  • apps.yml:services runs on ubuntu-latest in GitHub; here on macOS, so #[cfg(target_os = "linux")] code in it is not exercised (--linux-host runs it on Linux)
  • apps.yml:kernel-security runs on ubuntu-latest in GitHub; here on macOS, so #[cfg(target_os = "linux")] code in it is not exercised (--linux-host runs it on Linux)

@ymote
ymote merged commit eb4202c into main Oct 7, 2026
7 checks passed
@ymote

ymote commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

Merge-gate note: GitHub refused the unified diff because it exceeds its 20,000-line limit. The repository merge helper was run with only its changed-file inventory call adapted to the paginated pull-request files API. The returned file count was checked against the PR metadata, with no duplicates. The helper's exact-head, clean-tree, workflow coverage, no-skip/no-failure, current-main ancestry and red-main checks all passed unchanged. All 45 local CI steps passed on 84e3438b7ee25b43ba945bfe063db594a71e61ba.

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