Skip to content

Release 1.1.1 (2026-02-16)

Bug fixes

  • resolve golangci-lint issues in auth tests Rename unused test parameters to _, fix append-to-different-slice warning in TestLoadTLSCertificate_CombinedFile.

  • disable MD041 for mkdocs snippet-include files The docs/site/docs/mappings/*.md files are mkdocs snippet includes (--8<-- directives), not standalone markdown documents. MD041 (first line must be a heading) false-positives on these. The awk structural check in standards-compliance already enforces single-H1 for real docs.

  • correct snippets base_path resolution for fragment includes (#33) pymdownx.snippets resolves base_path relative to CWD (not the mkdocs.yml location). The previous paths were relative to docs/site/ which caused fragments to either not resolve or self-include when the wrapper file had the same name as the fragment.

Use CWD-relative paths so fragments resolve correctly when mkdocs is invoked from the repository root.

Ref wphillipmoore/mq-rest-admin-common#32

  • run mike from repo root so snippet base_path resolves in CI (#34) Remove working-directory from mike deploy step and pass -F docs/site/mkdocs.yml instead, so CWD matches the base_path entries in mkdocs.yml.

Ref wphillipmoore/mq-rest-admin-common#32

  • propagate 4 missing mapping entries from canonical JSON (#39) Propagates the fix from mq-rest-admin-common#40 restoring 4 entries dropped during the initial extraction from the Python source:

  • conn.response_key_map: ASTATE, CONN, EXTCONN

  • qstatus.request_key_map: type

  • move coverage:ignore annotations to preceding line (#44)

  • fix: move coverage:ignore annotations to preceding line

go-ignore-cov v0.3.0 targets the next line after a //coverage:ignore annotation, not the annotated line itself. Inline annotations on single-line empty function bodies never match the coverage block, causing intermittent 100% coverage gate failures on Go 1.26 when NumStmt flips from 0 to 1.

  • set docs default version to latest on main deploy The root URL redirect was pointing to dev/ because mike set-default was never called. Add mike set-default latest after deploying from main so the root URL always redirects to the latest release.

  • install prepare_release.py and bump version to 1.1.1 Add the shared prepare_release.py script for automated releases and bump the develop version past the v1.1.0 tag to restore the expected post-publish invariant.

  • allow commits on release/* branches in library-release model The pre-commit hook blocked commits on release/ branches, which prevents prepare_release.py from committing the changelog. Remove release/ from the universal protected set and add release/ to the library-release allowed prefixes.

  • rename integration-test job to integration-tests (#56) Standardize CI job naming across all library repos. Java already uses integration-tests (plural); this aligns Go to match.

Documentation

  • normalize README formatting (#3)
  • docs: normalize README formatting

Add blank line after heading and trailing period per markdownlint rules.

  • expand README with installation, quick start, and API overview (#8)
  • update implementation progress for phases 6-7 (#10) Record CI/CD (phase 6) and package rename + README (phase 7) as completed. Remove stale remaining-work entries and fix branch reference.

  • update coverage target from 100% to 99% Go coverage tool reports 0% for empty function bodies (sealed(), no-op applyAuth()) since they contain no executable statements. The remaining uncovered code also includes defensive error paths for conditions that cannot occur at runtime. Update the coverage target in CLAUDE.md, go-port-plan.md, and implementation-progress.md.

  • add MkDocs Material documentation site (#16) Add complete documentation site using MkDocs Material, matching the standardized toolchain across the mq-rest-admin library family.

  • fix hallucinated API references and correct ensure method count (#19)

  • address medium-severity documentation consistency findings (#21) Rewrite architecture.md to use shared fragment includes with Go-specific detail, enrich getting-started.md with strict/lenient modes, custom overrides, gateway routing, and diagnostic state, add LTPA default note to auth.md, create ai-engineering.md, and set dark mode as default theme palette.

  • address cross-library documentation consistency nits (#25) Enrich home page, rewrite getting-started to match Python/Java depth, create examples page, and standardize nav ordering.

  • switch to shared fragment includes from common repo (#30) Replace duplicated mapping pages, AI engineering, and local MQ container docs with --8<-- snippet includes from mq-rest-admin-common.

  • add quality gates documentation page Include the shared quality gates fragment from mq-rest-admin-common and append Go-specific validation pipeline details (go vet, golangci-lint, race detection, govulncheck, go-licenses).

Features

  • Go port of pymqrest (mq-rest-admin-go) (#1)
  • feat: implement Phase 1 foundation for Go port of pymqrest

Establishes the project scaffolding and core types for the Go port of the IBM MQ administrative REST API client library. Includes session core with MQSC command dispatch, 3-layer attribute mapping pipeline, transport abstraction, authentication types, and all error/result types. Zero external runtime dependencies (stdlib only).

  • add CI/CD workflow, git hooks, and linter configuration (#2) Add GitHub Actions CI with 6 jobs matching the sibling Python/Java repo structure (docs-only, standards-compliance, dependency-audit, release-gates, test-and-validate with Go 1.25/1.26 matrix, integration-test). Add git hooks from standards-and-conventions to prevent direct commits to protected branches and enforce conventional commit messages and co-author validation. Add golangci-lint config and PR template.

  • add Tier 1 security tooling (CodeQL, license compliance)

  • Add CodeQL SAST job to CI workflow using standard-actions composite action
  • Add license compliance check to dependency-audit job using go-licenses

  • add Trivy and Semgrep CI jobs Add Trivy filesystem vulnerability scanning and Semgrep SAST jobs to CI, gated by docs-only detection. Both upload SARIF results to the GitHub Security tab.

Ref mq-rest-admin-common#11, #24, #25

  • add version constant set to 1.1.0 (#41) Adds a package-level Version constant in preparation for the first published release of the library.

  • replace go-ignore-cov with go-test-coverage (#46) go-ignore-cov v0.3.0 has a fundamental bug: its column-matching algorithm cannot exclude top-level function definitions, causing flaky coverage gate failures on Go 1.26 (#45).

Switch to go-test-coverage (vladopajic/go-test-coverage) which uses AST-based exclusion that is structurally immune to this bug. This replaces the 3-step CI pipeline (install + rewrite profile + shell enforcement) with a single tool invocation and YAML config.

  • add publish workflow and versioned docs deployment (#52)
  • feat: add publish workflow and versioned docs deployment

Add publish.yml that triggers on push to main: validates, tags, creates GitHub Release, and opens a version bump PR back to develop. Update docs.yml to deploy versioned documentation (via mike) from main and dev snapshots from develop.

Refactoring

  • rename package from mqrest to mqrestadmin (#6) The package name should reflect that this wraps the IBM MQ administrative REST API specifically, not a general MQ REST client.

  • Rename mqrest/ directory to mqrestadmin/

  • Update all package declarations
  • Update error message prefixes
  • Update doc.go package comment and code examples
  • Update CLAUDE.md and plan documentation references

Testing

  • add table-driven tests for all command wrapper methods Cover ~95 one-liner DISPLAY, DEFINE, ALTER, DELETE, START, STOP, PING, CLEAR, REFRESH, RESET, RESOLVE, RESUME, SUSPEND, SET, and misc command wrappers with three table-driven test groups: displayList wrappers (39), singleton DISPLAY wrappers (2), and void command wrappers (~56).

  • add ensure and sync wrapper coverage Add table-driven tests for 14 ensure wrappers (created path) plus EnsureQmgr unchanged. Add sync tests for StartListenerSync, StopServiceSync, RestartListener, RestartService, StopListener with INACTIVE status, and hasStatus with non-string value.

  • add mapping edge case coverage Cover copyMap via permissive unknown qualifier, mergeNestedStringMap with new qualifier key, mapValue branches for unknown string values, lists with non-string items, lists with unknown strings, non-string/non-list types, newAttributeMapperWithOverrides merge with new qualifier and RequestKeyValueMap override, resolveResponseParameterMacros edge cases, and mapResponseList in strict mode.

  • add HTTPTransport and buildClient coverage Use net/http/httptest to test PostJSON success path (status, body, headers round-trip), custom header forwarding, network error returning TransportError, and buildClient with nil/non-nil TLSConfig and verifyTLS true/false.

  • cover auth, session init, errors, and remaining edge cases Add sealed() method calls, loadTLSCertificate success/failure/combined tests, CertificateAuth NewSession paths (with/without transport, valid and invalid certs), WithBasicAuth option, systemClock.now()/sleep(), LTPA login transport error, default String() branches for MappingDirection(99), MappingReason(99), EnsureAction(99), SyncOperation(99), restart start-phase error, queryStatus non-command error, mapResponseParameterNames unknown qualifier, extractLTPAToken with multiple headers, extractCommandResponseObjects edge cases (non-list, non-map, missing params, non-map params), flattenNestedObjects with non-map child, isNonZeroNumber nil/float64 paths, mapResponseList with objectIndex in issues, mergeNestedStringMap existing key path, PostJSON invalid URL, and mapping permissive request mode.