GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Experimental chain workspace builder (scaffold) by tony · Pull Request #1068 · tmux-python/tmuxp

Conversation

@tony

@tony tony commented Jun 29, 2026

Copy link
Copy Markdown
Member

Summary

  • Add ChainWorkspaceBuilder (workspace_builder: chain), an experimental builder that constructs the session → window → pane tree from a single libtmux ForwardPlan.
  • Gate it cleanly: the module imports without the unreleased libtmux experimental chain API; selecting it without that API raises an actionable WorkspaceBuilderImportError instead of an import crash.

Status

Groundwork toward the parallel/batched builder (roadmap #1058, #1062). Not functional on released libtmux — it requires the experimental chain API (libtmux#685). Its API-dependent tests skip until that ships; the unavailable-path test runs and passes today.

Changes

  • workspace/builder/chain.py (new, import-guarded), chain entry point, tests (importorskip + unavailable path), docs, CHANGES.

Supersedes #1054, re-homed onto the #1066 framework; selection is via workspace_builder: chain (the old --builder CLI flag is dropped).

Test plan

  • full suite (chain tests skip on released libtmux; unavailable-path test passes)
  • mypy / ruff / build-docs

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@codecov

codecov Bot commented Jun 29, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.55%. Comparing base (98af6d1) to head (062242b).
⚠️ Report is 12 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1068   +/-   ##
=======================================
  Coverage   82.55%   82.55%           
=======================================
  Files          31       31           
  Lines        2768     2768           
  Branches      518      518           
=======================================
  Hits         2285     2285           
  Misses        346      346           
  Partials      137      137           

☔ 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.
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@tony
tony force-pushed the builder-chain branch from 9200dc3 to 8da3cc0 Compare July 4, 2026 14:07
@tony
tony force-pushed the master branch from 63172d2 to eeb6912 Compare July 25, 2026 17:00
tony added 3 commits October 24, 2026 04:51
@tony
Builder(feat[chain]): scaffold chain builder
33c1228
why: Land the experimental ChainWorkspaceBuilder from #1054 on the new
builder package. It builds the window/pane tree via libtmux's chain API
(libtmux#685), which is unreleased and absent from published libtmux, so
the scaffold must import cleanly and fail with an actionable error rather
than crash on import.

what:
- Add src/tmuxp/workspace/builder/chain.py: ChainWorkspaceBuilder
  subclasses ClassicWorkspaceBuilder; guard the experimental import
  behind _HAVE_CHAIN so the module imports without the API
- build() raises exc.WorkspaceBuilderImportError when the chain API is
  absent; when present, port #1054's single-ForwardPlan build
- Register the `chain` entry point in tmuxp.workspace_builders
- Export ChainWorkspaceBuilder from the builder package
- Add tests: test_builder_chain.py importorskips the chain API; the new
  test_builder_chain_unavailable.py asserts selecting `chain` without the
  API resolves the class yet raises on build()
@tony
docs(builder[chain]): document experimental chain builder
0b6b31a
why: Tell users the chain builder exists, how to select it, and that it
is non-functional until libtmux's unreleased chain API ships.

what:
- Add docs/internals/api/workspace/builder/chain.md autodoc page with an
  unreleased-API warning; add it to the builder index grid and toctree
- Add an "Experimental chain builder" section to the custom-workspace-
  builders topic and list it under Reference
- Add a CHANGES entry under 1.74.0 noting the opt-in builder requires
  libtmux#685 and is non-functional until that ships
@tony
chore(coverage): omit experimental chain builder
062242b
why: the chain builder's plan-building methods require the unreleased
libtmux._experimental.chain API (libtmux#685) and cannot execute on
released libtmux, so codecov flagged the unmeasurable lines as a
project-coverage drop.

what:
- Omit src/tmuxp/workspace/builder/chain.py from coverage until the
  experimental API ships and the builder becomes testable
@tony
tony force-pushed the builder-chain branch from 8da3cc0 to 062242b Compare October 24, 2026 09:57

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@tony
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.