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

umputun / revdiff
88%
master: 90%

Build:
Build:
LAST BUILD BRANCH: refs/tags/v1.6.1
DEFAULT BRANCH: master
Repo Added 01 Apr 2026 08:15AM UTC
Token zpy25XdTlXkHx5U3syYGatR9U5X0sk8oe regen
Build 747 Last
Files 71
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

LAST BUILD ON BRANCH fix/diff-viewport-visual-height-scroll
branch: fix/diff-viewport-visual-height-scroll
CHANGE BRANCH
x
Reset
Sync Branches
  • fix/diff-viewport-visual-height-scroll
  • add-collapsed-flag
  • all-files-mode
  • annotation-list-popup
  • annotation-rowcache
  • ci-shellcheck-yaml
  • code-smells-cleanup
  • codex-plugin
  • collapsed-diff-mode
  • commit-info-popup
  • community-themes
  • compact-diff-mode
  • compact-improve
  • compare-flag
  • custom-keybindings
  • daulet/new_file
  • daulet/word_highlight
  • dependabot/go_modules/github.com/alecthomas/chroma/v2-2.24.1
  • dependabot/go_modules/github.com/alecthomas/chroma/v2-2.25.0
  • dependabot/go_modules/github.com/alecthomas/chroma/v2-2.26.1
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.11.7
  • dependabot/go_modules/github.com/mattn/go-runewidth-0.0.23
  • dependabot/go_modules/github.com/mattn/go-runewidth-0.0.24
  • diff-search
  • discard-quit
  • docs/pi-package-review-fixes
  • eager-commit-fetch
  • exit-code-on-annotations
  • external-editor-annotations
  • feat/annotation-marker
  • feat/cmux-support
  • feat/history-skill-fallback
  • feat/jj-support
  • feat/launch-script-improvements
  • feat/navigation-scrollbar
  • feat/one-light-chroma-style
  • feat/open-editor-keymap
  • feat/opencode-config-docs
  • feat/overlay-mouse-support
  • feat/preload-annotations
  • feat/review-info-overlay
  • feat/reviewed-files-and-status-indicators
  • feat/scroll-indicators
  • feat/scrollbar-thumb
  • feat/stdin-scratch-buffer
  • feat/toggle-tree-pane
  • feat/tree-focus-diff-scroll
  • feat/untracked-flag
  • feat/wheel-scroll-viewport-only
  • feat/word-diff-highlighting
  • feat/word-diff-opt-in
  • feat/zed-revdiff-task
  • feature/annotation-navigation
  • feature/binary-file-detection
  • feature/layout-agnostic-keys
  • feature/layout-agnostic-keys-v2
  • feature/new-file-and-untracked-support
  • feature/range-hunk-annotations
  • fix-ctrl-du-half-page
  • fix-file-annotation-bugs
  • fix-initial-loading-flash
  • fix-marketplace-name-in-docs
  • fix-prefix-fg-on-highlighted-lines
  • fix-tmux-title-compat
  • fix-tree-wheel-single-step
  • fix-wheel-scroll-coalesce
  • fix-wrap-right-padding
  • fix/124-page-cursor-relative-position
  • fix/center-hunk-in-viewport
  • fix/cmux-close-surface-recycled-ref
  • fix/cmux-ghostty-detection
  • fix/cmux-send-stdout-leak
  • fix/ghostty-improvements
  • fix/issue-203-zellij-popup-size
  • fix/kitty-ssh-remote-launch
  • fix/launcher-argument-quoting
  • fix/only-dot-prefix
  • fix/overlay-path-inheritance
  • fix/pi-revdiff-review-trigger
  • fix/staged-only-empty-diff
  • fix/subdirectory-support
  • fix/theme-persist-ini-section
  • global-hunk-navigation
  • hunk-keyword-expansion
  • include-filter
  • intraline-word-diff
  • iterm2-osascript
  • launcher-override-chain
  • leader-chord-keybindings
  • line-numbers
  • markdown-toc-navigation
  • master
  • mercurial-support
  • mouse-support
  • move-code-to-app
  • only-filter
  • overlay-extraction
  • pi-revdiff-claude-workflow
  • refs/tags/v0.1.0
  • refs/tags/v0.1.1
  • refs/tags/v0.10.0
  • refs/tags/v0.11.0
  • refs/tags/v0.12.0
  • refs/tags/v0.13.0
  • refs/tags/v0.14.0
  • refs/tags/v0.14.1
  • refs/tags/v0.15.0
  • refs/tags/v0.15.1
  • refs/tags/v0.15.2
  • refs/tags/v0.15.3
  • refs/tags/v0.16.0
  • refs/tags/v0.16.1
  • refs/tags/v0.17.0
  • refs/tags/v0.18.0
  • refs/tags/v0.18.1
  • refs/tags/v0.19.0
  • refs/tags/v0.19.1
  • refs/tags/v0.19.2
  • refs/tags/v0.2.0
  • refs/tags/v0.2.1
  • refs/tags/v0.2.2
  • refs/tags/v0.2.3
  • refs/tags/v0.2.4
  • refs/tags/v0.20.0
  • refs/tags/v0.21.0
  • refs/tags/v0.22.0
  • refs/tags/v0.23.0
  • refs/tags/v0.24.0
  • refs/tags/v0.25.0
  • refs/tags/v0.25.1
  • refs/tags/v0.26.0
  • refs/tags/v0.26.1
  • refs/tags/v0.27.0
  • refs/tags/v0.27.1
  • refs/tags/v0.28.0
  • refs/tags/v0.3.0
  • refs/tags/v0.4.0
  • refs/tags/v0.4.1
  • refs/tags/v0.4.2
  • refs/tags/v0.5.0
  • refs/tags/v0.6.0
  • refs/tags/v0.7.0
  • refs/tags/v0.7.1
  • refs/tags/v0.7.2
  • refs/tags/v0.8.0
  • refs/tags/v0.9.0
  • refs/tags/v1.0.0
  • refs/tags/v1.1.0
  • refs/tags/v1.1.1
  • refs/tags/v1.2.0
  • refs/tags/v1.2.1
  • refs/tags/v1.3.0
  • refs/tags/v1.4.0
  • refs/tags/v1.4.1
  • refs/tags/v1.5.0
  • refs/tags/v1.5.1
  • refs/tags/v1.6.0
  • refs/tags/v1.6.1
  • reload
  • rename-aware-diffs
  • revert/197-opencode-symlink
  • revert/opencode-setup-symlink
  • review-findings
  • review-history
  • search-history
  • shell-completions
  • sidepane-extraction
  • single-column-line-numbers-full-context
  • single-file-mode
  • skill-opencode-timeout-fix
  • skill-scripts-hg-jj
  • skill-use-claude-skill-dir
  • status-bar-line-number
  • status-line-help-overlay
  • structural-refactor
  • style-extraction
  • theme-support
  • two-ref-diff
  • ui-package-split
  • update-pi-extension-agent-tool
  • vim-motion-preset
  • widen-annot-list-popup
  • word-wrap
  • worddiff-extraction
  • worktree-bugfix
  • worktree-no-git-file-review
  • wrap-marker-style

