WSL port 5/7: run the gate on Linux, and stop the docs overpromising
Stacked on #10. Last of the six.
CI
"macOS and Linux" was a claim in the README that nothing checked, and on a stock
Ubuntu box it was not true. So run the real gate — the same 556 cases,
driving the real config in headless nvim and on real ptys — on ubuntu-latest,
on every push and every PR.
Choices worth defending:
- Neovim from the pinned tarball, not apt. Ubuntu 22.04 ships
0.6.1, which
install.sh's own 0.9 gate rejects..tar.gzrather than the AppImage because
the runner has no FUSE. Asset URL and archive layout verified before writing
the workflow —nvim-linux-x86_64/bin/nvim,NVIM v0.11.0. xclip+xvfbare not decoration. Several cases assert the real+
register, and a headless runner needs an X server forxclipto own a
selection at all.zsh, because the timer suite runsdrill.shunder both shells;
libnotify-bin+pulseaudio-utils, so the timer's chains have their
Linux legs present rather than silently skipped.demo.sh --checkruns too — it is the cheap half of the demo, and it is
what catchesdemo.shno longer running at all on a box with nobc.
Docs
The requirement line now includes a clipboard provider — the one dependency
nothing mentioned and nothing checked, while being the one whose absence is
completely silent.
New docs/wsl.md carries the WSL specifics: what WSLg gives you for free, why
the two fallbacks exist, and the measured fact that pw-play and notify-send
are both installed and both fail there. Plus: keep DRILL_HOME off /mnt/c,
and Alt is the Option key.
KEYS.md and docs/testing.md updated to match.
The thing this does not settle
Ctrl+Shift+Q needs the terminal to negotiate CSI-u. Nothing automated can
check it — suite_quit.sh writes ESC[113;6u straight onto the pty, so it
passes on a terminal where the chord could never arrive, and demo.sh --check
cannot send CSI-u at all. It has to be pressed by a human in Windows
Terminal. The docs say that plainly rather than implying it is covered.
Verification
- workflow YAML parses; steps resolve
- release asset + archive layout confirmed by download, not assumption
- full suite on this branch: ALL SUITES PASSED, 556/556
The CI badge itself is unverified until this PR runs it — that is the point of
putting it in a PR.
🤖 Generated with Claude Code
https://claude.ai/code/session_01WveBqAyhoM49p9gWfwBDBx
Summary by CodeRabbit
-
Documentation
- Added guidance for Alt/Option-click behavior on Linux, WSL, and macOS.
- Documented clipboard provider requirements, WSL fallbacks, setup checks, and troubleshooting.
- Added comprehensive WSL setup guidance covering clipboard, sound, notifications, Python, key encoding, and filesystem placement.
- Clarified testing prerequisites, timeout requirements, and intermittent WSL clipboard issues.
-
Tests
- Added automated checks for supported Neovim, Python, Linux dependencies, scripts, and the test suite.
- Expanded manual verification guidance for Windows Terminal key handling.
Greptile Summary
The PR adds a Linux CI gate and updates platform documentation to describe clipboard, WSL, and manual terminal-key requirements accurately.
- Runs the full test suite on
ubuntu-latestwith pinned Neovim and required Linux dependencies. - Pins the checkout action to an immutable commit and disables persisted credentials.
- Documents clipboard providers, WSL behavior, testing prerequisites, and the manual
Ctrl+Shift+Qcheck.
Confidence Score: 5/5
The PR appears safe to merge.
No blocking failure remains.
Important Files Changed
| Filename | Overview |
|---|---|
| .github/workflows/tests.yml | Adds the Linux gate, narrows push coverage explicitly, and resolves the prior mutable-action concern with a full checkout commit SHA. |
| README.md | Updates platform requirements and links the new WSL guidance. |
| docs/testing.md | Documents gate dependencies, Linux CI coverage, and the known WSL clipboard flake. |
| docs/wsl.md | Adds WSL-specific guidance for clipboard integration, notifications, sound, Python selection, key encoding, and filesystem placement. |
Reviews (23): Last reviewed commit: "Stop leaving GITHUB_TOKEN in the checkou..." | Re-trigger Greptile