mirror of
https://github.com/RedWizardsLab/EchoHub.git
synced 2026-09-04 16:46:08 +02:00
4.6 KiB
4.6 KiB
v0.2.8
Bug Fixes
- Fix memory leak —
HttpResponseMessageobjects never disposed inApiClient, leaking TCP connections and content buffers on every API call (especially on failed connection attempts) - Fix 401 retry leak —
AuthenticatedGetAsync/AuthenticatedRequestAsyncleaked the original response when retrying after token refresh - Fix connection failure cleanup —
ConnectionManager.ConnectAsyncnow properly disposesApiClientandEchoHubConnectionon any failure path (previously only cleaned up on saved-token auth failures) - Fix IRC gateway sending UTF-8 BOM on first message, breaking CAP negotiation and SASL auth for all clients
- Handle
AUTHENTICATE *(SASL abort) instead of crashing on invalid base64 - Fix userlist not refreshing when creating a new channel — now fetches online users after channel creation
- Fix unmute timer not working — add
MuteExpirationServicebackground job that proactively unmutes users when their timed mute expires (previously only checked on message send) - Fix missing space between mod/admin role icon and username in the userlist
- Fix invisible users still visible in the userlist —
GetOnlineUsersAsyncnow filters invisible users; server skipsUserJoinedbroadcast for invisible users - Fix invisible→online transition — user reappears in cached userlist when switching from invisible back to a visible status
- Fix thread safety —
_channelUserspresence cache now protected byLockto prevent races between SignalR events and background fetches - Fix
@mentionregex matching email addresses and#channelregex matching hex colors / issue numbers — both now use lookbehind and letter-requirement guards - Fix
ParseThemeColoraccepting non-hex characters — now validates[0-9a-fA-F]digits - Fix ghost channel when trying to join a channel that doesn't exist
New Features
- Add Docker support for EchoHub.Server —
docker compose up -dfor easy self-hosting with persistent volume for database, uploads, and logs - IRC account creation — connecting with a new username auto-registers the account (PASS and SASL PLAIN)
- Auto-updater rollback — pre-update backup created automatically before each update; restore via File > Rollback menu or
--rollbackCLI flag - Update failure recovery — if an update fails mid-extraction, offers to restore from the backup immediately
- Defensive Unix permission check — verify execute permission on startup after auto-update (defense-in-depth)
- Clickable usernames — press Enter on a username in the userlist or message sender to view their profile
- Clickable @mentions — press Enter on a message containing
@usernameto open that user's profile - Clickable #channels — press Enter on a message containing
#channelto join/switch to that channel;#channelreferences are now highlighted in chat - Embed theme colors — embed vertical border line now uses the source site's
theme-colormeta tag when available - Stateful userlist — user presence is cached per channel and updated incrementally via SignalR events instead of re-fetching the full list on every join/leave/status change
Security
- Restrict file auto-open — only safe file types (video, PDF, text) are opened with the system default app; all other files are downloaded to temp without executing (prevents script execution via
.bat,.exe, etc.)
Refactoring
- Extract
IUserService/UserService— consolidate user registration, authentication, and profile management into a dedicated service, eliminating duplicated logic betweenAuthControllerandChatService - IRC gateway now checks ban status during authentication (previously skipped)
- EchoHubSpace directory updates — server now only sends user count when it actually changes instead of every 30 seconds
ChatHub.JoinChannelnow returnsJoinChannelResultinstead ofList<MessageDto>to allow for better error handling
Distribution
- Add Chocolatey package —
choco install echohubfor Windows users, auto-published from CI on each release - Add Linux/macOS install script —
curl -sSfL .../install.sh | shwith automatic OS/arch detection
Documentation
- Add Flows section — Mermaid sequence diagrams documenting all major request/event flows (auth, connection, messaging, channels, moderation, file upload, link embeds, server directory) with inline code references
CI
- Add Docker workflow — builds and pushes multi-arch (
amd64/arm64) server image to GHCR on release - Add
linux-arm64builds to release pipeline — server and client binaries for ARM Linux (Raspberry Pi, cloud ARM instances) - Automate Chocolatey package publishing in release workflow (checksum calculation, pack, push)