Skip to content

Releases: ba1lly/nocturne

Nocturne v1.2.1

11 Jun 16:33
d44d7b2

Choose a tag to compare

Patch release. Fixes three post-PR feedback-loop bugs found by live-dogfooding the v1.2.0 feature (CI-failing PR, auto-fix, back to green).

Fixes

  • CI feedback is now actionable. GitHub Actions check-runs expose only the job name, so the agent previously got "CI check failed" with no detail and could not fix anything. The failing job log is now pulled (gh run view --log-failed), cleaned, and fed to the agent so it sees the real error.
  • opencode's .omo/ session-state dir no longer leaks into PRs.
  • A failed fix attempt no longer leaks its worktree, which had blocked every subsequent fix attempt for that branch.

Docs

  • Documented the reactions.* config keys in the README.

607 tests pass; ruff and mypy clean.

Nocturne v1.2.0

11 Jun 15:50
2ce2691

Choose a tag to compare

Highlights

Post-PR feedback loop (opt-in: reactions.enabled)

After Nocturne opens a PR it can now keep shepherding it toward merge-ready. It never merges; an approved and green PR only notifies a human.

  • Failing CI -> re-dispatches the agent on the same branch and fast-forward pushes a fix (no new PR, no force)
  • Reviewer requested changes -> addresses the comments on the same branch
  • Approved and green -> notifies you it is ready to merge
  • Reads PR lifecycle, CI, and review state via gh api REST; dedupes on head sha; escalates after max_fix_attempts; stops on merge, close, or TTL

Agent isolation hardening

  • opencode and the verify step run with GitHub tokens, stored gh auth, and SSH agent/keys stripped
  • Commits touching CI workflows, private keys, or credential files are blocked from PRs
  • Live issue state is re-checked before opening a PR (closed, label removed, or already has a PR)

Operational footguns closed

  • Reap failed/aborted worktrees so they cannot exhaust disk
  • Enforce the token budget mid-run
  • Network timeouts on git push and gh pr create
  • Cap opencode output held in memory

605 tests pass; ruff and mypy clean.

Nocturne v1.1.0

11 Jun 07:31
a5d485c

Choose a tag to compare

Minor release. Backward-compatible features plus a bug fix.

Highlights

  • Real token accounting. Token usage is now measured from the opencode event stream (input, output, reasoning, and cache tokens) and accumulated per task, so the token_budget guardrail and the report/Discord output reflect actual usage instead of a flat per-task estimate. Verified end to end against a live opencode session.
  • Daemon reliability. The resumed and DOABLE paths in the poll cycle share one helper, and NEED_INPUT issues are now parked with a clarifying question instead of being silently re-triaged every cycle.
  • Timezone-aware quiet hours. quiet_hours can be interpreted in a configured IANA timezone (quiet_hours_tz) instead of UTC only. Defaults to UTC.
  • Stricter mypy. Re-enabled the attr-defined and return-value checks and fixed the gaps they surfaced.
  • Cleaner generated commits. Build and cache artifacts (for example pycache and tool caches) are excluded from a worktree so they cannot be swept into a generated PR on repos without a complete .gitignore.
  • Version metadata is aligned across pyproject, the package, and the nocturne version command.

See #8 and #9 for full detail.

Nocturne v1.0.0

09 Jun 08:56

Choose a tag to compare

Initial public release. Autonomous coding orchestrator built on opencode: label a GitHub issue and Nocturne drives opencode to fix it on an isolated branch, self-reviews every change, and opens a clean PR. Safe by default - never merges, force-pushes, or touches main.

See the README for architecture, quick start, and the reviewer-skill chain.

Install:

git clone https://github.com/ba1lly/nocturne
cd nocturne
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
nocturne setup