clean lib/src/terminal/ to the project bar (T-107)
test / unit + widget + golden + a11y (push) Failing after 32s
test / bundle smoke (xvfb 5s) (push) Has been skipped
test / daemon subprocess + web WASM smoke (push) Has been skipped
test / integration_test (xvfb) (push) Has been skipped
test / dart doc (lib API) (push) Failing after 1m1s

T-107 (b): treat the in-tree terminal as ours, not vendored.

* custom_text_edit.dart — drop the row of commented-out `// print(...)`
  debugging stubs that shipped with the fork.
* parser.dart — the "TODO: G2/G3" lines for unimplemented VT220
  charset designators become a clear "not implemented" note; the
  stale "TODO: Normal/Application Keypad" tags on `>` / `=` get
  removed since the handlers ARE wired.
* keytab.dart — the bare "TODO: support VT52" turns into a comment
  explaining that ANSI=false records are intentionally skipped
  (no clide consumer asks for VT52).
* terminal_view.dart — the lone `// ignore:
  invalid_use_of_protected_member` keeps the suppression but gets
  an inline justification per CLAUDE.md (TerminalView owns its own
  ShortcutManager so terminal keybindings fire before the app's
  Shortcuts ancestor; wrapping in Shortcuts would invert that).

parser.dart's 1139-LOC size is parked as T-123 — split is too
invasive to fold here without conflicting with T-91's coverage
sweep on the same area.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-05-18 12:29:13 +02:00
co-authored by Claude
parent 8697f79a0a
commit 68aa34e9dd
7 changed files with 59 additions and 29 deletions
+8 -6
View File
@@ -105,12 +105,14 @@ class EscapeParser {
// 'P'.charCode: _unsupportedHandler, // Sixel
// 'c'.charCode: _unsupportedHandler,
// '#'.charCode: _unsupportedHandler,
'('.charCode: _escHandleDesignateCharset0, // SCS - G0
')'.charCode: _escHandleDesignateCharset1, // SCS - G1
// '*'.charCode: _voidHandler(1), // TODO: G2 (vt220)
// '+'.charCode: _voidHandler(1), // TODO: G3 (vt220)
'>'.charCode: _escHandleResetAppKeypadMode, // TODO: Normal Keypad
'='.charCode: _escHandleSetAppKeypadMode, // TODO: Application Keypad
'('.charCode: _escHandleDesignateCharset0, // SCS — G0
')'.charCode: _escHandleDesignateCharset1, // SCS — G1
// G2 (`ESC *`) and G3 (`ESC +`) charset designators are VT220+
// sequences we don't honour — no consumer in clide selects past
// G0/G1. Sequences pass through as no-ops (one trailing byte is
// consumed by the default parser).
'>'.charCode: _escHandleResetAppKeypadMode,
'='.charCode: _escHandleSetAppKeypadMode,
});
/// `ESC 7` Save Cursor (DECSC)
@@ -88,7 +88,9 @@ class Keytab {
continue;
}
// TODO: support VT52
// VT52 mode (ANSI=false) records are skipped — clide only emits
// ANSI/VT100+ sequences. No consumer asks for VT52 today; if one
// does, this branch is where the lookup would flip.
if (record.ansi == false) {
continue;
}
+7
View File
@@ -360,6 +360,13 @@ class TerminalViewState extends State<TerminalView> {
return resultOverride;
}
// ShortcutManager.handleKeypress is @protected — it's only public
// for the Shortcuts widget to call internally. We own our own
// ShortcutManager because the terminal has its own keybinding
// surface (defaultTerminalShortcuts: Ctrl+C → kill, Tab handoff
// rules, etc.) that needs to fire BEFORE the app's Shortcuts
// ancestor. Wrapping in a Shortcuts widget would invert that.
// T-107 approved leaving this suppression with an inline reason.
// ignore: invalid_use_of_protected_member
final shortcutResult = _shortcutManager.handleKeypress(
focusNode.context!,
+7 -22
View File
@@ -241,42 +241,27 @@ class CustomTextEditState extends State<CustomTextEdit> with TextInputClient {
@override
void performAction(TextInputAction action) {
// print('performAction $action');
widget.onAction(action);
}
@override
void updateFloatingCursor(RawFloatingCursorPoint point) {
// print('updateFloatingCursor $point');
}
void updateFloatingCursor(RawFloatingCursorPoint point) {}
@override
void showAutocorrectionPromptRect(int start, int end) {
// print('showAutocorrectionPromptRect');
}
void showAutocorrectionPromptRect(int start, int end) {}
@override
void connectionClosed() {
// print('connectionClosed');
}
void connectionClosed() {}
@override
void performPrivateCommand(String action, Map<String, dynamic> data) {
// print('performPrivateCommand $action');
}
void performPrivateCommand(String action, Map<String, dynamic> data) {}
@override
void insertTextPlaceholder(Size size) {
// print('insertTextPlaceholder');
}
void insertTextPlaceholder(Size size) {}
@override
void removeTextPlaceholder() {
// print('removeTextPlaceholder');
}
void removeTextPlaceholder() {}
@override
void showToolbar() {
// print('showToolbar');
}
void showToolbar() {}
}