Repository navigation
id: Phase 13 plan — client shells and capability providers - #791
Conversation
Writes the full Phase 13 design (.opencode/plans/phase-13-client-shells.md): one versioned shell contract across terminal/web/native clients, SSH as a frame transport and SSH-over-iroh reachability, tiered terminal presentation, kitty keyboard protocol, a native reference shell, client-side capability providers under the ceiling model, and multi-server/multi-client topology. Closes #564. Issues F13.1-F13.8 (#783-#790) carry the implementation.
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 31 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Part 1 — Phase 13 design
Writes the full Phase 13 plan at
.opencode/plans/phase-13-client-shells.mdand closes #564.The plan holds D1-050..D1-056 and names F12.7, F12.14 and F12.12 as stepping stones:
id world join --via ssh) — id: Phase 13 F13.2 SSH as a transport for the frame protocol (id world join --via ssh) #784Each F13.x has an exit criterion (acceptance criteria) in the Phase 11/12 style, plus scope/non-goals, architecture (client-shell variants + capability-provider model + data/sync touchpoints), security/trust, sequencing, risks and open questions. No Phase 13 code is implemented in this session — design + issues only.
Part 2 — id issue triage
Triage of the open id issues not owned by other train sessions (skipped: #643 Session E, #539–#555 Session B, #534 + #556–#560 Session C, #564 this PR, #783–#790 this PR).
pkgs/iddoes not build on main (p2panda hash mismatch, Renovate splits the single p2panda rev bump into per-crate PRs — #642 breaks the pkgs/id nix build (missing outputHashes) #643 / Session E's fix), so any Rust change inpkgs/idcould not be test-verified, and the small web bugs (id(web): world-surface presenter accepts cells the Rust wire validator rejects — symbol width/grapheme and continuation-symbol checks missing #724/id(web): world keyboard encoder drops or silently degrades modified special keys — Alt+Backspace sends plain Backspace, Alt+Arrow is dropped to the browser #732/PR #759's world-surface width check mis-measures astral-plane, ZWJ and ⚠️ glyphs (JS width 1 vs Rust unicode-width 2) — must not close #724 as-is #761/id(web): detect_mode's .pm.json check is case-sensitive — document.PM.JSON opens Raw instead of Rich (and downloads as doc.PM.JSON.pm.json) #770/id(web): parse_iso_timestamp accepts out-of-range dates — month 13, day 0/32, Feb 30, hour 25 and pre-1970 years all return plausible-but-wrong timestamps #756/id(web): 13 detected languages can never highlight — detectLanguage returns them but LANG_IMPORTS has no grammar registered (bat, sass, zig, protobuf, .env, justfile, …) #749/id(web): Go to Line miscounts and cannot navigate outside a single raw code_block — textContent has no block separators and position mapping hard-codes +2 #745/PR #327's ProseMirror widget keys omit cursor colour and name, so recycled cursor DOM goes stale #331) are Phase 0–10 web-client territory under Session A's review.id train triage (2026-10-24):comment carrying one category + one line of evidence:needs-decision: 25 (Phase 2–6 owner-default confirmations, SSH/tracking home questions, web bugs assigned to Muse → Session A, Consolidate duplicate PRs #776 and #777: both implement the same #643 p2panda outputHash fix #779 to Session E)too-big-needs-design: 18 (Phase 2–6 sync/membership design gaps, F11.2/F11.3/F11.12/F11.11-remainder, web sync PeerHistory, E2E/CI stabilization, D1-043/044)blocked-on-*: 2 (Phase 2: production ingest enforces only p2panda-auth membership #168 → groups-fold/provisioning ingest wiring; id(roc): finish the example migration: tic-tac-toe -> RocJson, roc-counter -> Screen, adopt RocText #565 → id(roc): F11.18 pin the Roc compiler for checked-in example modules and rebuild them in CI #541 pinned Roc compiler)obsolete: 1 (id: native client shells and client capabilities #538 → superseded by this Phase 13 plan / id: Phase 13 F13.6 native client shells on the shell contract #788–id: Phase 13 F13.7 client-side capability providers under the ceiling model #789)End state: every open id issue is fixed by a train session, owned by one, or carries a triage category.