Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
10b0d73
fix(site) Raise the documented tmux minimum to 3.3a
tony Oct 17, 2026
8f8c38e
test(site) Check that tmux minimum statements name 3.3a
tony Oct 17, 2026
ad36457
fix(site) Link port pages to the shared tmux support guide
tony Oct 17, 2026
151eac0
chore(just) Clean ignored build output
tony Oct 17, 2026
2a66297
feat(scripts[tmux-usage]) Record which library methods send a tmux co…
tony Oct 20, 2026
326f9ad
feat(site[tmux-usage]) Link list-panes and its C functions to its sen…
tony Oct 20, 2026
2862bf7
fix(site[tmux-usage]) Stack usage chips flush and put In libtmux last
tony Oct 20, 2026
b4ecb97
fix(site[tmux-usage]) Act on the whole chip on hover and focus
tony Oct 20, 2026
620d01d
feat(site[tmux-usage]) Record every command's senders in all fifteen …
tony Oct 20, 2026
fcba549
fix(site[tmux-usage]) Sweep for the senders a scan misses and record …
tony Oct 20, 2026
10bf8bc
fix(site[tmux-usage]) Cite each line at its own revision and drop sen…
tony Oct 20, 2026
e2115dc
fix(site[tmux-usage]) Record a command only where a call sends it
tony Oct 20, 2026
9896219
fix(site[tmux-usage]) Read guards as transparent, prove dispatchers r…
tony Oct 20, 2026
15f874a
fix(site[tmux-usage]) Credit a generic function's methods apart, reso…
tony Oct 20, 2026
e9c112f
fix(site[tmux-usage]) Set a command apart from its C function, and on…
tony Oct 20, 2026
95a2cab
fix(site[tmux-reference]) Serve a preview card for every C declaratio…
tony Oct 20, 2026
be201e3
fix(site[tmux-usage]) Say when a library refuses a release, and recor…
tony Oct 20, 2026
d39851e
fix(site[tmux-usage]) Put the condition of a send in parentheses on t…
tony Oct 20, 2026
ec24c92
fix(site[tmux-reference]) Show only the head of a long declaration on…
tony Oct 20, 2026
0661e68
fix(site[tmux-reference]) Ask the preview check only for destinations…
tony Oct 20, 2026
29d5890
fix(site[tmux-usage]) Keep a chip at the width its name needs beside …
tony Oct 20, 2026
04d5d7f
fix(site[tmux-usage]) Forward go's observation list-windows, record j…
tony Oct 20, 2026
c1c87e9
fix(site[tmux-usage]) Record go's name lookups: an exclusion had been…
tony Oct 20, 2026
89776ea
fix(site[tmux-reference]) Check the reference trees the dev build doe…
tony Oct 20, 2026
8785a97
fix(site[tmux-usage]) Record PowerShell's senders at its model revision
tony Oct 20, 2026
d2830f7
refactor(site[api-reference]) Build related types in one place
tony Oct 24, 2026
0dd6de4
fix(site[api-labels]) Name the owner of ambiguous related types
tony Oct 24, 2026
498a154
test(site[related-labels]) Pin which labels break at their owner
tony Oct 24, 2026
1dca972
test(site[tmux-usage]) Keep the Ruby break points on the usage chip
tony Oct 24, 2026
909dc4b
fix(site[tmux-usage]) Record go's senders at its model revision
tony Oct 24, 2026
6a6ebf7
feat(scripts[tmux-usage]) Read Elixir by its text
tony Oct 24, 2026
3237105
feat(site[tmux-usage]) Record Elixir's senders at its model revision
tony Oct 24, 2026
bf9de0d
fix(site[tmux-usage]) Judge a usage chip's name by its letters
tony Oct 24, 2026
816bd32
fix(site[tmux-usage]) Say when go's HasSession lists sessions
tony Oct 24, 2026
00c1b59
fix(scripts[tmux-usage]) Fail by name for a grammar nothing reads
tony Oct 24, 2026
da5a61b
fix(site[tmux-usage]) Record that Elixir's reconnect attaches again
tony Oct 24, 2026
8ce73f8
fix(site[tmux-usage]) Record go's probe before every command as a rul…
tony Oct 24, 2026
8f4e8fc
fix(site[kind-marks]) Keep the new chip hover and focus to the usage …
tony Oct 24, 2026
1d444c2
feat(site[port-picker]) Group Elixir under a BEAM family
tony Oct 24, 2026
8144829
fix(site[api-reference]) Keep the related section in ApiReference
tony Oct 24, 2026
23b7e6e
fix(site) Keep Python's tmux minimum at 3.2a
tony Oct 24, 2026
400da2a
fix(site) State each port's own tmux floor in the guide
tony Oct 24, 2026
256fa6b
fix(site[data]) State tmux 3.3a in the JVM example intros
tony Oct 24, 2026
3d51380
fix(just) Keep the build cache and lock through clean
tony Oct 24, 2026
b49e703
fix(site) Say tmuxp inherits its tmux floor from libtmux
tony Oct 24, 2026
3aaa0f6
test(site) Match every phrasing of a tmux minimum
tony Oct 24, 2026
0ea044e
test(site) Scope tmux floor exemptions to their statement
tony Oct 24, 2026
fe34ab6
fix(just) Refuse clean and nuke while an assembly holds the lock
tony Oct 24, 2026
2e88cf8
fix(just) Say what nuke removes and keeps, and test it
tony Oct 24, 2026
c646475
fix(site[link-preview]) Write a card for reference-section prose pages
tony Oct 24, 2026
4d996dd
fix(site[tmux-reference]) Set redirect pages apart in the payload check
tony Oct 24, 2026
d2ea598
test(site[product-docs]) Give the MCP reference test a longer deadline
tony Oct 24, 2026
803a4a0
test(site[just-clean]) Fail a recipe that blocks instead of hanging
tony Oct 24, 2026
5610c9e
Merge remote-tracking branch 'origin/qualify-related-type-names' into…
tony Oct 24, 2026
efa6de1
Merge remote-tracking branch 'origin/tmux-usage-and-reference' into m…
tony Oct 24, 2026
be1938f
Merge remote-tracking branch 'origin/elixir-beam-group' into merge-tr…
tony Oct 24, 2026
9ec8618
Merge remote-tracking branch 'origin/bump-min-tmux-000' into merge-tr…
tony Oct 24, 2026
a71ec04
Merge remote-tracking branch 'origin/just-clean' into merge-train-202…
tony Oct 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 36 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,13 +159,35 @@ grows with a name that wraps, so a related chip's mark is held flush with its
corner and as tall as the first line. The gate measures the Related APIs chips
on the Scala Server, Session, Window, Pane and Client pages at 1440 pixels,
where a name wraps onto several lines, and requires each chip to hold its name
and clear the next. Each check ends with a negative control that breaks what it
holds and requires the gate to notice, by the problem it names:
and clear the next. It reads the chips of the usage table on the `list-panes`
manual page the same way, and requires a chip with a qualifier to keep the width
its name needs, with the qualifier beside it or under it. Each check ends with a
negative control that breaks what it holds and requires the gate to notice, by
the problem it names:

