Add comprehensive canvas resize functionality with three resize methods.
Features:
- Canvas Size dialog accessible from Image menu
- Three resize methods:
* Scale: Stretch/shrink content to fit new size
* Crop: Crop or center content without scaling
* Expand: Expand canvas, center existing content
- Maintain aspect ratio toggle with link/unlink button
- Dimension validation (1-10000 pixels)
- Real-time preview of new dimensions
- Applies to all layers simultaneously
- Toast notifications for success/errors
Changes:
- Created components/modals/canvas-resize-dialog.tsx
- Added "Canvas Size..." menu item to Image menu
- Integrated with useLayerStore for layer updates
- Uses toast utility for user feedback
- Validates dimensions before applying
- Supports linked/unlinked aspect ratio
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implements professional image filter system with real-time preview:
**Adjustments Dialog** (`components/modals/adjustments-dialog.tsx`):
- Live preview canvas (max 400x400px) with real-time filter updates
- Organized filter categories: Color Adjustments, Filters, Effects
- 10 filter types with adjustable parameters:
- **Brightness**: -100 to +100 adjustment
- **Contrast**: -100 to +100 adjustment
- **Hue/Saturation**: Hue rotation (±180°), Saturation (±100%), Lightness (±100%)
- **Blur**: Gaussian blur with radius 1-50px
- **Sharpen**: Amount 0-100%
- **Invert**: One-click color inversion
- **Grayscale**: Convert to monochrome
- **Sepia**: Vintage sepia tone effect
- **Threshold**: Binary black/white with adjustable threshold
- **Posterize**: Reduce colors to 2-256 levels
- Slider controls for all adjustable parameters
- Reset button to restore default values
- Apply/Cancel actions with undo support
- Uses FilterCommand for history integration
**Image Menu** (`components/editor/image-menu.tsx`):
- New "Image" menu in header bar next to "File"
- "Filters & Adjustments..." menu item opens dialog
- Organized location for image-related operations
- Extensible for future image operations
**Integration**:
- Added Image menu to editor layout header
- Positioned between title and controls
- Keyboard-accessible with proper ARIA labels
**Technical Features**:
- Async filter application using Web Workers for large images
- Non-destructive editing with undo/redo support
- Real-time preview updates as sliders adjust
- FilterCommand integration for history
- Canvas cloning for before/after states
- Optimized preview rendering (scaled to 400px max)
**User Experience**:
- Modal dialog with backdrop
- Sidebar filter list with hover states
- Large preview area showing filter results
- Smooth slider interactions
- Instant visual feedback
- Professional Photoshop-like interface
All filters tested and working with undo/redo support.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The text-dialog modal approach was replaced by the on-canvas text editor.
This file referenced old TextStore properties (isDialogOpen, clickPosition)
that no longer exist, causing TypeScript compilation errors.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add complete text rendering system with the following features:
**Text Tool Core:**
- TextTool class with click-to-place text functionality
- Text cursor and pointer event handling
- Integration with DrawCommand for undo/redo support
**Text Rendering:**
- Multi-line text support with line height control
- Custom letter spacing
- Text alignment (left/center/right)
- Font families: 13 web-safe fonts + 14 popular Google Fonts
- Dynamic Google Font loading via Web Font Loader API
- Font styles (normal/italic) and weights (100-900)
**Text Dialog UI:**
- Full-featured text editor dialog
- Live preview of text with all formatting
- Font family selection (web-safe + Google Fonts)
- Font size (8-500px), style, and weight controls
- Color picker with hex input
- Text alignment options
- Line height slider (0.5-3x)
- Letter spacing slider (-10 to 50px)
- Multi-line text input with textarea
**State Management:**
- text-store with Zustand + persist middleware
- All text settings preserved across sessions
- Dialog state management (open/close)
- Click position tracking
**Integration:**
- Added text tool to tool palette with Type icon
- Registered TextTool in canvas tool system
- Added TextDialog to editor layout
- Full type safety with TypeScript interfaces
**Undoable:**
- Text rendering fully integrated with command pattern
- Each text insertion creates single undo point
- Proper before/after state capture
This completes Phase 11 of the implementation plan, marking
the transition from MVP to a fully-featured image editor.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>