Files
clide/pubspec.yaml
T
jpmschweitzerandClaude 6008b4914c test sweep: cover utils/ + core/mouse/ (T-91)
Adds two test files closing the last two pure-Dart sub-areas in
`lib/src/terminal/src/`:

`test/terminal/utils/utils_test.dart` — 51 tests covering:
- Ascii.isNonPrintable (control chars + DEL).
- hashValues (every optional arg slot, 2..20 inclusive) +
  hashList (including the documented zero-on-empty short-circuit).
- ByteConsumer (single-block + cross-block consume, peek's
  consume-rollback path, rollback within block + across consumed
  blocks, rollbackTo, unrefConsumedBlocks, reset).
- IndexAwareCircularBuffer (push/trim, pushAll, pop, [] / []=,
  clear, forEach, remove with count clamp / no-op, insert in the
  middle / at end / at full ring, insertAll, trimStart, replaceWith
  with truncate-from-head, swap, maxLength setter incl. error +
  no-op cases, debugDump, IndexedItem mixin attach/detach/index).
- UnicodeV11.wcwidth (control chars, printable ASCII, DEL+C1,
  combining marks BMP+high-plane, wide chars BMP+high-plane,
  unmapped high-plane default, version field).
- The push wrap branch where _startIndex resets to 0 after a full
  revolution (last circular_buffer line).

`test/terminal/mouse/mouse_test.dart` — 21 tests covering:
- TerminalMouseButton ids + isWheel for the 7 enum values.
- MouseReporter for all four MouseReportMode shapes (normal with
  >223 null-byte clamp, utf with the 2015-limit clamp, sgr's M/m
  pair, urxvt's button+32 / 3-on-up encoding).
- TerminalMouseEvent constructor.
- CascadeMouseHandler first-non-null semantics.
- ClickMouseHandler — only fires on clickOnly + down + button id
  < 3; null otherwise. UpDownMouseHandler — fires on every
  upDownScroll* mode; drops wheel-up; passes wheel-down. Default
  defaultMouseHandler routes through both.

Coverage delta:
- utils/ascii.dart: 0/2 → 2/2.
- utils/byte_consumer.dart: 28/42 → 42/42.
- utils/circular_buffer.dart: 71/130 → 130/130.
- utils/hash_values.dart: 16/36 → 36/36.
- utils/unicode_v11.dart: 16/27 → 27/27.
- core/mouse/handler.dart: 3/34 → 34/34.
- core/mouse/reporter.dart: 0/17 → 17/17.
- (utils/char_code.dart, utils/lookup_table.dart already at 100%
  from earlier reflow + parser work; mouse/button.dart,
  mouse/button_state.dart, mouse/mode.dart are pure enums with no
  executable lines.)
- Total project: 54.62% → 56.40%; coverage_floor bumped 54 → 56.

Two pre-existing `// ignore_for_file: constant_identifier_names`
suppressions that lacked documented reasons get inline
justifications:
- `lib/src/terminal/src/utils/ascii.dart` — RFC 20 / ISO 646
  control-character names; lowerCamelCase would diverge from every
  spec/man-page reference.
- `lib/src/terminal/src/utils/unicode_v11.dart` — Unicode 11
  wcwidth tables vendored as-is; future re-vendoring stays a
  verbatim paste.

Both fall under the same "FFI / spec-shaped names" pattern as the
libc.dart suppression (D-66 era).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-07 08:13:07 +02:00

107 lines
2.8 KiB
YAML

# clide — IDE for Claude Code CLI.
#
# Single source of truth for project metadata and dependencies.
# The Flutter app hosts everything in-process (D-056); tmux owns
# session persistence (D-041).
#
# Prefer-zero-deps; every third-party entry is exact-pinned and
# justified. No carets. See D-031.
name: clide
description: >-
IDE for Claude Code CLI. One Dart package covering the UI,
subsystem handlers (pane, files, editor, git, pql), and the
extension framework.
publish_to: none
version: 2.0.0
repository: https://github.com/postmeridiem/clide
# Pre-push line-coverage floor. Ratchets up only — see D-66.
# Reading: `awk -F: '/^coverage_floor:/ {gsub(/ /,"",$2); print $2}' pubspec.yaml`.
coverage_floor: 56
# Project metadata (was project.yaml, folded in per D-056).
# version: above is the single source of truth. The Makefile reads
# it for build stamping. Cutting a release bumps version + changelog
# in one commit.
#
# maintainers:
# Jeroen Schweitzer <jpmschweitzer@gmail.com>
# license: MIT
# status: pre-v2.0, interaction model + panel system landed
# flutter_channel: stable
environment:
sdk: ">=3.5.0 <4.0.0"
flutter: ">=3.19.0"
dependencies:
flutter:
sdk: flutter
yaml: 3.1.3
ffi: 2.1.3
jovial_svg: 1.1.26
markdown: 7.2.2
flutter_widget_from_html_core: 0.17.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: 6.0.0
integration_test:
sdk: flutter
test: 1.30.0
mocktail: 1.0.4
alchemist: 0.12.1
flutter:
uses-material-design: false
assets:
- lib/kernel/src/theme/themes/
- lib/kernel/src/i18n/catalog/
- assets/licenses.yaml
- assets/LICENSE
- assets/fonts/jetbrains_mono/OFL.txt
- assets/fonts/josefin_sans/OFL.txt
- assets/fonts/phosphor/LICENSE
- assets/logo/logo.svg
- assets/logo/logo-192.png
- assets/logo/appicon.svg
- assets/logo/appicon-256.png
- assets/clide.tmux.conf
- assets/grammars/
- assets/queries/
fonts:
- family: JosefinSans
fonts:
- asset: assets/fonts/josefin_sans/JosefinSans-VariableFont.ttf
- asset: assets/fonts/josefin_sans/JosefinSans-Italic-VariableFont.ttf
style: italic
- family: Phosphor
fonts:
- asset: assets/fonts/phosphor/Phosphor.ttf
- asset: assets/fonts/phosphor/Phosphor-Bold.ttf
weight: 700
- asset: assets/fonts/phosphor/Phosphor-Fill.ttf
- family: JetBrainsMono
fonts:
- asset: assets/fonts/jetbrains_mono/JetBrainsMono-Regular.ttf
- asset: assets/fonts/jetbrains_mono/JetBrainsMono-Italic.ttf
style: italic
- asset: assets/fonts/jetbrains_mono/JetBrainsMono-Bold.ttf
weight: 700
- asset: assets/fonts/jetbrains_mono/JetBrainsMono-BoldItalic.ttf
weight: 700
style: italic