• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

umputun / revdiff / 24798272250
90%

Build:
DEFAULT BRANCH: master
Ran 22 Apr 2026 07:29PM UTC
Jobs 1
Files 59
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Apr 2026 07:28PM UTC coverage: 89.327% (+0.1%) from 89.188%
24798272250

push

github

web-flow
Add mouse support (#142)

* add plan: mouse-support

* feat: add --no-mouse config flag and wire tea.WithMouseCellMotion

Adds the NoMouse option (CLI flag, env var, ini) following the existing
no-* flag pattern. When not set, tea.WithMouseCellMotion() is appended
to program options so future handleMouse work can observe wheel and
click events. Defaults preserve current behavior modulo mouse tracking,
which will start flowing through Update() once the handler lands.

* feat: add visualRowToDiffLine inverse mapping for click-to-cursor

Inverse of cursorVisualRange: given a visual row within the diff viewport
content, returns the diff-line index and whether the row lies on an
injected annotation sub-line. Handles file-level annotations (idx=-1),
wrapped rows, collapsed-mode hidden lines, and out-of-bounds rows.

Foundation for mouse click-to-cursor in the diff pane.

* feat: add SelectByVisibleRow to FileTree and TOC

Maps a visible screen row (0-based from the first rendered line)
to an entry index via the pane's internal offset, returning false
for out-of-bounds rows without touching the cursor.

Unlocks click-to-select once the mouse handler arrives.

* feat: add hitTest and layout helpers for mouse routing

Introduce hitZone classification (hitNone/hitTree/hitDiff/hitStatus/hitHeader)
with Model.hitTest(x, y) dispatching screen coordinates to the right pane.
Add statusBarHeight, diffTopRow, treeTopRow methods as the single source of
truth for layout math. Tree block spans treeWidth+2 columns (including
borders), diff picks up at treeWidth+2.

* feat: route tea.MouseMsg through handleMouse for wheel and left-click

Wire bubbletea mouse events into the Model via a new tea.MouseMsg case in
Update. handleMouse clears transient hints, swallows input during modal
states (annotating, searching, pending reload, confirm discard, overlay
open), and dispatches on button:

- wheel up/down: routes to pane under the pointer (not the focused pane).
  Shift+wheel s... (continued)

211 of 225 new or added lines in 6 files covered. (93.78%)

7909 of 8854 relevant lines covered (89.33%)

468.82 hits per line

Uncovered Changes

Lines Coverage ∆ File
9
93.88
app/ui/mouse.go
3
9.69
-0.15% app/main.go
2
93.96
0.33% app/ui/annotate.go
Jobs
ID Job ID Ran Files Coverage
1 24798272250.1 22 Apr 2026 07:29PM UTC 59
89.33
GitHub Action Run
Source Files on build 24798272250
  • Tree
  • List 59
  • Changed 7
  • Source Changed 0
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 10503fd2 on github
  • Prev Build on refs/tags/v0.22.0 (#24747726829)
  • Next Build on master (#24798353579)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc