Commit graph

4006 commits

Author SHA1 Message Date
dependabot[bot] 1eae28dfb5
build(deps): bump Homebrew/actions/setup-homebrew from 2026.08.24.1 to 2026.09.07.1 (#819)
Some checks failed
lint / commit convention (push) Failing after 0s
Container images / build-containers-with-zsh (5.8) (push) Has been cancelled
Container images / build-containers-with-zsh (5.9) (push) Has been cancelled
Container images / build-container-latest (push) Has been cancelled
lint / markdown (push) Has been cancelled
lint / zsh (noexec) (push) Has been cancelled
lint / zsh (zcompile) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, --slice, gh-r) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, --slice, plugins) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, annexes) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, commands) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, compile) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, config-zstyle) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, hook-handler) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, ice-validation) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, ices) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, snippets) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, --slice, gh-r) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, --slice, plugins) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, annexes) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, commands) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, compile) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, config-zstyle) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, hook-handler) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, ice-validation) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, ices) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, snippets) (push) Has been cancelled
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-08 23:05:03 +02:00
Vladislav Doster db9e267184 release: v3.16.0 → v3.17.0
Some checks failed
lint / commit convention (push) Failing after 0s
Container images / build-containers-with-zsh (5.8) (push) Has been cancelled
Container images / build-containers-with-zsh (5.9) (push) Has been cancelled
Container images / build-container-latest (push) Has been cancelled
Documentation / zshelldoc (push) Has been cancelled
lint / markdown (push) Has been cancelled
lint / zsh (noexec) (push) Has been cancelled
lint / zsh (zcompile) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, --slice, gh-r) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, --slice, plugins) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, annexes) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, commands) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, compile) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, config-zstyle) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, hook-handler) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, ice-validation) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, ices) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, snippets) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, --slice, plugins) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, annexes) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, commands) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, compile) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, config-zstyle) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, hook-handler) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, ice-validation) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, ices) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, snippets) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, --slice, gh-r) (push) Has been cancelled
# [3.17.0](https://github.com/zdharma-continuum/zinit/compare/v3.16.0...v3.17.0) (2026-09-02)

### Features

* **ziextract:** support zst archive format ([b8855c7](b8855c7887))
2026-09-02 08:54:53 +00:00
vladislav doster ce9bdf9990
Merge pull request #818 from zdharma-continuum/fear/support-zst-archives
feat(ziextract): support zst archive format
2026-09-02 03:53:13 -05:00
Vladislav Doster b8855c7887 feat(ziextract): support zst archive format
Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-09-01 17:22:49 -05:00
Vladislav Doster 98bcb79c3d release: v3.15.3 → v3.16.0
Some checks failed
lint / commit convention (push) Failing after 0s
lint / markdown (push) Has been cancelled
Container images / build-containers-with-zsh (5.8) (push) Has been cancelled
Container images / build-containers-with-zsh (5.9) (push) Has been cancelled
lint / zsh (noexec) (push) Has been cancelled
Container images / build-container-latest (push) Has been cancelled
Documentation / zshelldoc (push) Has been cancelled
lint / zsh (zcompile) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, --slice, gh-r) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, --slice, plugins) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, annexes) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, commands) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, compile) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, config-zstyle) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, hook-handler) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, ice-validation) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, ices) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, snippets) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, --slice, gh-r) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, --slice, plugins) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, annexes) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, commands) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, compile) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, config-zstyle) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, hook-handler) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, ice-validation) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, ices) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, snippets) (push) Has been cancelled
# [3.16.0](https://github.com/zdharma-continuum/zinit/compare/v3.15.3...v3.16.0) (2026-08-31)

### Bug Fixes

* **self-update:** honor -q in changelog display ([a85e9dc](a85e9dcc3e))

### Features

* **self-update:** support -n/--no-pager ([cc3baf3](cc3baf395f)), closes [#632](https://github.com/zdharma-continuum/zinit/issues/632)
2026-08-31 22:05:56 +00:00
vladislav doster a8bc3d0cf6
Merge pull request #815 from zdharma-continuum/feat/self-update-no-pager
feat(self-update): support `-n`/`--no-pager`
2026-08-31 17:03:49 -05:00
Vladislav Doster fdcbb25688 docs(readme): document self-update --no-pager
Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-31 15:50:14 -05:00
Vladislav Doster 8197f3215b test(commands): cover self-update pager flags
The fixture leaves the sandbox clone one commit behind a scratch bare
upstream built with git commit-tree from HEAD's own tree, so the
fast-forward pull moves only the branch pointer: the unstaged diff the
bootstrap applies stays intact and nothing needs restoring when an
assertion aborts a test. Works offline and on detached-HEAD checkouts
(CI pull_request) alike; a less() shadow function detects pager
invocation, and ambient pull.rebase/autostash settings are pinned off
in the clone so the pull output is stable across machines.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-31 15:50:14 -05:00
Vladislav Doster a85e9dcc3e fix(self-update): honor -q in changelog display
When the checkout is behind upstream, the commit-log display piped
through .zinit-pager unconditionally, so self-update -q (and the quiet
.zinit-self-update call made by update --all) could hang in less until
dismissed. Skip the display, munging included, under --quiet.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-31 15:50:14 -05:00
Vladislav Doster cc3baf395f feat(self-update): support -n/--no-pager
Issue #632: the pager machinery already recognized -n/--no-pager
globally and .zinit-pager already honors OPTS[opt_-n,--no-pager], but
self-update rejected the flag with "Incorrect options given". Allow it
so the commit list can be printed straight to the terminal; help and
error output pick the flag up automatically from the option map. Also
offer the flag in the _zinit completion.

Closes #632

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-31 15:50:14 -05:00
Vladislav Doster 9a2898ba2a release: v3.15.2 → v3.15.3
Some checks failed
lint / commit convention (push) Failing after 0s
Container images / build-containers-with-zsh (5.9) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, --slice, plugins) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, annexes) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, commands) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, compile) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, config-zstyle) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, hook-handler) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, ice-validation) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, ices) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, snippets) (push) Has been cancelled
Container images / build-containers-with-zsh (5.8) (push) Has been cancelled
Container images / build-container-latest (push) Has been cancelled
Documentation / zshelldoc (push) Has been cancelled
lint / markdown (push) Has been cancelled
lint / zsh (noexec) (push) Has been cancelled
lint / zsh (zcompile) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (macos, --slice, gh-r) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, --slice, gh-r) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, --slice, plugins) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, annexes) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, commands) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, compile) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, config-zstyle) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, hook-handler) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, ice-validation) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, ices) (push) Has been cancelled
tests / ${{ matrix.zunit_test }} | ${{ matrix.os }} (ubuntu, snippets) (push) Has been cancelled
## [3.15.3](https://github.com/zdharma-continuum/zinit/compare/v3.15.2...v3.15.3) (2026-08-28)

### Bug Fixes

* **install:** retry and auth github api downloads ([eaa1056](eaa1056699)), closes [#r](https://github.com/zdharma-continuum/zinit/issues/r)
2026-08-28 08:06:00 +00:00
GitHub Actions 37e90a099f docs: generate
Signed-off-by: GitHub Actions <actions@github.com>
2026-08-28 07:57:33 +00:00
vladislav doster 404c0197fa
Merge pull request #814 from zdharma-continuum/fix/gh-r-rate-limit
fix(install): retry and authenticate github api downloads
2026-08-28 02:54:49 -05:00
Vladislav Doster a3a6b5ae94 ci: pass $GITHUB_TOKEN to zunit test step
Raises the gh-r suite's GitHub API budget from the anonymous
60 requests/hour/IP to 1,000/hour, so release lookups no longer
depend on unauthenticated HTML scraping that gets throttled when
concurrent runs share runner egress IPs.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-28 02:53:53 -05:00
Vladislav Doster eaa1056699 fix(install): retry and auth github api downloads
.zinit-download-file-stdout made every request anonymously and gave
up on the first transient error. The gh-r test suite alone exceeds
GitHub's anonymous API limit of 60 requests/hour/IP, and racing CI
runs trip per-IP abuse throttling, failing whole zunit slices (run
33138613456: 28 failures, all rate-limited downloads).

Send Authorization from GITHUB_TOKEN/GH_TOKEN, strictly limited to
api.github.com so tokens never reach asset CDNs, mirrors, or snippet
hosts, and retry transient HTTP errors in curl and wget.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-28 02:53:53 -05:00
vladislav doster 63e5e9fac8
Merge pull request #813 from zdharma-continuum/ci-remove-sandbox-option-for-homebrew-action-in-tests-workflow
ci:  remove `sandbox`  option for homebrew action in tests workflow
2026-08-28 01:27:05 -05:00
vladislav doster dd076b86c1
ci: remove sandbox option for homebrew action in tests workflow 2026-08-28 01:24:51 -05:00
Vladislav Doster fd4a730727 release: v3.15.1 → v3.15.2
## [3.15.2](https://github.com/zdharma-continuum/zinit/compare/v3.15.1...v3.15.2) (2026-08-28)

### Bug Fixes

* **install:** treat non-archive single file gracefully in ziextract. ([981cb15](981cb1582e)), closes [#771](https://github.com/zdharma-continuum/zinit/issues/771) [#r](https://github.com/zdharma-continuum/zinit/issues/r) [Pre-#771](https://github.com/Pre-/issues/771)
2026-08-28 03:25:11 +00:00
vladislav doster 98b004ba5b
Merge pull request #787 from zdharma-continuum/fix/ziextract-install
fix(install): treat non-archive single file gracefully in ziextract.
2026-08-27 22:23:06 -05:00
Vladislav Doster aabc380881 test(ices): cover gh-r appimage bpick+mv recipe
End-to-end test for the ziextract non-archive fallback using
pkgforge-dev/ghostty-appimage: the downloaded AppImage is not an
archive, so it must be kept as a plain file, marked executable,
and renamed by the mv ice. Asserts on files only; the Linux-only
binary is never executed since CI also runs on macOS.

Closes: https://github.com/zdharma-continuum/zinit/issues/775
Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 22:20:25 -05:00
Vladislav Doster 77eb3496b4 release: v3.15.0 → v3.15.1
## [3.15.1](https://github.com/zdharma-continuum/zinit/compare/v3.15.0...v3.15.1) (2026-08-27)

### Bug Fixes

* **ices:** expand the atinit'!' ice correctly ([ed80701](ed80701426))
* **ices:** restore $OLDPWD around plugin directory hooks ([712cac1](712cac1952))
* **ices:** restore cwd even when the ice body cds ([264526a](264526ab26))
* **install:** restore cwd after the configure hook ([d875651](d875651d59))
* **install:** restore cwd on early atclone return ([736403c](736403cb39))
2026-08-27 23:26:35 +00:00
vladislav doster 77691d46b1
Merge pull request #811 from zdharma-continuum/fix/oldpwd-leak
fix: prevent leaking or corrupting the `$OLDPWD` environment variable
2026-08-27 18:25:01 -05:00
Vladislav Doster 2e77713c8e test(ices): fix the completions-ignored assertion
is_not_value_in builds an associative array from its arguments, so it
died on an odd element count, which made the test depend on how many
completions earlier suites had installed. It also compared a bare name
against full paths, so it never caught a wrongly installed completion.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 04:30:41 -05:00
Vladislav Doster c08a363b07 test(ices): extract the cwd assertion helper
Eight tests repeated the same four-line block asserting PWD, OLDPWD and
where cd - lands. Move it beside _oldpwd_fixture in @setup and drop the
comment paragraphs that restate the traps documented in tests/CLAUDE.md.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 04:30:41 -05:00
Vladislav Doster 4819677018 refactor(ices): simplify the cwd helpers
Drop the anonymous-function indirection in .zinit-cd-quiet and pass --,
collapse the duplicated landing cd in .zinit-restore-dir, and convert the
six remaining hand-rolled copies of the idiom in zinit-install.zsh to the
named helper.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 04:30:41 -05:00
Vladislav Doster 736403cb39 fix(install): restore cwd on early atclone return
atclone evals inline, unlike the atpull hooks, which go through
.zinit-at-eval and get a function frame that absorbs a return from the
ice body. Wrap the eval so the restore runs on every path.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 04:30:41 -05:00
Vladislav Doster ed80701426 fix(ices): expand the atinit'!' ice correctly
${ICE[atinit#!]} subscripts a literal "atinit#!" key and expands to
nothing, so atinit'!...' never ran for as"command" plugins.
${ICE[atinit]#1} stripped a leading "1" instead of "!", leaving the bang
in the evaluated code. Both now strip the prefix they meant to.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 04:30:41 -05:00
Vladislav Doster 264526ab26 fix(ices): restore cwd even when the ice body cds
The ___moved guard skipped the restore whenever zinit did not cd
itself, so an ice body that cds under nocd stranded the shell wherever
the plugin left it. Make the restore unconditional and give
.zinit-restore-dir a fast path so the case where nothing moved stays
free.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 04:30:41 -05:00
Vladislav Doster 08530de87c test(hook-handler): pin $HOME to the sandbox
The second test runs `zsh -c', which sources $HOME/.zshenv, so the
developer's own rc file would otherwise leak into $output and $state.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 04:30:33 -05:00
Vladislav Doster a1cf6128c2 test: pin core.eol=lf for the test environment
With the text attribute set, core.autocrlf=false hands the decision to
core.eol, so a global core.eol=crlf still produces CRLF checkouts in the
sandbox clones.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 03:29:50 -05:00
Vladislav Doster 8f4e888328 ci: add hook-handler and ice-validation to matrix
Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 03:28:26 -05:00
Vladislav Doster a4c01374a9 build: use text=auto for the default attribute
Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 03:28:26 -05:00
Vladislav Doster 4d98cd4563 test(ice-validation): fix two assertions that could not hold
wait-invalid-suffix-x asserted on 'Expected one of: a, b, c', but
+zi-log colourises each suffix letter separately, so the raw output
carries escape sequences between them and no such contiguous substring
exists. Strip the escapes before asserting on the sentence.

for-invalid-as asserted rc 0 while the load ran on to
∞zinit-compile-plugin-hook, which returns 1 for this fixture ("No files
for compilation found") and made `zinit for' exit 1 for a reason
unrelated to the invalid ice under test. Add nocompile so the test
measures ice validation only.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 03:28:26 -05:00
Vladislav Doster 116d30bfc8 test(hook-handler): stop re-sourcing zinit.zsh in @setup
@setup bodies run under ERR_EXIT. Sourcing zinit.zsh trips it partway
through, so the setup aborted and zunit reported both tests as failures
with an empty message -- which read as a broken assertion rather than a
broken fixture. The source was redundant anyway: the bootstrap already
sources zinit from the sandbox clone.

Drop the ZINIT[BIN_DIR]="$PWD" override with it. It aimed the tests at
the real checkout instead of the sandbox, the same misdirection that
lets a failed bootstrap write into the working tree. Neither test calls
a zinit function; only the hook registries are needed.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 03:28:26 -05:00
Vladislav Doster 8f01c1d451 test(ices): add $OLDPWD regression coverage for ice loading
Covers atload, atinit and multisrc, the nocd branch, a since-deleted
$OLDPWD, an $OLDPWD that started unset, and the configure hook.

Each test asserts where `cd -' actually lands, not just the value of
$OLDPWD: `cd -' reads zsh's internal previous-directory state, so a
parameter-only assertion passes against a fix that merely assigns
$OLDPWD while leaving the bug in place. All seven fail without the
preceding two commits.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 03:28:26 -05:00
Vladislav Doster d875651d59 fix(install): restore cwd after the configure hook
∞zinit-configure-base-hook cd'd into the plugin directory inside a plain
{ } block -- not a subshell -- and every one of its four return paths
left the shell parked there. A `zinit update' on a plugin using the
configure ice moved the user's shell and never moved it back.

Wrap the block in an always clause so the directory is restored on all
paths, and use .zinit-cd-quiet instead of a bare `cd --', which was also
firing chpwd hooks and AUTO_PUSHD.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 03:28:26 -05:00
Vladislav Doster 712cac1952 fix(ices): restore $OLDPWD around plugin directory hooks
Every ice that runs code inside a plugin or snippet directory (atinit,
atload, multisrc, atclone, atpull, ps-on-unload) saved and restored $PWD
around the temporary cd, but never $OLDPWD. `cd -q' suppresses chpwd
hooks and `noautopushd' suppresses the directory stack, but neither
suppresses $OLDPWD, so the cd back left it pointing at the directory
just visited. Opening a new shell and pressing `cd -' jumped into a
zinit plugin directory without the user ever having gone there.

Add .zinit-cd-quiet/.zinit-restore-dir, which return to the original
$PWD by cd'ing through the original $OLDPWD for real. A plain $OLDPWD
assignment is not enough: `cd -' reads zsh's internal previous-directory
state, not the parameter, so assigning it leaves the parameter looking
correct while `cd -' still navigates to the plugin directory. When the
original $OLDPWD is empty or has since been deleted, bounce through
$PWD instead, which degrades `cd -' to a harmless no-op rather than
emitting an error and leaking the plugin directory anyway.

Also gate the restore on the cd having actually happened. It ran
unconditionally, so with the nocd ice -- where no cd takes place -- the
no-op cd back to $PWD still set OLDPWD=$PWD, silently discarding the
user's real previous directory.

Sites already protected by a real subshell, and the user-facing `zinit
cd' and `zinit create' commands that are meant to leave you in the
target directory, are left untouched.

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-08-27 03:28:26 -05:00
dependabot[bot] 6842df0082
build(deps): bump Homebrew/actions/setup-homebrew from 2026.08.14.1 to 2026.08.24.1 (#809)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-26 08:45:36 +02:00
dependabot[bot] fc234da3ad
build(deps): bump Homebrew/actions/setup-homebrew from 2026.08.10.2 to 2026.08.14.1 (#807)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 09:09:14 +02:00
vladislav doster fb12fbc83a
Merge pull request #806 from zdharma-continuum/dependabot/github_actions/Homebrew/actions/setup-homebrew-2026.08.10.2
build(deps): bump Homebrew/actions/setup-homebrew from 2026.08.10.1 to 2026.08.10.2
2026-08-14 17:07:49 -05:00
dependabot[bot] 7d94266c9d
build(deps): bump Homebrew/actions/setup-homebrew
Bumps [Homebrew/actions/setup-homebrew](https://github.com/homebrew/actions) from 2026.08.10.1 to 2026.08.10.2.
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](c8707045cc...b35a29a0f8)

---
updated-dependencies:
- dependency-name: Homebrew/actions/setup-homebrew
  dependency-version: 2026.08.10.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-13 12:02:38 +00:00
dependabot[bot] 488b07e766
build(deps): bump EndBug/add-and-commit from 10 to 11 (#805)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-13 08:43:58 +02:00
dependabot[bot] feba951c29
build(deps): bump Homebrew/actions/setup-homebrew from 2026.08.03.2 to 2026.08.10.1 (#804)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 23:01:29 +02:00
dependabot[bot] 571722af95
build(deps): bump Homebrew/actions/setup-homebrew from 2026.07.20.1 to 2026.08.03.2 (#802)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 14:03:31 +02:00
dependabot[bot] ded3d6eef0
build(deps): bump Homebrew/actions/setup-homebrew from 2026.07.10.1 to 2026.07.20.1 (#798)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 07:00:23 +02:00
vladislav doster e4b5083c7c
Merge pull request #797 from zdharma-continuum/ci/lint-commit-message
ci(style): Add commit convention job to linting workflow
2026-07-25 15:33:07 -05:00
vladislav doster 41e55eb833
ci(style): Add commit convention job to linting workflow 2026-07-25 15:31:00 -05:00
vladislav doster 824e18d4b9
Merge pull request #796 from zdharma-continuum/ci/fix-tests
ci(tests): parallelize zunit runs and pin CI toolchain
2026-07-25 11:14:35 -05:00
vladislav doster 7e2bb9f826
ci: disable verbose output and parallel execution in zunit
Updated zunit configuration to disable verbose output and parallel execution.
2026-07-25 11:09:52 -05:00
vladislav doster 1bd68690d4
ci(tests): parallelize zunit runs and pin CI toolchain
- Check out zdharma-continuum/zunit at feat/run-tests-in-parallel-support and
  run the gh-r and plugins suites with --slice
- Pin Homebrew/actions/setup-homebrew to a commit SHA and enable its sandbox
- Drop ncurses from the brew install list, relink it explicitly, and add
  jemalloc; set HOMEBREW_NO_REQUIRE_TAP_TRUST
- Expand the OS matrix to "${os}-latest" and label jobs as "<test> | <os>"

Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2026-07-25 10:45:26 -05:00