Releases: junhoyeo/contrabass
Releases · junhoyeo/contrabass
v0.3.0
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
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
- @timur-z-ya-ru made their first contribution in #33
- @tanvesh01 made their first contribution in #29
Full Changelog: v0.2.1...v0.2.2
v0.2.1
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
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
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
- @Yeachan-Heo made their first contribution in #24
Full Changelog: v0.1.1...v0.1.2
v0.1.1
v0.1.0
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
