Changelog
All notable changes to GNO will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- Structured query mode inputs across CLI/API/MCP (
term,intent,hyde) with validation and explain metadata. - Temporal retrieval upgrades: query recency intent detection, explicit/relative date range parsing, and recency sorting with frontmatter-date fallback.
- Frontmatter date-field extraction and date-aware browse sorting (
sortField/sortOrder) in web API and UI. - Logseq link compatibility for alias links (
[text]([[Target]])) and block embeds (``).
Changed
- Ingestion now stores richer metadata/date materialization in
documentsfor retrieval-time filtering and sorting. - Web routing now remounts pages on URL changes to keep Browse/Doc views reactive without custom navigation events.
- Documentation/specs refreshed for query modes, temporal filters, API sorting, and retrieval behavior.
Fixed
- Max-bytes enforcement now re-checks file size before read/convert to prevent stale-walker oversize ingestion.
- Link extraction no longer double-counts alias inner wiki syntax in Logseq-style links.
Migrations
- Added migration
006-document-metadata(documents.metadata_json). - Added migration
007-document-date-fields(documents.document_date,documents.date_fields_json) with backfill support.
[0.16.0] - 2026-02-03
Changed
- Improved batch embedding performance -
embedBatch()now processes embeddings concurrently (up to 16 at a time) instead of sequentially, with proper error handling and dispose safety (#64)
[0.15.1] - 2026-02-01
Changed
- Upgrade officeparser 5.2.2 → 6.0.4 (v6 API:
parseOffice().toText()) - Upgrade 23 dependencies including oxlint 1.42.0, oxfmt 0.27.0, node-llama-cpp 3.15.1
Fixed
- Await pager stdin write (caught by new oxlint rule)
[0.15.0] - 2026-02-01
Added
- HTTP backends for remote model servers - Offload embedding, reranking, and generation to remote llama-server instances via OpenAI-compatible APIs (#62) - thanks @Whamp!
- Configure with URI format:
http://host:port/path#modelname - Supports embedding (
/v1/embeddings), reranking (/v1/completions), and generation (/v1/chat/completions) - Enables running GNO on lightweight machines while GPU inference runs on separate servers
- Configure with URI format:
[0.14.3] - 2026-01-14
Changed
- CLI embed verbose errors now include batch titles and root cause
[0.14.2] - 2026-01-14
Added
- Frontmatter metadata grid in doc view and edit preview
Fixed
- Strip frontmatter from markdown preview rendering
- Prevent frontmatter URL overflow in UI
- Stop dev CSS flicker by relying on built stylesheet
[0.14.1] - 2026-01-14
Added
- Verbose embedding errors -
--verboseflag now logs embedding failures to stderrgno index --verboseandgno embed --verboseshow batch failures, count mismatches, and store errors- Helps debug when
gno indexreports errors without details
[0.14.0] - 2026-01-10
Changed
- Walker include fallback - Empty
includenow defaults to supported document types (.md, .txt, .pdf, .docx, .pptx, .xlsx) instead of all files- Prevents “No converter for application/octet-stream” errors when indexing repos with source code
- Extensionless files (Makefile, LICENSE) and dotfiles (.env, .gitignore) are always excluded
- Explicit
includestill overrides the default
Fixed
- Documentation now accurately describes exclude patterns as component-based matching (not globs)
0.13.2 - 2026-01-07
Fixed
- Disable pager in tests and when NO_PAGER/GNO_NO_PAGER is set
Changed
- Clarify release workflow changelog handling
0.13.1 - 2026-01-07
Fixed
- Escape backslashes in markdown table cell output
0.13.0 - 2026-01-06
Added
- Knowledge Graph - Interactive visualization of document connections
gno graph- CLI command with--json,--dot,--mermaidoutput formats--collectionfilter,--similarfor similarity edges,--thresholdcontrol- REST API:
GET /api/graphwith full query parameters - MCP tool:
gno_graphfor AI agents to explore relationships - WebUI:
/graphpage with force-directed layout, zoom/pan, collection filter - Similarity edges shown as golden connections (semantic relatedness)
- Click any node to navigate to that document
- Document Viewer - Enhanced document reading experience
- Outgoing links panel showing wiki and markdown links
- Backlinks panel showing documents linking to current doc
- Related notes sidebar with AI-powered similarity suggestions
- Tooltips for truncated titles in all panels
Fixed
- Wiki link resolution for path-based references
- Right panel title truncation with tooltip on hover
0.12.0 - 2026-01-05
Added
- Note Linking - Wiki-style links, backlinks, and semantic similarity
[[Target]]wiki link syntax with cross-collection support ([[collection:Target]])gno links <docid>- List outgoing links from a documentgno backlinks <docid>- Find documents linking TO a targetgno similar <docid>- Semantic similarity search using embeddings- REST API:
/api/doc/:id/links,/api/doc/:id/backlinks,/api/doc/:id/similar - MCP tools:
gno_links,gno_backlinks,gno_similar - WebUI: OutgoingLinksPanel, BacklinksPanel, RelatedNotesSidebar
- WikiLinkAutocomplete:
[[trigger, fuzzy search, keyboard nav, broken link detection
- Vector Index Maintenance - Fix empty results from
gno similargno vec sync- Fast incremental sync when vec0 driftsgno vec rebuild- Full rebuild of vec0 index- Auto-sync after embed batches when drift detected
- Transaction-wrapped sync for atomicity
Fixed
- vec0 index sync - Vector inserts silently failing no longer leaves index out of sync
- inferDimensions - Filter by model and validate byte alignment
0.11.0 - 2026-01-05
Added
- MCP
gno_embedtool - Generate embeddings for unembedded chunks via MCP- Runs as async background job, poll with
gno_job_status - Offline-only: fails fast if embedding model not cached (no auto-download)
- Returns
{ jobId, status, model }on start
- Runs as async background job, poll with
- MCP
gno_indextool - Full reindex (sync + embed) in single job- Syncs all collections then embeds new chunks
- Optional
collectionparam to limit scope - Optional
gitPullto pull before sync - Returns
{ jobId, collections, phases, status }
- Typed job results - Job status now includes discriminated
typedResultunion{ kind: "sync", value: SyncResult }{ kind: "embed", value: { embedded, errors } }{ kind: "index", value: { sync, embed } }
- Server-side embed scheduler - Auto-embed after sync in web UI
- 30s debounce to batch rapid syncs
- Background embedding with progress in
/api/embed/status - Manual trigger via
POST /api/embed
Fixed
- Embed scheduler notification - Sync/add jobs now properly trigger auto-embed
- Job schemas - Updated
mcp-job-status.schema.jsonandmcp-job-list.schema.jsonfor new job types
0.10.4 - 2026-01-04
Changed
- Skill progressive discovery - Concise SKILL.md overview with links to reference docs (cli-reference.md, mcp-reference.md, examples.md) for reduced context bloat
0.10.3 - 2026-01-04
Fixed
- Markdown title extraction - Files without
# headingnow fall back to filename instead of showing URL-encoded path in UI
0.10.1 - 2026-01-04
Fixed
- Tailwind v4 semantic colors - Add
@themedirective to generatebg-card,bg-muted,text-foregroundetc. utilities (previously silently failing) - Tag autocomplete - Substring matching (typing “fix” now finds “fixtures”), retry on fetch failure, re-filter when tags load
- POST /api/docs URI - Return
gno://URI instead offile://for correct navigation - CodeMirrorEditor - Migrate to React 19 ref-as-prop pattern
0.10.0 - 2026-01-04
Added
- Tag System - Organize and filter documents by tags
- Frontmatter tag extraction during sync (
tags:field in markdown) - Hierarchical tags with
/separator (e.g.,project/web,status/draft) gno tagsCLI commands:list,add,rmfor tag management--tags-any/--tags-allflags on search/vsearch/query/ask for OR/AND filtering- REST API:
GET /api/tagsendpoint, tag filtering params on search endpoints - MCP tools:
gno.list_tagsfor tag discovery,gno.tagfor add/remove - WebUI: TagInput with autocomplete, TagFacets sidebar for filtering, filter chips display
- Frontmatter tag extraction during sync (
0.9.6 - 2026-01-03
Fixed
- SKILL.md frontmatter -
allowed-toolsnow space-delimited per Agent Skills spec
0.9.5 - 2026-01-03
Added
--skillflag for agent discovery -gno --skilloutputs SKILL.md for AI agents to discover capabilities- Follows Agent Skills specification format
- Clean output suitable for piping/parsing
Fixed
- SKILL.md refresh - Updated with ~15 missing CLI commands (serve, models, context, mcp, skill subcommands, doctor, etc.)
0.9.4 - 2026-01-03
Changed
- Default model preset switched to “slim” - Better eval scores (69% vs ~50%), faster inference, smaller download (~1GB)
- Balanced preset still available via
gno models use balanced
- Balanced preset still available via
- Updated model names - slim: Qwen3-1.7B, balanced: Qwen2.5-3B-Instruct, quality: Qwen3-4B-Instruct
Internal
- Evalite v1 evaluation harness (local-only quality gates for releases)
- Fixed
--fullflag ranking order bug in search results
0.9.3 - 2026-01-03
Added
- Shell tab completion - bash/zsh/fish support with commands, flags, and dynamic collection names
gno completion output <shell>- Generate completion scriptgno completion install- Auto-install to shell config
- Automatic pager - Long output piped through
$PAGER(less -R / more)--no-pagerflag to disable- Respects TTY detection and structured output modes
0.9.2 - 2026-01-03
Added
- ThoroughnessSelector on Ask page - Fast/Balanced/Thorough modes with keyboard shortcut (T)
- Skills documentation - New docs/integrations/skills.md with Claude Code, Codex, OpenCode, Amp, VS Code Copilot, and Cursor support
- noExpand/noRerank API params - Added to
/api/askendpoint for search depth control
Changed
- Documentation restructure - Agent integration (Skills, MCP) now prioritized before Web UI in README and website
- Screenshot updates - All webui screenshots updated to .jpg format with new Brandbird styling
Fixed
- react-markdown node prop leak - Prevented
nodeprop from leaking to DOM elements - Table row striping - Increased visibility of alternating row colors in markdown tables
- Em dash removal - Replaced AI-style em dashes with standard punctuation across all docs
0.9.1 - 2026-01-02
Added
- Document Editor Sync Scrolling - Bidirectional scroll sync between CodeMirror editor and markdown preview
- Toggle button (Link/Unlink icons) in toolbar, enabled by default
- Percentage-based position mapping with event-based loop prevention
- Epsilon checks prevent unnecessary updates and jitter
Fixed
- Raycast MCP docs - Fixed deeplinks with correct
mcpServerswrapper format, added clipboard auto-fill JSON
0.9.0 - 2026-01-02
Added
- MCP Write Operations - AI assistants can now manage collections via MCP
gno_capture- Create new markdown documents in collectionsgno_add_collection- Add folders to the index (async with job tracking)gno_sync- Reindex one or all collectionsgno_remove_collection- Remove collection from configgno_job_status- Check async job progressgno_list_jobs- List active and recent jobs
- Write Tool Gating - Disabled by default, enable with
--enable-writeorGNO_MCP_ENABLE_WRITE=1 - Security Protections
- Dangerous root rejection (
/,~,/etc,~/.ssh) with realpath canonicalization - Path traversal prevention (rejects
../escapes) - Sensitive subpath blocking (
.ssh,.gnupg,.git) - Cross-process locking via OS-backed flock/lockf
- Atomic writes (temp + rename pattern)
- Dangerous root rejection (
- Core Modules - Shared utilities for MCP and WebUI
src/core/validation.ts- Path and collection validationsrc/core/file-ops.ts- Atomic file operationssrc/core/file-lock.ts- Advisory file lockingsrc/core/config-mutation.ts- Config change flowsrc/core/job-manager.ts- Async job tracking
- MCP Documentation - Updated docs/MCP.md with all new tools, security model, Raycast write-enabled deeplinks
- Smoke Test Script -
scripts/mcp-write-smoke-test.tsfor MCP validation
0.8.6 - 2026-01-02
Added
- Single-key shortcuts (GitHub/Gmail pattern):
Nnew note,/search,Tcycle depth,?help - HelpButton with scholarly marginalia design (Old Gold accents)
- ShortcutHelpModal redesigned with two-column “Card Catalog” layout
- ThoroughnessSelector for search depth control (Fast/Balanced/Thorough)
- AIModelSelector with “vacuum tube display” aesthetic for Ask page
- Simplified Search page - Thoroughness now controls BM25 vs hybrid modes
Fixed
- Keyboard shortcuts no longer fire when Ctrl/Cmd/Alt held (fixes macOS browser conflicts)
- Shortcuts don’t fire inside dialogs or text inputs
0.8.5 - 2026-01-02
Fixed
- Pre-build Tailwind CSS for npm distribution - runtime plugin fails for global installs
0.8.4 - 2026-01-02
Fixed
bunfig.tomlmissing from npm package - broke Tailwind CSS processing ingno serve
0.8.3 - 2026-01-02
Fixed
- Web UI shortcuts use Ctrl on all platforms (avoids Cmd+N/K browser conflicts on Mac)
- Missing
minimatchdependency brokegno multi-geton npm install - Removed unused
rehype-highlightdependency
0.8.2 - 2026-01-02
Fixed
gno servebroken when installed from npm - moved tailwindcss to dependencies
0.8.1 - 2026-01-02
Added
- AI Answers screenshot in docs (webui-ask-answer.png)
Fixed
- CI publish workflow: removed obsolete
typecheckscript, uselint:check - Screenshot references updated to PNG format
0.8.0 - 2026-01-02
Added
- Document Editor - Split-view markdown editor with live preview
- CodeMirror 6 with syntax highlighting and word wrap
- Auto-save with 2s debounce
- Keyboard shortcuts: ⌘B bold, ⌘I italic, ⌘K link, ⌘S save
- Unsaved changes warning on navigation
- Document CRUD - Full create, read, update, delete via Web UI
PUT /api/docs/:id- Update document contentDELETE /api/docs/:id- Delete document and file- DocView edit/delete buttons with confirmation dialogs
- Collections Management - Add and remove collections from Web UI
- AddCollectionDialog with folder path input
- IndexingProgress component with real-time status
- Re-index action per collection
- Keyboard Shortcuts - Global and editor shortcuts
- ⌘N new note, ⌘K focus search, ⌘/ show help
- ShortcutHelpModal with tactile keyboard key styling
- Platform-aware modifier display (⌘ vs Ctrl)
- Quick Capture - Floating action button for instant note creation
- CaptureModal with title, content, collection fields
- Remembers last used collection
- Shows indexing progress after creation
Changed
- Design Polish - Enhanced visual refinements
- Hero Documents card with gradient and glow
- Card hover lift effects with shadows
- Enhanced glass effect with saturation
- Search input with gradient focus border
- Improved empty states with actionable suggestions
- CaptureButton with pulse glow animation
- Fixed transparent backgrounds in dialogs, dropdowns, selects
- Changed collection remove icon from Trash to FolderMinus
0.7.0 - 2026-01-01
Added
- REST API write operations - Full CRUD for collections and documents
POST /api/collections- Add new collectionDELETE /api/collections/:name- Remove collectionPOST /api/sync- Trigger re-indexPOST /api/docs- Create documentPOST /api/docs/:id/deactivate- Unindex documentGET /api/jobs/:id- Poll job status
- CSRF protection - Origin validation for mutating endpoints
- API token auth -
X-GNO-Tokenheader for non-browser clients
Changed
- Extracted collection CRUD to
src/collection/for API/CLI parity - Config sync with mutex serialization (YAML → DB → memory)
0.6.1 - 2026-01-01
Added
- Auto-download models - Models download automatically on first use (CLI, MCP, Web UI)
- Offline mode -
--offlineflag andHF_HUB_OFFLINE/GNO_OFFLINEenv vars - Cross-process locking - Safe concurrent model downloads with stale lock recovery
0.6.0 - 2026-01-01
Added
- Tiered search modes -
--fast(BM25 only, ~0.7s), default (with reranking, ~2-3s),--thorough(full pipeline with expansion, ~5-8s) - Chunk-level reranking - Reranks best chunk per document (4K) instead of full documents, ~25× faster with same quality
Changed
- Default search now skips LLM query expansion (faster) but keeps reranking (quality)
- Refactored rerank pipeline with extracted helper functions for maintainability
Fixed
- Properly await
store.close()in scripts - Handle
cleanupAndExitpromises to prevent floating promise warnings
0.5.1 - 2026-01-01
Fixed
- Include fts5-snowball binaries in npm package
0.5.0 - 2026-01-01
Added
- Document-level BM25 - Full documents indexed (not chunks), finds terms across sections
- Snowball stemmer - FTS5 with multilingual stemming (20+ languages); “running” matches “run”
- Contextual chunking - Chunks embedded with document title prefix for context awareness
- Strong signal detection - Skip expensive LLM expansion when BM25 has confident match
- Tiered top-rank bonus - +0.05 for #1, +0.02 for #2-3 in RRF fusion
- Full-document reranking - Qwen3-Reranker scores complete documents (32K context)
- Full-document answers - Answer generation receives complete document content
Changed
- Original query now gets 2× weight in RRF fusion (prevents dilution by variants)
- Switched to Qwen3-Reranker-0.6B (Apache 2.0 license, 32K context)
0.4.0 - 2026-01-01
Added
- Web UI - Local web dashboard via
gno serve- Dashboard with index stats and collection overview
- Search page with BM25/hybrid search modes
- Ask page with AI-powered answers and citations
- Document viewer with syntax highlighting
- Browse collections and documents
- Model preset selector with hot-reload
- Model download with progress polling
- REST API - Full HTTP API for programmatic access
/api/search- BM25 keyword search/api/query- Hybrid search (BM25 + vector)/api/ask- AI answers with citations/api/docs,/api/doc- Document listing and retrieval/api/presets- Model preset management/api/models/pull- Model download with progress
- Convenience scripts -
bun run serveandbun run serve:dev
Changed
- Extracted answer generation to shared
src/pipeline/answer.tsmodule - API and CLI now share identical pipeline code
0.3.5 - 2025-12-31
Changed
- README: Comprehensive rewrite with full MCP install commands, feature tables, doc links
- README: Added footer attribution
Fixed
- License badge spacing
0.3.4 - 2025-12-31
Fixed
- CI: Use Node.js 24 for npm OIDC trusted publishing support
0.3.3 - 2025-12-31
Fixed
- CI: Use npm for tarball install test (bun has issues with local tarballs)
0.3.2 - 2025-12-31
Fixed
- CI: Add TTY workarounds to publish workflow
0.3.1 - 2025-12-31
Fixed
- CI: Serial test execution on Windows fixes exit code issue
- CI: TTY workaround for macOS/Ubuntu test output
- CI: Use native Bun ecosystem for Dependabot
Changed
- Use npm trusted publishing (OIDC) instead of tokens
0.3.0 - 2025-12-31
Added
- 10 MCP installation targets (Claude Desktop, Claude Code, Cursor, Zed, Windsurf, etc.)
- LibreChat YAML config support
- Incremental sync (only new/modified files re-indexed)
0.2.1 - 2025-12-31
Added
- MCP Install CLI - One-command setup for AI assistant integration
gno mcp install- Configure gno as MCP server in Claude Desktop, Claude Code, or Codexgno mcp uninstall- Remove gno from MCP configurationgno mcp status- Check installation status across all targets
- Cross-platform support (macOS, Windows, Linux)
- Atomic config writes with automatic backup
- User and project scope support for Claude Code and Codex
0.2.0 - 2025-12-30
Added
- MCP server with stdio transport for AI assistant integration
- Tools:
gno_search,gno_vsearch,gno_query,gno_get,gno_multi_get,gno_status - Resources:
gno://{collection}/{path}document access - Plan for
gno mcp installauto-configuration command - Website: punchy tagline, 8 features in bento grid, theme-aware terminal glow
0.1.0 - 2025-12-30
Added
Core Features
- Hybrid Search Pipeline - BM25 + vector retrieval with RRF fusion
- HyDE Query Expansion - Hypothetical Document Embeddings for better semantic matching
- Cross-encoder Reranking - Two-stage retrieval with reranking for precision
- Multi-language Support - Automatic language detection with BCP-47 codes
CLI Commands
gno init- Initialize a knowledge base with a collectiongno collection add/list/remove/rename- Manage document collectionsgno update- Sync files from disk (no embedding)gno index- Full index with optional embeddinggno embed- Generate vector embeddingsgno search- BM25 keyword searchgno vsearch- Vector semantic searchgno query- Hybrid search with expansion and rerankinggno ask- AI-powered Q&A with citationsgno get- Retrieve single document by referencegno multi-get- Batch document retrievalgno ls- List indexed documentsgno context add/list/rm- Manage retrieval context hintsgno models list/use/pull/clear/path- Model managementgno status- Index status and healthgno doctor- Diagnostics and troubleshootinggno cleanup- Remove orphaned datagno skill install/uninstall/show/paths- Claude Code skill management
Document Processing
- Native Converters - Markdown, plain text, JSON, YAML, TOML, CSV
- External Converters - PDF (pdftotext), Office docs (pandoc), images (tesseract OCR)
- Smart Chunking - Semantic-aware document splitting
- File Walker - Configurable patterns, gitignore support, extension filters
Storage & Indexing
- SQLite Backend - Single-file database with FTS5 full-text search
- sqlite-vec - Cross-platform vector storage and similarity search
- Migrations - Schema versioning with automatic upgrades
- Mirror Cache - Converted document caching for fast re-indexing
AI/ML Integration
- Local Embeddings - GGUF models via node-llama-cpp (no API keys)
- Model Presets - slim (~1GB), balanced (~2GB), quality (~2.5GB)
- Reranker Models - Cross-encoder scoring for result quality
- LLM Abstraction - Pluggable providers (Anthropic, OpenAI, Ollama)
Developer Experience
- Output Formats - JSON, CSV, Markdown, XML, files protocol
- Verbose Mode - Detailed logging with
--verbose - Exit Codes - 0 (success), 1 (validation), 2 (runtime)
- Contract Tests - Schema validation for all outputs
Documentation
- Jekyll Website - Comprehensive docs at gno.sh
- VHS Terminal Demos - Animated CLI demonstrations
- Search Pipeline Guide - Deep dive into HyDE, RRF, reranking
- API Specifications - CLI spec, MCP spec, output schemas
Infrastructure
- Bun Runtime - Fast startup, native TypeScript
- Biome Linting - Zero-config via Ultracite preset
- GitHub Actions CI - Lint, typecheck, test matrix
- Beads Issue Tracking - Git-native dependency-aware tracking
Version History
| Version | Date | Highlights |
|---|---|---|
| 0.12.0 | 2026-01-05 | Note linking, backlinks, related notes |
| 0.11.0 | 2026-01-05 | MCP embed/index tools, server embed sched |
| 0.10.0 | 2026-01-04 | Tag system with filtering |
| 0.9.0 | 2026-01-02 | MCP write operations |
| 0.8.0 | 2026-01-02 | Document editor, collections management |
| 0.4.0 | 2026-01-01 | Web UI and REST API |
| 0.1.0 | 2025-12-30 | Initial release with full search pipeline |