From c47020fd9b56aea31132d86b408d6bcc37b6ddf1 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sun, 27 Sep 2026 17:17:01 -0500 Subject: [PATCH 1/3] Docs(ci): Publish Kotlin and Scala trees why: The wrapper libraries share Java's source and releases but need independent language pages and version manifests on libtmux.org. what: - Build all three languages on pushes, tags and pull requests - Allow a dispatch to select one language at any source ref - Publish each artifact under its own port and version prefix - Serialize updates per language and keep workflow pins together --- .github/workflows/docs.yml | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 9b8ea5cf..ba270f1e 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,8 +1,8 @@ name: docs -# Publishes this port's documentation to libtmux.org: trunk as -# /en/java/latest/, and each `v*` release tag as its own version plus an -# alias, `next` for a prerelease and `stable` (the default) for a release. +# Publishes the library family to libtmux.org. Each language owns its +# prefix, with trunk at latest and each release tag at its own version +# plus next (prerelease) or stable (release). # # libtmux/docs builds and publishes the tree, through two reusable workflows # pinned to one commit: port-docs.yml decides which versions an event builds @@ -16,6 +16,12 @@ on: tags: ['v*'] workflow_dispatch: inputs: + language: + description: Library to publish; all includes the parent and wrappers + required: true + type: choice + options: [all, java, kotlin, scala] + default: all source-ref: description: Exact source ref to build required: true @@ -52,9 +58,10 @@ jobs: # A pull request builds `latest` without publishing; this port has no # preview role. build: - uses: libtmux/docs/.github/workflows/port-docs.yml@216601c86d98505c46b00782ed8fd9269c621d7c + uses: libtmux/docs/.github/workflows/port-docs.yml@36c9452686a69c44d8be44757477985d499c6e51 with: - port: java + port: ${{ inputs.language && inputs.language != 'all' && inputs.language || 'java' }} + include-wrappers: ${{ inputs.language == '' || inputs.language == 'all' }} source-ref: ${{ inputs.source-ref }} version: ${{ inputs.version }} version-kind: ${{ inputs.version-kind }} @@ -62,15 +69,14 @@ jobs: resolves-to: ${{ inputs.resolves-to }} publish: ${{ inputs.publish == true }} - # One publication to this port's prefixes at a time, a tag's two legs - # included: both rewrite manifest/java.json. Only publishing queues; a pull - # request's build never waits behind a deploy. `max`, so a queued tag is - # never dropped for a newer run. + # Serialize versions of one language because they share its manifest. + # Sibling languages have separate prefixes and may publish concurrently. + # Queue every publication so a newer run cannot drop a release tag. publish: needs: build if: needs.build.outputs.should-publish == 'true' concurrency: - group: docs-deploy-${{ github.repository }} + group: docs-deploy-${{ github.repository }}-${{ matrix.port }} queue: max strategy: fail-fast: false @@ -78,14 +84,14 @@ jobs: permissions: contents: read id-token: write - uses: libtmux/docs/.github/workflows/reusable-deploy.yml@216601c86d98505c46b00782ed8fd9269c621d7c + uses: libtmux/docs/.github/workflows/reusable-deploy.yml@36c9452686a69c44d8be44757477985d499c6e51 with: # Unprefixed by locale: reusable-deploy prepends / itself when - # `port` is set, so this becomes en/java/. - path-prefix: java/${{ matrix.version }} - artifact: docs-java-${{ matrix.version }} + # `port` is set, so each language gets its own version tree. + path-prefix: ${{ matrix.port }}/${{ matrix.version }} + artifact: docs-${{ matrix.port }}-${{ matrix.version }} version-kind: ${{ matrix.kind }} - port: java + port: ${{ matrix.port }} version: ${{ matrix.version }} label: ${{ matrix.version }} is-default: ${{ matrix.isDefault }} From 1a6c0d3a5e4f94ea826dc6b24aa31b15f30711e0 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sun, 27 Sep 2026 17:27:21 -0500 Subject: [PATCH 2/3] Docs(ci): Pin the library-only MCP checks --- .github/workflows/docs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index ba270f1e..917800bd 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -58,7 +58,7 @@ jobs: # A pull request builds `latest` without publishing; this port has no # preview role. build: - uses: libtmux/docs/.github/workflows/port-docs.yml@36c9452686a69c44d8be44757477985d499c6e51 + uses: libtmux/docs/.github/workflows/port-docs.yml@f835cabedfaed5822a95bbeeee8512802833b3dc with: port: ${{ inputs.language && inputs.language != 'all' && inputs.language || 'java' }} include-wrappers: ${{ inputs.language == '' || inputs.language == 'all' }} @@ -84,7 +84,7 @@ jobs: permissions: contents: read id-token: write - uses: libtmux/docs/.github/workflows/reusable-deploy.yml@36c9452686a69c44d8be44757477985d499c6e51 + uses: libtmux/docs/.github/workflows/reusable-deploy.yml@f835cabedfaed5822a95bbeeee8512802833b3dc with: # Unprefixed by locale: reusable-deploy prepends / itself when # `port` is set, so each language gets its own version tree. From ad247abb6398ba7e7d2dbb188ee4ee53059fe496 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sun, 27 Sep 2026 18:17:35 -0500 Subject: [PATCH 3/3] Docs(ci): Pin the rebased wrapper publisher why: Kotlin and Scala publication needs the family workflow and the corrected release prefix check from the current docs base. what: - Keep build and publish on the same reviewed docs revision --- .github/workflows/docs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 917800bd..9d328c34 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -58,7 +58,7 @@ jobs: # A pull request builds `latest` without publishing; this port has no # preview role. build: - uses: libtmux/docs/.github/workflows/port-docs.yml@f835cabedfaed5822a95bbeeee8512802833b3dc + uses: libtmux/docs/.github/workflows/port-docs.yml@6f721f9010b5dac60ef92011f325572d9368ca4b with: port: ${{ inputs.language && inputs.language != 'all' && inputs.language || 'java' }} include-wrappers: ${{ inputs.language == '' || inputs.language == 'all' }} @@ -84,7 +84,7 @@ jobs: permissions: contents: read id-token: write - uses: libtmux/docs/.github/workflows/reusable-deploy.yml@f835cabedfaed5822a95bbeeee8512802833b3dc + uses: libtmux/docs/.github/workflows/reusable-deploy.yml@6f721f9010b5dac60ef92011f325572d9368ca4b with: # Unprefixed by locale: reusable-deploy prepends / itself when # `port` is set, so each language gets its own version tree.