diff --git a/docs/changelog/index.md b/docs/changelog/index.md index b0b84e2..f0a258b 100644 --- a/docs/changelog/index.md +++ b/docs/changelog/index.md @@ -4,7 +4,7 @@ Release history for EchoHub. ## Releases -- [v0.2.5](v0.2.5.md) - IRC Gateway Fixes & Test Coverage +- [v0.2.5](v0.2.5.md) - Audio Playback, File Downloads & IRC Fixes - [v0.2.4](v0.2.4.md) - E2E Message Encryption - [v0.2.3](v0.2.3.md) - Moderation, Embeds & UI Overhaul - [v0.2.2](v0.2.2.md) - Startup & Shutdown Fixes diff --git a/docs/changelog/v0.2.5.md b/docs/changelog/v0.2.5.md index 63161ab..9279951 100644 --- a/docs/changelog/v0.2.5.md +++ b/docs/changelog/v0.2.5.md @@ -1,4 +1,33 @@ -# v0.2.5 - IRC Gateway Fixes & Test Coverage +# v0.2.5 - Audio Playback, File Downloads & IRC Fixes + +## Features + +### Audio Message Support + +- New `Audio` message type — uploaded audio files (`.mp3`, `.wav`, `.ogg`, `.flac`, `.aac`, `.m4a`, `.wma`) are automatically detected and categorized +- TUI client renders audio messages with `♪ [Audio: filename] (Enter to play)` indicator +- Press Enter on an audio message to play it locally via `AudioPlaybackService` (NetCoreAudio) +- IRC gateway formats audio messages as `♪ [Audio: filename] url` +- Server detects audio files by extension via `FileValidationHelper.IsAudioFile()` + +### File Downloads + +- Press Enter on a file message in the TUI client to download it to the local machine +- `ApiClient.DownloadFileAsync()` streams file downloads from the server +- File and audio messages in the chat list now show colored indicators with interaction hints + +### File Cleanup Service + +- `FileCleanupService` (BackgroundService) periodically removes old uploaded files +- Configurable via `Storage:CleanupIntervalHours` (default 1h) and `Storage:RetentionDays` (default 30d) + +### Data Migration Service + +- `DataMigrationService` runs at startup to handle schema/data evolution +- Ensures `#general` channel and pre-existing channels are marked public +- Migrates legacy ANSI escape codes in image messages to printable color tags (`{F:RRGGBB}`, `{B:RRGGBB}`, `{X}`) +- Migrates legacy single-object `EmbedJson` to array format +- Promotes usernames listed in `Server:Admins` config to Admin role ## Fixes @@ -10,5 +39,8 @@ ## Infrastructure -- IRC abstraction layer test suite: IrcMessage parsing, IrcMessageFormatter, IrcClientConnection, IrcCommandHandler, IrcBroadcaster (214 total tests) +- Audio MIME types in `FilesController` (mp3, wav, ogg, flac, aac, m4a, wma) +- Test suites: ChatLine, CommandHandler, DataMigrationService, FileValidationHelper, ImageToAsciiService, IrcMessageFormatter, JwtTokenService, LinkEmbedService +- IRC abstraction layer test suite: IrcMessage parsing, IrcMessageFormatter, IrcClientConnection, IrcCommandHandler, IrcBroadcaster - Test helpers: `TestDuplexStream`, `TestIrcConnectionFactory`, `FakeChatService`, `FakeEncryptionService` for IRC unit testing without network I/O +- 214 total tests