mirror of
https://github.com/sdwolf4103/opencode-working-memory.git
synced 2026-07-17 12:56:42 +02:00
113 lines
4.7 KiB
Markdown
113 lines
4.7 KiB
Markdown
# Changelog
|
|
|
|
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.3.2] - 2026-04-27
|
|
|
|
### Fixed
|
|
|
|
- Compatibility CI now installs dependencies with `npm install` so it works in this no-lockfile repository.
|
|
- Compatibility CI now runs on Node 24, matching the test command's `--experimental-strip-types` requirement.
|
|
|
|
## [1.3.1] - 2026-04-27
|
|
|
|
### Added
|
|
|
|
- Pending journal retention: max 50 entries, 30-day TTL, automatic pruning on save.
|
|
- Plugin capability test to catch missing OpenCode hooks before release.
|
|
- CI workflow for weekly OpenCode plugin API compatibility testing.
|
|
- Indirect prompt-injection filtering for workspace memory candidates.
|
|
- Expanded credential redaction for common API key, token, secret, credential, auth, and private-key labels.
|
|
|
|
### Fixed
|
|
|
|
- Pending memory journal entries are now bounded and pruned instead of growing indefinitely.
|
|
- Adversarial memory candidates that try to override system instructions are rejected before storage.
|
|
- Broader credential-like labels are redacted from workspace memory text.
|
|
|
|
### Changed
|
|
|
|
- Memory dedupe is now repo-agnostic: project/reference entries use exact canonical text plus generic URL/path identity, while decision/feedback entries no longer use repository-specific topic heuristics.
|
|
- OpenCode plugin compatibility is documented and declared as `>=1.2.0 <2.0.0`.
|
|
- README limitations now concisely document compatibility, secret handling, semantic-memory scope, plugin ordering, and multi-process write boundaries.
|
|
|
|
### Known Limitations
|
|
|
|
- Compatibility is tested against OpenCode plugin API `>=1.2.0 <2.0.0`.
|
|
- Credential redaction is best-effort; do not store secrets.
|
|
- This is working memory, not semantic search.
|
|
- Other prompt or compaction plugins may conflict depending on plugin order.
|
|
- Multi-process writes to the same workspace are not fully serialized.
|
|
|
|
## [1.3.0] - 2026-04-27
|
|
|
|
### Added
|
|
|
|
- P0 consolidation accounting for workspace memory promotion.
|
|
- Accounting-aware deduplication (`dedupeLongTermEntriesWithAccounting`).
|
|
- Accounting-aware normalization (`normalizeWorkspaceMemoryWithAccounting`).
|
|
- Promotion classification: promoted, absorbed, superseded, rejected.
|
|
- Remove absorbed/superseded keys from rejected set to avoid duplicate rejection tracking.
|
|
- Memory quality evaluation fixtures covering accepted durable facts and rejected noisy facts.
|
|
- Sharper compaction memory extraction prompt with concrete good/bad memory examples.
|
|
|
|
### Fixed
|
|
|
|
- Promotion accounting now clears only pending memories that survive workspace normalization/cap limits.
|
|
- `session.deleted` now uses shared session ID extraction, matching `session.compacted` behavior.
|
|
- Absorbed duplicate pending memories are accounted for instead of retrying forever.
|
|
- Active vs superseded boundary when promoting pending memories (superseded entries no longer block promotion of same-key active memories).
|
|
- Removed unused `rejected_duplicate_lower_quality` type.
|
|
|
|
### Changed
|
|
|
|
- Deferred pending journal safety cap implementation (see TODO in `src/pending-journal.ts`).
|
|
- Clarified superseded accounting semantics: P0 emits events only, does not archive newly superseded records.
|
|
- README structure was streamlined around the automatic memory flow and ongoing memory-quality work.
|
|
- Architecture docs now describe `Memory candidates:` as the primary extraction format and XML candidate blocks as legacy.
|
|
- Superpowers implementation plans are no longer tracked in git.
|
|
|
|
## [1.2.3] - 2026-04-26
|
|
|
|
### Added
|
|
|
|
- Frozen workspace memory snapshot in `system[1]` for better OpenCode prompt-cache stability.
|
|
- Ephemeral hot session state and pending memories in later system messages.
|
|
- Durable pending journal so explicit memories survive until promotion.
|
|
|
|
### Fixed
|
|
|
|
- Explicit memories no longer mutate the frozen workspace snapshot mid-session.
|
|
- Pending memories are promoted at safe cache-epoch boundaries.
|
|
|
|
## [1.2.0] - 2026-04-25
|
|
|
|
### Added
|
|
|
|
- Memory V2 three-layer architecture.
|
|
- Workspace memory for durable cross-session decisions, preferences, project facts, and references.
|
|
- Hot session state for active files, open errors, and recent context.
|
|
- Hook-based memory extraction during OpenCode compaction.
|
|
|
|
### Changed
|
|
|
|
- Removed manual memory tools in favor of automatic prompt injection.
|
|
- Moved storage to `~/.local/share/opencode-working-memory/`.
|
|
|
|
## [1.1.0] - 2026-04-24
|
|
|
|
### Changed
|
|
|
|
- Improved pre-V2 memory documentation and installation flow.
|
|
|
|
## [1.0.0] - 2026-04-23
|
|
|
|
### Added
|
|
|
|
- Initial release with three-layer memory architecture.
|
|
- Initial OpenCode memory integration.
|
|
- Basic memory extraction and prompt injection.
|