```console
$ node site/scripts/check-dev.mjs --badge-centring
```

A link the page marks for a preview card must have a card to show. The preview
check hovers the C function link of a method page, then asks for the payload of
every marked link on four pages. It asks only for destinations the dev build
serves: one version of each port's reference, as its build target says, so the
Python reference that the other ports link to at `stable` is not asked for. What
it leaves out is bounded: only reference trees whose publisher owns the version
tree (`publishesOwnTree`), at versions the dev build does not serve. A payload
missing on a port the build does serve is reported, and the check fails if it
would not report one. Both checks run in the publication audit through the full
`check-dev.mjs` matrix, on its own source mirror and not on the assembly. The
trees it leaves out are the shell's own in the assembly (each port's shell build
renders `<slug>/<version>/reference/`), and `reference-previews.test.ts` reads
every port and tmux tree there and requires a payload beside each page a link is
marked for:

```console
$ node site/scripts/check-dev.mjs --reference-previews
```

Keep the complete assembly, all output suites, link audits, source/model
freshness, and full browser matrix in the publication audit:

Expand Down Expand Up @@ -204,6 +226,18 @@ similar names alone do not establish one. An overloaded page can belong to
several concepts. The page dropdown and "In other ports" use these mappings,
and tests require every mapped target to resolve.

