Skip to content

AnyDiff v1.1.1

Choose a tag to compare

@github-actions github-actions released this 02 Sep 13:37
· 49 commits to main since this release

🌐 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