Skip to content

Releases: vipmax/anydiff

AnyDiff v1.6.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 13:03

🌲 Git Commit Graph & History Inspector

  • Interactive Visual Commit Graph:
    • Native multi-lane Git commit graph with zero-alloc branch and merge line rendering directly in the history list.
    • Detail popover displaying author metadata, relative and exact timestamps, and a copy button for the full commit SHA (visible on hover).
    • Compact file count badge with tooltip summary.
    • Live watcher integration: commit history automatically reloads when git repository references or HEAD change.
  • Fast & Responsive History Search:
    • Debounced search queries with background graph layout offloading to keep the UI at 120 FPS.
    • Lane leak and stair-stepping prevention when rendering filtered search results.
    • Quick dismiss and clear search on Escape key press.
    • Seamless commit diff viewing: eliminated black screen flash when switching between commits by avoiding eager buffer clears.

πŸ“ Virtualized File Tree & Standalone File Editing

  • High-Performance File Tree (FilesPanel):
    • Virtualized workspace file tree capable of smoothly navigating large repositories.
    • Added dedicated Files panel support to the flexible 3-panel layout system.
    • Standalone file viewing and direct editing of non-modified workspace files directly from the tree.

πŸ€– AI Agent & Chat Navigation Enhancements

  • Direct Chat-to-Editor File Navigation:
    • Interactive file paths and line anchor links in agent messages jump directly to corresponding editor lines.
    • Robust FileLinkParser supporting custom schemes and markdown anchor formats.
  • Live Diff & Tool Call Improvements:
    • Asynchronous live diff calculation with debouncing during agent tool execution.
    • Fallback to parent message rawDiffData for edit/create tool cards with reactive updates.
    • Agent tool call location previews, theme focus accent, and header background alignment.
  • Attachments & Session Persistence:
    • Deduplicated macOS screenshot drops and broadened drag-and-drop file type support.
    • Model, mode, and effort configuration persisted across sessions with boolean toggle controls.
    • ACP protocol fixes handling client capabilities duality and pagination in fs/read_text_file.
  • Chat Scrolling & Cursor Fixes:
    • Eliminated cursor flickering between I-beam and arrow during scrolling by intercepting tracking areas.
    • Eliminated view hierarchy churn and drag region recalculation during rapid chat scrolling.

πŸŽ›οΈ Editor & Window Polish

  • Scroll Anchor Preservation:
    • Preserved scroll anchor position across external file modifications and filesystem watcher reloads.
  • Window Layout & Controls:
    • Left sidebar toggle button aligned to the leading edge next to macOS window traffic lights.
    • Restored and reinforced crisp vertical dividers between panels across dynamic window appearance changes.

πŸ§ͺ Tests & Quality

  • Expanded automated test suite to 310 passing unit & integration tests.

AnyDiff v1.5.1

Choose a tag to compare

@vipmax vipmax released this 11 Sep 21:34

πŸ–₯️ Native Intel (x86_64) Architecture Support

  • Dual Architecture Distributions:
    • Added full native release support for Intel Macs (x86_64) alongside Apple Silicon Macs (arm64).
    • Separate, highly optimized release archives (AnyDiff-macOS-arm64.dmg / .zip and AnyDiff-macOS-x86_64.dmg / .zip).
    • Size-optimized builds with dead-code stripping, minimal reflection symbols, and symbol stripping (<2 MB per archive).
  • Multi-Architecture Homebrew Cask:
    • Updated vipmax/tap/anydiff formula with automatic architecture detection (arch arm: "arm64", intel: "x86_64").
  • One-Line Installer (scripts/install.sh):
    • Automatically identifies host CPU architecture (arm64 vs x86_64) and downloads the matching binary.

AnyDiff v1.5.0

Choose a tag to compare

@vipmax vipmax released this 09 Sep 22:59

🧩 Configurable 3-Panel Layout & Docking System

  • Flexible Panel Assignment:
    • Introduce PanelLayoutManager allowing arbitrary configuration of Left, Center, and Right slots with Changes, Editor, and Agent panels.
    • Interactive panel headers with quick-switch menus, dock actions, and empty slot placeholder views.
    • Automatic panel content movement preventing duplicate views across slots.
    • Panel configuration persisted in UserDefaults (anydiff_panel_slot_*).
  • Enhanced Window & Status Bar Controls:
    • Right panel collapsible toggle with animated transitions and state persistence.
    • Status bar quick panel toggles and visual indicators.
    • Menu bar commands for showing/hiding and switching panel contents.

πŸ›‘οΈ Automated Release Pipeline & Homebrew Integrity

  • Zero Checksum-Mismatch Automation:
    • Added scripts/release.sh and just publish <version> for automated, atomic release generation and Homebrew tap synchronization.
    • Protected GitHub Actions CI workflow from clobbering release archive hashes.

