|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to GhostDraw will be documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | +## v1.0.5 |
| 9 | + |
| 10 | +### Added |
| 11 | +- **Line Tool** - Draw straight lines by clicking two points |
| 12 | + - Press `L` to activate Line tool |
| 13 | + - First click sets start point, second click finalizes the line |
| 14 | + - Real-time preview follows cursor |
| 15 | + - Line thickness and color adjust dynamically with mouse wheel and right-click |
| 16 | +- **Explicit Tool Selection** - Direct keyboard shortcuts for tool switching |
| 17 | + - Press `P` to select Pen tool (freehand drawing) |
| 18 | + - Press `L` to select Line tool (straight lines) |
| 19 | +- **Keyboard Shortcuts Help** - F1 help popup showing all available shortcuts |
| 20 | + - Press `F1` while in drawing mode to display help overlay |
| 21 | + - Shows current activation hotkey combination dynamically |
| 22 | + - Displays all drawing tools, actions, and system shortcuts |
| 23 | + - Auto-fades after 4 seconds with smooth animations |
| 24 | +- **Settings Architecture Improvements** |
| 25 | + - Abstracted settings persistence with `ISettingsStore` interface |
| 26 | + - `FileSettingsStore` for production file-based persistence |
| 27 | + - `InMemorySettingsStore` for isolated unit testing |
| 28 | + - Eliminated file system dependencies from unit tests |
| 29 | + |
| 30 | +### Changed |
| 31 | +- Tool selection now uses explicit methods instead of toggle-only behavior |
| 32 | +- Test suite refactored to use in-memory storage, eliminating test pollution |
| 33 | +- Settings service now uses dependency injection for storage layer |
| 34 | + |
| 35 | +### Fixed |
| 36 | +- Line tool cursor hotspot now correctly positioned at line start point (left circle) |
| 37 | +- Test isolation issues resolved - no more shared file system state |
| 38 | + |
| 39 | +## v1.0.0-v1.0.4 - Initial Releases |
| 40 | + |
| 41 | +### Added |
| 42 | +- **Drawing Mode Activation** |
| 43 | + - Configurable hotkey combination (default: Ctrl+Alt+D) |
| 44 | + - Toggle or hold mode options |
| 45 | +- **Pen Tool** - Freehand drawing with mouse |
| 46 | + - Click and drag to draw smooth polylines |
| 47 | + - Adjustable brush thickness (1-20 pixels) |
| 48 | + - 10-color palette with cycling |
| 49 | +- **Brush Customization** |
| 50 | + - Right-click to cycle through color palette |
| 51 | + - Mouse wheel to adjust brush thickness |
| 52 | + - Real-time thickness indicator overlay |
| 53 | +- **Canvas Management** |
| 54 | + - Press `R` to clear canvas with visual feedback |
| 55 | + - Press `ESC` for emergency exit from drawing mode |
| 56 | + - Canvas spans all monitors in multi-monitor setups |
| 57 | +- **System Tray Integration** |
| 58 | + - Always-running background application |
| 59 | + - Context menu for quick access to settings |
| 60 | + - Log level adjustment from tray |
| 61 | +- **Settings Window** |
| 62 | + - Cyberpunk-themed UI |
| 63 | + - Drawing settings (brush thickness, color palette) |
| 64 | + - Hotkey configuration with visual recorder |
| 65 | + - Mode settings (toggle vs hold) |
| 66 | + - Logging level configuration |
| 67 | +- **Robust Error Handling** |
| 68 | + - Global exception handler prevents system lockout |
| 69 | + - Comprehensive logging with Serilog |
| 70 | + - Safe hook cleanup on exit |
| 71 | +- **Custom Cursors** |
| 72 | + - Colored pencil cursor shows active brush color |
| 73 | + - Line tool cursor with dual circles and connecting line |
| 74 | + |
| 75 | +### Technical Features |
| 76 | +- WPF transparent overlay across all screens |
| 77 | +- Global Windows keyboard/mouse hooks |
| 78 | +- Dependency injection with Microsoft.Extensions.DependencyInjection |
| 79 | +- Structured logging with Serilog |
| 80 | +- Settings persistence in LocalApplicationData |
| 81 | +- .NET 8 target framework |
| 82 | + |
| 83 | +--- |
| 84 | + |
| 85 | +## How to Update This Changelog |
| 86 | + |
| 87 | +When adding new features or fixes: |
| 88 | + |
| 89 | +1. Add entries under the `[Unreleased]` section |
| 90 | +2. Use these categories: |
| 91 | + - `Added` - New features |
| 92 | + - `Changed` - Changes to existing functionality |
| 93 | + - `Deprecated` - Soon-to-be removed features |
| 94 | + - `Removed` - Removed features |
| 95 | + - `Fixed` - Bug fixes |
| 96 | + - `Security` - Security fixes |
| 97 | + |
| 98 | +3. When releasing a new version: |
| 99 | + - Change `[Unreleased]` to `[X.Y.Z] - YYYY-MM-DD` |
| 100 | + - Create a new `[Unreleased]` section at the top |
| 101 | + - Update version numbers according to [Semantic Versioning](https://semver.org/): |
| 102 | + - MAJOR version for incompatible API changes |
| 103 | + - MINOR version for backwards-compatible functionality additions |
| 104 | + - PATCH version for backwards-compatible bug fixes |
| 105 | + |
| 106 | +### Example Entry Format |
| 107 | + |
| 108 | +```markdown |
| 109 | +## [Unreleased] |
| 110 | + |
| 111 | +### Added |
| 112 | +- **Feature Name** - Brief description |
| 113 | + - Detail about feature |
| 114 | + - Another detail |
| 115 | + |
| 116 | +### Fixed |
| 117 | +- Issue description and what was fixed |
| 118 | +``` |
0 commit comments