Skip to content

Latest commit

 

History

History
104 lines (81 loc) · 4.06 KB

File metadata and controls

104 lines (81 loc) · 4.06 KB

Changelog

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

[0.6.0] - 2026-04-06

Added

  • -s / --socket-name flag and EMACS_SOCKET_NAME env var for connecting to a named Emacs daemon socket (#1)
  • Persistent TCP socket transport between mxp and Emacs
  • Auto-bootstrapping: mxp starts a lightweight eval server inside Emacs on first use (no manual M-x required)
  • All communication goes over a single persistent connection per invocation via bash’s /dev/tcp
  • Transparent fallback to emacsclient when socket is unavailable
  • MXP_PORT env var for custom server port (default: 17394)
  • MXP_NO_SOCKET env var to force emacsclient-only mode
  • Socket transport test suite

Changed

  • Streaming now sends all chunks sequentially over one socket - guaranteed ordering, no race conditions
  • open_mode uses emacsclient -n directly (avoids interactive prompts from process filter context)

Removed

  • Background job concurrency limiter (jobs -r / sleep 0.01 spin-wait) - no longer needed with persistent connection
  • Sync/async flush split - all flushes are now uniform
  • wait at end of write_mode - no background jobs to collect

[0.5.3] - 2025-10-29

  • Correctly handles emojis and other utf-8 chars

[0.5.2] - 2025-10-27

  • Additional hooks

[0.5.1] - 2025-10-27

  • Fixed streaming with timeout-based flushing

[0.5.0] - 2025-01-25

Changed

  • BREAKING: Removed pass-through behavior - piping now works like standard Unix pipes
  • Content piped to Emacs no longer echoes to stdout (previously behaved like tee)
  • This makes mxp behave consistently with normal piping conventions

Fixed

  • Fixed “Connection refused” errors when streaming large amounts of data
  • Implemented concurrent job limiting (max 5 background processes) to prevent overwhelming Emacs server
  • Streaming now maintains real-time updates while avoiding connection overload

Removed

  • Pass-through/tee-like behavior removed from write mode

[0.4.0] - 2025-01-25

Added

  • Open mode: Open files and directories directly in Emacs with mxp file.txt or mxp .
  • Smart detection automatically distinguishes file paths from buffer names
  • is_path() function for detecting file/directory arguments
  • Support for opening directories in dired
  • Support for ~, ~/, and relative path patterns

Changed

  • Mode detection now checks if argument is a file path before treating as buffer name
  • Enhanced help text with file/directory opening examples
  • Added smart detection notes to help and README

Fixed

  • Reading buffers with multibyte/Unicode characters (e.g., *Messages*) now works correctly
  • Fixed large buffer reading by using temporary files instead of base64 encoding
  • Removed emacsclient --eval output size limitations (previously failed on buffers >1MB)
  • Significantly improved performance for large buffers (10MB buffer: ~0.12s vs previous timeout)

[0.3.0] - 2025-01-25

Added

  • Prepend mode (--prepend, -p) to insert content at the beginning of buffers
  • Self-update functionality (--update) to upgrade mxp from GitHub
  • Validation to prevent using both --append and --prepend together
  • Symlink resolution in self-update to handle aliased/linked installations
  • Automatic backup creation during updates (.backup file)

Changed

  • Table of contents added to README.org

[0.2.0] - 2025-01-25

Changed

  • Renamed project from mx-piper to mxp for brevity
  • Updated hook variable from mx-piper-buffer-hook to mxp-buffer-hook
  • Updated all documentation and examples to reflect new name

[0.1.0] - 2025-01-24

Added

  • Initial release
  • Write mode: pipe stdin to Emacs buffers
  • Read mode: output buffer content to stdout
  • Auto-generated buffer names (*Piper 1*, *Piper 2*, etc.)
  • Buffer matching via regex patterns
  • Append mode (--append, -a)
  • Force overwrite mode (--force, -F)
  • Streaming support with chunked processing
  • Conflict resolution for duplicate buffer names
  • Emacs hook support for custom buffer creation logic
  • Comprehensive test suite