Improve terminal navigation shortcuts and streamline git action PR flow - #42

Merged
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65
Feb 16, 2026
Merged

Improve terminal navigation shortcuts and streamline git action PR flow#42
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Feb 14, 2026

Copy link
Copy Markdown
Member

adds basic terminal navigation


Open with Devin

Summary by CodeRabbit

  • New Features

    • Terminal now supports platform-specific navigation shortcuts (Option/Command on macOS, Ctrl/Alt on other platforms) with arrow keys for word- and line-level cursor movement.
    • Terminal keyboard handling unified so navigation and clear shortcuts are processed consistently.
  • Tests

    • Added comprehensive tests covering navigation shortcut behavior across platforms and event types.

@coderabbitai

coderabbitaiBot commented Feb 14, 2026

Copy link
Copy Markdown

Walkthrough

Adds platform-aware terminal navigation shortcut handling via a new terminalNavigationShortcutData export and integrates it into the terminal drawer, which now routes navigation and clear shortcuts through a generalized sendTerminalInput function.

Changes

Cohort / File(s)Summary
Keybindings Module
apps/web/src/keybindings.ts, apps/web/src/keybindings.test.ts
Adds terminalNavigationShortcutData(event, platform) and tests; extends ShortcutEventLike with optional type; enforces keydown-only handling and maps arrow+modifier combos to terminal navigation sequences (word/line moves) with platform-specific rules.
Terminal Drawer Integration
apps/web/src/components/ThreadTerminalDrawer.tsx
Replaces specialized clear handler with a generalized sendTerminalInput(data, fallbackError) and integrates terminalNavigationShortcutData to intercept navigation shortcuts, prevent default, stop propagation, and send navigation sequences to the terminal.

Sequence Diagram

sequenceDiagram
actor User
participant Drawer as ThreadTerminalDrawer
participant Keybindings
participant Terminal as TerminalViewport
User->>Drawer: Press arrow key + modifier
Drawer->>Keybindings: terminalNavigationShortcutData(event, platform)
alt Navigation shortcut detected
Keybindings-->>Drawer: Return navigation sequence
Drawer->>Drawer: preventDefault & stopPropagation
Drawer->>Drawer: sendTerminalInput(sequence, "Failed to move cursor")
Drawer->>Terminal: Write navigation data
Terminal-->>User: Cursor moves
else No shortcut match
Keybindings-->>Drawer: Return null
Drawer->>Drawer: Continue to other handlers (clear shortcut, default)
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Title check⚠️ WarningThe PR title 'Improve terminal navigation shortcuts and streamline git action PR flow' is overly broad and vague. The actual changes focus on adding terminal navigation shortcuts and refactoring terminal input handling, but the 'streamline git action PR flow' portion is not present in the changeset.Consider revising the title to focus on the core change: 'Add terminal navigation shortcuts support' or 'Refactor terminal shortcuts with navigation support', removing the unrelated 'git action PR flow' reference.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Merge Conflict Detection✅ Passed✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codething/70a71c65

Comment @coderabbitai help to get the list of available commands and usage tips.

@macroscopeapp

macroscopeappBot commented Feb 14, 2026

Copy link
Copy Markdown
Contributor

Add terminal navigation shortcut handling and unify terminal input writing in ThreadTerminalDrawer.TerminalViewport to streamline git action PR flow

Introduce keybindings.terminalNavigationShortcutData for macOS and non-macOS word/line navigation, gate clear shortcuts to keydown events, and route all terminal input through sendTerminalInput in ThreadTerminalDrawer.tsx.

📍Where to Start

Start with terminalNavigationShortcutData and isTerminalClearShortcut in keybindings.ts, then review sendTerminalInput integration and the custom key handler in ThreadTerminalDrawer.tsx.


Macroscope summarized b7bbcb2.

@greptile-apps

greptile-appsBot commented Feb 14, 2026

Copy link
Copy Markdown

Greptile Summary

Enhanced terminal with keyboard shortcuts for cursor navigation by adding support for platform-specific word and line movement using modifier keys with arrow keys.

  • Added terminalNavigationShortcutData function to map keyboard events to terminal control sequences (ESC+b/f for word movement, Ctrl-A/E for line movement)
  • Refactored terminal input handling to use a generic sendTerminalInput helper function
  • Integrated navigation shortcuts into the terminal's custom key event handler with proper event prevention
  • Provided comprehensive test coverage for all platform-specific shortcuts (macOS Option/Cmd, non-macOS Ctrl/Alt)

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • The implementation is well-tested with comprehensive test coverage, follows existing patterns in the codebase, and properly handles platform-specific behavior. The refactoring improves code organization without changing existing functionality.
  • No files require special attention

Important Files Changed

FilenameOverview
apps/web/src/keybindings.tsAdded terminalNavigationShortcutData function to map platform-specific arrow key shortcuts (Option/Cmd on macOS, Ctrl/Alt on others) to terminal control sequences for word and line navigation
apps/web/src/components/ThreadTerminalDrawer.tsxRefactored to use generic sendTerminalInput helper and integrated terminal navigation shortcuts into the custom key event handler
apps/web/src/keybindings.test.tsAdded comprehensive test suite for terminalNavigationShortcutData covering macOS (Option/Cmd) and non-macOS (Ctrl/Alt) platforms with proper edge case coverage

Flowchart

flowchart TD
A[Keyboard Event] --> B{terminalNavigationShortcutData}
B --> C{Is Shift Key?}
C -->|Yes| D[Return null]
C -->|No| E{Is ArrowLeft/Right?}
E -->|No| D
E -->|Yes| F{Platform?}
F -->|macOS| G{Modifier Key?}
F -->|non-macOS| H{Modifier Key?}
G -->|Option/Alt only| I[Word Movement<br/>ESC+b or ESC+f]
G -->|Cmd/Meta only| J[Line Movement<br/>Ctrl-A or Ctrl-E]
G -->|Other| D
H -->|Ctrl only| I
H -->|Alt only| I
H -->|Other| D
I --> K[sendTerminalInput]
J --> K
K --> L[api.terminal.write]
L --> M[Terminal Updates Cursor]
Loading

Last reviewed commit: 9547718

- handle platform-specific modifier+arrow combos in terminal input
- reuse terminal write path for clear and navigation actions
- add shortcut tests for macOS and non-macOS mappings
@juliusmarminge

juliusmarminge commented Feb 16, 2026

Copy link
Copy Markdown
MemberAuthor

@greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

https://github.com/greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

@greptileai review

- guard terminal clear/navigation shortcut handlers to only process `keydown`
- add tests verifying `keyup` events are ignored
@juliusmarminge
juliusmarminge merged commit f864ef1 into mainFeb 16, 2026
2 of 3 checks passed

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
apps/web/src/keybindings.test.ts (1)

357-366: Consider adding a test for Alt+Arrow on non-macOS platforms.

The implementation at keybindings.ts lines 265-267 supports Alt+Arrow for word movement on non-macOS platforms, but this behavior isn't covered by tests. Adding a test would ensure this code path remains functional.

🧪 Suggested test addition
 it("maps Ctrl+Arrow on non-macOS to word movement", () => {
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowLeft", ctrlKey: true }), "Win32"),
"\u001bb",
);
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowRight", ctrlKey: true }), "Linux"),
"\u001bf",
);
});
++ it("maps Alt+Arrow on non-macOS to word movement", () => {+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowLeft", altKey: true }), "Win32"),+ "\u001bb",+ );+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowRight", altKey: true }), "Linux"),+ "\u001bf",+ );+ });

