Promotes validated changes from dev to main. Significant release spanning multiple feature areas and infrastructure improvements across v0.3.0→v0.6.0.
- Make artifacts, thinking blocks, attachments, and voice notes searchable via unified FTS
- Extended
memory_ftswith new columns viamigrateFTSToV2() - Privacy-first design: thinking blocks opt-in only, others enabled by default
- Weighted BM25 scoring per content type
- New CLI flags:
--include-thinking,--no-artifacts,--no-attachments,--no-voice-notes - Applied to both search and recall commands
- Model-aware cost estimation in database
- New
smriti insightsmodule with CLI commands for usage analytics - Track costs per session
--forceflag to re-ingest already-processed sessions- Allows session refresh without deduplication blocking
- New tables:
smriti_artifacts,smriti_thinking,smriti_attachments,smriti_voice_notes - FTS migration to v2 includes sidecar content
- Initialize QMD store tables on database creation
- Fixed Windows
mkdiredge case for current directory
- Fixed PATH issues in CI environments
- QMD submodule initialization improvements
- Graceful fallback to direct bun execution
- Auto-generate CHANGELOG.md from merged PRs
- Added commit lint and semver validation
- Deterministic release notes generation
- Draft release creation in dev workflow
- Auto-release on main branch merges
- Improved workflow and check naming for PR readability
- Skip PR test job for dev-to-main release PRs
- Add
--versioncommand handler - Add missing cline and copilot to default agents seed
- Optimize Bun install with caching for faster CI workflows
- Overhauled documentation structure and improved narrative
- Updated CLAUDE.md with segmented sharing, benchmarks, and project structure
- CI/release workflow architecture documentation
- Release notes for v0.3.0→v0.6.0
This v0.6.0 consolidates multiple point releases:
- v0.3.0→v0.3.2: Windows installer, Copilot ingestion, CI foundations, database initialization fixes
- v0.4.0→v0.4.1: Release workflow improvements, deterministic versioning, auto-release
- v0.5.0→v0.5.1: Share pipeline v2, cost estimation, docs overhaul, bug fixes
- v0.6.0: Sidecar search, ingest force mode, insights module, final infrastructure hardening
- fix: add missing cline and copilot to default agents seed
- fix(install): remove temp HOME isolation breaking PATH dependencies
- perf: add caching and optimize Bun install for faster CI workflows
- feat(team): harden share pipeline — Ollama client, helper extraction, segmented sync
- feat(db): model-aware cost estimation and sidecar cleanup (#48)
- fix(share): harden 3-stage pipeline and add demo script
- docs: reorganize documentation structure and improve narrative (#46)
- docs: overhaul documentation structure and tone (#43)
- chore: clean up project root (#45)
- fix: add missing cline and copilot to default agents seed (#31)
- chore: e2e dev release flow smoke test (#36)
- release: v0.3.2 (dev -> main) (#37)
- release: v0.3.2 (dev -> main) (#35)
- Feature/bench scorecard ci windows fixes (#34)
- New branch (#33)
All notable changes to smriti are documented here. Format: Keep a Changelog · Versioning: SemVer
0.3.2 - 2026-02-27
- Copilot/Cline FK constraint —
smriti ingest copilotandsmriti ingest clinefailed withFOREIGN KEY constraint failedon clean databases becausecopilotandclinewere missing from the default agents seed data. (#30)
0.3.1 - 2026-02-25
- Critical: QMD store table initialization — Fresh database creation now properly
initializes QMD's store tables (
content,documents,content_vectors) and loads the sqlite-vec extension. Fixes "no such table: content_vectors" errors on first run in CI and fresh systems. - Database directory creation — Ensure
~/.cache/qmdparent directory exists before opening database file (fixes Windows mkdir edge case) - Install script PATH resolution — Fixed PATH issues in CI environments
- Claude Code submodule initialization — Proper QMD submodule checkout
- Graceful ingest failure handling — Workflows no longer fail when no sessions exist
--versioncommand handler
The Problem (2026-02-25, 20:32 IST): Fresh CI runners were crashing with cryptic database errors. The PR was green locally but red everywhere else. We needed fast feedback on each fix attempt.
The Solution: A Bash Monitoring Loop
We built a real-time GitHub Actions watcher:
for i in {1..60}; do
echo "[$i/60] Checking status..."
gh run view 22402879433 --log 2>&1 | grep -i "error"
if [[ failure ]]; then
echo "❌ Found error, let's fix it"
break
fi
sleep 10
doneThe Cycle (Compressed Timeline — IST):
- 20:32 — PR merged, Install Test triggered
- 20:40 — Monitor script: "Error: unable to open database file" ❌
- Fix: Add
mkdirSync()to create~/.cache/qmd - Commit & push
- Fix: Add
- 20:42 — New run starts, monitor script watching...
- 20:43 — Monitor script: "Error: no such table: content_vectors" ❌
- Root cause hunt: "What tables exist? Why not content_vectors?"
- Discovery: QMD's
initializeDatabase()was never called - Fix: Add
initializeQmdStore()with all required tables - Commit & push
- 20:50 — Another run, monitor script: "Error: ENOENT...ingest claude" ❌
- Root cause: Workflow has
continue-on-error: falseon optional step - Fix: Change to
continue-on-error: true - Commit & push
- Root cause: Workflow has
- 21:07 — MONITOR SHOWS: ✅ ALL PLATFORMS PASS 🎉
- Ubuntu: ✅ (20 seconds)
- macOS: ✅ (21 seconds)
- Windows: ✅ (82 seconds)
Why This Worked:
- Immediate feedback: No waiting for Slack or email. See the error within 10 seconds of the run starting.
- Pattern recognition: "unable to open database file" → directory issue, while "no such table" → initialization order issue. Two different root causes hidden in one PR.
- Tight loop: Fix locally → test locally → push → watch CI → see result → next iteration. Average cycle time: ~5 minutes per fix.
- No guessing: Read actual error messages from actual CI runners, not trying to reproduce in local dev environment.
The Key Insight:
The monitoring script transformed debugging from "wait for CI to finish, read logs later" to "watch it fail in real-time, understand why immediately, fix in next iteration." By 21:07 IST, three separate bugs were identified and fixed in under 40 minutes.
Lessons Learned:
- Real-time monitoring beats batch feedback — The 10-second polling loop is more valuable than waiting for the run to complete
- GitHub CLI is your friend —
gh run view+--loggives instant access to runner output without leaving the terminal - Multiple platforms expose different bugs — Windows mkdir edge case wasn't obvious until we saw it fail. The monitoring loop caught it immediately.
- The loop is the feature — Not the individual fixes, but the ability to iterate rapidly on live CI feedback.
Final Stats:
- Iterations: 3
- Total time: ~40 minutes
- Bugs fixed: 3 (mkdir, table init, workflow config)
- Platforms now passing: 3/3 ✅
0.3.0 - 2026-02-24
- GitHub Copilot chat ingestion (
smriti ingest copilot) — VS Code on macOS, Linux, Windows - Windows installer (
install.ps1) and uninstaller (uninstall.ps1) - GitHub Actions:
ci.yml,install-test.yml,release.yml smriti upgradecommand support- Cross-platform path resolution fixes for Windows (rules and templates)
0.2.0 - 2026-02-24
- Cline ingestion — parser for Cline CLI tasks (
~/.cline/tasks/) - Structured block extraction — tool calls, file ops, commands, errors, git ops in sidecar tables
- Category tree — 7 top-level / 21 subcategory hierarchy with hierarchical filtering on all commands
- Auto-categorisation — rule-based classifier + optional Ollama LLM fallback
(
smriti categorize) - Manual tagging —
smriti tag <session-id> <category> - Custom categories —
smriti categories add <id> --name <name> smriti context— compact project summary injected into.smriti/CLAUDE.mdsmriti compare— A/B token comparison between sessions (--lastfor two most recent)smriti team— view team contribution breakdown- LLM reflection — Ollama-powered session summaries during
smriti share(skip with--no-reflect) - Sanitisation pipeline — strips XML noise, interrupt markers, narration filler before sharing
- Category metadata survives the
share→syncroundtrip exactly via YAML frontmatter
0.1.0 - 2026-02-10
- Initial release
- Claude Code, Codex CLI, and Cursor IDE ingestion
- Hybrid search: BM25 full-text + vector semantic recall
smriti recallwith optional Ollama synthesis (--synthesize)smriti list,smriti show,smriti status,smriti projects,smriti embed- Team sharing via git:
smriti share/smriti sync - Local SQLite store — no cloud, no accounts
- Content-addressable deduplication (SHA256)
- Auto-save hook for Claude Code sessions
- One-command install (
install.sh) and uninstall (uninstall.sh)