|
7 | 7 | [](https://go.dev/dl/) |
8 | 8 | [](https://github.com/Cod-e-Codes/marchat/releases) |
9 | 9 | [](https://hub.docker.com/r/codecodesxyz/marchat) |
10 | | -[](https://github.com/Cod-e-Codes/marchat/releases/tag/v0.11.0-beta.3) |
| 10 | +[](https://github.com/Cod-e-Codes/marchat/releases/tag/v0.11.0-beta.4) |
11 | 11 |
|
12 | 12 | A lightweight terminal chat with real-time messaging over WebSockets, optional E2E encryption, and a flexible plugin ecosystem. Built for developers who prefer the command line. |
13 | 13 |
|
14 | 14 | **Quick start:** [QUICKSTART.md](QUICKSTART.md) for a single-page walkthrough (install → server → client → next docs). |
15 | 15 |
|
16 | 16 | ## Latest Updates |
17 | 17 |
|
18 | | -### v0.11.0-beta.3 (Current) |
| 18 | +### v0.11.0-beta.4 (Current) |
19 | 19 |
|
20 | | -**Released 2026-04-09.** Changes since **[v0.11.0-beta.2](https://github.com/Cod-e-Codes/marchat/releases/tag/v0.11.0-beta.2)**; compare on GitHub: [`v0.11.0-beta.2...v0.11.0-beta.3`](https://github.com/Cod-e-Codes/marchat/compare/v0.11.0-beta.2...v0.11.0-beta.3). For the commit list (newest-first): **`git log v0.11.0-beta.2..v0.11.0-beta.3 --oneline`** (append **`--reverse`** for oldest-first). |
| 20 | +**Released 2026-04-09.** Since **[v0.11.0-beta.3](https://github.com/Cod-e-Codes/marchat/releases/tag/v0.11.0-beta.3)**; compare [`v0.11.0-beta.3...v0.11.0-beta.4`](https://github.com/Cod-e-Codes/marchat/compare/v0.11.0-beta.3...v0.11.0-beta.4). Commits: **`git log v0.11.0-beta.3..v0.11.0-beta.4 --oneline`**. |
21 | 21 |
|
22 | | -#### Client and configuration |
23 | | -- **Profiles**: Dedupe display names on load; default **Profile-N** naming when adding profiles. |
24 | | -- **Paths**: **`GetConfigPath`** honors **`MARCHAT_CONFIG_DIR`** (same resolution idea as **`ResolveClientConfigDir()`**). |
25 | | -- **Keystore**: Portable **v3** format (random salt in file header); legacy path-based PBKDF2 salt migrates on unlock; see **ARCHITECTURE.md** / **PROTOCOL.md** (very old clients may need a current build to read migrated files). |
26 | | -- **Keystore location**: **`GetKeystorePath`** prefers the resolved config directory and the standard per-user **`keystore.dat`** before legacy **`./keystore.dat`** in the process working directory, so a stray file in a git clone does not override your real profile key (**README.md** → Client vs server config; **ARCHITECTURE.md**). |
27 | | -- **Hardening**: Broader client UX and crypto-path fixes alongside server send-path hardening (see commit **`5feb098`** on `main`). |
| 22 | +- **E2E**: Message edits keep ciphertext and **`is_encrypted`** consistent. |
| 23 | +- **Themes**: Deterministic **`:themes`** / **Ctrl+T** order (built-ins then custom keys in `themes.json`); **[THEMES.md](THEMES.md)**. |
| 24 | +- **Docs**: Container/SBOM scanners vs **`govulncheck`** and **pgx** CVE metadata (**SECURITY.md**, **README**). |
| 25 | +- **Repo**: **`.gitattributes`** LF enforcement and renormalized text files. |
28 | 26 |
|
29 | | -#### Server and web admin |
30 | | -- **Startup**: Admin list normalization and startup validation refactored into shared helpers (`cmd/server`, **`config`** validation). |
31 | | -- **Web admin**: Sidebar layout, dark theme, confirmation modals (**`server/admin_web.html`** / related Go). |
32 | | -- **Sessions**: Web admin prefers **`MARCHAT_SESSION_SECRET`** ( **`MARCHAT_JWT_SECRET`** remains a deprecated alias); assorted doc fixes for current behavior. |
33 | | -- **Reliability**: Hardened server send paths and related trust/config boundaries (same wave as client fixes above). |
| 27 | +### v0.11.0-beta.3 |
34 | 28 |
|
35 | | -#### Plugins |
36 | | -- **SDK**: **`plugin/sdk`** **`Message`** carries channel, encryption, and DM context for richer plugin chat integration. |
37 | | -- **Host**: Plugin replies flow through **`ConvertPluginMessage`**; **`StopPlugin`** data race fixed; decode loop exits cleanly on closed pipe (quieter CI logs). |
38 | | -- **Docs**: Plugin message routing, type chaining, and encrypted delivery (**ARCHITECTURE.md** / **PROTOCOL.md** references where applicable). |
39 | | - |
40 | | -#### Documentation and demos |
41 | | -- **README**: Five current GIF demos with section headings (replaces older demo assets). |
42 | | -- **E2E narrative**: Docs aligned with the **global ChaCha20-Poly1305** design; unused **X25519** API removed from the tree. |
43 | | -- **Operations**: Troubleshooting and **`-doctor`** / diagnostics text refreshed to match current flags and env behavior. |
44 | | - |
45 | | -#### CI, releases, and local build scripts |
46 | | -- **Releases**: **`gh release upload`** for matrix **`.zip`** assets and **`gh release edit`** for the Docker Hub blurb; workflow documentation; shell/Docker sources normalized to LF where needed. |
47 | | -- **CI**: **`database-smoke`** job (Postgres + MySQL) for **`InitDB`** / **`CreateSchema`** / table checks; MySQL DSN uses a **`mysql:`** / **`mysql://`** prefix so driver detection matches SQLite-style paths; expanded server and plugin manager tests. |
48 | | -- **Scripts**: **`build-release.ps1`** includes a **darwin/arm64** build target. |
49 | | - |
50 | | -#### Toolchain and security |
51 | | -- **Go 1.25.9** in **`go.mod`**, GitHub Actions, and the **Docker** builder image clears **govulncheck**-listed standard-library issues from **Go 1.25.8** (**crypto/tls**, **crypto/x509**, **archive/tar**, **html/template**, etc.). See **SECURITY.md** for scanner notes: container/SBOM scans often flag dependency **presence** in the image/binary; **`govulncheck ./...`** checks **reachability**. Package-level **pgx** findings (for example **CVE-2026-33815** / **CVE-2026-33816**) may persist while advisory **fixed-version** metadata lags; marchat ships **pgx** v5.9.0+ with related upstream protocol fixes, and default **`govulncheck ./...`** reports no reachable vulnerable call paths. |
52 | | - |
53 | | -### Unreleased (main; not in v0.11.0-beta.3 yet) |
54 | | - |
55 | | -- **Client themes**: **`:themes`** and **Ctrl+T** use a deterministic order—built-ins `system` → `patriot` → `retro` → `modern`, then custom themes sorted alphabetically by JSON key in `themes.json` ([THEMES.md](THEMES.md)). |
| 29 | +**Released 2026-04-09.** [Compare from beta.2](https://github.com/Cod-e-Codes/marchat/compare/v0.11.0-beta.2...v0.11.0-beta.3). Keystore v3 and config/path fixes; web admin refresh; plugin SDK context and host fixes; DB smoke CI; Go 1.25.9; demos, E2E docs, and release asset workflow updates. |
56 | 30 |
|
57 | 31 | ### v0.11.0-beta.2 |
58 | | -- **Go 1.25.8** across CI, Docker, and docs; **SECURITY.md** updates (supported versions, edwards25519 note) |
59 | | -- **UX**: Terminal-native chrome (reaction/message emoji unchanged); **Alt+M** / **`:msginfo`** toggle message metadata; colorized server banner and client pre-TUI (**`NO_COLOR`** respected) |
60 | | -- **Doctor**: TTY color for text mode; server **`MARCHAT_*`** reflects **`config/.env`**; docs for **`-doctor-json`** / **`NO_COLOR`** |
61 | | -- **Server**: Hardened license cache, username reservation, DB backup SQL; **CI**: static release builds; published releases attach zips with **`gh release upload`** and append the Docker blurb with **`gh release edit`** (avoids Node 20–labeled JS actions); **Termux** → **linux-arm64** assets |
| 32 | + |
| 33 | +Go 1.25.8 toolchain/docs; **`-doctor`** and env reflection improvements; terminal chrome and **`:msginfo`** metadata; license cache and server hardening; static release zips + **linux-arm64** for Termux. |
62 | 34 |
|
63 | 35 | ### Earlier |
64 | | -- **v0.11.0-beta.1**: **[PR #83](https://github.com/Cod-e-Codes/marchat/pull/83)**: SQLite / PostgreSQL / MySQL, durable reactions & read receipts, message-state layer; release **`resolve-version`** + static builds; serialized WS writes; admin TUI & doctor DB checks (see **ARCHITECTURE.md**, **PROTOCOL.md**) |
65 | | -- **v0.10.0-beta.3**: Caddy TLS proxy sample ([**deploy/CADDY-REVERSE-PROXY.md**](deploy/CADDY-REVERSE-PROXY.md)), client WSS/TLS & direct-connect UX, **`config/.env`** precedence docs |
66 | | -- **v0.10.0-beta.2**: **`-doctor`** / **`-doctor-json`**, **`CGO_ENABLED=0`** builds, sqlite bump, Docker entrypoint & volume permissions |
67 | | -- **v0.10.0-beta.1**: Edit/delete/pin/search, reactions, DMs, channels, typing, E2E files, plugins, rate limits, Docker Compose; client modularization |
| 36 | + |
| 37 | +- **v0.11.0-beta.1**: Multi-DB (SQLite / Postgres / MySQL), reactions, read receipts, message state, serialized WS writes, admin TUI ([PR #83](https://github.com/Cod-e-Codes/marchat/pull/83)). |
| 38 | +- **v0.10.x**: Core chat features (edit/delete/pin/search, DMs, channels, E2E files, plugins), **`-doctor`**, Docker, Caddy TLS proxy docs ([**deploy/CADDY-REVERSE-PROXY.md**](deploy/CADDY-REVERSE-PROXY.md)), **`config/.env`** precedence. |
68 | 39 |
|
69 | 40 | Full changelog on [GitHub releases](https://github.com/Cod-e-Codes/marchat/releases). |
70 | 41 |
|
@@ -180,24 +151,24 @@ Tables created by the server (dialect-aware DDL for SQLite, PostgreSQL, and MySQ |
180 | 151 | **Binary Installation:** |
181 | 152 | ```bash |
182 | 153 | # Linux (amd64) |
183 | | -wget https://github.com/Cod-e-Codes/marchat/releases/download/v0.11.0-beta.3/marchat-v0.11.0-beta.3-linux-amd64.zip |
184 | | -unzip marchat-v0.11.0-beta.3-linux-amd64.zip && chmod +x marchat-* |
| 154 | +wget https://github.com/Cod-e-Codes/marchat/releases/download/v0.11.0-beta.4/marchat-v0.11.0-beta.4-linux-amd64.zip |
| 155 | +unzip marchat-v0.11.0-beta.4-linux-amd64.zip && chmod +x marchat-* |
185 | 156 |
|
186 | 157 | # macOS (amd64) |
187 | | -wget https://github.com/Cod-e-Codes/marchat/releases/download/v0.11.0-beta.3/marchat-v0.11.0-beta.3-darwin-amd64.zip |
188 | | -unzip marchat-v0.11.0-beta.3-darwin-amd64.zip && chmod +x marchat-* |
| 158 | +wget https://github.com/Cod-e-Codes/marchat/releases/download/v0.11.0-beta.4/marchat-v0.11.0-beta.4-darwin-amd64.zip |
| 159 | +unzip marchat-v0.11.0-beta.4-darwin-amd64.zip && chmod +x marchat-* |
189 | 160 |
|
190 | 161 | # Windows - PowerShell |
191 | 162 | iwr -useb https://raw.githubusercontent.com/Cod-e-Codes/marchat/main/install.ps1 | iex |
192 | 163 | ``` |
193 | 164 |
|
194 | 165 | **Docker:** |
195 | 166 | ```bash |
196 | | -docker pull codecodesxyz/marchat:v0.11.0-beta.3 |
| 167 | +docker pull codecodesxyz/marchat:v0.11.0-beta.4 |
197 | 168 | docker run -d -p 8080:8080 \ |
198 | 169 | -e MARCHAT_ADMIN_KEY=$(openssl rand -hex 32) \ |
199 | 170 | -e MARCHAT_USERS=admin1,admin2 \ |
200 | | - codecodesxyz/marchat:v0.11.0-beta.3 |
| 171 | + codecodesxyz/marchat:v0.11.0-beta.4 |
201 | 172 | ``` |
202 | 173 |
|
203 | 174 | **Docker Compose (local development):** |
|
0 commit comments