DavidIlie added a commit to DavidIlie/t3code that referenced this pull request Mar 13, 2026
…icker
Port upstream commits 3d35868..f70cb5d:
- Add pull-request thread setup for local and worktree modes (pingdotgg#42)
- Refine branch picker behavior and gate /checkout-pr by thread type (pingdotgg#43)
Includes PR resolution via GitHub CLI, worktree-aware PR checkout,
shared branch picker filtering, deferred query, conditional virtualization,
and /checkout-pr gating to local draft threads only.
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 6, 2026
The fork hid its version-control surface because the Moatless backend did
not serve it. It does now: stacked actions, pull-request resolution and
thread preparation, VCS status and refs, ref switching and diff preview
are all answered, so the flag was hiding a feature that works.
Removed the `versionControl` entry and both gates that named it, following
the flag table's own rule — a surface is turned on by deleting its flag,
not by setting it to true, so no gate is left that can never be false.
Claude Opus 5 via Claude Code.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
piero-dev25 added a commit to piero-dev25/devgame that referenced this pull request Aug 11, 2026
…otgg#39/pingdotgg#42)
Theme import dialog, theme preview label, environment-artwork toggle,
Linux keyring/KWallet remediation messages, and the thread-title
generation prompts (they primed the model with the product name for
titles the user reads). Internal identifiers, env vars, the protocol
scheme, and the legacy userData migration dir name are deliberately
untouched (pingdotgg#40 keychain/data-dir rotation hazard).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Improve terminal navigation shortcuts and streamline git action PR flow - #42

Merged
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65
Feb 16, 2026
Merged

Improve terminal navigation shortcuts and streamline git action PR flow#42
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Feb 14, 2026

Copy link
Copy Markdown
Member

adds basic terminal navigation


Open with Devin

Summary by CodeRabbit

  • New Features

    • Terminal now supports platform-specific navigation shortcuts (Option/Command on macOS, Ctrl/Alt on other platforms) with arrow keys for word- and line-level cursor movement.
    • Terminal keyboard handling unified so navigation and clear shortcuts are processed consistently.
  • Tests

    • Added comprehensive tests covering navigation shortcut behavior across platforms and event types.

@coderabbitai

coderabbitaiBot commented Feb 14, 2026

Copy link
Copy Markdown

Walkthrough

Adds platform-aware terminal navigation shortcut handling via a new terminalNavigationShortcutData export and integrates it into the terminal drawer, which now routes navigation and clear shortcuts through a generalized sendTerminalInput function.

Changes

Cohort / File(s)Summary
Keybindings Module
apps/web/src/keybindings.ts, apps/web/src/keybindings.test.ts
Adds terminalNavigationShortcutData(event, platform) and tests; extends ShortcutEventLike with optional type; enforces keydown-only handling and maps arrow+modifier combos to terminal navigation sequences (word/line moves) with platform-specific rules.
Terminal Drawer Integration
apps/web/src/components/ThreadTerminalDrawer.tsx
Replaces specialized clear handler with a generalized sendTerminalInput(data, fallbackError) and integrates terminalNavigationShortcutData to intercept navigation shortcuts, prevent default, stop propagation, and send navigation sequences to the terminal.

Sequence Diagram

sequenceDiagram
actor User
participant Drawer as ThreadTerminalDrawer
participant Keybindings
participant Terminal as TerminalViewport
User->>Drawer: Press arrow key + modifier
Drawer->>Keybindings: terminalNavigationShortcutData(event, platform)
alt Navigation shortcut detected
Keybindings-->>Drawer: Return navigation sequence
Drawer->>Drawer: preventDefault & stopPropagation
Drawer->>Drawer: sendTerminalInput(sequence, "Failed to move cursor")
Drawer->>Terminal: Write navigation data
Terminal-->>User: Cursor moves
else No shortcut match
Keybindings-->>Drawer: Return null
Drawer->>Drawer: Continue to other handlers (clear shortcut, default)
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Title check⚠️ WarningThe PR title 'Improve terminal navigation shortcuts and streamline git action PR flow' is overly broad and vague. The actual changes focus on adding terminal navigation shortcuts and refactoring terminal input handling, but the 'streamline git action PR flow' portion is not present in the changeset.Consider revising the title to focus on the core change: 'Add terminal navigation shortcuts support' or 'Refactor terminal shortcuts with navigation support', removing the unrelated 'git action PR flow' reference.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Merge Conflict Detection✅ Passed✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codething/70a71c65

Comment @coderabbitai help to get the list of available commands and usage tips.

@macroscopeapp

macroscopeappBot commented Feb 14, 2026

Copy link
Copy Markdown
Contributor

Add terminal navigation shortcut handling and unify terminal input writing in ThreadTerminalDrawer.TerminalViewport to streamline git action PR flow

Introduce keybindings.terminalNavigationShortcutData for macOS and non-macOS word/line navigation, gate clear shortcuts to keydown events, and route all terminal input through sendTerminalInput in ThreadTerminalDrawer.tsx.

📍Where to Start

Start with terminalNavigationShortcutData and isTerminalClearShortcut in keybindings.ts, then review sendTerminalInput integration and the custom key handler in ThreadTerminalDrawer.tsx.


Macroscope summarized b7bbcb2.

@greptile-apps

greptile-appsBot commented Feb 14, 2026

Copy link
Copy Markdown

Greptile Summary

Enhanced terminal with keyboard shortcuts for cursor navigation by adding support for platform-specific word and line movement using modifier keys with arrow keys.

  • Added terminalNavigationShortcutData function to map keyboard events to terminal control sequences (ESC+b/f for word movement, Ctrl-A/E for line movement)
  • Refactored terminal input handling to use a generic sendTerminalInput helper function
  • Integrated navigation shortcuts into the terminal's custom key event handler with proper event prevention
  • Provided comprehensive test coverage for all platform-specific shortcuts (macOS Option/Cmd, non-macOS Ctrl/Alt)

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • The implementation is well-tested with comprehensive test coverage, follows existing patterns in the codebase, and properly handles platform-specific behavior. The refactoring improves code organization without changing existing functionality.
  • No files require special attention

Important Files Changed

FilenameOverview
apps/web/src/keybindings.tsAdded terminalNavigationShortcutData function to map platform-specific arrow key shortcuts (Option/Cmd on macOS, Ctrl/Alt on others) to terminal control sequences for word and line navigation
apps/web/src/components/ThreadTerminalDrawer.tsxRefactored to use generic sendTerminalInput helper and integrated terminal navigation shortcuts into the custom key event handler
apps/web/src/keybindings.test.tsAdded comprehensive test suite for terminalNavigationShortcutData covering macOS (Option/Cmd) and non-macOS (Ctrl/Alt) platforms with proper edge case coverage

Flowchart

flowchart TD
A[Keyboard Event] --> B{terminalNavigationShortcutData}
B --> C{Is Shift Key?}
C -->|Yes| D[Return null]
C -->|No| E{Is ArrowLeft/Right?}
E -->|No| D
E -->|Yes| F{Platform?}
F -->|macOS| G{Modifier Key?}
F -->|non-macOS| H{Modifier Key?}
G -->|Option/Alt only| I[Word Movement<br/>ESC+b or ESC+f]
G -->|Cmd/Meta only| J[Line Movement<br/>Ctrl-A or Ctrl-E]
G -->|Other| D
H -->|Ctrl only| I
H -->|Alt only| I
H -->|Other| D
I --> K[sendTerminalInput]
J --> K
K --> L[api.terminal.write]
L --> M[Terminal Updates Cursor]
Loading

Last reviewed commit: 9547718

- handle platform-specific modifier+arrow combos in terminal input
- reuse terminal write path for clear and navigation actions
- add shortcut tests for macOS and non-macOS mappings
@juliusmarminge

juliusmarminge commented Feb 16, 2026

Copy link
Copy Markdown
MemberAuthor

@greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

https://github.com/greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

@greptileai review

- guard terminal clear/navigation shortcut handlers to only process `keydown`
- add tests verifying `keyup` events are ignored
@juliusmarminge
juliusmarminge merged commit f864ef1 into mainFeb 16, 2026
2 of 3 checks passed

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
apps/web/src/keybindings.test.ts (1)

357-366: Consider adding a test for Alt+Arrow on non-macOS platforms.

The implementation at keybindings.ts lines 265-267 supports Alt+Arrow for word movement on non-macOS platforms, but this behavior isn't covered by tests. Adding a test would ensure this code path remains functional.

🧪 Suggested test addition
 it("maps Ctrl+Arrow on non-macOS to word movement", () => {
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowLeft", ctrlKey: true }), "Win32"),
"\u001bb",
);
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowRight", ctrlKey: true }), "Linux"),
"\u001bf",
);
});
++ it("maps Alt+Arrow on non-macOS to word movement", () => {+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowLeft", altKey: true }), "Win32"),+ "\u001bb",+ );+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowRight", altKey: true }), "Linux"),+ "\u001bf",+ );+ });

