Skip to content

Releases: junhoyeo/contrabass

v0.3.0

31 Mar 14:17
efe071e

Choose a tag to compare

Contrabass

contrabass@v0.3.0 is here!

Changelog

🚀 Features

  • bdae311 feat(agent): wire all dead team_*.go functions into monitoring loop
  • 7cf59b0 feat(agent): wire team_messaging into monitor, shutdown, and coordinator
  • cabbbd1 feat(team): port OMX score-based allocation policy with rebalance and dependency checks
  • a56d78d feat: add enhanced team mode features

🐛 Bug Fixes

  • 71e8adb fix(agent): add default case to GetTeamHealth switch for unknown worker status
  • 622e0a6 fix(agent): preserve quarantined status when heartbeat is stale
  • 2d31b58 fix(agent): prevent graceful shutdown from starving force-stop context
  • 746808a fix(agent): resolve PR review issues — remove coordinator self-notification and release claim on transition failure
  • c1275d7 fix(agent): resolve all Devin review issues on PR #28
  • 345c5c5 fix(agent): stop nudging completed teams and use actionable nudge message
  • 5770449 fix(agent): throttle awaitNextEvent to health-check interval and fix mailbox status priority
  • 242d668 fix(team): wait for monitor goroutine exit before returning from runExecPhase
  • 368fe22 fix: correct for-select-break pattern in worker restart loop
  • 22ef9d3 fix: resolve type conflicts, wire team modules, remove stubs

🧪 Tests

  • 01cbd3e test(agent): add team module API tests to reach 70% coverage gate

Contributors

Full Changelog: v0.2.2...v0.3.0

v0.2.2

25 Mar 19:47
bc6a3a3

Choose a tag to compare

Contrabass

contrabass@v0.2.2 is here!

Changelog

🚀 Features

  • bca6bb5 feat(tracker): add per-issue model override via HTML comment
  • c6553c3 feat(tracker): parse issue dependencies from body text
  • 0a59b63 feat: parse issue dependencies (Blocked by, Depends on, Requires)

🐛 Bug Fixes

  • a773d12 fix(agent): update OpenCode API request format to use parts array
  • d9fe7b9 fix(orchestrator): add session.status to recognized success signals for OpenCode
  • 009b882 fix(types): format issue model override fields
  • ffaf54d fix: merge main — resolve BlockedBy conflict

🔧 Other

  • 452b63e Keep PR #33 aligned with gofmt expectations
  • 69d66f6 Keep dependency-parsing PR buildable without model-override support
  • 474c6c6 omx(team): auto-checkpoint worker-2 [unknown]
  • 10b6673 omx(team): auto-checkpoint worker-2 [unknown]

Contributors

  • feat(tracker): per-issue model override via HTML comment by @timur-z-ya-ru in #32
  • feat(tracker): parse issue dependencies from body text by @timur-z-ya-ru in #33
  • fix(orchestrator): add session.status to recognized success signals for OpenCode by @tanvesh01 in #30
  • fix(agent): update OpenCode API request format to use parts array by @tanvesh01 in #29

New Contributors

Full Changelog: v0.2.1...v0.2.2

v0.2.1

12 Mar 02:33

Choose a tag to compare

Contrabass

contrabass@v0.2.1 is here!

Changelog

📝 Documentation

  • 895e4d4 docs(project): document tmux worker mode and team configuration in README

Contributors

  • docs(project): document tmux worker mode and team configuration in README by @junhoyeo

Full Changelog: v0.2.0...v0.2.1

v0.2.0

12 Mar 02:31

Choose a tag to compare

Contrabass

contrabass@v0.2.0 is here!

Changelog

