Skip to content

Releases: licht1stein/brepl

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)"

v2.4.0

04 Jan 19:43

Choose a tag to compare

What's New

Add Stop hook support for Claude Code integration.

Features

  • New brepl hook stop command to run user-defined hooks on Stop event
  • Configure hooks in .brepl/hooks.edn with REPL or bash commands
  • :required? true hooks retry on failure until they pass
  • Exit codes control Claude behavior (0=success, 1=inform, 2=retry)
  • brepl hook install generates 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

23 Dec 16:06
a2d3f74

Choose a tag to compare

What's New

  • brepl balance command - Standalone bracket fixing using parmezan

    • brepl balance <file> fixes file in place
    • brepl balance <file> --dry-run outputs 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

19 Nov 23:09
a6c4b63

Choose a tag to compare

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

18 Nov 14:17

Choose a tag to compare

Breaking Changes

  • Removed brepl parinfer command - Users who need parinfer can install it separately via bbin 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 .bb files and Babashka shebangs in delimiter validation
  • Fixed bbin installation - Now works correctly with proper :main-opts configuration and minimal deps.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.clj using babashka.deps/add-deps
  • Added minimal deps.edn to satisfy bbin manifest requirement
  • Cleaned up unused babashka.process require

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

12 Nov 17:58
b410683

Choose a tag to compare

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

12 Nov 17:28

Choose a tag to compare

New Features

Skill System for Claude Code

  • brepl skill install - Install brepl skill to .claude/skills/brepl
  • brepl 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.clj to use babashka.fs for 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

12 Nov 16:40
3be8f0a

Choose a tag to compare

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.

Full Changelog

v2.0.2...v2.0.3