Skip to content

docs(ci): Publish to libtmux.org alongside git-pull.com - #756

Open
tony wants to merge 57 commits into
docs-sitefrom
docs-site-deploy
Open

tony wants to merge 57 commits into
docs-sitefrom
docs-site-deploy

Conversation

@tony

@tony tony commented Sep 6, 2026 •

Copy link
Copy Markdown
Member

Stacked on #755. Keep this PR open while its reviewed branch revision is used to refresh libtmux.org.

Python's unified docs now build through the shared source-revision workflow, including the native Sphinx reference under api/. Pull requests build without publishing. A maintainer can dispatch an exact source ref, version and publication policy; publish defaults to false. Workflow changes are included in the documentation path filter.

libtmux.git-pull.com retains its standalone Sphinx build and publishes on default-branch pushes. Its sync follows symlinks directly from the build job. Each destination keeps its existing secrets and its own publication queue.

Both shared workflow references use the same reviewed docs commit. Python dependencies are installed from the selected source lock; the separate tmuxp and MCP source checkouts use the revisions recorded in the shared API model. Grouped weekly GitHub Actions updates are configured; a bot-generated docs-pin update has not been demonstrated.

Validation

  • Six documentation-configuration tests pass, covering standalone and nested Sphinx behavior.

  • The selected Python revision has been built locally with the shared shell and native Sphinx reference; the inventory, API index and current native branding were checked.

  • The caller passes actionlint with its unsupported queue: max diagnostic suppressed. The shared publishers already use that GitHub concurrency setting.

  • Successful build-only dispatch from the unmerged branch. Live publication remains a separate explicit dispatch.

  • Explicit publication succeeded for reviewed source f70faacd0bdc0a00211232e52ab768a98f7e6dd1; this PR remains unmerged.

  • Live permission probe confirms that the Python role rejects a direct job outside the approved reusable workflow and denies writes to another language prefix. The negative verdict passed, the deliberate denial job is red, and the target prefix remains empty.

The live library, MCP, workspace, example, Sphinx API pages and inventory match the selected-source artifact. The example source links name the reviewed commit. All 39 linked branding assets match their source bytes and expected content types.

Removed the extra blank line rejected by Ruff in src/libtmux/constants.py. Ruff 0.16.8 now formats all 135 files cleanly, and the targeted lint check passes. The published source revision remains the explicitly selected f70faacd0bdc0a00211232e52ab768a98f7e6dd1.

Publication provenance

Hosted publication proof passes at 843278f595d8a4495c18c9d9dbe8ab0b2bd50289: a clean Python build publishes, three controlled artifact violations fail before AWS, and an identical immutable rerun skips sync while retaining its original receipt. Ordinary hosted GETs return HTTP 200 and all 7,699 S3 objects match their recorded bytes. Dispatch to first receipt takes 434 seconds. The run is deliberately red because its three negative jobs fail. Durable evidence and completed cleanup preserve the checks after temporary artifacts expire. These measurements cover dispatch latency; release-event latency remains open.

@codecov

codecov Bot commented Sep 6, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 52.37%. Comparing base (f8d67ea) to head (56a9c88).
⚠️ Report is 11 commits behind head on docs-site.

Additional details and impacted files
@@            Coverage Diff             @@
##           docs-site     #756   +/-   ##
==========================================
  Coverage      52.37%   52.37%           
==========================================
  Files             26       26           
  Lines           3729     3729           
  Branches         747      747           
==========================================
  Hits            1953     1953           
  Misses          1472     1472           
  Partials         304      304           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tony tony changed the title docs(ci): Publish to libtmux.org under this port's prefix docs(ci): Publish to libtmux.org alongside git-pull.com Sep 6, 2026
@tony
tony marked this pull request as ready for review September 6, 2026 11:36
why: 0.12.10 repairs `exclude-newer-package`, which this repository
leans on: its pyproject.toml exempts 17 first-party git-pull packages
from the 3-day cooldown so a sibling release does not block every
contributor's `uv sync` while it ages in. Before 0.12.10, `--locked`
failed when those per-package cutoffs differed only for packages
outside the resolution, and uv wrote them to uv.lock in
non-deterministic order, so a re-resolve could churn the lockfile
header by itself. 0.12.10 fixes both, and lets `uv lock --check` reuse
a lockfile when a package-specific cutoff is disabled -- which is the
exact shape of every `= false` entry in this repository.

0.12.11 is a supply-chain fix on the same path: source archives are
verified against the hashes recorded in uv.lock before their metadata
is read or their build backend runs, so a tampered sdist is rejected
before any of its code executes. It also trims surrounding whitespace
from `.python-version` entries and speeds up wheel installs by
dropping per-file temporary directories.

No lockfile revision or resolver-algorithm change lands in the span, so
this moves the pinned binary only and leaves uv.lock alone.

uv 0.12.12 and 0.12.13 exist but stay excluded by the 3-day
supply-chain cooldown this estate resolves under (exclude-newer =
"3 days"): published 2026-09-09 16:45Z and 2026-09-10 19:27Z, they
lapse 2026-09-12 16:45Z and 2026-09-13 19:27Z.

what:
- .tool-versions: uv 0.12.9 -> 0.12.11

