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:
@@ -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
|
||||
@@ -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
@@ -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
@@ -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",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user