Skip to content

Releases: tannaurus/nvim-arbiter

v0.0.9

28 Mar 18:00
4c2ff38

Choose a tag to compare

Stripped back API

Removed some of the features that are less helpful to focus on the core feedback loop. "Needs changes", "catch up", "auto resolve", "thread reanchoring", "refresh", "toggle resolve" (replaced with new behavior: comment on thread will unresolve it.)

Token usage

Prompts repeat themselves less and delegate that responsibility to the CLI tool. Token usage is displayed in thread and can be interacted with to see prompt given to agent.

Telescope

Added integration with telescope

Full Changelog: v0.0.8...v0.0.9

v0.0.8

27 Mar 00:11
53d9079

Choose a tag to compare

Features

  • :ArbiterSelfReview accepts an optional prompt - Steer what the agent focuses on, e.g.
    :ArbiterSelfReview check error handling and edge cases.
  • :ArbiterReset command - Deletes all persisted state (threads, review status, sessions) for the current
    workspace and closes the review. Clean slate without restarting Neovim.
  • Thread window status indicators - "agent thinking..." and "queued" status messages now use distinct
    highlight colors (green and purple) instead of default grey.

Improvements

  • Better agent response quality - The agent now receives explicit role context telling it to act directly
    on your review comments rather than drafting copy-paste replies for an external platform.
  • Revision view focuses correctly - Jumping into a source file from a diff and then opening a revision from
    the thread window now properly moves focus to the revision's diff panel.
  • Fixed syntax highlighting in popups - Unmatched quotes in thread previews, the thread list, prompt panel,
    and other plugin windows no longer cause cascading yellow highlighting.

Breaking changes

  • "Binned" renamed to "Stale" - Threads whose anchor line is lost are now called "stale." The config key
    list_threads_binned is now list_threads_stale.
  • Resolve thread keymap changed - Default changed from <Leader>aR to <Leader>ar.

Full Changelog: v0.0.7...v0.0.8

v0.0.7

22 Mar 18:06
1a0b263

Choose a tag to compare

New features

  • Prompt panel -- Long-lived agent conversations in a floating window. :ArbiterPrompt opens the default conversation; :ArbiterPrompt <name> opens or switches to a named one. Each conversation
    maintains independent message history and backend session. Winbar shows conversation name and message count.
  • Project rules -- Persistent, file-aware instructions loaded from markdown files with TOML frontmatter. Drop rule files in .arbiter/rules/ (workspace) or ~/.config/arbiter/rules/ (global). Glob
    patterns scope rules to matching files; scenario filters (thread, self_review) control when they fire. Rules from all configured directories are additive. See the new Project Rules section in the
    README.
  • Self-review apply -- :ArbiterApply bundles all open self-review threads into a single prompt. Each thread is marked auto-resolve so they close once the agent applies the changes. Confirmation popup
    shows an item preview before sending.
  • Similar threads -- After self-review, a similarity pass groups threads that flag the same class of issue. Cross-references appear in the thread panel so you can navigate related feedback.

New commands

Command Description
:ArbiterPrompt [name] Toggle the prompt panel. Without an argument, opens the default conversation. With a name, opens or switches to that named conversation.
:ArbiterApply Send all open self-review feedback to the agent in a single prompt.
:ArbiterRules Open an editable popup with all active rules (learned + project).
:ArbiterToggleRules Toggle automatic rule extraction on agent responses.
:ArbiterReloadRules Re-read project rule files from disk.

New config options

Option Default Description
rules_dirs {} Additional directories to search for project rule files.

Bug fixes

  • Fixed crash from empty file paths in diff name parsing.
  • Fixed mutex poisoning recovery in the backend queue.

Full Changelog: v0.0.6...v0.0.7

v0.0.6

19 Mar 16:06
9465293

Choose a tag to compare

Breaking Changes

Arbiter command split

:Arbiter split into two commands. :Arbiter now always opens the workbench for unstaged working-tree changes (diffs against HEAD). :ArbiterCompare [ref] handles branch comparison diffs, falling back to review.default_ref from config. If no ref resolves, it shows an error instead of silently diffing against the working tree.