DavidIlie added a commit to DavidIlie/t3code that referenced this pull request Mar 13, 2026
…icker
Port upstream commits 3d35868..f70cb5d:
- Add pull-request thread setup for local and worktree modes (pingdotgg#42)
- Refine branch picker behavior and gate /checkout-pr by thread type (pingdotgg#43)
Includes PR resolution via GitHub CLI, worktree-aware PR checkout,
shared branch picker filtering, deferred query, conditional virtualization,
and /checkout-pr gating to local draft threads only.
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 6, 2026
The fork hid its version-control surface because the Moatless backend did
not serve it. It does now: stacked actions, pull-request resolution and
thread preparation, VCS status and refs, ref switching and diff preview
are all answered, so the flag was hiding a feature that works.
Removed the `versionControl` entry and both gates that named it, following
the flag table's own rule — a surface is turned on by deleting its flag,
not by setting it to true, so no gate is left that can never be false.
Claude Opus 5 via Claude Code.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
piero-dev25 added a commit to piero-dev25/devgame that referenced this pull request Aug 11, 2026
…otgg#39/pingdotgg#42)
Theme import dialog, theme preview label, environment-artwork toggle,
Linux keyring/KWallet remediation messages, and the thread-title
generation prompts (they primed the model with the product name for
titles the user reads). Internal identifiers, env vars, the protocol
scheme, and the legacy userData migration dir name are deliberately
untouched (pingdotgg#40 keychain/data-dir rotation hazard).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Improve terminal navigation shortcuts and streamline git action PR flow - #42

Merged
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65
Feb 16, 2026
Merged

Improve terminal navigation shortcuts and streamline git action PR flow#42
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Feb 14, 2026

Copy link
Copy Markdown
Member

adds basic terminal navigation


Open with Devin

Summary by CodeRabbit

  • New Features

    • Terminal now supports platform-specific navigation shortcuts (Option/Command on macOS, Ctrl/Alt on other platforms) with arrow keys for word- and line-level cursor movement.
    • Terminal keyboard handling unified so navigation and clear shortcuts are processed consistently.
  • Tests

    • Added comprehensive tests covering navigation shortcut behavior across platforms and event types.

@coderabbitai

coderabbitaiBot commented Feb 14, 2026

Copy link
Copy Markdown

Walkthrough

Adds platform-aware terminal navigation shortcut handling via a new terminalNavigationShortcutData export and integrates it into the terminal drawer, which now routes navigation and clear shortcuts through a generalized sendTerminalInput function.

Changes

Cohort / File(s)Summary
Keybindings Module
apps/web/src/keybindings.ts, apps/web/src/keybindings.test.ts
Adds terminalNavigationShortcutData(event, platform) and tests; extends ShortcutEventLike with optional type; enforces keydown-only handling and maps arrow+modifier combos to terminal navigation sequences (word/line moves) with platform-specific rules.
Terminal Drawer Integration
apps/web/src/components/ThreadTerminalDrawer.tsx
Replaces specialized clear handler with a generalized sendTerminalInput(data, fallbackError) and integrates terminalNavigationShortcutData to intercept navigation shortcuts, prevent default, stop propagation, and send navigation sequences to the terminal.

Sequence Diagram

sequenceDiagram
actor User
participant Drawer as ThreadTerminalDrawer
participant Keybindings
participant Terminal as TerminalViewport
User->>Drawer: Press arrow key + modifier
Drawer->>Keybindings: terminalNavigationShortcutData(event, platform)
alt Navigation shortcut detected
Keybindings-->>Drawer: Return navigation sequence
Drawer->>Drawer: preventDefault & stopPropagation
Drawer->>Drawer: sendTerminalInput(sequence, "Failed to move cursor")
Drawer->>Terminal: Write navigation data
Terminal-->>User: Cursor moves
else No shortcut match
Keybindings-->>Drawer: Return null
Drawer->>Drawer: Continue to other handlers (clear shortcut, default)
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Title check⚠️ WarningThe PR title 'Improve terminal navigation shortcuts and streamline git action PR flow' is overly broad and vague. The actual changes focus on adding terminal navigation shortcuts and refactoring terminal input handling, but the 'streamline git action PR flow' portion is not present in the changeset.Consider revising the title to focus on the core change: 'Add terminal navigation shortcuts support' or 'Refactor terminal shortcuts with navigation support', removing the unrelated 'git action PR flow' reference.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Merge Conflict Detection✅ Passed✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codething/70a71c65

Comment @coderabbitai help to get the list of available commands and usage tips.

@macroscopeapp

macroscopeappBot commented Feb 14, 2026

Copy link
Copy Markdown
Contributor

Add terminal navigation shortcut handling and unify terminal input writing in ThreadTerminalDrawer.TerminalViewport to streamline git action PR flow

Introduce keybindings.terminalNavigationShortcutData for macOS and non-macOS word/line navigation, gate clear shortcuts to keydown events, and route all terminal input through sendTerminalInput in ThreadTerminalDrawer.tsx.

📍Where to Start

Start with terminalNavigationShortcutData and isTerminalClearShortcut in keybindings.ts, then review sendTerminalInput integration and the custom key handler in ThreadTerminalDrawer.tsx.


Macroscope summarized b7bbcb2.

@greptile-apps

greptile-appsBot commented Feb 14, 2026

Copy link
Copy Markdown

Greptile Summary

Enhanced terminal with keyboard shortcuts for cursor navigation by adding support for platform-specific word and line movement using modifier keys with arrow keys.

  • Added terminalNavigationShortcutData function to map keyboard events to terminal control sequences (ESC+b/f for word movement, Ctrl-A/E for line movement)
  • Refactored terminal input handling to use a generic sendTerminalInput helper function
  • Integrated navigation shortcuts into the terminal's custom key event handler with proper event prevention
  • Provided comprehensive test coverage for all platform-specific shortcuts (macOS Option/Cmd, non-macOS Ctrl/Alt)

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • The implementation is well-tested with comprehensive test coverage, follows existing patterns in the codebase, and properly handles platform-specific behavior. The refactoring improves code organization without changing existing functionality.
  • No files require special attention

Important Files Changed

FilenameOverview
apps/web/src/keybindings.tsAdded terminalNavigationShortcutData function to map platform-specific arrow key shortcuts (Option/Cmd on macOS, Ctrl/Alt on others) to terminal control sequences for word and line navigation
apps/web/src/components/ThreadTerminalDrawer.tsxRefactored to use generic sendTerminalInput helper and integrated terminal navigation shortcuts into the custom key event handler
apps/web/src/keybindings.test.tsAdded comprehensive test suite for terminalNavigationShortcutData covering macOS (Option/Cmd) and non-macOS (Ctrl/Alt) platforms with proper edge case coverage

Flowchart

flowchart TD
A[Keyboard Event] --> B{terminalNavigationShortcutData}
B --> C{Is Shift Key?}
C -->|Yes| D[Return null]
C -->|No| E{Is ArrowLeft/Right?}
E -->|No| D
E -->|Yes| F{Platform?}
F -->|macOS| G{Modifier Key?}
F -->|non-macOS| H{Modifier Key?}
G -->|Option/Alt only| I[Word Movement<br/>ESC+b or ESC+f]
G -->|Cmd/Meta only| J[Line Movement<br/>Ctrl-A or Ctrl-E]
G -->|Other| D
H -->|Ctrl only| I
H -->|Alt only| I
H -->|Other| D
I --> K[sendTerminalInput]
J --> K
K --> L[api.terminal.write]
L --> M[Terminal Updates Cursor]
Loading

Last reviewed commit: 9547718

- handle platform-specific modifier+arrow combos in terminal input
- reuse terminal write path for clear and navigation actions
- add shortcut tests for macOS and non-macOS mappings
@juliusmarminge

juliusmarminge commented Feb 16, 2026

Copy link
Copy Markdown
MemberAuthor

@greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

https://github.com/greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

@greptileai review

- guard terminal clear/navigation shortcut handlers to only process `keydown`
- add tests verifying `keyup` events are ignored
@juliusmarminge
juliusmarminge merged commit f864ef1 into mainFeb 16, 2026
2 of 3 checks passed

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
apps/web/src/keybindings.test.ts (1)

357-366: Consider adding a test for Alt+Arrow on non-macOS platforms.

The implementation at keybindings.ts lines 265-267 supports Alt+Arrow for word movement on non-macOS platforms, but this behavior isn't covered by tests. Adding a test would ensure this code path remains functional.

🧪 Suggested test addition
 it("maps Ctrl+Arrow on non-macOS to word movement", () => {
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowLeft", ctrlKey: true }), "Win32"),
"\u001bb",
);
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowRight", ctrlKey: true }), "Linux"),
"\u001bf",
);
});
++ it("maps Alt+Arrow on non-macOS to word movement", () => {+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowLeft", altKey: true }), "Win32"),+ "\u001bb",+ );+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowRight", altKey: true }), "Linux"),+ "\u001bf",+ );+ });

