Skip to content

Releases: bgunnarsson/binvim

v0.5.15

Choose a tag to compare

@github-actions github-actions released this 01 Jul 13:06

Added

  • First-run toolchain setup. Open a file whose language is missing its LSP
    or formatter and binvim now says so — a popup (the same overlay style as the
    file picker, so a competing notice like Copilot sign-in can't paint over it)
    leads with an "Install all missing dependencies" action and itemises what
    that covers; Enter opens :install preselected to that language's bundle so
    you review the plan and confirm with y, Esc dismisses. The new
    <leader>i opens the same preselected installer on demand. The popup fires at
    most once per language per session, skips large files and languages that can't
    be auto-installed (Razor's OmniSharp), won't open over another overlay or
    mid-edit, and never nags about DAP adapters — only the LSP + formatter that
    make a language feel set up. Silence it with [install] prompt_on_open = false.

v0.5.14

Choose a tag to compare

@github-actions github-actions released this 23 Jun 17:05

Fixed

  • Pasting over a Visual selection no longer clobbers the register. Visual-mode
    p / P copied the replaced text into the unnamed register (Vim's default), so
    pasting a yank over one line and then over the next replayed the line you had just
    overwritten instead of the original yank. The replaced selection is now dropped
    rather than yanked, so the register keeps the pasted content and the same yank can
    be put down over line after line.
  • The Files picker highlights the best-scoring fuzzy match, not a greedy one.
    The matcher bound each query character to its first occurrence left-to-right, which
    scattered the highlight across a path (matching footer.cshtml over Features/Footer
    instead of the contiguous trailing Footer.cshtml). A dynamic-programming pass now
    finds the alignment that maximises the bonus total, so the highlighted characters
    track the run a human would pick — contiguous, at word boundaries.
  • The DAP Console tab scrolls in the same direction as the rest of the UI.

Performance

  • Input bursts coalesce into a single render. The event loop redrew the whole
    editor once per input event, so a fast trackpad/wheel scroll over a pane — delivered
    by the OS as a flood of scroll events — backed up dozens of full-screen frames and
    the editor visibly lagged catching up after the gesture. This was most painful with
    an AI side pane open: scroll events forwarded to the embedded tool triggered output
    floods, and a click to return focus to the code sat behind the whole backlog, so the
    cursor took a beat to reappear. The loop now drains everything already queued before
    drawing once, collapsing a burst to one frame (capped so a continuous stream can't
    starve the PTY drains).

v0.5.13

Choose a tag to compare

@github-actions github-actions released this 18 Jun 15:50

Fixed

  • The mouse wheel now scrolls the AI side panes (:claude, :codex).
    The side pane forwarded the wheel to the embedded tool only when the tool
    had enabled DECSET mouse tracking, and otherwise dropped the event. Claude
    and Codex render on the normal screen via in-place repaint and never turn
    mouse tracking on, so their committed history scrolled into binvim's own
    grid scrollback with no way to reach it. The wheel now pages that scrollback
    directly — the same fallback the bottom :terminal pane already had — while
    mouse-tracking tools (opencode) keep getting the wheel forwarded, and an
    alt-screen pager without tracking has the wheel translated to arrow keys.

v0.5.12

Choose a tag to compare

@github-actions github-actions released this 18 Jun 15:12

Fixed

  • Terminal and AI panes are now reachable from the start page. The
    start-page input guard only lets a key through while a <leader> chord
    is mid-flight, but its hand-maintained list of in-progress sub-leaders
    had dropped the terminal (<leader>t…) and test (<leader>s…) menus.
    With nothing else open, the follow-up key of those chords was swallowed,
    so <leader>tt / <leader>tf never opened or focused a terminal — the
    AI menu only worked because its flag happened to still be listed. The
    guard and the which-key timer now share a single any_leader_pending()
    check, so the two lists can't drift apart again.

v0.5.11

Choose a tag to compare

@github-actions github-actions released this 18 Jun 13:45

Added

  • Python / PyPI package backend for <leader>p. The package manager now
    recognises Python projects (.py buffers / requirements.txt) alongside
    .NET, npm, Cargo, and Go. It reads requirements.txt for installed packages,
    lists every release from PyPI's JSON API (sorted newest-first with a PEP 440
    comparator, prereleases behind the Tab toggle), and add rewrites the
    requirement line in place — it never shells out to pip, so there's no
    guesswork about which interpreter or virtualenv to touch. Because PyPI
    retired package search, the search flow resolves an exact package name via
    the JSON API instead. Needs curl on PATH.

v0.5.10

Choose a tag to compare

@github-actions github-actions released this 18 Jun 12:37

Fixed

  • Shift-Left / Shift-Right now scroll the debug pane horizontally again.
    The shifted arrow bindings sat below the unshifted Left/Right tab-cycle
    arms in the match, so they were unreachable and never fired. They now
    precede the cycle arms and scroll long stack-frame paths / console lines
    as intended.
  • The status line now shows a modified marker () for unsaved
    buffers.
    The marker slot after the file path had two identical
    branches, so it rendered a blank space whether or not the buffer was
    dirty; it now paints a dot when there are unsaved changes.

Changed

  • Internal clippy cleanup pass — no behavioural change. Mechanical
    lint fixes across the tree (idiomatic abs_diff / div_ceil /
    eq_ignore_ascii_case, redundant .max(0) removals, dead-code
    pruning) plus scoped #[allow]s where the lint's rewrite would hurt
    readability.

v0.5.9

Choose a tag to compare

@github-actions github-actions released this 18 Jun 09:48

Added

  • .slnx solutions are recognised as a .NET workspace root. The .NET 10
    XML solution format now anchors workspace-root discovery alongside the
    classic .sln, so a buffer deep inside a project resolves to the solution
    directory instead of the project directory.

Fixed

  • Heavy terminal/AI panes no longer freeze input then "replay" it. A
    chatty TUI in a :terminal or AI side pane (e.g. opencode) can queue
    megabytes of output between ticks; the drain parsed the entire backlog
    in one main-loop pass, blocking the event loop long enough that
    keystrokes piled up unread and then fired in a burst once it finished.
    PTY drains are now budget-capped per tick, so leftover output catches
    up across the following ticks while input stays responsive.
  • The .NET debug picker no longer offers class libraries. Launching the
    debugger listed every project, including class libraries that build then
    fail at launch with a missing runtimeconfig.json. The picker now filters
    to projects that produce a runnable executable (explicit OutputType
    Exe/WinExe, or the Web/Worker SDK), falling back to the full list when
    nothing looks runnable so detection gaps never strand a launch.

v0.5.8

Choose a tag to compare

@github-actions github-actions released this 02 Jun 14:20

Full Changelog: v0.5.7...v0.5.8

v0.5.7

Choose a tag to compare

@github-actions github-actions released this 02 Jun 13:26

Full Changelog: v0.5.6...v0.5.7

v0.5.6

Choose a tag to compare

@github-actions github-actions released this 02 Jun 12:29

Full Changelog: v0.5.5...v0.5.6