πŸ§ͺ Tests & Quality

  • Expanded automated test suite to 259 passing tests with full test coverage for PanelLayoutManager and layout slot transitions.

AnyDiff v1.4.0

Choose a tag to compare

@vipmax vipmax released this 06 Sep 15:32

πŸ”€ Side-by-Side (Split Diff) Layout Mode

  • Two-Column Virtualized Editor:
    • Full side-by-side split diff viewing mode with independent left (original/deleted) and right (modified/added) column rendering.
    • Dedicated SplitDiffEngine performing line pairing, deletion/addition block alignment, and synthetic spacer row insertions.
    • Independent column text selection, cursor positioning, and clipboard copying.
    • Smooth layout toggling via Cmd + D, custom toolbar button with animated pill transitions, and the View -> Diff Layout menu.
    • State persistence across sessions (DiffLayoutMode in @AppStorage) with cursor and scroll anchor preservation.

⚑ Patience Anchor Myers Diff & Lazy Word Diffs

  • Divide-and-Conquer Myers Algorithm:
    • Integrated Patience diff technique via computeMyersDiffWithAnchors: searches for unique matching anchor lines to partition the diff space before running Myers.
    • Drastically reduces diff calculation time and eliminates visual noise on large multi-line refactors.
  • Lazy Slice-Based Word Diffing:
    • Intra-line character and word highlighting is now evaluated lazily only for the active visible slice rather than the entire document ahead of time.

πŸ’Ύ Sub-Microsecond Zero-Alloc Disk Sync (FileDiskState)

  • Fast POSIX stat() Snapshotting:
    • Direct Darwin stat() query checking nanosecond-precision mtime and file size without intermediate memory allocations or reading file text into memory.
    • Differentiates AnyDiff self-saves from external modifications (e.g., git checkouts or other editors) in ~1 microsecond.
    • Tuned autosave debounce delay to 600 ms for optimal responsiveness during intensive typing.

πŸŽ›οΈ UI & Agent Panel Refinements

  • Panel Visibility Persistence & Shortcuts:
    • Persist toggle state for Left (File Tree / Sidebar, Cmd + Ctrl + S) and Right (AI Agent, Cmd + Option + A) panels.
    • Fixed duplicate user message echoes during active ACP streaming sessions.

πŸ§ͺ Tests & Quality

  • Expanded automated test suite to 243 passing unit & integration tests, including tests for SplitDiffEngine, DisplayMapSplit, and split-mode selection navigation.

πŸ“¦ Downloads

AnyDiff v1.3.0

Choose a tag to compare

@vipmax vipmax released this 03 Sep 11:47

πŸ€– ACP Agent Registry & Virtualized Agent Views

  • ACP Registry Integration (ACPRegistryService):
    • Direct integration with the official ACP Agent Registry to browse, discover, install, and manage certified ACP agents.
    • Automatic architecture-aware binary downloader (ACPRegistryBinaryDownloader) with progress reporting and caching.
    • Support for pre-packaged binary agents, local CLI tools, and npx/uvx/docker commands.
  • Virtualized Session & Agent Browsing:
    • VirtualizedSavedSessionsListView with smooth 120 FPS virtualization for hundreds of past sessions.
    • Streaming pagination support in AgentSessionCoordinator delivering session items progressively.
    • Instant session resumption, relative timestamps, working directory badging, and search filtering.
    • VirtualizedAgentRegistryListView with category filtering, search, and one-click install/uninstall.
  • Redesigned Agent Start Screen:
    • Modernized card layouts with responsive hover interactions, custom command input, and contextual management.
    • Dynamic brand icons and accent colors matching the selected agent preset across toolbar and panels.

πŸ§ͺ Tests & Quality

  • Expanded automated test suite to 213 passing unit & integration tests including registry parsing, caching, and downloading tests.

πŸ“¦ Downloads

AnyDiff v1.2.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 21:59

πŸ” Full-Text Project Search & Streaming MultiBuffer

  • High-Performance Search Engine (ProjectSearchEngine):
    • Full-text search across entire repository with regex (.*), match whole word (\b), case sensitivity (Aa), and glob include/exclude filters.
    • Automatic filtering of binary files (null byte scan) and files over size threshold.
    • Multi-encoding fallback support (UTF-8, Latin-1 / ISO-8859).
  • Streaming Delivery & Context Clustering:
    • Progressive batch streaming delivering initial search matches immediately without waiting for full directory scan.
    • Intelligent context clustering with configurable padding lines merging nearby matches into single excerpts.
    • $O(1)$ lazy MultiBuffer slicing and in-memory match recalculation during live typing.
  • Native Search Bar UI & Navigation:
    • AppKit/SwiftUI ProjectSearchBarView with keyboard navigation: Cmd + F (find in project), Cmd + Shift + F (find with prefilled selection), Cmd + G (next match), Cmd + Shift + G (previous match), Esc (dismiss).
    • Search hit counter, active match pulsing, and instant match jump navigation.
    • Integrated into the main macOS application menu.

