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 @@

+ Build + Release + Chocolatey + Docker .NET 10 - SignalR - SQLite - License Terminal.Gui - Electron + License + Repo size

--- @@ -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