From ae342381e04a76f08728893ee5104896a195b521 Mon Sep 17 00:00:00 2001
From: HueByte
Date: Tue, 24 Feb 2026 22:50:29 +0100
Subject: [PATCH] fix: update release workflow and README badges; reorganize
table of contents
---
.github/workflows/release.yml | 2 +-
README.md | 49 ++++++++++++++++++++++++++---------
docs/articles/toc.yml | 24 ++++++++++-------
docs/toc.yml | 3 ---
4 files changed, 52 insertions(+), 26 deletions(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 5ede6e6..ecbd4b8 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -56,7 +56,7 @@ jobs:
if: steps.changes.outputs.src_changed == 'true' && steps.check_release.outputs.exists == 'false'
uses: actions/setup-dotnet@v4
with:
- dotnet-version: '10.0.x'
+ dotnet-version: "10.0.x"
- name: Publish Server win-x64
if: steps.changes.outputs.src_changed == 'true' && steps.check_release.outputs.exists == 'false'
diff --git a/README.md b/README.md
index 0f24a3a..49868ad 100644
--- a/README.md
+++ b/README.md
@@ -27,12 +27,14 @@
+
+
+
+
-
-
-
-
+
+
---
@@ -76,10 +78,12 @@ graph TD
### Server
- **Self-hostable** — your server, your rules, your data
+- **Docker ready** — `docker compose up -d` and you're done
- **Real-time messaging** via SignalR WebSockets
- **IRC gateway** — native IRC clients connect alongside TUI users, full cross-protocol messaging
- **JWT auth** with short-lived access tokens and 30-day refresh tokens
- **Channels** — create, set topics, delete (no 47-step permission wizard required)
+- **Moderation** — ban, mute (timed or permanent), kick, role assignment
- **File & image uploads** with actual validation (magic bytes, not just trusting the extension)
- **Image-to-ASCII** — because images in a terminal is objectively cool
- **Presence tracking** — online/away/DND/invisible with custom status messages
@@ -94,34 +98,55 @@ graph TD
- **13 built-in themes** — including `hacker` for when you want to feel like you're in a movie
- **Slash commands** — `/join`, `/send`, `/status`, `/theme`, etc.
- **Colored nicknames** — pick your hex color, express yourself
+- **Clickable everything** — usernames, @mentions, #channels — just press Enter
- **File/image sharing** — local files or URLs
- **Multi-server** — save and switch between servers
- **Auto-reconnect** — drops happen, it rejoins your channels automatically
+- **Auto-updater** — updates in-place with automatic rollback if something goes wrong
- **Message history** on join — you won't miss context
## Getting Started
-### Download
+### Install the Client
-Grab a self-contained binary from [Releases](../../releases) — no runtime needed, just run it.
+**Windows (Chocolatey):**
-### Prerequisites (for development)
+```bash
+choco install echohub
+```
-- [.NET 10 SDK](https://dotnet.microsoft.com/download)
+**Linux / macOS:**
-### Run the Server
+```bash
+curl -sSfL https://raw.githubusercontent.com/HueByte/EchoHub/master/scripts/install.sh | sh
+```
+
+**Manual download:** grab a self-contained binary from [Releases](../../releases) — no runtime needed, just run it.
+
+### Host a Server
+
+**Docker (recommended):**
+
+```bash
+cp .env.example .env
+docker compose up -d
+```
+
+Pre-built images on [GHCR](https://github.com/HueByte/EchoHub/pkgs/container/echohub-server) — `linux/amd64` and `linux/arm64`.
+
+**From source:**
```bash
dotnet run --project src/EchoHub.Server
```
-First run does everything for you:
+Requires [.NET 10 SDK](https://dotnet.microsoft.com/download). First run does everything for you:
1. Creates `appsettings.json` from the example config
2. Generates a secure JWT secret
3. Creates the database with a `#general` channel
-### Run the Client
+### Run the Client (from source)
```bash
dotnet run --project src/EchoHub.Client
@@ -165,7 +190,7 @@ irssi -c your-server.com -p 6667 -w -n
/connect echohub
```
-IRC users must have an existing EchoHub account (no registration via IRC). Auth works via `PASS`/`NICK`/`USER` or SASL PLAIN.
+Auth works via `PASS`/`NICK`/`USER` or SASL PLAIN. New usernames are auto-registered on first connect — no separate signup needed.
### What Works
diff --git a/docs/articles/toc.yml b/docs/articles/toc.yml
index b371d95..191edcb 100644
--- a/docs/articles/toc.yml
+++ b/docs/articles/toc.yml
@@ -1,10 +1,14 @@
-- name: Getting Started
- href: getting-started.md
-- name: Docker
- href: docker.md
-- name: Architecture
- href: architecture.md
-- name: Encryption
- href: encryption.md
-- name: Notification Sounds
- href: notification-sounds.md
+- name: Guides
+ items:
+ - name: Getting Started
+ href: getting-started.md
+ - name: Docker
+ href: docker.md
+ - name: Architecture
+ href: architecture.md
+ - name: Encryption
+ href: encryption.md
+ - name: Notification Sounds
+ href: notification-sounds.md
+- name: Flows
+ href: ../flows/toc.yml
diff --git a/docs/toc.yml b/docs/toc.yml
index 7682921..c93ba17 100644
--- a/docs/toc.yml
+++ b/docs/toc.yml
@@ -1,9 +1,6 @@
- name: Articles
href: articles/
homepage: articles/getting-started.md
-- name: Flows
- href: flows/
- homepage: flows/flows.md
- name: Changelog
href: changelog/
homepage: changelog/index.md