diff --git a/.gitignore b/.gitignore index 20f6ab6..6fb729e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ wheels/ .venv # Test-generated files src/test/datasets/sample_mediafiles/ +.pytest_cache/ +.mypy_cache/ diff --git a/AGENTS.md b/AGENTS.md index 3759961..c635c00 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,7 +1,7 @@ # moma Engineering Guide -**Version**: 0.7.0-dev -**Last Updated**: 2026-01-01 +**Version**: 0.8.11 +**Last Updated**: 2026-04-11 **Python**: 3.11+ **Status**: Active Development @@ -34,7 +34,7 @@ moma is a sophisticated Terminal User Interface (TUI) application for managing, ### Current Version -- **Version**: 0.7.0-dev (in development) +- **Version**: 0.8.11 (in development) - **Python**: 3.11+ - **License**: Not specified - **Repository**: `/Users/sha/Developer/sha.dev/moma` @@ -386,12 +386,14 @@ Access via Ctrl+P: - Safe for concurrent extractor access - Memory cache synchronized with file cache -### 8. UI Screens (`src/screens.py`) +### 8. UI Screens (`src/views/`) -1. **OpenScreen**: Directory selection dialog with validation -2. **HelpScreen**: Comprehensive help with key bindings -3. **RenameConfirmScreen**: File rename confirmation with error handling -4. **SettingsScreen**: Settings configuration interface +1. **OpenScreen** (`open_screen.py`): Directory selection dialog with validation +2. **HelpScreen** (`help_screen.py`): Comprehensive help with key bindings +3. **RenameConfirmScreen** (`rename_confirm_screen.py`): File rename confirmation with error handling +4. **ConvertConfirmScreen** (`convert_confirm_screen.py`): AVI/MP4/WebM → MKV conversion confirmation +5. **DeleteConfirmScreen** (`delete_confirm_screen.py`): File deletion confirmation +6. **SettingsScreen** (`settings_screen.py`): Settings configuration interface ### 9. Settings System (`src/settings.py`) @@ -933,12 +935,12 @@ Title (Year) [Resolution Source Edition].ext - **INSTALL.md**: Installation methods - **DEVELOP.md**: Developer setup and debugging - **CHANGELOG.md**: Version history and changes -- **REFACTORING_PROGRESS.md**: Future refactoring plans -- **ToDo.md**: Current task list +- **docs/REFACTORING_PROGRESS.md**: Future refactoring plans +- **docs/ToDo.md**: Current task list --- -**Last Updated**: 2026-01-01 +**Last Updated**: 2026-04-11 **Maintainer**: sha **For**: AI Assistants and Developers **Repository**: `/Users/sha/Developer/sha.dev/moma` diff --git a/CHANGELOG.md b/CHANGELOG.md index c88583c..8fc7824 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,15 +10,64 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Future Plans -See [REFACTORING_PROGRESS.md](REFACTORING_PROGRESS.md) and [ToDo.md](ToDo.md) for upcoming features and improvements. +See [docs/REFACTORING_PROGRESS.md](docs/REFACTORING_PROGRESS.md) and [docs/ToDo.md](docs/ToDo.md) for upcoming features and improvements. --- -## [0.7.0-dev] - 2026-01-01 +## [0.8.11] - 2026-04-11 + +### Changed +- Renamed project package from `renamer` to `moma`, CLI command is now `moma` +- Main app class renamed `RenamerApp` → `MomaApp` +- Package source directory renamed `renamer/` → `src/` +- Config path `~/.config/renamer/` → `~/.config/moma/` +- Cache path `~/.cache/renamer/` → `~/.cache/moma/` +- Migrated repository to GitHub: `git@github.com:shadoll/moma.git` + +--- + +## [0.8.10] - 2026-04-10 + +### Added +- **OpenScreen**: Dedicated screen for directory input with validation +- **ConvertConfirmScreen**: Conversion confirmation for AVI/MP4/WebM → MKV +- **DeleteConfirmScreen**: File deletion confirmation screen +- **Singleton logging configuration** (`logging_config.py`) + +### Fixed +- Improved scan commands and key bindings usability +- MP4 and WebM support in conversion service + +--- + +## [0.7.10] - 2026-02-01 + +### Added +- **Poster rendering**: ASCII art, Viu, and RichPixels poster display options +- **HEVC encoding options**: configurable CRF and preset in settings +- **MPG/MPEG format support** in conversion service +- **Genre extraction** added to media properties panel +- **File icons** in directory tree +- **Delete file functionality** with confirmation + +### Changed +- Refactored `FormatterApplier` class (removed, inlined) +- Consolidated text color decorators +- Improved scan type detection for interlaced content +- Updated bitrate calculation in `TrackFormatter` +- Replaced dots with spaces in title normalization + +### Fixed +- Poster handling and rendering in catalog mode +- TMDB data retrieval improvements + +--- + +## [0.7.0] - 2026-01-01 ### Major Refactoring (Phases 1-3) -This development version represents a significant refactoring effort focused on code quality, architecture, and maintainability. +Significant refactoring focused on code quality, architecture, and maintainability. --- @@ -122,18 +171,18 @@ This development version represents a significant refactoring effort focused on ### Documentation Improvements #### Added -- **ENGINEERING_GUIDE.md**: Comprehensive 900+ line technical reference +- **AGENTS.md**: Comprehensive 900+ line technical reference - **CHANGELOG.md**: This file #### Changed -- **CLAUDE.md**: Streamlined to pointer to ENGINEERING_GUIDE.md -- **AI_AGENT.md**: Marked as deprecated, points to ENGINEERING_GUIDE.md -- **DEVELOP.md**: Streamlined with references to ENGINEERING_GUIDE.md +- **CLAUDE.md**: Streamlined to pointer to AGENTS.md +- **AI_AGENT.md**: Marked as deprecated, points to AGENTS.md +- **DEVELOP.md**: Streamlined with references to AGENTS.md - **README.md**: Streamlined user guide with references #### Removed - Outdated version information from documentation files -- Duplicated content now in ENGINEERING_GUIDE.md +- Duplicated content now in AGENTS.md --- @@ -216,10 +265,10 @@ This development version represents a significant refactoring effort focused on ## Links -- [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md) - Complete technical documentation -- [REFACTORING_PROGRESS.md](REFACTORING_PROGRESS.md) - Future refactoring plans -- [ToDo.md](ToDo.md) - Current task list +- [AGENTS.md](AGENTS.md) - Complete technical documentation +- [docs/REFACTORING_PROGRESS.md](docs/REFACTORING_PROGRESS.md) - Future refactoring plans +- [docs/ToDo.md](docs/ToDo.md) - Current task list --- -**Last Updated**: 2026-01-01 +**Last Updated**: 2026-04-11 diff --git a/CLAUDE.md b/CLAUDE.md index 90dedea..ef70eb9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,13 +1,13 @@ # CLAUDE.md - AI Assistant Reference -**Version**: 0.7.0-dev -**Last Updated**: 2026-01-01 +**Version**: 0.8.11 +**Last Updated**: 2026-04-11 -> **📘 All technical documentation has been moved to [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md)** +> **📘 All technical documentation has been moved to [AGENTS.md](AGENTS.md)** ## For AI Assistants -Please read **[ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md)** for complete project documentation including: +Please read **[AGENTS.md](AGENTS.md)** for complete project documentation including: - Architecture overview - Core components @@ -27,7 +27,7 @@ uv run moma [dir] # Run ## Essential Principles -1. **Read [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md) first** +1. **Read [AGENTS.md](AGENTS.md) first** 2. Read files before modifying 3. Test everything (`uv run pytest`) 4. Follow existing patterns @@ -35,4 +35,4 @@ uv run moma [dir] # Run --- -**Full Documentation**: [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md) +**Full Documentation**: [AGENTS.md](AGENTS.md) diff --git a/DEVELOP.md b/DEVELOP.md index cc081c0..6076e50 100644 --- a/DEVELOP.md +++ b/DEVELOP.md @@ -1,9 +1,9 @@ # Developer Guide -**Version**: 0.7.0-dev -**Last Updated**: 2026-01-01 +**Version**: 0.8.11 +**Last Updated**: 2026-04-11 -> **📘 For complete development documentation, see [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md)** +> **📘 For complete development documentation, see [AGENTS.md](AGENTS.md)** Quick reference for developers working on the moma project. @@ -80,7 +80,7 @@ uv run pytest -xvs uv run python src/test/fill_sample_mediafiles.py ``` -See [ENGINEERING_GUIDE.md - Testing Strategy](ENGINEERING_GUIDE.md#testing-strategy) +See [AGENTS.md - Testing Strategy](AGENTS.md#testing-strategy) --- @@ -100,19 +100,19 @@ uv tool install . uv run moma /path/to/test/media ``` -See [ENGINEERING_GUIDE.md - Release Process](ENGINEERING_GUIDE.md#release-process) +See [AGENTS.md - Release Process](AGENTS.md#release-process) --- ## Documentation -- **[ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md)** - Complete technical reference +- **[AGENTS.md](AGENTS.md)** - Complete technical reference - **[README.md](README.md)** - User guide - **[INSTALL.md](INSTALL.md)** - Installation instructions - **[CHANGELOG.md](CHANGELOG.md)** - Version history -- **[REFACTORING_PROGRESS.md](REFACTORING_PROGRESS.md)** - Future plans -- **[ToDo.md](ToDo.md)** - Current tasks +- **[docs/REFACTORING_PROGRESS.md](docs/REFACTORING_PROGRESS.md)** - Future plans +- **[docs/ToDo.md](docs/ToDo.md)** - Current tasks --- -**For complete documentation, see [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md)** +**For complete documentation, see [AGENTS.md](AGENTS.md)** diff --git a/INSTALL.md b/INSTALL.md index 8c3e6f5..2341f39 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -25,10 +25,10 @@ powershell -c "irm https://astral.sh/uv/install.sh | iex" #### Install moma ```bash # One-command install from remote wheel -uv tool install https://github.com/shadoll/moma/raw/branch/main/dist/moma-0.2.4-py3-none-any.whl +uv tool install https://github.com/shadoll/moma/raw/branch/main/dist/moma-0.8.11-py3-none-any.whl # Or from local wheel (if downloaded) -uv tool install dist/moma-0.2.4-py3-none-any.whl +uv tool install dist/moma-0.8.11-py3-none-any.whl # Or from PyPI (when published) uv tool install moma @@ -46,10 +46,10 @@ If you have the wheel file, you can install it with pip. ```bash # Install the wheel -pip install dist/moma-0.2.0-py3-none-any.whl +pip install dist/moma-0.8.11-py3-none-any.whl # Or install globally (may require sudo) -sudo pip install dist/moma-0.2.0-py3-none-any.whl +sudo pip install dist/moma-0.8.11-py3-none-any.whl ``` ### Method 3: Development Installation @@ -58,15 +58,15 @@ For development or if you want to run from source: #### Clone and Setup ```bash -git clone +git clone git@github.com:shadoll/moma.git cd moma # Install dependencies uv sync # Run directly -uv run python main.py -uv run python main.py /path/to/directory +uv run python src/main.py +uv run python src/main.py /path/to/directory ``` #### Install in Development Mode @@ -87,8 +87,8 @@ python3 --version pip install textual mutagen pymediainfo python-magic langcodes # Run the application -python3 main.py -python3 main.py /path/to/directory +python3 src/main.py +python3 src/main.py /path/to/directory ``` ## System Requirements @@ -121,8 +121,6 @@ After installation, verify it works: ```bash moma --help -# or -python3 main.py --help ``` You should see the help text for the moma application. diff --git a/README.md b/README.md index b5fc374..e8b63f9 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # moma - Media Manager, File Renamer and Metadata Viewer -**Version**: 0.7.0-dev +**Version**: 0.8.11 A powerful Terminal User Interface (TUI) for managing media collections. View detailed metadata, browse TMDB catalog with posters, and intelligently rename files. -> **📘 For complete documentation, see [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md)** +> **📘 For complete documentation, see [AGENTS.md](AGENTS.md)** --- @@ -133,7 +133,7 @@ src/ └── constants/ # Configuration constants ``` -See [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md) for complete architecture documentation. +See [AGENTS.md](AGENTS.md) for complete architecture documentation. --- @@ -156,7 +156,7 @@ See [DEVELOP.md](DEVELOP.md) for development documentation. ## Documentation -- **[ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md)** - Complete technical reference +- **[AGENTS.md](AGENTS.md)** - Complete technical reference - **[INSTALL.md](INSTALL.md)** - Installation instructions - **[DEVELOP.md](DEVELOP.md)** - Development guide - **[CHANGELOG.md](CHANGELOG.md)** - Version history @@ -178,4 +178,4 @@ Not specified --- -**For complete documentation, see [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md)** +**For complete documentation, see [AGENTS.md](AGENTS.md)** diff --git a/dist/renamer-0.6.10-py3-none-any.whl b/dist/renamer-0.6.10-py3-none-any.whl deleted file mode 100644 index 803f50e..0000000 Binary files a/dist/renamer-0.6.10-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.6.11-py3-none-any.whl b/dist/renamer-0.6.11-py3-none-any.whl deleted file mode 100644 index 753ec40..0000000 Binary files a/dist/renamer-0.6.11-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.6.12-py3-none-any.whl b/dist/renamer-0.6.12-py3-none-any.whl deleted file mode 100644 index ddf2b0a..0000000 Binary files a/dist/renamer-0.6.12-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.6.9-py3-none-any.whl b/dist/renamer-0.6.9-py3-none-any.whl deleted file mode 100644 index 9b3d0ba..0000000 Binary files a/dist/renamer-0.6.9-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.7.1-py3-none-any.whl b/dist/renamer-0.7.1-py3-none-any.whl deleted file mode 100644 index 7ca75b9..0000000 Binary files a/dist/renamer-0.7.1-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.7.10-py3-none-any.whl b/dist/renamer-0.7.10-py3-none-any.whl deleted file mode 100644 index 922a232..0000000 Binary files a/dist/renamer-0.7.10-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.7.2-py3-none-any.whl b/dist/renamer-0.7.2-py3-none-any.whl deleted file mode 100644 index 50b7d9f..0000000 Binary files a/dist/renamer-0.7.2-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.7.3-py3-none-any.whl b/dist/renamer-0.7.3-py3-none-any.whl deleted file mode 100644 index 2305363..0000000 Binary files a/dist/renamer-0.7.3-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.7.4-py3-none-any.whl b/dist/renamer-0.7.4-py3-none-any.whl deleted file mode 100644 index 25c20ed..0000000 Binary files a/dist/renamer-0.7.4-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.7.5-py3-none-any.whl b/dist/renamer-0.7.5-py3-none-any.whl deleted file mode 100644 index 3ec72b5..0000000 Binary files a/dist/renamer-0.7.5-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.7.6-py3-none-any.whl b/dist/renamer-0.7.6-py3-none-any.whl deleted file mode 100644 index 4342430..0000000 Binary files a/dist/renamer-0.7.6-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.7.7-py3-none-any.whl b/dist/renamer-0.7.7-py3-none-any.whl deleted file mode 100644 index 34ae66c..0000000 Binary files a/dist/renamer-0.7.7-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.7.8-py3-none-any.whl b/dist/renamer-0.7.8-py3-none-any.whl deleted file mode 100644 index 71f573c..0000000 Binary files a/dist/renamer-0.7.8-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.7.9-py3-none-any.whl b/dist/renamer-0.7.9-py3-none-any.whl deleted file mode 100644 index d9d7359..0000000 Binary files a/dist/renamer-0.7.9-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.8.1-py3-none-any.whl b/dist/renamer-0.8.1-py3-none-any.whl deleted file mode 100644 index 31cd14c..0000000 Binary files a/dist/renamer-0.8.1-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.8.10-py3-none-any.whl b/dist/renamer-0.8.10-py3-none-any.whl deleted file mode 100644 index aca91ae..0000000 Binary files a/dist/renamer-0.8.10-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.8.2-py3-none-any.whl b/dist/renamer-0.8.2-py3-none-any.whl deleted file mode 100644 index 89eef07..0000000 Binary files a/dist/renamer-0.8.2-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.8.3-py3-none-any.whl b/dist/renamer-0.8.3-py3-none-any.whl deleted file mode 100644 index 3f97918..0000000 Binary files a/dist/renamer-0.8.3-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.8.4-py3-none-any.whl b/dist/renamer-0.8.4-py3-none-any.whl deleted file mode 100644 index fa9540e..0000000 Binary files a/dist/renamer-0.8.4-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.8.5-py3-none-any.whl b/dist/renamer-0.8.5-py3-none-any.whl deleted file mode 100644 index b21d60f..0000000 Binary files a/dist/renamer-0.8.5-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.8.6-py3-none-any.whl b/dist/renamer-0.8.6-py3-none-any.whl deleted file mode 100644 index f5c84d6..0000000 Binary files a/dist/renamer-0.8.6-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.8.7-py3-none-any.whl b/dist/renamer-0.8.7-py3-none-any.whl deleted file mode 100644 index a667373..0000000 Binary files a/dist/renamer-0.8.7-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.8.8-py3-none-any.whl b/dist/renamer-0.8.8-py3-none-any.whl deleted file mode 100644 index 88daa2a..0000000 Binary files a/dist/renamer-0.8.8-py3-none-any.whl and /dev/null differ diff --git a/dist/renamer-0.8.9-py3-none-any.whl b/dist/renamer-0.8.9-py3-none-any.whl deleted file mode 100644 index 0cbfcd5..0000000 Binary files a/dist/renamer-0.8.9-py3-none-any.whl and /dev/null differ diff --git a/docs/REFACTORING_PROGRESS.md b/docs/REFACTORING_PROGRESS.md index a08c8ac..126aea0 100644 --- a/docs/REFACTORING_PROGRESS.md +++ b/docs/REFACTORING_PROGRESS.md @@ -1,11 +1,11 @@ # moma - Refactoring Roadmap -**Version**: 0.7.0-dev -**Last Updated**: 2026-01-01 +**Version**: 0.8.11 +**Last Updated**: 2026-04-11 > **📋 For completed work, see [CHANGELOG.md](CHANGELOG.md)** -This document tracks the future refactoring plan for moma v0.7.0+. +This document tracks the future refactoring plan for moma v0.8.x+. --- @@ -220,7 +220,7 @@ grep -r "import src.decorators.caching" src/ **Status**: NOT STARTED #### 6.1 Update Technical Documentation -- ✅ ENGINEERING_GUIDE.md created +- ✅ AGENTS.md created - [ ] API documentation generation - [ ] Architecture diagrams - [ ] Component interaction flows @@ -403,6 +403,6 @@ grep -r "import src.decorators.caching" src/ **See Also**: - [CHANGELOG.md](CHANGELOG.md) - Completed work - [ToDo.md](ToDo.md) - Future feature requests -- [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md) - Technical documentation +- [AGENTS.md](AGENTS.md) - Technical documentation -**Last Updated**: 2026-01-01 +**Last Updated**: 2026-04-11 diff --git a/docs/ToDo.md b/docs/ToDo.md index 737dac5..28a230e 100644 --- a/docs/ToDo.md +++ b/docs/ToDo.md @@ -1,7 +1,7 @@ # moma - Future Tasks -**Version**: 0.7.0-dev -**Last Updated**: 2026-01-01 +**Version**: 0.8.11 +**Last Updated**: 2026-04-11 > **📋 For completed work, see [CHANGELOG.md](CHANGELOG.md)** > @@ -165,12 +165,12 @@ See [REFACTORING_PROGRESS.md](REFACTORING_PROGRESS.md) for current limitations a Before working on any task: -1. Check [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md) for architecture details +1. Check [AGENTS.md](AGENTS.md) for architecture details 2. Review [CHANGELOG.md](CHANGELOG.md) for recent changes 3. Read [DEVELOP.md](DEVELOP.md) for development setup 4. Run tests: `uv run pytest` -5. Follow code standards in [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md#code-standards) +5. Follow code standards in [AGENTS.md](AGENTS.md#code-standards) --- -**Last Updated**: 2026-01-01 +**Last Updated**: 2026-04-11