See also:
- https://github.com/astral-sh/uv/releases/tag/0.12.10
- https://github.com/astral-sh/uv/releases/tag/0.12.11
why: unchanged from the last bump -- libtmux still has no
`package.json` and no CI workflow invokes Node, so `.nvmrc` only pins
the version a contributor's `nvm use` picks up to run prettier through
`just format-markdown`. 24.21.0 is a routine 24.x LTS minor rather
than a security release: refreshed root certificates (NSS 3.126),
OpenSSL 3.5.8, undici 7.29.1 and corepack 0.36.0, plus semver-minor
additions (non-throwing `MIMEType.parse`, faster `net.BlockList`,
reworked histograms). None of that reaches a prettier run over
markdown, so this is contributor-toolchain hygiene.

Taking it now rather than the newest release: Node 26.8.2 exists but
is 26.x, and this pin deliberately tracks the 24 LTS line; 24.21.0
published 2026-09-08 21:51Z, ahead of this sweep's 2026-09-09 09:57Z
cooldown cutoff.

what: bump only `.nvmrc`. No package.json or workflow references
Node, so nothing else changes.

See also: https://nodejs.org/en/blog/release/v24.21.0
why: this repo leaves `[tool.ruff.lint] select` unset, so ruff's
default rule set applies underneath `extend-select`; `ruff check
--show-settings` confirms ASYNC230, B031, DTZ901, PTH208, RUF102
enabled here. None of 0.16.6's stable changes are exercised by this
tree: ASYNC230 (no async functions in this tree), B031's
`match`-subject panic fix (no `match` statements here), PTH208's
`os.listdir` fix (unused here), DTZ901 rejecting `tzinfo=None` for
`datetime` bounds, RUF102 dropping its `lint.external` hint. The
remainder of the release -- the PT020 autofix, the TID254/TID255 fix
loop, I001 pragma-comment handling and the pytest-fixture-autouse
recategorisation -- is preview-gated, and `linter.preview` is disabled
here.

Verified rather than assumed: `ruff check` and `ruff format --check`
produce byte-identical output under 0.16.5 and 0.16.6 across this tree,
so the bump lands no new diagnostics and no reformatting.

ruff 0.16.7 released 2026-09-10 18:03Z, after this sweep's 2026-09-09
10:20Z cooldown cutoff, so it is excluded from resolution; 0.16.6 is
the newest visible release.

what: bump only the ruff lock entry. The ruff floor in pyproject.toml
is untouched; raising it is /ruff:bump's job.

See also: https://github.com/astral-sh/ruff/releases/tag/0.16.6
tony added 2 commits October 7, 2026 20:25
why: Include the native font preload correction and current
publication checks in the shared-header rollout.

what:
- Keep construction and publication on the same final producer
what:
- Pin documentation builds and publication to the checked shared-header
  release from libtmux/docs.

why:
- Keep this port’s public documentation navigation consistent with the
  shared site and the other supported languages.
tony added 2 commits October 8, 2026 05:16
what:
- Pin the documentation builder and publisher to the reviewed compatibility
  fix for older native reference assets.

why:
- Publish stable documentation from its tagged source without retaining a
  reference to the tabs script that its theme deliberately removes.
what:
Pin the libtmux.org documentation builder and publisher to the reviewed native shell compatibility fix.

why:
The stable v0.62.0 reference needs its absent optional tabs script reference normalized before publication can pass asset validation.
tony added 2 commits October 8, 2026 20:08
why: Port-owned pages need the same navigation and layout fixes
as the root site, including working terminal artwork credits.

what:
- Pin documentation building and publishing to one reviewed revision
what:
Pin documentation building and publication to the same reviewed
libtmux/docs revision for this port.

why:
Deliver the shared navigation, anchor, scrollbar and terminal-credit
fixes consistently across the port-owned documentation.
tony added 2 commits October 8, 2026 22:07
why: Python reference drawers need readable, consistent text and
spacing below the viewport edge.

what:
- Pin the docs build and publisher to the reviewed Contents fix
what:
- Use the reviewed native Contents drawer layout in Python docs

why:
- The mobile overlay kept a desktop header gap and tiny code labels
- Consistent spacing and text make long Contents lists readable
tony added 2 commits October 9, 2026 02:05
why: Publish the reviewed Rust guides and correct the shared
transport explanation in the affected port-owned trees.

what:
- Pin documentation building and publishing to one reviewed revision
what:
Pin documentation building and publication to the same reviewed
libtmux/docs revision for this port.

why:
Deliver the complete Rust query and transport workflows and the shared
transport explanation repair to affected port-owned documentation.
tony added 2 commits October 9, 2026 16:56
why: Publish the reviewed Ruby MCP guides and preserve copied
console commands throughout the port-owned documentation.

what:
- Pin documentation building and publishing to one reviewed revision
what:
- Pin documentation building and publishing to the reviewed shared producer.

why:
- Publish the Ruby MCP client guides and preserve copied multiline console
  commands across the port-owned documentation.
tony added 2 commits October 9, 2026 20:54
why: Publish the reviewed Copy loading fix and port-specific prose
throughout the documentation owned by this repository.

what:
- Pin documentation building and publishing to one reviewed revision
what:
Pin the Python documentation build and publisher to the reviewed
shared documentation revision.

why:
Publish port-specific prose and enable code Copy controls only after
their handlers are ready in Python documentation.
tony added 2 commits October 10, 2026 09:59
why: Keep breadcrumb labels intact and publish the reviewed
prefetch and Japanese fallback-link corrections.

what:
- Pin documentation building and publishing to one reviewed revision
what:
Pin the Python documentation build and publisher to the reviewed
shared documentation revision.

why:
Keep breadcrumb labels intact and publish the shared prefetch and
fallback-link corrections in Python documentation.

This branch was successfully deployed

1 active deployment
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.

1 participant