What's Changed
- fix(release): publish step finds drafts via listReleases by @0xsongsu in #66
- docs: refresh README + install.sh to v0.1.0 by @0xsongsu in #67
- build: prep workspace for crates.io publish by @0xsongsu in #68
- fix(adapter-codex): turn-by-turn JSONL parsing + mtime → created_at (#69) by @0xsongsu in #70
- fix(publish-crates): idempotent steps + retry-on-rate-limit by @0xsongsu in #71
- fix(publish-crates): also match cargo's 'already exists' error by @0xsongsu in #72
- fix(publish-crates): --no-verify for generic-mcp (dev-dep cycle) by @0xsongsu in #73
- fix(publish-crates): strip generic-mcp dev-deps before publish by @0xsongsu in #74
- fix(publish-crates): use cargo exit code as success truth, not grep by @0xsongsu in #75
- docs(readme): polish for v0.1.0 — crates.io install, 30-sec hero, fix stale notes by @0xsongsu in #76
- docs+chore: rewrite README, drop ghast adapter, add agent plugin marketplace by @0xsongsu in #78
- docs(zh): restore 搜魂术 alias and add provenance gloss by @0xsongsu in #79
- perf(import): batch upsert + single SQLite tx per 64 records (-14% wall on 1800-record import) by @0xsongsu in #80
- perf(embed+search): batch embedding worker drain + batch packer get_records (Round 63) by @0xsongsu in #81
- feat(observability): expose import_errors via status + doctor (Round 64) by @0xsongsu in #82
- feat(mcp): find_related accepts source/instance/kind/scope filter args (Round 65) by @0xsongsu in #83
- perf(bench): criterion baseline for vector + fulltext search (Round 66) by @0xsongsu in #84
- perf(store): sqlite-vec foundation — per-dim vec0 + filter pushdown (Round 67 PR-67a) by @0xsongsu in #85
- perf(search): pack() uses RecordHeader projection — -73% pack latency on long-content records (Round 68) by @0xsongsu in #86
- feat(observability): MCP request metrics — p50/p95/p99 + count/errors via doctor (Round 69) by @0xsongsu in #87
- feat(eval): MRR@k + nDCG@k quality harness with threshold gating (Round 70) by @0xsongsu in #88
- feat(observability): per-stage search tracing — search_memories(trace=true) (Round 71) by @0xsongsu in #89
- feat(store+cli):
anamnesis forget <record_id>— first value-stack move (Round 72 PR-72a) by @0xsongsu in #90 - feat(mcp): admin-gated forget_record tool — completes R72 across both surfaces (Round 73 PR-72b) by @0xsongsu in #91
- feat(store+cli+mcp): list_forgotten audit view — redaction-by-default (Round 74 PR-74) by @0xsongsu in #92
- feat(store+cli+mcp): unforget completes the forget lifecycle (Round 75 PR-75) by @0xsongsu in #93
- feat(cli):
anamnesis search --traceports R71 stage breakdown to the CLI (Round 76) by @0xsongsu in #94 - feat(store+cli+mcp): exact-duplicate report via
dedupe(Round 77 PR-77) by @0xsongsu in #95 - feat(store+cli+mcp): user-tag overlay survives re-import (Round 78 PR-78) by @0xsongsu in #96
- feat(store+cli+mcp):
--user-tagsearch filter, 3-path SQL pushdown (Round 79 PR-78b) by @0xsongsu in #97 - feat(store+cli+mcp): dedupe --source/--instance filter (Round 80) by @0xsongsu in #98
- feat(store+cli+mcp): tag_record gains atomic --replace semantic (Round 81) by @0xsongsu in #99
- feat(store+cli+mcp): list_sources exposes tagged_record_count (Round 82) by @0xsongsu in #100
- feat(store+cli+mcp): forget --dry-run preview before destructive cascade (Round 83) by @0xsongsu in #101
- feat(core+cli+mcp): audit tail / audit_tail surfaces audit.log (Round 84) by @0xsongsu in #102
- feat(mcp-server): get_record { include_lineage } surfaces provenance chain (Round 85) by @0xsongsu in #103
- feat(store+cli+mcp): source show / source_show per-source detail view (Round 86) by @0xsongsu in #104
- feat(search+cli+mcp): search --explain / search_memories({ explain: true }) (Round 87) by @0xsongsu in #105
- feat(cli): source list --json for parity with source show --json (Round 88) by @0xsongsu in #106
- feat(mcp-server): find_related explain — compact score breakdown in prompt (Round 89) by @0xsongsu in #107
- feat(store+cli+mcp): list_forgotten --include-counts tombstone aggregation (Round 90) by @0xsongsu in #108
- feat(cli): audit tail --csv (Round 91) by @0xsongsu in #109
- feat(mcp-server): audit_tail csv parity with CLI (Round 92) by @0xsongsu in #110
- feat(mcp-server): find_related --user-tag filter (Round 93) by @0xsongsu in #111
- feat(store+mcp): summarize_my_preferences user_tag filter (Round 94) by @0xsongsu in #112
- feat(store+cli+mcp): unforget --dry-run / unforget_record dry_run (Round 95) by @0xsongsu in #113
- feat(cli+mcp): tag_record stats + filtered list_sources (Round 96) by @0xsongsu in #114
- feat(store+cli): dedupe --include-counts filter-scoped aggregate (Round 97) by @0xsongsu in #115
- feat(mcp-server): dedupe include_counts parity with CLI (Round 98) by @0xsongsu in #116
- feat(cli): source list --source / --instance filter (Round 99) by @0xsongsu in #117
- feat(mcp-server): find_related summary line (Round 100) by @0xsongsu in #118
- feat(mcp-server): summarize_my_preferences summary line (Round 101) by @0xsongsu in #119
- feat(audit): audit tail --action one,two multi-value OR filter (Round 102) by @0xsongsu in #120
- feat(cli+mcp): list_sources source multi-value OR filter (Round 103) by @0xsongsu in #121
- feat(store+cli+mcp): dedupe source multi-value OR filter (Round 104) by @0xsongsu in #122
- feat(mcp): list_forgotten csv (Round 105) by @0xsongsu in #123
- fix(cli): 8 MB main-thread stack + restore list-forgotten --csv (Round 106) by @0xsongsu in #124
- feat(cli+mcp): dedupe --csv redacted output (Round 107) by @0xsongsu in #125
- feat(cli+mcp): dedupe non-CSV format marker (Round 108) by @0xsongsu in #126
- feat(mcp): list_forgotten + audit_tail JSON format markers (Round 109) by @0xsongsu in #127
- feat(cli+mcp): doctor source multi-value OR filter (Round 110) by @0xsongsu in #128
- feat(mcp): prompts/list top-level summary line (Round 111) by @0xsongsu in #129
- feat(mcp): resources/list top-level summary line (Round 112) by @0xsongsu in #130
- feat(mcp): tools/list top-level summary line (Round 113) by @0xsongsu in #131
- feat(cli+mcp): doctor instance multi-value OR filter (Round 114) by @0xsongsu in #132
- R115: support instance OR filters by @0xsongsu in #133
- feat(mcp): audit_tail JSON top-level summary line (Round 116) by @0xsongsu in #134
- feat(mcp): JSON summary parity on list_sources/list_forgotten/dedupe (Round 117) by @0xsongsu in #135
- feat(mcp): source_show top-level redacted summary (Round 118) by @0xsongsu in #136
- feat(mcp): search_memories top-level redacted summary (Round 119) by @0xsongsu in #137
- feat(mcp): get_record top-level redacted summary (Round 120) by @0xsongsu in #138
- feat(mcp): trace_provenance top-level redacted summary (Round 121) by @0xsongsu in #139
- feat(mcp): prompts/get response-level redacted summary (Round 122) by @0xsongsu in #140
- feat(cli): status --json top-level summary + source_summary rollup (Round 123) by @0xsongsu in #141
- feat(cli): source list --json top-level summary (Round 124) by @0xsongsu in #142
- feat(cli): dedupe --json top-level redacted summary (Round 125) by @0xsongsu in #143
- feat(cli): list-forgotten --json top-level redacted summary (Round 126) by @0xsongsu in #144
- feat(cli): audit tail --json top-level redacted summary (Round 127) by @0xsongsu in #145
- feat(cli): source show --json top-level redacted summary (Round 128) by @0xsongsu in #146
- feat(cli): search --json top-level redacted summary (Round 129) by @0xsongsu in #147
- feat(cli): doctor --json-summary additive envelope (Round 130) by @0xsongsu in #148
- feat(store): cross-source near-duplicate detection (Round 131) by @0xsongsu in #149
- feat(cli,mcp): dedupe --mode near + dedupe { mode: "near" } (Round 132 PR-78ba) by @0xsongsu in #150
- feat(store,cli,mcp): forget --cascade-derived (Round 133 PR-78bb) by @0xsongsu in #151
- feat(store,cli,mcp): unforget --cascade-derived (Round 134 PR-78bc) by @0xsongsu in #152
- feat(store,cli,mcp): list cross-adapter native_id content conflicts (Round 135 PR-78bd) by @0xsongsu in #153
- feat(search,cli,mcp): adaptive candidate-pool policy (Round 136 PR-78be) by @0xsongsu in #154
- feat(mcp): discover_adapters tool for programmatic capability introspection (Round 137 PR-78bf) by @0xsongsu in #155
- feat(cli): export --format mem0-sqlite closes the round-trip loop (Round 138 PR-78bg) by @0xsongsu in #156
- feat(cli): export --format letta-sqlite extends round-trip to Letta (Round 139 PR-78bh) by @0xsongsu in #157
- feat(export,mcp): export_memories MCP admin tool + shared anamnesis-export crate (Round 140 PR-78bi) by @0xsongsu in #158
- feat(cli): dedupe --mode near --merge-preview operator-decision tooling (Round 141 PR-78bj) by @0xsongsu in #159
- chore: trim verbose doc/comment blocks (R142) by @0xsongsu in #160
- feat(mcp): dedupe near merge_preview parity with CLI (R143) by @0xsongsu in #161
- feat(cli,mcp): accept_conflict_variant resolves native_id conflicts (R144) by @0xsongsu in #162
- feat(export): memos-dir round-trip export (R145) by @0xsongsu in #163
- feat(cli,mcp): reconcile_sources cross-adapter drift diagnostic (R146) by @0xsongsu in #164
- feat(cli,mcp): reconcile_export_bucket closes the drift loop (R147) by @0xsongsu in #165
- feat(cli,mcp): import_source --reconcile-export post-import drift hook (R148) by @0xsongsu in #166
- feat(mcp): discover_adapters surfaces round_trip_export_format (R149) by @0xsongsu in #167
- feat(cli,mcp,export): reconcile-export derives round-trip format from lagging adapter (R150) by @0xsongsu in #168
- feat(cli): import --reconcile-export derives format from against adapter (R151) by @0xsongsu in #169
- feat(cli,mcp): reconcile surfaces lagging adapter's round-trip format (R152) by @0xsongsu in #170
- feat(export,memori): memori-sqlite round-trip export target (R153) by @0xsongsu in #171
- feat(export,tdai): tdai-dir round-trip export target (R154) by @0xsongsu in #172
- feat(export,claude-code): claude-code-dir round-trip export target (R155) by @0xsongsu in #173
- fix(letta,memos): round-trip identity reconciles as both (R156) by @0xsongsu in #174
- chore(ci): R150 hardening — concurrency, audit, deny, doctests, doc (-D warnings) by @0xsongsu in #175
- feat(cli): anamnesis watch — install-and-auto-sync daemon (R151, PR 1 of N) by @0xsongsu in #176
- feat(cli): watch auto-start at login — install/uninstall/status (R152) by @0xsongsu in #177
- feat(cli): drain embeddings under watch + fix model-cache path (R153) by @0xsongsu in #178
- feat(cli): watch heartbeat + runtime status (R154) by @0xsongsu in #179
- feat(cli): interval-poll generic-mcp under watch + advance watermark (R155) by @0xsongsu in #180
- feat(mcp): watch_status tool + shared core heartbeat type (R156) by @0xsongsu in #181
- docs(watch): document auto-sync in README + fix stale clap help (R157) by @0xsongsu in #182
- refactor(cli): extract shared build_fs_adapter factory (R158) by @0xsongsu in #183
- refactor(cli): migrate doctor health probe onto build_fs_adapter (R159) by @0xsongsu in #184
- feat(store): natural-language FTS query planning — strict AND + relaxed OR recall (R160) by @0xsongsu in #185
- fix(search,ci): accept keyword mode alias and restore audit permissions by @0xsongsu in #186
- release: 0.2.0 by @0xsongsu in #187
Full Changelog: v0.1.0...v0.2.0