Skip to content

Wrapped large diff remains blank on v0.17.6 while v0.13.2 renders #600

Description

@mplibunao

Summary

Hunk v0.17.6 remains blank indefinitely when rendering a large diff with line wrapping enabled. The same diff renders and remains navigable on v0.13.2, although memory usage is high. Disabling wrapping on v0.17.6 restores sub-second rendering.

This appears distinct from the general macOS startup regression reported in #534: that original small-fixture reproduction no longer regresses on v0.17.6.

Environment

  • macOS 26.5.2, arm64
  • Kitty 0.45.0
  • Fish 4.8.0
  • Native arm64 Hunk binaries built from the corresponding tagged Nix flakes
  • Hunk config:
agent_notes = true
line_numbers = true
theme = "ember"
watch = false
wrap_lines = true

Reproduction

From an already-running Fish shell in Kitty, in a branch with 141 changed files, 20,852 insertions, and 1,475 deletions:

hunk diff main

Git produces the underlying diff in approximately 0.02 seconds.

Results

Version / configuration Result
v0.17.6, wrapping enabled Blank after several minutes; sampled at 2m42s with approximately 1 GB physical footprint and the main thread idle in the event loop
v0.17.6, --no-wrap Complete diff rendered in 0.63s; navigation responsive; approximately 345 MB RSS during the observed run
v0.17.6, wrapping enabled, scoped to one 648-line file Rendered in 0.65s
v0.13.2, wrapping enabled Complete diff rendered in 2.83–2.85s; navigation responsive; approximately 2.28 GB RSS

The comparisons used the same machine, Kitty instance, repository, terminal dimensions, diff, and configuration. Each run used a private HUNK_MCP_PORT. The literal wrapper path hd main only forwards to hunk diff main and reproduced the same results.

Expected behavior

Wrapped reviews should either:

  1. render with bounded memory and responsive navigation, or
  2. degrade gracefully with progressive or single-file rendering, or a clear size warning, instead of leaving a blank TUI indefinitely.

Relevant existing work

This may be a regression or an uncovered scalability boundary in that wrapped full-render path.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions