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