DavidIlie added a commit to DavidIlie/t3code that referenced this pull request Mar 13, 2026
…icker
Port upstream commits 3d35868..f70cb5d:
- Add pull-request thread setup for local and worktree modes (pingdotgg#42)
- Refine branch picker behavior and gate /checkout-pr by thread type (pingdotgg#43)
Includes PR resolution via GitHub CLI, worktree-aware PR checkout,
shared branch picker filtering, deferred query, conditional virtualization,
and /checkout-pr gating to local draft threads only.
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 6, 2026
The fork hid its version-control surface because the Moatless backend did
not serve it. It does now: stacked actions, pull-request resolution and
thread preparation, VCS status and refs, ref switching and diff preview
are all answered, so the flag was hiding a feature that works.
Removed the `versionControl` entry and both gates that named it, following
the flag table's own rule — a surface is turned on by deleting its flag,
not by setting it to true, so no gate is left that can never be false.
Claude Opus 5 via Claude Code.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
piero-dev25 added a commit to piero-dev25/devgame that referenced this pull request Aug 11, 2026
…otgg#39/pingdotgg#42)
Theme import dialog, theme preview label, environment-artwork toggle,
Linux keyring/KWallet remediation messages, and the thread-title
generation prompts (they primed the model with the product name for
titles the user reads). Internal identifiers, env vars, the protocol
scheme, and the legacy userData migration dir name are deliberately
untouched (pingdotgg#40 keychain/data-dir rotation hazard).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Improve terminal navigation shortcuts and streamline git action PR flow - #42

Merged
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65
Feb 16, 2026
Merged

Improve terminal navigation shortcuts and streamline git action PR flow#42
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Feb 14, 2026

Copy link
Copy Markdown
Member

adds basic terminal navigation


Open with Devin

Summary by CodeRabbit

  • New Features

    • Terminal now supports platform-specific navigation shortcuts (Option/Command on macOS, Ctrl/Alt on other platforms) with arrow keys for word- and line-level cursor movement.
    • Terminal keyboard handling unified so navigation and clear shortcuts are processed consistently.
  • Tests

    • Added comprehensive tests covering navigation shortcut behavior across platforms and event types.

@coderabbitai

coderabbitaiBot commented Feb 14, 2026

Copy link
Copy Markdown

Walkthrough

Adds platform-aware terminal navigation shortcut handling via a new terminalNavigationShortcutData export and integrates it into the terminal drawer, which now routes navigation and clear shortcuts through a generalized sendTerminalInput function.

Changes

Cohort / File(s)Summary
Keybindings Module
apps/web/src/keybindings.ts, apps/web/src/keybindings.test.ts
Adds terminalNavigationShortcutData(event, platform) and tests; extends ShortcutEventLike with optional type; enforces keydown-only handling and maps arrow+modifier combos to terminal navigation sequences (word/line moves) with platform-specific rules.
Terminal Drawer Integration
apps/web/src/components/ThreadTerminalDrawer.tsx
Replaces specialized clear handler with a generalized sendTerminalInput(data, fallbackError) and integrates terminalNavigationShortcutData to intercept navigation shortcuts, prevent default, stop propagation, and send navigation sequences to the terminal.

Sequence Diagram

sequenceDiagram
actor User
participant Drawer as ThreadTerminalDrawer
participant Keybindings
participant Terminal as TerminalViewport
User->>Drawer: Press arrow key + modifier
Drawer->>Keybindings: terminalNavigationShortcutData(event, platform)
alt Navigation shortcut detected
Keybindings-->>Drawer: Return navigation sequence
Drawer->>Drawer: preventDefault & stopPropagation
Drawer->>Drawer: sendTerminalInput(sequence, "Failed to move cursor")
Drawer->>Terminal: Write navigation data
Terminal-->>User: Cursor moves
else No shortcut match
Keybindings-->>Drawer: Return null
Drawer->>Drawer: Continue to other handlers (clear shortcut, default)
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Title check⚠️ WarningThe PR title 'Improve terminal navigation shortcuts and streamline git action PR flow' is overly broad and vague. The actual changes focus on adding terminal navigation shortcuts and refactoring terminal input handling, but the 'streamline git action PR flow' portion is not present in the changeset.Consider revising the title to focus on the core change: 'Add terminal navigation shortcuts support' or 'Refactor terminal shortcuts with navigation support', removing the unrelated 'git action PR flow' reference.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Merge Conflict Detection✅ Passed✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codething/70a71c65

Comment @coderabbitai help to get the list of available commands and usage tips.

@macroscopeapp

macroscopeappBot commented Feb 14, 2026

Copy link
Copy Markdown
Contributor

Add terminal navigation shortcut handling and unify terminal input writing in ThreadTerminalDrawer.TerminalViewport to streamline git action PR flow

Introduce keybindings.terminalNavigationShortcutData for macOS and non-macOS word/line navigation, gate clear shortcuts to keydown events, and route all terminal input through sendTerminalInput in ThreadTerminalDrawer.tsx.

📍Where to Start

Start with terminalNavigationShortcutData and isTerminalClearShortcut in keybindings.ts, then review sendTerminalInput integration and the custom key handler in ThreadTerminalDrawer.tsx.


Macroscope summarized b7bbcb2.

@greptile-apps

greptile-appsBot commented Feb 14, 2026

Copy link
Copy Markdown

Greptile Summary

Enhanced terminal with keyboard shortcuts for cursor navigation by adding support for platform-specific word and line movement using modifier keys with arrow keys.

  • Added terminalNavigationShortcutData function to map keyboard events to terminal control sequences (ESC+b/f for word movement, Ctrl-A/E for line movement)
  • Refactored terminal input handling to use a generic sendTerminalInput helper function
  • Integrated navigation shortcuts into the terminal's custom key event handler with proper event prevention
  • Provided comprehensive test coverage for all platform-specific shortcuts (macOS Option/Cmd, non-macOS Ctrl/Alt)

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • The implementation is well-tested with comprehensive test coverage, follows existing patterns in the codebase, and properly handles platform-specific behavior. The refactoring improves code organization without changing existing functionality.
  • No files require special attention

Important Files Changed

FilenameOverview
apps/web/src/keybindings.tsAdded terminalNavigationShortcutData function to map platform-specific arrow key shortcuts (Option/Cmd on macOS, Ctrl/Alt on others) to terminal control sequences for word and line navigation
apps/web/src/components/ThreadTerminalDrawer.tsxRefactored to use generic sendTerminalInput helper and integrated terminal navigation shortcuts into the custom key event handler
apps/web/src/keybindings.test.tsAdded comprehensive test suite for terminalNavigationShortcutData covering macOS (Option/Cmd) and non-macOS (Ctrl/Alt) platforms with proper edge case coverage

Flowchart

flowchart TD
A[Keyboard Event] --> B{terminalNavigationShortcutData}
B --> C{Is Shift Key?}
C -->|Yes| D[Return null]
C -->|No| E{Is ArrowLeft/Right?}
E -->|No| D
E -->|Yes| F{Platform?}
F -->|macOS| G{Modifier Key?}
F -->|non-macOS| H{Modifier Key?}
G -->|Option/Alt only| I[Word Movement<br/>ESC+b or ESC+f]
G -->|Cmd/Meta only| J[Line Movement<br/>Ctrl-A or Ctrl-E]
G -->|Other| D
H -->|Ctrl only| I
H -->|Alt only| I
H -->|Other| D
I --> K[sendTerminalInput]
J --> K
K --> L[api.terminal.write]
L --> M[Terminal Updates Cursor]
Loading

Last reviewed commit: 9547718

- handle platform-specific modifier+arrow combos in terminal input
- reuse terminal write path for clear and navigation actions
- add shortcut tests for macOS and non-macOS mappings
@juliusmarminge

juliusmarminge commented Feb 16, 2026

Copy link
Copy Markdown
MemberAuthor

@greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

https://github.com/greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

@greptileai review

- guard terminal clear/navigation shortcut handlers to only process `keydown`
- add tests verifying `keyup` events are ignored
@juliusmarminge
juliusmarminge merged commit f864ef1 into mainFeb 16, 2026
2 of 3 checks passed

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
apps/web/src/keybindings.test.ts (1)

357-366: Consider adding a test for Alt+Arrow on non-macOS platforms.

The implementation at keybindings.ts lines 265-267 supports Alt+Arrow for word movement on non-macOS platforms, but this behavior isn't covered by tests. Adding a test would ensure this code path remains functional.

🧪 Suggested test addition
 it("maps Ctrl+Arrow on non-macOS to word movement", () => {
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowLeft", ctrlKey: true }), "Win32"),
"\u001bb",
);
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowRight", ctrlKey: true }), "Linux"),
"\u001bf",
);
});
++ it("maps Alt+Arrow on non-macOS to word movement", () => {+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowLeft", altKey: true }), "Win32"),+ "\u001bb",+ );+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowRight", altKey: true }), "Linux"),+ "\u001bf",+ );+ });

