Repository navigation
Open
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-insLarge: multi-day or open-ended; expect staged check-insenhancementNew feature or requestNew feature or requestkind/featureNew feature or capability requestNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedmode/onlineFully doable remotely: design, config, code, cloudFully doable remotely: design, config, code, cloudpriority/lowNice to have; do when convenientNice to have; do when convenientqueue/queuedHas a queued task in the Supabase agent queueHas a queued task in the Supabase agent queuesource/humanFiled directly by a humanFiled directly by a humanstatus/triagedTriaged and routed (see agent note)Triaged and routed (see agent note)task/small-fixQueue packet kind: bounded fix with reproduction and targeted testsQueue packet kind: bounded fix with reproduction and targeted tests
Description
What and why
Negotiate the kitty keyboard protocol (CSI > u) where supported so Escape vs Alt is unambiguous and key events go beyond the legacy byte stream; extend Key.parse and the browser encoder to match.
Source
- Phase 13 plan — F13.5
- id: write the Phase 13 plan: client shells and client capability providers #564 (Phase 13 plan task)
- id(ssh): input and presentation designs #535 (input and presentation designs) — D1-053
Current status
Not started. Key.parse decodes legacy sequences only (pkgs/id/examples/roc-world/Key.roc); no negotiation in pkgs/id/src/world_ssh.rs.
Acceptance criteria
- A kitty-protocol terminal and the web encoder produce the same key event for the same keystroke (parity test)
- Escape vs Alt is unambiguous on a kitty-protocol terminal
- The raw input path carries the richer key events without changing the durable Input event
Size
M
Prerequisites
- id: write the Phase 13 plan: client shells and client capability providers #564 (Phase 13 plan task) — F13.4 presentation tiers (detection precedes negotiation)
Metadata
Metadata
Assignees
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-insLarge: multi-day or open-ended; expect staged check-insenhancementNew feature or requestNew feature or requestkind/featureNew feature or capability requestNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedmode/onlineFully doable remotely: design, config, code, cloudFully doable remotely: design, config, code, cloudpriority/lowNice to have; do when convenientNice to have; do when convenientqueue/queuedHas a queued task in the Supabase agent queueHas a queued task in the Supabase agent queuesource/humanFiled directly by a humanFiled directly by a humanstatus/triagedTriaged and routed (see agent note)Triaged and routed (see agent note)task/small-fixQueue packet kind: bounded fix with reproduction and targeted testsQueue packet kind: bounded fix with reproduction and targeted tests
Activity
developing-today commentedon Oct 24, 2026
CODE-114
dezren39 commentedon Oct 26, 2026
Intake review
Fleet monitor intake pass (protocol §5).
Related: Phase 13 sibling set — #785 (F13.3), #786 (F13.4), #787 (F13.5), #788 (F13.6), #789 (F13.7), #790 (F13.8); this issue is F13.5 kitty keyboard protocol on the raw input path. It is a forward roadmap/spec item, not a reported fixed bug; nothing in the issue or its comments indicates it has been implemented.
Notes / risks: acceptance criteria were already present in the body; none appended. Phase-13 items are large, interdependent platform work (effort/l, priority/low as roadmap items): the set should be sequenced deliberately rather than picked up piecemeal by a worker, and earlier-phase dependencies should be confirmed before implementation starts.
Suggested approach: keep in the Phase 13 backlog until its phase dependencies land; when scheduled, split into a design pass plus implementation slices rather than a single change.
Labels normalized by the monitor.
223 remaining items
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
opencode; handed off to the laptop opencode claimant, which launches the bound session that drives task 7947 to its terminal state.dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
ses_e5e590d6f38ffeqecWD1W3mPh7Merge pull request #5512 from developing-today/queue/7947-787-input-a…
developing-today commentedon Nov 7, 2026
Picked up by
repo-worker-code-g— working this now. (Fleet queue fallback mode: the queue backend is down, so this issue's comments carry the claim. The claim stays live whilerepo-worker-code-gposts progress markers; after 30 minutes of silence any other worker may pick this up.)developing-today commentedon Nov 7, 2026
Progress from
repo-worker-code-g: triaged: design+A+B merged, C next, E/F gated on #786; posting verdictdeveloping-today commentedon Nov 7, 2026
🤖 Agent note · triaged
doc/2026-11-01_design_id787.md§6 splits the work into slices A–F. The issue body's "Not started" status is stale.Key.parse_eventsrich decoder + kitty-disambiguate-v1 fixtures (inert).pkgs/id/src/input_framing.rsbounded input token assembler (inert).pkgs/id/web/src/world-keyboard.tson current main is the legacy encoder only (112 lines, no kitty/rich encoder). C is the next slice and is ungated (depends on A only).user/reviewdischarged by this review: design §7 records no decision genuinely needing Drew; nothing escalated.web/src/world-keyboard.ts+ tests, unused by UI; done check = design §6 row C), then D as its own slice. Acceptance criteria 1–3 stay open until D/E/F land — do not close issue id: Phase 13 F13.5 kitty keyboard protocol on the raw input path #787 on A+B.developing-today commentedon Nov 7, 2026
Released by
repo-worker-code-g(outcome: free). Triaged 2026-11-07: design (PR #3812) + slice A (PR #4438) + slice B (PR #5512) all merged; slice C (browser encoder) not started and is next/ungated, D after C, E/F gated on #786 OPEN. Routed as task/small-fix + status/triaged + queue/queued; user/review discharged (design says no Drew decision needed).