Name and Contact Information
- name: Anmol Kapil
- gitlab username: zepredos
- timezone: UTC+5:30
Title
A Responsive And Lightweight CLI For Managing Media Libraries
Short description of work done
- Initialize repository & CI
- Set up the
medialoderepo - Confirm
CMake+ CI config (Linux/macOS/Windowsbuilds) - Verify “hello world” build across all OSes
- Set up the
- Vendor/Fetch Boost and other dependencies
- Define IPC protocol spec
- Draft
JSON-over-WebSocketmessages for DB queries & scanner commands - Add a Markdown
ipc-specdoc under docs/
- Draft
- SQLite server skeleton
- Create
libmgr-serverbinary target - Open a UNIX/websocket listener (
Boost.Beast) on startup - Respond to a ping RPC with
{ "status": "ok" }
- Create
- Folder-scan orchestration
- Add “scan-folders” RPC: takes list of paths, stores in DB table
- Persist scan status in a folders table (path, last_scan)
- WAL mode & basic schema
- Enable
PRAGMA journal_mode = WALon DB open - Define tables
- Enable
- Generic scanner process framework
- Make a
libmgr-scan-worker binarythat: - Connects to server via WebSocket
- Listens for scan-file commands
- Returns file-scanned with metadata or file-error
- Make a
- Image scanner worker
- On scan-file, if extension belongs to {png,jpg,…}, extract dimensions
- Audio scanner worker
- For audio files: extract duration, sample rate
- Video scanner worker
- For video files: extract duration, resolution
- Language/script scanner worker
- For
.js,.py, etc: attempt a dry-run parse to catch syntax errors - Report syntax OK / error message
- For
- Basic CLI scaffolding
- Create
libmgr-cli binarywith subcommands
- Create
- Implement list types
libmgr-cli list types→ prints supported media types
- Implement list files
libmgr-cli list files --type audio --folder /path
- Graceful shutdown & persistence
- Ensure server on
SIGINTcleanly stops workers + commits DB
- Ensure server on
- Documentation & examples
- Create a
READMEwithquickstartsfor server & CLI
- Create a
What code got merged
What code didn’t get merged
- Implement IPC protocol, server skeleton, and scanner worker
- Image worker
- Audio worker
- Video worker
- Script worker
- WIP: Add CLI Commands
- Add Quickstart and other Documentation
What’s left to do
- Plugin scanner worker
- Wrap existing
vstpuppet logicforVST2/VST3 - Extract param counts, GUI screenshot, plugin metadata
- Wrap existing
- Worker supervision & crash handling
- Server must spawn one worker per media type
- Monitor child process exit; on crash mark file as bad and respawn worker
- Work queue & batching
- Implement a
Redis-like queuein SQLite: - CREATE TABLE queue (file_id, worker_type, status);
- Server enqueues new/changed files; workers pull next item
- Implement a
- Implement search tags
libmgr-cli search --tag livecoding
- Real-time folder watching
- Move from manual scan-folders to a persistent watch mode
- On new FS events enqueue new scan jobs
- Caching & lazy-load previews
- Capture previews and thumbnails for various media files and store them in a previews DB
- Don’t regenerate previews if thumbnail exists and file unchanged
- Fix CI pipeline
- Update the documentation and README accordingly