DavidIlie added a commit to DavidIlie/t3code that referenced this pull request Mar 13, 2026
…icker
Port upstream commits 3d35868..f70cb5d:
- Add pull-request thread setup for local and worktree modes (pingdotgg#42)
- Refine branch picker behavior and gate /checkout-pr by thread type (pingdotgg#43)
Includes PR resolution via GitHub CLI, worktree-aware PR checkout,
shared branch picker filtering, deferred query, conditional virtualization,
and /checkout-pr gating to local draft threads only.
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 6, 2026
The fork hid its version-control surface because the Moatless backend did
not serve it. It does now: stacked actions, pull-request resolution and
thread preparation, VCS status and refs, ref switching and diff preview
are all answered, so the flag was hiding a feature that works.
Removed the `versionControl` entry and both gates that named it, following
the flag table's own rule — a surface is turned on by deleting its flag,
not by setting it to true, so no gate is left that can never be false.
Claude Opus 5 via Claude Code.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
piero-dev25 added a commit to piero-dev25/devgame that referenced this pull request Aug 11, 2026
…otgg#39/pingdotgg#42)
Theme import dialog, theme preview label, environment-artwork toggle,
Linux keyring/KWallet remediation messages, and the thread-title
generation prompts (they primed the model with the product name for
titles the user reads). Internal identifiers, env vars, the protocol
scheme, and the legacy userData migration dir name are deliberately
untouched (pingdotgg#40 keychain/data-dir rotation hazard).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Improve terminal navigation shortcuts and streamline git action PR flow - #42

Merged
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65
Feb 16, 2026
Merged

Improve terminal navigation shortcuts and streamline git action PR flow#42
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Feb 14, 2026

Copy link
Copy Markdown
Member

adds basic terminal navigation


Open with Devin

Summary by CodeRabbit

  • New Features

    • Terminal now supports platform-specific navigation shortcuts (Option/Command on macOS, Ctrl/Alt on other platforms) with arrow keys for word- and line-level cursor movement.
    • Terminal keyboard handling unified so navigation and clear shortcuts are processed consistently.
  • Tests

    • Added comprehensive tests covering navigation shortcut behavior across platforms and event types.

@coderabbitai

coderabbitaiBot commented Feb 14, 2026

Copy link
Copy Markdown

Walkthrough

Adds platform-aware terminal navigation shortcut handling via a new terminalNavigationShortcutData export and integrates it into the terminal drawer, which now routes navigation and clear shortcuts through a generalized sendTerminalInput function.

Changes

Cohort / File(s)Summary
Keybindings Module
apps/web/src/keybindings.ts, apps/web/src/keybindings.test.ts
Adds terminalNavigationShortcutData(event, platform) and tests; extends ShortcutEventLike with optional type; enforces keydown-only handling and maps arrow+modifier combos to terminal navigation sequences (word/line moves) with platform-specific rules.
Terminal Drawer Integration
apps/web/src/components/ThreadTerminalDrawer.tsx
Replaces specialized clear handler with a generalized sendTerminalInput(data, fallbackError) and integrates terminalNavigationShortcutData to intercept navigation shortcuts, prevent default, stop propagation, and send navigation sequences to the terminal.

Sequence Diagram

sequenceDiagram
actor User
participant Drawer as ThreadTerminalDrawer
participant Keybindings
participant Terminal as TerminalViewport
User->>Drawer: Press arrow key + modifier
Drawer->>Keybindings: terminalNavigationShortcutData(event, platform)
alt Navigation shortcut detected
Keybindings-->>Drawer: Return navigation sequence
Drawer->>Drawer: preventDefault & stopPropagation
Drawer->>Drawer: sendTerminalInput(sequence, "Failed to move cursor")
Drawer->>Terminal: Write navigation data
Terminal-->>User: Cursor moves
else No shortcut match
Keybindings-->>Drawer: Return null
Drawer->>Drawer: Continue to other handlers (clear shortcut, default)
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Title check⚠️ WarningThe PR title 'Improve terminal navigation shortcuts and streamline git action PR flow' is overly broad and vague. The actual changes focus on adding terminal navigation shortcuts and refactoring terminal input handling, but the 'streamline git action PR flow' portion is not present in the changeset.Consider revising the title to focus on the core change: 'Add terminal navigation shortcuts support' or 'Refactor terminal shortcuts with navigation support', removing the unrelated 'git action PR flow' reference.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Merge Conflict Detection✅ Passed✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codething/70a71c65

Comment @coderabbitai help to get the list of available commands and usage tips.

@macroscopeapp

macroscopeappBot commented Feb 14, 2026

Copy link
Copy Markdown
Contributor

Add terminal navigation shortcut handling and unify terminal input writing in ThreadTerminalDrawer.TerminalViewport to streamline git action PR flow

Introduce keybindings.terminalNavigationShortcutData for macOS and non-macOS word/line navigation, gate clear shortcuts to keydown events, and route all terminal input through sendTerminalInput in ThreadTerminalDrawer.tsx.

📍Where to Start

Start with terminalNavigationShortcutData and isTerminalClearShortcut in keybindings.ts, then review sendTerminalInput integration and the custom key handler in ThreadTerminalDrawer.tsx.


Macroscope summarized b7bbcb2.

@greptile-apps

greptile-appsBot commented Feb 14, 2026

Copy link
Copy Markdown

Greptile Summary

Enhanced terminal with keyboard shortcuts for cursor navigation by adding support for platform-specific word and line movement using modifier keys with arrow keys.

  • Added terminalNavigationShortcutData function to map keyboard events to terminal control sequences (ESC+b/f for word movement, Ctrl-A/E for line movement)
  • Refactored terminal input handling to use a generic sendTerminalInput helper function
  • Integrated navigation shortcuts into the terminal's custom key event handler with proper event prevention
  • Provided comprehensive test coverage for all platform-specific shortcuts (macOS Option/Cmd, non-macOS Ctrl/Alt)

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • The implementation is well-tested with comprehensive test coverage, follows existing patterns in the codebase, and properly handles platform-specific behavior. The refactoring improves code organization without changing existing functionality.
  • No files require special attention

Important Files Changed

FilenameOverview
apps/web/src/keybindings.tsAdded terminalNavigationShortcutData function to map platform-specific arrow key shortcuts (Option/Cmd on macOS, Ctrl/Alt on others) to terminal control sequences for word and line navigation
apps/web/src/components/ThreadTerminalDrawer.tsxRefactored to use generic sendTerminalInput helper and integrated terminal navigation shortcuts into the custom key event handler
apps/web/src/keybindings.test.tsAdded comprehensive test suite for terminalNavigationShortcutData covering macOS (Option/Cmd) and non-macOS (Ctrl/Alt) platforms with proper edge case coverage

Flowchart

flowchart TD
A[Keyboard Event] --> B{terminalNavigationShortcutData}
B --> C{Is Shift Key?}
C -->|Yes| D[Return null]
C -->|No| E{Is ArrowLeft/Right?}
E -->|No| D
E -->|Yes| F{Platform?}
F -->|macOS| G{Modifier Key?}
F -->|non-macOS| H{Modifier Key?}
G -->|Option/Alt only| I[Word Movement<br/>ESC+b or ESC+f]
G -->|Cmd/Meta only| J[Line Movement<br/>Ctrl-A or Ctrl-E]
G -->|Other| D
H -->|Ctrl only| I
H -->|Alt only| I
H -->|Other| D
I --> K[sendTerminalInput]
J --> K
K --> L[api.terminal.write]
L --> M[Terminal Updates Cursor]
Loading

Last reviewed commit: 9547718

- handle platform-specific modifier+arrow combos in terminal input
- reuse terminal write path for clear and navigation actions
- add shortcut tests for macOS and non-macOS mappings
@juliusmarminge

juliusmarminge commented Feb 16, 2026

Copy link
Copy Markdown
MemberAuthor

@greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

https://github.com/greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

@greptileai review

- guard terminal clear/navigation shortcut handlers to only process `keydown`
- add tests verifying `keyup` events are ignored
@juliusmarminge
juliusmarminge merged commit f864ef1 into mainFeb 16, 2026
2 of 3 checks passed

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
apps/web/src/keybindings.test.ts (1)

357-366: Consider adding a test for Alt+Arrow on non-macOS platforms.

The implementation at keybindings.ts lines 265-267 supports Alt+Arrow for word movement on non-macOS platforms, but this behavior isn't covered by tests. Adding a test would ensure this code path remains functional.

🧪 Suggested test addition
 it("maps Ctrl+Arrow on non-macOS to word movement", () => {
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowLeft", ctrlKey: true }), "Win32"),
"\u001bb",
);
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowRight", ctrlKey: true }), "Linux"),
"\u001bf",
);
});
++ it("maps Alt+Arrow on non-macOS to word movement", () => {+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowLeft", altKey: true }), "Win32"),+ "\u001bb",+ );+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowRight", altKey: true }), "Linux"),+ "\u001bf",+ );+ });