17 Apr 2026 06:28PM UTC coverage: 88.374% (+0.01%) from 88.362%
24580605021

Pull #118

github

umputun
fix(ui): keep wrap and annotation rows visible at viewport bottom

syncViewportToCursor compared only the cursor's top row to the viewport
bottom, so when the cursor sat on the last visible row with a logical line
taller than one visual row, the extra rows (wrap continuations under
--wrap, or multi-line annotation rows injected below the diff line)
rendered past the viewport bottom and were clipped.

Introduce cursorVisualRange/cursorVisualHeight to compute the cursor's
full visual extent via the existing hunkLineHeight / wrappedLineCount /
wrappedAnnotationLineCount helpers. syncViewportToCursor now scrolls
against the cursor's visual bottom, with a min(..., cursorTop) floor so
a logical line taller than the viewport keeps the cursor top anchored.
SetContent runs before SetYOffset so viewport.maxYOffset() reflects
post-mutation content length.

Also add syncViewportToCursor() to the editor-finished save path in
saveComment so a freshly saved multi-row annotation scrolls into view
when the cursor sits near the bottom.

Tests cover wrap-overflow, annotation-overflow, cursor-on-annotation
sub-line overflow, file-annotation overflow, cursor-taller-than-viewport
floor, editor-save line-level sync, and editor-save file-level GotoTop.
Pull Request #118: fix(ui): keep wrap and annotation rows visible at viewport bottom

30 of 32 new or added lines in 2 files covered. (93.75%)

7054 of 7982 relevant lines covered (88.37%)

331.68 hits per line

Relevant lines Covered
Build:
Build:
7982 RELEVANT LINES 7054 COVERED LINES
331.68 HITS PER LINE
Source Files on fix/diff-viewport-visual-height-scroll
  • Tree
  • List 57
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
24580605021 fix/diff-viewport-visual-height-scroll fix(ui): keep wrap and annotation rows visible at viewport bottom syncViewportToCursor compared only the cursor's top row to the viewport bottom, so when the cursor sat on the last visible row with a logical line taller than one visual row, the e... Pull #118 17 Apr 2026 06:29PM UTC umputun github
88.37
See All Builds (653)

Badge your Repo: revdiff

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

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

Refresh
  • Settings
  • Repo on GitHub
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