Releases: sortie-ai/sortie
sortie 1.9.0
Changelog
Features
- c6c7624 feat(agent): add OpenCode adapter
- e83d502 feat(docker): add OpenCode example Dockerfile
- 3de98a0 feat(examples): add Jira + OpenCode sample workflow
- 787b5df feat(httpkit,issuekit,trackermetrics): add shared REST transport, normalization, and metrics helpers
Bug Fixes
- 897dd8c fix(adapters): do not return partial results when tracked operations fail
- 72e1390 fix(agent): address review feedback on ForkPerTurnSession and adapter loggers
- c61786e fix(agent): remove dead normalizeUsage in copilot, extract buildSSHRemoteCmd in codex
- 938a6ae fix(agentcore): use lowercase error message in ResolveBinary
- 46d7800 fix(examples): scope OpenCode sample permissions
- bcf5823 fix(opencode): address review feedback
- 28f49e6 fix(sshutil): append remoteCommand verbatim to allow multi-token shell expressions
- b2d03d3 fix(typeutil): rename test helper to avoid shadowing stdlib strings package
Full changelog: https://github.com/sortie-ai/sortie/blob/1.9.0/CHANGELOG.md
Diff: 1.8.0...1.9.0
sortie 1.8.0
Changelog
Features
- cab32ee feat(codex): add Codex CLI agent adapter
- e24cdbb feat(codex): make handshake reads cancellable via scanner channel
- d5e68c7 feat(docker): add OpenAI Codex CLI Dockerfile and usage instructions
Bug Fixes
- ca3ce4e fix(cmd): increase runTestTimeout to 2s for CI race detector
- 88e39a4 fix(codex): address review feedback on integration and parse tests
- 343770b fix(codex): address review feedback on integration tests and CI
- 800a5ce fix(codex): clarify scanner goroutine lifecycle and close stdout on error
- e5d3b2c fix(codex): fix Codex turn/started race
- 422d517 fix(codex): guard against whitespace command panic, fix doc and scanner error
- 92f2407 fix(codex): make stopCh close idempotent and add session context to warning log
- 0b419ed fix(codex): normalize sandbox casing between thread/start and turn/start
- 1cfbcae fix(codex): resolve concurrency issues in protocol and tool dispatch
- 4906d5d fix(codex): return sync events from handleToolCall to avoid channel deadlock
- 07e31de fix(codex): serialize onEvent calls from tool goroutines via channel
- e0e191b fix(docker): correct Codex binary download URL for linux/amd64 and linux/arm64
- 68244e1 fix(test): correct model name for copilot
Full changelog: https://github.com/sortie-ai/sortie/blob/1.8.0/CHANGELOG.md
Diff: 1.7.1...1.8.0
sortie 1.7.1
Changelog
Features
- 5f72b8c feat(cli): replace GNU version banner with diagnostic one-liner
Bug Fixes
- a9d548f fix(ci): quote $GITHUB_ENV in release workflow build-date step
- 65b4f58 fix(orchestrator): add pollInterval fallback guard in reconcileReviewComments
- 99d8bc3 fix(orchestrator): correct ci_escalations_total double-count in escalateCIFailure
Full changelog: https://github.com/sortie-ai/sortie/blob/1.7.1/CHANGELOG.md
Diff: 1.7.0...1.7.1
sortie 1.7.0
Changelog
Features
- 5289bdc feat(orchestrator): propagate session_id through retry chain
- 752d2e3 feat(persistence): add session_id column to retry_entries
- 0ef2304 feat(procutil): harden StderrCollector with scanner buffer cap and memory limit
- 01f5ea4 feat(server): add accordion expand/collapse to dashboard tables
- ef64d38 feat(server): add token usage cost estimation to dashboard
- 16565fa feat(server): persist accordion expanded state across page refreshes
Bug Fixes
- 6d47992 fix(cmd): remove section labels, plan references, and duplicate comments
- b855c09 fix(cmd): use portable paths in TestResolveWorkflowPath
- 0f8b1c6 fix(orchestrator): use Value.Equal for slog attr comparison
- a8f2bd1 fix(procutil): address review feedback on StderrCollector docs and edge case
- c2947d3 fix(procutil): cap initial scanner buffer to enforce WithScannerMax below 64 KiB
- 23b53ea fix(server): add aria-label to toggle button, fix closing tag
- 3ef57f4 fix(server): add focus-visible ring and harden collapsed-state test
- 678e417 fix(server): address review feedback on accordion accessibility
- 0d40a97 fix(server): address review feedback on accordion toggle
- 2f167ba fix(server): address review feedback on token rate parsing and cost formatting
- 23ca9a1 fix(server): address second-round review feedback on cost dashboard
- 9ab4348 fix(server): prevent Prettier from splitting small tag in token tooltip
Performance
- f54197e perf(orchestrator): replace FetchCandidateIssues scan with FetchIssueByID in HandleRetryTimer
Full changelog: https://github.com/sortie-ai/sortie/blob/1.7.0/CHANGELOG.md
Diff: 1.6.1...1.7.0
sortie 1.6.1
Changelog
Features
- e727193 feat(orchestrator): add runtime terminal workspace sweep
Bug Fixes
- 9cbc94e fix(orchestrator): correct sweep interval comment and metrics doc
- a52f4d7 fix(orchestrator): make handoff log messages reflect actual branch taken
- 5f5ec28 fix(orchestrator): trigger handoff transition for needs-human-review soft-stop
- 5fe340e fix(tests): reduce context timeout for integration tests
Full changelog: https://github.com/sortie-ai/sortie/blob/1.6.1/CHANGELOG.md
Diff: 1.6.0...1.6.1
sortie 1.6.0
Changelog
Features
- faa9375 feat(config): add ReactionConfig and reactions map to ServiceConfig
- 3783975 feat(config): migrate ci_failure into reactions.ci_failure unified block
- f46c72b feat(orchestrator): add self-review loop before PR creation
- a2efacd feat(orchestrator): derive CI pending backoff base from poll_interval
- b044ed0 feat(persistence): add reaction_fingerprints table and store methods
- 5a9c4ee feat(procutil,workspace): add Windows process lifecycle support
- ea7cabb feat(scm): add PR review comment routing with GitHub SCM adapter
Bug Fixes
- 53a1fe2 fix(claude): signal process group on cancellation and stop
- 0d27f7a fix(cmd): increase runTestTimeout on Windows for SQLite migrations
- 10a0506 fix(config): reject non-string values in reactions fields with ConfigError
- e5b23c1 fix(copilot): signal process group on cancellation and stop
- a7b9eee fix(install): detect Rosetta 2 and prefer native arm64 binary on macOS
- 5882913 fix(orchestrator): address review round 2 feedback
- 33240eb fix(orchestrator): address review round 3 feedback
- 162fd0b fix(orchestrator): address self-review PR feedback
- bd74798 fix(orchestrator): close pipes on context expiry to unblock Windows drain
- 66e32ab fix(orchestrator): move MarkReactionDispatched to actual dispatch site
- 14740dc fix(orchestrator): replace pipe reads with cappedWriter to fix Windows hang
- 123ae47 fix(persistence): use synchronous=NORMAL for WAL mode; widen Windows test timeout
- b7de78d fix(procutil): add process group signal helpers for Unix
- 6521c0d fix(procutil): launch ping directly in SignalGraceful test
- 273b894 fix(procutil,workspace): address review round 3
- 739166a fix(procutil,workspace): address review round 4
- 43fd7c8 fix(procutil,workspace): address review round 5; harden CI
- ed44636 fix(procutil,workspace): drop unsupported-platform stubs; harden WasSignaled
- cf77646 fix(procutil,workspace): use STATUS_CONTROL_C_EXIT consistently for Job Object termination
- 398cf8a fix(scm): address review feedback on pagination, naming, and config
- 0570b83 fix(scm): address review round 2 feedback
- 3d6f2fb fix(scm): improve truncation warnings and clamp error backoff to poll interval
- 7a5a94a fix(test): fix Windows CI failures in closer and self_review tests
- bac9dde fix(test): retry rename in writeWorkflow to fix Windows CI flakiness
- 06b02dc fix(vscode): remove self-referencing parent files from nesting patterns
- 6d1f5db fix(workflow): update Manager logger after post-config reconfiguration
- 5a516b4 fix(workspace): improve Windows hook test reliability
Full changelog: https://github.com/sortie-ai/sortie/blob/1.6.0/CHANGELOG.md
Diff: 1.5.1...1.6.0
sortie 1.5.1
Changelog
Features
- b6f972e feat(cmd): redesign CLI help with GNU-style output and -h/-V aliases
Bug Fixes
- 11417e1 fix(agent): reclassify zero-output exit-0 turns as turn_failed
- ac26e9c fix(copilot): prefix --additional-mcp-config file paths with @
- a3521aa fix(copilot): skip --additional-mcp-config for whitespace-only values
- de806eb fix(test): use American English spelling in comment
Performance
- 388a968 perf(test): reduce cmd/sortie test suite from 110s to 20s
Full changelog: https://github.com/sortie-ai/sortie/blob/1.5.1/CHANGELOG.md
Diff: 1.5.0...1.5.1
sortie 1.5.0
Changelog
Features
- c13ff3c feat(cmd): add --log-format flag with workflow extensions fallback
- 51af79d feat(cmd): make HTTP server always-on with configurable bind address
- 7e75f9a feat(docker): add GHCR publish job, OCI labels, and REVISION build arg
- 2dd4cc1 feat(docker): add distroless Dockerfile and agent-specific examples
- e46b3d7 feat(docker): use --log-format json in agent Dockerfile entrypoints
- 54e405c feat(k8s): add plain Kubernetes deployment manifests
- 3684a23 feat(logging): add Format type, ParseFormat, and JSON handler support
- 5e4c8a3 feat(server): add Grafana dashboard and coverage test for all Prometheus metrics
Bug Fixes
- bad373a fix(agent): address PR 386 review feedback
- 6bb1a6b fix(agent): drain stderr before cmd.Wait() to prevent data loss
- 9dc71b3 fix(agent): surface stderr at WARN on turn failure
- 8472af7 fix(docker): upgrade to debian13 distroless, add CMD, fix UID note and lint
- 2ab27e0 fix(k8s): correct paths, DB env var, and service selector
- 9c1b094 fix(server): handle collapsed row panels and deduplicate metric list in tests
- ec9d716 fix(tests): rename misleading test and remove redundant duplicate
Full changelog: https://github.com/sortie-ai/sortie/blob/1.5.0/CHANGELOG.md
Diff: 1.4.0...1.5.0
sortie 1.4.0
Changelog
Features
- b8e6411 feat(cmd): merge tracker credentials into CI adapter config when kinds match
- 871bb66 feat(config): extend CIFeedbackConfig with retry and escalation settings
- c8d998e feat(config,registry): add CIFeedbackConfig and CIProviders registry
- 0cc1b09 feat(domain): add CIStatusProvider interface and CIResult types
- b1f6947 feat(domain): add IncCIStatusChecks, IncCIEscalations, and AddLabel
- d5a9dba feat(orchestrator): add exponential backoff and TTL for pending CI re-enqueue
- e98ec5a feat(orchestrator): integrate CI failure detection into reconcile loop
- 38e40d2 feat(orchestrator): track fire-and-forget tracker ops for graceful shutdown
- b1f096f feat(prompt): add RenderOption variadic and ci_failure template variable
- bfa004e feat(server): add Prometheus counters for CI status checks and escalations
- 48d7919 feat(tracker): implement AddLabel for GitHub, Jira, and file adapters
- 3274225 feat(tracker/github): implement GitHubCIProvider via Checks API
- bc4b6d6 feat(workspace): add ReadSCMMetadata for CI ref resolution
Bug Fixes
- 82bdd95 fix(docs): address PR 383 review feedback
- 236ad17 fix(docs): correct reload behavior and type names for ci_feedback fields
- 5c022f6 fix(docs): remove unused env vars from workflow reference
- 7076e79 fix(domain,workspace): remove section ref from test comment; clarify SCM godoc
- 13135e1 fix(orchestrator): add default case for unrecognized CI status
- a2943de fix(orchestrator): address PR 384 review feedback
- 29104e5 fix(orchestrator): bound tracker ops drain and call unconditionally
- a97c6ac fix(orchestrator): include timed_out and cancelled in escalation comment
- 2d02ae1 fix(orchestrator,prompt): correct CI-fix retry attempt and template schema
- a0ce4a1 fix(review): address PR 379 review feedback
- 2a4bc40 fix(tracker/github): address PR review feedback on CI provider
- 606bc6f fix(tracker/github): map action_required to failure and document implicit contracts
Full changelog: https://github.com/sortie-ai/sortie/blob/1.4.0/CHANGELOG.md
Diff: 1.3.0...1.4.0
sortie 1.3.0
Changelog
Features
- 3a52af6 feat(mcp): add mcp-server subcommand and worker config generation
- 63f410f feat(orchestrator): integrate A2O status file into worker turn loop
- 02a27f4 feat(prompt): inject RuntimeStatusSuffix into first-turn agent prompt
- 8206115 feat(tool): add sortie_status MCP tool for session runtime metadata
- d8127d6 feat(tool): add workspace_history MCP tool
- f0df371 feat(workspace): add A2O status file read and pre-dispatch cleanup
Bug Fixes
- 75597d9 fix(claude): guard type assertions and use cmp.Or for command default
- 7a17a2c fix(cmd): use logging.Setup return value in MCP server entry point
- 31162a1 fix(copilot): guard type assertions and use cmp.Or for command default
- 7dd55d2 fix(logging): return logger from Setup to eliminate slog.Default() race
- 1d13eb2 fix(mcp): address code review comments
- 8d1a55b fix(mcp): address round 2 review comments
- 3b32363 fix(mcp): document why absolute WorkflowPath in MCP config is safe
- 9dd48d8 fix(mcp): export --env-file path as SORTIE_ENV_FILE to process env
- 3fa7963 fix(mcp): propagate SORTIE_* env vars to MCP server config
- a7ecc44 fix(orchestrator): include session_id in A2O status soft-stop log
- 977df3c fix(orchestrator): use 0o600 for .gitignore and drop permission assertion
- 03bcd1b fix(orchestrator): write .sortie/.gitignore to prevent credential leak
- 5d6ec2e fix(prompt): use exact protocol token in RuntimeStatusSuffix godoc
- 1ebb63f fix(tool): address review feedback on sortie_status
- 2866c34 fix(workspace): address review round 2 — doc comments, Lstat logging, cleanup log level
- e76b554 fix(workspace): reject symlinks via Lstat regardless of target location
- 5ca6736 fix(workspace): suppress errcheck and gosec G304 lint findings
- 00ef045 fix: address review round 3 — doc comment, inline label, log style
- 56fd2ed fix: use session-scoped logger and fix PreRunFunc doc comment
Others
- 2afb5dc Merge branch 'release/1.2.x'
Full changelog: https://github.com/sortie-ai/sortie/blob/1.3.0/CHANGELOG.md
Diff: 1.2.1...1.3.0