DavidIlie added a commit to DavidIlie/t3code that referenced this pull request Mar 13, 2026
…icker
Port upstream commits 3d35868..f70cb5d:
- Add pull-request thread setup for local and worktree modes (pingdotgg#42)
- Refine branch picker behavior and gate /checkout-pr by thread type (pingdotgg#43)
Includes PR resolution via GitHub CLI, worktree-aware PR checkout,
shared branch picker filtering, deferred query, conditional virtualization,
and /checkout-pr gating to local draft threads only.
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 6, 2026
The fork hid its version-control surface because the Moatless backend did
not serve it. It does now: stacked actions, pull-request resolution and
thread preparation, VCS status and refs, ref switching and diff preview
are all answered, so the flag was hiding a feature that works.
Removed the `versionControl` entry and both gates that named it, following
the flag table's own rule — a surface is turned on by deleting its flag,
not by setting it to true, so no gate is left that can never be false.
Claude Opus 5 via Claude Code.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
piero-dev25 added a commit to piero-dev25/devgame that referenced this pull request Aug 11, 2026
…otgg#39/pingdotgg#42)
Theme import dialog, theme preview label, environment-artwork toggle,
Linux keyring/KWallet remediation messages, and the thread-title
generation prompts (they primed the model with the product name for
titles the user reads). Internal identifiers, env vars, the protocol
scheme, and the legacy userData migration dir name are deliberately
untouched (pingdotgg#40 keychain/data-dir rotation hazard).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Improve terminal navigation shortcuts and streamline git action PR flow - #42

Merged
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65
Feb 16, 2026
Merged

Improve terminal navigation shortcuts and streamline git action PR flow#42
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Feb 14, 2026

Copy link
Copy Markdown
Member

adds basic terminal navigation


Open with Devin

Summary by CodeRabbit

  • New Features

    • Terminal now supports platform-specific navigation shortcuts (Option/Command on macOS, Ctrl/Alt on other platforms) with arrow keys for word- and line-level cursor movement.
    • Terminal keyboard handling unified so navigation and clear shortcuts are processed consistently.
  • Tests

    • Added comprehensive tests covering navigation shortcut behavior across platforms and event types.

@coderabbitai

coderabbitaiBot commented Feb 14, 2026

Copy link
Copy Markdown

Walkthrough

Adds platform-aware terminal navigation shortcut handling via a new terminalNavigationShortcutData export and integrates it into the terminal drawer, which now routes navigation and clear shortcuts through a generalized sendTerminalInput function.

Changes

Cohort / File(s)Summary
Keybindings Module
apps/web/src/keybindings.ts, apps/web/src/keybindings.test.ts
Adds terminalNavigationShortcutData(event, platform) and tests; extends ShortcutEventLike with optional type; enforces keydown-only handling and maps arrow+modifier combos to terminal navigation sequences (word/line moves) with platform-specific rules.
Terminal Drawer Integration
apps/web/src/components/ThreadTerminalDrawer.tsx
Replaces specialized clear handler with a generalized sendTerminalInput(data, fallbackError) and integrates terminalNavigationShortcutData to intercept navigation shortcuts, prevent default, stop propagation, and send navigation sequences to the terminal.

Sequence Diagram

sequenceDiagram
actor User
participant Drawer as ThreadTerminalDrawer
participant Keybindings
participant Terminal as TerminalViewport
User->>Drawer: Press arrow key + modifier
Drawer->>Keybindings: terminalNavigationShortcutData(event, platform)
alt Navigation shortcut detected
Keybindings-->>Drawer: Return navigation sequence
Drawer->>Drawer: preventDefault & stopPropagation
Drawer->>Drawer: sendTerminalInput(sequence, "Failed to move cursor")
Drawer->>Terminal: Write navigation data
Terminal-->>User: Cursor moves
else No shortcut match
Keybindings-->>Drawer: Return null
Drawer->>Drawer: Continue to other handlers (clear shortcut, default)
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Title check⚠️ WarningThe PR title 'Improve terminal navigation shortcuts and streamline git action PR flow' is overly broad and vague. The actual changes focus on adding terminal navigation shortcuts and refactoring terminal input handling, but the 'streamline git action PR flow' portion is not present in the changeset.Consider revising the title to focus on the core change: 'Add terminal navigation shortcuts support' or 'Refactor terminal shortcuts with navigation support', removing the unrelated 'git action PR flow' reference.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Merge Conflict Detection✅ Passed✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codething/70a71c65

Comment @coderabbitai help to get the list of available commands and usage tips.

@macroscopeapp

macroscopeappBot commented Feb 14, 2026

Copy link
Copy Markdown
Contributor

Add terminal navigation shortcut handling and unify terminal input writing in ThreadTerminalDrawer.TerminalViewport to streamline git action PR flow

Introduce keybindings.terminalNavigationShortcutData for macOS and non-macOS word/line navigation, gate clear shortcuts to keydown events, and route all terminal input through sendTerminalInput in ThreadTerminalDrawer.tsx.

📍Where to Start

Start with terminalNavigationShortcutData and isTerminalClearShortcut in keybindings.ts, then review sendTerminalInput integration and the custom key handler in ThreadTerminalDrawer.tsx.


Macroscope summarized b7bbcb2.

@greptile-apps

greptile-appsBot commented Feb 14, 2026

Copy link
Copy Markdown

Greptile Summary

Enhanced terminal with keyboard shortcuts for cursor navigation by adding support for platform-specific word and line movement using modifier keys with arrow keys.

  • Added terminalNavigationShortcutData function to map keyboard events to terminal control sequences (ESC+b/f for word movement, Ctrl-A/E for line movement)
  • Refactored terminal input handling to use a generic sendTerminalInput helper function
  • Integrated navigation shortcuts into the terminal's custom key event handler with proper event prevention
  • Provided comprehensive test coverage for all platform-specific shortcuts (macOS Option/Cmd, non-macOS Ctrl/Alt)

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • The implementation is well-tested with comprehensive test coverage, follows existing patterns in the codebase, and properly handles platform-specific behavior. The refactoring improves code organization without changing existing functionality.
  • No files require special attention

Important Files Changed

FilenameOverview
apps/web/src/keybindings.tsAdded terminalNavigationShortcutData function to map platform-specific arrow key shortcuts (Option/Cmd on macOS, Ctrl/Alt on others) to terminal control sequences for word and line navigation
apps/web/src/components/ThreadTerminalDrawer.tsxRefactored to use generic sendTerminalInput helper and integrated terminal navigation shortcuts into the custom key event handler
apps/web/src/keybindings.test.tsAdded comprehensive test suite for terminalNavigationShortcutData covering macOS (Option/Cmd) and non-macOS (Ctrl/Alt) platforms with proper edge case coverage

Flowchart

flowchart TD
A[Keyboard Event] --> B{terminalNavigationShortcutData}
B --> C{Is Shift Key?}
C -->|Yes| D[Return null]
C -->|No| E{Is ArrowLeft/Right?}
E -->|No| D
E -->|Yes| F{Platform?}
F -->|macOS| G{Modifier Key?}
F -->|non-macOS| H{Modifier Key?}
G -->|Option/Alt only| I[Word Movement<br/>ESC+b or ESC+f]
G -->|Cmd/Meta only| J[Line Movement<br/>Ctrl-A or Ctrl-E]
G -->|Other| D
H -->|Ctrl only| I
H -->|Alt only| I
H -->|Other| D
I --> K[sendTerminalInput]
J --> K
K --> L[api.terminal.write]
L --> M[Terminal Updates Cursor]
Loading

Last reviewed commit: 9547718

- handle platform-specific modifier+arrow combos in terminal input
- reuse terminal write path for clear and navigation actions
- add shortcut tests for macOS and non-macOS mappings
@juliusmarminge

juliusmarminge commented Feb 16, 2026

Copy link
Copy Markdown
MemberAuthor

@greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

https://github.com/greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

@greptileai review

- guard terminal clear/navigation shortcut handlers to only process `keydown`
- add tests verifying `keyup` events are ignored
@juliusmarminge
juliusmarminge merged commit f864ef1 into mainFeb 16, 2026
2 of 3 checks passed

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
apps/web/src/keybindings.test.ts (1)

357-366: Consider adding a test for Alt+Arrow on non-macOS platforms.

The implementation at keybindings.ts lines 265-267 supports Alt+Arrow for word movement on non-macOS platforms, but this behavior isn't covered by tests. Adding a test would ensure this code path remains functional.

🧪 Suggested test addition
 it("maps Ctrl+Arrow on non-macOS to word movement", () => {
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowLeft", ctrlKey: true }), "Win32"),
"\u001bb",
);
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowRight", ctrlKey: true }), "Linux"),
"\u001bf",
);
});
++ it("maps Alt+Arrow on non-macOS to word movement", () => {+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowLeft", altKey: true }), "Win32"),+ "\u001bb",+ );+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowRight", altKey: true }), "Linux"),+ "\u001bf",+ );+ });

