Repository navigation
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. Walkthrough
Severity of issue fixed: Medium Merge Risk:
|
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Team
Run ID: 04f4d133-0f41-4f49-8cee-1cbc5e849085
📥 Commits
Reviewing files that changed from the base of the PR and between 681119d and 1056ba4047718c066ea9a04a3f9f8d9d7d5c9030.
📒 Files selected for processing (6)
src/renderer/src/hooks/automation-dispatch-handler.tssrc/renderer/src/lib/agent-draft-paste-content-chunking.test.tssrc/renderer/src/lib/agent-paste-draft-submit-retry.test.tssrc/renderer/src/lib/agent-paste-draft.test.tssrc/renderer/src/lib/agent-paste-draft.tssrc/shared/tui-agent-config.ts
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.
There was a problem hiding this comment.
Important
This fixes the reported Ctrl+Enter=submit case but regresses default Codex users: Codex's default submit key is plain Enter, and Ctrl+Enter is unbound by default, so sending \x1b[13;5u unconditionally will leave the prompt in the composer for anyone who has not remapped Codex.
Reviewed changes
- Agent-level post-paste submit input — adds
AgentPostPasteSubmitInput(enter|ctrl-enter) and apostPasteSubmitInputconfig field, set toctrl-enterfor Codex. - Submit input threading —
submitPromptToAgentPtygains anagentparam;automation-dispatch-handler.tspassesautomation.agentIdon reused sessions;sendBracketedPasteToRunningAgentalso acceptsagent. - Submit/retry reuse —
resolvePostPasteSubmitInputselects\ror\x1b[13;5u, reused for both the initial submit and the blind retry. - Test reorganization — chunking tests move into
agent-draft-paste-content-chunking.test.tsto keep the touched test file under the max-lines limit; submit assertions update to the agent-specific bytes.
⚠️ Submit key is a per-user Codex setting, not an agent constant
The design hardcodes ctrl-enter as Codex's submit input, but Codex's submit binding is user configuration. The default is Enter (tui.keymap.composer.submit = ["enter", "ctrl-m"]); Ctrl+Enter only submits when the user has explicitly remapped it. This needs a decision on how Orca learns the user's actual binding before it can ship without regressing default users.
Technical details
# Submit key is user configuration, not an agent constant
## Affected sites
- src/shared/tui-agent-config.ts:109 — `postPasteSubmitInput: 'ctrl-enter'` hardcodes Codex's submit as Ctrl+Enter
- src/renderer/src/lib/agent-paste-draft.ts:250 — `resolvePostPasteSubmitInput` maps the config to `\x1b[13;5u` unconditionally
- src/renderer/src/lib/agent-paste-draft.ts:230,237 — initial submit and blind retry both use the resolved input
## Required outcome
- Submitting a pasted Codex prompt must use the key the user's Codex is actually bound to (Enter by default, Ctrl+Enter only when remapped). The current hardcoded `ctrl-enter` fixes the remapped case but breaks the default case.
## Suggested approach (optional)
- Detect the user's Codex composer submit binding (e.g. read `tui.keymap.composer.submit` from `~/.codex/config.toml`) and derive the submit input from it, falling back to Enter.
- Alternatively expose a per-recipe or per-agent submit-key setting, defaulting to Enter.
## Open questions for the human (optional)
- Is reading Codex config acceptable, or should this be a user-facing setting?ℹ️ Nitpicks
\x1b[13;5uis already defined interminal-shortcut-policy.tsand thectrlEnterEncoding: 'csi-u'capability already encodes "this agent decodes CSI-u Ctrl+Enter" (terminal-ctrl-enter.ts). The newpostPasteSubmitInputfield plusPOST_PASTE_CTRL_ENTER_INPUTduplicates both the byte constant and the capability concept — consider centralizing the CSI-u byte or reusing the existing capability.- The PR's "manually tested locally" box is unchecked; the load-bearing assumption (that Codex decodes
\x1b[13;5uas submit) is exactly what turned out to be wrong, so a real-Codex check would have caught this.
DeepSeek Pro (free via Pullfrog for OSS) | 𝕏
1056ba4 to
0d8eaab
Compare
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- Removed the hardcoded Codex
ctrl-entersubmit —postPasteSubmitInput: 'ctrl-enter'is gone fromtui-agent-config.ts, restoring Enter as the default so default-configured Codex keeps submitting. - Added a per-agent
agentPostPasteSubmitInputssetting — anEnter/Ctrl+Entersegmented control in Settings → Agents, with normalization on load and update and an empty default record. - Extracted shared terminal input constants —
TERMINAL_ENTER_INPUT/TERMINAL_CTRL_ENTER_CSI_U_INPUTplusresolveTerminalCtrlEnterInputinterminal-ctrl-enter-input.ts, now reused byterminal-shortcut-policy.tsandcodex-tui-rollout-proof.ts. - Gated CSI-u on per-PTY kitty negotiation — registered the pane's
TerminalKittyKeyboardModeTrackerby PTY id and routedresolvePostPasteSubmitSequencethroughgetPtyKittyKeyboardFlags(ptyId), falling back to Enter when the pane hasn't negotiated the kitty protocol. - Threaded the agent through submit paths —
submitPromptToAgentPty/sendBracketedPasteToRunningAgentacceptagent, and reused-session automation dispatch passesautomation.agentId. - Reorganized tests — chunking assertions moved into
agent-draft-paste-content-chunking.test.ts, with new Ctrl+Enter and fallback coverage.
The two prior review threads (default-Codex regression, missing kitty gate) are both resolved by these commits, and the duplication nitpick is closed out by the shared constants module. The per-PTY tracker wiring is correct — session.kittyKeyboardModes is fed live PTY output in write-pty-output-to-xterm.ts, so getPtyKittyKeyboardFlags reflects the application's actual negotiation state, and the empty-registry fallback degrades safely to Enter for unregistered PTYs.
DeepSeek Pro (free via Pullfrog for OSS) | 𝕏
|
Merged latest main and resolved the conflict. The only conflict was Verification: node + web typecheck pass; targeted suites (agent-paste-draft, tui-agent-config, source-control-ai-recipe-save) — 40 tests green. |
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Advanced
Run ID: 7531905d-2355-4bd9-8af1-119acd52cfbf
📥 Commits
Reviewing files that changed from the base of the PR and between 0d8eaab and aa4156d42858af8de7c2d0c0a85b620dad1d0b4f.
📒 Files selected for processing (9)
src/main/persistence/loading-store/normalize-loaded-global-settings.tssrc/renderer/src/components/terminal-pane/pty-connection/terminal-keydown-fit.tssrc/renderer/src/hooks/automation-dispatch-handler.tssrc/renderer/src/lib/agent-paste-draft.test.tssrc/renderer/src/lib/agent-paste-draft.tssrc/renderer/src/store/slices/settings.tssrc/shared/default-global-settings.tssrc/shared/global-settings-types.tssrc/shared/tui-agent-config.ts
🚧 Files skipped from review as they are similar to previous changes (1)
- src/shared/tui-agent-config.ts
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.
aa4156d to
6f1324c
Compare
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- Re-merged
origin/mainand re-resolved the settings rows — the conflict-resolving merge also reworkedInputinto a CVAvariant(default/compact-mono) and moved the launch-default inputs off their ad-hoch-7 font-mono text-xsclass strings onto that variant. - Retained proven Kitty flags across PTY unbind —
unregisterPtyKittyKeyboardModeTrackernow snapshots the tracker'ssnapshotFlagsunder the PTY id, so a parked or rebound pane can still resolve Ctrl+Enter instead of silently degrading to Enter. Register clears the retained entry, and the guarded unregister still refuses to clobber a successor tracker. - Extracted the PTY readiness helpers —
waitForAgentDraftInputReadyOnTabandwaitForExpectedAgentOnPtymoved verbatim intoagent-draft-pty-readiness.ts, replacing the duplicate copies the conflicting merge had left insideagent-paste-draft.ts. - Threaded
inputKindthrough the submit paths —submitPromptToAgentPtyandsendBracketedPasteToRunningAgentnow pass'driving', andresolvePostPasteSubmitSequencegates CSI-u ongetPtyKittyKeyboardFlags(ptyId)with the retained fallback. - Inlined the submit-input union into
GlobalSettings—agentPostPasteSubmitInputsuses'enter' | 'ctrl-enter'directly, avoiding thetui-agent-post-paste-submit→tui-agent-configruntime cycle that importingAgentPostPasteSubmitInputwould create.
Verified locally: the four changed test files pass (45 tests) and check:code-quality:changed reports 0 findings against origin/main, including the design-system scan on the Input variant refactor.
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏
c57f007 to
2391eff
Compare
|
@coderabbitai review Merged current Verified: focused draft-submission suites (42 tests), web typecheck, |
✅ Action performed
|
[Medium impact] Adds agent recipe submission key configuration to settings. The PR is not yet safe to merge because a cross-writer publication invalidation can still cause a later submit-key save to erase an earlier acknowledged selection. Findings
SummaryThis PR adds configurable Enter or Ctrl+Enter post-paste submission, tracks kitty keyboard support per PTY, and routes the resolved input through initial and retry submissions. The settings-save repair remains incomplete because serialized writes do not carry acknowledged state across publication-fence invalidation.
|
There was a problem hiding this comment.
Actionable comments posted: 1

Review info
-
Run configuration-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
5b68ec1d-db18-4a51-bdb0-ee635c406a01
Files selected for processing: 14-
src/main/persistence/loading-store/normalize-loaded-global-settings.tssrc/renderer/src/components/settings/AgentCatalogRow.tsxsrc/renderer/src/components/settings/AgentLaunchDefaultsEditor.tsxsrc/renderer/src/components/settings/AgentLaunchSettingsCatalog.tsxsrc/renderer/src/components/terminal-pane/pty-connection/terminal-keydown-fit.tssrc/renderer/src/components/terminal-pane/terminal-shortcut-policy.tssrc/renderer/src/hooks/automation-dispatch-handler.tssrc/renderer/src/lib/agent-draft-pty-readiness.tssrc/renderer/src/lib/agent-paste-draft-submit-retry.test.tssrc/renderer/src/lib/agent-paste-draft.test.tssrc/renderer/src/lib/agent-paste-draft.tssrc/renderer/src/store/slices/settings.tssrc/shared/default-global-settings.tssrc/shared/global-settings-types.ts
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.
-
|
Addressed the current review findings in 23d061f.
Added focused regression coverage. Verified with 50 focused tests, @coderabbitai review |
✅ Action performed
|
There was a problem hiding this comment.
Actionable comments posted: 2

Review info
-
Run configuration-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
11a956c4-5a0e-479d-ae0a-c19d184f200c
Files selected for processing: 6-
src/renderer/src/components/settings/AgentLaunchSettingsCatalog.tsxsrc/renderer/src/components/settings/AgentLaunchSettingsSection.test.tsxsrc/renderer/src/components/settings/AgentLaunchSettingsSection.tsxsrc/renderer/src/components/terminal-pane/pty-connection/terminal-keydown-fit.tssrc/renderer/src/components/terminal-pane/terminal-pty-kitty-keyboard-flags.test.tssrc/renderer/src/components/terminal-pane/terminal-pty-kitty-keyboard-flags.ts
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.
-
|
Addressed both follow-up review findings in 74d5768.\n\n- Keep local launch-setting writes serialized across a local/remote settings remount, so concurrent agent submit-key choices do not overwrite one another.\n- Restore a previously proven Kitty keyboard mode only for the same PTY's replay reattachment, then reconcile it against ordered replay bytes; fresh PTYs do not inherit retained state.\n\nVerified: web typecheck, oxfmt --check, oxlint, and 68 focused tests (1 platform-gated test skipped).\n\n@coderabbitai review |
|
I’ve noted your reported check results: web typecheck, formatting, lint, and 68 focused tests, with one platform-gated test skipped. 🧠 Learnings used
If you found this review helpful, would you consider giving us a shout-out on X? Thank you for using CodeRabbit!
|
|
Synced latest main in 6125c7d and resolved the only conflict by retaining both the new shared argument-choice chips and this PR's post-paste submit-key control. The control now lives in its own component to keep the existing editor below its enforced line limit.\n\nVerification: 91 focused tests passed (1 platform-gated test skipped), plus oxfmt and oxlint. The two failing AgentLaunchDefaultsEditor checks reproduce with files identical to current main, so they are an upstream baseline failure rather than a PR regression.\n\n@coderabbitai resume\n@coderabbitai review |
|
You report 91 focused tests passed, one platform-gated test skipped, and passing 🧠 Learnings used
✅ Action performed
|
Comments Outside DiffThese findings could not be posted inline.
|
There was a problem hiding this comment.
Actionable comments posted: 2

Review info
-
Run configuration-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
ffa4ec6e-72ca-43bb-b3f6-b6f8f4c031dc
Files selected for processing: 13-
src/main/persistence/loading-store/normalize-loaded-global-settings.tssrc/renderer/src/components/settings/AgentCatalogRow.tsxsrc/renderer/src/components/settings/AgentLaunchSettingsSection.test.tsxsrc/renderer/src/components/settings/AgentLaunchSettingsSection.tsxsrc/renderer/src/components/settings/AgentPostPasteSubmitInputControl.test.tsxsrc/renderer/src/components/settings/AgentPostPasteSubmitInputControl.tsxsrc/renderer/src/components/terminal-pane/pty-connection/reattach-result-handler-park-reveal-verdict.test.tssrc/renderer/src/components/terminal-pane/pty-connection/reattach-result-handler.tssrc/renderer/src/components/terminal-pane/pty-connection/terminal-keydown-fit.tssrc/renderer/src/components/terminal-pane/terminal-pty-kitty-keyboard-flags.test.tssrc/renderer/src/components/terminal-pane/terminal-pty-kitty-keyboard-flags.tssrc/shared/default-global-settings.tssrc/shared/global-settings-types.ts
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.
-
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

Minor · Retain the proven Kitty flags when replacing a PTY… · terminal-pty-kitty-keyboard-flags.ts:9-19
src/renderer/src/components/terminal-pane/terminal-pty-kitty-keyboard-flags.ts:9-19
Minor · Functional Correctness · Quick win Retain the proven Kitty flags when replacing a PTY tracker.
A restored layout can give the same PTY ID to two distinct panes. Each pane creates its own tracker. The restored reattach path can then call
setPanePtyFitBinding, which overwrites the PTY registration before the first pane cleans up. If the replacement replay has no Kitty mode sequence, its flags remain unproven. Configured Ctrl+Enter then falls back to Enter.Retain the previous proven snapshot before replacing the registration:
Suggested fix
export function registerPtyKittyKeyboardModeTracker( ptyId: string, tracker: TerminalKittyKeyboardModeTracker ): symbol { const token = Symbol(ptyId) + const previous = ptyKittyKeyboardModeTrackers.get(ptyId) + if (previous?.tracker.hasProvenBaseline) { + const snapshotFlags = previous.tracker.snapshotFlags + if (snapshotFlags !== undefined) { + retainedPtyKittyKeyboardFlags.set(ptyId, snapshotFlags) + } + } ptyKittyKeyboardModeTrackers.set(ptyId, { tracker, token }) return token }

Review info
-
Run configuration-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
36966da8-e81f-4699-b1f2-262e7c7704ba
Files selected for processing: 4-
src/renderer/src/components/settings/AgentLaunchSettingsSection.test.tsxsrc/renderer/src/components/settings/AgentLaunchSettingsSection.tsxsrc/renderer/src/components/settings/AgentPostPasteSubmitInputControl.test.tsxsrc/renderer/src/components/settings/AgentPostPasteSubmitInputControl.tsx
Files skipped from review as they are similar to previous changes: 2-
- src/renderer/src/components/settings/AgentPostPasteSubmitInputControl.test.tsx
- src/renderer/src/components/settings/AgentPostPasteSubmitInputControl.tsx
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.
-
46a2a1f to
c538dfe
Compare
…talog Main regrouped the settings components (settings/agents/launch/), so the post-paste submit-input control lands at the new catalog-row path. The settings group follows GlobalSettingsBase feature-module ownership, and the catalog strings land in en.json. Co-Authored-By: Claude Code <noreply@anthropic.com>
c538dfe to
c5470f6
Compare

ELI5
When Orca pastes an Action Recipe prompt into Codex, it now keeps the normal Enter-to-submit behavior by default. If a user has configured Codex so Ctrl+Enter submits instead, Orca can be told to use Ctrl+Enter for that agent, and it only sends the special terminal bytes when the pane has proven it can understand them.
What Changed
Why
Codex submit is user-configurable. The default Codex binding submits with Enter, while some users remap submit to Ctrl+Enter so Enter can insert newlines. A hardcoded Codex Ctrl+Enter fixed the remapped case but would regress default users. Keeping this as an explicit per-agent setting preserves the default and lets remapped users opt in.
The kitty fallback also avoids sending CSI-u bytes to panes that have not negotiated the keyboard protocol.
Linked Issue
Fixes #18825
Visual Proof
UI change present: Settings > Agents now has a
Paste-submit keysegmented control withEnterandCtrl+Enter.Screenshot not captured in this turn because the local
$electronvalidation skill required by this repository was not available in the current Codex environment. The screenshot checklist item below is intentionally left unchecked until a follow-up run or reviewer attaches visual proof.Testing
Local checks run on the rebased branch:
./node_modules/.bin/vitest.CMD run --config config/vitest.config.ts src/renderer/src/lib/agent-paste-draft.test.ts src/renderer/src/lib/agent-paste-draft-submit-retry.test.ts src/renderer/src/lib/agent-draft-paste-content-chunking.test.ts src/renderer/src/components/terminal-pane/terminal-shortcut-policy.test.ts src/renderer/src/components/terminal-pane/terminal-pty-kitty-keyboard-flags.test.tsgit diff --check origin/main...HEADNotes:
pnpmshim failed in this environment, so repository-local binaries/direct Node commands were used where possible.AI Disclosure
Implemented with ChatGPT/Codex assistance under human direction.
Review
Ready for maintainer review. This update addresses the Pullfrog default-Codex regression, the CSI-u fallback issue, and the CodeRabbit bracketed-paste test assertion.
Agent skill upstream boundary
docs/reference/agent-skill-sharing-upstream-boundary.mdand copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.Notes
Security impact is limited to selecting PTY input bytes after an already-authorized paste. Enter remains the default for all agents. Ctrl+Enter emits CSI-u only when configured and the target PTY has proven kitty keyboard flags; local, remote, WSL, and SSH delivery still flow through the existing PTY input path.
Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (or CI will cover; local preferred)