🌐 Unicode & Internationalization

  • Full international path, Cyrillic, and multi-scalar emoji selection support across virtualized editor.

πŸ§ͺ Tests & Quality

  • Expanded automated test suite to 208 passing unit & integration tests.
  • Swift 6 strict concurrency modernization.

πŸ“¦ Downloads

AnyDiff v1.1.1

Choose a tag to compare

@github-actions github-actions released this 02 Sep 13:37

🌐 Full Unicode, Emoji & Multi-Language Support

  • Pixel-Perfect Selection & Caret Alignment:
    • Implemented exact bidirectional mapping between Swift Character grapheme clusters and CoreText UTF-16 code units.
    • Double-clicking words and dragging selections now highlight the exact glyph boundaries on lines containing emojis, Cyrillic, CJK (Chinese, Japanese, Korean), Arabic RTL, Hindi, and mathematical symbols.
    • Retained an $O(1)$ zero-allocation fast-path for standard ASCII lines (utf8.count == count).

πŸ“ International Git Path & Octal Unescaping

  • Native Support for Quoted & Octal-Escaped Git Paths:
    • GitDiffParser and StreamingGitDiffParser now unescape C-style octal byte sequences (\320\237...) and quoted paths generated by Git for non-ASCII or spaced filenames.
    • Correctly parses file headers, ---/+++, renames (rename from/rename to), and untracked file discovery (git ls-files) with Russian, Chinese, Japanese, and emoji filenames.
    • Fully optimized for streaming with zero intermediate string allocations.

πŸ›°οΈ Atomic WordDiff for Complex Emojis

  • Grapheme-Aware Word Tokenization:
    • WordDiffEngine tokenizes atomic Character grapheme clusters rather than isolated Unicode scalars.
    • Complex multi-scalar emojis (ZWJ sequences πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦, flags πŸ‡·πŸ‡Ί, and variant selectors πŸ›°οΈ) stay unified as single tokens with exact UTF-16 code unit ranges.

πŸ’¬ Agent Chat Selection & Concurrency Improvements

  • Unicode-Safe Chat Interactions:
    • Selection ranges and word boundary expansions in AgentChatScrollView now respect Character boundaries, preventing surrogate pair splits.
    • Corrected NSLayoutManager glyph measurement using utf16.count for message end-bounds.
  • Swift 6 Concurrency & CI Modernization:
    • Dispatched file system change events to @MainActor in MainWindowView for thread safety.
    • Cleaned up CoreText import attributes and updated GitHub Actions workflows to actions/checkout@v5 (Node.js 24).
  • File Icons:
    • Separated plain text (.txt / doc.text.fill) from Markdown (.md / [M↓]).

πŸ“¦ Downloads

AnyDiff v1.1.0

Choose a tag to compare

@vipmax vipmax released this 01 Sep 23:35

πŸ€– Embedded AI Agent (ACP Protocol)

  • Agent Client Protocol (JSON-RPC 2.0):
    • Native embedded side panel (Cmd + Option + A) supporting full agent lifecycle over stdio JSON-RPC.
    • Multi-provider presets: OpenAI / Codex, Anthropic / Claude Code, Google Gemini / Antigravity CLI, and Custom ACP Agent commands.
    • Offline Mock Mode for rapid UI iteration and testing without external processes.
  • Multimodal Image Attachments & Zoom Preview:
    • Drag-and-drop or clipboard paste (Cmd + V) of screenshots directly into prompts.
    • Live attachment thumbnails and full-screen zoomable modal view.
  • Interactive Tool Call & Diff Jumps:
    • Real-time expandable tool call cards for file reads, directory listings, and bash commands.
    • Edited Files Card: live tracking of files modified by the agent with instant jumps to specific file diffs in the editor.
  • Reasoning & State Management:
    • Streaming thinking thoughts and customizable reasoning effort levels (Low / Medium / High).
    • Context & token usage gauge with live capacity tracking.
    • Saved chat session history drawer per workspace with thread switching, renaming, and persistence.
    • Granular client-side permissions for disk writes and terminal command executions.

🎨 Rich Vector File Icons (Devicon SVGs)

  • 30+ Devicon Brand Vector Icons:
    • High-resolution SVG vector icons for TypeScript, React/TSX, JavaScript, Python, Rust, Go, Swift, Kotlin, Java, C++, C#, Docker, Git, SQL, Markdown, YAML, TOML, GraphQL, Shell, and more.
    • Zero-dependency AppKit SVG rendering with NSCache for 120 FPS scrolling performance.

