Skip to content

Commit 86762b8

Browse files
committed
chore(release): bump version to v1.2.0 and update related documentation and packaging files
1 parent 8e18b9a commit 86762b8

20 files changed

Lines changed: 103 additions & 50 deletions

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ on:
66
workflow_dispatch:
77
inputs:
88
version:
9-
description: 'Version to build (e.g., v1.1.0)'
9+
description: 'Version to build (e.g., v1.2.0)'
1010
required: true
11-
default: 'v1.1.0'
11+
default: 'v1.2.0'
1212

1313
permissions:
1414
contents: read

CHANGELOG.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@ Narrative notes by release. Per-file binaries and assets: [GitHub releases](http
44

55
## Unreleased
66

7-
On **`main`** only; not part of **[v1.1.0](https://github.com/Cod-e-Codes/marchat/releases/tag/v1.1.0)** or its published binaries until you tag and publish. Compare [`v1.1.0...main`](https://github.com/Cod-e-Codes/marchat/compare/v1.1.0...main). Commits since the tag: **`git log v1.1.0..HEAD --oneline`**.
7+
On **`main`** only; not part of the latest tagged release until you tag and publish. Compare against the current tag on [GitHub releases](https://github.com/Cod-e-Codes/marchat/releases).
8+
9+
## v1.2.0
10+
11+
**Released 2026-06-06.** Since **[v1.1.0](https://github.com/Cod-e-Codes/marchat/releases/tag/v1.1.0)**; compare [`v1.1.0...v1.2.0`](https://github.com/Cod-e-Codes/marchat/compare/v1.1.0...v1.2.0). Commits: **`git log v1.1.0..v1.2.0 --oneline`**.
812

913
- **Server**: WebSocket **Origin** checks compare parsed hostnames (no substring matching); optional **`MARCHAT_ALLOWED_ORIGINS`** allowlist. **`getClientIP`** and web-admin login rate limiting honor **`X-Forwarded-For`** / **`X-Real-IP`** only when the immediate peer is in **`MARCHAT_TRUSTED_PROXIES`** (comma-separated IPs or CIDRs).
10-
- **Client**: Direct messages use the same E2E wire path as channel `text` when encryption is enabled (`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).
11-
- **Dependencies**: **golang.org/x/crypto** v0.52.0 (SSH advisories cleared at module level; marchat uses ChaCha20-Poly1305 and PBKDF2 only); **modernc.org/sqlite** v1.50.1 (was v1.50.0). Transitive **filippo.io/edwards25519** v1.2.0 (MySQL driver).
12-
- **Toolchain**: Go **1.25.11** in **go.mod**, nested plugin modules, CI, and **Dockerfile** (stdlib fixes for **GO-2026-5037**, **GO-2026-5038**, **GO-2026-5039** reported by **govulncheck** on **1.25.10**).
13-
- **Plugins**: Plugin store downloads validate SHA-256 checksums before extraction (HTTP and `file://`), reject oversize archives, parse `file://` paths correctly on Linux and Windows (registry and download URLs via `plugin/fileurl`), detect archive type from the URL path (including query strings), extract to a staging directory with zip-slip checks, roll back failed updates, set the execute bit on the plugin binary by exact name match after ZIP/TAR extract, and do not leave an empty plugin directory when install download fails.
14+
- **Client**: Direct messages use the same E2E wire path as channel `text` when encryption is enabled (`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). **Fix:** code snippets in DM mode route through the DM send path, not channel `text`.
15+
- **Plugins**: Plugin store downloads validate SHA-256 checksums before extraction (HTTP and `file://`), reject oversize archives, parse `file://` paths correctly on Linux and Windows (registry and download URLs via **`plugin/fileurl`**), detect archive type from the URL path (including query strings), extract to a staging directory with zip-slip checks, roll back failed updates, set the execute bit on the plugin binary by exact name match after ZIP/TAR extract, and do not leave an empty plugin directory when install download fails.
16+
- **Toolchain / dependencies**: Go **1.25.11** in **go.mod**, nested plugin modules, CI, and **Dockerfile** (stdlib fixes for **GO-2026-5037**, **GO-2026-5038**, **GO-2026-5039** reported by **govulncheck** on **1.25.10**); **golang.org/x/crypto** v0.52.0; **modernc.org/sqlite** v1.51.0 (was v1.50.0). Transitive **filippo.io/edwards25519** v1.2.0 (MySQL driver).
17+
- **Packaging**: Version strings and URLs for **v1.2.0** in **install.ps1**, **install.sh**, **build-release.ps1**, **scripts/build-*.ps1/sh**, **README**, **SECURITY.md**, **.github/workflows/release.yml**, and **packaging/** (Homebrew, Scoop, winget **1.2.0** manifest set, Chocolatey, AUR). **SHA256** fields are **placeholders** (`000000...`) until replaced from published release zips (**PACKAGING.md**, **packaging/ci/render-release-manifests.sh**). Regenerate **packaging/aur/.SRCINFO** on Arch after final **PKGBUILD** checksums (**`makepkg --printsrcinfo`**).
1418

1519
## v1.1.0
1620

PACKAGING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Published tap: [homebrew-marchat](https://github.com/Cod-e-Codes/homebrew-marcha
5858

5959
Upstream is [microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs). Maintainers use a fork, add `manifests/c/Cod-e-Codes/Marchat/<PackageVersion>/`, run `winget validate` on that folder, and open a PR. Package identifier: `Cod-e-Codes.Marchat`. The installer is a zip with `NestedInstallerType: portable` and two `PortableCommandAlias` entries for client and server. Microsoft may prompt first-time contributors to accept the CLA on the PR; follow the bot instructions there.
6060

61-
Example template path in this repo: `packaging/winget/manifests/c/Cod-e-Codes/Marchat/1.1.0/` (duplicate the folder layout for new versions). Older **`1.0.0/`** manifests may remain for reference; the current release templates target **v1.1.0** until the next bump.
61+
Example template path in this repo: `packaging/winget/manifests/c/Cod-e-Codes/Marchat/1.2.0/` (duplicate the folder layout for new versions). Older **`1.0.0/`** and **`1.1.0/`** manifests may remain for reference; the current release templates target **v1.2.0** until the next bump.
6262

6363
**Checksums vs GitHub release timing:** Portable zip manifests embed SHA256. After you publish a release and the five platform zips exist on GitHub, run [`packaging/ci/render-release-manifests.sh`](packaging/ci/render-release-manifests.sh) with `RELEASE_TAG` set and copy `packaging-out/` into `packaging/` (and into your tap, bucket, winget fork, or AUR clone as needed) so local `winget validate`, `brew audit`, and `choco pack` match real bytes. The committed templates may carry placeholder hashes until that sync step.
6464

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
[![Go Version](https://img.shields.io/github/go-mod/go-version/Cod-e-Codes/marchat?logo=go)](https://go.dev/dl/)
88
[![GitHub all releases](https://img.shields.io/github/downloads/Cod-e-Codes/marchat/total?logo=github)](https://github.com/Cod-e-Codes/marchat/releases)
99
[![Docker Pulls](https://img.shields.io/docker/pulls/codecodesxyz/marchat?logo=docker)](https://hub.docker.com/r/codecodesxyz/marchat)
10-
[![Version](https://img.shields.io/badge/version-v1.1.0-blue)](https://github.com/Cod-e-Codes/marchat/releases/tag/v1.1.0)
10+
[![Version](https://img.shields.io/badge/version-v1.2.0-blue)](https://github.com/Cod-e-Codes/marchat/releases/tag/v1.2.0)
1111

1212
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.
1313

@@ -37,7 +37,7 @@ Both clients follow the same wire format documented in [PROTOCOL.md](PROTOCOL.md
3737

3838
## Release notes
3939

40-
**Latest tagged release:** [v1.1.0](https://github.com/Cod-e-Codes/marchat/releases/tag/v1.1.0) (2026-05-12). Narrative history: [CHANGELOG.md](CHANGELOG.md). Assets and tags: [GitHub releases](https://github.com/Cod-e-Codes/marchat/releases).
40+
**Latest tagged release:** [v1.2.0](https://github.com/Cod-e-Codes/marchat/releases/tag/v1.2.0) (2026-06-06). Narrative history: [CHANGELOG.md](CHANGELOG.md). Assets and tags: [GitHub releases](https://github.com/Cod-e-Codes/marchat/releases).
4141

4242
**`main` branch:** may include changes not yet in that tag (for example items under **Unreleased** in [CHANGELOG.md](CHANGELOG.md)). Feature descriptions elsewhere in this README match the tree you build from source; compare your binary’s `-doctor` / `-version` output to the release page when in doubt.
4343

@@ -153,12 +153,12 @@ Tables created by the server (dialect-aware DDL for SQLite, PostgreSQL, and MySQ
153153
**Binary Installation:**
154154
```bash
155155
# Linux (amd64)
156-
wget https://github.com/Cod-e-Codes/marchat/releases/download/v1.1.0/marchat-v1.1.0-linux-amd64.zip
157-
unzip marchat-v1.1.0-linux-amd64.zip && chmod +x marchat-*
156+
wget https://github.com/Cod-e-Codes/marchat/releases/download/v1.2.0/marchat-v1.2.0-linux-amd64.zip
157+
unzip marchat-v1.2.0-linux-amd64.zip && chmod +x marchat-*
158158

159159
# macOS (amd64)
160-
wget https://github.com/Cod-e-Codes/marchat/releases/download/v1.1.0/marchat-v1.1.0-darwin-amd64.zip
161-
unzip marchat-v1.1.0-darwin-amd64.zip && chmod +x marchat-*
160+
wget https://github.com/Cod-e-Codes/marchat/releases/download/v1.2.0/marchat-v1.2.0-darwin-amd64.zip
161+
unzip marchat-v1.2.0-darwin-amd64.zip && chmod +x marchat-*
162162

163163
# Windows - PowerShell
164164
iwr -useb https://raw.githubusercontent.com/Cod-e-Codes/marchat/main/install.ps1 | iex
@@ -184,11 +184,11 @@ See [PACKAGING.md](PACKAGING.md) and `packaging/` for Homebrew, Scoop, winget, C
184184

185185
**Docker:**
186186
```bash
187-
docker pull codecodesxyz/marchat:v1.1.0
187+
docker pull codecodesxyz/marchat:v1.2.0
188188
docker run -d -p 8080:8080 \
189189
-e MARCHAT_ADMIN_KEY=$(openssl rand -hex 32) \
190190
-e MARCHAT_USERS=admin1,admin2 \
191-
codecodesxyz/marchat:v1.1.0
191+
codecodesxyz/marchat:v1.2.0
192192
```
193193

194194
**Docker Compose (local development):**

SECURITY.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
## Supported Versions
44

5-
`marchat` is currently at **v1.1.0**.
5+
`marchat` is currently at **v1.2.0**.
66
All security updates and fixes are applied to the `main` branch.
77

88
| Version | Supported |
99
|--------------------|-----------|
10-
| v1.1.x (`main`) | Yes |
10+
| v1.2.x (`main`) | Yes |
1111
| v1.0.x | Yes |
1212
| v0.11.x | No |
1313
| v0.10.x | No |

build-release.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
# Build script for marchat v1.1.0
1+
# Build script for marchat v1.2.0
22
# This script builds all platform targets and creates release zips
33

44
$ErrorActionPreference = "Stop"
55

6-
$VERSION = "v1.1.0"
6+
$VERSION = "v1.2.0"
77
$BUILD_DIR = "build"
88
$RELEASE_DIR = "release"
99

install.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# Supports Windows, Linux, macOS, and Android (via PowerShell Core)
55

66
param(
7-
[string]$Version = "v1.1.0"
7+
[string]$Version = "v1.2.0"
88
)
99

1010
$ErrorActionPreference = "Stop"

install.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
set -e # Exit on any error
77

8-
VERSION="v1.1.0"
8+
VERSION="v1.2.0"
99

1010
# Detect OS and architecture
1111
OS=$(uname | tr '[:upper:]' '[:lower:]')

packaging/aur/.SRCINFO

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
pkgbase = marchat-bin
22
pkgdesc = Terminal chat with WebSockets (official release binaries)
3-
pkgver = 1.1.0
3+
pkgver = 1.2.0
44
pkgrel = 1
55
url = https://github.com/Cod-e-Codes/marchat
66
arch = x86_64
77
arch = aarch64
88
license = MIT
99
depends = glibc
1010
options = !strip
11-
source_x86_64 = marchat-v1.1.0-linux-amd64.zip::https://github.com/Cod-e-Codes/marchat/releases/download/v1.1.0/marchat-v1.1.0-linux-amd64.zip
12-
sha256sums_x86_64 = 66d8d6b08746e087d7831c3e705956f46068d35bfeea75c7154f31143be70719
13-
source_aarch64 = marchat-v1.1.0-linux-arm64.zip::https://github.com/Cod-e-Codes/marchat/releases/download/v1.1.0/marchat-v1.1.0-linux-arm64.zip
14-
sha256sums_aarch64 = 76efd9de78da9e5b7065969371598f172a24d971dd5baf91cdd7a36a02229b0a
11+
source_x86_64 = marchat-v1.2.0-linux-amd64.zip::https://github.com/Cod-e-Codes/marchat/releases/download/v1.2.0/marchat-v1.2.0-linux-amd64.zip
12+
sha256sums_x86_64 = 0000000000000000000000000000000000000000000000000000000000000000
13+
source_aarch64 = marchat-v1.2.0-linux-arm64.zip::https://github.com/Cod-e-Codes/marchat/releases/download/v1.2.0/marchat-v1.2.0-linux-arm64.zip
14+
sha256sums_aarch64 = 0000000000000000000000000000000000000000000000000000000000000000
1515

1616
pkgname = marchat-bin

packaging/aur/PKGBUILD

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Maintainer: Cody Marsengill <cod.e.codes.dev@gmail.com>
22
pkgname=marchat-bin
3-
pkgver=1.1.0
3+
pkgver=1.2.0
44
pkgrel=1
5-
_pkgtag=v1.1.0
5+
_pkgtag=v1.2.0
66
pkgdesc='Terminal chat with WebSockets (official release binaries)'
77
arch=('x86_64' 'aarch64')
88
url='https://github.com/Cod-e-Codes/marchat'
@@ -11,8 +11,8 @@ options=('!strip')
1111
depends=('glibc')
1212
source_x86_64=("marchat-${_pkgtag}-linux-amd64.zip::https://github.com/Cod-e-Codes/marchat/releases/download/${_pkgtag}/marchat-${_pkgtag}-linux-amd64.zip")
1313
source_aarch64=("marchat-${_pkgtag}-linux-arm64.zip::https://github.com/Cod-e-Codes/marchat/releases/download/${_pkgtag}/marchat-${_pkgtag}-linux-arm64.zip")
14-
sha256sums_x86_64=('66d8d6b08746e087d7831c3e705956f46068d35bfeea75c7154f31143be70719')
15-
sha256sums_aarch64=('76efd9de78da9e5b7065969371598f172a24d971dd5baf91cdd7a36a02229b0a')
14+
sha256sums_x86_64=('0000000000000000000000000000000000000000000000000000000000000000')
15+
sha256sums_aarch64=('0000000000000000000000000000000000000000000000000000000000000000')
1616

1717
package() {
1818
if [[ $CARCH == x86_64 ]]; then

0 commit comments

Comments
 (0)