v0.2.10
Follow-up patch release for v0.2.9 addressing auto-updater regressions, adding a command palette, infinite-scroll message history, and input polish.
New Features
- Command palette — press Ctrl+K from the message input (or anywhere in the main window) to open a searchable dialog for navigating channels and triggering app actions (connect, disconnect, logout, profile, status, create/delete channel, saved servers, toggle users panel, check for updates, quit). Fuzzy matches against both the label and the underlying key so typing
chsurfaces channel actions alongside#channelentries - Scroll-to-load message history — scrolling to the top of a channel now fetches the next batch of older messages in the background (previously only the most recent 100 messages were available). Duplicate messages are filtered by ID, a per-channel guard prevents concurrent fetches, and the scroll position is preserved after the prepend so your reading position doesn't jump
Bug Fixes
- Fix update progress dialog freezing / not repainting — progress callbacks now run on the UI thread so the download and extraction percentage actually updates while an update is in progress
- Fix pre-update backup failing when a Serilog-held log file is locked —
UpdateBackupServicenow enumerates files manually, skips thelogs/directory and.logfiles, and logs-and-continues onIOException/UnauthorizedAccessExceptioninstead of aborting the whole backup - Simplify update progress dispatch — remove redundant
Application.Invokewrappers around progress updates that are already called from the UI thread (introduced while fixing the freeze above) - Fix cursor position being reset to the start of the line when auto-completing commands in the CLI app — insertion point is now moved to the end of the completed text
- Fix notification sounds crashing or being silently dropped when several arrive in quick succession — playback is now serialized through a semaphore that's held for the duration of each sound (using
PlaybackFinishedwith a 10s safety timeout) and always released infinally, so back-to-back notifications queue up and play in order instead of racing the underlying audio player (fixes #20) - Fix client crashing on startup with
No Serilog:Using configuration section is definedunder single-file publish — passConfigurationReaderOptionswith theSerilog.Sinks.Fileassembly explicitly so Serilog can resolve sinks without scanning the filesystem for.dlls (which don't exist in a bundled exe)
Refactoring
- Move search-dialog dispatch out of
MainWindowintoAppOrchestrator—MainWindownow just raisesOnSearchRequested, keeping the view dumb and letting the orchestrator own navigation/action routing ChatHub.GetChannelHistoryandIChatService.GetChannelHistoryAsyncgain an additionaloffsetparameter for paginated history loading (defaults to0— existing callers are unaffected)ValidationConstants.MaxHistoryCountraised from100to200so power users and paginated fetches can request larger batches;DefaultHistoryCountstays at100