Document all implemented and planned features: - Current features with implementation status - Planned features organized by priority - Technical architecture details - Keyboard shortcuts reference - Contributing guidelines for new features
207 lines
6.1 KiB
Markdown
207 lines
6.1 KiB
Markdown
# Noctua Features
|
|
|
|
This document describes the implemented and planned features of Noctua, a modern image viewer for the COSMIC desktop environment.
|
|
|
|
## Current Features
|
|
|
|
### Document Support
|
|
|
|
#### Raster Images ✅
|
|
- **Formats**: PNG, JPEG, GIF, BMP, TIFF, WebP, and all formats supported by `image-rs`
|
|
- **Capabilities**:
|
|
- Full pixel-perfect rendering at 100% zoom
|
|
- Lossless transformations (rotate, flip)
|
|
- Real-time transformation preview
|
|
- EXIF metadata extraction
|
|
|
|
#### Vector Graphics ✅
|
|
- **Formats**: SVG
|
|
- **Capabilities**:
|
|
- High-quality rendering via `resvg`
|
|
- Scalable display without quality loss
|
|
- Metadata extraction
|
|
- ⚠️ Note: Transformations not yet implemented for vector documents
|
|
|
|
#### Portable Documents ✅
|
|
- **Formats**: PDF
|
|
- **Capabilities**:
|
|
- First page rendering
|
|
- Basic transformations on rendered page
|
|
- ⚠️ Note: Multi-page navigation not yet implemented
|
|
|
|
### Navigation
|
|
|
|
#### Folder Navigation ✅
|
|
- **Automatic folder scanning**: When opening an image, all supported images in the same folder are indexed
|
|
- **Quick navigation**:
|
|
- Arrow keys (Left/Right) to navigate between images
|
|
- Footer displays current position (e.g., "3 / 42")
|
|
- Seamless transitions between images
|
|
|
|
#### File Opening ✅
|
|
- **Command-line arguments**: Open images directly from terminal
|
|
- **Default directory**: Configurable starting location (defaults to XDG Pictures)
|
|
- ⚠️ File dialog not yet implemented
|
|
|
|
### View Controls
|
|
|
|
#### Zoom ✅
|
|
- **Mouse wheel**: Zoom in/out centered on cursor position
|
|
- **Keyboard shortcuts**:
|
|
- `+` or `=` - Zoom in
|
|
- `-` - Zoom out
|
|
- `1` - Reset to 100% (Actual Size)
|
|
- `f` - Fit to window
|
|
- **View modes**:
|
|
- **Fit**: Automatically scales image to fit window while preserving aspect ratio
|
|
- **Actual Size**: Displays image at 100% (1:1 pixel mapping)
|
|
- **Custom**: Any zoom level from 10% to 2000%
|
|
- **Footer display**: Real-time zoom percentage or "Fit" indicator
|
|
|
|
#### Pan ✅
|
|
- **Mouse drag**: Click and drag to pan around zoomed images
|
|
- **Keyboard shortcuts**: `Ctrl + Arrow Keys` for precise panning
|
|
- **Smart boundaries**: Pan is automatically limited to image boundaries
|
|
- **Auto-center**: Images smaller than viewport are automatically centered
|
|
|
|
#### Bidirectional State Sync ✅
|
|
- Mouse interactions update keyboard/button controls
|
|
- Keyboard/button controls update mouse interaction state
|
|
- No conflicts between input methods
|
|
|
|
### Transformations
|
|
|
|
#### Image Manipulation ✅
|
|
- **Rotate**:
|
|
- `r` - Rotate 90° clockwise
|
|
- `Shift + r` - Rotate 90° counter-clockwise
|
|
- Toolbar buttons available
|
|
- **Flip**:
|
|
- `h` - Flip horizontally (mirror)
|
|
- `v` - Flip vertically
|
|
- Toolbar buttons available
|
|
- **Lossless operations**: All transformations preserve original image quality
|
|
- **Real-time preview**: Changes are immediately visible
|
|
|
|
### User Interface
|
|
|
|
#### COSMIC Integration ✅
|
|
- **Native COSMIC design**: Follows COSMIC desktop design language
|
|
- **Theme support**: Automatically adapts to system light/dark theme
|
|
- **Header toolbar**:
|
|
- Navigation controls (Previous/Next)
|
|
- Transformation buttons (Rotate, Flip)
|
|
- Information panel toggle
|
|
- **Footer bar**:
|
|
- Zoom controls with buttons
|
|
- Current zoom level display
|
|
- Image dimensions
|
|
- Navigation position counter
|
|
|
|
#### Panels
|
|
- **Properties panel** ✅:
|
|
- Image metadata display
|
|
- File information
|
|
- Toggle with `i` key or toolbar button
|
|
- **Navigation panel** (Left sidebar):
|
|
- Toggle with `n` key or toolbar button
|
|
- ⚠️ Content not yet implemented
|
|
|
|
#### Keyboard Shortcuts ✅
|
|
Full keyboard-driven workflow:
|
|
- Navigation: `←` `→`
|
|
- Zoom: `+` `-` `1` `f`
|
|
- Pan: `Ctrl + ←` `Ctrl + →` `Ctrl + ↑` `Ctrl + ↓`
|
|
- Transform: `r` `Shift+r` `h` `v`
|
|
- Panels: `i` `n`
|
|
|
|
### Configuration
|
|
|
|
#### Persistent Settings ✅
|
|
- **Panel states**: Remembers which panels were open
|
|
- **Default directory**: Customizable starting location
|
|
- **Settings location**: `~/.config/noctua/config.toml`
|
|
|
|
### Technical Features
|
|
|
|
#### Architecture ✅
|
|
- **Clean separation**: View layer agnostic to document format
|
|
- **Polymorphic documents**: Single `DocumentContent` interface for all formats
|
|
- **Efficient rendering**: Leverages COSMIC's iced renderer
|
|
- **Type-safe transformations**: Compile-time guarantees for image operations
|
|
|
|
#### Performance ✅
|
|
- **Lazy loading**: Images loaded on-demand
|
|
- **Efficient folder scanning**: Fast directory traversal
|
|
- **Minimal memory footprint**: Only active document kept in memory
|
|
- **Smooth zooming**: Hardware-accelerated rendering
|
|
|
|
## Planned Features
|
|
|
|
### High Priority
|
|
|
|
#### File Operations ⏳
|
|
- File dialog integration (OpenPath message prepared)
|
|
- Save transformed images
|
|
- Copy/Move/Delete operations
|
|
- Drag-and-drop support
|
|
|
|
#### Multi-page Documents ⏳
|
|
- PDF page navigation
|
|
- Multi-page TIFF support
|
|
- Page thumbnails
|
|
|
|
#### Error Handling ⏳
|
|
- User-friendly error messages (ShowError/ClearError prepared)
|
|
- Graceful handling of corrupted files
|
|
- Recovery suggestions
|
|
|
|
### Medium Priority
|
|
|
|
#### Vector Document Transformations ⏳
|
|
- Rotate SVG files
|
|
- Flip SVG files
|
|
- Transform preservation on save
|
|
|
|
#### Enhanced Navigation
|
|
- Thumbnail strip
|
|
- Grid view for folder contents
|
|
- Quick jump to file
|
|
|
|
#### Slideshow Mode
|
|
- Auto-advance timer
|
|
- Configurable intervals
|
|
- Fullscreen support
|
|
|
|
### Low Priority
|
|
|
|
#### Advanced Editing
|
|
- Crop tool (message prepared)
|
|
- Scale/Resize tool (message prepared)
|
|
- Basic color adjustments
|
|
|
|
#### Batch Operations
|
|
- Bulk transformations
|
|
- Format conversion
|
|
- Batch export
|
|
|
|
#### Metadata Editing
|
|
- EXIF data modification
|
|
- Comment annotations
|
|
- Tag management
|
|
|
|
## Feature Status Legend
|
|
|
|
- ✅ **Implemented**: Fully functional and tested
|
|
- ⏳ **Planned**: Design complete, implementation pending
|
|
- ⚠️ **Partial**: Basic functionality exists, enhancements needed
|
|
- 🔄 **In Progress**: Currently being developed
|
|
|
|
## Contributing
|
|
|
|
Features marked as "Planned" have their message handlers already prepared in the codebase. Look for:
|
|
- `OpenPath`, `RefreshMetadata` in `src/app/message.rs`
|
|
- `ToggleCropMode`, `ToggleScaleMode` in transformation handlers
|
|
- Comments marked with `TODO:` in document implementations
|
|
|
|
Pull requests welcome! See [CONTRIBUTING.md](../CONTRIBUTING.md) for guidelines.
|