Complete Clean Architecture migration

Phase 1-7: Full migration from src/app/ to Clean Architecture

BREAKING CHANGES:
- Removed src/app/ (old TEA-style implementation)
- Removed src/constant.rs (constants now local to modules)
- Removed deprecated canvas_to_image_coords functions

NEW STRUCTURE:
- src/ui/           - UI Layer (COSMIC interface)
- src/application/  - Application Layer (DocumentManager, Commands)
- src/domain/       - Domain Layer (Document types, Operations)
- src/infrastructure/ - Infrastructure Layer (Loaders, Cache, System)

FEATURES:
- DocumentManager as Single Source of Truth
- Command Pattern for all operations
- Model caching for render data (performance)
- Sync mechanism between DocumentManager and UI Model
- Wallpaper support (COSMIC, KDE, GNOME, feh)
- Thumbnail cache with disk persistence

IMPROVEMENTS:
- Warnings: 62 → 43 (-31%)
- Deprecated warnings: 2 → 0 (-100%)
- Code removed: src/app/ (~2000 lines), constant.rs, deprecated functions
- Better Locality of Reference (constants local to modules)
- Clean separation of concerns
- No circular dependencies

DOCUMENTATION:
- Updated AGENTS.md (100% migration status)
- Updated README.md (architecture section)
- Updated Workflow.md
- Added Migration-Plan.md with full completion summary

TESTS:
- All 41 tests passing
- Build successful (0 errors, 43 warnings)
- Release build verified

Migration Status:  100% Complete
This commit is contained in:
wfx 2026-02-03 08:43:21 +01:00
parent f8087a3c6a
commit fc73e4b76b
87 changed files with 9461 additions and 3324 deletions

View file

@ -20,6 +20,7 @@ window-title = { $filename ->
## Menu entries
menu-main = Menu
menu-file-open = Open…
menu-file-quit = Quit
menu-view-zoom-in = Zoom In
@ -51,7 +52,7 @@ status-zoom-fit = Fit
status-zoom-percent = { $percent }%
status-doc-dimensions = { $width } × { $height }
status-nav-position = { $current } / { $total }
status-separator = |
status-separator = |
## Placeholders / Empty states
@ -119,3 +120,9 @@ action-show-in-folder = Show in Folder
## Navigation panel (thumbnails)
nav-panel-title = Pages
nav-panel-loading = Loading { $current } / { $total }…
## Format panel
format-section-title = Paper Format
format-section-subtitle = Select paper size for export
orientation-section-title = Orientation