🚀 Features

  • aacebca feat(agent): add tmux runner implementing AgentRunner with pane lifecycle
  • 816b823 feat(cli): add team worker subcommand for tmux pane execution
  • 6b083ec feat(cli): add tmux worker mode with config-driven runner selection
  • ca55695 feat(cli): add version check and update notification (#26)
  • 40c7cd6 feat(config): change default worker mode from goroutine to tmux
  • 0c4e231 feat(team): add JSONL event logger with cursor-based reading
  • 78e431c feat(team): add coordinator crash recovery with state diagnosis
  • 9a8f1d1 feat(team): add dispatch queue with ack tracking and timeout redelivery
  • a49e8e3 feat(team): add event consumer with cursor-based polling and pub/sub
  • d033fc9 feat(team): add file-based heartbeat monitor with stale detection
  • 56cab7c feat(team): add flock-based advisory locking for cross-process file safety
  • 473655d feat(team): add governance policy enforcement at decision points
  • 4f1a158 feat(team): add stale lock recovery and event log rotation
  • 887ad93 feat(team): add worktree and tmux session cleanup module
  • 19d02d7 feat(team): wire governance policy and crash recovery into coordinator
  • fc84a97 feat(tmux): add CLI registry for multi-agent type support
  • c293403 feat(tmux): add tmux session wrapper with testable command runner
  • f18f548 feat(tmux): add worker bootstrap with pane setup and prompt injection

🐛 Bug Fixes

  • 72d4e28 fix(agent): eliminate monitorProcess race with Stop on Done channel
  • b8d3ca9 fix(agent): propagate KillPane errors through Stop/Close with timeout
  • 21c802c fix(cli): force goroutine mode in team worker to prevent recursive tmux spawning
  • ecc2a9f fix(config): validate worker_mode and reject unknown values
  • a751ef1 fix(team): add cursor rotation-awareness and fix archive naming collision
  • 3fde152 fix(team): add dispatch cleanup to recovery and governance retry limit to coordinator
  • fdae1dd fix(team): add malformed JSON tolerance to cleanup and recovery paths
  • df3c1c3 fix(team): add state machine guards to dispatch queue transitions
  • 2d0849a fix(team): skip malformed JSON in ReadSince and treat missing heartbeats as stale
  • 5e6a987 fix(team): use file mtime for heartbeat stale detection
  • 6f6000e fix(team): use unique temp filenames to prevent cross-process collision
  • 62ef8f6 fix(tmux): shell-quote CLI command arguments to prevent injection
  • 48ffac6 fix(web): guard runtime display against Go zero time (#27)

♻️ Refactoring

  • 2bc6539 refactor(agent): replace reflect-based IPC with shared interfaces in internal/ipc

🧪 Tests

  • d535eb3 test(agent): add tmux runner integration tests
  • bb83f65 test(team): add goroutine mode regression tests
  • 8a58164 test(team): rewrite cross-process concurrency tests

🔧 Other

  • bf82b99 Fix links for agent runtimes in README

Contributors

  • fix(agent): eliminate monitorProcess race with Stop on Done channel by @junhoyeo
  • fix(team): add dispatch cleanup to recovery and governance retry limit to coordinator by @junhoyeo
  • fix(team): skip malformed JSON in ReadSince and treat missing heartbeats as stale by @junhoyeo
  • feat(config): change default worker mode from goroutine to tmux by @junhoyeo
  • feat(team): wire governance policy and crash recovery into coordinator by @junhoyeo
  • fix(team): use file mtime for heartbeat stale detection by @junhoyeo
  • fix(team): add malformed JSON tolerance to cleanup and recovery paths by @junhoyeo
  • fix(team): add cursor rotation-awareness and fix archive naming collision by @junhoyeo
  • fix(agent): propagate KillPane errors through Stop/Close with timeout by @junhoyeo
  • fix(team): add state machine guards to dispatch queue transitions by @junhoyeo
  • feat(team): add flock-based advisory locking for cross-process file safety by @junhoyeo
  • refactor(agent): replace reflect-based IPC with shared interfaces in internal/ipc by @junhoyeo
  • fix(tmux): shell-quote CLI command arguments to prevent injection by @junhoyeo
  • fix(config): validate worker_mode and reject unknown values by @junhoyeo
  • fix(cli): force goroutine mode in team worker to prevent recursive tmux spawning by @junhoyeo
  • fix(team): use unique temp filenames to prevent cross-process collision by @junhoyeo
  • feat(team): add stale lock recovery and event log rotation by @junhoyeo
  • test(team): add goroutine mode regression tests by @junhoyeo
  • test(team): rewrite cross-process concurrency tests by @junhoyeo
  • test(agent): add tmux runner integration tests by @junhoyeo
  • feat(team): add coordinator crash recovery with state diagnosis by @junhoyeo
  • feat(team): add governance policy enforcement at decision points by @junhoyeo
  • feat(team): add worktree and tmux session cleanup module by @junhoyeo
  • feat(cli): add team worker subcommand for tmux pane execution by @junhoyeo
  • feat(cli): add tmux worker mode with config-driven runner selection by @junhoyeo
  • feat(team): add event consumer with cursor-based polling and pub/sub by @junhoyeo
  • feat(agent): add tmux runner implementing AgentRunner with pane lifecycle by @junhoyeo
  • feat(team): add dispatch queue with ack tracking and timeout redelivery by @junhoyeo
  • feat(tmux): add CLI registry for multi-agent type support by @junhoyeo
  • feat(tmux): add worker bootstrap with pane setup and prompt injection by @junhoyeo
  • feat(tmux): add tmux session wrapper with testable command runner by Junho Yeo
  • feat(team): add file-based heartbeat monitor with stale detection by Junho Yeo
  • feat(team): add JSONL event logger with cursor-based reading by Junho Yeo
  • fix(web): guard runtime display against Go zero time by @junhoyeo in #27
  • Fix links for agent runtimes in README by Junho Yeo
  • feat(cli): add version check and update notification by @junhoyeo in #26

Full Changelog: v0.1.2...v0.2.0

v0.1.2

08 Mar 11:45

Choose a tag to compare

Contrabass

contrabass@v0.1.2 is here!

Changelog

🚀 Features

  • 6f339b2 feat(agent): add OMC and OMX runner support (#24)
  • 44863bf feat(agent): add omc and omx runners

🐛 Bug Fixes

  • d5fd0b5 fix(agent): pass teamCLIRunner by pointer to avoid atomic copy
  • d5d1a15 fix(agent): remove double pointer dereference in newTeamCLIRunner
  • 1d211dc fix(tui): rewrite relative README links to GitHub URLs on landing site (#25)
  • bf245f0 fix: address all Copilot review feedback + fix flaky ETXTBSY test
  • 4aecb9f fix: remove unused agent import from main.go after DRY refactor

♻️ Refactoring

  • 988a02d refactor(agent): remove duplicate default constants per Copilot review

📝 Documentation

  • 4ebb37b docs(docs): note omc and omx team runners
  • d518c1f docs(project): document contributor attribution in release notes
  • 731389a docs(project): document omc and omx workflows

Contributors

  • docs(project): document contributor attribution in release notes by @junhoyeo
  • feat(agent): add OMC and OMX runner support by @Yeachan-Heo in #24
  • fix(tui): rewrite relative README links to GitHub URLs on landing site by @junhoyeo in #25

New Contributors

Full Changelog: v0.1.1...v0.1.2

v0.1.1

08 Mar 09:16

Choose a tag to compare

Contrabass

contrabass@v0.1.1 is here!

Changelog

🔧 Other

  • b0d0d5c Change logo in release header to img tag
  • 3021a0e fix(agent,hub): drain stderr before reading buffer and eliminate hub test race

v0.1.0

08 Mar 08:44
30f0cd7

Choose a tag to compare

Contrabass

contrabass@v0.1.0 is here!

Changelog

🚀 Features

  • 4c05ba0 feat(agent): add Codex subprocess runner with JSONL framing
  • d991fcd feat(agent): implement oh-my-opencode runner with config generation and plugin support
  • c67591b feat(agent): implement opencode runner with HTTP server and SSE events
  • 7510e95 feat(agent): inject opencode environment variables in oh-my-opencode runner
  • d7d2cc1 feat(cli): add --port flag for web dashboard
  • 22a7b32 feat(cli): add Cobra CLI with signal handling and run modes
  • 43af0ad feat(cli): add contrabass team command with run, status, and cancel
  • 85b3e24 feat(cli): add internal board drain mode
  • 066a9cc feat(cli): auto-resolve assignee from Linear API token
  • 8624c32 feat(cli): default internal workflows to team execution
  • bb50894 feat(cli): enable alt screen and mouse support for viewport scrolling
  • 880baba feat(cli): run child board issues inside teams
  • 2459ca3 feat(cli): run teams from internal board issues
  • ceeb217 feat(cli): thread --port flag into team execution mode
  • fa81386 feat(cli): wire oh-my-opencode as third agent type in runner factory
  • 6518eb2 feat(cli): wire up agent and tracker factory pattern in main
  • f54883e feat(config): add WORKFLOW.md parser with typed config and template rendering
  • 80447f3 feat(config): add agent type and github tracker configuration
  • 4454400 feat(config): add fsnotify-based file watcher for dynamic reload
  • 16c6030 feat(config): add oh-my-opencode configuration with agent and category model routing
  • 9f518fb feat(config): add team execution mode
  • a162bc0 feat(config): add team section to workflow config
  • 1ca8514 feat(config): expand config schema with all SPEC sections
  • de8b70c feat(dashboard): implement metric cards and header
  • 18682e7 feat(dashboard): implement retry queue and rate limits
  • e8d2b8f feat(dashboard): implement running sessions table
  • 2d68305 feat(dashboard): scaffold React+Vite dashboard with dark theme base
  • 63a416a feat(dashboard): wire SSE client for real-time updates
  • 4452e88 feat(hub): add event fan-out broadcaster
  • c8d680d feat(landing): add styling and Vercel config
  • 7afa8ab feat(landing): scaffold Astro landing page with README render
  • 1f03140 feat(logging): add structured file logging module
  • 6eeeece feat(orchestrator): add Snapshot() for state hydration
  • 3acf197 feat(orchestrator): add graceful shutdown with drain and timeout
  • d3b2f4e feat(orchestrator): add poll loop, dispatch, and goroutine supervision
  • ef80711 feat(orchestrator): add pure-function state machine transitions
  • b6d11c6 feat(project): add linear demo issue seeding script
  • d2456a5 feat(project): add release pipeline with GoReleaser, CI, and Homebrew tap
  • 3ea4b34 feat(team): add file ownership registry and conflict detection
  • 16072ad feat(team): add filesystem state store and team manifest lifecycle
  • c796853 feat(team): add per-worker mailbox with enqueue and prompt injection
  • f8f8591 feat(team): add worker coordinator using AgentRunner and per-worker worktrees
  • 2cd655e feat(team): implement stage machine and bounded fix loop
  • 49abc22 feat(team): implement task registry with optimistic claiming and lease renewal
  • bdda7e6 feat(tracker): add Linear GraphQL client with mock tracker
  • 97b8326 feat(tracker): add internal board tracker
  • 1c03545 feat(tracker): defer child dispatch until parent completes
  • 492457e feat(tracker): dispatch internal board issues into teams
  • a8f55dc feat(tracker): implement github issues tracker with REST v3 API
  • 4439d0b feat(tracker): store team metadata on board issues
  • 9554531 feat(tui): add centralized keymap with key.Binding definitions
  • 1cf12be feat(tui): add grouped team rows with header and indented workers
  • 83b910c feat(tui): add help component with keybinding display and toggle
  • 2492678 feat(tui): add mascot logo, puffy title, and charm-style pill badges to dashboard header
  • 2b72c02 feat(tui): add native terminal image rendering with rasterm fallback
  • 22c92dc feat(tui): add panel navigation with cursor selection and detail views
  • 3b560af feat(tui): add running agents table and backoff queue
  • 9da01da feat(tui): add shared spinner for active agent phase indicators
  • 37da034 feat(tui): add status header section with Lip Gloss v2 styling
  • 0e804c6 feat(tui): bridge root team events into dashboard
  • 1660979 feat(tui): horizontal two-box header layout with mosaic cover-crop fix
  • 826e446 feat(tui): improve logo rendering with bilinear interpolation and 1.5x size
  • f0aab0b feat(tui): integrate orchestrator events with TUI updates
  • 7f2bb21 feat(tui): migrate to lipgloss table with identifier-aware rows
  • 4b5b3bc feat(tui): populate HeaderData ModelName and ProjectURL from orchestrator events
  • b1d0434 feat(tui): render ascii contrabass logo in status header
  • 788d4fc feat(tui): render logo image in header via mosaic
  • 34788a8 feat(tui): show tracker metadata in header
  • b2f5812 feat(tui): surface board-linked team status
  • e352c7f feat(tui): transparent mosaic with dark-pixel contrast enhancement
  • f167447 feat(tui): use tea.Raw() to bypass cell renderer for native image display
  • afb46aa feat(tui): wrap table and backoff content in scrollable viewport
  • ff2c327 feat(types): add core domain types and interfaces
  • ef6db97 feat(types): add team domain models and phase enums
  • 5a82c2a feat(types): expand Issue and RunAttempt with missing SPEC fields
  • fc3b328 feat(web): add AgentLogWriter implementing io.Writer for log streaming
  • 7715db3 feat(web): add AgentLogs streaming dashboard component
  • c2cdb09 feat(web): add BoardView CRUD dashboard component
  • 7a1a010 feat(web): add HTTP server with JSON API
  • 9935585 feat(web): add SSE endpoint for real-time events
  • 0b6ceba feat(web): add TeamTable and WorkerTable dashboard components
  • 7834266 feat(web): add board CRUD HTTP endpoints
  • 76a0cdd feat(web): define unified web event types for SSE stream
  • 75b1ea3 feat(web): embed dashboard SPA via embed.FS
  • eff627a feat(web): emit board SSE events on CRUD mutations
  • de85dd3 feat(web): extend useSSE hook for unified WebEvent stream
  • 1c5e81c feat(web): integrate team, board, and agent log components into dashboard layout
  • 1c25451 feat(web): polish dashboard design with OKLCH color system and motion tokens
  • d1e8e05 feat(web): wire unified WebEvent hub into SSE stream
  • 287ff66 feat(workspace): add git worktree lifecycle manager
  • e7b25d9 feat: add project description and demo image to README

🐛 Bug Fixes

  • 3892e70 fix(agent): add Close() to AgentRunner to prevent orphaned server processes
  • 74aa1f9 fix(agent): add Close() to mock and test runners for interface complia...
Read more