v1.0.0-beta.8
Changelog
v1.0.0-beta.8 — OpenClaw 2026.6.x + Hermes MCP Compatibility
Release Date: 2026-06-25
🔧 Compatibility
- OpenClaw 2026.6.x support — Declared
contracts.toolsin plugin manifest for new tool policy - Tool policy abstraction — Added
scripts/lib/compat.shto centralize version-specific OpenClaw configuration systemPromptOverridedeprecation handling —setup-skill-prompt.shnow skips on OpenClaw >= 2026.6.x- Hermes MCP bridge — New
src/mcp/http-bridge.tsexposes Zettelkasten tools via Streamable HTTP for Hermes Agent
🧪 Testing
- 1724 tests passing, 72 test files, 0 failures
- Replaced hardcoded
/test/...paths with temp directories viasrc/testing/test-fs.ts - Added local compatibility matrix runner:
scripts/run-compat-matrix.sh - Added Hermes mock-LLM E2E test and MiniMax real-LLM E2E test
🛠️ Fixes
- Audit consistency edge case when
totalLinks === 0 - Glow ranking empty-cache fallback
- DB ↔ Markdown file system sync
- Hermes config path (
/opt/data/config.yaml)
v1.0.0-beta.7 — Security Hardening + Code Quality + Test Expansion
Release Date: 2026-05-22
🛡️ Security Fixes
- SQL Injection Whitelist — All raw SQL queries now use strict column-name whitelists to prevent injection via user-controlled
orderBy/sortByparameters - Path Traversal Protection — File system operations validate and sanitize paths to block directory traversal attacks
- Database Connection Safety — Added explicit
db.close()calls in all repository and service layers to prevent connection leaks - Promise Rejection Handling — Unhandled Promise rejections in async flows are now properly caught and logged
🧹 Code Quality
- Magic Numbers Eliminated — Extracted 20+ magic numbers into named constants (
src/core/constants.ts) for maintainability - Console Cleanup — Removed all stray
console.log/console.errorcalls; replaced with structured logging or removed entirely - Type Safety Enhancement — Strengthened TypeScript strictness: added explicit return types, fixed
anyusages, tightened null checks - Dead Code Removal — Deleted unused imports and obsolete helper functions across 12 files
- Utility Reuse — Consolidated duplicated validation logic into shared utility functions (
src/core/utils.ts) - Promise.allSettled Adoption — Replaced fragile
Promise.all+ manual error handling withPromise.allSettledfor bulk operations
🧪 Test Coverage
- 862 tests passing, 36 test files, 0 failures (was 689)
- 173 new test cases added across 10 new test files:
src/service/phase6/__tests__/audit-service.test.tssrc/service/phase6/__tests__/moc-service.test.tssrc/service/phase6/__tests__/serendipity-service.test.tssrc/mcp/__tests__/phase6-tools.test.ts
- Security regression tests for SQL whitelist and path sanitization
- Boundary case coverage for new Phase 6 MCP tools
📦 Architecture
- Phase 6 services stabilized:
audit-service,moc-service,serendipity-service - MCP tool registry updated with Phase 6 endpoints
- Plugin manifest (
openclaw.plugin.json) aligned with latest tool surface
v1.0.0-beta.6 — Auto-Review + Distillation Quality Guard + Memory Format Fix
Release Date: 2026-05-21
✨ New Features
-
Nightly Auto-Review — Plugin cron now automatically reviews Inbox notes at 2:00 AM
- High-quality notes (confidence ≥ 0.7 + content length ≥ 200): auto-approved →
zettels - Low-quality notes (quality < 0.4): auto-flagged → stays in
inboxwith review record - Medium-quality notes: kept in
inboxfor human review ReviewService.autoReviewInbox()processes up to 100 pending notes per run
- High-quality notes (confidence ≥ 0.7 + content length ≥ 200): auto-approved →
-
Distillation Quality Guard — 6-layer content validation prevents placeholder notes from entering the database
- Empty title rejection
- Minimum 50-character content requirement
- Placeholder title detection (9 patterns:
Memory entry X,Untitled,Note X, etc.) - Metadata-only content detection
- Title-content identical check
- Meaningful word count validation (≥ 5 words)
-
Markdown Memory Format Support —
MemoryParsernow supports.mdmemory logs in addition to.json- Auto-detects file extension and selects appropriate parser
- Falls back from
.jsonto.mdwhen JSON file is missing - Parses Markdown sections (
## Entry) with Type/Time/Content fields
🔧 Bug Fixes
- Distillation Empty Content: LLM-generated summaries with only metadata (e.g.,
> 来源:Professional > 时间:... > 权重:X) are now rejected at creation time instead of polluting the database - Inbox Accumulation: 120 unreviewed notes accumulated because
autoReview()existed but was never called by the plugin. Fixed by adding auto-review step to nightly cron - PR#1 Merged: Accepted kriptoburak's placeholder URL fix (
YOUR_USERNAME→cx2002302-lang) after TweetClaw promotional content was removed
🧹 Data Cleanup
- Cleaned 33 empty/placeholder notes (source=
distilled, content only metadata) from production database - Post-cleanup state: 129 notes | 0 inbox backlog | 17/17 health checks passing
🧪 Test Coverage
- 689 tests passing, 26 test files, 0 failures
- Auto-review verified with 3-tier test: high-quality→approve, medium→flag/skip, low→flag
v1.0.0-beta.5 — Phase 5 Evolution System + Concurrency Safety + Documentation Overhaul
Release Date: 2026-05-16
✨ New Features
-
Phase 5 Evolution System — 10 new MCP tools + 5 new CLI commands
- Review system:
zk_get_review_panel,zk_submit_review,zk_get_review_stats - Feedback system:
zk_submit_feedback,zk_get_feedback_stats,zk_analyze_feedback_trends - Prompt evolution:
zk_get_active_prompt,zk_get_prompt_stats - Sample curation:
zk_get_curation_stats,zk_export_samples - CLI:
zk review-stats,zk review-pending,zk feedback-stats,zk prompt-stats,zk curation-stats
- Review system:
-
Database Schema — 4 new tables for evolution tracking
zettel_prompt_versions— Prompt version history with quality scoringzettel_sample_curations— CEQRC sample quality assessment (6 dimensions)zettel_system_tunings— System parameter tuning historyzettel_export_batches— Sample export batch tracking
-
Documentation Overhaul — Complete documentation system rebuilt
- Full
SKILL.md(6551 bytes) +PROMPT.md(7737 bytes) with use cases and examples details/folder with compact versions for progressive disclosuredocs/folder with 9 feature documents (README + 01-09)
- Full
-
Concurrency Safety — Verified under rapid-fire parallel operations
- 20 notes + 20 feedback + 10 links (bidirectional = 18) + 20 reviews
- Zero duplicate IDs, zero orphaned records, zero data inconsistency
🔧 Bug Fixes
- ZK-BUG-003:
deploy.shalsoAllow cleanup incorrectly removed"zettelkasten"plugin ID, causing MCP tools to become invisible to agents. Fixed by addingor x == 'zettelkasten'to the filter condition. - Schema Alignment: 3 Phase 5 tables (
zettel_prompt_versions,zettel_sample_curations,zettel_system_tunings) had DDL fields mismatched with Repository code. Fixed DDL to match runtime expectations. - Old Schema Migration: Auto-detect and recreate tables with stale column definitions on
zk init.
🧪 Test Coverage
- 689 tests passing, 26 test files, 0 failures
- Agent E2E: 7/7 rounds passed (boundary cases, composition, Phase 5, error recovery, intelligence, Chinese search, concurrency)
- Production deployment verified: 143 notes, 70 links, 543 feedback, 292 reviews
- All 28 MCP tools callable via OpenClaw Agent
v1.0.0-beta.4 — Test Suite + Input Validation + Performance Benchmark
Release Date: 2026-05-12
✨ New Features
-
Performance Benchmark Suite (
scripts/benchmark.mjs)- Tested at 1K / 5K / 10K notes scale
- All 7 performance thresholds passed at 10K scale
- FTS search 1.9ms, single note read 0.08ms, glow recalc 1,013ms
- Full report:
plans/PERFORMANCE-BENCHMARK.md
-
E2E Tool Chain Test (
scripts/e2e-tool-test.mjs)- End-to-end validation of all 16 MCP tool flows
- Covers create, search, link, glow, path, heatmap, archive, review, feedback
🛡️ Input Validation
- NoteService: Reject empty title/content, confidence must be 0-1 (create + update)
- LinkService: Reject self-links, validate link type against 11 allowed values
- HeatmapService: Clamp
glowMinto [0,1], normalize negativelimitto 0
🔧 Bug Fixes
- ZK-BUG-001:
tools.alsoAllow放入 Skill ID(如"zettelkasten-brain")导致 OpenClaw Gateway 工具策略验证失败,引发崩溃-重启循环。修复:deploy.sh自动清理 alsoAllow 中的非zk_前缀条目;AGENTS.md明确文档说明。 - ZK-BUG-002:
SKILL.md缺少 YAML frontmatter,可能影响 Skill 加载。修复:添加标准 frontmatter(name, description, version)。 - archive-service.ts:
zombie.folderfield did not exist inGlowMetrics, causing already-archived notes to be re-processed. Fixed by queryingzettel_notes.folderdirectly. - feedback-repository.ts:
sourcefield could beundefined, causing SQLite binding error. Fixed withsource ?? null. - feedback-repository.ts:
ratingreturnednullfrom DB but type expectedundefined. Fixed withrow.rating ?? undefined. - feedback-service.test.ts: Time race condition in
analyzeTrendstest —nowcreated beforesubmitFeedback, causing feedbackcreated_atto be later than query end time. Fixed by usingtomorrowas end boundary.
🧪 Test Coverage
- 689 tests passing, 26 test files, 0 failures
- New test files:
feedback-repository.test.ts(25),review-repository.test.ts(20),archive-service.test.ts(14) - Heatmap boundary tests: empty DB, empty filters, negative limit, glowMin overflow
- Input validation tests: empty strings, out-of-range confidence, self-links, invalid types
v1.0.0-beta.3 — Wave 3: Knowledge Heatmap & Network Graph
Release Date: 2026-05-11
✨ New Features
-
Knowledge Heatmap (
zk_heatmap)- Real-time knowledge base activity analysis
- Folder distribution, glow score distribution, connection density ranking
- Isolated notes detection, recent activity tracking
- CLI:
openclaw zk heatmap --days 30
-
Network Graph Visualization (
zk_network_graph)- Export knowledge graph as JSON with nodes and edges
- Support folder filter, glow score threshold, node limit
- Degree calculation and weighted edge rendering
- CLI:
openclaw zk graph-export --limit 200 --glow-min 0.4
-
18 MCP Tools (9 read-only + 9 read-write)
- Read-only:
zk_search_notes,zk_get_note,zk_get_backlinks,zk_find_path,zk_glow_ranking,zk_find_zombies,zk_search_archived,zk_get_archive_log,zk_knowledge_heatmap,zk_network_graph - Read-write:
zk_create_note,zk_update_note,zk_archive_note,zk_unarchive_note,zk_run_ceqrc_workflow,zk_distill_memory,zk_get_inbox_queue,zk_review_note
- Read-only:
🔧 Bug Fixes
- Commander.js
parseInt/parseFloatNaN bug: Option handler signature(value, previous)causedparseInt("10", 200)→NaN→ SQLitedatatype mismatch. Fixed withsafeParseInt/safeParseFloatwrappers andNumber.isFinite()validation.
🧪 Test Coverage
- Agent E2E: 34/34 passed (CLI + MCP handlers + plugin config)
- Unit tests: 112/112 passed (heatmap-service, note-service)
v1.0.0-beta.2 — Wave 2: Auto-Archive & Knowledge Health
Release Date: 2026-05-10
✨ New Features
- Auto-Archive Scheduling: Cron-based zombie note detection and archiving
- Archive History: Full log of archive/unarchive operations with timestamps
- Timestamp Preservation: Archived notes retain original creation/update times
- Archive Service:
archive-service.tswith dry-run support
v1.0.0-beta.1 — Wave 1: Knowledge Glow & Path Search
Release Date: 2026-05-09
✨ New Features
- Knowledge Glow Score: CEQRC engine with confidence, entropy, quality, recency, connections
- Path Finder: Bidirectional BFS for shortest knowledge path between notes
- Archive Mechanism: Manual archive/unarchive with folder migration
- FTS Search: Full-text search with SQLite FTS5