Releases: licht1stein/brepl
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)"
v2.4.0
What's New
Add Stop hook support for Claude Code integration.
Features
- New
brepl hook stopcommand to run user-defined hooks on Stop event - Configure hooks in
.brepl/hooks.ednwith REPL or bash commands :required? truehooks retry on failure until they pass- Exit codes control Claude behavior (0=success, 1=inform, 2=retry)
brepl hook installgenerates template config file- Idempotent hook merging preserves non-brepl hooks
Example Configuration
{:stop [{:type :bash
:command "clj-kondo --lint ."
:required? true}
{:type :repl
:code (clojure.test/run-tests)
:required? true}]}v2.3.2
What's New
-
brepl balancecommand - Standalone bracket fixing using parmezanbrepl balance <file>fixes file in placebrepl balance <file> --dry-runoutputs to stdout
-
Stdin eval support - Pipe expressions directly to brepl
echo '(+ 1 2)' | brepl- Heredoc:
brepl <<'EOF' ... EOF
v2.3.0 - Positional Arguments as Implicit Eval
What's New
Positional arguments now default to eval mode, eliminating the need for the -e flag in most cases.
The Problem
Claude (and other AI assistants) consistently forgot to add the -e flag when using the heredoc pattern for code evaluation. This would fail with "Error: Must specify one of -e EXPR, -f FILE, or -m MESSAGE"
The Solution
We made the tool match how it was actually being used. Now the heredoc pattern just works without requiring -e.
Usage Examples
# Now works without -e:
brepl "$(cat <<'EOF'
(+ 1 2 3)
EOF
)"
# Simple expressions too:
brepl "(+ 1 2)"
# Explicit flags still work:
brepl -e "(+ 1 2)"Technical Details
- Positional arguments automatically treated as
-e(eval mode) - All existing explicit flag usage (
-e,-f,-m) unchanged - Works with all option combinations (
-p,--hook,--verbose, etc.) - No breaking changes - only adds smart defaulting
- Comprehensive test coverage with 27 tests
Backward Compatibility
All existing workflows continue working exactly as before. The change is purely additive - it converts previously-invalid usage into valid eval mode.
Full Changelog: v2.2.0...v2.3.0
v2.2.0 - Parmezan Integration
Breaking Changes
- Removed
brepl parinfercommand - Users who need parinfer can install it separately viabbin install io.github.borkdude/parmezan - No longer requires parinfer-rust binary - Pure Clojure solution
Features
- Replace parinfer-rust with parmezan for delimiter correction
- Pure Clojure/Babashka solution (no external binaries)
- Simpler implementation (unified detection and fixing)
- Runtime dependency loading for self-contained installation
- Added support for
.bbfiles and Babashka shebangs in delimiter validation - Fixed bbin installation - Now works correctly with proper
:main-optsconfiguration and minimaldeps.edn
Improvements
- Simpler installation (one fewer external dependency)
- More reliable delimiter fixing (no shell execution)
- Consistent behavior across all platforms
- Self-contained script with on-demand dependency fetching
Technical Details
- Parmezan dependency loaded at runtime in
lib/validator.cljusingbabashka.deps/add-deps - Added minimal
deps.ednto satisfy bbin manifest requirement - Cleaned up unused
babashka.processrequire
Installation
# Via bbin (recommended)
bbin install io.github.licht1stein/brepl
# Via Nix
# Use hash: sha256-n9O8+3TeZi8yn9VGa7JCfIgCjQ5FmbiLTKWYQ3Zatd0=Full Changelog
- Replace parinfer-rust with parmezan for bracket correction (55d7cf4)
- Fix bbin installation with correct :main-opts configuration (d472ec8)
- Fix bbin installation by adding minimal deps.edn manifest (9bf51f7)
- Remove unused babashka.process require (11cbe91)
- Update Nix hash for v2.2.0 release (bf30aaa)
v2.1.1
What's Changed
Bug Fixes
- Accept auto-resolved keywords (
::keyword) in validation by configuring edamame parser with:auto-resolve identity - Fixes validation errors when code contains
::init,::halt, or other auto-resolved keywords
New Features
- Add
bb version-bump {major|minor|patch}task to automate version updates across all files
Improvements
- Comprehensive test coverage for auto-resolved keywords
- Documentation for version management and release procedures in CLAUDE.md
Full Changelog: v2.1.0...v2.1.1
v2.1.0: Skill System with Heredoc Pattern and Parinfer Integration
New Features
Skill System for Claude Code
brepl skill install- Install brepl skill to.claude/skills/breplbrepl skill uninstall- Remove brepl skill- Automatically installed with
brepl hook install
Parinfer Integration
brepl parinfer [args...]- Direct pass-through to parinfer-rust CLI- Enables bracket fixing:
echo '(defn foo [' | brepl parinfer --mode smart - Claude Code automatically uses parinfer when skill is installed
Skill Content
- Teaches heredoc pattern for reliable code evaluation
- Documents parinfer integration for automatic bracket correction
- Provides in-place file fixing workflows with temp file pattern
- Includes error recovery patterns
Implementation Changes
- Update
lib/installer.cljto usebabashka.fsfor all file operations - Add skill resource discovery from script location and development paths
- Bundle skill resources in
resources/skills/brepl/ - Comprehensive README documentation for heredoc pattern and parinfer usage
Breaking Changes
None - this is a backwards-compatible feature addition.
Installation
Via bbin:
```bash
bbin install io.github.licht1stein/brepl
```
Via Nix:
```bash
nix-env -iA nixpkgs.brepl
```
After installing, run `brepl hook install` in your Clojure projects to enable Claude Code integration with the skill system.
v2.0.3
Changes
- Remove deprecated Update tool from hook matchers (Claude Code compatibility)
- Add comprehensive reader macro support to validation
- Support all Clojure reader macros: regex patterns, deref, var-quote, reader conditionals, metadata, tagged literals, symbolic values
- Add 45 test assertions covering all reader macro variants
- Fix tests after Update tool removal
Upgrade Notes
If you have brepl hooks installed, run brepl hook install to update your hook configuration.