Repository navigation
Conversation
60eac88 to
e7ef0ca
Compare
|
Review: changes requested, to match ADR 0004 (accepted in #110 after this PR was opened).
Also: ADR 0004 §1 plans a 🤖 Generated with Claude Code |
… draws A focus that cannot land at launch (the tile is not drawn yet) is kept in `pending_focus` and re-asserted when the client's first frame arrives, on the PresentableDraw path. A module tile never sends a frame, so its pending focus was never retried: ModuleView stayed unfocused, its gate dropped every key, and a module opened from the dock or launcher took no typing until the person clicked into it. After the UI handles a Draw, retry a pending focus that belongs to a module client. On success it clears; otherwise nothing forces a redraw, so a tile that still cannot take it just tries again on the next natural draw. Found with the Terminal module: typed keys never reached its root (a probe in its key path logged nothing) until the tile was clicked; with this change `echo` typed right after opening it from the dock ran. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Terminal was a developer program: built on first launch from the Makepad checkout, then run as a child process. It now links in-process like Rinx: the new `app-terminal` feature (on in the desktop's default set) registers makepad-terminal's TERMINAL_MODULE, and `terminal` joins robrix and finance as a module hosted in-process by default unless the person switched it (`terminal: Process` in wm/apps.splash keeps the process form, whose config/apps.json row stays). - Opens instantly: no compile on first launch, no swapchain round trip. - On macOS its PTY helper is `octosense` itself (Cx::pre_start answers `--exec-pty`), so nothing ships beside the binary. - It declares `process` and `clipboard` and no `octos.*` service. The assistant gets read_screen and read_scrollback only; `run` (an unsandboxed shell, rated Risk::Act) is not offered by a default system app. - Phone builds are unchanged: `mobile-apps` does not include it. Builds on the current makepad pin (75e3e24d), which already carries TERMINAL_MODULE, the PTY-helper fallback and the macOS signal-wake fix (OctoSense-org/makepad #40, #41); Cargo.toml pins makepad-terminal there. Tabs, panes, settings and terminal-ctl (makepad #47) arrive with a later pin bump. Verified locally with those makepad commits applied under .sources/makepad: - cargo check --locked -p octosense (and --features mobile-apps) - bash tools/check-shell-graph.sh -p octosense - cargo test --locked -p octosense-shell --features app-terminal: 333 passed - from phone/: cargo test --locked --features mobile-apps -p octosense-shell: 342 passed - hidden desktop over MAKEPAD_REMOTE: Terminal opens from the dock as "in-process, terminal"; the shell's parent is octosense; octoscode's composer stayed clean on 3 of 3 launches; closing the tile ended zsh and octoscode and freed the isolate; two Terminals ran two shells. Rebased onto main: cargo build --locked -p octosense and tools/check-shell-graph.sh pass against the pinned makepad with the reviewed runtime patches; cargo test -p octosense-shell --features app-terminal: 345 passed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…us change Focusing a process tile moves key focus to it (its forwarding needs that), but a module tile deliberately never moves key focus: its own widgets claim it. Nothing told the previously focused tile to let go, so after switching between the tabs of a window group the hidden tab kept the keyboard and every key typed into the visible one was dropped. Track the client whose tile last took the keyboard (`keyboard_holder`); in `focus_client`, release that tile (TileHost::release_keyboard) before focusing another. The layout already reports the new client as focused by then, so the previous one is tracked here rather than read from it. Needs the matching makepad-terminal change (claim the keyboard on a key that arrives while nobody holds it, OctoSense-org/makepad#40). Verified: Omarchy style, a two-tab Terminal group; after Cmd+Alt+Tab text typed runs in the tab now shown, both directions. cargo test --locked -p octosense-shell --features app-terminal: 333 passed; from phone/: --features mobile-apps: 342 passed; cargo check --locked -p octosense. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
e7ef0ca to
5b458a8
Compare
|
Rebased onto main after #101 (robrix → rinx). The conflict in Both requested changes are in #113, which is stacked on this PR, so the hosting table and the §10 rules come from
Review #112 and #113 together and merge in order, or I can fold #113 into this PR if you prefer one PR. 🤖 Generated with Claude Code |
|
Folded into #113 at the reviewer's request: #113 now targets 🤖 Generated with Claude Code |
Ships the Makepad Terminal as a desktop system app, linked in-process like Rinx.
app-terminalfeature (in the desktop's default set) registers makepad-terminal'sTERMINAL_MODULE.terminalis hosted in-process by default;terminal: Processinwm/apps.splashkeeps the child-process form.octosenseitself (--exec-pty), so nothing ships beside the binary.processandclipboard, nooctos.*service. The assistant getsread_screen/read_scrollbackonly;run(Risk::Act) is not offered by a default system app.mobile-appsdoes not include it).Builds on the current makepad pin (75e3e24d, which has makepad #40/#41). Tabs, split panes, settings, fonts/profiles and
terminal-ctlare in OctoSense-org/makepad#47; they arrive with a later pin bump, and this PR doesn't need them.Verification
cargo build --locked -p octosenseagainst the pinned makepad + reviewed runtime patchesbash tools/check-shell-graph.sh -p octosense: okcargo test -p octosense-shell --features app-terminal: 345 passed🤖 Generated with Claude Code