Skip to content

Releases: licht1stein/brepl

v2.7.1

17 Feb 17:36

Choose a tag to compare

Stateless nREPL Port Auto-Discovery

brepl now automatically discovers running nREPL servers when no .nrepl-port file, -p flag, or BREPL_PORT env var is found. Zero configuration required.

How it works

  • Scans for Java/Clojure/Babashka processes listening on TCP ports via lsof
  • Checks all candidate ports in parallel using pmap
  • Validates each port with a single TCP connection (describe + CWD eval)
  • Returns the first port whose working directory matches yours

Port resolution order

  1. -p <port> CLI argument
  2. .nrepl-port file
  3. BREPL_PORT environment variable
  4. Process scanning ← new

Performance

Discovery completes in ~100-200ms even with many Java processes running. Real nREPL servers respond in <5ms on localhost; non-nREPL ports are rejected within 100ms.

Full changelog

  • feat: stateless nREPL port auto-discovery via process scanning (#21, closes #20)
  • perf: parallel port scanning with single-connection validation
  • docs: updated README with auto-discovery documentation
  • fix: test assertion for updated error message

v2.7.0

08 Feb 15:25

Choose a tag to compare

New Features

ECA (Editor Code Assistant) Hook Support

Added support for ECA editor integration with new subcommands:

  • brepl eca install / brepl eca uninstall - Manage .eca/config.json
  • brepl eca validate - Pre-edit syntax validation with auto-fix
  • brepl eca eval - Post-edit REPL evaluation
  • brepl eca session-end - Session cleanup

ECA hooks use a different JSON format than Claude Code hooks, enabling brepl to work with multiple AI coding assistants.

Thanks to @Ramblurr for the contribution! (#19)

v2.6.3

04 Feb 23:08

Choose a tag to compare

Fixes

Nix installation compatibility

Fixed env -S shebang not working in Nix environments. The Nix package now:

  1. Replaces the shebang with simple #!/usr/bin/env bb
  2. Uses wrapper to set BABASHKA_CLASSPATH="" for isolation from local bb.edn

Thanks to @sg-qwt for the original fix idea! (#15)

v2.6.2

04 Feb 13:50

Choose a tag to compare

Fixes

Isolate uberscript from local bb.edn

brepl now uses #!/usr/bin/env -S bb --classpath "" shebang to prevent picking up bb.edn configs when run in other Clojure project directories.

This fixes classpath conflicts when running brepl in directories containing their own Babashka projects.

Thanks to @sg-qwt for reporting this issue! (#15)

v2.6.1

04 Feb 13:43

Choose a tag to compare

Fixes

  • Fix balance subcommand help text: --write--dry-run (matches actual flag)
  • Add help flag support (-h, --help, -?) to balance subcommand
  • Add balance example to main help output

Thanks to @Ramblurr for the contribution! (#17)

v2.6.0

04 Feb 13:40

Choose a tag to compare

What's Changed

File Change Detection for Automatic REPL Reloading

Replaces tool-specific hooks with universal file change detection. Uses efficient mtime (modification time) comparison to reload Clojure files regardless of which tool modified them - Edit, Write, Bash emacs commands, or any other tool.

Key changes:

  • New brepl.lib.file-tracker: Snapshots all Clojure files on PreToolUse, detects changes on PostToolUse via mtime comparison
  • PreToolUse: Validate brackets only for Edit/Write/Bash emacs commands, skip others, always snapshot files
  • PostToolUse: Match all tools (*), detect changed files, reload them in REPL
  • SessionEnd: Clean up tracker state

v2.5.2

17 Jan 12:18

Choose a tag to compare

Fix YAML frontmatter parsing in brepl skill

  • Quote description field to prevent YAML from interpreting **MANDATORY** as an alias reference

v2.5.1

05 Jan 12:28

Choose a tag to compare

Fixes

  • Embed skill content in uberscript (skill install now works with curl-installed brepl)
  • Update heredoc examples to simpler stdin pattern (brepl <<'EOF' instead of brepl -e "$(cat <<'EOF'...")
  • Rename hook subcommand to hooks (hook remains as alias for backward compatibility)
  • Document hooks stop subcommand
  • Fix session-end docs (reads JSON from stdin, no args)

v2.5.0

05 Jan 12:14

Choose a tag to compare

Self-contained uberscript distribution

brepl now bundles all dependencies into a single self-contained file using bb uberscript. This enables:

  • Installation in sandboxed/offline environments (Nix)
  • Direct curl installation without dependency management
  • Faster startup (no runtime dependency resolution)

New installation option

curl -fsSL https://raw.githubusercontent.com/licht1stein/brepl/master/brepl -o ~/.local/bin/brepl
chmod +x ~/.local/bin/brepl

Development improvements

  • Pre-commit hook auto-rebuilds uberscript when source changes
  • nix-shell configures git hooks automatically

v2.4.1

04 Jan 19:56

Choose a tag to compare

Improvements

  • Improve validation error messages for .brepl/hooks.edn - now human-readable
  • Rename command to hooks (keep hook as alias for backward compatibility)
  • Allow s-expressions for REPL hook :code field: :code (restart) instead of :code "(restart)"