chore(release): v0.12.10

Merged
SA
1d ago
+380-8

Issue for this PR

Release PR. It promotes the v0.12.9..main payload to latest as v0.12.10: #1669 "fix: workspace rules state lives outside the project", #1670 "fix(rules): a project linked by path can gain its git remote, and learn status says why rules are off", #1687 "fix: tool commands no longer lose a big answer on a pipe" and #1688 "fix(session): retry a failed session title on later turns and report why it failed" (closes #1689).

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation
  • Other: release

What does this PR do?

Adds the 0.12.10 changelog entry, the release adversarial tests (packages/opencode/test/skill/release-v0.12.10-adversarial.test.ts, 18 cases) and the fixes from the release review, on top of the four merged fixes above.

Review fixes in this PR (from five persona reviews of the real diffs, all SHIP WITH NOTES, no P0):

  • tool commands: writeAll retried EAGAIN forever, so a reader that stopped draining the pipe kept the process spinning. After 60 s without progress it now fails with a message on stderr and exit 1. EPIPE still exits 0. (packages/opencode/src/cli/cmd/tool.ts)
  • Session titles: a title_generation_failed report for a small_model the provider does not list named the chat model it fell back from. It now names the model that was asked for. The fire-and-forget title call has a .catch. A new test keeps a name the user gives the session while the title request runs. (packages/opencode/src/session/prompt.ts, test/session/title-retry.test.ts)
  • Docs: the models page says where a failed small_model shows up.

Deferred, with issues: #1691 "Workspace rules state is not carried over from the 0.12.9 in-project rules.json, and nothing tells the user" and #1692 "Session title attempt counter reads the compacted history, so compaction resets the five-attempt bound and the title context". The changelog states the upgrade effect of #1669 in full.

How did you verify your code works?

  • Preflight (bun script/release-preflight.ts --version 0.12.10 --stage pre): 9 PASS, 0 WARN, 0 FAIL on a clean tree at origin/main b06bd16bde.
  • Five persona reviews (CTO, Product Manager, End User, Tech Lead, on-call support engineer as the Chaos Gremlin) read every diff: 5 SHIP WITH NOTES, 0 HOLD, 0 P0. Actionable items are the fixes above; the rest is wording in the changelog or filed as the two issues.
  • bun run typecheck clean. New adversarial file 18 pass. test/session/title-retry.test.ts 5 pass. test/altimate/tool-cli and test/telemetry/telemetry.test.ts 237 pass.
  • Full suite and end-to-end checks against the free tier and freemium are running; results will be added here before the merge is requested.
  • Already verified for #1688 on its own PR: end to end on the free tier with a built 0.12.10 binary (fresh registration titled a session; an unlisted small_model logged ProviderModelNotFoundError and left the placeholder; a later message retried and titled the session), and the title_generation_failed events reached App Insights.

Cost side effects

None new in this PR. #1688's: at most five title attempts per session whose title request fails, each with up to two SDK retries, each the size of today's single title request; none for a session titled on the first message.

Screenshots / recordings

Not applicable.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR
  • I checked for cost side effects (model calls, queries or cloud resources that grow with user data) and described them, or wrote "none"

🤖 Generated with Claude Code


Summary by cubic

Promotes v0.12.10 to latest: four bug fixes from main, plus the changelog entry, adversarial release tests, and fixes from the release review.

  • tool writes that stall for 60 seconds now exit 1 with a stderr message instead of spinning forever; a reader that closes early still exits 0. The stall is measured on a monotonic clock, and zero-byte writes count as no progress.
  • Title failure telemetry now names the model that was asked for, not the chat model it fell back from, and the fire-and-forget title call catches errors.
  • The models docs state where a failed small_model shows up.

Summary by CodeRabbit

  • New Features
    • Workspace rules are available after sync and stored privately per user; the in-project approved copy is display-only. Existing workspace rules are not migrated.
    • learn status now explains workspace-rule states, and relinking a path-linked project can detect its Git remote.
  • Bug Fixes
    • Session titles retry after each of the first five user messages. Title-generation failures are logged and reported.
    • Tool commands deliver complete output; a stalled reader times out after 60 seconds, while an early-closing reader exits successfully.