docs: fix terminal docs factual issues + keybinding/link style pass, reconcile with main, settle key-chord casing (GROW-6086) - #595
Conversation
…ng, vim)
- warpify/subshells.mdx: replace the stale "by default" subshell-compatible
command list with the actual SUBSHELL_COMMAND_REGEXES defaults from
app/src/terminal/warpify/settings.rs (bash/zsh/fish, docker|podman
run/exec, poetry shell, pipenv shell, aws-vault exec, flox activate, wsl
on Windows). Removes gcloud compute ssh / eb ssh, which have no built-in
regex. Also tightens the denylist reference to the exact live UI list
name "Denylisted commands" (settings_view/warpify_page.rs).
- windows/global-hotkey.mdx: update the pre-Ventura System Preferences path
to System Settings, using the macOS Apple-icon menu-path convention.
- more-features/full-screen-apps.mdx: fix the "Mouse Reporting" Command
Palette entry casing to match the real dynamic action description
("Enable/Disable mouse reporting", lowercase "mouse reporting") produced
by ToggleSettingActionPair in settings_view/features_page.rs /
settings_view/mod.rs.
- editor/vim.mdx: fix the "Vim Keybindings" Command Palette reference to
reflect the real dynamic entry "Enable/Disable editing commands with Vim
keybindings", and fix the Settings toggle label to the current text
"Edit code and commands with Vim keybindings" (VimModeWidget in
settings_view/features_page.rs). The "Exit Vim insert mode" Command
Palette reference was already correct after the docs migration.
Co-Authored-By: Warp <agent@warp.dev>
Sweeps docs/warp/terminal (src/content/docs/terminal/), excluding the SSH/Warpify pages pending a separate reframe decision. - Normalize legacy key-chord notation (CMD-P, SHIFT-CMD-C, CTRL-TAB, and variants using +, spaces, or Windows META bindings) to the AGENTS.md convention: `⌘+P`, `⌘+Shift+C`, `Ctrl+Tab`, arrow symbols for Up/Down/Left/Right, and spelled-out named keys (Enter, Esc, Tab, Space, Backspace, Delete, Home, End, Page Up, Page Down). Left literal shell/config strings and mouse-click terms (RIGHT-CLICK, TRIPLE-CLICK) untouched. - editor/index.mdx: while normalizing the keybinding reference table, fixed two cells that had been corrupted into single elements: a "Ctrl+K Cmd+Delete" cell split into two alternatives, and a "start / end of line" row that had an erroneous extra "Cmd+Down" binding (verified against editor/view/mod.rs — Cmd+Down maps to a different action, moving to the bottom of the buffer). - entry/yaml-workflows.mdx: replace "commands.dev" used as bare link text with descriptive anchor text per the link-quality guide. Ran `.agents/skills/style_lint/style_lint.py` and `validate_ui_refs.py` scoped to docs/warp/terminal and confirmed no other actionable issues (remaining flags are either false positives — established page-level feature names like "Tab Configs"/"Session Navigation", or genuine proper nouns like "Markdown"/"Finder" — or out of scope, like screenshot-width standardization and glossary suggestions). Co-Authored-By: Warp <agent@warp.dev>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…g tables Second-pass review of PR #595 found the macOS Accessibility permission step used stale "checkbox" wording, and traced ten separate defects in the editor/index.mdx keybinding tables that predate this PR (verified against app/src/editor/view/mod.rs): - windows/global-hotkey.mdx: current macOS System Settings shows a per-app toggle for Accessibility access, not a checkbox. Reworded to "toggle the switch next to Warp on", per the style guide's preference for "toggle" over "checkbox" language. - editor/index.mdx: rebuilt all three keybinding tables (macOS, Windows, Linux) row by row against editor/view/mod.rs. Fixes: - Split the mac "Ctrl+K / Cmd+Delete" row (CutAllRight vs DeleteAllRight are different actions with different clipboard behavior) into two rows with accurate descriptions; the Windows/Linux "Ctrl+K" row had the same delete-vs-cut conflation and no true delete-all-right binding exists there, so it's now a single cut-only row. - Fixed delete-word bindings on all three platforms: they duplicated the cut-word bindings (Option+D/Alt+D). Real delete bindings are Option+Delete (mac) / Ctrl+Delete (Windows, Linux) to the right, and Ctrl+Backspace (Windows, Linux; was wrongly Alt+Backspace) to the left. - Removed the non-Mac "Ctrl+Shift+K clear selected lines" row — ClearLines is mac-only; Ctrl+U already documents the cross-platform equivalent. - Reworded the mac "Select everything left/right" row (⌘+Shift+←/→) to "Select to the start/end of the line", matching SelectToLineStart / SelectToLineEnd, and filled the equivalent empty Windows/Linux cells with Shift+Home / Shift+End and the same wording. - Filled the empty Windows/Linux "select character left/right" cells with Shift+←/→ (a cross-platform binding already shown correctly on mac). - Removed the non-Mac "Ctrl+A/Ctrl+E move cursor to start/end of line" row — that binding is mac-only; Linux's Ctrl+E is a distinct "Emacs-style binding" hint, not cursor movement, and Windows has neither. - Fixed non-Mac word-navigation: "Alt+←/→" is actually the (mac-only) subword binding; the real word-move binding on Windows/Linux is Ctrl+←/→. Removed the non-Mac subword row since no default binding exists there. Of the ~20 rows in each table, 10 were changed and the rest were confirmed correct against source (unchanged): Escape, Ctrl+L, Ctrl+H, Ctrl+C (clear buffer), Ctrl+U, Copy/Cut/Paste, cut-word (Ctrl+W / Option+D or Alt+D), mac subword nav, mac move-to-line-start/end, select character (mac), select-word (mac Option+Shift, non-Mac Meta+Shift+B/F), select up/down, select-all, insert newline, Command Search, and Split pane. Co-Authored-By: Warp <agent@warp.dev>
|
I'm starting a first review of this pull request. You can view the conversation on Warp. I completed the review and no human review was requested for this pull request. Comment Powered by Oz |
There was a problem hiding this comment.
Overview
This PR updates Terminal docs to correct stale factual references and normalize shortcut/link formatting. Most changes are documentation-only cleanups, but the editor shortcut table now drops an existing Windows/Linux start/end-of-line shortcut while fixing other keybinding rows.
Concerns
- Windows and Linux no longer document the default
Home/Endstart/end-of-line bindings interminal/editor/, even though those bindings still exist in the Warp client. - One added autosuggestions line still uses legacy all-caps key casing for
END.
Security
No security-sensitive code, configuration, dependencies, or secrets are changed in this documentation-only diff.
Verdict
Found: 0 critical, 1 important, 0 suggestions
Request changes
Comment /warp-agent-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
Resolves conflicts from PR #629 (SSH-half) landing underneath this branch: - warpify/subshells.mdx: keep both the wsl bullet (this PR) and the gcloud/eb/doctl SSH-like-detection bullet (main), plus main's docker run/exec wording. - windows/global-hotkey.mdx: keep main's literal-symbol punctuation keys (backtick/period/tilde), matching the AGENTS.md ⌘+Shift++ precedent for punctuation keys; merge both accessibility-toggle wording fixes.
Normalizes legacy ALL-CAPS key-chord notation (CMD-X, CTRL-X, SHIFT-X, ALT-X, META-X, PAGE UP/DOWN, arrow-key words, etc.) to the AGENTS.md convention (title-case modifier names, + separator, macOS \u2318 glyph, arrow symbols, spelled-out named keys) across 12 pages outside src/content/docs/terminal/, which PR #595 already covered: - getting-started/keyboard-shortcuts.mdx (the full shortcuts reference table) - agents/local-agents/{active-ai,generate,code-diffs}.mdx - agents/local-agents/agent-context/blocks-as-context.mdx - agents/local-agents/interacting-with-agents/voice.mdx - knowledge-and-collaboration/warp-drive/{index,notebooks,prompts,workflows}.mdx - code/code-editor/find-and-replace.mdx - support-and-community/privacy-and-security/privacy.mdx (prose mentions in the telemetry events table only; event name identifiers untouched) Mouse-click terms (RIGHT-CLICK), literal shell/config strings, and keybinding config values are left untouched. src/content/docs/changelog/ is intentionally excluded, matching this repo's existing tooling convention (style_lint and validate_ui_refs both skip changelog/ by default) of treating changelog entries as a frozen historical record. No bare-URL link text was found outside terminal/ during this pass.
A second pass of the repo-wide sweep: normalizes the 'CMD + X' / 'CTRL + SHIFT + X' spaced-plus-sign legacy notation (distinct from the hyphenated CMD-X form fixed in the previous commit) to the settled convention, across 9 more pages outside src/content/docs/terminal/. Also fixes a couple of already-shipped inconsistencies immediately adjacent to touched lines in full-terminal-use.mdx (bare \u2318I / \u2318\u21a9 missing the + separator) for internal consistency within the same file/section.
Finding 2 from code review rework cycle 1: the Windows and Linux keybinding tables in terminal/editor/index.mdx omitted the default Home/End row for moving the cursor to the start/end of the line (distinct from the existing Shift+Home/Shift+End 'select' row). Verified against app/src/editor/view/mod.rs: editor_view:home and editor_view:end bind to the bare 'home'/'end' keys on Linux/Windows (and to cmd-left/cmd-right on macOS, already documented in the macOS table's combined row).
Matches the docs key-name casing convention (End, not END).
…minal-docs-factual-style # Conflicts: # src/content/docs/terminal/entry/yaml-workflows.mdx
Summary
Non-SSH half of the GROW-6086 terminal docs follow-up: the remaining factual issues (stale subshell defaults, dead/mislabeled Command Palette references, a pre-Ventura macOS path) plus a keybinding/link-text style pass across
src/content/docs/terminal/, extended repo-wide in this rework pass. This rework also reconciles the branch withmain(PR #629, the SSH half, merged underneath it) and settles the key-chord casing question the requester raised.The SSH/Warpify reframe is deliberately out of scope for this PR.
terminal/warpify/ssh.mdx,terminal/warpify/ssh-legacy.mdx,terminal/warpify/index.mdx, and the Warpify SSH section ofterminal/settings/all-settings.mdxare untouched — that's a separate information-architecture decision pending with the requester.Originating thread: https://warpdev.slack.com/archives/C09BVK0PL3Y/p1787780357018299
Related issues
GROW-6086 — Update Terminal docs
Changes
Commit 1 — factual fixes
warpify/subshells.mdx— replaced the stale "by default" subshell-compatible command list with the actualSUBSHELL_COMMAND_REGEXESdefaults fromapp/src/terminal/warpify/settings.rs(bash/zsh/fish,docker/podman run/exec,poetry shell,pipenv shell,aws-vault exec,flox activate,wslon Windows). Removedgcloud compute ssh/eb ssh, which have no built-in regex. Also tightened the denylist reference to the exact live UI list name Denylisted commands (settings_view/warpify_page.rs).windows/global-hotkey.mdx— updated the pre-VenturaSystem Preferencespath to System Settings, using the macOS Apple-icon menu-path convention.more-features/full-screen-apps.mdx— fixed the "Mouse Reporting" Command Palette entry casing to match the real dynamic action description ("Enable/Disable mouse reporting", lowercase) produced byToggleSettingActionPairinsettings_view/features_page.rs/settings_view/mod.rs.editor/vim.mdx— fixed the "Vim Keybindings" Command Palette reference to the real dynamic entry "Enable/Disable editing commands with Vim keybindings", and fixed the Settings toggle label to the current text "Edit code and commands with Vim keybindings" (VimModeWidget). "Exit Vim insert mode" was already correct.Commit 2 — style pass
CMD-P,SHIFT-CMD-C,CTRL-TAB, plus+/space-separated and WindowsMETAvariants) to theAGENTS.mdconvention across ~30 files:⌘+P,⌘+Shift+C,Ctrl+Tab, arrow symbols for Up/Down/Left/Right, and spelled-out named keys (Enter,Esc,Home,End,Page Up,Page Down, etc). Left literal shell/config strings and mouse-click terms (RIGHT-CLICK,TRIPLE-CLICK) untouched.editor/index.mdx— while normalizing the keybinding table, fixed two cells that had been corrupted into single elements during the docs migration: aCtrl+K Cmd+Deletecell split into two alternatives, and a "start / end of line" row that had an erroneous extraCmd+Downbinding (verified againsteditor/view/mod.rs—Cmd+Downmaps to a different action, moving to the bottom of the buffer).entry/yaml-workflows.mdx— replacedcommands.devused as bare link text with descriptive anchor text.Commit 3 — review-driven fixes
A second review pass found the two-cell fix in
editor/index.mdxabove hadn't gone far enough, plus one more wording issue:windows/global-hotkey.mdx— current macOS System Settings shows a per-app toggle for Accessibility access, not a checkbox. Reworded the step accordingly.editor/index.mdx— rebuilt all three keybinding tables (macOS, Windows, Linux) row by row againsteditor/view/mod.rs, finding eight more defects beyond the two already fixed: a delete-vs-cut conflation for "everything to the right" (also present on Windows/Linux, where no true delete-only binding exists), delete-word bindings that duplicated the cut-word bindings on all three platforms, a non-Mac "clear selected lines" row with no matching binding, a mac "select everything left/right" row mislabeled (it's actually "select to line start/end",SelectToLineStart/SelectToLineEnd) with the equivalent Windows/Linux cells left empty, a non-Mac "move cursor to start/end of line" row using a mac-only binding (LinuxCtrl+Eis actually a distinct "Emacs-style binding" hint, not cursor movement), and swapped word/subword navigation chords on Windows/Linux. Of ~20 rows per table, 10 were changed; the rest were confirmed correct against source and left unchanged.Commit 4 — reconcile with main (PR #629)
Rebased/merged
maininto the branch to pick up PR #629 (the SSH half, merged underneath this PR). Two files conflicted:warpify/subshells.mdx— kept both sides: this PR'swsl(Windows only) bullet and main'sgcloud compute ssh/eb ssh/doctl compute sshbullet (recognized via the SSH-like command detection path added by docs(terminal): fix legacy SSH, settings, subshells, and hotkey docs #629, confirmed againstapp/src/terminal/ssh/util.rs'sSshWarpifyCommand::matches— these commands aren't inSUBSHELL_COMMAND_REGEXESbut are still subshell-compatible through a separate code path). Also kept main'sdocker run/podman runwording.windows/global-hotkey.mdx— kept main's literal-symbol punctuation keys (⌘+`,⌘+.,⌘+~) over this PR's spelled-out⌘+Backtick/⌘+Period/⌘+Tilde, matching theAGENTS.md⌘+Shift++precedent for punctuation keys (see the notation survey below for why literal symbols were kept generally). Merged both independent accessibility-toggle wording fixes. Also restored a missing `` (U+F8FF Apple icon) before the macOS menu path on the line I touched, perAGENTS.md's "preserving the Apple icon" note — it had been silently stripped on both sides of the merge.Verified after resolving: nothing from this PR's Commits 1–3 was reverted, and nothing from
main/#629 was dropped — the merge commit is additive on both files.Commit 5 — repo-wide key-chord notation sweep
Per the requester's "make sure our docs follow these conventions" ask, extended the same key-chord normalization from
src/content/docs/terminal/to the rest ofsrc/content/docs/: 21 pages acrossgetting-started/,agents/,knowledge-and-collaboration/,code/,support-and-community/, andguides/(full list in the two commits). Normalized legacyCMD-X/CTRL-Xhyphenated notation andCMD + Xspaced-plus-sign notation to the settled convention (title-case modifier names,+separator,⌘glyph on macOS, arrow symbols, spelled-out named keys). Left mouse-click terms (RIGHT-CLICK), literal shell/config strings, and keybinding config values untouched, per the requester's brief.src/content/docs/changelog/was intentionally excluded — it's a frozen historical record, and bothstyle_lintandvalidate_ui_refsalready skip it by default. No bare-URL link text was found outsideterminal/during this pass, so there was nothing further to fix there.Key-chord casing: survey and decision
The requester said they personally prefer
CTRL+SHIFT+C(ALL CAPS) but asked for a survey of other developer tools to decide, not their stated preference. Surveyed:Ctrl+Shift+P,⌘⇧A,Cmd+P), never ALL CAPS.Command+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux)— title case.C-,M-,S-); in prose/man pages, chords are writtenCtrl-b/C-b— never ALL CAPS.Ctrl+Alt+Del"), Google's developer doc style guide ("spelled-out modifier keys", standard capitalization), and Apple Style Guide/HIG (Command-C,Shift-Command-Z, hyphen-separated word form;⌘Cfor the glyph form) all mandate title case, never ALL CAPS.:helpdocs are a known, long-standing exception that usesCTRL-in prose. Cloudflare's (unrelated) developer style guide explicitly recommends abbreviated ALL CAPS (CTRL + C). These are the only two data points favoring the requester's preference, against roughly a dozen tools/guides on the other side.Decision: keep the current convention (title-case:
Ctrl+Shift+C, notCTRL+SHIFT+C). This directly contradicts the requester's statedCTRL+SHIFT+Cpreference — the evidence overwhelmingly favors the guide's existing rule, so no change was made toAGENTS.md,.agents/references/, orstyle_lint. Note:style_lintdoes not currently have an automated check for key-chord casing at all (confirmed by readingstyle_lint.py), so there was no linter rule to update either way; the convention is enforced byAGENTS.mdprose only.Migration status (what survived vs. what this PR fixes)
Per the orchestrator's request, here's what changed between the original gitbook-era triage and the migrated Astro/Starlight repo:
terminal/); the "here"/"this page" bare link text items (0 remain); Universal Input references (confined to the properlysidebar: hiddenlegacy page with a caution banner); denylist heading/wording insubshells.mdx(only the exact UI element name needed tightening);vim.mdx's "Exit Vim insert mode" casing.System Preferencespath, the Mouse Reporting and Vim Keybindings Command Palette casing.editor/index.mdx(see above) — a migration artifact, not something the original gitbook triage could have found since that content didn't exist in that form pre-migration.Unverified claims
None — all UI labels, Command Palette entries, and Settings paths touched in this PR were verified directly against
warp-internal/warpsource (app/src/terminal/warpify/settings.rs,app/src/terminal/ssh/util.rs,app/src/settings_view/warpify_page.rs,app/src/settings_view/features_page.rs,app/src/settings_view/mod.rs,app/src/editor/view/mod.rs,app/src/search/command_palette/data_sources.rs).One tooling note for reviewers:
vim.mdx's "Enable/Disable editing commands with Vim keybindings" Command Palette reference still shows as unmatched byvalidate_ui_refs.py. This is a validator limitation, not a doc error — the entry is a dynamically-generatedFixedBindingdescription (viaToggleSettingActionPair,app/src/settings_view/mod.rs), and the extraction script only parses staticEditableBinding::new(...)calls. I traced the exact string throughsettings_view/features_page.rs→ToggleSettingActionPair::new("editing commands with Vim keybindings", ...)→format!("Enable {description_suffix}")to confirm it's correct.Validation
npm run build— passes.npm run typecheck— 0 errors, 0 warnings (7 pre-existing hints only, unrelated to this PR).python3 .agents/skills/validate_ui_refs/validate_ui_refs.py --check-paths --check-commands --check-format --warp ../warp— 0 settings-path issues, 0 format issues repo-wide; 1 command-palette "issue" which is the known validator limitation described above (verified correct against source).python3 .agents/skills/check_for_broken_links/check_links.py --internal-only— 0 broken links (3918 internal links checked across 379 files).python3 .agents/skills/style_lint/style_lint.py --all— 1362 issues repo-wide, all pre-existing and outside the categories this PR addresses (callout density/consecutive, header-case, screenshot-width, tone, product-casing, deprecated-term, oz-term, unrecognized-term, link-anchor on unrelated pages).style_linthas no key-chord/casing check at all (confirmed by reading the script), so there is no linter category for the convention this PR enforces — it'sAGENTS.md-prose-enforced only. Every page this PR touches was spot-checked and none introduce a new style_lint issue in a category the diff touches.main(2 conflicts resolved, see Commit 4); finalgh pr viewmergeability check run before marking ready (see PR checks).Follow-ups
ssh-feature-support.mdscope, etc.).header-case(14+ flags) — reviewed by hand in the original terminal/ pass; all are false positives (established feature names or genuine proper nouns). No changes made.ui-backtick— file names in backticks, not UI elements; backticks are correct per the style guide. No changes made.screenshot-width(112+ flags repo-wide) — standardizing<figure>maxWidthvalues is a real but separate cleanup; out of scope here since it's unrelated to the factual/keybinding/link fixes this issue asked for, and the brief said not to touch screenshots.unrecognized-term(97+ flags repo-wide) — glossary-addition suggestions only, not errors.style_lintcategories surfaced by--all(callout density, tone buzzwords, product-casing, deprecated-term, oz-term) are pre-existing and out of scope for this key-chord/factual-accuracy PR; not addressed here.Rework changes (cycle 1)
Code review returned
rework_neededwith two findings. Both addressed:[IMPORTANT] Missing
Home/Endrow interminal/editor/index.mdxWindows/Linux tables — Fixed. Added aHome/Endrow ("Move the cursor to the start / end of the line") to both tables, matching the macOS table's existing combined row. Verified againstapp/src/editor/view/mod.rs:editor_view:home/editor_view:endbind the barehome/endkeys on Linux and Windows. This is distinct from the existingShift+Home/Shift+Endselect-to-line-start/end row, which was already correct and untouched.[IMPORTANT]
terminal/editor/vim.mdx:22Command Palette reference disputed as non-existent — Disagree, with source evidence; left as-is pending human review. The reviewer's claim conflicts with the original claim in this PR body. I re-traced the full call chain in/workspace/warp:app/src/settings_view/features_page.rs:492-505callsToggleSettingActionPair::new("editing commands with Vim keybindings", ..., context, flags::VIM_MODE_CONTEXT_FLAG), and this call is pushed intotoggle_binding_pairs, which is passed toToggleSettingActionPair::add_toggle_setting_action_pairs_as_bindings(toggle_binding_pairs, app)at line 705 of the same file (i.e. it is not dead code / not filtered out).app/src/settings_view/mod.rs:840-863:ToggleSettingActionPair::new's own doc comment statesdescription_suffix"will be visible to the user, e.g.Enable {description_suffix}orDisable {description_suffix}", and buildsdescriptions.enable = format!("Enable {description_suffix}")— producing the exact string "Enable editing commands with Vim keybindings" quoted in the doc.context_prefix"should beWorkspaceto have the action pair display in the command palette."app/src/workspace/mod.rs:105callssettings_view::init_actions_from_parent_view(app, &id!("Workspace"), ...)— confirmingcontext_prefixfor this specific pair actually isWorkspace.app/src/settings_view/mod.rs:897-973(add_toggle_setting_action_pairs_as_bindings) buildsFixedBinding::empty(descriptions.enable, ...)/descriptions.disableand callsapp.register_fixed_bindings(enable_bindings)/(disable_bindings)— these are real, registered bindings, not discarded.app/src/search/command_palette/data_sources.rs:43-44,113-116: the Command Palette'sactions_data_source(CommandBindingDataSource) is built from the app'sbinding_source, which aggregates all registered bindings (bothEditableBindingandFixedBinding), and is wired into the palette'sActionsfilter.This traces a complete, unbroken path from the exact doc string to a real registered Command Palette action. The reviewer's counter-evidence (
VimModeWidget::search_terms()returning"vim mode keybindings"in the same file) is a different, unrelated mechanism — that's the fuzzy-match search string for the Settings page widget (found via Settings search), not the Command Palette action list. Both can and do coexist. I could not find any code path that filters this specificFixedBindingout of the Command Palette before display.Given this, I believe the original PR claim stands:
validate_ui_refs.py's--check-commandsstatic extractor genuinely cannot see this reference because it's assembled at runtime viaformat!()insideToggleSettingActionPair, not a staticEditableBinding::new("...")call the extractor's regex can parse (this exact class of miss is already acknowledged invalidate_ui_refs.py's own_settings_toggle_phrasesallowlist, which separately excludes"vim keybindings"from the extractor for the same reason). I have not changedvim.mdxor this PR body's original claim about it.validate_ui_refs --check-commandsstill reports this single reference as unmatched — flagging it explicitly here rather than silently leaving it, per the reviewer's own escalation path, so a human can make the final call with both sides' evidence in hand.