Skip to content

v0.9.2 - Combined Release (v0.7.0 - v0.9.2)

Choose a tag to compare

@teaguesterling teaguesterling released this 11 Feb 17:28
· 201 commits to main since this release

This release combines all changes since v0.7.0.

Bug Fixes (v0.9.2)

PyPI Publishing Fix

  • Fixed duplicate templates in wheel that caused PyPI to reject uploads
  • Removed redundant force-include directive in pyproject.toml

What's New in v0.9.1

MCP Commands Tool Improvements

  • Fixed commands tool to show tpl and defaults fields for templated commands
  • No more null values in output - only relevant fields are shown
  • Invalid commands (no cmd or tpl) now show error field

Run Output Improvements

  • Added cmd field to run/exec output showing the expanded command
  • Useful for seeing exactly what command was executed for templated commands

CI Fixes

  • Fixed lint and type errors across codebase
  • Fixed code formatting issues

Removed

  • Removed redundant test-all command (use test template with defaults instead)

What's New in v0.9.0

Database Lock Contention Handling

  • Added retry_on_lock() helper with exponential backoff and jitter for handling DuckDB lock errors
  • Added BirdStore.open_with_retry() for concurrent access scenarios
  • Added BirdStore.execute_with_retry() for critical write operations
  • Updated command execution to use retry logic, preventing failures when multiple commands run concurrently

Minimized DB Lock Time

  • Restructured _execute_with_live_output() to minimize database lock duration
  • Window 1: Brief DB access to write attempt record, then close
  • Background PID update runs concurrently in separate thread
  • Window 2: Brief DB access to write outcome/events after command completes
  • Database is unlocked during subprocess execution

Testing

  • Added 18 new tests for lock contention and race conditions
  • Tests cover concurrent command execution, background PID updates, and data integrity

What's New in v0.7.0

TOML Configuration

  • Migrated from YAML to TOML format
  • config.yaml → config.toml
  • commands.yaml → commands.toml

Parameterized Commands

  • New tpl field for template commands with {param} placeholders
  • defaults dictionary for optional parameter values
  • CLI: blq run test path=tests/unit/
  • MCP: run(command="test", args={"path": "tests/unit/"})

Example:

[commands.test]
tpl = "pytest {path} {flags}"
defaults = { path = "tests/", flags = "-v" }

Documentation

  • Updated all docs to reference TOML format
  • New parameterized commands section in registry docs
  • Updated MCP guide with args parameter examples

🤖 Generated with Claude Code