mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-09 00:49:41 +02:00
Pure move and rename, no behavior change. The split pane's second terminal (SplitTerminalPane) moves out of terminal-split.js into its own terminal-tile.js (load order 7.4) as TerminalTile, so the tile grid can reuse it. terminal-split.js keeps the split orchestration (picker, divider, auto-collapse) and constructs a TerminalTile for Pane B. Tests follow the class: split-pane-terminal-unit becomes terminal-tile-unit, and the Shift+Enter guard and the two browser suites read terminal-tile.js / window.TerminalTile. The browser suites match master (one pre-existing environmental failure in both). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
22 lines
1.0 KiB
TypeScript
22 lines
1.0 KiB
TypeScript
// @vitest-environment node
|
|
// Regression guard: xterm runs the custom key handler for keydown AND keypress.
|
|
// It discards a keypress carrying Ctrl/Alt but not one carrying only Shift, so
|
|
// a handler that returns false for keydown alone lets Shift+Enter's keypress
|
|
// through as a bare \r (submit). The Enter gate must therefore not be keyed on
|
|
// ev.type === 'keydown'; only the send-key fetch is.
|
|
|
|
import { readFileSync } from 'node:fs';
|
|
import { join } from 'node:path';
|
|
import { describe, expect, it } from 'vitest';
|
|
|
|
const PUBLIC = join(new URL('.', import.meta.url).pathname, '../src/web/public');
|
|
|
|
describe.each(['terminal-ui.js', 'terminal-tile.js'])('%s Shift/Ctrl+Enter handler', (file) => {
|
|
const src = readFileSync(join(PUBLIC, file), 'utf8');
|
|
|
|
it('swallows every event type for Shift/Ctrl+Enter', () => {
|
|
expect(src).toMatch(/ev\.key === 'Enter' && \(ev\.shiftKey \|\| ev\.ctrlKey\)\) \{/);
|
|
expect(src).not.toMatch(/ev\.key === 'Enter' && \(ev\.shiftKey \|\| ev\.ctrlKey\) && ev\.type === 'keydown'/);
|
|
});
|
|
});
|