release: v0.2.0 repository hygiene, CI, and docs sync
Stop tracking personal workflow artifacts at repo root, add CI and MIT license, align README and agent skills with artifacts/ defaults, and enable Ruff in dev/CI so releases are verifiable without local-only runs. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.5
Cursor
parent
e70bd35498
commit
6f0df5a774
@@ -2,8 +2,8 @@
|
||||
|
||||
## Documentation Status
|
||||
|
||||
- Last synchronized: **2026-04-07**
|
||||
- Validation baseline: **`pytest -q` → 517 passed**
|
||||
- Last synchronized: **2026-06-01** (see [`CHANGELOG.md`](CHANGELOG.md) for release history)
|
||||
- Validation baseline: **`uv run pytest -q` → 517 passed**
|
||||
- Human-in-the-loop workflow includes `vlm apply-review` for syncing manual plan edits from CSV back into `plan.json`.
|
||||
- Scanner now detects `ffprobe` availability, degrades gracefully, and treats partial `find` output as a warning-backed partial result.
|
||||
- JSON artifacts (`identities.json`, `analysis.json`, `plan.json`) are schema-validated on load/save, and plan loading now crosses a typed `ExecutionPlan` boundary.
|
||||
@@ -73,6 +73,10 @@ vlm scan
|
||||
|
||||
This creates `artifacts/inventory.csv` with all discovered files and their metadata.
|
||||
|
||||
### Generated artifacts (do not commit)
|
||||
|
||||
Default pipeline outputs live under `artifacts/` (or `workspace_dir` from config). **Do not commit** `artifacts/`, `runs/`, or legacy root-level files such as `inventory.csv`, `identities.json`, `analysis.json`, or `plan.json` at the repository root. Keep API keys in `~/.vlm/config.yaml` only — never commit config copies or paste keys into issues.
|
||||
|
||||
**What happens:**
|
||||
- Discovers video files using the system `find` command
|
||||
- If `find` exits non-zero after emitting paths, VLM keeps the partial results and logs a warning; if no paths are emitted, discovery returns an empty deterministic result
|
||||
@@ -763,7 +767,7 @@ Common enrichment outcomes:
|
||||
|
||||
- `Skip reasons: rate_limited=...`
|
||||
Cause: TMDB rate limit hit (`429`).
|
||||
Action: retry later; VLM already applies bounded retry/backoff.
|
||||
Action: retry later; VLM already applies bounded retry/backoff. For large libraries, lower `enrichment.max_concurrency` (try **2–4** before the default **6**) to reduce simultaneous TMDB requests during `vlm enrich` and ffprobe work during `vlm scan`.
|
||||
|
||||
- `Enriched now: 0` with non-zero records
|
||||
Cause: often `no_key`, `no_match`, or provider errors.
|
||||
@@ -810,19 +814,13 @@ Always keep backups of important files!
|
||||
- **Local files only**: Designed for local or mounted network storage
|
||||
- **Best-effort rollback**: Rollback may not succeed if files have been modified
|
||||
|
||||
## Gemini CLI Agent Skills
|
||||
## Agent skills
|
||||
|
||||
This project includes built-in expert guidance for the Gemini CLI. These skills co-locate project knowledge with the source code.
|
||||
This project includes workflow guidance under `skills/vlm-library-workflow/` (scan → parse → enrich → analyze → plan → review-plan → apply-review → execute).
|
||||
|
||||
### Activation
|
||||
|
||||
To activate the expert guidance in Gemini CLI, use:
|
||||
### Activation (Gemini CLI)
|
||||
|
||||
```bash
|
||||
# General expert guidance and knowledge base
|
||||
activate_skill vlm-expert
|
||||
|
||||
# Step-by-step library organization workflow
|
||||
activate_skill vlm-library-workflow
|
||||
```
|
||||
|
||||
@@ -838,17 +836,17 @@ activate_skill vlm-library-workflow
|
||||
### Running Tests
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
pytest
|
||||
# Run all tests (recommended)
|
||||
uv run pytest -q
|
||||
|
||||
# Run specific test file
|
||||
pytest tests/test_scanner.py
|
||||
uv run pytest tests/test_scanner.py
|
||||
|
||||
# Run with verbose output
|
||||
pytest -v
|
||||
uv run pytest -v
|
||||
|
||||
# Run with coverage
|
||||
pytest --cov=vlm tests/
|
||||
# Run with coverage (requires dev extras)
|
||||
uv run pytest --cov=vlm tests/
|
||||
```
|
||||
|
||||
### Code Style
|
||||
@@ -864,13 +862,19 @@ pytest --cov=vlm tests/
|
||||
src/vlm/
|
||||
├── cli.py # Click-based CLI interface, global options
|
||||
├── context.py # CLIContext and pass_context for commands
|
||||
├── cli_helpers.py # Shared CLI helpers
|
||||
├── commands/ # Command implementations
|
||||
│ ├── scan.py # Scan command
|
||||
│ ├── parse.py # Parse command
|
||||
│ ├── enrich.py # Enrich command
|
||||
│ ├── analyze.py # Analyze command
|
||||
│ ├── plan.py # Plan command
|
||||
│ └── execute.py # Execute/Rollback commands
|
||||
│ ├── execute.py # Execute/Rollback commands
|
||||
│ ├── review_plan.py # Plan review export / TUI
|
||||
│ ├── report.py # Report commands
|
||||
│ ├── quarantine_cmd.py
|
||||
│ ├── state_cmd.py
|
||||
│ └── config_cmd.py
|
||||
├── scanner.py # File discovery and metadata extraction
|
||||
├── parser.py # Filename parsing (titles, years, episodes)
|
||||
├── enrichment.py # Title/reputation enrichment pipeline
|
||||
@@ -881,8 +885,14 @@ src/vlm/
|
||||
├── io.py # Unified JSON/CSV I/O helpers (load/save JSON, analysis writer, plan/analysis adapters)
|
||||
├── utils.py # UTC time, format_size, etc.
|
||||
├── analysis.py # Completeness and duplicate detection
|
||||
├── duplicate_resolve.py # Duplicate group keep-index (by_quality, by_reputation, by_reputation_quality_time, first_seen, manual)
|
||||
├── duplicate_resolve.py # Duplicate group resolution strategies
|
||||
├── planner.py # Execution plan generation (optionally consumes analysis)
|
||||
├── plan_review.py # Review CSV and apply-review
|
||||
├── plan_render.py # Plan rendering helpers
|
||||
├── plan_structure_preview.py
|
||||
├── review_display.py # Terminal review output
|
||||
├── review_tui.py # Optional Textual review UI
|
||||
├── transaction.py # Execution transaction log
|
||||
├── executor.py # File operations and rollback
|
||||
├── quarantine.py # Quarantine management
|
||||
├── state.py # File state tracking
|
||||
@@ -909,16 +919,11 @@ tests/
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome! Please:
|
||||
|
||||
1. Write tests for new features
|
||||
2. Follow existing code style
|
||||
3. Update documentation
|
||||
4. Add clear commit messages
|
||||
See [`CONTRIBUTING.md`](CONTRIBUTING.md) for versioning, test commands, and PR expectations.
|
||||
|
||||
## License
|
||||
|
||||
[Add your license here]
|
||||
MIT — see [`LICENSE`](LICENSE).
|
||||
|
||||
## Acknowledgments
|
||||
|
||||
@@ -930,6 +935,6 @@ Built with:
|
||||
|
||||
## Support
|
||||
|
||||
- Report issues: [GitHub Issues](https://github.com/yourusername/video-library-manager/issues)
|
||||
- Documentation: See CLAUDE.md for architecture details
|
||||
- Report issues in your repository host's issue tracker
|
||||
- Documentation: [`CLAUDE.md`](CLAUDE.md) for architecture; [`CHANGELOG.md`](CHANGELOG.md) for releases
|
||||
- Logs: Check `~/.vlm/vlm.log` for detailed information
|
||||
|
||||
Reference in New Issue
Block a user