mirror of
https://github.com/sdwolf4103/opencode-working-memory.git
synced 2026-06-01 22:11:08 +02:00
chore(release): prepare v1.5.5
This commit is contained in:
@@ -5,6 +5,28 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [1.5.5] - 2026-05-05
|
||||
|
||||
### Added
|
||||
|
||||
- Section-aware greedy line accumulator for hot session state rendering that fits whole lines instead of truncating mid-line.
|
||||
- `accountHotSessionStateRender()` accounting function returning prompt text, omitted items, and char budget for v2 evidence extension.
|
||||
- Exported types for render accounting diagnostics: `HotStateSection`, `HotStateOmissionReason`, `HotStateOmittedItem`, `HotSessionStateRenderAccounting`.
|
||||
- 9 direct unit tests for hot session state rendering covering empty state, ranking, section caps, char budget, boundary conditions, header suppression, wrapper parity, and newline counting.
|
||||
- Two-layer omission model: section caps first (`section_cap`), then char budget (`char_budget`), with clear per-item omission reasons.
|
||||
|
||||
### Changed
|
||||
|
||||
- Hot session state rendering no longer uses blunt `.slice(0, maxRenderedChars)` prompt truncation.
|
||||
- Header-only sections are suppressed: a section is only rendered if at least one entry line fits the char budget.
|
||||
- `renderHotSessionState()` is now a delegation wrapper to `accountHotSessionStateRender().prompt`, preserving backward compatibility.
|
||||
- Fixed `docs/configuration.md` active-file ranking formula: was `count * action_weight * recency_decay` with weights 4/3/2/1, now correctly `ACTION_WEIGHT[action] + count * 3` with weights edit 50, write 45, grep 30, read 20, tie-break by `lastSeen` descending.
|
||||
- Clarified `README.md` system prompt injection order: workspace memory and hot state index positions depend on whether workspace memory state is available.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Hot session state prompt could be truncated mid-line under the old `.slice()` budget enforcement.
|
||||
|
||||
## [1.5.4] - 2026-05-02
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -1,5 +1,43 @@
|
||||
# Release Notes
|
||||
|
||||
## 1.5.5 (2026-05-05)
|
||||
|
||||
### Hot State Rendering Health
|
||||
|
||||
This release replaces blunt prompt truncation with a section-aware greedy renderer that fits whole lines and suppresses empty sections, plus render accounting types for future diagnostics.
|
||||
|
||||
> **Good rendering is selective too.** If a section doesn't fit, omit it — don't cut it in half.
|
||||
|
||||
### What Changed
|
||||
|
||||
- **Whole-line rendering**: the hot session state prompt no longer truncates mid-line with `.slice(0, maxRenderedChars)`. A greedy line accumulator fits complete lines and stops when the next line would exceed the 700-char budget.
|
||||
- **Header-only sections suppressed**: a section heading is only rendered if at least one entry fits alongside it. No more orphaned `active_files:` headers with no content underneath.
|
||||
- **Render accounting**: `accountHotSessionStateRender()` now returns `prompt`, `omitted[]`, and `maxRenderedChars` so future v2 diagnostics can surface which items fell out and why.
|
||||
- **Two-layer omission model**: section caps (`section_cap`) trim per-type overflow first, then the char budget (`char_budget`) trims anything that doesn't fit. Each omitted item carries its reason and section.
|
||||
- **Backward-compatible wrapper**: `renderHotSessionState()` delegates to the accounting function and returns just the prompt string, preserving existing plugin behavior.
|
||||
|
||||
### Docs Fixes
|
||||
|
||||
- **Active-file ranking formula corrected**: `docs/configuration.md` now matches the actual implementation — `ACTION_WEIGHT[action] + count * 3` with weights edit 50, write 45, grep 30, read 20, tie-break by `lastSeen` descending. The old docs claimed `count * action_weight * recency_decay` with weights 4/3/2/1.
|
||||
- **Injection order clarified**: README now explains that workspace memory and hot state system-prompt positions depend on whether workspace memory state is available.
|
||||
|
||||
### Not Included Yet
|
||||
|
||||
- Evidence events for omitted items are deferred to v2, pending a `memory-diag` consumer to avoid unused storage litter.
|
||||
|
||||
### Upgrade Notes
|
||||
|
||||
- No configuration changes required.
|
||||
- Existing workspace memory files remain compatible.
|
||||
- Hot session state rendering behavior is intentionally different (cleaner output, no mid-line cuts), but the same information is presented when it fits within the budget.
|
||||
|
||||
### Validation
|
||||
|
||||
- `npm run typecheck` — `TYPECHECK_PASS`
|
||||
- `npm test` — 356 tests passing, `TEST_PASS`
|
||||
|
||||
---
|
||||
|
||||
## 1.5.4 (2026-05-02)
|
||||
|
||||
### Memory Diagnostics Surface Cleanup
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "opencode-working-memory",
|
||||
"version": "1.5.4",
|
||||
"version": "1.5.5",
|
||||
"description": "Three-layer memory architecture for OpenCode with workspace memory and hot session state",
|
||||
"type": "module",
|
||||
"main": "index.ts",
|
||||
|
||||
Reference in New Issue
Block a user