Skip to content

Package the desktop Octos kernel and update hosted Rinx - #85

Closed
ymote wants to merge 2 commits into
mainfrom
fix/desktop-runtime-rinx-current
Closed

ymote wants to merge 2 commits into
mainfrom
fix/desktop-runtime-rinx-current

Conversation

@ymote

@ymote ymote commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Desktop already ships AI Providers, but without OCTOS_APP_CORE_BIN its kernel service cannot start. Add a build tool that stages the locked native Octos runtime beside the desktop executable and discovers that sibling automatically. Explicit overrides remain authoritative. Reused kernels must report the locked revision before replacing the prior runtime; the build records their SHA-256.

Advance the shared Desktop/Home/ROM Rinx pin to 197d517 (merged hagency-org/Rinx#27 and hagency-org/Rinx#33), including the system-app catalog and native article editor. Hosted Rinx uses this workspace's app broker, provider configuration and single kernel. Its standalone features remain disabled, and AppCard remains opt-in.

Validation on macOS:

  • Built the desktop with the packaged native runtime and OCTOS_APP_CORE_BIN unset, using the locked Octos a6ea850 binary. Rebuilt against main's Makepad 975c5630 and Glance merge 405139f.
  • 18 Python tests and 35 kernel/AI-host tests passed, including the real-kernel integration test; kernel all-targets clippy passed.
  • Offline packaged-runtime probe passed: automatic sibling discovery, two clients sharing a kernel, provider profile read, restart, and the changed provider visible after reconnect. Fixture keys only; no LLM request.
  • Hidden Makepad tests opened AI Providers, its host-owned Add model sheet, and hosted Rinx's sign-in screen. Captured and visually inspected them using fresh isolated profiles.
  • Desktop and Home default/mobile-apps compilation passed; host/Android dependency guards and setup --check --cargo passed.

The full clean release/kernel source-build path, Windows/Linux desktop runtime behavior, and a new phone/ROM device install are unverified. The builder creates a source-build layout, not a signed installer. Existing installed apps and user profiles were not changed.

Related: #70 retains the separate Android Back/theme changes. This PR advances Rinx beyond its current pin and does not change that branch.

@ymote
ymote marked this pull request as ready for review September 28, 2026 02:02
@ymote

ymote commented Sep 28, 2026

Copy link
Copy Markdown
Contributor Author

Rinx pin coordination: OctoSense will pin only merged Rinx commits, all PRs agree on Rinx main c8e92f7f (it includes Rinx#27, #33 and #34), and one PR moves the pin. That PR is #70: it moves Rinx to c8e92f7f together with App Hub 362d832f, which Rinx now needs; otherwise the phone build links two copies of octosense-app-policy. Please drop the Rinx pin change from this PR and rebase after #70 merges, keeping the desktop kernel-staging part. The desktop packaging work that is in progress will build on this PR's kernel staging instead of duplicating it.

@ymote

ymote commented Oct 1, 2026

Copy link
Copy Markdown
Contributor Author

Closing in favour of #94, which contains this PR's kernel packaging (the bundled-kernel lookup in launch.rs and build-desktop.py). Its Rinx bump is moot: main pins Rinx by tag (v1.1.0), and its [patch] is already on main.

🤖 Generated with Claude Code

@ymote ymote closed this Oct 1, 2026
ymote added a commit that referenced this pull request Oct 1, 2026
The desktop kernel service finds a packaged `octos-kernel[.exe]` beside
the shell executable when `OCTOS_APP_CORE_BIN` is unset
(crates/kernel/src/launch.rs), and tools/build-desktop.py builds the
locked kernel and stages it there.

Rebased onto main: the old hosted-Rinx revision is dropped (main pins
Rinx by tag v1.1.0 through native-apps.json) and so is the Cargo.toml
patch redirect, which main already carries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ymote

ymote commented Oct 1, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #256, which ports this PR's packaged-kernel lookup to current main with a launch-time revision and SHA-256 check (via tools/kernel-artifact.py --host --stage, so tools/build-desktop.py is no longer needed). The packaging that built on it is #257.

🤖 Generated with Claude Code

ymote added a commit that referenced this pull request Oct 2, 2026
…ision

The desktop's kernel service needed OCTOS_APP_CORE_BIN. It now also finds
a packaged `octos-kernel[.exe]` beside the shell executable (in a macOS .app,
Contents/MacOS or Contents/Resources), never in the working directory or on
PATH. Options::program and OCTOS_APP_CORE_BIN still win, unchecked, and a
broken override is an error rather than a fallback.

The packaged kernel runs only when its receipt `octos-kernel.json` names the
octos revision this build pins (crates/kernel/build.rs reads it from
Cargo.lock) and the binary's SHA-256 matches. A stale
target/release/octos-kernel from an earlier pin, a missing receipt or a
swapped binary is refused, and the reason reaches the person.
OCTOSENSE_KERNEL_ANY_REVISION=1 accepts another revision while developing;
the receipt and hash are still required. Resolving reads only the receipt
(it also answers status queries on the UI thread); the hash is checked in
launch::prepare on the kernel's runtime before each start, cached by size
and modification time.

tools/kernel-artifact.py --host --stage <dir> builds the pinned kernel and
stages it with that receipt, refusing a binary whose --version is not the
pinned revision (--kernel stages a prebuilt one). The host build passes
--target-dir instead of an `env` wrapper, so it runs on Windows too.

Replaces the kernel part of #85. Its Rinx pin and [patch] changes are
dropped: main pins Rinx v1.1.0 and the app contract from crates.io.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ymote added a commit that referenced this pull request Oct 2, 2026
… GPU timing, terminal shortcuts)

Makepad main 39a9de88 adds a hidden map's idle frame loop fix (#79),
Android HTTP without redirects (#75), the sheets font by crate (#80),
Linux GL remote grabs (#93), Android Vulkan without a debug messenger
(#92), the touch-down power hint (#83), GL GPU timing (#81), atlas text
on phones (#82), the DrawText current-list fix (#89), terminal keyboard
shortcuts (#76) and the terminal on OpenHarmony (#91), and OpenHarmony's
keyboard, Studio, GL lifetimes and idle frames (#84, #85, #88, #87),
through Octoscript-Makepad 62760863 (#70). makepad #90 is not in it.

- root Cargo.toml: makepad and octoscript-makepad revisions together;
  native-apps.json (Sheets, Terminal), regenerated pins unchanged otherwise
- both native-runtime.lock.json files
- runtime-patches.lock.json: the settings patch is rebased onto 39a9de88
  with the same added and removed lines; its touch-down line in
  MakepadActivity.java now sits next to #83's hint, and draw_text.rs
  context follows #87's cfg. The system-back, IME and two Windows patches
  reapply unchanged. The map, OpenHarmony GL-lifetime and DrawText patches
  are dropped: they are makepad #79, #88 and #89, now upstream. New tree
  976bf55b.
- Cargo.lock: unchanged
- the three pinned-hash docs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote added a commit that referenced this pull request Oct 2, 2026
…ision

The desktop's kernel service needed OCTOS_APP_CORE_BIN. It now also finds
a packaged `octos-kernel[.exe]` beside the shell executable (in a macOS .app,
Contents/MacOS or Contents/Resources), never in the working directory or on
PATH. Options::program and OCTOS_APP_CORE_BIN still win, unchecked, and a
broken override is an error rather than a fallback.

The packaged kernel runs only when its receipt `octos-kernel.json` names the
octos revision this build pins (crates/kernel/build.rs reads it from
Cargo.lock) and the binary's SHA-256 matches. A stale
target/release/octos-kernel from an earlier pin, a missing receipt or a
swapped binary is refused, and the reason reaches the person.
OCTOSENSE_KERNEL_ANY_REVISION=1 accepts another revision while developing;
the receipt and hash are still required. Resolving reads only the receipt
(it also answers status queries on the UI thread); the hash is checked in
launch::prepare on the kernel's runtime before each start, cached by size
and modification time.

tools/kernel-artifact.py --host --stage <dir> builds the pinned kernel and
stages it with that receipt, refusing a binary whose --version is not the
pinned revision (--kernel stages a prebuilt one). The host build passes
--target-dir instead of an `env` wrapper, so it runs on Windows too.

Replaces the kernel part of #85. Its Rinx pin and [patch] changes are
dropped: main pins Rinx v1.1.0 and the app contract from crates.io.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote added a commit that referenced this pull request Oct 2, 2026
… GPU timing, terminal shortcuts)

Makepad main 39a9de88 adds a hidden map's idle frame loop fix (#79),
Android HTTP without redirects (#75), the sheets font by crate (#80),
Linux GL remote grabs (#93), Android Vulkan without a debug messenger
(#92), the touch-down power hint (#83), GL GPU timing (#81), atlas text
on phones (#82), the DrawText current-list fix (#89), terminal keyboard
shortcuts (#76) and the terminal on OpenHarmony (#91), and OpenHarmony's
keyboard, Studio, GL lifetimes and idle frames (#84, #85, #88, #87),
through Octoscript-Makepad 62760863 (#70). makepad #90 is not in it.

- root Cargo.toml: makepad and octoscript-makepad revisions together;
  native-apps.json (Sheets, Terminal), regenerated pins unchanged otherwise
- both native-runtime.lock.json files
- runtime-patches.lock.json: the settings patch is rebased onto 39a9de88
  with the same added and removed lines; its touch-down line in
  MakepadActivity.java now sits next to #83's hint, and draw_text.rs
  context follows #87's cfg. The system-back, IME and two Windows patches
  reapply unchanged. The map, OpenHarmony GL-lifetime and DrawText patches
  are dropped: they are makepad #79, #88 and #89, now upstream. New tree
  976bf55b.
- Cargo.lock: unchanged
- the pinned-hash docs under phone/docs; rom/docs/home-build.md follows in
  its own change, so this one does not trigger rom.yml (whose jobs local
  CI cannot run)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote added a commit that referenced this pull request Oct 2, 2026
… GPU timing, terminal shortcuts)

Makepad main 39a9de88 adds a hidden map's idle frame loop fix (#79),
Android HTTP without redirects (#75), the sheets font by crate (#80),
Linux GL remote grabs (#93), Android Vulkan without a debug messenger
(#92), the touch-down power hint (#83), GL GPU timing (#81), atlas text
on phones (#82), the DrawText current-list fix (#89), terminal keyboard
shortcuts (#76) and the terminal on OpenHarmony (#91), and OpenHarmony's
keyboard, Studio, GL lifetimes and idle frames (#84, #85, #88, #87),
through Octoscript-Makepad 62760863 (#70). makepad #90 is not in it.

- root Cargo.toml: makepad and octoscript-makepad revisions together;
  native-apps.json (Sheets, Terminal), regenerated pins unchanged otherwise
- both native-runtime.lock.json files
- runtime-patches.lock.json: the settings patch is rebased onto 39a9de88
  with the same added and removed lines; its touch-down line in
  MakepadActivity.java now sits next to #83's hint, and draw_text.rs
  context follows #87's cfg. The system-back, IME and two Windows patches
  reapply unchanged. The map, OpenHarmony GL-lifetime and DrawText patches
  are dropped: they are makepad #79, #88 and #89, now upstream. New tree
  976bf55b.
- Cargo.lock: unchanged
- the pinned-hash docs under phone/docs; rom/docs/home-build.md follows in
  its own change, so this one does not trigger rom.yml (whose jobs local
  CI cannot run)

Co-Authored-By: Claude Opus 5.5 <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