Thread list keymap change

Thread list keymaps changed from <Leader>aT prefix to <Leader>at (lowercase).

Working-tree diff behavior change

Working-tree diffs now compare against HEAD instead of the index. Staged hunks remain visible (dimmed as accepted) rather than vanishing. This is a semantic change: :Arbiter shows everything changed since the last commit, not just what's unstaged.


New Features

Review memory / rule learning

Conventions enforced during review are automatically extracted from agent responses and injected into future thread prompts. Toggle with :ArbiterToggleRules, view/edit with :ArbiterRules. Configurable via learn_rules (default: true).

Revision view

Browse individual commits within a branch review (:ArbiterCompare). Shows per-commit file lists with add/modify/delete stats and before/after diffs.

nvim-tree integration

New file_panel = "nvim-tree" config option uses nvim-tree as the file panel instead of the builtin tree. Filters to show only changed files, displays review-status signs, auto-expands all directories. Falls back to builtin if nvim-tree isn't available.

"Signs" diff style

New review.diff_style = "signs" option uses colored gutter indicators (green/red/blue margin signs) instead of full-line background highlighting, preserving syntax highlighting in the diff panel.

nvim-web-devicons support

Review status icons in the nvim-tree panel resolve to Nerd Font glyphs when nvim-web-devicons is installed, with Unicode fallback. User-configurable icon overrides via icons config.

Hunk staging in working-tree mode

<Leader>as stages/unstages individual hunks (git apply --cached). <Leader>aa (approve file) stages all hunks. Arbiter tracks which hunks it staged so unstaging only reverses what Arbiter did.

Cache version invalidation

Persisted review state and threads are stamped with the plugin version. Stale caches from older versions are discarded on load.

File navigation history

<Leader>ab navigates back through previously viewed files.


Improvements

Thread list popup

Thread list popup replaces the old quickfix-based list. Sized to 80% of editor, sorted newest-first, grouped by status. dd resolves/deletes, <CR> navigates.

Rule extraction timing

Rule extraction runs on every agent response instead of only at thread-resolve time, using a priority queue so extraction completes before the next queued request.

Diff panel auto-reopen

Diff panel auto-reopens when the user selects a file or navigates to a thread after the panel was closed.

Resilient staging

Staging is resilient to already-staged hunks. When git apply --cached fails because the change is already in the index (e.g. from a prior session or manual git add), the hunk is silently marked as accepted instead of showing an error.

Idiomatic Rust refactoring

Replaced ref/ref mut patterns with .as_ref() / .as_mut() / .as_deref() across all files. Narrowed visibility from pub to pub(crate) for all items in private modules.

File panel abstraction

File panel extracted into a trait. FilePanel trait with BuiltinFilePanel and NvimTreeFilePanel implementations, enabling pluggable file panel backends.

Theme-aware highlights

All custom highlight groups now set distinct colors for dark/light backgrounds, with default = true for user override.


Bug Fixes

nvim-tree hang fix

Fixed nvim-tree hang on second invocation. close() was calling bwipeout! on nvim-tree's buffer, corrupting its internal state. Now properly closes the tree via api.tree.close() and skips the buffer wipe for externally-managed buffers.

Fully-staged files visibility fix

Working-tree diffs now compare against HEAD so staged files remain visible and their hunks can be un-accepted/unstaged.

Index conflict error fix

Fixed "already exists in index" error. Staging failures from already-applied hunks are handled gracefully instead of blocking acceptance.

Diff stats accuracy fix

Revision view line counts (+N, -M) now correctly count additions and deletions instead of showing +0, -0 for removals.

Cursor position fix

Fixed stale cursor position after staging. After staging a hunk and navigating back, keymaps now work correctly because cursor snaps to a valid hunk position.

Full Changelog: v0.0.5...v0.0.6

v0.0.5

18 Mar 01:15
eefb487

Choose a tag to compare

