Skip to content

Releases: oxgeneral/ORCH

v0.2.0

13 Mar 11:33

Choose a tag to compare

Changelog

0.2.0 (2026-03-13)

New Features

  • orch update command — check for updates and install the latest version from npm (orch update --check for check-only mode)
  • Background update notifications — CLI silently checks npm registry (4h cache) and shows a notification when a newer version is available
  • Lazy command loading — commands are dynamically imported on demand, reducing CLI startup time ~40%
  • Light/Full container split — read-only commands (task, agent, status, logs, config, context, msg, goal, team) use a lightweight container without loading adapters, ProcessManager, or LiquidJS
  • --help fast pathorch --help and orch --version skip container initialization entirely

Bug Fixes

  • OOM fix (runtime) — truncate event data before event bus and JSONL writes; replace unbounded readline with backpressured Buffer-based stream reader
  • OOM fix (startup) — replace N×M file reads (277 tasks x 376 runs = 104K reads) with single listAll() pass; add 50MB JSONL file size guard
  • cancelTask/forceStopAgent lock bug — both methods now auto-acquire lock via withTemporaryLock when called standalone (previously always threw LockConflictError from fresh Orchestrator)
  • task cancel for running tasksorch task cancel now uses orchestrator.cancelTask for in_progress tasks (kills agent process, cleans state)
  • State machine violation — remove in_progress → done shortcut, enforce mandatory review step
  • Truncated JSON in TUI logs — add extractSummaryFromTruncated regex fallback for truncated event data
  • [undefined] in TUI — fix fallback to [${type ?? role}]
  • $EDITOR with argscode --wait no longer fails with ENOENT
  • --since in logs — no longer loads entire JSONL into memory
  • NO_COLOR compliance — respect NO_COLOR env var per no-color.org spec
  • Done tasks showing wrong time — use updated_at instead of created_at
  • Race condition in TUI — move setTaCursorCol out of setTaLines updater
  • Process spawn — add proc.unref() after detached spawn to unblock parent exit
  • isProcessAlive — return true on EPERM (process alive, no permission)
  • Retry backoff — fix off-by-one using attempts - 1 for correct backoff start
  • Scope overlap — fix patternsOverlap false negative for sibling paths
  • CJK/emoji titles — fix prepareWorktree empty branch name
  • sanitizeId — reject forbidden characters instead of silently stripping
  • appendJsonl — truncate data to PIPE_BUF (4096) for atomic O_APPEND writes
  • cancelTask abort — call .abort() on AbortController before delete
  • forceTaskToReview — now clears agent.current_task

Performance

  • Progressive history loading — parallel I/O in onLoadHistory with batched setState (80ms flush)
  • readJsonlTail — read last N records from JSONL without loading entire file
  • EMFILE protection — batched Promise.all reads in groups of 64
  • Vitest threads pool — test suite runs ~12% faster

Architecture

  • buildLightContainer / buildFullContainer — split DI container for fast startup
  • readLines generator — Buffer-based with backpressure, replaces readline.createInterface
  • serializeEventData — DRY event serialization with 3-layer truncation
  • resolveFailureStatus — extracted from duplicated retry logic
  • createTokenUsage factory — ensures total = input + output
  • Atomic cache writes — update-check uses temp file + rename

Tests

  • 851 tests (up from 737 in 0.1.0)
  • New coverage: process-manager, streamEvents, lazy routing, task cancel, progressive loading, context, token usage, retry status

0.1.0 (2026-03-12)

Initial release.

v0.1.0 — First Public Release

12 Mar 19:46

Choose a tag to compare

v0.1.0 — First Public Release (2026-03-12)

61 commits | 74 files changed | +7,246 / -1,016 lines | 737 tests

Major Features

  • Inter-agent messaging & team coordination — agents can send direct messages, broadcast, and coordinate within teams (orch msg send/broadcast/inbox)
  • Agent Teams — create teams, assign leads, multiselect members via TUI wizard; team section headers and badges in Agents tab
  • Goals as first-class entities — dedicated Goals tab in TUI, goal CRUD via orch goal, pause/resume with autonomous task lifecycle management
  • Autonomous agent mode — goal-directed work generation; agents auto-create subtasks, track progress, and work in a continuous loop until goal is achieved
  • Default Agent Creatororch init now bootstraps an Agent Creator agent out of the box
  • Global config & settings wizard — activity filter presets, interactive config via TUI
  • Log filter bar redesign — split into two logical lines for better UX

Bug Fixes

  • Paused goals still executing tasks — now disables autonomous mode and cancels pending tasks on pause; re-enables on resume
  • Agents not picking up new tasks — added reactive dispatch on task completion (500ms instead of 30s polling wait)
  • Scope overlap dispatch — blocks conflicting tasks instead of just warning
  • Orphaned child processes — kills process group (-pid) instead of single PID
  • TUI flicker — global animation tick, React.memo, useMemo for header stats
  • Inbox expiry bug, logs --since truncation, stale closures, duplicate team headers, layout overlap

Performance

  • Reactive dispatch on task:created and task completion — agents pick up work immediately
  • Parallel I/O in logs, cancel operations, and task reads (Promise.all)
  • readEventsTail for efficient log reading without loading entire JSONL files

Code Quality

  • Agent prompts rewritten — removed 120+ lines of duplicated goal-handling instructions; moved to conditional template section
  • Agent Creator prompt translated to English for global use
  • AUTONOMOUS_LABEL constant used everywhere (no hardcoded strings)
  • 8 simplify passes — deduplicated wizard code, centralized glyphs, extracted helpers, removed dead code
  • isDispatchable() — single source of truth for dispatchable task statuses

Documentation

  • SPEC.md updated: module structure, dispatch sort, event types (11→31), new sections (Goal, Team, Message)
  • USER_STORIES.md audited: 13→142 stories with test coverage, 6 new epics (EP-22..EP-27)
  • README updated: 737 tests badge, GitHub stars badge, Community section

Tests

  • 737 tests (736 green, 1 known flaky lock-concurrency)
  • New test suites: goal-service autonomous mode (21 tests), scope overlap dispatch, default Agent Creator, process signals, readJsonl corrupt lines