Files
EchoHub/docs/changelog/v0.2.6.md
T
HueByte c8ea124198 Add hex color parsing helper and implement custom list sources for channels and users
- Introduced HexColorHelper for parsing hex color strings to Terminal.Gui Attributes and Colors.
- Created ChannelListSource for managing and rendering a list of channels with unread counts and active indicators.
- Developed UserListSource for displaying online users with per-user nickname colors.
- Refactored MainWindow to utilize ChatMessageManager for handling messages and channel state.
- Updated project references and removed unused content from the server project.
- Adjusted tests to reflect changes in namespaces and structure.
2026-02-22 08:08:21 +01:00

1.7 KiB

v0.2.6

Refactoring

  • Extracted ChatMessageManager from MainWindow — message storage, formatting, and mutation logic now in a dedicated class, reducing MainWindow complexity
  • Split ChatRenderer.cs (8 classes, 548 lines) into 7 individual files: ChatSegment, ChatLine, ChatListSource, ChannelListSource, UserListSource, ChatColors, ColorHelper, RenderHelpers
  • Extracted ConnectionManager from AppOrchestrator — connection lifecycle, authentication, SignalR event wiring, and channel tracking now in a dedicated service
  • Extracted AvatarHelper — deduplicated avatar upload logic previously duplicated in /avatar command and profile edit dialog
  • Consolidated ProfileEditDialog.ParseHexToTrueColor into shared ColorHelper.ParseHexToColor
  • Extracted UserSession — session state (Username, Status, StatusMessage) now in a dedicated class instead of scattered fields
  • Replaced 21 inline command handler lambdas with named HandleCmd* methods for improved readability
  • Extracted shared CleanupConnectionAsync to deduplicate disconnect/logout cleanup logic
  • Reorganized flat UI/ folder (19 files) into subfolders: Chat/, Dialogs/, ListSources/, Helpers/ with matching namespaces
  • Moved AsyncRunner from project root to Services/ with updated namespace
  • Renamed ColorHelperHexColorHelper to avoid namespace collision with Terminal.Gui's ColorHelper NuGet dependency
  • Moved hue_icon.ico to Client/Assets/, removed duplicate from Server (Server now references shared icon via relative path)

Infrastructure

  • Release workflow: use --notes-file instead of inline --notes interpolation to prevent shell expansion of special characters in commit messages