WSL port 5/7: run the gate on Linux, and stop the docs overpromising

Merged
JA
3mo ago
+296-16

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.gz rather 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 + xvfb are not decoration. Several cases assert the real +
    register, and a headless runner needs an X server for xclip to own a
    selection at all.
  • zsh, because the timer suite runs drill.sh under both shells;
    libnotify-bin + pulseaudio-utils, so the timer's chains have their
    Linux legs present rather than silently skipped.
  • demo.sh --check runs too — it is the cheap half of the demo, and it is
    what catches demo.sh no longer running at all on a box with no bc.

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-latest with 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+Q check.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

FilenameOverview
.github/workflows/tests.ymlAdds the Linux gate, narrows push coverage explicitly, and resolves the prior mutable-action concern with a full checkout commit SHA.
README.mdUpdates platform requirements and links the new WSL guidance.
docs/testing.mdDocuments gate dependencies, Linux CI coverage, and the known WSL clipboard flake.
docs/wsl.mdAdds 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