diff --git a/.claude/rules/troubleshooting.md b/.claude/rules/troubleshooting.md
index 7a83f8dc..cd5aa8da 100644
--- a/.claude/rules/troubleshooting.md
+++ b/.claude/rules/troubleshooting.md
@@ -60,3 +60,6 @@ Common problems and solutions when working with ExFig.
| DocC icon invisible dark mode | `currentColor` in SVG doesn't work in `
` — use `~dark.svg` with `#ffffff` stroke |
| hk newlines hook fails on commit | `codegen:pkl` strips trailing newline from `Generated/*.pkl.swift`. Fix: `hk util end-of-file-fixer --fix `; verify with `hk check --all` (exit 0). Hooks run via `bin/mise x -- hk run pre-commit` |
| `Document`/`Paint` has no `visible` | swift-figma-api `Document`/`Paint` expose only `opacity` (not `visible`); only `Effect` has `visible`. Detect hidden layers via `opacity == 0` |
+| SwiftLint ignores `excluded:` | SwiftLint >= 0.64.0 drops `excluded:` when given explicit file paths, so hk's batched `swiftlint lint --strict {{files}}` flags `Generated/*.pkl.swift`. Pinned to 0.63.3 -- re-test before bumping |
+| hk `undefined variable: extra_files` | hk >= 1.47 evaluates `hk.pkl` with the built-in pklr, which rejects the old package schema. Bump the `hk@X.Y.Z` package URI in `hk.pkl` in the same commit as the binary |
+| pkl `Module version conflict` | pkl 0.32+ treats `package://` and `projectpackage://` as distinct modules. `Schemas/generator-settings.pkl` must amend `@pkl.swift/GeneratorSettings.pkl` (project dep), not the raw `package://` URI |
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 29af74e8..95289117 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -20,7 +20,7 @@ jobs:
name: Lint
runs-on: macos-15
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
lfs: true
@@ -46,7 +46,7 @@ jobs:
DEVELOPER_DIR: "/Applications/Xcode_26.2.app/Contents/Developer"
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
lfs: true
@@ -58,7 +58,7 @@ jobs:
echo "TOOLCHAINS=$TOOLCHAINS" >> "$GITHUB_ENV"
- name: Cache SPM dependencies
- uses: actions/cache@v5
+ uses: actions/cache@v6
with:
path: .build
key: ${{ runner.os }}-swift-6.3-spm-${{ hashFiles('Package.swift', 'Package.resolved') }}
@@ -96,12 +96,12 @@ jobs:
apt-get install -y git-lfs curl
git lfs install
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
lfs: true
- name: Cache SPM dependencies
- uses: actions/cache@v5
+ uses: actions/cache@v6
with:
path: .build
key: ${{ runner.os }}-swift-6.3-spm-${{ hashFiles('Package.swift', 'Package.resolved') }}
@@ -137,16 +137,16 @@ jobs:
runs-on: windows-latest
needs: lint
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
- name: Install Swift
- uses: compnerd/gha-setup-swift@v0.3.0
+ uses: compnerd/gha-setup-swift@v0.4.0
with:
- branch: swift-6.3-release
- tag: 6.3-RELEASE
+ swift-version: swift-6.3-release
+ swift-build: 6.3-RELEASE
- name: Cache SPM dependencies
- uses: actions/cache@v5
+ uses: actions/cache@v6
with:
path: .build
key: ${{ runner.os }}-swift-6.3-spm-${{ hashFiles('Package.swift', 'Package.resolved') }}
diff --git a/.github/workflows/deploy-docc.yml b/.github/workflows/deploy-docc.yml
index 3e3ac0fb..56ad3568 100644
--- a/.github/workflows/deploy-docc.yml
+++ b/.github/workflows/deploy-docc.yml
@@ -26,7 +26,7 @@ jobs:
env:
DEVELOPER_DIR: "/Applications/Xcode_26.2.app/Contents/Developer"
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
- name: Install Swift 6.3 toolchain
run: |
@@ -45,7 +45,7 @@ jobs:
--output-path docs
echo '' > docs/index.html
- - uses: actions/upload-pages-artifact@v4
+ - uses: actions/upload-pages-artifact@v5
with:
path: docs
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index df6677e7..3cf4fd1e 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -45,16 +45,16 @@ jobs:
apt-get install -y git-lfs
git lfs install
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
lfs: true
- name: Install Swift (Windows)
if: matrix.platform == 'windows-x64'
- uses: compnerd/gha-setup-swift@v0.3.0
+ uses: compnerd/gha-setup-swift@v0.4.0
with:
- branch: swift-6.3-release
- tag: 6.3-RELEASE
+ swift-version: swift-6.3-release
+ swift-build: 6.3-RELEASE
- name: Install Swift 6.3 toolchain (macOS)
if: matrix.platform == 'macos'
@@ -167,7 +167,7 @@ jobs:
if: ${{ !contains(github.ref, '-') }}
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
ref: main
fetch-depth: 0
@@ -201,7 +201,7 @@ jobs:
needs: build
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
fetch-depth: 0
@@ -254,7 +254,7 @@ jobs:
done
- name: Create GitHub Release
- uses: softprops/action-gh-release@v2
+ uses: softprops/action-gh-release@v3
with:
body: ${{ steps.changelog.outputs.content }}
prerelease: ${{ contains(github.ref, '-') }}
@@ -291,7 +291,7 @@ jobs:
echo "linux=${LINUX_SHA}" >> "$GITHUB_OUTPUT"
- name: Checkout Homebrew tap
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
repository: DesignPipe/homebrew-tap
token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
diff --git a/.swiftformat b/.swiftformat
index fba9e381..1c9b7ddd 100644
--- a/.swiftformat
+++ b/.swiftformat
@@ -7,3 +7,6 @@
--wraparguments before-first
--wrapcollections before-first
--exclude .build,Packages,Sources/ExFigConfig/Generated
+# 0.62.0 split the opt-in wrapConditionalBodies rule into wrapIf*/wrapGuard* rules and
+# turned the two wrapIf* halves on by default; keep single-line if bodies as they are.
+--disable wrapIfStatementBodies,wrapIfExpressionBodies
diff --git a/Sources/ExFigCLI/Resources/Schemas/generator-settings.pkl b/Sources/ExFigCLI/Resources/Schemas/generator-settings.pkl
index 85e27f39..d880c9fc 100644
--- a/Sources/ExFigCLI/Resources/Schemas/generator-settings.pkl
+++ b/Sources/ExFigCLI/Resources/Schemas/generator-settings.pkl
@@ -1 +1 @@
-amends "package://pkg.pkl-lang.org/pkl-swift/pkl.swift@0.8.0#/GeneratorSettings.pkl"
+amends "@pkl.swift/GeneratorSettings.pkl"
diff --git a/hk.pkl b/hk.pkl
index a9aeee76..a2f12db8 100644
--- a/hk.pkl
+++ b/hk.pkl
@@ -1,5 +1,5 @@
-amends "package://github.com/jdx/hk/releases/download/v1.28.0/hk@1.28.0#/Config.pkl"
-import "package://github.com/jdx/hk/releases/download/v1.28.0/hk@1.28.0#/Builtins.pkl"
+amends "package://github.com/jdx/hk/releases/download/v1.53.0/hk@1.53.0#/Config.pkl"
+import "package://github.com/jdx/hk/releases/download/v1.53.0/hk@1.53.0#/Builtins.pkl"
// =============================================================================
// hk Configuration for ExFig
diff --git a/mise.lock b/mise.lock
index 260fbab9..59ab1150 100644
--- a/mise.lock
+++ b/mise.lock
@@ -1,240 +1,240 @@
# @generated - this file is auto-generated by `mise lock` https://mise.jdx.dev/dev-tools/mise-lock.html
[[tools.actionlint]]
-version = "1.7.11"
+version = "1.7.12"
backend = "aqua:rhysd/actionlint"
[tools.actionlint."platforms.linux-arm64"]
-checksum = "sha256:21bc0dfb57a913fe175298c2a9e906ee630f747cb66d0a934d0d4b69f4ee1235"
-url = "https://github.com/rhysd/actionlint/releases/download/v1.7.11/actionlint_1.7.11_linux_arm64.tar.gz"
+checksum = "sha256:325e971b6ba9bfa504672e29be93c24981eeb1c07576d730e9f7c8805afff0c6"
+url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_arm64.tar.gz"
[tools.actionlint."platforms.linux-arm64-musl"]
-checksum = "sha256:21bc0dfb57a913fe175298c2a9e906ee630f747cb66d0a934d0d4b69f4ee1235"
-url = "https://github.com/rhysd/actionlint/releases/download/v1.7.11/actionlint_1.7.11_linux_arm64.tar.gz"
+checksum = "sha256:325e971b6ba9bfa504672e29be93c24981eeb1c07576d730e9f7c8805afff0c6"
+url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_arm64.tar.gz"
[tools.actionlint."platforms.linux-x64"]
-checksum = "sha256:900919a84f2229bac68ca9cd4103ea297abc35e9689ebb842c6e34a3d1b01b0a"
-url = "https://github.com/rhysd/actionlint/releases/download/v1.7.11/actionlint_1.7.11_linux_amd64.tar.gz"
+checksum = "sha256:8aca8db96f1b94770f1b0d72b6dddcb1ebb8123cb3712530b08cc387b349a3d8"
+url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_amd64.tar.gz"
[tools.actionlint."platforms.linux-x64-musl"]
-checksum = "sha256:900919a84f2229bac68ca9cd4103ea297abc35e9689ebb842c6e34a3d1b01b0a"
-url = "https://github.com/rhysd/actionlint/releases/download/v1.7.11/actionlint_1.7.11_linux_amd64.tar.gz"
+checksum = "sha256:8aca8db96f1b94770f1b0d72b6dddcb1ebb8123cb3712530b08cc387b349a3d8"
+url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_amd64.tar.gz"
[tools.actionlint."platforms.macos-arm64"]
-checksum = "sha256:a21ba7366d8329e7223faee0ed69eb13da27fe8acabb356bb7eb0b7f1e1cb6d8"
-url = "https://github.com/rhysd/actionlint/releases/download/v1.7.11/actionlint_1.7.11_darwin_arm64.tar.gz"
+checksum = "sha256:aba9ced2dee8d27fecca3dc7feb1a7f9a52caefa1eb46f3271ea66b6e0e6953f"
+url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_darwin_arm64.tar.gz"
[tools.actionlint."platforms.macos-x64"]
-checksum = "sha256:17ffc17fed8f0258ef6ad4aed932d3272464c7ef7d64e1cb0d65aa97c9752107"
-url = "https://github.com/rhysd/actionlint/releases/download/v1.7.11/actionlint_1.7.11_darwin_amd64.tar.gz"
+checksum = "sha256:5b44c3bc2255115c9b69e30efc0fecdf498fdb63c5d58e17084fd5f16324c644"
+url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_darwin_amd64.tar.gz"
[tools.actionlint."platforms.windows-x64"]
-checksum = "sha256:5414b7124a91f4b5abee62e5c9d84802237734f8d15b9b7032732a32c3ebffa3"
-url = "https://github.com/rhysd/actionlint/releases/download/v1.7.11/actionlint_1.7.11_windows_amd64.zip"
+checksum = "sha256:6e7241b51e6817ea6a047693d8e6fed13b31819c9a0dd6c5a726e1592d22f6e9"
+url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_windows_amd64.zip"
[[tools.dprint]]
-version = "0.53.1"
+version = "0.55.2"
backend = "aqua:dprint/dprint"
[tools.dprint."platforms.linux-arm64"]
-checksum = "sha256:559cbd7aff707d461627c46f817cd06c28828458ef4a21eb18801f588bc94e89"
-url = "https://github.com/dprint/dprint/releases/download/0.53.1/dprint-aarch64-unknown-linux-musl.zip"
+checksum = "sha256:f0101217dd0abc94f1ac01b83d306d0288aeee8a501e8614a5e2bbe037500be0"
+url = "https://github.com/dprint/dprint/releases/download/0.55.2/dprint-aarch64-unknown-linux-musl.zip"
[tools.dprint."platforms.linux-arm64-musl"]
-checksum = "sha256:559cbd7aff707d461627c46f817cd06c28828458ef4a21eb18801f588bc94e89"
-url = "https://github.com/dprint/dprint/releases/download/0.53.1/dprint-aarch64-unknown-linux-musl.zip"
+checksum = "sha256:f0101217dd0abc94f1ac01b83d306d0288aeee8a501e8614a5e2bbe037500be0"
+url = "https://github.com/dprint/dprint/releases/download/0.55.2/dprint-aarch64-unknown-linux-musl.zip"
[tools.dprint."platforms.linux-x64"]
-checksum = "sha256:f2815a5c217bb63ff54356c4a6e1e5393a126b29c46116ae57a08ec97c29cb85"
-url = "https://github.com/dprint/dprint/releases/download/0.53.1/dprint-x86_64-unknown-linux-musl.zip"
+checksum = "sha256:45fc0eef3216af21c4c22c6e7e233aa45c3080fac07b6e94db7008a5c8e5c67a"
+url = "https://github.com/dprint/dprint/releases/download/0.55.2/dprint-x86_64-unknown-linux-musl.zip"
[tools.dprint."platforms.linux-x64-musl"]
-checksum = "sha256:f2815a5c217bb63ff54356c4a6e1e5393a126b29c46116ae57a08ec97c29cb85"
-url = "https://github.com/dprint/dprint/releases/download/0.53.1/dprint-x86_64-unknown-linux-musl.zip"
+checksum = "sha256:45fc0eef3216af21c4c22c6e7e233aa45c3080fac07b6e94db7008a5c8e5c67a"
+url = "https://github.com/dprint/dprint/releases/download/0.55.2/dprint-x86_64-unknown-linux-musl.zip"
[tools.dprint."platforms.macos-arm64"]
-checksum = "sha256:4c822f9d4c692b0f0cd53d14bc82057488e1c4db2df1122b1aceb0a660795ac8"
-url = "https://github.com/dprint/dprint/releases/download/0.53.1/dprint-aarch64-apple-darwin.zip"
+checksum = "sha256:e9ba8ed7988f3350501a8cf8af92da616cdec8d9d5c831c069293c587311b49d"
+url = "https://github.com/dprint/dprint/releases/download/0.55.2/dprint-aarch64-apple-darwin.zip"
[tools.dprint."platforms.macos-x64"]
-checksum = "sha256:b35e91afe0f7f2217128b8edcebd63d789b00f9c1b0300e4907a115106d857fd"
-url = "https://github.com/dprint/dprint/releases/download/0.53.1/dprint-x86_64-apple-darwin.zip"
+checksum = "sha256:b7074cf6c814f995b783b5baa7e516b34e783c42c9baf7af553dbad731adb3a7"
+url = "https://github.com/dprint/dprint/releases/download/0.55.2/dprint-x86_64-apple-darwin.zip"
[tools.dprint."platforms.windows-x64"]
-checksum = "sha256:db21e2f7a09dc9b3a2fbe2faac34a9f0733a4cc3cb8c78dd13dae6f081e13d4c"
-url = "https://github.com/dprint/dprint/releases/download/0.53.1/dprint-x86_64-pc-windows-msvc.zip"
+checksum = "sha256:12e8c26abc8c436223e70f5a30a2864001c92fa356a859eb93e06b97ab7dbd12"
+url = "https://github.com/dprint/dprint/releases/download/0.55.2/dprint-x86_64-pc-windows-msvc.zip"
[[tools.git-cliff]]
-version = "2.12.0"
+version = "2.13.1"
backend = "aqua:orhun/git-cliff"
[tools.git-cliff."platforms.linux-arm64"]
-checksum = "sha256:a2d262b389aed349e0564aaaa38a44015c98a951048923b086d6cf732f6dbbaf"
-url = "https://github.com/orhun/git-cliff/releases/download/v2.12.0/git-cliff-2.12.0-aarch64-unknown-linux-musl.tar.gz"
+checksum = "sha256:4054c124b926c117f3fa048939bc8be0a954f29f3b6f367627e8cb22c1971882"
+url = "https://github.com/orhun/git-cliff/releases/download/v2.13.1/git-cliff-2.13.1-aarch64-unknown-linux-musl.tar.gz"
[tools.git-cliff."platforms.linux-arm64-musl"]
-checksum = "sha256:a2d262b389aed349e0564aaaa38a44015c98a951048923b086d6cf732f6dbbaf"
-url = "https://github.com/orhun/git-cliff/releases/download/v2.12.0/git-cliff-2.12.0-aarch64-unknown-linux-musl.tar.gz"
+checksum = "sha256:4054c124b926c117f3fa048939bc8be0a954f29f3b6f367627e8cb22c1971882"
+url = "https://github.com/orhun/git-cliff/releases/download/v2.13.1/git-cliff-2.13.1-aarch64-unknown-linux-musl.tar.gz"
[tools.git-cliff."platforms.linux-x64"]
-checksum = "sha256:c89a7bc55f3c51f391938aa3fa560125109695c1930d927879daea68dd786420"
-url = "https://github.com/orhun/git-cliff/releases/download/v2.12.0/git-cliff-2.12.0-x86_64-unknown-linux-musl.tar.gz"
+checksum = "sha256:200d2535da6d9703f3bcc8a4d159c3b55eacdb01cf2148c55b3eee9dd04d5249"
+url = "https://github.com/orhun/git-cliff/releases/download/v2.13.1/git-cliff-2.13.1-x86_64-unknown-linux-musl.tar.gz"
[tools.git-cliff."platforms.linux-x64-musl"]
-checksum = "sha256:c89a7bc55f3c51f391938aa3fa560125109695c1930d927879daea68dd786420"
-url = "https://github.com/orhun/git-cliff/releases/download/v2.12.0/git-cliff-2.12.0-x86_64-unknown-linux-musl.tar.gz"
+checksum = "sha256:200d2535da6d9703f3bcc8a4d159c3b55eacdb01cf2148c55b3eee9dd04d5249"
+url = "https://github.com/orhun/git-cliff/releases/download/v2.13.1/git-cliff-2.13.1-x86_64-unknown-linux-musl.tar.gz"
[tools.git-cliff."platforms.macos-arm64"]
-checksum = "sha256:2ae72a0061bee98d0e375f2ea8e0f4b23b4915ac2e37fa45a705066de49b43a0"
-url = "https://github.com/orhun/git-cliff/releases/download/v2.12.0/git-cliff-2.12.0-aarch64-apple-darwin.tar.gz"
+checksum = "sha256:21547ae4a0421164070ab75c2522864ea5565858a011fabc5f583061b20f1226"
+url = "https://github.com/orhun/git-cliff/releases/download/v2.13.1/git-cliff-2.13.1-aarch64-apple-darwin.tar.gz"
[tools.git-cliff."platforms.macos-x64"]
-checksum = "sha256:fd4bce35ea8a6f3af6ac4891073781ca24c654c36c83c865bc30bab332c05a14"
-url = "https://github.com/orhun/git-cliff/releases/download/v2.12.0/git-cliff-2.12.0-x86_64-apple-darwin.tar.gz"
+checksum = "sha256:6e60ae390d375cecb9d8008c49f0e724a8dfe40390b532ef5501e421d2cc8acb"
+url = "https://github.com/orhun/git-cliff/releases/download/v2.13.1/git-cliff-2.13.1-x86_64-apple-darwin.tar.gz"
[tools.git-cliff."platforms.windows-x64"]
-checksum = "sha256:f2b8c692d9488c3313d7786e2099976151c10fd8f76580b12d045bb9683a8379"
-url = "https://github.com/orhun/git-cliff/releases/download/v2.12.0/git-cliff-2.12.0-x86_64-pc-windows-msvc.zip"
+checksum = "sha256:3ae3a5549e85c7ad5b20192ebcfee4371269deca51255f6f2f2e051c6541f5ca"
+url = "https://github.com/orhun/git-cliff/releases/download/v2.13.1/git-cliff-2.13.1-x86_64-pc-windows-msvc.zip"
[[tools.hk]]
-version = "1.39.0"
+version = "1.53.0"
backend = "aqua:jdx/hk"
[tools.hk."platforms.linux-arm64"]
-checksum = "sha256:209b73effe9f36fc5eee5a6ec0e833a501ed67f1041fbb3aeac9923ee252eb53"
-url = "https://github.com/jdx/hk/releases/download/v1.39.0/hk-aarch64-unknown-linux-gnu.tar.gz"
+checksum = "sha256:3cf58d268a9114f0923a06c38cf0995b9da43bf2279b09aac3c3c615a615b3e4"
+url = "https://github.com/jdx/hk/releases/download/v1.53.0/hk-aarch64-unknown-linux-gnu.tar.gz"
[tools.hk."platforms.linux-arm64-musl"]
-checksum = "sha256:209b73effe9f36fc5eee5a6ec0e833a501ed67f1041fbb3aeac9923ee252eb53"
-url = "https://github.com/jdx/hk/releases/download/v1.39.0/hk-aarch64-unknown-linux-gnu.tar.gz"
+checksum = "sha256:3cf58d268a9114f0923a06c38cf0995b9da43bf2279b09aac3c3c615a615b3e4"
+url = "https://github.com/jdx/hk/releases/download/v1.53.0/hk-aarch64-unknown-linux-gnu.tar.gz"
[tools.hk."platforms.linux-x64"]
-checksum = "sha256:559c72b512f7ec3df48f7a1e0f4d1c1082dd24a26f7d40865805dcc12dbf2a7c"
-url = "https://github.com/jdx/hk/releases/download/v1.39.0/hk-x86_64-unknown-linux-gnu.tar.gz"
+checksum = "sha256:960c14b3bcd61e36dcb42c304e3cc23b22ef2e6f28ac6559e3856d27acf6b54a"
+url = "https://github.com/jdx/hk/releases/download/v1.53.0/hk-x86_64-unknown-linux-gnu.tar.gz"
[tools.hk."platforms.linux-x64-musl"]
-checksum = "sha256:559c72b512f7ec3df48f7a1e0f4d1c1082dd24a26f7d40865805dcc12dbf2a7c"
-url = "https://github.com/jdx/hk/releases/download/v1.39.0/hk-x86_64-unknown-linux-gnu.tar.gz"
+checksum = "sha256:960c14b3bcd61e36dcb42c304e3cc23b22ef2e6f28ac6559e3856d27acf6b54a"
+url = "https://github.com/jdx/hk/releases/download/v1.53.0/hk-x86_64-unknown-linux-gnu.tar.gz"
[tools.hk."platforms.macos-arm64"]
-checksum = "sha256:0df1d19a8a7b052def3b1048a38681218ce4e04579c1805fa74457f8e634ee82"
-url = "https://github.com/jdx/hk/releases/download/v1.39.0/hk-aarch64-apple-darwin.tar.gz"
+checksum = "sha256:d5c1f9a4c3598cc72c9f15908af6e036b138b9dd97c8891e4d08f699c98a5069"
+url = "https://github.com/jdx/hk/releases/download/v1.53.0/hk-aarch64-apple-darwin.tar.gz"
[tools.hk."platforms.windows-x64"]
-checksum = "sha256:4fdbc4dfe17191fdc2157e2ddb9cf32d0e9fb4c6c0cddae2f8f2ea4b0b351fca"
-url = "https://github.com/jdx/hk/releases/download/v1.39.0/hk-x86_64-pc-windows-msvc.zip"
+checksum = "sha256:a2e5c6131d01cfd6d62204872798f97fc933e7f142d718b3e191434e2d31ef1c"
+url = "https://github.com/jdx/hk/releases/download/v1.53.0/hk-x86_64-pc-windows-msvc.zip"
[[tools.pkl]]
-version = "0.31.1"
+version = "0.32.1"
backend = "aqua:apple/pkl"
[tools.pkl."platforms.linux-arm64"]
-checksum = "sha256:7ef10e743daa921fb94ae7bdb9ec6986f362bf250c55814b9ea2aeb13f2d083e"
-url = "https://github.com/apple/pkl/releases/download/0.31.1/pkl-linux-aarch64"
+checksum = "sha256:a76d2dd47da435a8f911b0347373f47c7e59ea54fb75ff846d20b8df10dba058"
+url = "https://github.com/apple/pkl/releases/download/0.32.1/pkl-linux-aarch64"
[tools.pkl."platforms.linux-arm64-musl"]
-checksum = "sha256:7ef10e743daa921fb94ae7bdb9ec6986f362bf250c55814b9ea2aeb13f2d083e"
-url = "https://github.com/apple/pkl/releases/download/0.31.1/pkl-linux-aarch64"
+checksum = "sha256:a76d2dd47da435a8f911b0347373f47c7e59ea54fb75ff846d20b8df10dba058"
+url = "https://github.com/apple/pkl/releases/download/0.32.1/pkl-linux-aarch64"
[tools.pkl."platforms.linux-x64"]
-checksum = "sha256:618f13955d755cafbfe8c9cba1d27635848cd49dbc6abffd398d2751db1231bf"
-url = "https://github.com/apple/pkl/releases/download/0.31.1/pkl-linux-amd64"
+checksum = "sha256:3180b62da95c0cad1d904e9bb6c5f4a8f9032413c21e53194bb91ff1ee5f3211"
+url = "https://github.com/apple/pkl/releases/download/0.32.1/pkl-linux-amd64"
[tools.pkl."platforms.linux-x64-musl"]
-checksum = "sha256:618f13955d755cafbfe8c9cba1d27635848cd49dbc6abffd398d2751db1231bf"
-url = "https://github.com/apple/pkl/releases/download/0.31.1/pkl-linux-amd64"
+checksum = "sha256:3180b62da95c0cad1d904e9bb6c5f4a8f9032413c21e53194bb91ff1ee5f3211"
+url = "https://github.com/apple/pkl/releases/download/0.32.1/pkl-linux-amd64"
[tools.pkl."platforms.macos-arm64"]
-checksum = "sha256:1b6a5438d9624cd2798a7530721bbbfa27ef72efe5c878a1b6c546c6e7ca0e8f"
-url = "https://github.com/apple/pkl/releases/download/0.31.1/pkl-macos-aarch64"
+checksum = "sha256:563eb51c9a20b16a3625464ed745c675ed9750381f2126722696a0d7cac1d9d3"
+url = "https://github.com/apple/pkl/releases/download/0.32.1/pkl-macos-aarch64"
[tools.pkl."platforms.macos-x64"]
-checksum = "sha256:22123ed4ae4c03afa8c54c69f77f0bec39b0fa0f67b09d6d148e0a376a2a471d"
-url = "https://github.com/apple/pkl/releases/download/0.31.1/pkl-macos-amd64"
+checksum = "sha256:5b74b903234047960144f66f2cebdd12d267d9b98e8155ed91d2ae5ed27e2d1f"
+url = "https://github.com/apple/pkl/releases/download/0.32.1/pkl-macos-amd64"
[tools.pkl."platforms.windows-x64"]
-checksum = "sha256:a8834481667325b44c539dbb758d7365a16389070f343c04b639bbe525ede013"
-url = "https://github.com/apple/pkl/releases/download/0.31.1/pkl-windows-amd64.exe"
+checksum = "sha256:8550a00fcf027335e42c5e2cd553b88e98845408cb1880b3e3d1860caf46d22a"
+url = "https://github.com/apple/pkl/releases/download/0.32.1/pkl-windows-amd64.exe"
[[tools.swiftformat]]
-version = "0.60.1"
+version = "0.62.1"
backend = "asdf:swiftformat"
[[tools.swiftlint]]
-version = "0.63.2"
+version = "0.63.3"
backend = "aqua:realm/SwiftLint"
[tools.swiftlint."platforms.linux-arm64"]
-checksum = "sha256:104dedff762157f5cff7752f1cc2a289b60f3ea677e72d651c6f3a3287fdd948"
-url = "https://github.com/realm/SwiftLint/releases/download/0.63.2/swiftlint_linux_arm64.zip"
+checksum = "sha256:d5efcbed5ec1ca9eb7f833dfdd9f80f56289750b72582c7c1686b4528e182454"
+url = "https://github.com/realm/SwiftLint/releases/download/0.63.3/swiftlint_linux_arm64.zip"
[tools.swiftlint."platforms.linux-arm64-musl"]
-checksum = "sha256:104dedff762157f5cff7752f1cc2a289b60f3ea677e72d651c6f3a3287fdd948"
-url = "https://github.com/realm/SwiftLint/releases/download/0.63.2/swiftlint_linux_arm64.zip"
+checksum = "sha256:d5efcbed5ec1ca9eb7f833dfdd9f80f56289750b72582c7c1686b4528e182454"
+url = "https://github.com/realm/SwiftLint/releases/download/0.63.3/swiftlint_linux_arm64.zip"
[tools.swiftlint."platforms.linux-x64"]
-checksum = "sha256:dd1017cfd20a1457f264590bcb5875a6ee06cd75b9a9d4f77cd43a552499143b"
-url = "https://github.com/realm/SwiftLint/releases/download/0.63.2/swiftlint_linux_amd64.zip"
+checksum = "sha256:26db741d43f2f2dc26c0cf16911100a3e186c3d1dbb59e55ad3ac87b0de4538f"
+url = "https://github.com/realm/SwiftLint/releases/download/0.63.3/swiftlint_linux_amd64.zip"
[tools.swiftlint."platforms.linux-x64-musl"]
-checksum = "sha256:dd1017cfd20a1457f264590bcb5875a6ee06cd75b9a9d4f77cd43a552499143b"
-url = "https://github.com/realm/SwiftLint/releases/download/0.63.2/swiftlint_linux_amd64.zip"
+checksum = "sha256:26db741d43f2f2dc26c0cf16911100a3e186c3d1dbb59e55ad3ac87b0de4538f"
+url = "https://github.com/realm/SwiftLint/releases/download/0.63.3/swiftlint_linux_amd64.zip"
[tools.swiftlint."platforms.macos-arm64"]
-checksum = "sha256:c59a405c85f95b92ced677a500804e081596a4cae4a6a485af76065557d6ed29"
-url = "https://github.com/realm/SwiftLint/releases/download/0.63.2/portable_swiftlint.zip"
+checksum = "sha256:fb045e85e7cb3374f42a4840b6b85a0106302afa69035c0c6f29af4a44c810b6"
+url = "https://github.com/realm/SwiftLint/releases/download/0.63.3/portable_swiftlint.zip"
[tools.swiftlint."platforms.macos-x64"]
-checksum = "sha256:c59a405c85f95b92ced677a500804e081596a4cae4a6a485af76065557d6ed29"
-url = "https://github.com/realm/SwiftLint/releases/download/0.63.2/portable_swiftlint.zip"
+checksum = "sha256:fb045e85e7cb3374f42a4840b6b85a0106302afa69035c0c6f29af4a44c810b6"
+url = "https://github.com/realm/SwiftLint/releases/download/0.63.3/portable_swiftlint.zip"
[[tools.usage]]
-version = "3.2.0"
+version = "4.0.0"
backend = "aqua:jdx/usage"
[tools.usage."platforms.linux-arm64"]
-checksum = "sha256:9cc22814763948582a31b054e6aa3adfc7a820a3cafb82b317dd4a8931277c0f"
-url = "https://github.com/jdx/usage/releases/download/v3.2.0/usage-aarch64-unknown-linux-musl.tar.gz"
+checksum = "sha256:bb9556ad822852f1824d9fb6e4d4063d3bf2639929ec4b74750c1f419c2ef733"
+url = "https://github.com/jdx/usage/releases/download/v4.0.0/usage-aarch64-unknown-linux-musl.tar.gz"
[tools.usage."platforms.linux-arm64-musl"]
-checksum = "sha256:9cc22814763948582a31b054e6aa3adfc7a820a3cafb82b317dd4a8931277c0f"
-url = "https://github.com/jdx/usage/releases/download/v3.2.0/usage-aarch64-unknown-linux-musl.tar.gz"
+checksum = "sha256:bb9556ad822852f1824d9fb6e4d4063d3bf2639929ec4b74750c1f419c2ef733"
+url = "https://github.com/jdx/usage/releases/download/v4.0.0/usage-aarch64-unknown-linux-musl.tar.gz"
[tools.usage."platforms.linux-x64"]
-checksum = "sha256:7f48ee228ae95b07c193ec61def326575682b37032473c5af4b3b93a114aec81"
-url = "https://github.com/jdx/usage/releases/download/v3.2.0/usage-x86_64-unknown-linux-musl.tar.gz"
+checksum = "sha256:3ce4d8d30f27db44f0aa2fe8bd351229e36e8d38b09060b0cadb7e02be57c69e"
+url = "https://github.com/jdx/usage/releases/download/v4.0.0/usage-x86_64-unknown-linux-musl.tar.gz"
[tools.usage."platforms.linux-x64-musl"]
-checksum = "sha256:7f48ee228ae95b07c193ec61def326575682b37032473c5af4b3b93a114aec81"
-url = "https://github.com/jdx/usage/releases/download/v3.2.0/usage-x86_64-unknown-linux-musl.tar.gz"
+checksum = "sha256:3ce4d8d30f27db44f0aa2fe8bd351229e36e8d38b09060b0cadb7e02be57c69e"
+url = "https://github.com/jdx/usage/releases/download/v4.0.0/usage-x86_64-unknown-linux-musl.tar.gz"
[tools.usage."platforms.macos-arm64"]
-checksum = "sha256:f0a566bc05fc485b23a339abddbaef04225e7730574dbb603fdc021e084d26f9"
-url = "https://github.com/jdx/usage/releases/download/v3.2.0/usage-universal-apple-darwin.tar.gz"
+checksum = "sha256:b86b3b96590c40156977906758b92238fab506edcbdc5331f9efb034207e2ab4"
+url = "https://github.com/jdx/usage/releases/download/v4.0.0/usage-universal-apple-darwin.tar.gz"
[tools.usage."platforms.macos-x64"]
-checksum = "sha256:f0a566bc05fc485b23a339abddbaef04225e7730574dbb603fdc021e084d26f9"
-url = "https://github.com/jdx/usage/releases/download/v3.2.0/usage-universal-apple-darwin.tar.gz"
+checksum = "sha256:b86b3b96590c40156977906758b92238fab506edcbdc5331f9efb034207e2ab4"
+url = "https://github.com/jdx/usage/releases/download/v4.0.0/usage-universal-apple-darwin.tar.gz"
[tools.usage."platforms.windows-x64"]
-checksum = "sha256:9aba23a5d549695cfb5f034849e143205ccf972e5b5d42c24acd32e084d7a165"
-url = "https://github.com/jdx/usage/releases/download/v3.2.0/usage-x86_64-pc-windows-msvc.zip"
+checksum = "sha256:91a241e3abf4925855814ae8cab3e6e826736b9cfaddc55a12cf4c3fe03d0dc7"
+url = "https://github.com/jdx/usage/releases/download/v4.0.0/usage-x86_64-pc-windows-msvc.zip"
[[tools.xcsift]]
-version = "1.2.0"
+version = "1.3.1"
backend = "github:ldomaradzki/xcsift"
[tools.xcsift."platforms.linux-x64"]
-checksum = "sha256:ddb2ba80434bbe89889b0ab1d2c459b9f68e98a936d412ab4052a87488b8262a"
-url = "https://github.com/ldomaradzki/xcsift/releases/download/v1.2.0/xcsift-v1.2.0-linux-x64.tar.gz"
-url_api = "https://api.github.com/repos/ldomaradzki/xcsift/releases/assets/379050208"
+checksum = "sha256:36544ae47ffbb30f73f3cee0ef4030652d50311d21b7e4f3550e8075ad937f3e"
+url = "https://github.com/ldomaradzki/xcsift/releases/download/v1.3.1/xcsift-v1.3.1-linux-x64.tar.gz"
+url_api = "https://api.github.com/repos/ldomaradzki/xcsift/releases/assets/449512567"
[tools.xcsift."platforms.linux-x64-musl"]
-checksum = "sha256:ddb2ba80434bbe89889b0ab1d2c459b9f68e98a936d412ab4052a87488b8262a"
-url = "https://github.com/ldomaradzki/xcsift/releases/download/v1.2.0/xcsift-v1.2.0-linux-x64.tar.gz"
-url_api = "https://api.github.com/repos/ldomaradzki/xcsift/releases/assets/379050208"
+checksum = "sha256:36544ae47ffbb30f73f3cee0ef4030652d50311d21b7e4f3550e8075ad937f3e"
+url = "https://github.com/ldomaradzki/xcsift/releases/download/v1.3.1/xcsift-v1.3.1-linux-x64.tar.gz"
+url_api = "https://api.github.com/repos/ldomaradzki/xcsift/releases/assets/449512567"
[tools.xcsift."platforms.macos-arm64"]
-checksum = "sha256:11e93bdc74232a03d7676535f9e7f908d3d0a3c3991aa998af80de0e4a208e1b"
-url = "https://github.com/ldomaradzki/xcsift/releases/download/v1.2.0/xcsift-v1.2.0-macos-arm64.tar.gz"
-url_api = "https://api.github.com/repos/ldomaradzki/xcsift/releases/assets/379050209"
+checksum = "sha256:76642a5c4ed0ab82e73fc3d4c4f4bc7c39c48eed2c2ce92871484d7ab4e384e4"
+url = "https://github.com/ldomaradzki/xcsift/releases/download/v1.3.1/xcsift-v1.3.1-macos-arm64.tar.gz"
+url_api = "https://api.github.com/repos/ldomaradzki/xcsift/releases/assets/449512565"
diff --git a/mise.toml b/mise.toml
index d93dc168..a28032c8 100644
--- a/mise.toml
+++ b/mise.toml
@@ -34,23 +34,23 @@ git config core.hooksPath .githooks 2>/dev/null || true
[tools]
# --- Swift Development ---
-swiftformat = "0.60.1" # Swift code formatting
-swiftlint = "0.63.2" # Swift linting
-xcsift = "1.2.0" # xcodebuild output filtering
+swiftformat = "0.62.1" # Swift code formatting
+swiftlint = "0.63.3" # Swift linting
+xcsift = "1.3.1" # xcodebuild output filtering
# --- Documentation & Formatting ---
-dprint = "0.53.1" # MD/JSON/YAML formatting (Rust, fast)
+dprint = "0.55.2" # MD/JSON/YAML formatting (Rust, fast)
# --- Git & CI ---
-hk = "1.39.0" # Git hooks manager
-actionlint = "1.7.11" # GitHub Actions linting
-git-cliff = "2.12.0" # Changelog generation
+hk = "1.53.0" # Git hooks manager
+actionlint = "1.7.12" # GitHub Actions linting
+git-cliff = "2.13.1" # Changelog generation
# --- Configuration ---
-pkl = "0.31.1" # Configuration language (for hk.pkl)
+pkl = "0.32.1" # Configuration language (for hk.pkl)
# --- CLI Spec ---
-usage = "3.2.0" # CLI spec → shell completions, docs, man pages
+usage = "4.0.0" # CLI spec → shell completions, docs, man pages
# =============================================================================