⚑ WordDiff & Display Engine Optimizations

  • Added intra-line word diff render caching (WordDiffRenderCache) for instant zero-copy hunk display.
  • Enhanced Cyrillic and international UTF-8 intra-line Myers diff highlighting.
  • Expanded test suite to 176 passing tests.

πŸ“¦ Downloads

AnyDiff v1.0.1

Choose a tag to compare

@github-actions github-actions released this 18 Aug 09:15

Changelog

All notable changes to AnyDiff will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.


[1.0.1] - 2026-08-18

πŸš€ Mega-Diff & 1M+ Lines Memory Optimization

  • Ultra-Low Memory Footprint (~250 MB on 1M+ LOC PRs):
    • Validated on Bun's mega pull request (41.3 MB diff, 2,188 files, 1,029,583 lines of code).
    • Active memory consumption reduced to ~250 MB RSS (compared to ~2.2 GB in Zed and standard diff viewers β€” ~9x less RAM).
    • No memory leaks or runaway growth during extreme scrolling across 1,000,000+ lines.

⚑ 64 KB SIMD Streaming Git Diff Parser

  • 18x Faster Time-To-First-File (TTFF):
    • Subprocess streaming through GitStreamReader and 64 KB ChunkLineSplitter delivers the initial UI frame in ~400 ms while git diff continues reading in the background.
  • 5.5x Parser Throughput:
    • Vectorized contiguous byte scanning processes >950,000 diff lines/sec (>38 MB/s).

πŸ“¦ Low-Level CPU Register & Cache Line Packing

  • 8-Byte Coordinate Structures:
    • MultiBufferPoint & BufferPoint compressed from 16 bytes to 8 bytes (Int32 storage with @inlinable Int accessors).
    • Passes in a single 64-bit ARM64 CPU register (x0), eliminating register spilling and stack allocation during high-frequency cursor/selection operations.
  • Virtual Range Index Packed to 33 Bytes:
    • DisplayMap.ExcerptSliceRange compressed from 96 bytes to 33 bytes (stride: 36 bytes) with ExcerptFlags: OptionSet.
    • Fits inside half of a single 64-byte L1 CPU Cache Line, significantly accelerating $O(\log N)$ binary search coordinate translations.

🧠 Intra-Line WordDiffEngine (L1-Cache LCS & Zero Heap Allocations)

  • 40 KB L1-Cache LCS Matrix:
    • LCS dynamic programming matrix converted to a flat 1D stack-allocated [UInt8] buffer (withUnsafeTemporaryAllocation).
    • Working memory shrunk from 323 KB to 40.4 KB (an 8x reduction), ensuring 100% data locality inside the Apple Silicon L1 Data Cache.
  • Zero-Allocation UTF-8 Pointer Tokenization:
    • Replaced Array(text) with direct contiguous UTF-8 pointer iteration (withContiguousStorageIfAvailable), eliminating heap allocations per tokenized code line.

🏎️ Smooth 120 FPS ProMotion Viewport Virtualization

  • Virtual Line Synthesis:
    • Removed flat line arrays in favor of on-demand viewport synthesis from ExcerptSliceRange prefix sums.
    • Achieved simulated 465+ FPS during rapid scrolling across 1,000,000+ line diffs with instantaneous frame times.

πŸ§ͺ Benchmarks & Tests

  • Expanded automated test suite to 56 passing unit & integration tests.
  • Added dedicated MemoryPackingBenchmarkTests suite for continuous memory layout and micro-benchmark verification.

[1.0.0] - 2026-08-16

πŸŽ‰ Initial Release

  • MultiBuffer architecture for multi-file Git diffs and PR reviews.
  • Native AppKit & CoreText high-performance rendering engine.
  • Safe in-place editing with disk auto-save and file change tracking.
  • Context folding, excerpt expansion, and sticky headers.
  • GitHub Pull Request, commit, and compare URL loading.
  • Inline review comments and tokenized syntax highlighting.

AnyDiff v1.0.0

Choose a tag to compare

@vipmax vipmax released this 17 Aug 15:22

AnyDiff v1.0.0 Release

  • ⚑️ Lightning fast Git & Remote Diff viewer for macOS.
  • πŸš€ Modern unified Open Project / Remote PR view.
  • πŸ“ Seamless Drag-and-Drop support anywhere across the app window.
  • ⏱️ Frecency-sorted recent projects with hover deletion.
  • ⌨️ Double Cmd+O folder picker shortcut.
  • 🎨 Optimized SwiftUI rendering pipeline.