DavidIlie added a commit to DavidIlie/t3code that referenced this pull request Mar 13, 2026
…icker
Port upstream commits 3d35868..f70cb5d:
- Add pull-request thread setup for local and worktree modes (pingdotgg#42)
- Refine branch picker behavior and gate /checkout-pr by thread type (pingdotgg#43)
Includes PR resolution via GitHub CLI, worktree-aware PR checkout,
shared branch picker filtering, deferred query, conditional virtualization,
and /checkout-pr gating to local draft threads only.
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 6, 2026
The fork hid its version-control surface because the Moatless backend did
not serve it. It does now: stacked actions, pull-request resolution and
thread preparation, VCS status and refs, ref switching and diff preview
are all answered, so the flag was hiding a feature that works.
Removed the `versionControl` entry and both gates that named it, following
the flag table's own rule — a surface is turned on by deleting its flag,
not by setting it to true, so no gate is left that can never be false.
Claude Opus 5 via Claude Code.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
piero-dev25 added a commit to piero-dev25/devgame that referenced this pull request Aug 11, 2026
…otgg#39/pingdotgg#42)
Theme import dialog, theme preview label, environment-artwork toggle,
Linux keyring/KWallet remediation messages, and the thread-title
generation prompts (they primed the model with the product name for
titles the user reads). Internal identifiers, env vars, the protocol
scheme, and the legacy userData migration dir name are deliberately
untouched (pingdotgg#40 keychain/data-dir rotation hazard).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Improve terminal navigation shortcuts and streamline git action PR flow - #42

Merged
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65
Feb 16, 2026
Merged

Improve terminal navigation shortcuts and streamline git action PR flow#42
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Feb 14, 2026

Copy link
Copy Markdown
Member

adds basic terminal navigation


Open with Devin

Summary by CodeRabbit

  • New Features

    • Terminal now supports platform-specific navigation shortcuts (Option/Command on macOS, Ctrl/Alt on other platforms) with arrow keys for word- and line-level cursor movement.
    • Terminal keyboard handling unified so navigation and clear shortcuts are processed consistently.
  • Tests

    • Added comprehensive tests covering navigation shortcut behavior across platforms and event types.

@coderabbitai

coderabbitaiBot commented Feb 14, 2026

Copy link
Copy Markdown

Walkthrough

Adds platform-aware terminal navigation shortcut handling via a new terminalNavigationShortcutData export and integrates it into the terminal drawer, which now routes navigation and clear shortcuts through a generalized sendTerminalInput function.

Changes

Cohort / File(s)Summary
Keybindings Module
apps/web/src/keybindings.ts, apps/web/src/keybindings.test.ts
Adds terminalNavigationShortcutData(event, platform) and tests; extends ShortcutEventLike with optional type; enforces keydown-only handling and maps arrow+modifier combos to terminal navigation sequences (word/line moves) with platform-specific rules.
Terminal Drawer Integration
apps/web/src/components/ThreadTerminalDrawer.tsx
Replaces specialized clear handler with a generalized sendTerminalInput(data, fallbackError) and integrates terminalNavigationShortcutData to intercept navigation shortcuts, prevent default, stop propagation, and send navigation sequences to the terminal.

Sequence Diagram

sequenceDiagram
actor User
participant Drawer as ThreadTerminalDrawer
participant Keybindings
participant Terminal as TerminalViewport
User->>Drawer: Press arrow key + modifier
Drawer->>Keybindings: terminalNavigationShortcutData(event, platform)
alt Navigation shortcut detected
Keybindings-->>Drawer: Return navigation sequence
Drawer->>Drawer: preventDefault & stopPropagation
Drawer->>Drawer: sendTerminalInput(sequence, "Failed to move cursor")
Drawer->>Terminal: Write navigation data
Terminal-->>User: Cursor moves
else No shortcut match
Keybindings-->>Drawer: Return null
Drawer->>Drawer: Continue to other handlers (clear shortcut, default)
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Title check⚠️ WarningThe PR title 'Improve terminal navigation shortcuts and streamline git action PR flow' is overly broad and vague. The actual changes focus on adding terminal navigation shortcuts and refactoring terminal input handling, but the 'streamline git action PR flow' portion is not present in the changeset.Consider revising the title to focus on the core change: 'Add terminal navigation shortcuts support' or 'Refactor terminal shortcuts with navigation support', removing the unrelated 'git action PR flow' reference.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Merge Conflict Detection✅ Passed✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codething/70a71c65

Comment @coderabbitai help to get the list of available commands and usage tips.

@macroscopeapp

macroscopeappBot commented Feb 14, 2026

Copy link
Copy Markdown
Contributor

Add terminal navigation shortcut handling and unify terminal input writing in ThreadTerminalDrawer.TerminalViewport to streamline git action PR flow

Introduce keybindings.terminalNavigationShortcutData for macOS and non-macOS word/line navigation, gate clear shortcuts to keydown events, and route all terminal input through sendTerminalInput in ThreadTerminalDrawer.tsx.

📍Where to Start

Start with terminalNavigationShortcutData and isTerminalClearShortcut in keybindings.ts, then review sendTerminalInput integration and the custom key handler in ThreadTerminalDrawer.tsx.


Macroscope summarized b7bbcb2.

@greptile-apps

greptile-appsBot commented Feb 14, 2026

Copy link
Copy Markdown

Greptile Summary

Enhanced terminal with keyboard shortcuts for cursor navigation by adding support for platform-specific word and line movement using modifier keys with arrow keys.

  • Added terminalNavigationShortcutData function to map keyboard events to terminal control sequences (ESC+b/f for word movement, Ctrl-A/E for line movement)
  • Refactored terminal input handling to use a generic sendTerminalInput helper function
  • Integrated navigation shortcuts into the terminal's custom key event handler with proper event prevention
  • Provided comprehensive test coverage for all platform-specific shortcuts (macOS Option/Cmd, non-macOS Ctrl/Alt)

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • The implementation is well-tested with comprehensive test coverage, follows existing patterns in the codebase, and properly handles platform-specific behavior. The refactoring improves code organization without changing existing functionality.
  • No files require special attention

Important Files Changed

FilenameOverview
apps/web/src/keybindings.tsAdded terminalNavigationShortcutData function to map platform-specific arrow key shortcuts (Option/Cmd on macOS, Ctrl/Alt on others) to terminal control sequences for word and line navigation
apps/web/src/components/ThreadTerminalDrawer.tsxRefactored to use generic sendTerminalInput helper and integrated terminal navigation shortcuts into the custom key event handler
apps/web/src/keybindings.test.tsAdded comprehensive test suite for terminalNavigationShortcutData covering macOS (Option/Cmd) and non-macOS (Ctrl/Alt) platforms with proper edge case coverage

Flowchart

flowchart TD
A[Keyboard Event] --> B{terminalNavigationShortcutData}
B --> C{Is Shift Key?}
C -->|Yes| D[Return null]
C -->|No| E{Is ArrowLeft/Right?}
E -->|No| D
E -->|Yes| F{Platform?}
F -->|macOS| G{Modifier Key?}
F -->|non-macOS| H{Modifier Key?}
G -->|Option/Alt only| I[Word Movement<br/>ESC+b or ESC+f]
G -->|Cmd/Meta only| J[Line Movement<br/>Ctrl-A or Ctrl-E]
G -->|Other| D
H -->|Ctrl only| I
H -->|Alt only| I
H -->|Other| D
I --> K[sendTerminalInput]
J --> K
K --> L[api.terminal.write]
L --> M[Terminal Updates Cursor]
Loading

Last reviewed commit: 9547718

- handle platform-specific modifier+arrow combos in terminal input
- reuse terminal write path for clear and navigation actions
- add shortcut tests for macOS and non-macOS mappings
@juliusmarminge

juliusmarminge commented Feb 16, 2026

Copy link
Copy Markdown
MemberAuthor

@greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

https://github.com/greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

@greptileai review

- guard terminal clear/navigation shortcut handlers to only process `keydown`
- add tests verifying `keyup` events are ignored
@juliusmarminge
juliusmarminge merged commit f864ef1 into mainFeb 16, 2026
2 of 3 checks passed

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
apps/web/src/keybindings.test.ts (1)

357-366: Consider adding a test for Alt+Arrow on non-macOS platforms.

The implementation at keybindings.ts lines 265-267 supports Alt+Arrow for word movement on non-macOS platforms, but this behavior isn't covered by tests. Adding a test would ensure this code path remains functional.

🧪 Suggested test addition
 it("maps Ctrl+Arrow on non-macOS to word movement", () => {
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowLeft", ctrlKey: true }), "Win32"),
"\u001bb",
);
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowRight", ctrlKey: true }), "Linux"),
"\u001bf",
);
});
++ it("maps Alt+Arrow on non-macOS to word movement", () => {+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowLeft", altKey: true }), "Win32"),+ "\u001bb",+ );+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowRight", altKey: true }), "Linux"),+ "\u001bf",+ );+ });

