Releases: HSPK/mm
v0.1.7
Highlights
Stable per-library UUID
Each library database now has a stable library_id (UUID4), generated on first read and immutable. Exposed via GET /api/library. Concurrent first-readers (multi-worker startup, racing library switches) are safely deduplicated.
Per-library thumbnail cache
Thumbnails are now cached under ~/.cache/mm/thumbs/<library_id>/<size>/<media_id>.webp. Fixes a real collision where thumbnails would bleed across libraries because media_id is only unique within a single DB.
Unified, YAML-overridable application config
~12 formerly scattered constants (CLIP model/threshold/labels, hashing chunk size, thumbnail sizes & HTTP cache headers, server cache TTLs, cache directories, import template, DB name) are now nested sections of CliConfig in ~/.config/mm.yaml. Edit any of them; defaults are unchanged.
paths:
cache_dir: ~/.cache/mm
clip:
model_name: ViT-L-14
confidence_threshold: 0.5
thumbnails:
sizes: {sm: [200, 200], md: [400, 400], lg: [800, 800], xl: [1920, 1080]}
server:
token_cache: {ttl: 300, max: 256}Internal: explicit storage injection
storage: FileStorage is now a required keyword-only argument on all storage-aware helpers (was = local_storage default). Makes the dependency boundary explicit and prevents accidental local-filesystem reads in code that should be backend-agnostic.
Test suite
33 → 45 tests, covering library_id semantics, thumbnail namespacing, YAML override round-trip, and config-cache behaviour.
Full diff: #2
v0.1.6
v0.1.5
v0.1.4
v0.1.4
- Reorganized Python modules by domain and removed the old core package.
- Reworked database access into typed DBClient namespaces.
- Added release workflow for PyPI trusted publishing.
- Removed SQLite vector store support ahead of PostgreSQL-backed vector search.
- Simplified import, config, IO, extractor, and utility layers.
- Includes frontend updates and rebuilt release assets workflow support.
v0.1.3
Highlights
- Refactored CLI output around a unified Rich-based UI layer.
- Packaged the built Web UI into wheels and sdists so installed
mm servercan serve the frontend. - Fixed release validation issues so Ruff and tests pass.
Validation
uv run --with ruff ruff check src testsuv run --with pytest python -m pytest -quv build