Terminal Grid Personal
Personal source fork of Terminal Grid, kept under the upstream MIT license.
This fork exists to make local hotfixes durable at source level instead of editing the installed Marketplace extension directory.
Personal Changes
- Extension identity is
neliro.terminal-grid-personal.
- Display name is
Terminal Grid Personal.
- Commands use the
terminalGridPersonal.* prefix.
- Settings use the
terminalGridPersonal.* namespace.
- Webview panel type is
terminalGridPersonal.
- Sidebar view id is
terminalGridPersonal.sidebarView.
- MCP config key and server name are
terminal-grid-personal.
- MCP bridge default port is
7891.
Shift+Enter sends a Codex CLI-compatible multiline prompt break and consumes the native Enter key path before it can submit.
Command+Left and Command+Right jump to the beginning/end of the active Codex CLI input line.
Command+Up and Command+Down jump to the top/bottom of multiline Codex CLI input.
Shift+Command+Arrow focuses the neighboring terminal grid cell on macOS.
Command+Option+T opens the latest matching Codex CLI transcript as a readable Markdown editor snapshot.
Shift+Command+Option+T opens the latest matching raw Codex CLI JSONL transcript in the editor.
- Terminal Grid shortcuts are configurable from VS Code Settings under
terminalGridPersonal.shortcuts.*; set a shortcut array to [] to disable it.
- macOS
Command+Enter is left to xterm/VS Code; it is not used for Codex CLI multiline input.
- macOS
Command+Delete clears the whole active terminal input line by sending line-start plus kill-line-end control bytes.
- macOS
Command+A is captured so the browser/xterm layer does not select the whole terminal buffer; terminal apps do not expose editable input selection externally, so this sends line-start to keep the shortcut inside Codex CLI.
- Modifier-click terminal links are routed through the extension host:
- macOS:
Command-click
- other platforms:
Ctrl-click
- HTTP/HTTPS links open externally.
- Local
.html/.htm file links open externally through macOS's default browser.
- Other file links open in the VS Code editor when the target exists.
- Modifier-click link opening clears terminal selection/focus state before switching editor tabs.
- Keyboard copy and context-menu plain copy join soft-wrapped terminal rows into paragraphs while preserving real terminal row breaks.
Plain Enter and plain click behavior are intentionally unchanged.
PONS Lexicon Lens
Terminal Grid Personal can look up German and English terms with PONS without
leaving the terminal grid:
- Store the key with
Terminal Grid Personal: Set PONS API Key.
- Select a word or place the cursor in a terminal cell.
- Press
cmd+alt+d (Command+Option+D on macOS), or run
Terminal Grid Personal: Look Up with PONS.
- If no selection was supplied, type a term and press Enter to search.
- Use Up/Down arrows to choose a result and press Enter to insert its
translation at the active cursor position. Use Left/Right arrows to move
between the Lookup, Recent, and Vocabulary tabs.
- Use Command+C to copy a selected translation, Command+O to open PONS for the
visible term, or Escape to return focus to the invoking terminal.
- Open Recent to rerun a prior term, or Vocabulary to insert a remembered
translation without another PONS request.
The shortcut is configured by
terminalGridPersonal.shortcuts.openDictionaryLookup; use VS Code Settings to
replace the default cmd+alt+d binding or set the shortcut array to [] to
disable it. If no terminal grid is active, the command opens a native VS Code
Quick Pick: press Enter to search, select a Recent term to rerun it, select a
result to copy it, or use the globe action to open the term on PONS.
Typing does not query PONS. Only an explicit selection submission or Enter
submission can initiate a provider request and affect PONS quota; a repeated
successful lookup may instead reuse the in-memory cache. Successful provider
results are cached only in memory and are discarded when the extension host
restarts.
When terminalGridPersonal.dictionary.rememberHistory is enabled, explicit
lookups add bounded local records to Recent and automatically store the first
successful result as the preferred translation in Vocabulary. Inserting another
sense updates the preferred translation and its reuse count. Vocabulary's
Copy TSV action copies the learning list as tab-separated text. Each
Vocabulary row can be removed, and the inline Clear controls can clear Recent or
Vocabulary after confirmation; Terminal Grid Personal: Clear Dictionary History and Vocabulary clears both lists.
Recent and Vocabulary contain local learning data in VS Code globalState
(up to 24 recent terms and 200 vocabulary entries). The extension writes these
records only while history recording is enabled. They are not Settings-Synced. Disabling
rememberHistory stops new history, vocabulary capture, and reuse updates but
does not delete existing records; use the clear controls to remove them.
Results come from PONS, and the API key remains in VS Code SecretStorage rather
than settings, history, the webview, or logs. See
docs/pons-api-credentials.md for setup,
privacy, clearing, and key-rotation guidance.
Build
npm install
npm test
npm run compile
npm run package
npm run compile only builds local bundles. It does not install, extract, remove, or reload any VS Code extension.
npm run package writes a local development VSIX named like:
terminal-grid-personal-0.5.0.vsix
Local VSIX files are build artifacts and should not be committed once Marketplace publishing is the release path.
Marketplace Installation
After the Marketplace listing is available through VS Code's extension gallery, install this fork by extension ID:
code --install-extension neliro.terminal-grid-personal
Future updates then come through VS Code's normal extension update flow.
If this command reports that the extension cannot be found immediately after a fresh publish, wait for Marketplace validation/indexing and retry. npx --yes @vscode/vsce show neliro.terminal-grid-personal may see a newly published extension before VS Code's installer can.
If you previously installed this fork from a local VSIX, switch over once:
code --uninstall-extension neliro.terminal-grid-personal
code --install-extension neliro.terminal-grid-personal
Manual VSIX Installation
Manual VSIX installation remains useful for development testing before a Marketplace publish:
code --install-extension terminal-grid-personal-0.5.0.vsix
If upstream koenma.terminal-grid is installed at the same time, disable whichever extension you do not want active in that VS Code profile. This fork uses distinct commands, settings, views, MCP names, and default API port so it can coexist more safely, but both extensions still provide similar user-facing functionality.
Marketplace Release
Future releases are published by .github/workflows/publish-marketplace.yml.
The first Marketplace publish for neliro.terminal-grid-personal has been completed. Durable updates should go through the Marketplace workflow, not committed VSIX files.
Setup that must remain in place:
- Marketplace publisher
neliro.
- Repository Actions secret
VSCE_PAT.
- Stable package identity
neliro.terminal-grid-personal.
Normal updates:
git tag -a v0.5.0 -m "Release Terminal Grid Personal 0.5.0"
git push origin v0.5.0
Create an annotated tag whose version matches package.json exactly. See docs/marketplace-release.md for the full operator checklist.
Agent API
const info = await vscode.commands.executeCommand("terminalGridPersonal.getGridInfo");
await vscode.commands.executeCommand("terminalGridPersonal.sendToCell", 0, "echo hello\r");
const output = await vscode.commands.executeCommand("terminalGridPersonal.readCell", 0, 10);
MCP
The bridge listens on 127.0.0.1 only. The default port is 7891 and can be changed with terminalGridPersonal.apiPort.
The manual Claude Desktop MCP entry key is terminal-grid-personal and points to the packaged mcp-server.js.
Upstream License
Terminal Grid is licensed under MIT. Keep upstream license notices intact when redistributing or modifying this fork.