chore: add version management and changelog

- Add pyproject.toml with project metadata and version (1.1.0)
- Update config.py to read version from pyproject.toml
- Update main.py to use centralized version in FastAPI app
- Add CHANGELOG.md documenting v1.0.0 and v1.1.0 changes

Version is now the single source of truth in pyproject.toml and is
displayed in the health check endpoint and API docs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-11 20:23:56 +01:00
co-authored by Claude Opus 4.5
parent e05e7aeae3
commit 3deed7cbcb
4 changed files with 93 additions and 3 deletions
+48
View File
@@ -0,0 +1,48 @@
# Changelog
All notable changes to Library Desk will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.1.0] - 2025-12-11
### Added
- **Smart Page Creation Endpoint** (`POST /wiki/pages/smart-create`)
- Combines HybridRAG research with LLM content generation
- Searches existing wiki, knowledge graph, and web for topic context
- Uses WikiPageWriter to synthesize findings into structured wiki content
- Auto-generates page path from topic if not provided
- Returns research summary with source counts
- **Bidirectional Entity Linking**
- New shared utility (`entity_linking_utils.py`) for reusable entity linking
- Forward links: Links entities mentioned in new pages to existing entity pages
- Backward links: Updates existing pages that mention the new entity
- Runs automatically in background after smart page creation
- **Version Management**
- Added `pyproject.toml` with project metadata and version
- Version is now read from `pyproject.toml` (single source of truth)
- Health check endpoint returns current version
- FastAPI docs show current version
### Changed
- Updated `config.py` to read version from `pyproject.toml`
- Updated `main.py` to use centralized version
## [1.0.0] - 2025-12-10
### Added
- Initial release extracted from portainer-core
- Wiki page management (`/wiki/pages` CRUD endpoints)
- HybridRAG search (`/query/hybrid`) with vector, graph, and web search
- Knowledge graph operations (`/graph/*`)
- Vector search operations (`/vector/*`)
- Knowledge consolidation from search results (`/consolidate/knowledge`)
- Entity linking and extraction
- Wiki.js change listener for auto-processing user edits
- Multi-tenant architecture with user namespace isolation
+31
View File
@@ -0,0 +1,31 @@
[project]
name = "library-desk"
version = "1.1.0"
description = "Coordination service for The Library system - HybridRAG queries, document ingestion, entity extraction, and knowledge consolidation"
readme = "README.md"
requires-python = ">=3.12"
license = {text = "MIT"}
authors = [
{name = "JP Schweitzer"}
]
keywords = ["rag", "knowledge-graph", "wiki", "semantic-search", "neo4j", "qdrant"]
classifiers = [
"Development Status :: 4 - Beta",
"Framework :: FastAPI",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.12",
]
[project.urls]
Homepage = "https://github.com/jpmschweitzer/library-desk"
Documentation = "https://github.com/jpmschweitzer/library-desk#readme"
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[tool.setuptools.packages.find]
where = ["."]
include = ["src*"]
+12 -1
View File
@@ -4,9 +4,20 @@ Following best practices: modular settings, environment-based config.
"""
from functools import lru_cache
from pathlib import Path
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
# Read version from pyproject.toml
try:
import tomllib
_pyproject_path = Path(__file__).parent.parent / "pyproject.toml"
with open(_pyproject_path, "rb") as f:
_pyproject = tomllib.load(f)
__version__ = _pyproject["project"]["version"]
except Exception:
__version__ = "0.0.0" # Fallback if pyproject.toml not found
class Settings(BaseSettings):
"""Application settings loaded from environment variables."""
@@ -75,7 +86,7 @@ class Settings(BaseSettings):
# Application
app_name: str = Field(default="Library Desk", description="Application name")
app_version: str = Field(default="1.0.0", description="Application version")
app_version: str = Field(default=__version__, description="Application version")
debug: bool = Field(default=False, description="Debug mode")
@property
+2 -2
View File
@@ -16,7 +16,7 @@ from typing import Dict, Any
import logging
from pathlib import Path
from src.config import Settings, get_settings
from src.config import Settings, get_settings, __version__
from src.core.dependencies import verify_api_key
# Configure logging
@@ -30,7 +30,7 @@ logger = logging.getLogger(__name__)
app = FastAPI(
title="Library Desk API",
description="Coordination service for The Library system - HybridRAG queries, document ingestion, entity extraction, and mind map generation",
version="1.0.0",
version=__version__,
docs_url="/docs",
redoc_url="/redoc",
)