Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/releases/v1.0.65.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
## opencode 1.0.65

Stable release from `main` branch. Reasoning shaping now rewrites each reasoning part through the built-in engine before the model sees it again, and the repository adopts SpecGit 2.5 with a refreshed README.

---

### 🎯 Features

- **Reasoning shaping, per step**: Each reasoning part is organized by the configured small model as soon as it ends, while the step's tools run, instead of once after the turn. Before every provider request the session waits for unfinished rewrites up to `OPENCODE_REASONING_DISTILLATION_SETTLE_MS` (default 3000 ms) and seals the rest; a sealed part keeps its original text for good. A part is therefore rewritten before its first resend or never, so earlier prompt-cache prefixes are never invalidated, and within-turn resends now carry the organized text. Adoption is checked per part, so a quick follow-up message no longer discards a whole turn. Disposing a directory or deleting a session cancels its pending rewrites and their model calls (#721).
- **Engine organizer**: Both runtimes organize through the `@opencode-ai/llm` engine with no tools, temperature 0, no retries and `none`/`low` effort translated per protocol. The opencode runtime keeps the AI SDK only as a fallback for packages the engine does not route. Parts are organized concurrently and independently; the session budget counts reported or estimated tokens instead of stopping when a provider omits usage or after a fixed number of calls (#721).
- **Send fence across processes**: Adoption is refused once any process has persisted a later assistant attempt. The opencode loop persists each attempt before re-reading the previous message's reasoning for its request, so a rewrite committed by another process is either in that request or refused (#721).
- **Barrier logs**: Every sealed barrier is logged as `reasoning rewrite sealed` (info) and other barriers as `reasoning rewrite barrier` (debug), with job, adopted and sealed counts and the wait time (#721).

---

### 🐛 Bug Fixes

- **Reasoning shaping**: A Chinese rewrite of English reasoning was rejected as larger because the savings check used the conservative reserve estimator, which counts one token per CJK character and four characters per English token. Measured on the configured DeepSeek and GLM tokenizers the rewrite was smaller; the check now uses a script-calibrated estimate (#721).
- **Reasoning shaping**: An all-noise part was replaced with empty text, which made the core runner drop `reasoning_content` from that assistant message. It is now replaced with a short non-empty placeholder (#721).
- **Reasoning shaping**: The organizer always requested 24,576 output tokens, so providers that enforce a lower output cap for the small model rejected every rewrite and paused the session. Both transports now clamp to the model's declared output limit (#721).
- **SpecGit**: Prettier had reformatted the SpecGit-managed block in `AGENTS.md`, so SpecGit 2.5 reported a damaged marker and refused `init`, `migrate` and `remove`. The blocks are regenerated and `AGENTS.md` is excluded from Prettier (#723).

---

### 🏗️ Architecture / Refactor

- **Engine-owned reasoning carriers**: `ReasoningCarrier.classify` in `@opencode-ai/llm` decides whether provider metadata is plain, a plaintext mirror, or opaque (signed, encrypted or referenced). Core no longer inspects SDK metadata key names (#721).
- **Dead code removed**: The unreachable native-wire projector, the propose/judge/claims/gates pipeline, the native-runtime hook, and the core runner's unused per-turn history conversion and request preparation, about 11.7k lines (#721).

---

### ⚙️ CI / Engineering

- SpecGit 2.5: `.specgit.yaml` is per-checkout local configuration and is no longer tracked; `AGENTS.md` documents the `specgit init` / `specgit setup --agent opencode` commands. The uncalled v1 bootstrap wrapper is removed. Pull requests merge with merge commits only (#723).
Comment thread
LeXwDeX marked this conversation as resolved.
- The lint ratchet drops from 4850 to 4750 after fixing every warning on touched lines (#721).
Comment thread
LeXwDeX marked this conversation as resolved.
- The README introduces the fork's own features (reasoning shaping, DAG workflows, Project Memory, autonomous goals, hooks and context management) and drops the retired `dev` prerelease channel.

---

### 🧪 Test Summary

```text
workspace typecheck tasks: 31/31 passed
opencode tests: 5245 passed, 0 failed
core tests: 1462 passed, 0 failed
llm tests: 325 passed, 0 failed
tui tests: 282 passed, 0 failed
DAG behavior/coverage: passed
lint: 4738 warnings, 0 errors (ratchet 4750)
```

---

### 🔍 Verification

New regression tests cover the send barrier (adopt, seal, interrupt, early cleanup), cancellation on directory disposal and session deletion, a rewrite committed by another process before a step's claim, per-part adoption after later messages, the placeholder keeping `reasoning_content`, carrier classification, the calibrated estimator, the organizer engine transport, and integration tests in both runtimes showing the next step's request carries the rewrite. A branch build was installed over the local command and verified by path, version and SHA-256, then exercised in isolated sessions against the configured DeepSeek and GLM models with a recording relay: rewrites were in place in the next step's and next turn's requests, a slow organizer call that missed the window was sealed and its part stayed original in every later request, nothing was organized with the feature off, and no server errors were logged at DEBUG level. SpecGit 2.5 `init --check`, an idempotent `setup` refresh and a clean `remove` preview were confirmed. Native CI verified each pull request head before merge.

---

**Full changelog:** [`graphagent-v1.0.64`...`graphagent-v1.0.65`](https://github.com/LeXwDeX/OpenCode-GraphAgent/compare/graphagent-v1.0.64...graphagent-v1.0.65)
Loading
Loading