diff --git a/.pql/pql-plan.json b/.pql/pql-plan.json index 4753ca6b..e8552aef 100644 --- a/.pql/pql-plan.json +++ b/.pql/pql-plan.json @@ -1,5 +1,5 @@ { - "exported_at": "2026-05-06T20:28:25Z", + "exported_at": "2026-05-06T20:28:51Z", "decisions": [ { "id": "D-1", diff --git a/lib/builtin/claude/src/claude_pane.dart b/lib/builtin/claude/src/claude_pane.dart index 8353286e..e01692aa 100644 --- a/lib/builtin/claude/src/claude_pane.dart +++ b/lib/builtin/claude/src/claude_pane.dart @@ -129,9 +129,7 @@ class _ClaudePaneState extends State { repoRoot = (rootResp.data['path'] as String?) ?? repoRoot; } - _sessionName = widget.isPrimary - ? primarySessionName(repoRoot) - : secondarySessionName(repoRoot, widget.secondaryIndex!); + _sessionName = widget.isPrimary ? primarySessionName(repoRoot) : secondarySessionName(repoRoot, widget.secondaryIndex!); final tmuxConf = await _ensureTmuxConf(); final cols = _terminal.viewWidth; @@ -139,7 +137,8 @@ class _ClaudePaneState extends State { var argv = [ 'tmux', - '-L', 'clide', + '-L', + 'clide', if (tmuxConf != null) ...['-f', tmuxConf], 'new-session', '-A', @@ -220,9 +219,7 @@ class _ClaudePaneState extends State { } } case 'pane.exit': - setState(() => _statusLine = widget.isPrimary - ? 'session exited — restart clide to retry' - : 'session exited'); + setState(() => _statusLine = widget.isPrimary ? 'session exited — restart clide to retry' : 'session exited'); case 'pane.closed': _paneId = null; } @@ -252,10 +249,15 @@ class _ClaudePaneState extends State { _ipc()?.request('pane.resize', args: {'id': id, 'cols': cols, 'rows': rows}); if (_sessionName != null) { Process.run('tmux', [ - '-L', 'clide', 'resize-window', - '-t', _sessionName!, - '-x', '$cols', - '-y', '$rows', + '-L', + 'clide', + 'resize-window', + '-t', + _sessionName!, + '-x', + '$cols', + '-y', + '$rows', ]); } }); @@ -277,9 +279,7 @@ class _ClaudePaneState extends State { @override Widget build(BuildContext context) { - final title = widget.isPrimary - ? 'claude — primary' - : 'claude — secondary ${widget.secondaryIndex}'; + final title = widget.isPrimary ? 'claude — primary' : 'claude — secondary ${widget.secondaryIndex}'; final body = _error != null ? Padding( diff --git a/lib/builtin/claude/src/tmux_session.dart b/lib/builtin/claude/src/tmux_session.dart index 587cd198..c8cccf19 100644 --- a/lib/builtin/claude/src/tmux_session.dart +++ b/lib/builtin/claude/src/tmux_session.dart @@ -14,8 +14,7 @@ typedef TmuxRunner = Future Function(List args); TmuxRunner tmuxRunner = _defaultRunner; -Future _defaultRunner(List args) => - Process.run('tmux', args); +Future _defaultRunner(List args) => Process.run('tmux', args); const _socket = ['-L', 'clide']; @@ -30,11 +29,7 @@ Future killSession(String name) async { Future> listClideSessions() async { final r = await tmuxRunner([..._socket, 'list-sessions', '-F', '#{session_name}']); if (r.exitCode != 0) return const []; - return (r.stdout as String) - .split('\n') - .map((s) => s.trim()) - .where((s) => s.isNotEmpty) - .toList(); + return (r.stdout as String).split('\n').map((s) => s.trim()).where((s) => s.isNotEmpty).toList(); } /// Kill every secondary clide-claude session whose name begins with diff --git a/lib/src/ipc/server.dart b/lib/src/ipc/server.dart index b3a921bb..1be6a284 100644 --- a/lib/src/ipc/server.dart +++ b/lib/src/ipc/server.dart @@ -54,8 +54,7 @@ class DaemonServer { // Probe by trying to connect — if a live peer answers, refuse // to start so we don't rip its socket out. try { - final probe = await Socket.connect(addr, 0) - .timeout(const Duration(milliseconds: 200)); + final probe = await Socket.connect(addr, 0).timeout(const Duration(milliseconds: 200)); await probe.close(); throw StateError('clide daemon already running at $socketPath'); } on TimeoutException { diff --git a/lib/src/pty/native_pty.dart b/lib/src/pty/native_pty.dart index 3a3ba018..8c3a1539 100644 --- a/lib/src/pty/native_pty.dart +++ b/lib/src/pty/native_pty.dart @@ -140,11 +140,9 @@ class NativePty { // Pre-allocate error envelopes the child will write to its stdout // (slave PTY → parent's master fd) before _exit, so the parent's // reader sees a real diagnostic instead of an indistinguishable EOF. - final chdirErr = 'clide: chdir failed: $workingDirectory\n' - .toNativeUtf8(allocator: malloc); + final chdirErr = 'clide: chdir failed: $workingDirectory\n'.toNativeUtf8(allocator: malloc); final chdirErrLen = chdirErr.length; - final execveErr = 'clide: exec failed: $executable\n' - .toNativeUtf8(allocator: malloc); + final execveErr = 'clide: exec failed: $executable\n'.toNativeUtf8(allocator: malloc); final execveErrLen = execveErr.length; // Allocate ALL native memory before fork. diff --git a/lib/src/pty/session.dart b/lib/src/pty/session.dart index 3b67006f..cef702d4 100644 --- a/lib/src/pty/session.dart +++ b/lib/src/pty/session.dart @@ -146,11 +146,7 @@ class PtySession { try { libc.setWinsize(masterFd, cols, rows); - final stdoutLine = await proc.stdout - .transform(const Utf8Decoder()) - .transform(const LineSplitter()) - .first - .timeout(const Duration(seconds: 5)); + final stdoutLine = await proc.stdout.transform(const Utf8Decoder()).transform(const LineSplitter()).first.timeout(const Duration(seconds: 5)); final pid = _extractPid(stdoutLine); final code = await proc.exitCode; diff --git a/lib/src/terminal/src/core/buffer/buffer.dart b/lib/src/terminal/src/core/buffer/buffer.dart index 1b92640e..e5d2d635 100644 --- a/lib/src/terminal/src/core/buffer/buffer.dart +++ b/lib/src/terminal/src/core/buffer/buffer.dart @@ -572,9 +572,7 @@ class Buffer { continue; } final line = lines[segment.line]; - if (!(segment.line == range.begin.y || - segment.line == 0 || - line.isWrapped)) { + if (!(segment.line == range.begin.y || segment.line == 0 || line.isWrapped)) { builder.write("\n"); } builder.write(line.getText(segment.start, segment.end)); diff --git a/lib/src/terminal/src/core/buffer/cell_offset.dart b/lib/src/terminal/src/core/buffer/cell_offset.dart index 6c23194f..d41636e4 100644 --- a/lib/src/terminal/src/core/buffer/cell_offset.dart +++ b/lib/src/terminal/src/core/buffer/cell_offset.dart @@ -48,10 +48,5 @@ class CellOffset { int get hashCode => x.hashCode ^ y.hashCode; @override - bool operator ==(Object other) => - identical(this, other) || - other is CellOffset && - runtimeType == other.runtimeType && - x == other.x && - y == other.y; + bool operator ==(Object other) => identical(this, other) || other is CellOffset && runtimeType == other.runtimeType && x == other.x && y == other.y; } diff --git a/lib/src/terminal/src/core/buffer/range_line.dart b/lib/src/terminal/src/core/buffer/range_line.dart index 4f05983c..ddb30120 100644 --- a/lib/src/terminal/src/core/buffer/range_line.dart +++ b/lib/src/terminal/src/core/buffer/range_line.dart @@ -27,8 +27,7 @@ class BufferRangeLine extends BufferRange { @override bool contains(CellOffset position) { final self = normalized; - return self.begin.isBeforeOrSame(position) && - self.end.isAfterOrSame(position); + return self.begin.isBeforeOrSame(position) && self.end.isAfterOrSame(position); } @override diff --git a/lib/src/terminal/src/core/buffer/segment.dart b/lib/src/terminal/src/core/buffer/segment.dart index d8f6a799..190449ce 100644 --- a/lib/src/terminal/src/core/buffer/segment.dart +++ b/lib/src/terminal/src/core/buffer/segment.dart @@ -18,8 +18,7 @@ class BufferSegment { /// Should be greater than or equal to [start]. final int? end; - const BufferSegment(this.range, this.line, this.start, this.end) - : assert((start != null && end != null) ? start <= end : true); + const BufferSegment(this.range, this.line, this.start, this.end) : assert((start != null && end != null) ? start <= end : true); bool isWithin(CellOffset position) { if (position.y != line) { @@ -45,16 +44,10 @@ class BufferSegment { } @override - int get hashCode => - range.hashCode ^ line.hashCode ^ start.hashCode ^ end.hashCode; + int get hashCode => range.hashCode ^ line.hashCode ^ start.hashCode ^ end.hashCode; @override bool operator ==(Object other) => identical(this, other) || - other is BufferSegment && - runtimeType == other.runtimeType && - range == other.range && - line == other.line && - start == other.start && - end == other.end; + other is BufferSegment && runtimeType == other.runtimeType && range == other.range && line == other.line && start == other.start && end == other.end; } diff --git a/lib/src/terminal/src/core/escape/parser.dart b/lib/src/terminal/src/core/escape/parser.dart index 44fb9ea9..2dc83456 100644 --- a/lib/src/terminal/src/core/escape/parser.dart +++ b/lib/src/terminal/src/core/escape/parser.dart @@ -967,9 +967,7 @@ class EscapeParser { case 7: return handler.setAutoWrapMode(enabled); case 9: - return enabled - ? handler.setMouseMode(MouseMode.clickOnly) - : handler.setMouseMode(MouseMode.none); + return enabled ? handler.setMouseMode(MouseMode.clickOnly) : handler.setMouseMode(MouseMode.none); case 12: case 13: return handler.setCursorBlinkMode(enabled); @@ -985,37 +983,23 @@ class EscapeParser { return handler.setAppKeypadMode(enabled); case 1000: case 10061000: - return enabled - ? handler.setMouseMode(MouseMode.upDownScroll) - : handler.setMouseMode(MouseMode.none); + return enabled ? handler.setMouseMode(MouseMode.upDownScroll) : handler.setMouseMode(MouseMode.none); case 1001: - return enabled - ? handler.setMouseMode(MouseMode.upDownScroll) - : handler.setMouseMode(MouseMode.none); + return enabled ? handler.setMouseMode(MouseMode.upDownScroll) : handler.setMouseMode(MouseMode.none); case 1002: - return enabled - ? handler.setMouseMode(MouseMode.upDownScrollDrag) - : handler.setMouseMode(MouseMode.none); + return enabled ? handler.setMouseMode(MouseMode.upDownScrollDrag) : handler.setMouseMode(MouseMode.none); case 1003: - return enabled - ? handler.setMouseMode(MouseMode.upDownScrollMove) - : handler.setMouseMode(MouseMode.none); + return enabled ? handler.setMouseMode(MouseMode.upDownScrollMove) : handler.setMouseMode(MouseMode.none); case 1004: return handler.setReportFocusMode(enabled); case 1005: - return enabled - ? handler.setMouseReportMode(MouseReportMode.utf) - : handler.setMouseReportMode(MouseReportMode.normal); + return enabled ? handler.setMouseReportMode(MouseReportMode.utf) : handler.setMouseReportMode(MouseReportMode.normal); case 1006: - return enabled - ? handler.setMouseReportMode(MouseReportMode.sgr) - : handler.setMouseReportMode(MouseReportMode.normal); + return enabled ? handler.setMouseReportMode(MouseReportMode.sgr) : handler.setMouseReportMode(MouseReportMode.normal); case 1007: return handler.setAltBufferMouseScrollMode(enabled); case 1015: - return enabled - ? handler.setMouseReportMode(MouseReportMode.urxvt) - : handler.setMouseReportMode(MouseReportMode.normal); + return enabled ? handler.setMouseReportMode(MouseReportMode.urxvt) : handler.setMouseReportMode(MouseReportMode.normal); case 1047: if (enabled) { handler.useAltBuffer(); diff --git a/lib/src/terminal/src/core/input/handler.dart b/lib/src/terminal/src/core/input/handler.dart index 660fb99b..02f5351d 100644 --- a/lib/src/terminal/src/core/input/handler.dart +++ b/lib/src/terminal/src/core/input/handler.dart @@ -173,8 +173,7 @@ class CtrlInputHandler implements TerminalInputHandler { final key = event.key; - if (key.index >= TerminalKey.keyA.index && - key.index <= TerminalKey.keyZ.index) { + if (key.index >= TerminalKey.keyA.index && key.index <= TerminalKey.keyZ.index) { final input = key.index - TerminalKey.keyA.index + 1; return String.fromCharCode(input); } @@ -200,8 +199,7 @@ class AltInputHandler implements TerminalInputHandler { final key = event.key; - if (key.index >= TerminalKey.keyA.index && - key.index <= TerminalKey.keyZ.index) { + if (key.index >= TerminalKey.keyA.index && key.index <= TerminalKey.keyZ.index) { final charCode = key.index - TerminalKey.keyA.index + 65; final input = [0x1b, charCode]; return String.fromCharCodes(input); diff --git a/lib/src/terminal/src/core/input/keytab/keytab.dart b/lib/src/terminal/src/core/input/keytab/keytab.dart index fab05910..f7864103 100644 --- a/lib/src/terminal/src/core/input/keytab/keytab.dart +++ b/lib/src/terminal/src/core/input/keytab/keytab.dart @@ -68,8 +68,7 @@ class Keytab { continue; } - if (record.appCursorKeys != null && - record.appCursorKeys != appCursorKeys) { + if (record.appCursorKeys != null && record.appCursorKeys != appCursorKeys) { continue; } diff --git a/lib/src/terminal/src/core/mouse/handler.dart b/lib/src/terminal/src/core/mouse/handler.dart index 9f3abddc..2ded95c4 100644 --- a/lib/src/terminal/src/core/mouse/handler.dart +++ b/lib/src/terminal/src/core/mouse/handler.dart @@ -69,8 +69,7 @@ class ClickMouseHandler implements TerminalMouseHandler { switch (event.state.mouseMode) { case MouseMode.clickOnly: // Only clicks and only the first 3 buttons are reported. - if (event.buttonState == TerminalMouseButtonState.down && - (event.button.id < 3)) { + if (event.buttonState == TerminalMouseButtonState.down && (event.button.id < 3)) { return MouseReporter.report( event.button, event.buttonState, @@ -101,8 +100,7 @@ class UpDownMouseHandler implements TerminalMouseHandler { case MouseMode.upDownScrollDrag: case MouseMode.upDownScrollMove: // Up events are never reported for mouse wheel buttons. - if (event.button.isWheel && - event.buttonState == TerminalMouseButtonState.up) { + if (event.button.isWheel && event.buttonState == TerminalMouseButtonState.up) { return null; } return MouseReporter.report( diff --git a/lib/src/terminal/src/core/mouse/reporter.dart b/lib/src/terminal/src/core/mouse/reporter.dart index 0cf5c981..83204822 100644 --- a/lib/src/terminal/src/core/mouse/reporter.dart +++ b/lib/src/terminal/src/core/mouse/reporter.dart @@ -27,14 +27,9 @@ abstract class MouseReporter { // Normal mode only supports a maximum position of 223, while utf // supports positions up to 2015. Both modes send a null byte if the // position exceeds that limit. - final col = (reportMode == MouseReportMode.normal && x > 223) || - (reportMode == MouseReportMode.utf && x > 2015) - ? '\x00' - : String.fromCharCode(32 + x); - final row = (reportMode == MouseReportMode.normal && y > 223) || - (reportMode == MouseReportMode.utf && y > 2015) - ? '\x00' - : String.fromCharCode(32 + y + 1); + final col = (reportMode == MouseReportMode.normal && x > 223) || (reportMode == MouseReportMode.utf && x > 2015) ? '\x00' : String.fromCharCode(32 + x); + final row = + (reportMode == MouseReportMode.normal && y > 223) || (reportMode == MouseReportMode.utf && y > 2015) ? '\x00' : String.fromCharCode(32 + y + 1); return "\x1b[M$btn$col$row"; case MouseReportMode.sgr: final buttonID = button.id; @@ -42,8 +37,7 @@ abstract class MouseReporter { return "\x1b[<$buttonID;$x;$y$upDown"; case MouseReportMode.urxvt: // The button ID uses the same id as to report it as in normal mode. - final buttonID = - 32 + (state == TerminalMouseButtonState.up ? 3 : button.id); + final buttonID = 32 + (state == TerminalMouseButtonState.up ? 3 : button.id); return "\x1b[$buttonID;$x;${y}M"; } } diff --git a/lib/src/terminal/src/terminal.dart b/lib/src/terminal/src/terminal.dart index 3839553e..c9a25295 100644 --- a/lib/src/terminal/src/terminal.dart +++ b/lib/src/terminal/src/terminal.dart @@ -50,8 +50,7 @@ class Terminal with Observable implements TerminalState, EscapeHandler { void Function(String data)? onOutput; /// Function that is called when the dimensions of the terminal change. - void Function(int width, int height, int pixelWidth, int pixelHeight)? - onResize; + void Function(int width, int height, int pixelWidth, int pixelHeight)? onResize; /// The [TerminalInputHandler] used by this terminal. [defaultInputHandler] is /// used when not specified. User of this class can provide their own diff --git a/lib/src/terminal/src/ui/controller.dart b/lib/src/terminal/src/ui/controller.dart index 54d84b42..fc26fa61 100644 --- a/lib/src/terminal/src/ui/controller.dart +++ b/lib/src/terminal/src/ui/controller.dart @@ -117,9 +117,7 @@ class TerminalController with ChangeNotifier { @internal bool shouldSendPointerInput(PointerInput pointerInput) { // Always return false if pointer input is suspended. - return _suspendPointerInputs - ? false - : _pointerInputs.inputs.contains(pointerInput); + return _suspendPointerInputs ? false : _pointerInputs.inputs.contains(pointerInput); } /// Creates a new highlight on the terminal from [p1] to [p2] with the given diff --git a/lib/src/terminal/src/ui/custom_text_edit.dart b/lib/src/terminal/src/ui/custom_text_edit.dart index 3f92e124..d781ec5e 100644 --- a/lib/src/terminal/src/ui/custom_text_edit.dart +++ b/lib/src/terminal/src/ui/custom_text_edit.dart @@ -234,8 +234,7 @@ class CustomTextEditState extends State with TextInputClient { } // Reset editing state if composing is done - if (_currentEditingState.composing.isCollapsed && - _currentEditingState.text != _initEditingState.text) { + if (_currentEditingState.composing.isCollapsed && _currentEditingState.text != _initEditingState.text) { _connection!.setEditingState(_initEditingState); } } diff --git a/lib/src/terminal/src/ui/gesture/gesture_detector.dart b/lib/src/terminal/src/ui/gesture/gesture_detector.dart index 16ec2feb..1aa67927 100644 --- a/lib/src/terminal/src/ui/gesture/gesture_detector.dart +++ b/lib/src/terminal/src/ui/gesture/gesture_detector.dart @@ -53,8 +53,7 @@ class TerminalGestureDetector extends StatefulWidget { final GestureDragUpdateCallback? onDragUpdate; @override - State createState() => - _TerminalGestureDetectorState(); + State createState() => _TerminalGestureDetectorState(); } class _TerminalGestureDetectorState extends State { @@ -71,8 +70,7 @@ class _TerminalGestureDetectorState extends State { void _handleTapDown(TapDownDetails details) { widget.onTapDown?.call(details); - if (_doubleTapTimer != null && - _isWithinDoubleTapTolerance(details.globalPosition)) { + if (_doubleTapTimer != null && _isWithinDoubleTapTolerance(details.globalPosition)) { // If there was already a previous tap, the second down hold/tap is a // double tap down. widget.onDoubleTapDown?.call(details); @@ -110,8 +108,7 @@ class _TerminalGestureDetectorState extends State { Widget build(BuildContext context) { final gestures = {}; - gestures[TapGestureRecognizer] = - GestureRecognizerFactoryWithHandlers( + gestures[TapGestureRecognizer] = GestureRecognizerFactoryWithHandlers( () => TapGestureRecognizer(debugOwner: this), (TapGestureRecognizer instance) { instance @@ -124,8 +121,7 @@ class _TerminalGestureDetectorState extends State { }, ); - gestures[LongPressGestureRecognizer] = - GestureRecognizerFactoryWithHandlers( + gestures[LongPressGestureRecognizer] = GestureRecognizerFactoryWithHandlers( () => LongPressGestureRecognizer( debugOwner: this, supportedDevices: { @@ -141,8 +137,7 @@ class _TerminalGestureDetectorState extends State { }, ); - gestures[PanGestureRecognizer] = - GestureRecognizerFactoryWithHandlers( + gestures[PanGestureRecognizer] = GestureRecognizerFactoryWithHandlers( () => PanGestureRecognizer( debugOwner: this, supportedDevices: {PointerDeviceKind.mouse}, diff --git a/lib/src/terminal/src/ui/gesture/gesture_handler.dart b/lib/src/terminal/src/ui/gesture/gesture_handler.dart index af011050..9814a43e 100644 --- a/lib/src/terminal/src/ui/gesture/gesture_handler.dart +++ b/lib/src/terminal/src/ui/gesture/gesture_handler.dart @@ -81,9 +81,7 @@ class _TerminalGestureHandlerState extends State { ); } - bool get _shouldSendTapEvent => - !widget.readOnly && - widget.terminalController.shouldSendPointerInput(PointerInput.tap); + bool get _shouldSendTapEvent => !widget.readOnly && widget.terminalController.shouldSendPointerInput(PointerInput.tap); void _tapDown( GestureTapDownCallback? callback, @@ -179,9 +177,7 @@ class _TerminalGestureHandlerState extends State { void onDragStart(DragStartDetails details) { _lastDragStartDetails = details; - details.kind == PointerDeviceKind.mouse - ? renderTerminal.selectCharacters(details.localPosition) - : renderTerminal.selectWord(details.localPosition); + details.kind == PointerDeviceKind.mouse ? renderTerminal.selectCharacters(details.localPosition) : renderTerminal.selectWord(details.localPosition); } void onDragUpdate(DragUpdateDetails details) { diff --git a/lib/src/terminal/src/ui/keyboard_visibility.dart b/lib/src/terminal/src/ui/keyboard_visibility.dart index 8988ee15..66ea4c5b 100644 --- a/lib/src/terminal/src/ui/keyboard_visibility.dart +++ b/lib/src/terminal/src/ui/keyboard_visibility.dart @@ -20,8 +20,7 @@ class KeyboardVisibilty extends StatefulWidget { KeyboardVisibiltyState createState() => KeyboardVisibiltyState(); } -class KeyboardVisibiltyState extends State - with WidgetsBindingObserver { +class KeyboardVisibiltyState extends State with WidgetsBindingObserver { @override void initState() { super.initState(); diff --git a/lib/src/terminal/src/ui/render.dart b/lib/src/terminal/src/ui/render.dart index 19f77db6..cd82d163 100644 --- a/lib/src/terminal/src/ui/render.dart +++ b/lib/src/terminal/src/ui/render.dart @@ -220,8 +220,7 @@ class RenderTerminal extends RenderBox with RelayoutWhenSystemFontsChangeMixin { } /// Total height of the terminal in pixels. Includes scrollback buffer. - double get _terminalHeight => - _terminal.buffer.lines.length * _painter.cellSize.height; + double get _terminalHeight => _terminal.buffer.lines.length * _painter.cellSize.height; /// The distance from the top of the terminal to the top of the viewport. // double get _scrollOffset => _offset.pixels; @@ -423,8 +422,7 @@ class RenderTerminal extends RenderBox with RelayoutWhenSystemFontsChangeMixin { ); } - if (_terminal.buffer.absoluteCursorY >= effectFirstLine && - _terminal.buffer.absoluteCursorY <= effectLastLine) { + if (_terminal.buffer.absoluteCursorY >= effectFirstLine && _terminal.buffer.absoluteCursorY <= effectLastLine) { if (_isComposingText) { _paintComposingText(canvas, offset + cursorOffset); } @@ -519,9 +517,7 @@ class RenderTerminal extends RenderBox with RelayoutWhenSystemFontsChangeMixin { for (var highlight in _controller.highlights) { final range = highlight.range?.normalized; - if (range == null || - range.begin.y > lastLine || - range.end.y < firstLine) { + if (range == null || range.begin.y > lastLine || range.end.y < firstLine) { continue; } diff --git a/lib/src/terminal/src/ui/scroll_handler.dart b/lib/src/terminal/src/ui/scroll_handler.dart index 8159ae87..85180bdf 100644 --- a/lib/src/terminal/src/ui/scroll_handler.dart +++ b/lib/src/terminal/src/ui/scroll_handler.dart @@ -21,12 +21,10 @@ class TerminalScrollGestureHandler extends StatefulWidget { final Widget child; @override - State createState() => - _TerminalScrollGestureHandlerState(); + State createState() => _TerminalScrollGestureHandlerState(); } -class _TerminalScrollGestureHandlerState - extends State { +class _TerminalScrollGestureHandlerState extends State { var isAltBuffer = false; var _lastPointerPosition = Offset.zero; diff --git a/lib/src/terminal/src/ui/shortcut/shortcuts.dart b/lib/src/terminal/src/ui/shortcut/shortcuts.dart index a0ebc4f8..35a0f3d8 100644 --- a/lib/src/terminal/src/ui/shortcut/shortcuts.dart +++ b/lib/src/terminal/src/ui/shortcut/shortcuts.dart @@ -18,19 +18,13 @@ Map get defaultTerminalShortcuts { } final _defaultShortcuts = { - SingleActivator(LogicalKeyboardKey.keyC, control: true, shift: true): - CopySelectionTextIntent.copy, - SingleActivator(LogicalKeyboardKey.keyV, control: true): - const PasteTextIntent(SelectionChangedCause.keyboard), - SingleActivator(LogicalKeyboardKey.keyA, control: true): - const SelectAllTextIntent(SelectionChangedCause.keyboard), + SingleActivator(LogicalKeyboardKey.keyC, control: true, shift: true): CopySelectionTextIntent.copy, + SingleActivator(LogicalKeyboardKey.keyV, control: true): const PasteTextIntent(SelectionChangedCause.keyboard), + SingleActivator(LogicalKeyboardKey.keyA, control: true): const SelectAllTextIntent(SelectionChangedCause.keyboard), }; final _defaultAppleShortcuts = { - SingleActivator(LogicalKeyboardKey.keyC, meta: true): - CopySelectionTextIntent.copy, - SingleActivator(LogicalKeyboardKey.keyV, meta: true): - const PasteTextIntent(SelectionChangedCause.keyboard), - SingleActivator(LogicalKeyboardKey.keyA, meta: true): - const SelectAllTextIntent(SelectionChangedCause.keyboard), + SingleActivator(LogicalKeyboardKey.keyC, meta: true): CopySelectionTextIntent.copy, + SingleActivator(LogicalKeyboardKey.keyV, meta: true): const PasteTextIntent(SelectionChangedCause.keyboard), + SingleActivator(LogicalKeyboardKey.keyA, meta: true): const SelectAllTextIntent(SelectionChangedCause.keyboard), }; diff --git a/lib/src/terminal/src/ui/terminal_text_style.dart b/lib/src/terminal/src/ui/terminal_text_style.dart index 6cbe8ba3..549d9439 100644 --- a/lib/src/terminal/src/ui/terminal_text_style.dart +++ b/lib/src/terminal/src/ui/terminal_text_style.dart @@ -37,11 +37,8 @@ class TerminalStyle { return TerminalStyle( fontSize: textStyle.fontSize ?? _kDefaultFontSize, height: textStyle.height ?? _kDefaultHeight, - fontFamily: textStyle.fontFamily ?? - textStyle.fontFamilyFallback?.first ?? - _kDefaultFontFamily, - fontFamilyFallback: - textStyle.fontFamilyFallback ?? _kDefaultFontFamilyFallback, + fontFamily: textStyle.fontFamily ?? textStyle.fontFamilyFallback?.first ?? _kDefaultFontFamily, + fontFamilyFallback: textStyle.fontFamilyFallback ?? _kDefaultFontFamilyFallback, ); } diff --git a/lib/src/terminal/src/utils/circular_buffer.dart b/lib/src/terminal/src/utils/circular_buffer.dart index e1e64a38..5175f1ef 100644 --- a/lib/src/terminal/src/utils/circular_buffer.dart +++ b/lib/src/terminal/src/utils/circular_buffer.dart @@ -3,8 +3,7 @@ /// A circular buffer in which elements know their index in the buffer. class IndexAwareCircularBuffer { /// Creates a new circular list with the specified [maxLength]. - IndexAwareCircularBuffer(int maxLength) - : _array = List.filled(maxLength, null); + IndexAwareCircularBuffer(int maxLength) : _array = List.filled(maxLength, null); /// The backing array for this list. Length is always equal to [maxLength]. late List _array; diff --git a/lib/widgets/src/multitab_pane.dart b/lib/widgets/src/multitab_pane.dart index b655348b..60075107 100644 --- a/lib/widgets/src/multitab_pane.dart +++ b/lib/widgets/src/multitab_pane.dart @@ -144,12 +144,10 @@ class _TabStrip extends StatelessWidget { } } : null, - onReorderTo: (draggedId) => - controller.reorder(draggedId, i), + onReorderTo: (draggedId) => controller.reorder(draggedId, i), tabHeight: tabHeight, ), - if (onAddRequested != null) - _AddButton(onTap: onAddRequested!, tabHeight: tabHeight), + if (onAddRequested != null) _AddButton(onTap: onAddRequested!, tabHeight: tabHeight), ], ), ), @@ -404,12 +402,9 @@ class _AddButton extends StatelessWidget { decoration: BoxDecoration( color: hovered ? tokens.listItemHoverBackground : null, ), - child: ClideText('+', - fontSize: clideIconStandard, - color: hovered ? tokens.globalForeground : tokens.globalTextMuted), + child: ClideText('+', fontSize: clideIconStandard, color: hovered ? tokens.globalForeground : tokens.globalTextMuted), ), ), ); } } - diff --git a/test/files/path_safety_test.dart b/test/files/path_safety_test.dart index 7168a789..28aa48b4 100644 --- a/test/files/path_safety_test.dart +++ b/test/files/path_safety_test.dart @@ -31,18 +31,15 @@ void main() { }); test('rejects ../etc/passwd traversal', () { - expect(() => resolveUnderRoot(root, '../../../etc/passwd'), - throwsA(isA())); + expect(() => resolveUnderRoot(root, '../../../etc/passwd'), throwsA(isA())); }); test('rejects traversal that lands at filesystem root', () { - expect(() => resolveUnderRoot(root, '../'), - throwsA(isA())); + expect(() => resolveUnderRoot(root, '../'), throwsA(isA())); }); test('rejects sibling-directory traversal', () { - expect(() => resolveUnderRoot(root, '../sibling/file'), - throwsA(isA())); + expect(() => resolveUnderRoot(root, '../sibling/file'), throwsA(isA())); }); test('allows internal `..` that stays under root', () { @@ -56,8 +53,7 @@ void main() { final twin = Directory('${root.parent.path}/${root.uri.pathSegments.where((s) => s.isNotEmpty).last}_twin'); try { twin.createSync(); - expect(() => resolveUnderRoot(root, '../${twin.uri.pathSegments.where((s) => s.isNotEmpty).last}/file'), - throwsA(isA())); + expect(() => resolveUnderRoot(root, '../${twin.uri.pathSegments.where((s) => s.isNotEmpty).last}/file'), throwsA(isA())); } finally { if (twin.existsSync()) twin.deleteSync(recursive: true); } diff --git a/test/widgets/multitab_pane_test.dart b/test/widgets/multitab_pane_test.dart index 522ab37f..4494b675 100644 --- a/test/widgets/multitab_pane_test.dart +++ b/test/widgets/multitab_pane_test.dart @@ -20,8 +20,7 @@ MultitabEntry entry(String id, {bool closeable = true, bool reorderable ); } -Widget body(BuildContext _, MultitabEntry e) => - SizedBox(key: ValueKey('body-${e.id}'), child: Text('body:${e.payload}')); +Widget body(BuildContext _, MultitabEntry e) => SizedBox(key: ValueKey('body-${e.id}'), child: Text('body:${e.payload}')); /// Stateful tap-counter body. Preserves a per-id count across rebuilds /// in a static map so the test can assert state survival across tab