Skip to content

Fix the in-app extra row slash, Return, Clip, and clipboard suite - #111

Merged
jamditis merged 3 commits into
mainfrom
fix/m4-extra-row-defects
Aug 14, 2026
Merged

jamditis merged 3 commits into
mainfrom
fix/m4-extra-row-defects

Conversation

@jamditis

Copy link
Copy Markdown
Owner

Closes #98
Closes #99
Closes #100
Closes #101

The SSH accessory extra row advertised slash commands, Clip, and SCP, and the system Return key looked like submit. None of that was true in the app:

  • Extra-row / went through ANSISequence.bytes(.slash), which is nil. There was no SlashCommandPanel in the terminal. The extension already opened the panel.
  • insertText("\n") wrote LF (0x0a). Agents and shells want CR (0x0d).
  • Clip pasted UIPasteboard.general once. SCP was an empty extraRowDidTapUpload.
  • ClipboardHistory used UserDefaults.standard, so pins never crossed the app/extension boundary. Same class of bug KeyboardPrefs already fixed.

What changed

  • TerminalInputMapping is the shipped submit/newline/extra-row map. A lone Return is CR. A dedicated newline helper writes LF. Slash is .openSlash.
  • TerminalInputView uses that map. Extra-row / presents SlashCommandPanel and writes the trigger (e.g. /compact) to the PTY. Clip and SCP present the real panels. SCP shares CitadelSCPUploader with the extension.
  • ClipboardHistory defaults to group.com.keyjawn.

Tests

  • CR vs LF through TerminalInputView.insertText and TerminalInputMapping.
  • Extra-row / opens the panel; selecting /compact writes those bytes.
  • Clip and SCP present their panels.
  • Pins written on one injected suite are visible to another; uninjected history reads the App Group.

Review

Codex 5.4/low: password-auth hosts can still be picked in the SCP panel even though the uploader is Ed25519-only. That is also how the extension panel already works. Filed as #110 rather than changing both surfaces here.

Out of scope

No TestFlight/App Store upload. No version bump. Password-host filter is #110. Prompt scratchpad and path-back-into-prompt remain deferred (#103, #104).

The SSH accessory treated extra-row / as a no-op, forwarded system Return
as LF, pasted Clip as a one-shot, and left SCP empty. Clipboard pins lived
in UserDefaults.standard, so the app and keyboard did not share them.

Closes #98
Closes #99
Closes #100
Closes #101

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2fb2331267

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@jamditis

Copy link
Copy Markdown
Owner Author

@codex review

Migrate clipboard pins from the standard suite into the App Group, keep
armed Ctrl across a paste, and pin slash/clip/SCP overlays above the
keyboard layout guide.
@jamditis

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Something went wrong. Try again later by commenting “@codex review”.

Unknown error
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9c3f89830b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

The extension owned the old store, so it must copy its standard suite
into the App Group. A system Return now consumes armed Ctrl.
@jamditis
jamditis merged commit 251e8c2 into main Aug 14, 2026
2 of 3 checks passed
@jamditis
jamditis deleted the fix/m4-extra-row-defects branch August 14, 2026 18:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant