Skip to content

build: publish tclient releases and remove duplicate example - #13

Merged
LeeEirc merged 2 commits into
masterfrom
feat/tclient-release
Nov 3, 2026
Merged

LeeEirc merged 2 commits into
masterfrom
feat/tclient-release

Conversation

@LeeEirc

@LeeEirc LeeEirc commented Nov 3, 2026 •

Copy link
Copy Markdown
Owner

Summary

Remove the duplicate example client now that cmd/tclient is the supported entry point, and add a complete GitHub Release pipeline for distributing versioned CLI binaries alongside the Go library.

Changes

  • Delete _example/telnet_client, including its nested module files and CI step. Keep the independent TCP monitor example and document migration to cmd/tclient.
  • Add tclient --version with release version, full commit, build date, Go compiler, and target platform. It works without a host or stdin; ordinary Go builds/installations use embedded module/VCS metadata where available.
  • Define six CGO-free GoReleaser builds: Linux, macOS, and Windows on amd64/arm64. Package Unix builds as tar.gz and Windows builds as zip, with documentation and SHA-256 checksums.
  • Support both pushed version tags and a manual Release workflow with a version input. Manual releases are restricted to master and create an annotated tag for the exact tested commit; existing tags must match that commit.
  • Reuse the native test matrix before releasing. Upload all assets to a draft, attest their checksums with GitHub OIDC, and only then publish. Prerelease tags remain prereleases; already published versions cannot be overwritten.
  • Pin Actions to full commit SHAs and GoReleaser to v2.19.0. Keep test/snapshot jobs read-only and grant publishing permissions only to the release job. No personal token or signing key is required.
  • Add a v0.1.0 changelog and migration guide covering the breaking configuration API, WindowChange(height, width) argument order, Go 1.20 minimum, prompt/line-ending changes, IAC escaping, and removed APIs. Link the guide from the Release body and include it with the complete documentation in every archive.
  • Add release documentation, download verification instructions, and a read-only snapshot job that builds all six packages on PRs and uploads reviewable artifacts for seven days.

Validation

Local validation passed: go test -race -timeout=3m ./..., go vet ./..., the monitor example, all 20 Linux PTY/TCP scenarios, and linked --version/--help smoke tests. Independent review also checked workflow YAML, shell syntax, tag validation, fixed-commit handling, and draft/attestation/publication order.

All five CI jobs passed for the latest commit 8c7c3e78907ab64a33f34c775783f641c317c7c9: Linux/Windows × Go 1.20.x/stable plus the release snapshot job. GoReleaser v2.19.0 configuration validation, all six archives (including the changelog and full documentation), every SHA-256 digest, and the extracted Linux CLI smoke tests passed. The run includes the downloadable snapshot artifact (seven-day retention).

Independent review checked the migration notes against v0.0.2 and current source, including the silent WindowChange argument-order change. YAML validation and local document-link checks also passed.

Copilot review was requested, but GitHub reported insufficient review quota on both attempts; it did not produce a code review or any inline findings. Independent code/workflow review completed with no blocking findings.

Windows binaries support redirected sessions; interactive TTY support remains Unix-only. The Go library and CLI share one semantic-version tag.

Copilot AI balanced review requested due to automatic review settings November 3, 2026 15:56

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

@LeeEirc
LeeEirc requested a balanced review from Copilot November 3, 2026 15:58

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

@LeeEirc
LeeEirc merged commit a51b3a0 into master Nov 3, 2026
5 checks passed
@LeeEirc
LeeEirc deleted the feat/tclient-release branch November 4, 2026 02:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants