Releases: licht1stein/brepl
v2.7.1
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
-p <port>CLI argument.nrepl-portfileBREPL_PORTenvironment variable- 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
v2.7.0
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.jsonbrepl eca validate- Pre-edit syntax validation with auto-fixbrepl eca eval- Post-edit REPL evaluationbrepl 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.
v2.6.3
v2.6.2
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.
v2.6.1
v2.6.0
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
Fix YAML frontmatter parsing in brepl skill
- Quote description field to prevent YAML from interpreting
**MANDATORY**as an alias reference
v2.5.1
Fixes
- Embed skill content in uberscript (skill install now works with curl-installed brepl)
- Update heredoc examples to simpler stdin pattern (
brepl <<'EOF'instead ofbrepl -e "$(cat <<'EOF'...") - Rename
hooksubcommand tohooks(hookremains as alias for backward compatibility) - Document
hooks stopsubcommand - Fix
session-enddocs (reads JSON from stdin, no args)
v2.5.0
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/breplDevelopment improvements
- Pre-commit hook auto-rebuilds uberscript when source changes
nix-shellconfigures git hooks automatically
v2.4.1
Improvements
- Improve validation error messages for
.brepl/hooks.edn- now human-readable - Rename command to
hooks(keephookas alias for backward compatibility) - Allow s-expressions for REPL hook
:codefield::code (restart)instead of:code "(restart)"