All notable changes to this project will be documented in this file.
Format based on Keep a Changelog. This project adheres to Semantic Versioning.
Routing transparency. The Access-Log already recorded which pages a query pulled; now it records why each was picked. Loading becomes auditable — not just what loaded, but the index description or grep term that selected it. Inspired by a reader pointing out that knowing when and why context loads is half the problem.
- Routing reason in the Access-Log — every
querylog line now carries amatched: "<reason>"field: the matched hub### Indexrouting description / #tag on index routing, or the grep term on the L3 fallback (<date> -- [[page]] -- query -- matched: "..."). Shows not just WHICH page loaded but WHY it was selected for the question. statuscache profile now breaks down the most frequentmatched:reasons per hot page, surfacing mis-routing: a page always hit via the same grep term instead of its index line signals a weak or missing routing description in its hub### Index.
openspec/specs/query.md— REQ-450 line format extended; new REQ-450b defines thematched:reason semantics (<= 60 chars, quoted, parsing-safe).
- Backward compatible: legacy Access-Log lines without
matched:stay valid (the field is additive). prune/status parse date +[[page]]from fixed positions (split on--), so the suffix never affects LRU aggregation.
1.2.0 - 2026-06-07
Two retrieval-scaling mechanisms, the CPU-cache analogy carried through to the index and eviction layers. As a wiki grows past a few dozen pages, grep-over-everything gets imprecise; these keep retrieval sharp.
- Hub-Index-Routing — two-stage
query. Each hub page carries an### Indexof routing lines ([[page]] -- description #tags); query reads the cheap index first, picks the 3 best pages by description, then reads only those. Full-text grep becomes the L3 fallback.ingestmaintains the routing line for every page (the wiki's page table). - LRU-Demote — new
/wiki prune [--months N]command.queryappends every full-page read to an append-onlyWiki/Reference/Access-Log;pruneevicts pages with no access in N months (default 6) from the live index into the hub### Archive, markedarchived::. Eviction never deletes, renames, or moves a file — incoming[[links]]stay valid and the page is still greppable (L3). Re-promotion is automatic on re-hit. openspec/specs/prune.md— new spec (EARS requirements + BDD scenarios)- Lint rules 10 (Index Drift) and 11 (Archived-in-Live-Index), both auto-fixable;
lint --fixnow backfills missing routing lines into hub indexes statusnow reports a hot/cold cache profile (most-queried pages, demote-ready cold pages)- Access-Log page templates for Logseq and Obsidian;
setup.shscaffolds the Access-Log page
- Hub page templates (Logseq + Obsidian) now include
### Indexand### Archivesections docs/schema-reference.md— Hub example updated; new "Hub-Index-Routing & LRU-Demote" section- Specs updated:
query.md(Phase 0 routing + Phase 1b access logging),ingest.md(routing-line maintenance),lint.md(11 rules),schema.md(hub index,archived::marker, Access-Log page)
- Backward compatible. Existing wikis keep working; run
/wiki lint --fixonce to backfill routing lines into hubs that predate this release. archived::is the canonical demote marker and is valid on any page type.status:: archivedis set additionally only where the type's status enum allows it (Entity).
1.1.1 - 2026-04-18
- README badge row — license, release, stars, top language, last commit
docs/faq.md— 10 questions first-time users actually ask (paid plan, L1/L2 rationale, tool choice, credential safety, wiki growth thresholds)docs/troubleshooting.md— setup, wiki-app integration, Claude Code integration, and wiki-growth issues with symptom → cause → fix format- README "Documentation" section linking all five docs pages
- Documentation-only release. No code, schema, or command changes.
- Focus: adoption friction. The v1.1.0 feedback pointed at missing onboarding docs, not missing features.
1.1.0 - 2026-04-10
- 7 OpenSpec specifications with 162 EARS requirements and 66 BDD scenarios
ingest.md— 5-phase source processing pipelinequery.md— Search, synthesis, write-back, source attributionlint.md— 9 health checks with auto-fix rulesschema.md— Page types, property validation, format rulesconfig.md— Configuration loading and error handlingsetup.md— Interactive installer specificationl1-l2-routing.md— L1/L2 boundary decision logic
- GitHub issue templates (bug report, feature request)
- Pull request template with dual-tool testing checklist
- SECURITY.md with responsible disclosure process
.gitignorefor editor and OS files- CHANGELOG.md
setup.sh: Add prerequisite checks for python3 and gitsetup.sh: Addset -eo pipefailfor stricter error handlingsetup.sh: Validate namespace names (letters, numbers, hyphens only)setup.sh: Skip existing wiki pages instead of silently overwritingsetup.sh: Prompt before overwriting existingllm-wiki.yml
1.0.0 - 2026-04-07
First stable release.
/wiki ingest— 5-phase source processing pipeline (URL, file, text)/wiki query— Search, synthesis, and source attribution/wiki lint— 9 automated health checks with--fixauto-repair/wiki status— Wiki metrics and health dashboardsetup.sh— Interactive installer for Logseq and Obsidian- L1/L2 dual-layer cache architecture (CPU cache metaphor)
- Templates for both Logseq (outliner) and Obsidian (flat markdown)
- Schema with 5 page types: Entity, Project, Knowledge, Feedback, Hub
config.example.ymlfor reference configuration
- Credential leak detection (lint rule 6) scans for tokens, passwords, secrets
- L1/L2 security boundary: credentials stay in L1 (git-excluded), wiki is git-tracked