A tmux command page links the methods that send the command, and a method
page links the command and the C function behind its scope. Those links come
from each port's source at the revision its API model was extracted from, not
from concepts: a method that only reads a captured snapshot has no link, and a
plan or chain that only records a command is an exclusion with cited lines. After
a port's model changes revision, regenerate the usage data with the port
checkouts present:

```console
$ node scripts/gen-tmux-usage.mjs
```

"Discussed in" comes from API mentions in guides, including tables and
sections headed with a port name. After editing those mentions, regenerate
the index:
Expand Down
38 changes: 38 additions & 0 deletions justfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Remove ignored build output. .gitignore decides what that is.
# https://just.systems/

# List available commands
default:
@just --list

# Remove ignored build output such as node_modules; .env, cache and lock stay.
[group: 'clean']
clean:
#!/usr/bin/env bash
# Untracked files, .env and .env.* files, the .build-cache/ build cache and
# the .build.lock file stay. `pnpm run clean` remains the build-aware clean
# of generated site output, and takes the lock the same way: it refuses
# while an assembly holds it. git clean inherits the descriptor, so killing
# this script does not free the lock while files are still going.
set -euo pipefail
exec 9>>.build.lock
flock --nonblock 9 || { printf 'just clean: an assembly holds .build.lock; wait for it to finish.\n' >&2; exit 1; }
git clean -fdX -e '!.env' -e '!.env.*' -e '!.build-cache/' -e '!.build.lock'

# Preview what clean will delete. It deletes nothing, so it ignores the lock.
[group: 'clean']
clean-dry:
git clean -ndX -e '!.env' -e '!.env.*' -e '!.build-cache/' -e '!.build.lock'

# Remove untracked and ignored files, even the cache and lock; .env files stay.
[group: 'clean']
[confirm("Remove untracked and ignored files, including node_modules/, the .build-cache/ build cache and the .build.lock file. Files named .env and .env.* stay. Continue?")]
nuke:
#!/usr/bin/env bash
# Refuses while an assembly holds .build.lock, as clean does, once the
# prompt is answered. git clean -x ignores .gitignore and only preserves -e
# patterns, so .env is named here rather than negated.
set -euo pipefail
exec 9>>.build.lock
flock --nonblock 9 || { printf 'just nuke: an assembly holds .build.lock; wait for it to finish.\n' >&2; exit 1; }
git clean -fdx -e '.env' -e '.env.*'
2 changes: 1 addition & 1 deletion packages/api-model/src/languages/jvm-examples.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ export function attachCompleteJvmExamples(
}
const blocks: NonNullable<DocBlock['examples']> = [{
lang: 'console',
intro: `${program.description.replace(/\n/g, ' ')} Use JDK 25, Git, and tmux 3.2a through 3.7c on Linux, with /bin/cat and /bin/sh available. In an empty directory, fetch the documented library revision:`,
intro: `${program.description.replace(/\n/g, ' ')} Use JDK 25, Git, and tmux 3.3a through 3.7c on Linux, with /bin/cat and /bin/sh available. In an empty directory, fetch the documented library revision:`,
code: `$ git clone https://github.com/${source.repo}.git libtmux-source && \\\n git -C libtmux-source checkout ${source.revision}\n`,
}]
for (const file of files) blocks.push({
Expand Down
2 changes: 2 additions & 0 deletions packages/api-model/src/parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ const GRAMMAR = {
swift: 'swift',
kotlin: 'kotlin',
scala: 'scala',
ruby: 'ruby',
lua: 'lua',
} as const

export type GrammarName = keyof typeof GRAMMAR
Expand Down
Loading
Loading