Skip to content

v1.1.0

Choose a tag to compare

@Cod-e-Codes Cod-e-Codes released this 12 May 17:29
· 116 commits to main since this release

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