diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 9d328c34..b299198b 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@6f721f9010b5dac60ef92011f325572d9368ca4b + uses: libtmux/docs/.github/workflows/port-docs.yml@8fda4b89071621b9ed2c4722a68d61f6ecf9c1c4 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@6f721f9010b5dac60ef92011f325572d9368ca4b + uses: libtmux/docs/.github/workflows/reusable-deploy.yml@8fda4b89071621b9ed2c4722a68d61f6ecf9c1c4 with: # Unprefixed by locale: reusable-deploy prepends / itself when # `port` is set, so each language gets its own version tree. diff --git a/README.md b/README.md index afe00e0a..6f701c9f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -# libtmux for Java -

@@ -9,21 +7,27 @@

+
+ +# libtmux for Java + +Typed, blocking access to [tmux](https://github.com/tmux/tmux) from the JVM. + +A sibling of the Python [libtmux](https://libtmux.git-pull.com/), targeting +practical parity while reading as Java rather than as a translation. + [![CI](https://github.com/libtmux/libtmux-java/actions/workflows/ci.yml/badge.svg)](https://github.com/libtmux/libtmux-java/actions/workflows/ci.yml) [![tmux matrix](https://github.com/libtmux/libtmux-java/actions/workflows/tmux-matrix.yml/badge.svg)](https://github.com/libtmux/libtmux-java/actions/workflows/tmux-matrix.yml) [![Maven Central](https://img.shields.io/maven-central/v/io.github.libtmux/libtmux.svg)](https://central.sonatype.com/artifact/io.github.libtmux/libtmux) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Status: alpha](https://img.shields.io/badge/status-alpha-orange.svg)](#status) +
+ > **Alpha.** Releases carry an `-alpha` prerelease tag. The API is not > settled, and any release may change or remove exported identifiers without a > deprecation period. Pin an exact version. Not recommended for production. -Typed, blocking access to [tmux](https://github.com/tmux/tmux) from the JVM. - -A sibling of the Python [libtmux](https://libtmux.git-pull.com/), targeting -practical parity while reading as Java rather than as a translation. - **JDK 25 or newer.** Add the library through [`libtmux-bom`](libtmux-bom/), which names one version for every BOM-managed coordinate: diff --git a/docs/src/test/java/io/github/libtmux/docs/DocumentationFactsTest.java b/docs/src/test/java/io/github/libtmux/docs/DocumentationFactsTest.java index f8c3e1d2..177106a6 100644 --- a/docs/src/test/java/io/github/libtmux/docs/DocumentationFactsTest.java +++ b/docs/src/test/java/io/github/libtmux/docs/DocumentationFactsTest.java @@ -290,7 +290,11 @@ void everyPublishedModuleIntroducesItself() { assertTrue(Files.isRegularFile(readme), module + " has no README"); String text = read(module + "/README.md"); - assertTrue(text.startsWith("# " + module + "\n"), module + "'s README does not name it first"); + String title = text.lines() + .filter(line -> line.startsWith("# ")) + .findFirst() + .orElse(""); + assertEquals("# " + module, title, module + "'s README does not name it in the first heading"); assertTrue( text.contains("io.github.libtmux:" + module), module + "'s README never states the coordinate to depend on"); diff --git a/libtmux-bom/README.md b/libtmux-bom/README.md index db24d22c..abfaff54 100644 --- a/libtmux-bom/README.md +++ b/libtmux-bom/README.md @@ -1,5 +1,3 @@ -# libtmux-bom -

@@ -9,8 +7,14 @@

+
+ +# libtmux-bom + **Name one BOM version. Every BOM-managed libtmux coordinate follows it.** +
+ ```kotlin dependencies { diff --git a/libtmux-jackson/README.md b/libtmux-jackson/README.md index 1b93211e..26e7130b 100644 --- a/libtmux-jackson/README.md +++ b/libtmux-jackson/README.md @@ -1,5 +1,3 @@ -# libtmux-jackson -

@@ -9,8 +7,14 @@

+
+ +# libtmux-jackson + **A filter expression, as a versioned JSON document.** +
+ The core has no dependencies and never will. This module is where Jackson lives, so that a filter can be stored, sent over a wire, or written by something that is not a Java program. diff --git a/libtmux-junit5/README.md b/libtmux-junit5/README.md index fcd35ed3..43523731 100644 --- a/libtmux-junit5/README.md +++ b/libtmux-junit5/README.md @@ -1,5 +1,3 @@ -# libtmux-junit5 -

@@ -9,9 +7,15 @@

+
+ +# libtmux-junit5 + **A JUnit 5 extension that gives each test its own tmux server, and guarantees it is gone afterwards.** +
+ For testing *your* code against real tmux — not for testing libtmux — or, with `FakeTmux`, without it. diff --git a/libtmux-kotlin/README.md b/libtmux-kotlin/README.md index cc9e2a00..6c53853f 100644 --- a/libtmux-kotlin/README.md +++ b/libtmux-kotlin/README.md @@ -1,5 +1,3 @@ -# libtmux-kotlin -

@@ -9,9 +7,15 @@

+
+ +# libtmux-kotlin + **Coroutine wrapper classes, a session/window/split DSL, and `Flow`/`StateFlow` bridges over the Java API.** +
+ `io.github.libtmux:libtmux-kotlin` — [on Maven Central](https://central.sonatype.com/artifact/io.github.libtmux/libtmux-kotlin). > **Alpha.** The API will change without notice. diff --git a/libtmux-mcp/README.md b/libtmux-mcp/README.md index d12cfd32..c174e6c0 100644 --- a/libtmux-mcp/README.md +++ b/libtmux-mcp/README.md @@ -1,5 +1,3 @@ -# libtmux-mcp -

@@ -9,8 +7,14 @@

+
+ +# libtmux-mcp + **A tmux server, exposed to a model over the Model Context Protocol.** +
+ Point Claude Code, Claude Desktop, Codex, or any MCP client at a tmux socket and it can find its way around, read what a pane is showing, run a command and wait for it, and build a whole session with typed operations. diff --git a/libtmux-scala-cats/README.md b/libtmux-scala-cats/README.md index e08ac5ea..057059ee 100644 --- a/libtmux-scala-cats/README.md +++ b/libtmux-scala-cats/README.md @@ -1,5 +1,3 @@ -# libtmux-scala-cats -

@@ -9,8 +7,14 @@

+
+ +# libtmux-scala-cats + **Cats Effect resources and FS2 observations for `libtmux-scala`.** +
+ This optional module adds scoped blocking execution and loss-aware control observations. `libtmux-scala` does not depend on Cats Effect or FS2; add this artifact only when an application uses those integrations. Use the same version diff --git a/libtmux-scala-ox/README.md b/libtmux-scala-ox/README.md index b35d723b..0c402e9d 100644 --- a/libtmux-scala-ox/README.md +++ b/libtmux-scala-ox/README.md @@ -1,5 +1,3 @@ -# libtmux-scala-ox -

@@ -9,9 +7,15 @@

+
+ +# libtmux-scala-ox + **An Ox `Flow` over libtmux subscriptions and live views, for structured concurrency on virtual threads.** +
+ This optional module adds no handle type: the direct-style facade's opaque handles work unchanged inside an Ox `supervised` scope and its `fork`s. What it adds is a cold `Flow` for the two things that push rather than answer: a control diff --git a/libtmux-scala/README.md b/libtmux-scala/README.md index fe3207f1..f1326743 100644 --- a/libtmux-scala/README.md +++ b/libtmux-scala/README.md @@ -1,5 +1,3 @@ -# libtmux-scala -

@@ -9,8 +7,14 @@

+
+ +# libtmux-scala + **Scala 3 collections and opaque handles over libtmux for Java.** +
+ Use Scala collections and explicit effects to inspect and operate tmux through libtmux for Java. The direct-style facade's handles are opaque aliases of the Java ones — lossless by construction, never a hand-copied parallel type — and diff --git a/libtmux-workspace-cli/README.md b/libtmux-workspace-cli/README.md index 0f1705ad..549baf41 100644 --- a/libtmux-workspace-cli/README.md +++ b/libtmux-workspace-cli/README.md @@ -1,5 +1,3 @@ -# libtmux-workspace-cli -

@@ -9,8 +7,14 @@

+
+ +# libtmux-workspace-cli + **`tmux-workspace` loads, captures, converts and imports tmux workspaces.** +
+ Command names and flags follow [tmuxp](https://tmuxp.git-pull.com/) 1.74.0, and every command answers in JSON or NDJSON on request. Loading, capture, conversion, imports, discovery and search run on the JVM alone; only the diff --git a/libtmux-workspace/README.md b/libtmux-workspace/README.md index efa9fcb0..8a02a744 100644 --- a/libtmux-workspace/README.md +++ b/libtmux-workspace/README.md @@ -1,5 +1,3 @@ -# libtmux-workspace -

@@ -9,8 +7,14 @@

+
+ +# libtmux-workspace + **Builds a session from a tmuxp-shaped YAML description.** +
+ Enough of [tmuxp](https://tmuxp.git-pull.com/)'s format to describe a workspace and build it. Not a runtime-compatible reimplementation. diff --git a/libtmux/README.md b/libtmux/README.md index f011a52b..25662502 100644 --- a/libtmux/README.md +++ b/libtmux/README.md @@ -1,5 +1,3 @@ -# libtmux -

@@ -9,8 +7,14 @@

+
+ +# libtmux + **Typed, blocking access to a tmux server. No runtime dependencies.** +
+ This is the whole library. Everything else in the repository is an adapter to something — Jackson, JUnit, Kotlin, MCP, tmuxp — and depends on this.