Releases: zero8dotdev/smriti
v0.6.0
[0.6.0] - 2026-03-14
🎯 Release Overview
Promotes validated changes from dev to main. Significant release spanning multiple feature areas and infrastructure improvements across v0.3.0→v0.6.0.
✨ Major Features
Sidecar Content Search
- 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
Cost Estimation & Analytics
- Model-aware cost estimation in database
- New
smriti insightsmodule with CLI commands for usage analytics - Track costs per session
Ingest Force Mode
--forceflag to re-ingest already-processed sessions- Allows session refresh without deduplication blocking
🔧 Infrastructure & Fixes
Database
- 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
Install & Path Resolution
- Fixed PATH issues in CI environments
- QMD submodule initialization improvements
- Graceful fallback to direct bun execution
CI/Release Pipeline
- 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
Core Features
- Add
--versioncommand handler - Add missing cline and copilot to default agents seed
Performance
- Optimize Bun install with caching for faster CI workflows
📚 Documentation
- 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
📊 Release Progression
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
[0.5.1] - 2026-03-09
Fixed
- fix: add missing cline and copilot to default agents seed
- fix(install): remove temp HOME isolation breaking PATH dependencies
Performance
- perf: add caching and optimize Bun install for faster CI workflows
v0.5.1
Changed
- fix: add missing cline and copilot to default agents seed (476eb75)
- fix(install): remove temp HOME isolation breaking PATH dependencies (4abdda5)
- perf: add caching and optimize Bun install for faster CI workflows (797221a)
Maintenance
- release: v0.5.1 — bug fixes for copilot FK, install path, CI caching (d525d44)
v0.4.1
Changed
- fix(ci): use import.meta.dir for cross-platform path resolution (2de0504)
- fix(release): align dev-main PR version with latest stable tag (1005dd0)
- fix(ci): allow legacy non-conventional history for dev draft metadata (58979fb)
- fix(ci): setup bun before dev draft release metadata step (835df63)
- fix(ci): bench scorecard ci windows fixes (#34) (223795b)
Maintenance
- ci: skip PR test job for dev to main release PRs (c5d091f)
- ci: improve workflow and check naming for PR readability (4976ab6)
- ci: scope commit lint to pull request commit ranges only (17270e6)
- ci: add commit lint, semver metadata, and deterministic release notes (8710322)
- ci: create dev draft release after successful dev test matrix (c736bd8)
- ci: auto-template and title for dev to main PRs (9256e03)
- chore: new branch (#33) (c55bd5f)
- chore: add e2e dev release flow test marker (#36) (f2f0868)
- docs: finalize workflow policy docs without backlog sections (7c44439)
- docs: add CI/release workflow architecture and north-star plan (16d8e57)
- docs: update CHANGELOG.md for v0.4.0 [skip ci] (0a55dac)
v0.4.0
v0.3.2
v0.3.1
Fixed
- 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
Added
--versioncommand handler
📖 The Monitoring Loop: A CI Debugging Story
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 ✅
v0.3.0
Added
- GitHub Copilot chat ingestion (
smriti ingest copilot) — VS Code on macOS, Linux, Windows - Windows installer (
install.ps1) and uninstaller (uninstall.ps1) - smriti upgrade command
- GitHub Actions: ci, install-test, release
- Native windows support fixes for path resolution
Stable
Fix: Load sqlite-vec extension in database connection Enable vector search and embeddings support by loading the sqlite-vec extension when creating database connections in Smriti. This was blocking smriti embed command from working. Changes: - Import sqlite-vec package in src/db.ts - Load extension in getDb() function via sqliteVec.load(_db) - Enables vectors_vec virtual table support - Unlocks hybrid search and semantic recall capabilities Related: QMD Architecture Deep Dive learning session stored in Smriti Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>