docs: update changelog for v0.12.0-library-desk-enhancements
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -12,6 +12,68 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Authentik SSO Milestones 4-5: Protect remaining services (deferred)
|
||||
- Disaster recovery and offsite backup strategy
|
||||
|
||||
## [0.12.0-library-desk-enhancements] - 2025-12-10
|
||||
|
||||
### Added
|
||||
- **Wiki Change Detection** - Real-time page change notifications via PostgreSQL LISTEN/NOTIFY
|
||||
- WikiChangeListener service connects to Wiki.js database
|
||||
- Automatic re-ingestion when pages are created/updated/deleted
|
||||
- Debouncing and loop prevention for automated updates
|
||||
- Webhook router as HTTP fallback mechanism
|
||||
- Setup scripts and documentation for PostgreSQL triggers
|
||||
|
||||
- **Taxonomy-Aware Classification** - LLM uses existing wiki structure when classifying content
|
||||
- `get_taxonomy_structure()` extracts category/subcategory paths from wiki
|
||||
- Consolidation prompts include existing paths to prefer over creating new ones
|
||||
- Prevents duplicate category creation (e.g., reuses `reference/political-entities/` instead of creating `reference/military-alliances/`)
|
||||
|
||||
- **WikiJS Client Methods**
|
||||
- `list_all_pages()` - Fetch all pages with path prefix filter (replaces stale search index)
|
||||
- `get_taxonomy_structure()` - Extract category hierarchy for a user namespace
|
||||
|
||||
- **Test Coverage** - New test files for recent features
|
||||
- `test_graph_service.py` - Document node tags, entity-stub skipping
|
||||
- `test_ingestion.py` - list_all_pages usage, batch ingestion
|
||||
- `test_wiki_change_listener.py` - PostgreSQL notification handling
|
||||
- Updated `test_consolidation.py` with taxonomy and ingestion_service tests
|
||||
- Updated `test_integration.py` with list_all_pages and taxonomy tests
|
||||
|
||||
### Fixed
|
||||
- **Ingestion Pipeline** - Pages created during consolidation now properly indexed
|
||||
- `ingestion_service` was not passed to ConsolidationService in router
|
||||
- Added ingestion call to `_update_page_with_facts()` (was only in create path)
|
||||
|
||||
- **Bulk Re-index** - `/ingest/all` endpoint now works reliably
|
||||
- Changed from `search_pages("")` (stale index) to `list_all_pages()`
|
||||
- Successfully re-indexed 95 pages
|
||||
|
||||
- **Document Node Tags** - Neo4j Document nodes now include `tags` property
|
||||
- Prevents warnings in related documents query
|
||||
- Set via `d.tags = $tags` in MERGE query
|
||||
|
||||
- **WikiJS Integration Script** - Page ID fetched via GraphQL
|
||||
- Uses `pages.singleByPath(path, locale)` query during initialization
|
||||
- Replaces unreliable page list search method
|
||||
|
||||
### Changed
|
||||
- **Entity Linking** - Improved matching with fuzzy logic
|
||||
- Confidence scoring for containment and token overlap matches
|
||||
- Self-referential link filtering (entities don't link to current page)
|
||||
- Path preservation (keeps full `/users/username/path` format)
|
||||
- Longest-first matching to prevent partial matches
|
||||
|
||||
- **Consolidation Processing** - Searches marked processed even when skipped/errored
|
||||
- Prevents unprocessed searches from accumulating indefinitely
|
||||
|
||||
- **Stack Configuration** - Updated library-desk environment variables
|
||||
- Replaced `WIKIJS_API_KEY` with `WIKIJS_USERNAME`/`WIKIJS_PASSWORD`
|
||||
- Added `WIKIJS_DB_PASSWORD` for PostgreSQL connection
|
||||
|
||||
### Technical Details
|
||||
- **Dependencies:** Added `asyncpg~=0.29.0` for PostgreSQL async driver
|
||||
- **New Files:** 10 files added (services, routers, tests, documentation)
|
||||
- **Commits:** 10 logical commits covering all changes
|
||||
|
||||
## [0.11.0-pydantic-ai-cleanup] - 2025-12-03
|
||||
|
||||
### Major Changes
|
||||
|
||||
Reference in New Issue
Block a user