Releases: link-assistant/hive-mind
1.25.2
Previously, when Claude authentication expired, the /limits command would fail completely and show no information at all.
Now the command gracefully handles Claude auth failures:
- The error message (e.g., "Claude authentication expired. Please use /solve or /hive commands to trigger re-authentication of Claude.") is shown inline in the Claude limits sections
- All other limits sections (CPU, RAM, Disk space, GitHub API) continue to display normally
Related Pull Request: #1344
1.25.1
Added comprehensive unit tests for the token accumulation fix (Issue #1250)
that resolved the "Token usage: 0 input, 0 output" bug reported in Issue #1313.
New test coverage includes:
- End-to-end token display pipeline (accumulation → display format)
- Large token count handling (millions of tokens across many steps)
- NDJSON boundary cases (CRLF line endings, arrays, extra fields)
- Accumulator state isolation (independent accumulators)
- Exact reproduction of the Issue #1313 bug scenario
- Demonstration of why the streaming fix was necessary (concatenated JSON)
Total: 44 tests covering both parseAgentTokenUsage and streaming accumulation.
Related Pull Request: #1316
1.25.0
This change ensures that the /merge command waits for GitHub Actions to complete after each merge before processing the next PR in the queue.
Problem:
- Merge queue was merging PRs too quickly (70 seconds apart)
- Workflow runs were being cancelled (superseded by new commits)
- Only one version published instead of multiple
Solution:
- Check branch CI health before starting the queue
- Wait for post-merge CI after each successful merge
- Stop queue on CI failure (configurable)
New configuration options:
HIVE_MIND_MERGE_QUEUE_WAIT_FOR_POST_MERGE_CI(default: true)HIVE_MIND_MERGE_QUEUE_STOP_ON_CI_FAILURE(default: true)HIVE_MIND_MERGE_QUEUE_CHECK_BRANCH_HEALTH(default: true)HIVE_MIND_MERGE_QUEUE_POST_MERGE_CI_TIMEOUT_MS(default: 60 minutes)HIVE_MIND_MERGE_QUEUE_POST_MERGE_CI_POLL_INTERVAL_MS(default: 30 seconds)
New API functions:
waitForCommitCI()- Wait for workflow runs on a commitcheckBranchCIHealth()- Check for failed CI on a branchgetMergeCommitSha()- Get merge commit SHA for a PR
Related Pull Request: #1342
1.24.6
- Make
--auto-resume-on-limit-resetenabled by default to improve user experience when hitting API rate limits. Previously defaulted tofalse, now defaults totruefor bothsolveandhivecommands. Users can explicitly disable with--no-auto-resume-on-limit-resetif needed.
Fix false positive error detection for step_finish with reason stop
When an agent encounters a timeout error during execution but successfully recovers and completes (indicated by step_finish with reason: "stop"), the error detection was incorrectly flagging this as a failure due to fallback pattern matching.
The agentCompletedSuccessfully flag was only being set for session.idle and "exiting loop" log messages (Issue #1276), but not for the more common step_finish event with reason: "stop". This meant the fallback pattern matching would still trigger and detect error patterns in the full output, even when the agent had clearly completed successfully.
Fix: Add step_finish with reason: "stop" as a success marker in both stdout and stderr processing loops in src/agent.lib.mjs.
Related Pull Request: #1303
1.24.5
- 17317bb: fix: prevent false positive error detection for JSON-structured stderr warnings (Issue #1337)
Claude Code SDK can emit structured JSON log messages to stderr with format {"level":"warn","message":"..."}. When these messages contained error-related keywords like "failed", the detection logic incorrectly flagged them as errors.
Added JSON parsing for stderr messages starting with {. If the parsed JSON has a level field that is not "error" or "fatal", the message is treated as a warning (non-error), preserving existing emoji-prefix detection as a fallback.
Also enables ANTHROPIC_LOG=debug when running with --verbose flag, allowing users to see detailed API request information as suggested by the BashTool pre-flight warning.
Related Pull Request: #1338
1.24.4
Two root causes fixed:
- MarkdownV2 escaping: In
formatProgressMessage(), literal '...' was appended in PR titles, error messages, and overflow lines. Telegram's MarkdownV2 requires '.' to be escaped as '.' - unescaped periods caused 400 Bad Request errors on every message update during CI wait. - UNKNOWN merge state: GitHub computes PR mergeability asynchronously, so initial queries may return
mergeStateStatus: 'UNKNOWN'. The old code immediately skipped PRs in this state. Fixed by adding retry logic tocheckPRMergeable()that retries up to 3 times with 5-second delays before giving up.
Related Pull Request: #1340
1.24.3
- 297e07c: Fix incorrect iteration counter and duplicate comments in auto-restart mode
- Fixed iteration counter to show actual AI restart count instead of check cycle number
- Added deduplication check to prevent duplicate "Ready to merge" status comments
- Added case study documentation for issue #1323
Related Pull Request: #1328
1.24.2
When Claude tool returns API Error: 500 Internal server error, automatically retry with exponential backoff starting from 1 minute, capped at 30 minutes per retry, up to 10 retries. Session ID is preserved so Claude Code can resume from where it left off using --resume <sessionId>.
Related Pull Request: #1334
1.24.1
- 4b032ca: fix: use headRepository.name from PR data to construct fork name correctly
Previously, when solving a PR from a fork where the fork's repository name
differs from the base repository name, the tool incorrectly built the fork
name using the base repo's name instead of the actual head repo name.
Example failure scenario (Issue #1332):
- Base repo:
konard/MILANA808-Milana-backend(a fork itself) - PR head repo:
MILANA808/Milana-backend - Tool tried:
MILANA808/MILANA808-Milana-backend(wrong, 404) - Should try:
MILANA808/Milana-backend(correct)
The fix propagates forkRepoName (from headRepository.name in PR data)
through the call chain: solve.mjs → setupRepositoryAndClone →
setupRepository, where it's used as the correct source of truth for
building fork repo names. Falls back to base repo name if unavailable.
Also improves the error message when a fork cannot be found, clarifying
that the fork name may differ from the base repo name.
Related Pull Request: #1333
1.24.0
- c93b8cd: Add support for Claude Sonnet 4.6 and set it as the default model for
--tool claude - Added
claude-sonnet-4-6as the new default model when usingsonnetalias - Added
sonnet-4-6short alias for explicit Sonnet 4.6 selection - Added backward compatibility aliases:
sonnet-4-5andclaude-sonnet-4-5for Sonnet 4.5 - Added 1M token context window support for Sonnet 4.6 (
sonnet[1m],sonnet-4-6[1m]) - Maintained full backward compatibility with previous model versions
Related Pull Request: #1330