Commit Graph
3 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Opus 4.7 94ff623708 remove dead Scrollable-era widgets + simulateScroll param
Three widgets under lib/src/terminal/src/ui/ and one TerminalView
parameter were leftovers from the era when TerminalView wrapped its
viewport in a real Scrollable. The Scrollable path was replaced with
PointerScrollEvent → PgUp/PgDown translation (alive, well-tested in
terminal_view_test.dart); these helpers stayed behind with tests but
zero production callers.

Drops:
- TerminalScrollGestureHandler (scroll_handler.dart, 100 LOC)
- InfiniteScrollView (infinite_scroll_view.dart, 117 LOC)
- KeyboardVisibilty (keyboard_visibility.dart, 59 LOC) — last
  production caller was removed in 048e835
- TerminalView.simulateScroll parameter — declared, never read
- The matching test groups + imports in ui_widget_test.dart
- The KeyboardVisibilty export from the terminal barrel

Net: -585 lines from lib/ + test/, no behavior change, and
infinite_scroll_view.dart stops being the 90%-coverage outlier we
were apologising for in the previous test sweep.

Same shape as T-93 (dead onTapUp wiring), T-95 (dead tertiary tap),
and 048e835 (dead scrollController plumbing). Public-or-tested
surface that no caller exercised.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 18:20:50 +02:00
jpmschweitzerandClaude e966836886 test sweep: cover ui/ widget-level helpers (T-91)
Adds test/terminal/ui/ui_widget_test.dart — 14 widget tests
covering the lib/src/terminal/src/ui/ helpers that need a Flutter
widget tree (CustomKeyboardListener, KeyboardVisibilty,
InfiniteScrollView, TerminalScrollGestureHandler).

Files reaching ~100% (the 4 missing lines in infinite_scroll_view
sit in the render-object's `position` setter, only triggered when
Scrollable feeds a different ViewportOffset between rebuilds —
not reachable through normal widget plumbing without internal
access):

- scroll_handler.dart: 0 / unmeasured → 39/39 (100%) — main-buffer
  passthrough vs. alt-buffer interception, mouse-mode forwarding
  vs. simulateScroll fallback, simulateScroll=false drop, alt-flip
  + didUpdateWidget rebinding, onPointerDown tracking the cursor
  for the next scroll event.
- infinite_scroll_view.dart: 0 / unmeasured → 36/40 (90%) — onScroll
  fires on viewport position change, callback identity update via
  updateRenderObject.
- keyboard_listener.dart: 7/12 → 12/12 (100%) — character-key
  fallthrough into onInsert when onKeyEvent returns ignored,
  short-circuit to onKeyEvent's "handled" return, no-op on a key
  with no character.
- keyboard_visibility.dart: 18/19 → 19/19 (100%) — show + hide
  callbacks paired against view-insets transitions; no fire on
  same-inset metrics events.

Coverage delta:
- Total project: 68.80% → 69.12%; coverage_floor bumped 68 → 69.

Tests use a `_host()` helper that wraps the widget under test in
Directionality + MediaQuery + Center + a sized SizedBox. The
TerminalScrollGestureHandler tests use ColoredBox as the child
because Listener.onPointerSignal needs a hit-testable render
object below it, and SizedBox.expand alone doesn't paint anything.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-08 12:40:03 +02:00
jpmschweitzerandClaude ecf8ee56af test sweep: cover ui/ pure-Dart files (T-91)
test / unit + widget + golden + a11y (push) Failing after 48s
test / integration_test (xvfb) (push) Has been skipped
test / bundle smoke (xvfb 5s) (push) Has been skipped
test / daemon subprocess + web WASM smoke (push) Has been skipped
test / dart doc (lib API) (push) Failing after 1m0s
Adds test/terminal/ui/ui_pure_test.dart — 39 unit tests covering
the lib/src/terminal/src/ui/ files that don't need a Flutter widget
harness.

Files at 100%:
- palette_builder.dart: 0/52 → 52/52 (named-colour mapping for
  indices 0..15, RGB cube walk for 16..231 with the 95-then-+40
  step pattern, grayscale ramp 232..255, out-of-range clamp).
- paragraph_cache.dart: 2/22 → 22/22 (LRU promotion on read,
  eviction at maxSize, miss returns null, clear empties).
- terminal_text_style.dart: 7/19 → 19/19 (default ctor,
  fromTextStyle fontFamily fallback chain + size/height pass-
  through, toTextStyle attribute threading, copyWith with override
  + no-args clone).
- input_map.dart: 8/20 → 20/20 (keyToTerminalKey hits + null on
  unmapped LogicalKeyboardKey id, charToTerminalKey case-fold +
  multi-char/unknown null).
- terminal_size.dart: 4/8 → 8/8 (operator==/hashCode/toString,
  identity + type-mismatch branches).
- pointer_input.dart: 1/3 → 3/3 (default ctor, .none(), .all()).
- terminal_theme.dart: 1/1 unchanged.
- char_metrics.dart: 0/10 → 10/10 (positive width/height, monotonic
  text-scaler scaling).
- ui/controller.dart: 18/52 → 52/52 (TerminalController default
  state, setSelection + mode override, attached/detached anchor
  selection-getter behaviour, prior-anchor disposal on second
  setSelection, setSelectionMode no-op short-circuit, clearSelection,
  setPointerInputs / setSuspendPointerInput gating,
  highlight register/dispose lifecycle, TerminalHighlight.range
  null on detached anchors).

Enums (selection_mode, cursor_type) and themes constants are
covered transitively — they have no executable lines that lcov
instruments.

Coverage delta:
- Total project: 67.06% → 68.80%; coverage_floor bumped 66 → 68.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-08 11:28:17 +02:00