Changed

  • :Arbiter now opens the workbench for unstaged working tree changes (no arguments accepted).
  • :ArbiterCompare [ref] is a new command for branch comparison reviews. Falls back to review.default_ref from config; shows an error if no ref can be resolved.

Full Changelog: v0.0.4...v0.0.5

v0.0.4

18 Mar 00:41
abf11e3

Choose a tag to compare

New

Review memory

The agent now learns your coding conventions as you review. After every agent response, arbiter extracts generalizable rules from the conversation and injects them into future prompts. Rules persist for the duration of the review. Configurable via learn_rules (default true), toggleable at runtime with :ArbiterToggleRules.

Rules editor

New :ArbiterRules command opens an editable popup to view, add, or remove learned rules. Save with :w, close with q.

Thread list popup

Thread list is now a floating window (replacing the quickfix list), grouped by status: Open, Binned, and Resolved. Press dd to resolve a thread or permanently delete a resolved one. Press to navigate to the thread. Sorted newest-first.

Richer agent context

Prompts now include the full file diff and comparison branch, giving the agent better awareness of what you're looking at.

Agent thinking indicator

The thread window shows "agent thinking..." or queue position ("queued (2 ahead)") while waiting for a response.

Diff panel recovery

If the diff panel is closed, selecting a file or navigating to a thread automatically re-opens it.

Changed

  • Thread list keymaps changed from <Leader>aT to <Leader>at (and variants ata, atu, atb, ato).
  • Thread list popup is 80% of editor width/height.
  • Learned rules in the thread window show only newly extracted rules, highlighted with ArbiterRuleLearned.

Full Changelog: v0.0.3...v0.0.4

v0.0.3

17 Mar 00:21
cb0af34

Choose a tag to compare

v0.0.3 Pre-release
Pre-release

Features

File navigation history

<C-o> (configurable via keymaps.file_back) now tracks all navigation across the review workbench: file jumps, thread jumps, unreviewed navigation, file panel selection, and auto-advance after approval.

Statusline queue count

The statusline component now shows the number of queued agent requests (e.g. [arbiter: thinking | 2 queued]).

Auto-advance on approval

After approving a file, focus automatically jumps to the next file with unapproved changes or open threads.

Fixes

Thread interruption

Replying to a thread while the agent is thinking no longer causes it to get stuck. The in-flight agent process is now killed when a new message targets the same thread.

v0.0.2

16 Mar 18:22
a43be3e

Choose a tag to compare

v0.0.2 Pre-release
Pre-release

Hunk acceptance

<Leader>as accepts individual hunks, folding and dimming them as a review checklist. When all hunks in a file are accepted, the file is automatically approved. Approving a file with <Leader>aa accepts all its hunks. Resetting or marking a file as needs-changes clears all accepted hunks. Acceptance state persists across sessions and is invalidated automatically when file contents change.

Thread resolution on acceptance

Accepting a hunk resolves any open threads anchored within that hunk's line range. Approving a file resolves all its open threads. <Leader>aa also toggles thread resolution when the cursor is on a thread summary line.

Thread navigation

]t/[t now skip resolved threads, cycling only through open threads across all files.

Hunk navigation

]c/[c now scroll the hunk into view instead of jumping to its top (which left the hunk off-screen above the cursor).

Active thread command

:ArbiterActiveThread opens the thread window for the agent that is currently processing a response.

Summary is now a command

The review summary moved from <Leader>as to :ArbiterSummary, freeing the keybind for hunk acceptance.

Open on first unreviewed file

:Arbiter now focuses the first non-approved file instead of always starting at the top of the list.

Reopen without errors

Closing and reopening the workbench in the same nvim session no longer fails with "Buffer with this name already exists."

Thread interaction fixes

<Leader>aR, <CR>, <Leader>ao, and thread navigation now correctly find the thread under the cursor (previously off by one line).

Alpha v0.0.1

15 Mar 22:57
600108a

Choose a tag to compare

Alpha v0.0.1 Pre-release
Pre-release

First alpha release. All functionality is unstable and commonly error prone.