DavidIlie added a commit to DavidIlie/t3code that referenced this pull request Mar 13, 2026
…icker
Port upstream commits 3d35868..f70cb5d:
- Add pull-request thread setup for local and worktree modes (pingdotgg#42)
- Refine branch picker behavior and gate /checkout-pr by thread type (pingdotgg#43)
Includes PR resolution via GitHub CLI, worktree-aware PR checkout,
shared branch picker filtering, deferred query, conditional virtualization,
and /checkout-pr gating to local draft threads only.
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 6, 2026
The fork hid its version-control surface because the Moatless backend did
not serve it. It does now: stacked actions, pull-request resolution and
thread preparation, VCS status and refs, ref switching and diff preview
are all answered, so the flag was hiding a feature that works.
Removed the `versionControl` entry and both gates that named it, following
the flag table's own rule — a surface is turned on by deleting its flag,
not by setting it to true, so no gate is left that can never be false.
Claude Opus 5 via Claude Code.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
piero-dev25 added a commit to piero-dev25/devgame that referenced this pull request Aug 11, 2026
…otgg#39/pingdotgg#42)
Theme import dialog, theme preview label, environment-artwork toggle,
Linux keyring/KWallet remediation messages, and the thread-title
generation prompts (they primed the model with the product name for
titles the user reads). Internal identifiers, env vars, the protocol
scheme, and the legacy userData migration dir name are deliberately
untouched (pingdotgg#40 keychain/data-dir rotation hazard).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Improve terminal navigation shortcuts and streamline git action PR flow - #42

Merged
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65
Feb 16, 2026
Merged

Improve terminal navigation shortcuts and streamline git action PR flow#42
juliusmarminge merged 2 commits into
mainfrom
codething/70a71c65

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Feb 14, 2026

Copy link
Copy Markdown
Member

adds basic terminal navigation


Open with Devin

Summary by CodeRabbit

  • New Features

    • Terminal now supports platform-specific navigation shortcuts (Option/Command on macOS, Ctrl/Alt on other platforms) with arrow keys for word- and line-level cursor movement.
    • Terminal keyboard handling unified so navigation and clear shortcuts are processed consistently.
  • Tests

    • Added comprehensive tests covering navigation shortcut behavior across platforms and event types.

@coderabbitai

coderabbitaiBot commented Feb 14, 2026

Copy link
Copy Markdown

Walkthrough

Adds platform-aware terminal navigation shortcut handling via a new terminalNavigationShortcutData export and integrates it into the terminal drawer, which now routes navigation and clear shortcuts through a generalized sendTerminalInput function.

Changes

Cohort / File(s)Summary
Keybindings Module
apps/web/src/keybindings.ts, apps/web/src/keybindings.test.ts
Adds terminalNavigationShortcutData(event, platform) and tests; extends ShortcutEventLike with optional type; enforces keydown-only handling and maps arrow+modifier combos to terminal navigation sequences (word/line moves) with platform-specific rules.
Terminal Drawer Integration
apps/web/src/components/ThreadTerminalDrawer.tsx
Replaces specialized clear handler with a generalized sendTerminalInput(data, fallbackError) and integrates terminalNavigationShortcutData to intercept navigation shortcuts, prevent default, stop propagation, and send navigation sequences to the terminal.

Sequence Diagram

sequenceDiagram
actor User
participant Drawer as ThreadTerminalDrawer
participant Keybindings
participant Terminal as TerminalViewport
User->>Drawer: Press arrow key + modifier
Drawer->>Keybindings: terminalNavigationShortcutData(event, platform)
alt Navigation shortcut detected
Keybindings-->>Drawer: Return navigation sequence
Drawer->>Drawer: preventDefault & stopPropagation
Drawer->>Drawer: sendTerminalInput(sequence, "Failed to move cursor")
Drawer->>Terminal: Write navigation data
Terminal-->>User: Cursor moves
else No shortcut match
Keybindings-->>Drawer: Return null
Drawer->>Drawer: Continue to other handlers (clear shortcut, default)
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Title check⚠️ WarningThe PR title 'Improve terminal navigation shortcuts and streamline git action PR flow' is overly broad and vague. The actual changes focus on adding terminal navigation shortcuts and refactoring terminal input handling, but the 'streamline git action PR flow' portion is not present in the changeset.Consider revising the title to focus on the core change: 'Add terminal navigation shortcuts support' or 'Refactor terminal shortcuts with navigation support', removing the unrelated 'git action PR flow' reference.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Merge Conflict Detection✅ Passed✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codething/70a71c65

Comment @coderabbitai help to get the list of available commands and usage tips.

@macroscopeapp

macroscopeappBot commented Feb 14, 2026

Copy link
Copy Markdown
Contributor

Add terminal navigation shortcut handling and unify terminal input writing in ThreadTerminalDrawer.TerminalViewport to streamline git action PR flow

Introduce keybindings.terminalNavigationShortcutData for macOS and non-macOS word/line navigation, gate clear shortcuts to keydown events, and route all terminal input through sendTerminalInput in ThreadTerminalDrawer.tsx.

📍Where to Start

Start with terminalNavigationShortcutData and isTerminalClearShortcut in keybindings.ts, then review sendTerminalInput integration and the custom key handler in ThreadTerminalDrawer.tsx.


Macroscope summarized b7bbcb2.

@greptile-apps

greptile-appsBot commented Feb 14, 2026

Copy link
Copy Markdown

Greptile Summary

Enhanced terminal with keyboard shortcuts for cursor navigation by adding support for platform-specific word and line movement using modifier keys with arrow keys.

  • Added terminalNavigationShortcutData function to map keyboard events to terminal control sequences (ESC+b/f for word movement, Ctrl-A/E for line movement)
  • Refactored terminal input handling to use a generic sendTerminalInput helper function
  • Integrated navigation shortcuts into the terminal's custom key event handler with proper event prevention
  • Provided comprehensive test coverage for all platform-specific shortcuts (macOS Option/Cmd, non-macOS Ctrl/Alt)

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • The implementation is well-tested with comprehensive test coverage, follows existing patterns in the codebase, and properly handles platform-specific behavior. The refactoring improves code organization without changing existing functionality.
  • No files require special attention

Important Files Changed

FilenameOverview
apps/web/src/keybindings.tsAdded terminalNavigationShortcutData function to map platform-specific arrow key shortcuts (Option/Cmd on macOS, Ctrl/Alt on others) to terminal control sequences for word and line navigation
apps/web/src/components/ThreadTerminalDrawer.tsxRefactored to use generic sendTerminalInput helper and integrated terminal navigation shortcuts into the custom key event handler
apps/web/src/keybindings.test.tsAdded comprehensive test suite for terminalNavigationShortcutData covering macOS (Option/Cmd) and non-macOS (Ctrl/Alt) platforms with proper edge case coverage

Flowchart

flowchart TD
A[Keyboard Event] --> B{terminalNavigationShortcutData}
B --> C{Is Shift Key?}
C -->|Yes| D[Return null]
C -->|No| E{Is ArrowLeft/Right?}
E -->|No| D
E -->|Yes| F{Platform?}
F -->|macOS| G{Modifier Key?}
F -->|non-macOS| H{Modifier Key?}
G -->|Option/Alt only| I[Word Movement<br/>ESC+b or ESC+f]
G -->|Cmd/Meta only| J[Line Movement<br/>Ctrl-A or Ctrl-E]
G -->|Other| D
H -->|Ctrl only| I
H -->|Alt only| I
H -->|Other| D
I --> K[sendTerminalInput]
J --> K
K --> L[api.terminal.write]
L --> M[Terminal Updates Cursor]
Loading

Last reviewed commit: 9547718

- handle platform-specific modifier+arrow combos in terminal input
- reuse terminal write path for clear and navigation actions
- add shortcut tests for macOS and non-macOS mappings
@juliusmarminge

juliusmarminge commented Feb 16, 2026

Copy link
Copy Markdown
MemberAuthor

@greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

https://github.com/greptileai review

@juliusmarminge

Copy link
Copy Markdown
MemberAuthor

@greptileai review

- guard terminal clear/navigation shortcut handlers to only process `keydown`
- add tests verifying `keyup` events are ignored
@juliusmarminge
juliusmarminge merged commit f864ef1 into mainFeb 16, 2026
2 of 3 checks passed

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
apps/web/src/keybindings.test.ts (1)

357-366: Consider adding a test for Alt+Arrow on non-macOS platforms.

The implementation at keybindings.ts lines 265-267 supports Alt+Arrow for word movement on non-macOS platforms, but this behavior isn't covered by tests. Adding a test would ensure this code path remains functional.

🧪 Suggested test addition
 it("maps Ctrl+Arrow on non-macOS to word movement", () => {
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowLeft", ctrlKey: true }), "Win32"),
"\u001bb",
);
assert.strictEqual(
terminalNavigationShortcutData(event({ key: "ArrowRight", ctrlKey: true }), "Linux"),
"\u001bf",
);
});
++ it("maps Alt+Arrow on non-macOS to word movement", () => {+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowLeft", altKey: true }), "Win32"),+ "\u001bb",+ );+ assert.strictEqual(+ terminalNavigationShortcutData(event({ key: "ArrowRight", altKey: true }), "Linux"),+ "\u001bf",+ );+ });

DavidIlie added a commit to DavidIlie/t3code that referenced this pull request Mar 13, 2026
…icker
Port upstream commits 3d35868..f70cb5d:
- Add pull-request thread setup for local and worktree modes (pingdotgg#42)
- Refine branch picker behavior and gate /checkout-pr by thread type (pingdotgg#43)
Includes PR resolution via GitHub CLI, worktree-aware PR checkout,
shared branch picker filtering, deferred query, conditional virtualization,
and /checkout-pr gating to local draft threads only.
aorwall added a commit to aorwall/t3code that referenced this pull request Aug 6, 2026
The fork hid its version-control surface because the Moatless backend did
not serve it. It does now: stacked actions, pull-request resolution and
thread preparation, VCS status and refs, ref switching and diff preview
are all answered, so the flag was hiding a feature that works.
Removed the `versionControl` entry and both gates that named it, following
the flag table's own rule — a surface is turned on by deleting its flag,
not by setting it to true, so no gate is left that can never be false.
Claude Opus 5 via Claude Code.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
piero-dev25 added a commit to piero-dev25/devgame that referenced this pull request Aug 11, 2026
…otgg#39/pingdotgg#42)
Theme import dialog, theme preview label, environment-artwork toggle,
Linux keyring/KWallet remediation messages, and the thread-title
generation prompts (they primed the model with the product name for
titles the user reads). Internal identifiers, env vars, the protocol
scheme, and the legacy userData migration dir name are deliberately
untouched (pingdotgg#40 keychain/data-dir rotation hazard).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge