Merge develop into main for v0.1.17 release - #10
Merged
Merged
Conversation
The AUR helper script (packaging/aur-bin/release.sh) edits the PKGBUILD and writes .SRCINFO in place, then copies them into the AUR clone. The in-repo copies were committed once on 0.1.11 and never updated since, so they had drifted to a stale 0.1.11 across the 0.1.12 → 0.1.16 release cycle — only the AUR clone copies were current. Bring the in-repo template back in sync with what 0.1.16 actually published. Also document the rule in CONTRIBUTING.md's AUR release step so the next release back-merge picks the change up automatically. No behaviour change: the AUR clone has been at 0.1.16 since the 0.1.16 push; this just lines up the repo-side template.
Adopted maintainership of the AUR `runex` package (third-party
until 0.1.16, maintained by Rafael Dominiquini, transferred to
ShortArrow on 2026-05-25). `runex-bin` already lives under
`packaging/aur-bin/`; `runex` (= source build from crates.io)
gets a sibling `packaging/aur/`.
Behaviour for users:
- AUR `runex` rebuilds from the `runex` crate published to
crates.io. The PKGBUILD now declares `conflicts=('runex-bin')`
for symmetry with `runex-bin`'s existing `conflicts=('runex')`
— installing one removes the other instead of clobbering files.
- `license` is corrected to `('MIT' 'Apache-2.0')` to match the
crate's `MIT OR Apache-2.0` declaration (Dominiquini's PKGBUILD
had `('MIT')` only).
- The bundled LICENSE file in the AUR clone is now sourced from
the runex repo root (= the same file shipped in `runex` itself
/ GitHub Release tarballs), so its sha256 changes from
Dominiquini's older MIT-only file to the current dual-licensed
LICENSE.
New files:
- `packaging/aur/PKGBUILD`: imported from Dominiquini's last
published state (0.1.16). Maintainer line rewritten to
ShortArrow; Dominiquini retained as `Contributor:`.
- `packaging/aur/.SRCINFO`: regenerated via `makepkg --printsrcinfo`.
- `packaging/aur/.nvchecker.toml`: imported as-is from the AUR
clone — the nvchecker config that watches `runex` on crates.io.
- `packaging/aur/release.sh`: sha256-from-crates.io variant of
`packaging/aur-bin/release.sh`. Bumps pkgver, refreshes the
multi-line `sha256sums=(...)` block (with a small embedded
python because sed's multi-line story is grim), regenerates
`.SRCINFO` via `makepkg`, copies PKGBUILD/.SRCINFO/.nvchecker.toml
plus the repo-root LICENSE into the AUR clone, and stages a
local commit. Push is manual via SSH (same as `runex-bin`).
CONTRIBUTING.md:
- New `AUR runex (source)` step in the Publish section, directly
after `AUR runex-bin`. Documents the helper invocation, the
crates.io-publish gate (must run after `cargo publish`), the
conflict-with-runex-bin caveat, and the same in-repo-template-
sync rule that `runex-bin` already follows.
- Brief historical note about the transfer from Dominiquini.
Tidy:
- `packaging/{aur-bin,homebrew}/release.sh` get the `+x` bit they
always should have had — CONTRIBUTING.md already invokes them
as `packaging/.../release.sh X.Y.Z ...` (no `bash` prefix), so
they need to be executable. `packaging/aur/release.sh` is born
`+x`.
The current AUR `runex` already shows 0.1.16 (Dominiquini's last
bump on our behalf, before transfer). 0.1.17 will be the first
release using this helper — at which point the metadata polish
(maintainer, conflicts, license, LICENSE-from-repo) lands on AUR
together with the version bump.
Under Git Bash (cygwin/msys bash) the readline bind -x handler sits on
top of the cygwin signal layer. Spawning a Win32 .exe from inside that
handler — exactly what every runex hook call did — caused the next
SIGINT to be lost, so the user's Ctrl+C after an unwanted expansion no
longer cleared the line and Enter ran the stale expanded command.
Fix: cache file now ships a runtime case "${OSTYPE-}" dispatcher. On
msys/cygwin the trigger handler resolves abbreviations from a static
table baked into the cache file in pure bash (no subprocess spawn →
SIGINT delivery restored). Linux bash, WSL bash, zsh, pwsh, nu are
unchanged.
0.1.17 interim trade-off (tracked in #9 for closure in 0.1.18): the
bake path skips command-position detection, so `echo gst<Space>`
expands gst on Git Bash even though Linux bash leaves it alone.
Recipe-relevant command-position prefixes (sudo, |, ||, &&, ;) still
work because those are command positions.
Includes:
- Rust unit tests (27 in bash_static_dispatcher, 4 new in shell_export)
- Linux PTY E2E with OSTYPE=msys spoofing (5 tests)
- Windows-local smoke against real Git Bash + MSYS2 binaries (7 tests
per binary), covering OSTYPE values msys/cygwin/msys2/linux-gnu
Verified end-to-end on Git Bash 2.50 and MSYS2 (winget) for the actual
Ctrl+C-after-expansion case. Cache version bumped 1 → 2 so doctor
nudges existing Git Bash users to re-run `runex init bash`.
Closes #7. Follow-up: #9.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Release 0.1.17 bundles the Git Bash Ctrl+C fix (#7) with the packaging changes that landed on develop after 0.1.16:
case "${OSTYPE-}"dispatcher. On msys/cygwin the trigger handler resolves abbreviations from a static table baked into the cache file in pure bash — no subprocess spawn → no signal interference. Linux bash, WSL bash, zsh, pwsh, nu are unchanged. Cache version bumped 1 → 2 sorunex doctornudges existing Git Bash users to re-runrunex init bash.echo gst<Space>expands on Git Bash. Recipe-relevant command-position prefixes (sudo,|,||,&&,;) keep working on both paths.runexsource package take-over (packaging/aur/). Sibling ofrunex-bin; 0.1.17 is the first release using the helper.packaging/aur-bin/PKGBUILDsynced to 0.1.16 + drift-prevention rule documented in CONTRIBUTING.md.Tests
gst<Space>/gca<Space>/up3<Space>+ Ctrl+C all clear the buffer cleanlyTest plan
v0.1.17push triggersrelease.yml(crates.io publish + GitHub Release)runex-binbump (helper script)runexbump (= first run after take-over)Closes #7. Follow-up: #9.