Skip to content

Releases: Cod-e-Codes/marchat

v1.3.4

Choose a tag to compare

@Cod-e-Codes Cod-e-Codes released this 03 Aug 20:32

v1.3.4

Released: 3 August 2026
Commit: e76adb9

Server

  • File uploads: Fix oversized uploads under the WebSocket DoS read ceiling (32 MiB) get a System reply on a live connection; SetReadLimit sits above policy wire size so gorilla does not close with empty 1009 before the reply can flush. Residual over-ceiling reads log ErrReadLimit only (#114 follow-up)

Documentation

  • PROTOCOL, TESTING, and README document DoS ceiling vs policy reject; main-module coverage refreshed to 46.3%

Version and packaging

  • Install and build defaults: install.ps1, install.sh, build-release.ps1, scripts/build-windows.ps1, and scripts/build-linux.sh target v1.3.4 release assets on GitHub.
  • Docs and metadata: SECURITY.md and README (version badge, install snippets, Docker tag) reference v1.3.4; canonical Homebrew, Scoop, winget, Chocolatey, and AUR templates in packaging/ target v1.3.4 (refresh zip SHA256 from published assets before choco pack / manifest validation).
  • Post-release helper: scripts/post-release-v1.3.4.ps1 for Chocolatey checksum sync and manifest render after assets upload.

Assets

  • marchat-v1.3.4-linux-amd64.zip
  • marchat-v1.3.4-linux-arm64.zip
  • marchat-v1.3.4-windows-amd64.zip
  • marchat-v1.3.4-darwin-amd64.zip
  • marchat-v1.3.4-darwin-arm64.zip

Full Changelog: v1.3.3...v1.3.4

Breaking changes

  • WebSocket JSON protocol: No intentional breaking change; keystore and E2E wire encoding unchanged.

Migration guide

  • Binaries: use v1.3.4 archives from this release page, or install.ps1 / install.sh with their default version.
  • Client / server: restart after upgrade; no database schema changes in this release.
  • Operators on v1.3.3: upgrade the server for the client-facing oversized-file System message; marchat clients already map close 1009 from v1.3.3.
  • Packaging maintainers: run scripts/post-release-v1.3.4.ps1 or packaging/ci/render-release-manifests.sh after zips publish to refresh SHA256 in packaging/ and downstream manifests.

Docker Image

A multi-architecture Docker image (linux/amd64, linux/arm64) is available on Docker Hub:

docker pull codecodesxyz/marchat:v1.3.4
# or use latest tag
docker pull codecodesxyz/marchat:latest

v1.3.3

Choose a tag to compare

@Cod-e-Codes Cod-e-Codes released this 03 Aug 19:44

v1.3.3

Released: 3 August 2026
Commit: 0e8a2e0

Server

  • File uploads: Fix oversized file WebSocket messages use explicit read-limit handling with correct rejection logging; read limit accounts for base64 JSON wire size; rejects declared size and actual payload length above the limit; sends a System reply when the connection is still writable (#114)

Note: v1.3.3 improved rejection logging and the client 1009 banner, but a System chat reply for wire-oversized uploads often did not reach clients (gorilla closes with empty 1009 before the reply can flush). Upgrade to v1.3.4 for the client-facing System message fix.

Client

  • File uploads: Fix WebSocket close 1009 (message too big) shows a file-size error instead of a generic reconnect warning

Plugins

  • Archive extraction: Fix zip/tar extraction uses os.OpenRoot scoped writes and filepath.IsLocal entry validation (CodeQL go/zipslip)

Dependencies

  • modernc.org/sqlite v1.55.0 (SQLite 3.53.3; modernc.org/libc v1.74.1)
  • github.com/mattn/go-runewidth v0.0.27

Documentation

  • PROTOCOL and TESTING document file rejection behavior; main-module coverage refreshed to 46.4%

Version and packaging

  • Install and build defaults: install.ps1, install.sh, build-release.ps1, scripts/build-windows.ps1, and scripts/build-linux.sh target v1.3.3 release assets on GitHub.
  • Docs and metadata: SECURITY.md and README (version badge, install snippets, Docker tag) reference v1.3.3; canonical Homebrew, Scoop, winget, Chocolatey, and AUR templates in packaging/ target v1.3.3 (refresh zip SHA256 from published assets before choco pack / manifest validation).
  • Post-release helper: scripts/post-release-v1.3.3.ps1 for Chocolatey checksum sync and manifest render after assets upload.

Assets

  • marchat-v1.3.3-linux-amd64.zip
  • marchat-v1.3.3-linux-arm64.zip
  • marchat-v1.3.3-windows-amd64.zip
  • marchat-v1.3.3-darwin-amd64.zip
  • marchat-v1.3.3-darwin-arm64.zip

Full Changelog: v1.3.2...v1.3.3

Breaking changes

  • WebSocket JSON protocol: No intentional breaking change; keystore and E2E wire encoding unchanged.

Migration guide

  • Binaries: use v1.3.3 archives from this release page, or install.ps1 / install.sh with their default version.
  • Client / server: restart after upgrade; no database schema changes in this release.
  • Operators on v1.3.2: upgrade server and client together if file uploads are used; plugin installs benefit from archive extraction hardening.
  • Packaging maintainers: run scripts/post-release-v1.3.3.ps1 or packaging/ci/render-release-manifests.sh after zips publish to refresh SHA256 in packaging/ and downstream manifests.

Docker Image

A multi-architecture Docker image (linux/amd64, linux/arm64) is available on Docker Hub:

docker pull codecodesxyz/marchat:v1.3.3
# or use latest tag
docker pull codecodesxyz/marchat:latest

v1.3.2

Choose a tag to compare

@Cod-e-Codes Cod-e-Codes released this 15 Jul 16:00

v1.3.2

Released: 15 July 2026
Commit: d1efa76

Server

  • Sender stamping: Security server overwrites client-supplied sender on text and file outbound paths (stampSenderTimedOutbound in server/client.go)
  • Content validation: Security rejects NUL bytes in persistable content before insert (server/message_validate.go)
  • Persist failure: Security does not broadcast when message persistence fails (server/client.go)

Client

  • Desktop notifications: Security Windows toast XML built in Go with xml.EscapeText and shown via powershell -EncodedCommand; macOS osascript uses strconv.Quote string literals (no shell interpolation of wire content) (client/notification_desktop.go)

Documentation

  • Trust boundaries: PROTOCOL, SECURITY, ARCHITECTURE, and TESTING document server sender stamping and safe desktop notification paths for untrusted wire content

Version and packaging

  • Install and build defaults: install.ps1, install.sh, build-release.ps1, scripts/build-windows.ps1, and scripts/build-linux.sh download and build against v1.3.2 release assets on GitHub.
  • Docs and metadata: SECURITY.md and README (version badge, install snippets, Docker tag) reference v1.3.2; canonical Homebrew, Scoop, winget, Chocolatey, and AUR templates in packaging/ target v1.3.2 (refresh zip SHA256 from published assets before choco pack / manifest validation).
  • Post-release helper: scripts/post-release-v1.3.2.ps1 for Chocolatey checksum sync and manifest render after assets upload.

Assets

  • marchat-v1.3.2-linux-amd64.zip
  • marchat-v1.3.2-linux-arm64.zip
  • marchat-v1.3.2-windows-amd64.zip
  • marchat-v1.3.2-darwin-amd64.zip
  • marchat-v1.3.2-darwin-arm64.zip

Full Changelog: v1.3.1...v1.3.2

Breaking changes

  • WebSocket JSON protocol: No intentional breaking change; keystore and E2E wire encoding unchanged.

Migration guide

  • Binaries: use v1.3.2 archives from this release page, or install.ps1 / install.sh with their default version.
  • Client / server: restart after upgrade; no database schema changes in this release.
  • Operators on v1.3.1: upgrade the server if untrusted clients can connect (sender stamping fix); upgrade the client if desktop notifications are enabled (Alt+N).
  • Packaging maintainers: run scripts/post-release-v1.3.2.ps1 or packaging/ci/render-release-manifests.sh after zips publish to refresh SHA256 in packaging/ and downstream manifests.

Docker Image

A multi-architecture Docker image (linux/amd64, linux/arm64) is available on Docker Hub:

docker pull codecodesxyz/marchat:v1.3.2
# or use latest tag
docker pull codecodesxyz/marchat:latest

v1.3.1

Choose a tag to compare

@Cod-e-Codes Cod-e-Codes released this 14 Jul 04:55

v1.3.1

Released: 14 July 2026
Commit: 3088ebc

Server

  • Handshake replay: Fix history replay sets type: "text" on channel messages so reconnect scrollback renders in the client (was omitted due to zero-value omitempty) (server/handlers.go)

Toolchain and dependencies

  • Go: 1.25.12 in go.mod, nested plugin modules, CI, and Dockerfile (stdlib fixes for reachable GO-2026-5856 / crypto/tls ECH privacy leak and package-level GO-2026-4970 / os symlink escape reported by govulncheck on 1.25.11)
  • Dependencies: charm.land/bubbles/v2 v2.1.1 (textarea prompt styling fix); golang.org/x/crypto v0.54.0; golang.org/x/term v0.45.0 (transitive golang.org/x/sys v0.47.0, golang.org/x/text v0.40.0, github.com/sahilm/fuzzy v0.1.3)

Version and packaging

  • Install and build defaults: install.ps1, install.sh, build-release.ps1, scripts/build-windows.ps1, and scripts/build-linux.sh download and build against v1.3.1 release assets on GitHub.
  • Docs and metadata: SECURITY.md and README (version badge, install snippets, Docker tag) reference v1.3.1; canonical Homebrew, Scoop, winget, Chocolatey, and AUR templates in packaging/ target v1.3.1 (refresh zip SHA256 from published assets before choco pack / manifest validation).
  • Post-release helper: scripts/post-release-v1.3.1.ps1 for Chocolatey checksum sync and manifest render after assets upload.

Assets

  • marchat-v1.3.1-linux-amd64.zip
  • marchat-v1.3.1-linux-arm64.zip
  • marchat-v1.3.1-windows-amd64.zip
  • marchat-v1.3.1-darwin-amd64.zip
  • marchat-v1.3.1-darwin-arm64.zip

Full Changelog: v1.3.0...v1.3.1

Breaking changes

  • WebSocket JSON protocol: No intentional breaking change; keystore and E2E wire encoding unchanged.

Migration guide

  • Binaries: use v1.3.1 archives from this release page, or install.ps1 / install.sh with their default version.
  • Client / server: restart after upgrade; no database schema changes in this release.
  • Operators on v1.3.0: upgrade server and client together if reconnect scrollback appeared blank after login (history replay type fix).
  • Packaging maintainers: run scripts/post-release-v1.3.1.ps1 or packaging/ci/render-release-manifests.sh after zips publish to refresh SHA256 in packaging/ and downstream manifests.

Docker Image

A multi-architecture Docker image (linux/amd64, linux/arm64) is available on Docker Hub:

docker pull codecodesxyz/marchat:v1.3.1
# or use latest tag
docker pull codecodesxyz/marchat:latest

v1.3.0

Choose a tag to compare

@Cod-e-Codes Cod-e-Codes released this 06 Jul 15:58

v1.3.0

Released: 6 July 2026
Commit: 1b78dee

Client

  • Charm v2 migration: Bubble Tea, Bubbles, and Lip Gloss on charm.land/*/v2 (tea.View, KeyPressMsg, bubbles setters) (client/main.go, client/render.go)
  • Transcript wrap: ANSI-aware word-wrap for chat bodies; long URLs wrap at path boundaries with hyperlink style and OSC 8 Style.Hyperlink hrefs (ASCII hyphens) (client/render.go)
  • Wrapped URL clicks: Mouse click-to-open fallback for wrapped URLs; OSC 8 terminals should use embedded hyperlinks; copy from message otherwise (#103)
  • Reactions: Aliases thumbsup / thumbsdown and commands :unreact, :thumbsup, :thumbsdown (client/commands.go)
  • E2E search: When encryption is on and server search returns no matches, a System line notes ciphertext-only matching (client/main.go)
  • Composer and viewport: Fix composer chrome, multiline keys, placeholder cursor, and scroll-to-tail follow; mouse wheel routes to the active viewport (client/main.go)
  • Overlays: Help and DB overlays suppress typing, URL clicks, and read-receipt flush until closed (client/main.go)
  • System feedback: Ephemeral System command feedback uses the banner; transcript notices stay channel-scoped (client/main.go, client/render.go)
  • Reconnect: Backoff advances on failure; transcript notices, reactions, and read receipts stay channel-scoped after reconnect (client/websocket.go, client/main.go)
  • E2E logging: E2E paths do not log plaintext (client/)

Server

  • Handshake replay: Replay up to 50 visible messages on every handshake, including reconnect (server/hub.go, server/handlers.go)
  • Channel stamping: Outbound messages stamped to the sender's channel; typing, reactions, and read receipts channel-scoped (server/hub.go, server/client.go)
  • Postgres: Fix boolean SQL for search, pin toggle, and pinned listing (server/db_dialect.go, server/db.go)
  • MySQL: Fix parseTime=true when unset in DSN handling (server/db.go)
  • :backup: SQLite-only; Postgres/MySQL use native backup tools (server/, docs)
  • Admin TUI: Mouse scroll on tabs and tables (server/admin_panel.go)
  • :cleardb: Clears user_message_state (server/db.go)

Plugins

  • IPC: Fix serialized plugin stdin writes so chat fan-out and command RPC cannot corrupt IPC lines (plugin/host, plugin/manager)

Documentation

  • README, TESTING, ARCHITECTURE, and PROTOCOL updated for channel stamping, reconnect, wrapped URL limitation (#103), SQLite-only :backup, and plugin IPC
  • Tooling: Project Agent skills under .cursor/skills/ and .cursor/rules/marchat.mdc

CI and packaging

  • Go: 1.25.11 unchanged in go.mod, go.yml, release.yml, and Dockerfile
  • Dependencies: charm.land/bubbletea/v2 v2.0.8, charm.land/bubbles/v2 v2.1.0, charm.land/lipgloss/v2 v2.0.5 (replaces Charm v1); github.com/charmbracelet/colorprofile v0.4.3, github.com/charmbracelet/x/ansi v0.11.7, github.com/lucasb-eyer/go-colorful v1.4.0, github.com/mattn/go-runewidth v0.0.24; github.com/jackc/pgx/v5 v5.10.0; golang.org/x/crypto v0.53.0; golang.org/x/term v0.44.0; modernc.org/sqlite v1.53.0

Version and packaging

  • Install and build defaults: install.ps1, install.sh, build-release.ps1, scripts/build-windows.ps1, and scripts/build-linux.sh download and build against v1.3.0 release assets on GitHub.
  • Docs and metadata: SECURITY.md and README (version badge, install snippets, Docker tag) reference v1.3.0; canonical Homebrew, Scoop, winget, Chocolatey, and AUR templates in packaging/ target v1.3.0 (refresh zip SHA256 from published assets before choco pack / manifest validation).
  • Post-release helper: scripts/post-release-v1.3.0.ps1 for Chocolatey checksum sync and manifest render after assets upload.

Assets

  • marchat-v1.3.0-linux-amd64.zip
  • marchat-v1.3.0-linux-arm64.zip
  • marchat-v1.3.0-windows-amd64.zip
  • marchat-v1.3.0-darwin-amd64.zip
  • marchat-v1.3.0-darwin-arm64.zip

Full Changelog: v1.2.0...v1.3.0

Breaking changes

  • Charm v2: Client TUI depends on Charm v2 modules (charm.land/bubbletea/v2, bubbles/v2, lipgloss/v2). Rebuild clients from this release; mixed old/new client builds against the same server are supported on the wire but TUI behavior may differ.
  • WebSocket JSON protocol: No intentional breaking change; keystore and E2E wire encoding unchanged.
  • Wrapped URLs: Click-to-open for long wrapped URLs is unreliable in some terminals; prefer OSC 8 hyperlinks or copy the URL (#103).

Migration guide

  • Binaries: use v1.3.0 archives from this release page, or install.ps1 / install.sh with their default version.
  • Client / server: restart after upgrade; no database schema changes in this release.
  • Postgres / MySQL operators: benefit from boolean and parseTime fixes on upgrade; SQLite operators: note :backup remains SQLite-only.
  • Packaging maintainers: run scripts/post-release-v1.3.0.ps1 or packaging/ci/render-release-manifests.sh after zips publish to refresh SHA256 in packaging/ and downstream manifests.

Docker Image

A multi-architecture Docker image (linux/amd64, linux/arm64) is available on Docker Hub:

docker pull codecodesxyz/marchat:v1.3.0
# or use latest tag
docker pull codecodesxyz/marchat:latest

v1.2.0

Choose a tag to compare

@Cod-e-Codes Cod-e-Codes released this 05 Jun 12:37

v1.2.0

Released: 6 June 2026
Commit: 86762b8

Client

  • Direct message E2E: When encryption is enabled, DMs use the same wire path as channel text (encrypted plus base64 nonce || ciphertext with the global key). Applies to :dm <user> <msg>, DM mode compose, and code snippets sent while a DM thread is open (:code / Alt+C) (client/main.go, shared/crypto.go)
  • Code snippets in DM mode: :code / Alt+C while a DM thread is open routes through the DM send path (and E2E when enabled), not channel text (client/main.go)

Server

  • WebSocket Origin: Origin checks compare parsed hostnames instead of substring matching; empty origin remains allowed for TUI clients (server/request_context.go, server/handlers.go)
  • Allowed origins: Optional MARCHAT_ALLOWED_ORIGINS comma-separated allowlist for extra WebSocket origins
  • Trusted proxies: getClientIP and web-admin login rate limiting honor X-Forwarded-For / X-Real-IP only when the immediate peer is listed in MARCHAT_TRUSTED_PROXIES (comma-separated IPs or CIDRs) (server/request_context.go)

Plugins

  • Store downloads: Validate SHA-256 checksums before extraction (HTTP and file://), reject oversize archives, and roll back failed updates (plugin/store, plugin/manager)
  • Install path: Parse file:// URLs correctly on Linux and Windows via plugin/fileurl; detect archive type from the URL path (including query strings); extract to a staging directory with zip-slip checks; set the execute bit on the plugin binary by exact name match after ZIP/TAR extract; do not leave an empty plugin directory when install download fails

Documentation

  • README, ARCHITECTURE, PROTOCOL, CLIENT_HOOKS, deploy/CADDY-REVERSE-PROXY.md, and SECURITY.md updated for DM E2E, trusted-proxy client IP, and stricter Origin checks

CI and packaging

  • Go: 1.25.11 in go.mod, go.yml, release.yml, and Dockerfile builder image; nested plugin/sdk and plugin/examples/echo modules aligned on the same go directive
  • Dependencies: golang.org/x/crypto v0.52.0; modernc.org/sqlite v1.51.0 (was v1.50.0); transitive filippo.io/edwards25519 v1.2.0 via github.com/go-sql-driver/mysql

Version and packaging

  • Install and build defaults: install.ps1, install.sh, build-release.ps1, scripts/build-windows.ps1, and scripts/build-linux.sh download and build against v1.2.0 release assets on GitHub.
  • Docs and metadata: SECURITY.md and README (version badge, install snippets, Docker tag) reference v1.2.0; canonical Homebrew, Scoop, winget, Chocolatey, and AUR templates in packaging/ target v1.2.0 (refresh zip SHA256 from published assets before choco pack / manifest validation).

Assets

  • marchat-v1.2.0-linux-amd64.zip
  • marchat-v1.2.0-linux-arm64.zip
  • marchat-v1.2.0-windows-amd64.zip
  • marchat-v1.2.0-darwin-amd64.zip
  • marchat-v1.2.0-darwin-arm64.zip

Full Changelog: v1.1.0...v1.2.0

Breaking changes

  • Reverse proxies: Servers behind Caddy, nginx, or similar must set MARCHAT_TRUSTED_PROXIES to the proxy peer IP or CIDR if you rely on X-Forwarded-For for client IP logging or web-admin login rate limits. Without it, only RemoteAddr is used.
  • WebSocket Origin: Stricter hostname matching may reject origins that previously passed substring checks. Add legitimate origins to MARCHAT_ALLOWED_ORIGINS if needed.
  • WebSocket JSON protocol: No other intentional breaking change; DM E2E uses the existing encrypted text wire shape when E2E is enabled.

Migration guide

  • Binaries: use v1.2.0 archives from this release page, or install.ps1 / install.sh with their default version.
  • Server behind a proxy: set MARCHAT_TRUSTED_PROXIES (see deploy/CADDY-REVERSE-PROXY.md); restart after upgrade.
  • Client / server: restart after upgrade; no database schema changes in this release.
  • Audits: run govulncheck ./... on Go 1.25.11+ when checking toolchain and dependency exposure (see SECURITY.md for scanner vs reachability notes)

Docker Image

A multi-architecture Docker image (linux/amd64, linux/arm64) is available on Docker Hub:

docker pull codecodesxyz/marchat:v1.2.0
# or use latest tag
docker pull codecodesxyz/marchat:latest

v1.1.0

Choose a tag to compare

@Cod-e-Codes Cod-e-Codes released this 12 May 17:29

v1.1.0

Released: 12 May 2026
Commit: 4e4456b

Client

  • Channels: Transcript and typing indicators scoped to the active channel view (client/main.go); switching channels shows only that channel's history and typing
  • DM sidebar: Thread list with unread counts; hide and reappear behavior; footer shows the active DM peer when in a DM thread
  • Local state: DM UI state persisted under the client config directory as dm_state.json
  • Commands: :dm, :dm off, :dms, :dmhide (see in-app help); :dmhide and :dms are handled before :dm so they are not parsed as :dm hide... / :dm s... (prefix collision fix)
  • Typing: While composing a DM, outbound typing sends optional recipient on the wire; inbound DM-scoped typing is shown only when that DM thread is open, and channel-wide typing is hidden while a DM thread is open so neither view leaks the other (client/main.go)
  • Doctor: Client -doctor reports dm_state.json status and whether the E2E key source for this run is MARCHAT_GLOBAL_E2E_KEY or keystore.dat (internal/doctor/doctor.go)

Server

  • Messages: messages.channel column (default general); migrations add the column on startup for existing DBs; channel messages persist and replay with the correct channel (server/handlers.go, dialect-aware inserts)
  • Direct messages: Rows store recipient; history replay includes DM rows only for sender and recipient (case-insensitive); public rows keep an empty recipient
  • Typing: TypingMessage with non-empty recipient uses the same DM delivery path as chat DMs (broadcastDM in server/client.go); empty recipient keeps channel-wide typing
  • Doctor: Server -doctor includes a dm_history note about recipient metadata and reconnect replay visibility (internal/doctor/doctor.go)

Documentation

  • ARCHITECTURE, PROTOCOL, README, TESTING, CONTRIBUTING, QUICKSTART, PLUGIN_ECOSYSTEM, and docs/README updated for persistent DMs, typing recipient, delivery rules, and doctor output; optional graphical clients and marchat-plugins discovery called out where relevant

CI and packaging

  • Go: 1.25.10 in go.yml, release.yml, and Dockerfile builder image; nested plugin/sdk and plugin/examples/echo modules aligned on the same go directive
  • AUR: Downstream publish job clones aur.archlinux.org over HTTPS before switching origin to SSH for push (.github/workflows/release.yml)
  • Dependencies: golang.org/x/crypto v0.51.0, golang.org/x/term v0.43.0; github.com/jackc/pgx/v5 v5.9.2, modernc.org/sqlite v1.50.0, github.com/go-sql-driver/mysql v1.10.0 (plus transitive golang.org/x/sys, golang.org/x/text from go mod tidy)

Version and packaging

  • Install and build defaults: install.ps1, install.sh, build-release.ps1, scripts/build-windows.ps1, and scripts/build-linux.sh download and build against v1.1.0 release assets on GitHub.
  • Docs and metadata: SECURITY.md and README (version badge, install snippets, Docker tag) reference v1.1.0; canonical Homebrew, Scoop, winget, Chocolatey, and AUR templates in packaging/ match the checksums of the published zip archives for this release.

Assets

  • marchat-v1.1.0-linux-amd64.zip
  • marchat-v1.1.0-linux-arm64.zip
  • marchat-v1.1.0-windows-amd64.zip
  • marchat-v1.1.0-darwin-amd64.zip
  • marchat-v1.1.0-darwin-arm64.zip

Full Changelog: v1.0.0...v1.1.0

Breaking changes

  • WebSocket JSON protocol: No intentional breaking change for normal chat clients; DM typing uses optional recipient, and messages may carry channel for persistence and replay.
  • Keystore / database: messages.channel is added automatically when missing (SQLite, PostgreSQL, MySQL); backups before upgrades remain good practice.

Migration guide

  • Binaries: use v1.1.0 archives from this release page, or install.ps1 / install.sh with their default version.
  • Server / client: restart after upgrade; first start applies messages.channel if missing
  • Client: dm_state.json appears when DM sidebar features are used; delete the file to reset local DM UI state only
  • Audits: run govulncheck ./... on Go 1.25.10+ when checking toolchain and dependency exposure (see SECURITY.md for scanner vs reachability notes)

Docker Image

A multi-architecture Docker image (linux/amd64, linux/arm64) is available on Docker Hub:

docker pull codecodesxyz/marchat:v1.1.0
# or use latest tag
docker pull codecodesxyz/marchat:latest

v1.0.0

Choose a tag to compare

@Cod-e-Codes Cod-e-Codes released this 17 Apr 22:07

v1.0.0

Released: 17 Apr 2026
Commit: b22e4ad

Client

  • Chrome: Terminal-native footer and banner UX (client/chrome.go, Lipgloss styling)
  • Read receipts: Shown in the transcript where applicable
  • Reconnect: Transcript reset on reconnect so stale lines do not linger after a dropped session
  • Sending state: Clearer sending indicator after chat writes and related command-path fixes
  • Rate limits: Notice when the server applies WebSocket rate limiting
  • Unread: Unread count behavior refined alongside footer chrome
  • Themes: Theme loader updates and THEMES.md example alignment

Server

  • Admin WebSocket: Clear reply when an unknown admin command is received
  • Client connection: Sending-state consistency with client after chat writes

Documentation

  • ARCHITECTURE, PROTOCOL, README, TESTING updated for TUI/read-receipt/reconnect behavior and current test metrics

CI and packaging

  • Release workflow: Optional publish-downstream-packages job pushes Homebrew tap, Scoop bucket, winget PR (Microsoft fork), and AUR after assets upload (requires PACKAGING_GITHUB_PAT / AUR_SSH_PRIVATE_KEY where used)
  • Packaging docs: PACKAGING.md covers winget community listing, checksum sync via packaging/ci/render-release-manifests.sh, and guidance when Defender/VirusTotal flag portable zips

Version and packaging

  • SECURITY.md, install.ps1, install.sh, build-release.ps1, scripts/build-windows.ps1, scripts/build-linux.sh, README (badge, install snippets, Docker tag, Latest Updates), release workflow defaults, and templates under packaging/ set to v1.0.0
  • Chocolatey: marchat.nuspec adds iconUrl (logo on main), clearer title, stable 1.0.0 version; chocolateyinstall.ps1 targets the v1.0.0 Windows zip (refresh checksum from the published asset before choco pack / push)
  • Templates: Zip SHA256 placeholders in-repo must be replaced with values from render-release-manifests.sh after GitHub release zips exist (see PACKAGING.md)

Assets

  • marchat-v1.0.0-linux-amd64.zip
  • marchat-v1.0.0-linux-arm64.zip
  • marchat-v1.0.0-windows-amd64.zip
  • marchat-v1.0.0-darwin-amd64.zip
  • marchat-v1.0.0-darwin-arm64.zip

Full Changelog: v0.11.0-beta.5...v1.0.0

Breaking changes

  • WebSocket JSON protocol: No intentional breaking change for normal chat clients.
  • Keystore / database: No migration called out relative to v0.11.0-beta.5; backups before upgrades remain good practice.

Migration guide

  • Binaries: use v1.0.0 archives or install.ps1 / install.sh defaults after publish
  • Server / client: restart after upgrade
  • Audits: run govulncheck ./... on Go 1.25.9+ when checking dependency exposure (see SECURITY.md for scanner vs reachability notes)

Docker Image

A multi-architecture Docker image (linux/amd64, linux/arm64) is available on Docker Hub:

docker pull codecodesxyz/marchat:v1.0.0
# or use latest tag
docker pull codecodesxyz/marchat:latest

v0.11.0-beta.5

Choose a tag to compare

@Cod-e-Codes Cod-e-Codes released this 10 Apr 22:01

v0.11.0-beta.5

Released: 10 Apr 2026
Commit: c9ad733

Server

  • WebSocket: RFC 6455 close frames on handshake errors
  • Plugins: Hub no longer drives plugin IPC directly; bounded plugin chat fan-out with documented best-effort, at-most-once delivery semantics

Client

  • Experimental: Env-driven exthook and -doctor integration

Plugin SDK and examples

  • Stdio: RunStdio and HandlePluginRequest for the JSON IPC loop; echo example uses the SDK path
  • Docs: SDK stdio helpers, key file list fixes, README save-data example uses GetConfig and Marshal
  • Repo: Ignore plugin/sdk/cov for coverage output

CI and testing

  • CI: Run nested plugin Go modules; align nested Go versions; fmt and govulncheck on SDK; Dependabot Node 20 note in dependabot.yml
  • Tests: Server loadverify benches and rate limit coverage; -doctor parallel tests serialize os.Environ hook

Documentation

  • TESTING: Bench section; refreshed test metrics, coverage, and lines of code
  • Hooks: Example hook nested under _example_hook
  • Style: ASCII hyphens where prose was edited

Dependencies

  • golang.org/x/crypto, golang.org/x/term, modernc.org/sqlite

Version and packaging

  • SECURITY.md, install.ps1, install.sh, build-release.ps1, scripts/build-windows.ps1, scripts/build-linux.sh, README (badge, install snippets, Docker tag, Latest Updates), and release workflow defaults set to v0.11.0-beta.5

Assets

  • marchat-v0.11.0-beta.5-linux-amd64.zip
  • marchat-v0.11.0-beta.5-linux-arm64.zip
  • marchat-v0.11.0-beta.5-windows-amd64.zip
  • marchat-v0.11.0-beta.5-darwin-amd64.zip
  • marchat-v0.11.0-beta.5-darwin-arm64.zip

Full Changelog: v0.11.0-beta.4...v0.11.0-beta.5

Breaking changes

  • WebSocket JSON protocol: No intentional breaking change for normal chat clients.
  • Keystore / database: No schema change called out beyond v0.11.0-beta.4; backups before upgrades remain good practice.

Migration guide

  • Binaries: use v0.11.0-beta.5 archives or install.ps1 / install.sh defaults after publish
  • Server / client: restart after upgrade
  • Audits: run govulncheck ./... on Go 1.25.9+ when checking dependency exposure (see SECURITY.md for scanner vs reachability notes)

Docker Image

A multi-architecture Docker image (linux/amd64, linux/arm64) is available on Docker Hub:

docker pull codecodesxyz/marchat:v0.11.0-beta.5
# or use latest tag
docker pull codecodesxyz/marchat:latest

v0.11.0-beta.4

Choose a tag to compare

@Cod-e-Codes Cod-e-Codes released this 10 Apr 01:03

v0.11.0-beta.4

Released: 9 Apr 2026
Commit: 62e3ca0

E2E and message state

  • Message edits: Encrypted payloads keep ciphertext and is_encrypted consistent after edit (no stale plain text or wrong encryption flag on the wire)

Client

  • Themes: Deterministic cycle order for :themes and Ctrl+T (built-ins systempatriotretromodern, then custom themes by JSON key in themes.json); documented in THEMES.md, README, and ARCHITECTURE.md

Documentation

  • README / SECURITY.md: Clearer distinction between container/SBOM scanners and govulncheck reachability; pgx advisory metadata (CVE-2026-33815 / CVE-2026-33816) and Fixed in: N/A lag called out where relevant
  • Prose: em dashes normalized to ASCII hyphens where edited

Repository hygiene

  • .gitattributes: enforce LF for text sources; tree renormalized for consistent line endings

Version and packaging

  • SECURITY.md, install.ps1, install.sh, build-release.ps1, scripts/build-windows.ps1, scripts/build-linux.sh, README (badge, install snippets, Docker tag, Latest Updates), and release workflow defaults set to v0.11.0-beta.4

Assets

  • marchat-v0.11.0-beta.4-linux-amd64.zip
  • marchat-v0.11.0-beta.4-linux-arm64.zip
  • marchat-v0.11.0-beta.4-windows-amd64.zip
  • marchat-v0.11.0-beta.4-darwin-amd64.zip
  • marchat-v0.11.0-beta.4-darwin-arm64.zip

Full Changelog: v0.11.0-beta.3...v0.11.0-beta.4

Breaking changes

  • WebSocket JSON protocol: No intentional breaking change for normal chat clients.
  • Keystore / database: No change in this release beyond v0.11.0-beta.3 behavior; routine backups before upgrades remain good practice.

Migration guide

  • Binaries: use v0.11.0-beta.4 archives or install.ps1 / install.sh defaults after publish
  • Server / client: restart after upgrade
  • Audits: run govulncheck ./... on Go 1.25.9+ when checking dependency exposure (see SECURITY.md for scanner vs reachability notes)

Docker Image

A multi-architecture Docker image (linux/amd64, linux/arm64) is available on Docker Hub:

docker pull codecodesxyz/marchat:v0.11.0-beta.4
# or use latest tag
docker pull codecodesxyz/marchat:latest