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:
parent
f8087a3c6a
commit
fc73e4b76b
87 changed files with 9461 additions and 3324 deletions
46
README.md
46
README.md
|
|
@ -4,6 +4,52 @@ An image viewer application for the COSMIC™ desktop
|
|||
|
||||

|
||||
|
||||
## Features
|
||||
|
||||
- **Multi-format support**: Raster images (PNG, JPEG, WebP, etc.), SVG vector graphics, and PDF documents
|
||||
- **Navigation**: Browse through folders with keyboard shortcuts
|
||||
- **Transformations**: Rotate, flip, and crop images
|
||||
- **Zoom & Pan**: Flexible viewing with zoom controls and panning
|
||||
- **Multi-page documents**: Navigate PDF pages with thumbnail previews
|
||||
- **Metadata display**: View EXIF data and file information
|
||||
- **Wallpaper setting**: Set images as desktop wallpaper (multi-DE support)
|
||||
|
||||
## Architecture
|
||||
|
||||
Noctua follows Clean Architecture principles with clear separation of concerns:
|
||||
|
||||
```
|
||||
src/
|
||||
├── main.rs # Application entry point
|
||||
├── ui/ # UI Layer (COSMIC interface)
|
||||
│ ├── app.rs # Application state & lifecycle
|
||||
│ ├── model.rs # UI state + cached render data
|
||||
│ ├── update.rs # Message handlers
|
||||
│ ├── sync.rs # Model synchronization
|
||||
│ ├── views/ # View components
|
||||
│ └── components/ # Reusable widgets
|
||||
├── application/ # Application Layer (use cases)
|
||||
│ ├── document_manager.rs # Document orchestration
|
||||
│ ├── commands/ # Write operations (Transform, Crop)
|
||||
│ └── services/ # Shared services (Cache)
|
||||
├── domain/ # Domain Layer (business logic)
|
||||
│ ├── document/ # Document abstractions & operations
|
||||
│ │ ├── core/ # Traits & types (Renderable, Transformable)
|
||||
│ │ ├── types/ # Implementations (Raster, Vector, Portable)
|
||||
│ │ └── operations/ # Transform, render, export operations
|
||||
│ └── errors.rs # Domain errors
|
||||
└── infrastructure/ # Infrastructure Layer (external systems)
|
||||
├── loaders/ # Document loading (image, SVG, PDF)
|
||||
├── cache/ # Thumbnail caching
|
||||
├── filesystem/ # File operations
|
||||
└── system/ # System integration (wallpaper)
|
||||
```
|
||||
|
||||
**Key Patterns:**
|
||||
- **MVU (Model-View-Update)**: Elm architecture via libcosmic
|
||||
- **Command Pattern**: All operations go through commands
|
||||
- **Dependency Inversion**: Domain has no dependencies on infrastructure
|
||||
- **Type-Erased Documents**: `DocumentContent` enum for unified handling
|
||||
|
||||
## Installation
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue