337 lines
16 KiB
Markdown
337 lines
16 KiB
Markdown
|
|
# Changelog
|
||
|
|
|
||
|
|
All notable changes to the Knowledge Base project will be documented in this file.
|
||
|
|
|
||
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||
|
|
|
||
|
|
## [Unreleased]
|
||
|
|
|
||
|
|
### Changed
|
||
|
|
|
||
|
|
#### BREAKING: MCP Protocol Rebranding
|
||
|
|
- **All MCP URIs, tool names, and prompts updated to KOGRAL namespace**
|
||
|
|
- **URI Scheme**: `kb://` → `kogral://`
|
||
|
|
- `kb://project/notes` → `kogral://project/notes`
|
||
|
|
- `kb://project/decisions` → `kogral://project/decisions`
|
||
|
|
- `kb://project/guidelines` → `kogral://project/guidelines`
|
||
|
|
- `kb://project/patterns` → `kogral://project/patterns`
|
||
|
|
- `kb://shared/guidelines` → `kogral://shared/guidelines`
|
||
|
|
- `kb://shared/patterns` → `kogral://shared/patterns`
|
||
|
|
- **Tool Names**: `kb/*` → `kogral/*`
|
||
|
|
- `kb/search` → `kogral/search`
|
||
|
|
- `kb/add_note` → `kogral/add_note`
|
||
|
|
- `kb/add_decision` → `kogral/add_decision`
|
||
|
|
- `kb/link` → `kogral/link`
|
||
|
|
- `kb/get_guidelines` → `kogral/get_guidelines`
|
||
|
|
- `kb/list_graphs` → `kogral/list_graphs`
|
||
|
|
- `kb/export` → `kogral/export`
|
||
|
|
- `kb/find_blocks` → `kogral/find_blocks`
|
||
|
|
- `kb/find_todos` → `kogral/find_todos`
|
||
|
|
- `kb/find_cards` → `kogral/find_cards`
|
||
|
|
- **Prompt Names**: `kb/*` → `kogral/*`
|
||
|
|
- `kb/summarize_project` → `kogral/summarize_project`
|
||
|
|
- `kb/find_related` → `kogral/find_related`
|
||
|
|
- **Server Name**: `kb-mcp` → `kogral-mcp`
|
||
|
|
- **Migration Required**: Users must update `~/.config/claude/config.json`:
|
||
|
|
|
||
|
|
```diff
|
||
|
|
{
|
||
|
|
"mcpServers": {
|
||
|
|
- "kb-mcp": {
|
||
|
|
- "command": "/path/to/kb-mcp",
|
||
|
|
+ "kogral-mcp": {
|
||
|
|
+ "command": "/path/to/kogral-mcp",
|
||
|
|
- "env": { "KB_DIR": "/path/to/.kb" }
|
||
|
|
+ "env": { "KOGRAL_DIR": "/path/to/.kogral" }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
- **Rationale**: Complete branding consistency across all interfaces. Pre-release status (v0.x) allows breaking changes without user pain.
|
||
|
|
- **Files updated**:
|
||
|
|
- `crates/kb-mcp/src/resources.rs`: All URI definitions and parsing
|
||
|
|
- `crates/kb-mcp/src/tools.rs`: All tool name definitions and dispatch
|
||
|
|
- `crates/kb-mcp/src/prompts.rs`: All prompt name definitions and dispatch
|
||
|
|
- `crates/kb-mcp/src/main.rs`: Server name registration
|
||
|
|
- `crates/kb-mcp/tests/integration_test.rs`: Test assertions updated
|
||
|
|
- `docs/apps/mcp-quickguide.md`: All examples and references
|
||
|
|
- `docs/kogral/core-concepts.md`: MCP protocol documentation
|
||
|
|
- `docs/api/mcp-tools.md`: API reference documentation
|
||
|
|
- `README.md`: MCP integration examples
|
||
|
|
|
||
|
|
#### Branding
|
||
|
|
- **Rebranded to KOGRAL** (**KO**wledge **GRA**phs, **L**ocal-first)
|
||
|
|
- Updated project name from "Knowledge Base" to "KOGRAL" across all documentation
|
||
|
|
- New tagline: "Git-native knowledge graphs for developer teams"
|
||
|
|
- Updated description emphasizing structured knowledge management for developers
|
||
|
|
- Documentation folder renamed: `docs/kb/` → `docs/kogral/`
|
||
|
|
- Documentation files renamed:
|
||
|
|
- `docs/kogral/what-is-kb.md` → `what-is-kogral.md`
|
||
|
|
- `docs/kogral/why-kb.md` → `why-kogral.md`
|
||
|
|
- Technical names maintained for compatibility: `kb-core`, `kb-cli`, `kb-mcp` (crate names), `kb` (CLI binary)
|
||
|
|
- Hybrid naming strategy: KOGRAL as primary brand, `kb.vapora.dev` as future alias
|
||
|
|
- Files updated:
|
||
|
|
- `README.md`: Title, description, and branding
|
||
|
|
- `Cargo.toml` (workspace): Homepage, description, repository metadata
|
||
|
|
- `crates/kb-core/Cargo.toml`: Package description
|
||
|
|
- `crates/kb-cli/Cargo.toml`: Package description
|
||
|
|
- `crates/kb-mcp/Cargo.toml`: Package description
|
||
|
|
- `crates/kb-core/src/lib.rs`: Module documentation comments
|
||
|
|
- `crates/kb-core/src/models.rs`: Type documentation comments
|
||
|
|
- `crates/kb-cli/src/main.rs`: CLI description and messages
|
||
|
|
- `docs/kogral/what-is-kogral.md`: Full KOGRAL branding with acronym explanation
|
||
|
|
- `docs/kogral/core-concepts.md`: All "KB" references replaced with "KOGRAL"
|
||
|
|
- `docs/README.md`: Title and section headers
|
||
|
|
- `docs/book.toml`: mdBook title and description
|
||
|
|
- `docs/SUMMARY.md`: Navigation titles
|
||
|
|
- `.claude/CLAUDE.md`: Project description and documentation links
|
||
|
|
|
||
|
|
#### BREAKING: Filesystem Paths and Environment Variables
|
||
|
|
- **Directory structure renamed from `.kb/` to `.kogral/`**
|
||
|
|
- Project directory: `.kb/` → `.kogral/`
|
||
|
|
- Shared directory: `.kb-shared/` → `.kogral-shared/`
|
||
|
|
- Configuration paths updated throughout codebase
|
||
|
|
- All storage paths use `.kogral/` prefix
|
||
|
|
- **Environment variable renamed from `KB_DIR` to `KOGRAL_DIR`**
|
||
|
|
- MCP server configuration requires `KOGRAL_DIR` environment variable
|
||
|
|
- CLI tools respect `KOGRAL_DIR` for custom directory location
|
||
|
|
- **Migration Required**:
|
||
|
|
1. Rename existing directory: `mv .kb .kogral`
|
||
|
|
2. Update environment variables: `KB_DIR` → `KOGRAL_DIR`
|
||
|
|
3. Update config files referencing `.kb/` paths
|
||
|
|
- **Rationale**: Complete branding consistency across all filesystem operations. Pre-release status allows breaking changes.
|
||
|
|
- **Files updated**:
|
||
|
|
- All Rust source files in `crates/`: Path constants and variable names
|
||
|
|
- `crates/kb-core/src/config/loader.rs`: Configuration path discovery
|
||
|
|
- `crates/kb-core/src/storage/filesystem.rs`: Storage paths
|
||
|
|
- `crates/kb-cli/src/main.rs`: CLI messages and examples
|
||
|
|
- `crates/kb-mcp/src/main.rs`: Environment variable handling
|
||
|
|
- All documentation in `docs/`: Examples and instructions
|
||
|
|
- `README.md`: Setup and usage examples
|
||
|
|
- `.claude/CLAUDE.md`: Project configuration paths
|
||
|
|
|
||
|
|
### Added
|
||
|
|
|
||
|
|
#### Core Infrastructure
|
||
|
|
- Initial project structure with Cargo workspace (kb-core, kb-cli, kb-mcp)
|
||
|
|
- Core graph models (Node, Edge, Graph) with 6 node types and 6 relationship types
|
||
|
|
- Config-driven architecture using Nickel schemas (NCL → JSON → Rust)
|
||
|
|
- Markdown parser with Logseq compatibility (YAML frontmatter + wikilinks)
|
||
|
|
- Storage backends: Filesystem (default), In-Memory, SurrealDB (feature-gated)
|
||
|
|
- Embedding integration via rig-core (OpenAI, Claude, Ollama) + fastembed local fallback
|
||
|
|
- Tera template engine for document generation and export
|
||
|
|
|
||
|
|
#### Logseq Blocks Support (ADR-004)
|
||
|
|
- **Block Data Structures** (`crates/kb-core/src/models.rs`):
|
||
|
|
- `TaskStatus` enum: TODO, DOING, DONE, LATER, NOW, WAITING, CANCELLED
|
||
|
|
- `BlockProperties` struct: tags, task status, custom properties, block/page references
|
||
|
|
- `Block` struct: hierarchical content blocks with properties and children
|
||
|
|
- `Node.blocks` field: Optional cached block structure (lazy parsing)
|
||
|
|
- **BlockParser** (`crates/kb-core/src/block_parser.rs`):
|
||
|
|
- Bidirectional parser: Markdown outliner ↔ Block structures
|
||
|
|
- Supports: task markers, #tags, custom properties (key:: value), ((block-refs)), [[page-refs]]
|
||
|
|
- Hierarchical parsing based on indentation
|
||
|
|
- Round-trip fidelity for Logseq import/export
|
||
|
|
- 15 comprehensive tests covering parsing, serialization, and round-trips
|
||
|
|
- **Block Query API**:
|
||
|
|
- `Node::get_blocks()`: Lazy parsing from content with caching
|
||
|
|
- `Node::find_blocks_by_tag()`: Find blocks with specific tag
|
||
|
|
- `Node::find_all_todos()`: Find all task blocks
|
||
|
|
- `Node::find_blocks_by_status()`: Find blocks by task status
|
||
|
|
- `Node::find_blocks_by_property()`: Find blocks with custom property
|
||
|
|
- `Graph::find_blocks_by_tag()`: Search blocks across all nodes
|
||
|
|
- `Graph::find_all_todos()`: Find TODOs across entire graph
|
||
|
|
- 6 integration tests for Node and Graph block queries
|
||
|
|
- **SurrealDB Schema** (`schemas/surrealdb/blocks.surql`):
|
||
|
|
- `block` table with indexes on node_id, block_id, tags, status, parent_id
|
||
|
|
- Full-text search index on content
|
||
|
|
- Support for hierarchical queries and tag-based filtering
|
||
|
|
- Migration queries and example usage patterns
|
||
|
|
- **Logseq Import/Export** (`crates/kb-core/src/import/logseq.rs`, `crates/kb-core/src/export/logseq.rs`):
|
||
|
|
- Round-trip import: Logseq markdown → KB Node with blocks
|
||
|
|
- Property parsing: key:: value format, tags ([[tag]] and #tag), references, timestamps
|
||
|
|
- Export to Logseq page/journal formats with block serialization
|
||
|
|
- 12 comprehensive tests covering import/export round-trips
|
||
|
|
- **MCP Block Tools** (`crates/kb-mcp/src/tools.rs`):
|
||
|
|
- `kb/find_blocks`: Search blocks by tag, task status, or custom property
|
||
|
|
- `kb/find_todos`: Find all TODO blocks across KB
|
||
|
|
- `kb/find_cards`: Find all flashcard blocks (#card tag)
|
||
|
|
- Fixed borrowing issues with two-phase data collection pattern
|
||
|
|
- **Configuration Schema** (`schemas/kb-config.ncl`, `config/*.ncl`):
|
||
|
|
- Added `BlocksConfig` schema with 4 settings:
|
||
|
|
- `enabled`: Enable/disable Logseq blocks parsing (default: false, opt-in)
|
||
|
|
- `parse_on_import`: Auto-parse blocks from Logseq imports (default: true)
|
||
|
|
- `serialize_on_export`: Serialize blocks to outliner format on export (default: true)
|
||
|
|
- `enable_mcp_tools`: Enable block-related MCP tools (default: true)
|
||
|
|
- Updated all config files (defaults.ncl, production.ncl, minimal.ncl)
|
||
|
|
- Validated: All configs export to JSON successfully
|
||
|
|
- **Documentation**:
|
||
|
|
- Complete technical design: `docs/architecture/logseq-blocks-design.md`
|
||
|
|
- Architectural Decision Record: `docs/architecture/adrs/004-logseq-blocks-support.md`
|
||
|
|
- 6-phase implementation plan documented
|
||
|
|
- Use cases and examples for flashcards, task tracking, and block references
|
||
|
|
|
||
|
|
#### Applications
|
||
|
|
- CLI tool (kb-cli) with 13 commands (init, add, search, link, sync, serve, etc.)
|
||
|
|
- MCP server (kb-mcp) with 10 tools (7 core + 3 block tools), 6 resources, 2 prompts for Claude Code integration
|
||
|
|
- NuShell maintenance scripts (6 scripts: sync, backup, reindex, import/export Logseq, stats)
|
||
|
|
|
||
|
|
#### Configuration System (Nickel)
|
||
|
|
- Complete Nickel configuration schema following typedialog/provisioning pattern
|
||
|
|
- Schema contracts (`schemas/kb/contracts.ncl`) - Type definitions with validation
|
||
|
|
- Default values (`schemas/kb/defaults.ncl`) - Base configuration values
|
||
|
|
- Composition helpers (`schemas/kb/helpers.ncl`) - merge_with_override, compose_config
|
||
|
|
- Mode overlays (`schemas/kb/modes/{dev,prod,test}.ncl`) - Environment-specific tuning
|
||
|
|
- Runtime configurations (`.kb-config/core/kb.ncl`, `.kb-config/platform/*.ncl`)
|
||
|
|
- Double validation pattern: Nickel contracts + serde deserialization
|
||
|
|
- Config export to JSON for Rust consumption (`.kb-config/targets/*.json`)
|
||
|
|
|
||
|
|
#### Templates
|
||
|
|
- Tera templates for 6 document types (note, decision, guideline, pattern, journal, execution)
|
||
|
|
- 4 export format templates (Logseq page/journal, summary, JSON)
|
||
|
|
- Customizable template system with frontmatter generation
|
||
|
|
|
||
|
|
#### Documentation (mdBook)
|
||
|
|
- Complete mdBook documentation structure with SUMMARY.md navigation
|
||
|
|
- 4 SVG diagrams for visual guides:
|
||
|
|
- `architecture-overview.svg` - Complete system architecture
|
||
|
|
- `core-concepts.svg` - Node types and relationships
|
||
|
|
- `config-composition.svg` - Configuration flow (Schema → Defaults → Mode → User → JSON)
|
||
|
|
- `storage-architecture.svg` - Hybrid storage strategy
|
||
|
|
- 11 major documentation sections (kb/, guides/, architecture/, setup/, config/, storage/, ai/, templates/, cli/, apps/, api/, contributing/)
|
||
|
|
- ADR documentation (ADR-001: Nickel vs TOML, ADR-002: FastEmbed + AI providers, ADR-003: Hybrid storage)
|
||
|
|
- Use cases documentation (8 real-world scenarios)
|
||
|
|
- MCP quick guide (5-minute setup for Claude Code)
|
||
|
|
- Config-driven architecture deep dive
|
||
|
|
- Storage architecture deep dive with code examples
|
||
|
|
- docs/README.md - Comprehensive guide for using and building documentation
|
||
|
|
|
||
|
|
#### Build System
|
||
|
|
- Modular justfile system (7 modules: build, test, dev, ci, nickel, docs, scripts)
|
||
|
|
- Nickel validation and export recipes (`just nickel::validate-all`, `just nickel::export-all`)
|
||
|
|
- mdBook documentation recipes (`just docs::serve`, `just docs::build`, `just docs::test`)
|
||
|
|
- CI/CD pipeline recipes (format, lint, test, build validation)
|
||
|
|
- NuShell script validation and execution recipes
|
||
|
|
|
||
|
|
#### Project Documentation
|
||
|
|
- Enhanced README.md with complete documentation links and visual diagram references
|
||
|
|
- Directory structure documentation with detailed explanations
|
||
|
|
- Quick start guide with MCP integration
|
||
|
|
- Integration guides (Vapora, Logseq, Claude Code)
|
||
|
|
- CHANGELOG.md following Keep a Changelog format
|
||
|
|
|
||
|
|
### Changed
|
||
|
|
- Updated README.md with comprehensive documentation links (mdBook, guides, architecture, config)
|
||
|
|
- Enhanced directory structure documentation with .kb-config/ and schemas/kb/ details
|
||
|
|
- Improved documentation section with visual diagrams and just recipe references
|
||
|
|
- **Blocks Feature Documentation**:
|
||
|
|
- README.md: Added Logseq blocks section with examples, features, and configuration
|
||
|
|
- README.md: Updated architecture diagram to include BlockParser
|
||
|
|
- README.md: Added 3 new MCP tools to integration section
|
||
|
|
- docs/kb/core-concepts.md: Added comprehensive "Logseq Content Blocks" section with examples, use cases, and queries
|
||
|
|
- docs/api/mcp-tools.md: Added "Block Tools" section documenting kb/find_blocks, kb/find_todos, kb/find_cards
|
||
|
|
- docs/api/mcp-tools.md: Updated overview from 7 to 10 tools
|
||
|
|
|
||
|
|
### Infrastructure
|
||
|
|
- Cargo workspace with 3 crates
|
||
|
|
- Feature flags: `filesystem` (default), `surrealdb`, `fastembed`, `full`
|
||
|
|
- 90 tests across workspace (81 kb-core + 5 kb-mcp + 4 kb-cli)
|
||
|
|
- 15 tests for block parser
|
||
|
|
- 12 tests for Logseq import/export
|
||
|
|
- 6 tests for block queries
|
||
|
|
- mdBook integration for documentation (serves on [http://localhost:3000](http://localhost:3000))
|
||
|
|
- Nickel → JSON → Rust configuration pipeline
|
||
|
|
- Justfile modules: build, test, dev, ci, nickel, docs, scripts
|
||
|
|
- CI/CD pipeline recipes (format, lint, test, build validation)
|
||
|
|
- mdBook documentation structure with SUMMARY.md
|
||
|
|
- NuShell script validation recipes
|
||
|
|
|
||
|
|
## [1.0.0] - TBD
|
||
|
|
|
||
|
|
Initial release (planned).
|
||
|
|
|
||
|
|
### Planned Features
|
||
|
|
- Full FilesystemStorage implementation with file watching
|
||
|
|
- Complete Query Engine with semantic search
|
||
|
|
- Guideline inheritance resolution (shared → local override priority)
|
||
|
|
- SurrealDB schema and complete backend implementation
|
||
|
|
- Sync mechanism: bidirectional Filesystem ↔ SurrealDB
|
||
|
|
- FastEmbed local embeddings integration
|
||
|
|
- API provider integrations (OpenAI, Claude, Ollama) for embeddings
|
||
|
|
- Cross-graph queries (project + shared knowledge bases)
|
||
|
|
- Template customization system
|
||
|
|
- Export to multiple formats (Logseq, JSON, Markdown)
|
||
|
|
- Import from Logseq graphs
|
||
|
|
- MCP protocol compliance testing
|
||
|
|
- Production-ready CLI tool
|
||
|
|
- Performance benchmarks
|
||
|
|
- Security audit
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Version History
|
||
|
|
|
||
|
|
### Version Numbering
|
||
|
|
|
||
|
|
This project follows semantic versioning (MAJOR.MINOR.PATCH):
|
||
|
|
|
||
|
|
- **MAJOR**: Incompatible API changes
|
||
|
|
- **MINOR**: New features (backward compatible)
|
||
|
|
- **PATCH**: Bug fixes (backward compatible)
|
||
|
|
|
||
|
|
### Release Schedule
|
||
|
|
|
||
|
|
- **Alpha** (0.x.x): API unstable, features incomplete
|
||
|
|
- **Beta** (1.0.0-beta.x): API stable, features complete, testing phase
|
||
|
|
- **Stable** (1.0.0+): Production ready
|
||
|
|
|
||
|
|
### Feature Roadmap
|
||
|
|
|
||
|
|
#### Phase 1: Foundation ✅ (Completed)
|
||
|
|
- [x] Core models and graph structure
|
||
|
|
- [x] Nickel configuration system
|
||
|
|
- [x] Markdown parser with Logseq compatibility
|
||
|
|
- [x] Storage trait abstraction
|
||
|
|
- [x] CLI structure with clap
|
||
|
|
- [x] MCP server protocol implementation
|
||
|
|
- [x] NuShell maintenance scripts
|
||
|
|
- [x] Documentation structure
|
||
|
|
|
||
|
|
#### Phase 2: Integration (In Progress)
|
||
|
|
- [ ] Full FilesystemStorage with file watching
|
||
|
|
- [ ] SurrealDB backend implementation
|
||
|
|
- [ ] Query engine with text + semantic search
|
||
|
|
- [ ] Embedding provider integrations
|
||
|
|
- [ ] Guideline inheritance resolution
|
||
|
|
- [ ] Sync mechanism implementation
|
||
|
|
|
||
|
|
#### Phase 3: Polish (Planned)
|
||
|
|
- [ ] Performance optimization
|
||
|
|
- [ ] Comprehensive error handling
|
||
|
|
- [ ] Production testing
|
||
|
|
- [ ] Security audit
|
||
|
|
- [ ] API stabilization
|
||
|
|
- [ ] Release preparation
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Migration Guides
|
||
|
|
|
||
|
|
### Upgrading from 0.x to 1.0
|
||
|
|
|
||
|
|
(To be documented when 1.0 is released)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Contributing
|
||
|
|
|
||
|
|
See [CONTRIBUTING.md](docs/contributing/development.md) for development setup and guidelines.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## License
|
||
|
|
|
||
|
|
(To be determined)
|