Repository navigation
OctosCode as a native app: a kernel port in the coding scope - #341
Merged
Merged
Conversation
ymote
force-pushed
the
feat/octoscode-native
branch
from
October 6, 2026 22:19
c7c1051 to
e2e2f1c
Compare
ymote
force-pushed
the
feat/octoscode-native
branch
from
October 7, 2026 00:33
e2e2f1c to
38961f1
Compare
ymote
added a commit
that referenced
this pull request
Oct 7, 2026
The org-wide makepad release after makepad #99-#101, through Octoscript-Makepad aa80f72c (#78): - #99 and #100 are the Calculator relayout and the Terminal's own agent this repository carried as runtime patches. Their patches go: makepad main now has them, byte for byte. - #101 adds ai-services' ui_port, the kernel port an app that is itself an octos client opens. Nothing here uses it yet; #341 does. Octoscript-Makepad main now carries the Mail draft and review capabilities this repository already pinned by branch (#75, Octoscript 2e37d9e6, OctoScript #58), and OctosCode's measured-design lowering (#77). #77 gives the L0 node attributes a right inset, so AppCard's evaluator reads `padright` too. The remaining stacked patches reapply unchanged; the stack's tree is 07accf83. AppCard's own native-runtime.lock.json, which still named 2cc5ef37, names the same release as the root again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote
force-pushed
the
feat/octoscode-native
branch
3 times, most recently
from
October 8, 2026 03:55
976eef2 to
16ad0d4
Compare
OctosCode (octos-org/octoscode-app) is itself an octos client. Inside OctoSense it gets no listener, no token and no pairing. Instead it opens a kernel port that the shell's router holds to a coding scope (ADR 0003, item 9; the person chose this over host authority and over a new octos token). - makepad #101 (in makepad main 68d1f4ec, #349): Makepad's `OctosUiPort`, parked for the host the way a peer link is. - Kernel router: scoped consumers. - Each request of a scoped consumer is checked first, and a refused one is answered by the router (`scope_denied`) and logged. - A session's frames wait for the scope's preparation (its exact tool list). - The consumer hears only its own sessions; a host-only frame about one of them goes to the shell instead. - Results pass the scope's filter, and so do the notifications it lets through (`Scope::rewrite`): octos repeats an opened session as a `session/open` notification with its whole capability list. - The consumer may answer only the kernel requests it was sent. - `serve_scoped` runs a port on the kernel's runtime, with `Reset` on a kernel restart. - Shell: the module host claims ports per isolate, as it does peer links. native-apps.json `kernel: "coding"` grants one; any other port is closed with the reason. The coding scope (`coding_scope.rs`): - own sessions: `_main:api:code-<id>`, no topic, profile `_main`; - folders: its jail, or under a granted read-write root (home on a desktop), never OctoSense's or the kernel's data, a hidden top-level folder, or a folder holding any of them; - a coding client's methods only, and every list of supported methods it is told is trimmed to those; - each session's tool list is octos's external-turn list, so no command runs. - Module host: point the preludes' `theme` at `mod.theme` before a module registers. A styled isolate's diverged, so a module's own theme roles never reached its widgets. - OctosCode's entry: octoscode-app main f8561625 (#4; #7 builds it on the same makepad, Octoscript-Makepad, Octoscript and octos as this repository), default on desktop and phone, `home:rw`, `kernel: coding`. octoscript-render is patched to `.sources` like the rest of Octoscript-Makepad, whose pin #349 moved. - Docs: ADR 0003 item 9; the architecture guides (App ↔ kernel, the native apps table); the README dependency table; AGENTS.md. Tests: - router 11, coding scope 4, module ports 2, kernel 62; tools 115; - desktop shell 857 passed; phone shell 946 passed, including the reserved-name test (App Hub 7bb63ff9's contract reserves `octoscode`). Verified in a hidden desktop shell (octos 39e22d45, OctosCode f8561625): - the port was granted; both `session/open` frames list 53 methods; - a `code-…` session in the picked folder ran read_file; - answers streamed in full and the strip returned to Ready; - the model picker lists the providers' models but cannot switch them (`profile/llm/select` changes the profile's model; Setup owns it). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d6415f) Main moved to octos b0759a57 (#357) and makepad 32d6415f + Octoscript-Makepad 33dea2f1 (#363) after this PR was written, and octoscode-app f8561625 still pinned octos 39e22d45, so the graph held two octos. octoscode-app#8 moves the app's runtime to main's, and the module pin follows it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote
force-pushed
the
feat/octoscode-native
branch
from
October 8, 2026 05:31
16ad0d4 to
f942473
Compare
ymote
marked this pull request as ready for review
October 8, 2026 05:31
Contributor
Author
|
Local CI passed on f942473 ( GitHub would run for this PR: desktop.yml, phone.yml, apps.yml. Merged on this local pass (macOS runner queue); GitHub CI runs on the merge commit on main.
Notes:
|
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.
OctosCode (octos-org/octoscode-app) becomes a native app on desktop and phone, paired with OctoSense's own kernel automatically. Following the person's decision ("A"), it gets a kernel port held to a coding scope: no listener, no token, no pairing. The alternatives were host authority, or a new octos token class.
Design: ADR 0003, item 9 (in this PR)
OctosUiPort(makepad Desktop: host Rinx as the linked module it is #101, in makepad main 68d1f4ec since Repin makepad to main 68d1f4ec and Octoscript-Makepad to aa80f72c #349).octosense_kernel::serve_scopedconnects it as one more consumer of the private pipe, and sendsReseton a kernel restart."kernel": "coding"gets a port.crates/kernel/src/router.rsholds a scoped consumer to itsScope:session/tool_list/set);Scope::rewrite): octos repeats an opened session as asession/opennotification with its whole capability list;crates/shell/src/coding_scope.rs)._main:api:code-<id>, no topic, profile_main.rwroot (home on a desktop), never OctoSense or kernel data, hidden top-level folders, or a folder holding them.themeatmod.themebefore a module registers. A styled isolate's diverged, so a module's own theme roles never reached its widgets.Pins (one commit on main, after #349 and #350 merged)
f8561625.68d1f4ec), Octoscript-Makepad (aa80f72c, unpatched), Octoscript (2e37d9e6) and octos (39e22d45) as this repository.octoscript-renderpatch to.sources.No longer blocked on app-contract 1.3.0. Main already takes
octosense-app-contractfrom App Hub7bb63ff9([patch.crates-io], contract 1.4.0). That revision includes 1.3.0'soctoscodereservation, soa_script_app_may_not_take_a_native_apps_id_or_namespacepasses without a crates.io release.Not run: a phone. Android is unverified.
Tests
cargo test -p octosense-kernel: 62.session/openresult and in octos'ssession/opennotification. Before the rewrite, the notification still carried all 102;code-…session opened in the picked folder, with OctosCode's new logo in its sidebar;read_fileandlist_dirran;profile/llm/selectchanges the_mainprofile's model, which the system agent shares, so it stays outside the scope; Setup owns it.Upstream
projection.envelope.v2, and the stdio pipe has none. OctosCode now holds out-of-order envelopes.39e22d45(Pin octos main 39e22d45 #350).🤖 Generated with Claude Code