From e2e9df86e3303a4eb6619822529947f9fd1f1f96 Mon Sep 17 00:00:00 2001 From: Marcus Ruddick Date: Thu, 2 Jul 2026 07:42:10 -1000 Subject: [PATCH 01/34] chore: allow renovate to manage dependencies on development branch (#111) * target development branch with renovate --- renovate.json | 1 + 1 file changed, 1 insertion(+) diff --git a/renovate.json b/renovate.json index aed97def..920c6a43 100644 --- a/renovate.json +++ b/renovate.json @@ -6,6 +6,7 @@ "automergeStrategy": "squash", "configMigration": true, "branchConcurrentLimit": 2, + "baseBranchPatterns": ["development"], "extends": [ "config:recommended", ":semanticCommits" From 83b28c0807ad05359077be4bb97ee035ac549c24 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Jul 2026 22:31:32 +0000 Subject: [PATCH 02/34] chore(deps): pin dependency windows to 5.0.0 (#116) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 15f14d50..cb13c86d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,7 +1,7 @@ version: 2.1 orbs: - windows: circleci/windows@5.0 + windows: circleci/windows@5.0.0 rust: circleci/rust@1.8.0 node: circleci/node@7.1.0 From 4c50ea84e632b729be6a7cdb1ed49188225c16a5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Jul 2026 22:49:47 +0000 Subject: [PATCH 03/34] chore(deps): update dependency eslint to v9.39.4 (#117) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 133 ++++++++++++++++++++++++++++--------------------- 1 file changed, 75 insertions(+), 58 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fa406492..136c86df 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,7 +29,7 @@ importers: version: 18.19.130 eslint: specifier: ^9.26.0 - version: 9.39.3 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -70,8 +70,8 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.1': - resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/config-helpers@0.4.2': @@ -82,12 +82,12 @@ packages: resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.3.3': - resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.39.3': - resolution: {integrity: sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==} + '@eslint/js@9.39.4': + resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.7': @@ -98,12 +98,16 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.7': - resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': @@ -213,8 +217,8 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -230,8 +234,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + acorn@8.17.0: + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} engines: {node: '>=0.4.0'} hasBin: true @@ -243,8 +247,8 @@ packages: resolution: {integrity: sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==} engines: {node: '>=18'} - ajv@6.14.0: - resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} ansi-escapes@7.3.0: resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} @@ -291,8 +295,8 @@ packages: bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + brace-expansion@1.1.15: + resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -481,8 +485,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.39.3: - resolution: {integrity: sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==} + eslint@9.39.4: + resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -576,8 +580,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} from2@2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} @@ -772,6 +776,10 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true + js-yaml@4.3.0: + resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -878,8 +886,8 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - minimatch@3.1.3: - resolution: {integrity: sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -1507,18 +1515,18 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.3)': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': dependencies: - eslint: 9.39.3 + eslint: 9.39.4 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.1': + '@eslint/config-array@0.21.2': dependencies: '@eslint/object-schema': 2.1.7 debug: 4.4.3 - minimatch: 3.1.3 + minimatch: 3.1.5 transitivePeerDependencies: - supports-color @@ -1530,21 +1538,21 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.3': + '@eslint/eslintrc@3.3.5': dependencies: - ajv: 6.14.0 + ajv: 6.15.0 debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.3 + js-yaml: 4.3.0 + minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@9.39.3': {} + '@eslint/js@9.39.4': {} '@eslint/object-schema@2.1.7': {} @@ -1553,13 +1561,18 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@humanfs/core@0.19.1': {} + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 - '@humanfs/node@0.16.7': + '@humanfs/node@0.16.8': dependencies: - '@humanfs/core': 0.19.1 + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 '@humanwhocodes/retry': 0.4.3 + '@humanfs/types@0.15.0': {} + '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.4.3': {} @@ -1716,7 +1729,7 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@types/estree@1.0.8': {} + '@types/estree@1.0.9': {} '@types/json-schema@7.0.15': {} @@ -1726,11 +1739,11 @@ snapshots: '@types/normalize-package-data@2.4.4': {} - acorn-jsx@5.3.2(acorn@8.16.0): + acorn-jsx@5.3.2(acorn@8.17.0): dependencies: - acorn: 8.16.0 + acorn: 8.17.0 - acorn@8.16.0: {} + acorn@8.17.0: {} agent-base@7.1.4: {} @@ -1739,7 +1752,7 @@ snapshots: clean-stack: 5.3.0 indent-string: 5.0.0 - ajv@6.14.0: + ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -1778,7 +1791,7 @@ snapshots: bottleneck@2.19.5: {} - brace-expansion@1.1.12: + brace-expansion@1.1.15: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 @@ -1955,21 +1968,21 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.3: + eslint@9.39.4: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.3) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.1 + '@eslint/config-array': 0.21.2 '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.3 - '@eslint/js': 9.39.3 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.7 + '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - ajv: 6.14.0 + '@types/estree': 1.0.9 + ajv: 6.15.0 chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 @@ -1988,7 +2001,7 @@ snapshots: is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 - minimatch: 3.1.3 + minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -1996,8 +2009,8 @@ snapshots: espree@10.4.0: dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) eslint-visitor-keys: 4.2.1 esquery@1.7.0: @@ -2085,10 +2098,10 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.3 + flatted: 3.4.2 keyv: 4.5.4 - flatted@3.3.3: {} + flatted@3.4.2: {} from2@2.3.0: dependencies: @@ -2253,6 +2266,10 @@ snapshots: dependencies: argparse: 2.0.1 + js-yaml@4.3.0: + dependencies: + argparse: 2.0.1 + json-buffer@3.0.1: {} json-parse-better-errors@1.0.2: {} @@ -2348,9 +2365,9 @@ snapshots: mimic-fn@4.0.0: {} - minimatch@3.1.3: + minimatch@3.1.5: dependencies: - brace-expansion: 1.1.12 + brace-expansion: 1.1.15 minimist@1.2.8: {} From 508522bc5f6be837df96822bd2fbd569b66d0de3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jul 2026 02:08:03 +0000 Subject: [PATCH 04/34] chore(deps): update rust crate agent-client-protocol to v1.0.1 (#118) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7196ae5e..cf40c815 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,9 +10,9 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "agent-client-protocol" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e981a7d0207a0e9eb67d0faafc04e8c6601dea572d67a3163798897c0024521d" +checksum = "16302d16c7531355db16593d99c38c8297db0c4653aa7dd80c3556bb17f4cd8c" dependencies = [ "agent-client-protocol-derive", "agent-client-protocol-schema", @@ -32,9 +32,9 @@ dependencies = [ [[package]] name = "agent-client-protocol-derive" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d589c28cbe2978c76f8714cc304bc08355ee2f05d120806717725d9ffa12143" +checksum = "88b37d552feb6981a0109febda6b71fc723678cd065974c2d76279c19c407095" dependencies = [ "quote", "syn", @@ -768,7 +768,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -1988,7 +1988,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -2422,10 +2422,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1" dependencies = [ "fastrand", - "getrandom 0.4.1", + "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -3067,7 +3067,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] From 4790f00e5426153d1f55aba751b5868dae92742a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jul 2026 04:38:00 +0000 Subject: [PATCH 05/34] chore(deps): update rust crate libc to v0.2.186 (#119) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cf40c815..f14ea8a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1385,9 +1385,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.185" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libm" From c7238692b29243d718d35a4c5121d18d2574bbd5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jul 2026 08:35:05 +0000 Subject: [PATCH 06/34] chore(deps): update rust crate serde_json to v1.0.150 (#120) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f14ea8a5..d47c811f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2167,9 +2167,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "indexmap 2.13.0", "itoa", From 92e97ab562a38b4bede50a0711a4d63cc51b4d95 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jul 2026 13:33:34 +0000 Subject: [PATCH 07/34] chore(deps): update rust crate tracing-subscriber to v0.3.23 (#121) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d47c811f..f2da4ccc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2680,9 +2680,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", From fd1becc038a57d5cdcd2adf75a885355a3dd44a0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jul 2026 16:13:18 +0000 Subject: [PATCH 08/34] chore(deps): update semantic-release monorepo (#122) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 467 ++++++++++++++++++++++++++----------------------- 1 file changed, 251 insertions(+), 216 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 136c86df..a28bde7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,16 +10,16 @@ importers: dependencies: '@semantic-release/commit-analyzer': specifier: ^13.0.1 - version: 13.0.1(semantic-release@25.0.3(typescript@5.9.3)) + version: 13.0.1(semantic-release@25.0.5(typescript@5.9.3)) '@semantic-release/github': specifier: ^12.0.6 - version: 12.0.6(semantic-release@25.0.3(typescript@5.9.3)) + version: 12.0.9(semantic-release@25.0.5(typescript@5.9.3)) '@semantic-release/release-notes-generator': specifier: ^14.1.0 - version: 14.1.0(semantic-release@25.0.3(typescript@5.9.3)) + version: 14.1.1(semantic-release@25.0.5(typescript@5.9.3)) semantic-release: specifier: ^25.0.3 - version: 25.0.3(typescript@5.9.3) + version: 25.0.5(typescript@5.9.3) stream-buffers: specifier: ^3.0.3 version: 3.0.3 @@ -36,24 +36,24 @@ importers: packages: - '@actions/core@3.0.0': - resolution: {integrity: sha512-zYt6cz+ivnTmiT/ksRVriMBOiuoUpDCJJlZ5KPl2/FRdvwU3f7MPh9qftvbkXJThragzUZieit2nyHUyw53Seg==} + '@actions/core@3.0.1': + resolution: {integrity: sha512-a6d/Nwahm9fliVGRhdhofo40HjHQasUPusmc7vBfyky+7Z+P2A1J68zyFVaNcEclc/Se+eO595oAr5nwEIoIUA==} '@actions/exec@3.0.0': resolution: {integrity: sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==} - '@actions/http-client@4.0.0': - resolution: {integrity: sha512-QuwPsgVMsD6qaPD57GLZi9sqzAZCtiJT8kVBCDpLtxhL5MydQ4gS+DrejtZZPdIYyB1e95uCK9Luyds7ybHI3g==} + '@actions/http-client@4.0.1': + resolution: {integrity: sha512-+Nvd1ImaOZBSoPbsUtEhv+1z99H12xzncCkz0a3RuehINE81FZSe2QTj3uvAPTcJX/SCzUQHQ0D1GrPMbrPitg==} '@actions/io@3.0.2': resolution: {integrity: sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==} - '@babel/code-frame@7.29.0': - resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} '@colors/colors@1.5.0': @@ -159,8 +159,8 @@ packages: resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==} engines: {node: '>= 20'} - '@octokit/request@10.0.8': - resolution: {integrity: sha512-SJZNwY9pur9Agf7l87ywFi14W+Hd9Jg6Ifivsd33+/bGUQIjNujdFiXII2/qSlN2ybqUHfp5xpekMEjIBTjlSw==} + '@octokit/request@10.0.11': + resolution: {integrity: sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q==} engines: {node: '>= 20'} '@octokit/types@16.0.0': @@ -174,8 +174,8 @@ packages: resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} - '@pnpm/npm-conf@3.0.2': - resolution: {integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==} + '@pnpm/npm-conf@3.0.3': + resolution: {integrity: sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA==} engines: {node: '>=12'} '@sec-ant/readable-stream@0.4.1': @@ -191,24 +191,28 @@ packages: resolution: {integrity: sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==} engines: {node: '>=18'} - '@semantic-release/github@12.0.6': - resolution: {integrity: sha512-aYYFkwHW3c6YtHwQF0t0+lAjlU+87NFOZuH2CvWFD0Ylivc7MwhZMiHOJ0FMpIgPpCVib/VUAcOwvrW0KnxQtA==} + '@semantic-release/github@12.0.9': + resolution: {integrity: sha512-ODIqb0V3QqndipryEEiaBxUQCFjvv7Oese5Dt4omMGa60YRNEW0Sx3K+zri0uac2Y6S9nOlMehciWIzvvRCTGQ==} engines: {node: ^22.14.0 || >= 24.10.0} peerDependencies: semantic-release: '>=24.1.0' - '@semantic-release/npm@13.1.4': - resolution: {integrity: sha512-z5Fn9ftK1QQgFxMSuOd3DtYbTl4hWI2trCEvZcEJMQJy1/OBR0WHcxqzfVun455FSkHML8KgvPxJEa9MtZIBsg==} + '@semantic-release/npm@13.1.5': + resolution: {integrity: sha512-Hq5UxzoatN3LHiq2rTsWS54nCdqJHlsssGERCo8WlvdfFA9LoN0vO+OuKVSjtNapIc/S8C2LBj206wKLHg62mg==} engines: {node: ^22.14.0 || >= 24.10.0} peerDependencies: semantic-release: '>=20.1.0' - '@semantic-release/release-notes-generator@14.1.0': - resolution: {integrity: sha512-CcyDRk7xq+ON/20YNR+1I/jP7BYKICr1uKd1HHpROSnnTdGqOTburi4jcRiTYz0cpfhxSloQO3cGhnoot7IEkA==} + '@semantic-release/release-notes-generator@14.1.1': + resolution: {integrity: sha512-Pbd2e2XRMUD0OxehHpgd5/YghsE76cddkRHSoDvKLK+OCy4Ewxn49rWR631MEUU01lgwF/uyVXvbnVuu6+Z6VA==} engines: {node: '>=20.8.1'} peerDependencies: semantic-release: '>=20.1.0' + '@simple-libs/stream-utils@1.2.0': + resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} + engines: {node: '>=18'} + '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} @@ -239,9 +243,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} + agent-base@9.0.0: + resolution: {integrity: sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==} + engines: {node: '>= 20'} aggregate-error@5.0.0: resolution: {integrity: sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==} @@ -364,15 +368,28 @@ packages: config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + content-type@2.0.0: + resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==} + engines: {node: '>=18'} + conventional-changelog-angular@8.1.0: resolution: {integrity: sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==} engines: {node: '>=18'} + conventional-changelog-angular@8.3.1: + resolution: {integrity: sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==} + engines: {node: '>=18'} + conventional-changelog-writer@8.2.0: resolution: {integrity: sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==} engines: {node: '>=18'} hasBin: true + conventional-changelog-writer@8.4.0: + resolution: {integrity: sha512-HHBFkk1EECxxmCi4CTu091iuDpQv5/OavuCUAuZmrkWpmYfyD816nom1CvtfXJ/uYfAAjavgHvXHX291tSLK8g==} + engines: {node: '>=18'} + hasBin: true + conventional-commits-filter@5.0.0: resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} engines: {node: '>=18'} @@ -382,6 +399,11 @@ packages: engines: {node: '>=18'} hasBin: true + conventional-commits-parser@6.4.0: + resolution: {integrity: sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==} + engines: {node: '>=18'} + hasBin: true + convert-hrtime@5.0.0: resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==} engines: {node: '>=12'} @@ -389,8 +411,8 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + cosmiconfig@9.0.2: + resolution: {integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -523,9 +545,6 @@ packages: resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} engines: {node: ^18.19.0 || >=20.5.0} - fast-content-type-parse@3.0.0: - resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -583,11 +602,8 @@ packages: flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - - fs-extra@11.3.3: - resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} + fs-extra@11.3.6: + resolution: {integrity: sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA==} engines: {node: '>=14.14'} function-timeout@1.0.2: @@ -598,18 +614,14 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.5.0: - resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} engines: {node: '>=18'} get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-stream@7.0.1: - resolution: {integrity: sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==} - engines: {node: '>=16'} - get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -640,6 +652,11 @@ packages: engines: {node: '>=0.4.7'} hasBin: true + handlebars@4.7.9: + resolution: {integrity: sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==} + engines: {node: '>=0.4.7'} + hasBin: true + has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -659,17 +676,17 @@ packages: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} - hosted-git-info@9.0.2: - resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} + hosted-git-info@9.0.3: + resolution: {integrity: sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==} engines: {node: ^20.17.0 || >=22.9.0} - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} + http-proxy-agent@9.1.0: + resolution: {integrity: sha512-2NxoveTT58mjYT4n3RPTEfCZGLMbidoO8XEieXfpSYxu+PQJ1qpx4ypwH6N+uF9twBPIvRRgvkvW5HUTYWENig==} + engines: {node: '>= 20'} - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} + https-proxy-agent@9.1.0: + resolution: {integrity: sha512-ag87y7cJJ9/3+GxFr8Oy4O5faDsGRGnBGsJj/YjOSsSx/5eadKLYTMPlzuR6obgoCDDm0abAAZitXXQkMOPSpA==} + engines: {node: '>= 20'} human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} @@ -712,10 +729,6 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - into-stream@7.0.0: - resolution: {integrity: sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==} - engines: {node: '>=12'} - is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -761,8 +774,8 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - issue-parser@7.0.1: - resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==} + issue-parser@7.0.2: + resolution: {integrity: sha512-7atWPjhGEIX3JEtMrOYd8TKzboYlq+5sNbdl9POiLYOI14G5HZiQbZP0Xj5EZdrufQVXfJlpTV0hys0CuxwxZw==} engines: {node: ^18.17 || >=20.6.1} java-properties@1.0.2: @@ -772,10 +785,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} - hasBin: true - js-yaml@4.3.0: resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} hasBin: true @@ -795,11 +804,11 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-with-bigint@3.5.3: - resolution: {integrity: sha512-QObKu6nxy7NsxqR0VK4rkXnsNr5L9ElJaGEg+ucJ6J7/suoKZ0n+p76cu9aCqowytxEbwYNzvrMerfMkXneF5A==} + json-with-bigint@3.5.8: + resolution: {integrity: sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==} - jsonfile@6.2.0: - resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -826,6 +835,9 @@ packages: lodash-es@4.17.23: resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + lodash.capitalize@4.2.1: resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} @@ -847,12 +859,12 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.6: - resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} + lru-cache@11.5.1: + resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} engines: {node: 20 || >=22} - make-asynchronous@1.0.1: - resolution: {integrity: sha512-T9BPOmEOhp6SmV25SwLVcHK4E6JyG/coH3C6F1NjNXSziv/fd4GmsqMk8YR6qpPOswfaOCApSNkZv6fxoaYFcQ==} + make-asynchronous@1.1.0: + resolution: {integrity: sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==} engines: {node: '>=18'} marked-terminal@7.3.0: @@ -919,9 +931,9 @@ packages: resolution: {integrity: sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==} engines: {node: ^20.17.0 || >=22.9.0} - normalize-url@8.1.1: - resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==} - engines: {node: '>=14.16'} + normalize-url@9.0.1: + resolution: {integrity: sha512-ARftfC5HdUNu9jJeL8pHj8debUIHA2b91FizCoMzY4lG6dDX13jdvTK0TBe24IBDRf2HvJSzzwEPvmbkQWHRSg==} + engines: {node: '>=20'} npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} @@ -931,8 +943,8 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} - npm@11.10.1: - resolution: {integrity: sha512-woavuY2OgDFQ1K/tB9QHsUuW989nKfvsKTN/h5qGyS+3+BhvXN/DA2TNzx569JaFfTqrET5bEQNHwVhFk+U1gg==} + npm@11.18.0: + resolution: {integrity: sha512-T67M4L5wNm0cZ7EBLErcEkY1SmzEW/WJ+SADBzsFUY1UdAPfFHXFQtZ6SEXiK0+vzXysCvAsepbMaBTwnrAD+w==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true bundledDependencies: @@ -1026,10 +1038,6 @@ packages: resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} engines: {node: '>=18'} - p-is-promise@3.0.0: - resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} - engines: {node: '>=8'} - p-limit@1.3.0: resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} engines: {node: '>=4'} @@ -1046,8 +1054,8 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@7.0.4: - resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} + p-map@7.0.5: + resolution: {integrity: sha512-e8vJF4XdVkzqqSHguEMz41mQO1wKwxKm5ENrUJQUu9kLDCtn83cxbyHZcszr4QC5zEA7WffRRC4gsTecC7J9oA==} engines: {node: '>=18'} p-reduce@3.0.0: @@ -1118,8 +1126,8 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} pify@3.0.0: @@ -1144,6 +1152,15 @@ packages: proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + proxy-agent-negotiate@1.1.0: + resolution: {integrity: sha512-N8IBcM3UgCVzz2L2Lqv8DVntDnnC8/hiV4nEDUPkqq72TPUgYWjQc+bdZlBPZK9LzPAvOY//gAt0S0DApoOXWQ==} + engines: {node: '>= 20'} + peerDependencies: + kerberos: ^2.0.0 + peerDependenciesMeta: + kerberos: + optional: true + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -1190,8 +1207,8 @@ packages: safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - semantic-release@25.0.3: - resolution: {integrity: sha512-WRgl5GcypwramYX4HV+eQGzUbD7UUbljVmS+5G1uMwX/wLgYuJAxGeerXJDMO2xshng4+FXqCgyB5QfClV6WjA==} + semantic-release@25.0.5: + resolution: {integrity: sha512-mn61SUJwtM8ThrWn2WmgLVpwVJeG/hPSupua1psdMoufmwRIPyvRLkRkL0JDXkP67OntlLWUYnBnfVc8EDO3/g==} engines: {node: ^22.14.0 || >= 24.10.0} hasBin: true @@ -1199,8 +1216,8 @@ packages: resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} engines: {node: '>=12'} - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} hasBin: true @@ -1268,8 +1285,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} strip-bom@3.0.0: @@ -1334,8 +1351,8 @@ packages: resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} engines: {node: '>=12'} - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} to-regex-range@5.0.1: @@ -1366,8 +1383,8 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-fest@5.4.4: - resolution: {integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==} + type-fest@5.7.0: + resolution: {integrity: sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg==} engines: {node: '>=20'} typescript@5.9.3: @@ -1383,12 +1400,12 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici@6.23.0: - resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} + undici@6.27.0: + resolution: {integrity: sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==} engines: {node: '>=18.17'} - undici@7.22.0: - resolution: {integrity: sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==} + undici@7.28.0: + resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} engines: {node: '>=20.18.1'} unicode-emoji-modifier-base@1.0.0: @@ -1431,8 +1448,8 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - web-worker@1.2.0: - resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} + web-worker@1.5.0: + resolution: {integrity: sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==} which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -1470,8 +1487,8 @@ packages: resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + yargs@16.2.2: + resolution: {integrity: sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==} engines: {node: '>=10'} yargs@18.0.0: @@ -1488,29 +1505,29 @@ packages: snapshots: - '@actions/core@3.0.0': + '@actions/core@3.0.1': dependencies: '@actions/exec': 3.0.0 - '@actions/http-client': 4.0.0 + '@actions/http-client': 4.0.1 '@actions/exec@3.0.0': dependencies: '@actions/io': 3.0.2 - '@actions/http-client@4.0.0': + '@actions/http-client@4.0.1': dependencies: tunnel: 0.0.6 - undici: 6.23.0 + undici: 6.27.0 '@actions/io@3.0.2': {} - '@babel/code-frame@7.29.0': + '@babel/code-frame@7.29.7': dependencies: - '@babel/helper-validator-identifier': 7.28.5 + '@babel/helper-validator-identifier': 7.29.7 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-identifier@7.29.7': {} '@colors/colors@1.5.0': optional: true @@ -1583,7 +1600,7 @@ snapshots: dependencies: '@octokit/auth-token': 6.0.0 '@octokit/graphql': 9.0.3 - '@octokit/request': 10.0.8 + '@octokit/request': 10.0.11 '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 before-after-hook: 4.0.0 @@ -1596,7 +1613,7 @@ snapshots: '@octokit/graphql@9.0.3': dependencies: - '@octokit/request': 10.0.8 + '@octokit/request': 10.0.11 '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 @@ -1624,13 +1641,13 @@ snapshots: dependencies: '@octokit/types': 16.0.0 - '@octokit/request@10.0.8': + '@octokit/request@10.0.11': dependencies: '@octokit/endpoint': 11.0.3 '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 - fast-content-type-parse: 3.0.0 - json-with-bigint: 3.5.3 + content-type: 2.0.0 + json-with-bigint: 3.5.8 universal-user-agent: 7.0.3 '@octokit/types@16.0.0': @@ -1643,7 +1660,7 @@ snapshots: dependencies: graceful-fs: 4.2.10 - '@pnpm/npm-conf@3.0.2': + '@pnpm/npm-conf@3.0.3': dependencies: '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 @@ -1651,7 +1668,7 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.3(typescript@5.9.3))': + '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.5(typescript@5.9.3))': dependencies: conventional-changelog-angular: 8.1.0 conventional-changelog-writer: 8.2.0 @@ -1661,13 +1678,13 @@ snapshots: import-from-esm: 2.0.0 lodash-es: 4.17.23 micromatch: 4.0.8 - semantic-release: 25.0.3(typescript@5.9.3) + semantic-release: 25.0.5(typescript@5.9.3) transitivePeerDependencies: - supports-color '@semantic-release/error@4.0.0': {} - '@semantic-release/github@12.0.6(semantic-release@25.0.3(typescript@5.9.3))': + '@semantic-release/github@12.0.9(semantic-release@25.0.5(typescript@5.9.3))': dependencies: '@octokit/core': 7.0.6 '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) @@ -1677,54 +1694,55 @@ snapshots: aggregate-error: 5.0.0 debug: 4.4.3 dir-glob: 3.0.1 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - issue-parser: 7.0.1 - lodash-es: 4.17.23 + http-proxy-agent: 9.1.0 + https-proxy-agent: 9.1.0 + issue-parser: 7.0.2 + lodash-es: 4.18.1 mime: 4.1.0 p-filter: 4.1.0 - semantic-release: 25.0.3(typescript@5.9.3) - tinyglobby: 0.2.15 - undici: 7.22.0 + semantic-release: 25.0.5(typescript@5.9.3) + tinyglobby: 0.2.17 + undici: 7.28.0 url-join: 5.0.0 transitivePeerDependencies: + - kerberos - supports-color - '@semantic-release/npm@13.1.4(semantic-release@25.0.3(typescript@5.9.3))': + '@semantic-release/npm@13.1.5(semantic-release@25.0.5(typescript@5.9.3))': dependencies: - '@actions/core': 3.0.0 + '@actions/core': 3.0.1 '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 env-ci: 11.2.0 execa: 9.6.1 - fs-extra: 11.3.3 - lodash-es: 4.17.23 + fs-extra: 11.3.6 + lodash-es: 4.18.1 nerf-dart: 1.0.0 - normalize-url: 8.1.1 - npm: 11.10.1 + normalize-url: 9.0.1 + npm: 11.18.0 rc: 1.2.8 read-pkg: 10.1.0 registry-auth-token: 5.1.1 - semantic-release: 25.0.3(typescript@5.9.3) - semver: 7.7.4 + semantic-release: 25.0.5(typescript@5.9.3) + semver: 7.8.5 tempy: 3.2.0 - '@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.3(typescript@5.9.3))': + '@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.5(typescript@5.9.3))': dependencies: - conventional-changelog-angular: 8.1.0 - conventional-changelog-writer: 8.2.0 + conventional-changelog-angular: 8.3.1 + conventional-changelog-writer: 8.4.0 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.2.1 + conventional-commits-parser: 6.4.0 debug: 4.4.3 - get-stream: 7.0.1 import-from-esm: 2.0.0 - into-stream: 7.0.0 - lodash-es: 4.17.23 + lodash-es: 4.18.1 read-package-up: 11.0.0 - semantic-release: 25.0.3(typescript@5.9.3) + semantic-release: 25.0.5(typescript@5.9.3) transitivePeerDependencies: - supports-color + '@simple-libs/stream-utils@1.2.0': {} + '@sindresorhus/is@4.6.0': {} '@sindresorhus/merge-streams@4.0.0': {} @@ -1745,7 +1763,7 @@ snapshots: acorn@8.17.0: {} - agent-base@7.1.4: {} + agent-base@9.0.0: {} aggregate-error@5.0.0: dependencies: @@ -1828,7 +1846,7 @@ snapshots: mz: 2.7.0 parse5: 5.1.1 parse5-htmlparser2-tree-adapter: 6.0.1 - yargs: 16.2.0 + yargs: 16.2.2 cli-table3@0.6.5: dependencies: @@ -1845,7 +1863,7 @@ snapshots: cliui@9.0.1: dependencies: string-width: 7.2.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 wrap-ansi: 9.0.2 color-convert@1.9.3: @@ -1872,16 +1890,30 @@ snapshots: ini: 1.3.8 proto-list: 1.2.4 + content-type@2.0.0: {} + conventional-changelog-angular@8.1.0: dependencies: compare-func: 2.0.0 + conventional-changelog-angular@8.3.1: + dependencies: + compare-func: 2.0.0 + conventional-changelog-writer@8.2.0: dependencies: conventional-commits-filter: 5.0.0 handlebars: 4.7.8 meow: 13.2.0 - semver: 7.7.4 + semver: 7.8.5 + + conventional-changelog-writer@8.4.0: + dependencies: + '@simple-libs/stream-utils': 1.2.0 + conventional-commits-filter: 5.0.0 + handlebars: 4.7.9 + meow: 13.2.0 + semver: 7.8.5 conventional-commits-filter@5.0.0: {} @@ -1889,15 +1921,20 @@ snapshots: dependencies: meow: 13.2.0 + conventional-commits-parser@6.4.0: + dependencies: + '@simple-libs/stream-utils': 1.2.0 + meow: 13.2.0 + convert-hrtime@5.0.0: {} core-util-is@1.0.3: {} - cosmiconfig@9.0.0(typescript@5.9.3): + cosmiconfig@9.0.2(typescript@5.9.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.1 + js-yaml: 4.3.0 parse-json: 5.2.0 optionalDependencies: typescript: 5.9.3 @@ -2052,17 +2089,15 @@ snapshots: strip-final-newline: 4.0.0 yoctocolors: 2.1.2 - fast-content-type-parse@3.0.0: {} - fast-deep-equal@3.1.3: {} fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 figures@2.0.0: dependencies: @@ -2103,27 +2138,20 @@ snapshots: flatted@3.4.2: {} - from2@2.3.0: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - - fs-extra@11.3.3: + fs-extra@11.3.6: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.2.0 + jsonfile: 6.2.1 universalify: 2.0.1 function-timeout@1.0.2: {} get-caller-file@2.0.5: {} - get-east-asian-width@1.5.0: {} + get-east-asian-width@1.6.0: {} get-stream@6.0.1: {} - get-stream@7.0.1: {} - get-stream@8.0.1: {} get-stream@9.0.1: @@ -2159,6 +2187,15 @@ snapshots: optionalDependencies: uglify-js: 3.19.3 + handlebars@4.7.9: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + has-flag@3.0.0: {} has-flag@4.0.0: {} @@ -2171,22 +2208,26 @@ snapshots: dependencies: lru-cache: 10.4.3 - hosted-git-info@9.0.2: + hosted-git-info@9.0.3: dependencies: - lru-cache: 11.2.6 + lru-cache: 11.5.1 - http-proxy-agent@7.0.2: + http-proxy-agent@9.1.0: dependencies: - agent-base: 7.1.4 + agent-base: 9.0.0 debug: 4.4.3 + proxy-agent-negotiate: 1.1.0 transitivePeerDependencies: + - kerberos - supports-color - https-proxy-agent@7.0.6: + https-proxy-agent@9.1.0: dependencies: - agent-base: 7.1.4 + agent-base: 9.0.0 debug: 4.4.3 + proxy-agent-negotiate: 1.1.0 transitivePeerDependencies: + - kerberos - supports-color human-signals@5.0.0: {} @@ -2219,11 +2260,6 @@ snapshots: ini@1.3.8: {} - into-stream@7.0.0: - dependencies: - from2: 2.3.0 - p-is-promise: 3.0.0 - is-arrayish@0.2.1: {} is-extglob@2.1.1: {} @@ -2250,7 +2286,7 @@ snapshots: isexe@2.0.0: {} - issue-parser@7.0.1: + issue-parser@7.0.2: dependencies: lodash.capitalize: 4.2.1 lodash.escaperegexp: 4.1.2 @@ -2262,10 +2298,6 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@4.1.1: - dependencies: - argparse: 2.0.1 - js-yaml@4.3.0: dependencies: argparse: 2.0.1 @@ -2280,9 +2312,9 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json-with-bigint@3.5.3: {} + json-with-bigint@3.5.8: {} - jsonfile@6.2.0: + jsonfile@6.2.1: dependencies: universalify: 2.0.1 optionalDependencies: @@ -2317,6 +2349,8 @@ snapshots: lodash-es@4.17.23: {} + lodash-es@4.18.1: {} + lodash.capitalize@4.2.1: {} lodash.escaperegexp@4.1.2: {} @@ -2331,13 +2365,13 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.6: {} + lru-cache@11.5.1: {} - make-asynchronous@1.0.1: + make-asynchronous@1.1.0: dependencies: p-event: 6.0.1 type-fest: 4.41.0 - web-worker: 1.2.0 + web-worker: 1.5.0 marked-terminal@7.3.0(marked@15.0.12): dependencies: @@ -2395,16 +2429,16 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.4 + semver: 7.8.5 validate-npm-package-license: 3.0.4 normalize-package-data@8.0.0: dependencies: - hosted-git-info: 9.0.2 - semver: 7.7.4 + hosted-git-info: 9.0.3 + semver: 7.8.5 validate-npm-package-license: 3.0.4 - normalize-url@8.1.1: {} + normalize-url@9.0.1: {} npm-run-path@5.3.0: dependencies: @@ -2415,7 +2449,7 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 - npm@11.10.1: {} + npm@11.18.0: {} object-assign@4.1.1: {} @@ -2440,9 +2474,7 @@ snapshots: p-filter@4.1.0: dependencies: - p-map: 7.0.4 - - p-is-promise@3.0.0: {} + p-map: 7.0.5 p-limit@1.3.0: dependencies: @@ -2460,7 +2492,7 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@7.0.4: {} + p-map@7.0.5: {} p-reduce@3.0.0: {} @@ -2479,14 +2511,14 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 parse-json@8.3.0: dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 index-to-position: 1.2.0 type-fest: 4.41.0 @@ -2514,7 +2546,7 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.3: {} + picomatch@4.0.4: {} pify@3.0.0: {} @@ -2533,6 +2565,8 @@ snapshots: proto-list@1.2.4: {} + proxy-agent-negotiate@1.1.0: {} + punycode@2.3.1: {} rc@1.2.8: @@ -2552,14 +2586,14 @@ snapshots: dependencies: find-up-simple: 1.0.1 read-pkg: 10.1.0 - type-fest: 5.4.4 + type-fest: 5.7.0 read-pkg@10.1.0: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 8.0.0 parse-json: 8.3.0 - type-fest: 5.4.4 + type-fest: 5.7.0 unicorn-magic: 0.4.0 read-pkg@9.0.1: @@ -2582,7 +2616,7 @@ snapshots: registry-auth-token@5.1.1: dependencies: - '@pnpm/npm-conf': 3.0.2 + '@pnpm/npm-conf': 3.0.3 require-directory@2.1.1: {} @@ -2592,15 +2626,15 @@ snapshots: safe-buffer@5.1.2: {} - semantic-release@25.0.3(typescript@5.9.3): + semantic-release@25.0.5(typescript@5.9.3): dependencies: - '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.3(typescript@5.9.3)) + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.5(typescript@5.9.3)) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 12.0.6(semantic-release@25.0.3(typescript@5.9.3)) - '@semantic-release/npm': 13.1.4(semantic-release@25.0.3(typescript@5.9.3)) - '@semantic-release/release-notes-generator': 14.1.0(semantic-release@25.0.3(typescript@5.9.3)) + '@semantic-release/github': 12.0.9(semantic-release@25.0.5(typescript@5.9.3)) + '@semantic-release/npm': 13.1.5(semantic-release@25.0.5(typescript@5.9.3)) + '@semantic-release/release-notes-generator': 14.1.1(semantic-release@25.0.5(typescript@5.9.3)) aggregate-error: 5.0.0 - cosmiconfig: 9.0.0(typescript@5.9.3) + cosmiconfig: 9.0.2(typescript@5.9.3) debug: 4.4.3 env-ci: 11.2.0 execa: 9.6.1 @@ -2609,9 +2643,9 @@ snapshots: get-stream: 6.0.1 git-log-parser: 1.2.1 hook-std: 4.0.0 - hosted-git-info: 9.0.2 + hosted-git-info: 9.0.3 import-from-esm: 2.0.0 - lodash-es: 4.17.23 + lodash-es: 4.18.1 marked: 15.0.12 marked-terminal: 7.3.0(marked@15.0.12) micromatch: 4.0.8 @@ -2619,16 +2653,17 @@ snapshots: p-reduce: 3.0.0 read-package-up: 12.0.0 resolve-from: 5.0.0 - semver: 7.7.4 + semver: 7.8.5 signale: 1.4.0 yargs: 18.0.0 transitivePeerDependencies: + - kerberos - supports-color - typescript semver-regex@4.0.5: {} - semver@7.7.4: {} + semver@7.8.5: {} shebang-command@2.0.0: dependencies: @@ -2686,8 +2721,8 @@ snapshots: string-width@7.2.0: dependencies: emoji-regex: 10.6.0 - get-east-asian-width: 1.5.0 - strip-ansi: 7.1.2 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 string_decoder@1.1.1: dependencies: @@ -2697,7 +2732,7 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.2: + strip-ansi@7.2.0: dependencies: ansi-regex: 6.2.2 @@ -2714,7 +2749,7 @@ snapshots: super-regex@1.1.0: dependencies: function-timeout: 1.0.2 - make-asynchronous: 1.0.1 + make-asynchronous: 1.1.0 time-span: 5.1.0 supports-color@5.5.0: @@ -2758,10 +2793,10 @@ snapshots: dependencies: convert-hrtime: 5.0.0 - tinyglobby@0.2.15: + tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 to-regex-range@5.0.1: dependencies: @@ -2781,7 +2816,7 @@ snapshots: type-fest@4.41.0: {} - type-fest@5.4.4: + type-fest@5.7.0: dependencies: tagged-tag: 1.0.0 @@ -2792,9 +2827,9 @@ snapshots: undici-types@5.26.5: {} - undici@6.23.0: {} + undici@6.27.0: {} - undici@7.22.0: {} + undici@7.28.0: {} unicode-emoji-modifier-base@1.0.0: {} @@ -2825,7 +2860,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - web-worker@1.2.0: {} + web-worker@1.5.0: {} which@2.0.2: dependencies: @@ -2845,7 +2880,7 @@ snapshots: dependencies: ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 xtend@4.0.2: {} @@ -2855,7 +2890,7 @@ snapshots: yargs-parser@22.0.0: {} - yargs@16.2.0: + yargs@16.2.2: dependencies: cliui: 7.0.4 escalade: 3.2.0 From 3d0df6922e14f0255162a4a32d5c8fd4072033b3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jul 2026 16:28:50 +0000 Subject: [PATCH 09/34] chore(deps): update cimg/rust docker tag to v1.96.1 (#123) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cb13c86d..841e4937 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -18,14 +18,14 @@ executors: xcode: 26.3.0 rust-linux-x86_64: docker: - - image: cimg/rust:1.93.1 + - image: cimg/rust:1.96.1 resource_class: large environment: PIPELINE_NUM: << pipeline.number >> TZ: "America/Los_Angeles" rust-linux-aarch64: docker: - - image: cimg/rust:1.93.1 + - image: cimg/rust:1.96.1 resource_class: arm.medium environment: PIPELINE_NUM: << pipeline.number >> From b836b6074a048a97b7569cfb6514b39e4e1fcc47 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jul 2026 16:59:18 +0000 Subject: [PATCH 10/34] chore(deps): update dependency node to v7.2.1 (#124) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 841e4937..2d041ec6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,7 +4,7 @@ orbs: windows: circleci/windows@5.0.0 rust: circleci/rust@1.8.0 - node: circleci/node@7.1.0 + node: circleci/node@7.2.1 #----------------------------------------------------------------------------------------------------------------------------- From 0ede9376f3de5fc565573a83e76252d1d92fa5e4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jul 2026 21:28:28 +0000 Subject: [PATCH 11/34] chore(deps): update dependency windows to v5.1.1 (#125) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2d041ec6..6de90f9e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,7 +1,7 @@ version: 2.1 orbs: - windows: circleci/windows@5.0.0 + windows: circleci/windows@5.1.1 rust: circleci/rust@1.8.0 node: circleci/node@7.2.1 From c081dfcd9c46501c14ac506d36677d4437300fe4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2026 06:10:24 +0000 Subject: [PATCH 12/34] chore(deps): update node.js to v22.23.1 (#126) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6de90f9e..76d61ca9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,7 +11,7 @@ orbs: executors: node: docker: - - image: node:22.16.0 + - image: node:22.23.1 mac-aarch64: resource_class: macos.m1.medium.gen1 macos: From d522f60b7fc4a7853de9e4196dc1df1e3dab2505 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2026 11:51:36 +0000 Subject: [PATCH 13/34] chore(deps): update dependency eslint to v9.39.5 (#130) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 116 +++++++++++++++++++++++++------------------------ 1 file changed, 59 insertions(+), 57 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a28bde7d..3c9d4bd6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,16 +10,16 @@ importers: dependencies: '@semantic-release/commit-analyzer': specifier: ^13.0.1 - version: 13.0.1(semantic-release@25.0.5(typescript@5.9.3)) + version: 13.0.1(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) '@semantic-release/github': specifier: ^12.0.6 - version: 12.0.9(semantic-release@25.0.5(typescript@5.9.3)) + version: 12.0.9(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) '@semantic-release/release-notes-generator': specifier: ^14.1.0 - version: 14.1.1(semantic-release@25.0.5(typescript@5.9.3)) + version: 14.1.1(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) semantic-release: specifier: ^25.0.3 - version: 25.0.5(typescript@5.9.3) + version: 25.0.5(supports-color@7.2.0)(typescript@5.9.3) stream-buffers: specifier: ^3.0.3 version: 3.0.3 @@ -29,7 +29,7 @@ importers: version: 18.19.130 eslint: specifier: ^9.26.0 - version: 9.39.4 + version: 9.39.5(supports-color@7.2.0) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -82,12 +82,12 @@ packages: resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.3.5': - resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} + '@eslint/eslintrc@3.3.6': + resolution: {integrity: sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.39.4': - resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} + '@eslint/js@9.39.5': + resolution: {integrity: sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.7': @@ -299,8 +299,8 @@ packages: bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - brace-expansion@1.1.15: - resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} + brace-expansion@1.1.16: + resolution: {integrity: sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -507,8 +507,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.39.4: - resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} + eslint@9.39.5: + resolution: {integrity: sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1532,17 +1532,17 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.5(supports-color@7.2.0))': dependencies: - eslint: 9.39.4 + eslint: 9.39.5(supports-color@7.2.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.2': + '@eslint/config-array@0.21.2(supports-color@7.2.0)': dependencies: '@eslint/object-schema': 2.1.7 - debug: 4.4.3 + debug: 4.4.3(supports-color@7.2.0) minimatch: 3.1.5 transitivePeerDependencies: - supports-color @@ -1555,10 +1555,10 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.5': + '@eslint/eslintrc@3.3.6(supports-color@7.2.0)': dependencies: ajv: 6.15.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@7.2.0) espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -1569,7 +1569,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.39.4': {} + '@eslint/js@9.39.5': {} '@eslint/object-schema@2.1.7': {} @@ -1668,23 +1668,23 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.5(typescript@5.9.3))': + '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)': dependencies: conventional-changelog-angular: 8.1.0 conventional-changelog-writer: 8.2.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.1 - debug: 4.4.3 - import-from-esm: 2.0.0 + debug: 4.4.3(supports-color@7.2.0) + import-from-esm: 2.0.0(supports-color@7.2.0) lodash-es: 4.17.23 micromatch: 4.0.8 - semantic-release: 25.0.5(typescript@5.9.3) + semantic-release: 25.0.5(supports-color@7.2.0)(typescript@5.9.3) transitivePeerDependencies: - supports-color '@semantic-release/error@4.0.0': {} - '@semantic-release/github@12.0.9(semantic-release@25.0.5(typescript@5.9.3))': + '@semantic-release/github@12.0.9(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)': dependencies: '@octokit/core': 7.0.6 '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) @@ -1692,15 +1692,15 @@ snapshots: '@octokit/plugin-throttling': 11.0.3(@octokit/core@7.0.6) '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@7.2.0) dir-glob: 3.0.1 - http-proxy-agent: 9.1.0 - https-proxy-agent: 9.1.0 + http-proxy-agent: 9.1.0(supports-color@7.2.0) + https-proxy-agent: 9.1.0(supports-color@7.2.0) issue-parser: 7.0.2 lodash-es: 4.18.1 mime: 4.1.0 p-filter: 4.1.0 - semantic-release: 25.0.5(typescript@5.9.3) + semantic-release: 25.0.5(supports-color@7.2.0)(typescript@5.9.3) tinyglobby: 0.2.17 undici: 7.28.0 url-join: 5.0.0 @@ -1708,7 +1708,7 @@ snapshots: - kerberos - supports-color - '@semantic-release/npm@13.1.5(semantic-release@25.0.5(typescript@5.9.3))': + '@semantic-release/npm@13.1.5(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))': dependencies: '@actions/core': 3.0.1 '@semantic-release/error': 4.0.0 @@ -1723,21 +1723,21 @@ snapshots: rc: 1.2.8 read-pkg: 10.1.0 registry-auth-token: 5.1.1 - semantic-release: 25.0.5(typescript@5.9.3) + semantic-release: 25.0.5(supports-color@7.2.0)(typescript@5.9.3) semver: 7.8.5 tempy: 3.2.0 - '@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.5(typescript@5.9.3))': + '@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)': dependencies: conventional-changelog-angular: 8.3.1 conventional-changelog-writer: 8.4.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.4.0 - debug: 4.4.3 - import-from-esm: 2.0.0 + debug: 4.4.3(supports-color@7.2.0) + import-from-esm: 2.0.0(supports-color@7.2.0) lodash-es: 4.18.1 read-package-up: 11.0.0 - semantic-release: 25.0.5(typescript@5.9.3) + semantic-release: 25.0.5(supports-color@7.2.0)(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -1809,7 +1809,7 @@ snapshots: bottleneck@2.19.5: {} - brace-expansion@1.1.15: + brace-expansion@1.1.16: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 @@ -1949,9 +1949,11 @@ snapshots: dependencies: type-fest: 1.4.0 - debug@4.4.3: + debug@4.4.3(supports-color@7.2.0): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 7.2.0 deep-extend@0.6.0: {} @@ -2005,15 +2007,15 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.4: + eslint@9.39.5(supports-color@7.2.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.5(supports-color@7.2.0)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2 + '@eslint/config-array': 0.21.2(supports-color@7.2.0) '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.5 - '@eslint/js': 9.39.4 + '@eslint/eslintrc': 3.3.6(supports-color@7.2.0) + '@eslint/js': 9.39.5 '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 @@ -2022,7 +2024,7 @@ snapshots: ajv: 6.15.0 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.3 + debug: 4.4.3(supports-color@7.2.0) escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -2212,19 +2214,19 @@ snapshots: dependencies: lru-cache: 11.5.1 - http-proxy-agent@9.1.0: + http-proxy-agent@9.1.0(supports-color@7.2.0): dependencies: agent-base: 9.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@7.2.0) proxy-agent-negotiate: 1.1.0 transitivePeerDependencies: - kerberos - supports-color - https-proxy-agent@9.1.0: + https-proxy-agent@9.1.0(supports-color@7.2.0): dependencies: agent-base: 9.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@7.2.0) proxy-agent-negotiate: 1.1.0 transitivePeerDependencies: - kerberos @@ -2241,9 +2243,9 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-from-esm@2.0.0: + import-from-esm@2.0.0(supports-color@7.2.0): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@7.2.0) import-meta-resolve: 4.2.0 transitivePeerDependencies: - supports-color @@ -2401,7 +2403,7 @@ snapshots: minimatch@3.1.5: dependencies: - brace-expansion: 1.1.15 + brace-expansion: 1.1.16 minimist@1.2.8: {} @@ -2626,16 +2628,16 @@ snapshots: safe-buffer@5.1.2: {} - semantic-release@25.0.5(typescript@5.9.3): + semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3): dependencies: - '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.5(typescript@5.9.3)) + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 12.0.9(semantic-release@25.0.5(typescript@5.9.3)) - '@semantic-release/npm': 13.1.5(semantic-release@25.0.5(typescript@5.9.3)) - '@semantic-release/release-notes-generator': 14.1.1(semantic-release@25.0.5(typescript@5.9.3)) + '@semantic-release/github': 12.0.9(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) + '@semantic-release/npm': 13.1.5(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3)) + '@semantic-release/release-notes-generator': 14.1.1(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) aggregate-error: 5.0.0 cosmiconfig: 9.0.2(typescript@5.9.3) - debug: 4.4.3 + debug: 4.4.3(supports-color@7.2.0) env-ci: 11.2.0 execa: 9.6.1 figures: 6.1.0 @@ -2644,7 +2646,7 @@ snapshots: git-log-parser: 1.2.1 hook-std: 4.0.0 hosted-git-info: 9.0.3 - import-from-esm: 2.0.0 + import-from-esm: 2.0.0(supports-color@7.2.0) lodash-es: 4.18.1 marked: 15.0.12 marked-terminal: 7.3.0(marked@15.0.12) From 2df5c6f523dc18f89333d291873aaf96c00c7291 Mon Sep 17 00:00:00 2001 From: Marcus Ruddick Date: Wed, 22 Jul 2026 14:22:29 -1000 Subject: [PATCH 14/34] feat: add nix integration and deployment * add nix dev shell * set up nixos deployment * add nix install instructions --- .circleci/config.yml | 19 ++++ .circleci/publish-nix.sh | 21 ++++ .envrc | 3 + .gitignore | 3 + README.md | 27 +++++ flake.lock | 130 ++++++++++++++++++++++ flake.nix | 106 ++++++++++++++++++ lua/hermes/binary.lua | 17 +++ lua/hermes/health.lua | 2 + nix/packaging/default.nix | 72 ++++++++++++ src/acp/connection/stdio/mod.rs | 190 ++++++++++++++++++++++++++++++++ tests/lua/spec/api_spec.lua | 28 ++--- tests/lua/spec/binary_spec.lua | 24 ++++ tests/lua/spec/health_spec.lua | 13 +++ 14 files changed, 641 insertions(+), 14 deletions(-) create mode 100755 .circleci/publish-nix.sh create mode 100644 .envrc create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 nix/packaging/default.nix diff --git a/.circleci/config.yml b/.circleci/config.yml index 76d61ca9..ef802025 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -148,6 +148,14 @@ workflows: requires: - release + - publish-nix: + filters: + branches: + only: + - main + requires: + - release + #----------------------------------------------------------------------------------------------------------------------------- commands: @@ -275,6 +283,17 @@ jobs: name: Publish to LuaRocks command: bash .circleci/publish-luarocks.sh + publish-nix: + docker: + - image: nixos/nix + steps: + - checkout + - attach_workspace: + at: target/release + - run: + name: Publish to Nix + command: bash .circleci/publish-nix.sh + check_license: executor: rust-linux-x86_64 steps: diff --git a/.circleci/publish-nix.sh b/.circleci/publish-nix.sh new file mode 100755 index 00000000..d3ba7357 --- /dev/null +++ b/.circleci/publish-nix.sh @@ -0,0 +1,21 @@ +#!/bin/sh +set -e + +VERSION=$(cat target/release/version.txt) +if [ -z "$VERSION" ]; then + echo "No version to publish" + exit 0 +fi + +echo "Publishing nix package for v${VERSION}" + +# git not included in nixos/nix image +nix-env -iA nixpkgs.git + +# Update hashes +nix run nixpkgs#nix-update -- hermes-nvim --flake --version v"${VERSION}" + +# Commit with [skip ci] +git add nix/packaging/default.nix +git commit -m "nix: update hermes-nvim to v${VERSION} [skip ci]" +git push origin HEAD diff --git a/.envrc b/.envrc new file mode 100644 index 00000000..f63b32ec --- /dev/null +++ b/.envrc @@ -0,0 +1,3 @@ +#!/usr/bin/env zsh + +use flake diff --git a/.gitignore b/.gitignore index 3ea9ab57..8908eb75 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,6 @@ tests/lua/**/*.log # LLVM coverage raw data *.profraw *.profdata + +#direnv +.direnv diff --git a/README.md b/README.md index 98e565a1..ef35033d 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,33 @@ vim.pack.add({ "Ruddickmg/hermes.nvim" }) :Rocks install hermes.nvim ``` +**NixOS (nixpkgs)** +```nix +# flake.nix +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + hermes-nvim.url = "github:Ruddickmg/hermes.nvim"; + }; + + outputs = { self, nixpkgs, hermes-nvim, ... }: { + # as a module input + nixosConfigurations.myHost = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ({ pkgs, ... }: { + environment.systemPackages = [ hermes-nvim.packages.${pkgs.system}.default ]; + }) + ]; + }; + }; +} +``` + +> [!NOTE] +> On NixOS the pre-built binary is used directly via `fetchurl` — no compilation required. +> The binary path is under `/nix/store/...` and Hermes detects this automatically. + ### ⚙️ Requirements - Neovim 0.11 or later diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000..f76d4ae3 --- /dev/null +++ b/flake.lock @@ -0,0 +1,130 @@ +{ + "nodes": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1782949081, + "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1784120854, + "narHash": "sha256-KesHgItiZPgGX740axSiQLcIQ8D24MDqNpkKYWIek8k=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "753cc8a3a87467296ddd1fa93f0cc3e81120ee46", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1782614948, + "narHash": "sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC+eBu2zKlp8=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "db3f255737b94216eb71cce308e2912cf6bc2d7c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1744536153, + "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay", + "shell-services": "shell-services", + "systems": "systems" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1784216271, + "narHash": "sha256-bvaxxdk7mmMQ88AuXQGTUtk+PcUujHpgxqpryqTWvTU=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "1f69c7203034a4a974d7a4eac0f19b54af30804d", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "shell-services": { + "flake": false, + "locked": { + "lastModified": 1779991464, + "narHash": "sha256-7QcxozggWiB0CSFdK5LqMC/iZIWDeEO1YbYbnOFo5CU=", + "owner": "Rayzeq", + "repo": "shell-services", + "rev": "9912882b86aba66b4d0b95d6b2af1d4fbb3cc6e7", + "type": "github" + }, + "original": { + "owner": "Rayzeq", + "repo": "shell-services", + "rev": "9912882b86aba66b4d0b95d6b2af1d4fbb3cc6e7", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000..8182cf34 --- /dev/null +++ b/flake.nix @@ -0,0 +1,106 @@ +{ + description = "Rust dev environment"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + rust-overlay.url = "github:oxalica/rust-overlay"; + flake-parts.url = "github:hercules-ci/flake-parts"; + systems.url = "github:nix-systems/default"; + shell-services = { + url = "github:Rayzeq/shell-services/9912882b86aba66b4d0b95d6b2af1d4fbb3cc6e7"; + flake = false; + }; + }; + + outputs = + { + nixpkgs, + rust-overlay, + flake-parts, + shell-services, + ... + }@inputs: + flake-parts.lib.mkFlake { inherit inputs; } { + systems = import inputs.systems; + perSystem = + { system, ... }: + let + pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; + overlays = [ + (import rust-overlay) + (final: prev: { + lib = prev.lib // { + toJSON = builtins.toJSON; + }; + }) + ]; + }; + shellServices = import shell-services { inherit pkgs; }; + toolChain = ( + pkgs.rust-bin.stable.latest.default.override { + extensions = [ + "rust-src" + "cargo" + "rustc" + "rust-analyzer" + "llvm-tools" + "clippy" + ]; + } + ); + in + { + packages.default = pkgs.callPackage ./nix/packaging/default.nix {}; + + devShells.default = shellServices { + nativeBuildInputs = with pkgs; [ + gcc + ]; + + RUST_SRC_PATH = "${toolChain}/lib/rustlib/src/rust/library"; + + buildInputs = with pkgs; [ + toolChain + glib + clang + sqlx-cli + just + lspmux + opencode + github-copilot-cli + cargo-nextest + cargo-llvm-cov + cargo-deny + cargo-sort + lua51Packages.vusted + ]; + + shellHook = '' + XDG_RUNTIME_DIR="''${XDG_RUNTIME_DIR:-''${TMPDIR:-/tmp}/hermes-runtime-$(id -u)}" + mkdir -p "$XDG_RUNTIME_DIR/lspmux" + XDG_CONFIG_HOME="''${XDG_CONFIG_HOME:-$HOME/.config}" + mkdir -p "$XDG_CONFIG_HOME/lspmux" + cfg="$XDG_CONFIG_HOME/lspmux/config.toml" + if [ ! -f "$cfg" ]; then + cat > "$cfg" </lib/libhermes--. + postInstall = '' + mkdir -p $out/lib + cp ${hermes-binary} $out/lib/${binaryName} + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = "vimPlugins.hermes-nvim"; + }; + inherit hermes-binary; + }; + + meta = { + description = "ACP (Agent Client Protocol) client for Neovim"; + homepage = "https://github.com/Ruddickmg/hermes.nvim"; + license = lib.licenses.mit; + }; +} diff --git a/src/acp/connection/stdio/mod.rs b/src/acp/connection/stdio/mod.rs index f56e4f60..3d6f8298 100644 --- a/src/acp/connection/stdio/mod.rs +++ b/src/acp/connection/stdio/mod.rs @@ -18,9 +18,42 @@ use crate::{ use agent_client_protocol::ByteStreams; use async_channel::Receiver; use child::Child; +use futures::{AsyncBufReadExt, StreamExt}; +use std::io::Write; use std::sync::Arc; use tracing::{info, instrument, trace, warn}; +async fn read_stderr_lines( + reader: R, + mut writer: W, + agent_name: &str, +) { + let mut lines = reader.lines(); + while let Some(line) = lines.next().await { + match line { + Ok(line) if !line.is_empty() => { + writeln!(writer, "[hermes] [stderr] {}: {}", agent_name, line).ok(); + } + Err(e) => { + writeln!( + writer, + "[hermes] stderr read error for '{}': {}", + agent_name, e + ) + .ok(); + break; + } + _ => {} + } + } + writeln!( + writer, + "[hermes] stderr reader finished for '{}' (EOF)", + agent_name + ) + .ok(); +} + #[instrument(level = "trace", skip(client, receiver, stdio))] pub async fn connect( client: Arc, @@ -41,6 +74,23 @@ pub async fn connect( .await .ok_or_else(|| Error::Connection("Failed to take stdout".to_string()))?; + let stderr = stdio.take_stderr().await; + let agent_name = agent.to_string(); + if let Some(stderr) = stderr { + std::thread::spawn(move || { + smol::block_on(async { + read_stderr_lines( + futures::io::BufReader::new(stderr), + std::io::stderr(), + &agent_name, + ) + .await; + }); + }); + } else { + eprintln!("[hermes] no stderr handle available for '{}'", agent_name); + } + let result = handle_connection( client, agent.clone(), @@ -58,3 +108,143 @@ pub async fn connect( result } + +#[cfg(test)] +mod tests { + use super::*; + use futures::io::Cursor; + use pretty_assertions::assert_eq; + use std::io::ErrorKind; + + fn run_test(f: F) + where + F: FnOnce() -> Fut, + Fut: std::future::Future, + { + let executor = smol::LocalExecutor::new(); + smol::block_on(executor.run(f())); + } + + struct FailOnce { + first: bool, + } + + impl futures::AsyncRead for FailOnce { + fn poll_read( + self: std::pin::Pin<&mut Self>, + _cx: &mut std::task::Context<'_>, + buf: &mut [u8], + ) -> std::task::Poll> { + let this = self.get_mut(); + if this.first { + this.first = false; + let data = b"ok\n"; + let len = std::cmp::min(buf.len(), data.len()); + buf[..len].copy_from_slice(&data[..len]); + std::task::Poll::Ready(Ok(len)) + } else { + std::task::Poll::Ready(Err(std::io::Error::new( + ErrorKind::Other, + "mock read error", + ))) + } + } + } + + impl futures::AsyncBufRead for FailOnce { + fn poll_fill_buf( + mut self: std::pin::Pin<&mut Self>, + _cx: &mut std::task::Context<'_>, + ) -> std::task::Poll> { + if self.first { + self.first = false; + std::task::Poll::Ready(Ok(b"ok\n")) + } else { + std::task::Poll::Ready(Err(std::io::Error::new( + ErrorKind::Other, + "mock read error", + ))) + } + } + + fn consume(self: std::pin::Pin<&mut Self>, _amt: usize) {} + } + + #[test] + fn stderr_lines_reads_all_lines() { + run_test(|| async { + let reader = Cursor::new(b"line1\nline2\nline3\n"); + let mut writer = Vec::new(); + read_stderr_lines(reader, &mut writer, "test-agent").await; + let output = String::from_utf8(writer).unwrap(); + assert_eq!( + output, + "[hermes] [stderr] test-agent: line1\n\ + [hermes] [stderr] test-agent: line2\n\ + [hermes] [stderr] test-agent: line3\n\ + [hermes] stderr reader finished for 'test-agent' (EOF)\n" + ); + }); + } + + #[test] + fn stderr_lines_skips_empty_lines() { + run_test(|| async { + let reader = Cursor::new(b"\n\nhello\n\n"); + let mut writer = Vec::new(); + read_stderr_lines(reader, &mut writer, "test-agent").await; + let output = String::from_utf8(writer).unwrap(); + assert_eq!( + output, + "[hermes] [stderr] test-agent: hello\n\ + [hermes] stderr reader finished for 'test-agent' (EOF)\n" + ); + }); + } + + #[test] + fn stderr_lines_breaks_on_read_error() { + run_test(|| async { + let reader = FailOnce { first: true }; + let mut writer = Vec::new(); + read_stderr_lines(reader, &mut writer, "test-agent").await; + let output = String::from_utf8(writer).unwrap(); + assert_eq!( + output, + "[hermes] [stderr] test-agent: ok\n\ + [hermes] stderr read error for 'test-agent': mock read error\n\ + [hermes] stderr reader finished for 'test-agent' (EOF)\n" + ); + }); + } + + #[test] + fn stderr_lines_logs_eof_on_complete() { + run_test(|| async { + let reader = Cursor::new(b"hello\n"); + let mut writer = Vec::new(); + read_stderr_lines(reader, &mut writer, "test-agent").await; + let output = String::from_utf8(writer).unwrap(); + assert_eq!( + output, + "[hermes] [stderr] test-agent: hello\n\ + [hermes] stderr reader finished for 'test-agent' (EOF)\n" + ); + }); + } + + #[test] + fn stderr_lines_handles_no_trailing_newline() { + run_test(|| async { + let reader = Cursor::new(b"partial line"); + let mut writer = Vec::new(); + read_stderr_lines(reader, &mut writer, "test-agent").await; + let output = String::from_utf8(writer).unwrap(); + assert_eq!( + output, + "[hermes] [stderr] test-agent: partial line\n\ + [hermes] stderr reader finished for 'test-agent' (EOF)\n" + ); + }); + } +} diff --git a/tests/lua/spec/api_spec.lua b/tests/lua/spec/api_spec.lua index 5f9c75e7..bf5038f3 100644 --- a/tests/lua/spec/api_spec.lua +++ b/tests/lua/spec/api_spec.lua @@ -143,7 +143,7 @@ describe("Hermes API Endpoints (E2E)", function() -- Call connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -171,7 +171,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -198,7 +198,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -242,7 +242,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -286,7 +286,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -330,7 +330,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -374,7 +374,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -418,7 +418,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -464,7 +464,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -491,7 +491,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -518,7 +518,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -545,7 +545,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -572,7 +572,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) @@ -616,7 +616,7 @@ describe("Hermes API Endpoints (E2E)", function() -- First connect local ok, err = pcall(function() - hermes.connect("opencode") + hermes.connect("opencode", { command = "opencode", args = { "acp" } }) end) if not ok then error("connect() should not crash: " .. tostring(err)) diff --git a/tests/lua/spec/binary_spec.lua b/tests/lua/spec/binary_spec.lua index 3fc5babd..0f3a2d51 100644 --- a/tests/lua/spec/binary_spec.lua +++ b/tests/lua/spec/binary_spec.lua @@ -205,6 +205,30 @@ describe("hermes.binary", function() end) end) + describe("is_nix_install()", function() + it("returns false when debug.getinfo returns nil", function() + local original_getinfo = debug.getinfo + debug.getinfo = function(level, ...) + if level == 1 then return nil end + return original_getinfo(level, ...) + end + local result = binary.is_nix_install() + debug.getinfo = original_getinfo + assert.is_false(result) + end) + + it("returns false when source is empty after stripping @", function() + local original_getinfo = debug.getinfo + debug.getinfo = function(level, ...) + if level == 1 then return { source = "@" } end + return original_getinfo(level, ...) + end + local result = binary.is_nix_install() + debug.getinfo = original_getinfo + assert.is_false(result) + end) + end) + describe("_get_rock_version()", function() it("returns nil when glob returns empty", function() local glob_stub = stub(vim.fn, "glob").returns({}) diff --git a/tests/lua/spec/health_spec.lua b/tests/lua/spec/health_spec.lua index a568e47f..b6fc5802 100644 --- a/tests/lua/spec/health_spec.lua +++ b/tests/lua/spec/health_spec.lua @@ -216,6 +216,19 @@ describe("hermes.health", function() assert.is_false(has_call(calls.info, "Installed via LuaRocks")) end) + it("reports Installed via Nix when nix install detected", function() + local binary = require("hermes.binary") + local nix_stub = stub(binary, "is_nix_install").returns(true) + health.check() + nix_stub:revert() + assert.is_true(has_call(calls.info, "Installed via Nix")) + end) + + it("omits Installed via Nix when not a nix install", function() + health.check() + assert.is_false(has_call(calls.info, "Installed via Nix")) + end) + it("includes Platform section", function() health.check() assert.is_true(has_call(calls.start, "Platform")) From f2ad6bd29296b2a11cace63c181b6a5049ec9045 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 00:49:31 +0000 Subject: [PATCH 15/34] chore(deps): update dependency semantic-release to v25.0.8 (#131) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 56 +++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3c9d4bd6..7dda3c0c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,16 +10,16 @@ importers: dependencies: '@semantic-release/commit-analyzer': specifier: ^13.0.1 - version: 13.0.1(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) + version: 13.0.1(semantic-release@25.0.8(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) '@semantic-release/github': specifier: ^12.0.6 - version: 12.0.9(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) + version: 12.0.9(semantic-release@25.0.8(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) '@semantic-release/release-notes-generator': specifier: ^14.1.0 - version: 14.1.1(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) + version: 14.1.1(semantic-release@25.0.8(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) semantic-release: specifier: ^25.0.3 - version: 25.0.5(supports-color@7.2.0)(typescript@5.9.3) + version: 25.0.8(supports-color@7.2.0)(typescript@5.9.3) stream-buffers: specifier: ^3.0.3 version: 3.0.3 @@ -859,8 +859,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.5.1: - resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} + lru-cache@11.5.2: + resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} engines: {node: 20 || >=22} make-asynchronous@1.1.0: @@ -1207,8 +1207,8 @@ packages: safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - semantic-release@25.0.5: - resolution: {integrity: sha512-mn61SUJwtM8ThrWn2WmgLVpwVJeG/hPSupua1psdMoufmwRIPyvRLkRkL0JDXkP67OntlLWUYnBnfVc8EDO3/g==} + semantic-release@25.0.8: + resolution: {integrity: sha512-w/iZ0bur36rKffXZYmIUmy068eoBY3Ij1DCCddx2JwWEM5Tg+eU9ld/E9qSInVvPASyyR2Ln/XGfQ9OZrMlhtw==} engines: {node: ^22.14.0 || >= 24.10.0} hasBin: true @@ -1383,8 +1383,8 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-fest@5.7.0: - resolution: {integrity: sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg==} + type-fest@5.8.0: + resolution: {integrity: sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==} engines: {node: '>=20'} typescript@5.9.3: @@ -1668,7 +1668,7 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)': + '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.8(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)': dependencies: conventional-changelog-angular: 8.1.0 conventional-changelog-writer: 8.2.0 @@ -1678,13 +1678,13 @@ snapshots: import-from-esm: 2.0.0(supports-color@7.2.0) lodash-es: 4.17.23 micromatch: 4.0.8 - semantic-release: 25.0.5(supports-color@7.2.0)(typescript@5.9.3) + semantic-release: 25.0.8(supports-color@7.2.0)(typescript@5.9.3) transitivePeerDependencies: - supports-color '@semantic-release/error@4.0.0': {} - '@semantic-release/github@12.0.9(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)': + '@semantic-release/github@12.0.9(semantic-release@25.0.8(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)': dependencies: '@octokit/core': 7.0.6 '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) @@ -1700,7 +1700,7 @@ snapshots: lodash-es: 4.18.1 mime: 4.1.0 p-filter: 4.1.0 - semantic-release: 25.0.5(supports-color@7.2.0)(typescript@5.9.3) + semantic-release: 25.0.8(supports-color@7.2.0)(typescript@5.9.3) tinyglobby: 0.2.17 undici: 7.28.0 url-join: 5.0.0 @@ -1708,7 +1708,7 @@ snapshots: - kerberos - supports-color - '@semantic-release/npm@13.1.5(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))': + '@semantic-release/npm@13.1.5(semantic-release@25.0.8(supports-color@7.2.0)(typescript@5.9.3))': dependencies: '@actions/core': 3.0.1 '@semantic-release/error': 4.0.0 @@ -1723,11 +1723,11 @@ snapshots: rc: 1.2.8 read-pkg: 10.1.0 registry-auth-token: 5.1.1 - semantic-release: 25.0.5(supports-color@7.2.0)(typescript@5.9.3) + semantic-release: 25.0.8(supports-color@7.2.0)(typescript@5.9.3) semver: 7.8.5 tempy: 3.2.0 - '@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)': + '@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.8(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)': dependencies: conventional-changelog-angular: 8.3.1 conventional-changelog-writer: 8.4.0 @@ -1737,7 +1737,7 @@ snapshots: import-from-esm: 2.0.0(supports-color@7.2.0) lodash-es: 4.18.1 read-package-up: 11.0.0 - semantic-release: 25.0.5(supports-color@7.2.0)(typescript@5.9.3) + semantic-release: 25.0.8(supports-color@7.2.0)(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -2212,7 +2212,7 @@ snapshots: hosted-git-info@9.0.3: dependencies: - lru-cache: 11.5.1 + lru-cache: 11.5.2 http-proxy-agent@9.1.0(supports-color@7.2.0): dependencies: @@ -2367,7 +2367,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.5.1: {} + lru-cache@11.5.2: {} make-asynchronous@1.1.0: dependencies: @@ -2588,14 +2588,14 @@ snapshots: dependencies: find-up-simple: 1.0.1 read-pkg: 10.1.0 - type-fest: 5.7.0 + type-fest: 5.8.0 read-pkg@10.1.0: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 8.0.0 parse-json: 8.3.0 - type-fest: 5.7.0 + type-fest: 5.8.0 unicorn-magic: 0.4.0 read-pkg@9.0.1: @@ -2628,13 +2628,13 @@ snapshots: safe-buffer@5.1.2: {} - semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3): + semantic-release@25.0.8(supports-color@7.2.0)(typescript@5.9.3): dependencies: - '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.8(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 12.0.9(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) - '@semantic-release/npm': 13.1.5(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3)) - '@semantic-release/release-notes-generator': 14.1.1(semantic-release@25.0.5(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) + '@semantic-release/github': 12.0.9(semantic-release@25.0.8(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) + '@semantic-release/npm': 13.1.5(semantic-release@25.0.8(supports-color@7.2.0)(typescript@5.9.3)) + '@semantic-release/release-notes-generator': 14.1.1(semantic-release@25.0.8(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0) aggregate-error: 5.0.0 cosmiconfig: 9.0.2(typescript@5.9.3) debug: 4.4.3(supports-color@7.2.0) @@ -2818,7 +2818,7 @@ snapshots: type-fest@4.41.0: {} - type-fest@5.7.0: + type-fest@5.8.0: dependencies: tagged-tag: 1.0.0 From ce0f06018c11234364b5f92c247534dc078c82a2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2026 15:02:24 -1000 Subject: [PATCH 16/34] chore(deps): remove direct fontdb depenency (#127) * chore(deps): update rust crate fontdb to 0.23 * remove fontdb dependency --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Ruddickmg --- Cargo.lock | 11 +++++------ Cargo.toml | 2 +- build.rs | 54 +++++++++++++++++++++++++++--------------------------- 3 files changed, 33 insertions(+), 34 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f2da4ccc..2febccbf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -768,7 +768,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -1145,7 +1145,6 @@ dependencies = [ "crossbeam-channel", "event-listener", "flate2", - "fontdb", "futures", "futures-lite", "libc", @@ -1988,7 +1987,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2422,10 +2421,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.1", "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3067,7 +3066,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 64c37204..0a9e7b18 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -69,7 +69,7 @@ serde_json = "1.0" resvg = "0.44" usvg = "0.44" tiny-skia = "0.11" -fontdb = "0.22" + zip = { version = "8", default-features = false, features = ["deflate"] } # panic = "abort" removed - errors are logged and Ok returned instead diff --git a/build.rs b/build.rs index 2675a6b4..7e1e8cde 100644 --- a/build.rs +++ b/build.rs @@ -86,7 +86,7 @@ fn extract_font_from_zip(data: &[u8]) -> Result, Box usvg::Options<'static> { - let mut fontdb = fontdb::Database::new(); + let mut fontdb = usvg::fontdb::Database::new(); fontdb.load_system_fonts(); if !font_data.is_empty() { fontdb.load_font_data(font_data.to_vec()); @@ -106,44 +106,44 @@ fn make_svg_options(font_data: &[u8]) -> usvg::Options<'static> { fn custom_font_selector() -> usvg::FontSelectionFn<'static> { Box::new( - move |font: &usvg::Font, fontdb: &mut std::sync::Arc| { - let families: Vec = font + move |font: &usvg::Font, fontdb: &mut std::sync::Arc| { + let families: Vec = font .families() .iter() .map(|f| match f { - usvg::FontFamily::Serif => fontdb::Family::Serif, - usvg::FontFamily::SansSerif => fontdb::Family::SansSerif, - usvg::FontFamily::Cursive => fontdb::Family::Cursive, - usvg::FontFamily::Fantasy => fontdb::Family::Fantasy, - usvg::FontFamily::Monospace => fontdb::Family::Monospace, - usvg::FontFamily::Named(s) => fontdb::Family::Name(s), + usvg::FontFamily::Serif => usvg::fontdb::Family::Serif, + usvg::FontFamily::SansSerif => usvg::fontdb::Family::SansSerif, + usvg::FontFamily::Cursive => usvg::fontdb::Family::Cursive, + usvg::FontFamily::Fantasy => usvg::fontdb::Family::Fantasy, + usvg::FontFamily::Monospace => usvg::fontdb::Family::Monospace, + usvg::FontFamily::Named(s) => usvg::fontdb::Family::Name(s), }) .collect(); let mut all_families = families; - all_families.push(fontdb::Family::Serif); + all_families.push(usvg::fontdb::Family::Serif); let stretch = match font.stretch() { - usvg::FontStretch::UltraCondensed => fontdb::Stretch::UltraCondensed, - usvg::FontStretch::ExtraCondensed => fontdb::Stretch::ExtraCondensed, - usvg::FontStretch::Condensed => fontdb::Stretch::Condensed, - usvg::FontStretch::SemiCondensed => fontdb::Stretch::SemiCondensed, - usvg::FontStretch::Normal => fontdb::Stretch::Normal, - usvg::FontStretch::SemiExpanded => fontdb::Stretch::SemiExpanded, - usvg::FontStretch::Expanded => fontdb::Stretch::Expanded, - usvg::FontStretch::ExtraExpanded => fontdb::Stretch::ExtraExpanded, - usvg::FontStretch::UltraExpanded => fontdb::Stretch::UltraExpanded, + usvg::FontStretch::UltraCondensed => usvg::fontdb::Stretch::UltraCondensed, + usvg::FontStretch::ExtraCondensed => usvg::fontdb::Stretch::ExtraCondensed, + usvg::FontStretch::Condensed => usvg::fontdb::Stretch::Condensed, + usvg::FontStretch::SemiCondensed => usvg::fontdb::Stretch::SemiCondensed, + usvg::FontStretch::Normal => usvg::fontdb::Stretch::Normal, + usvg::FontStretch::SemiExpanded => usvg::fontdb::Stretch::SemiExpanded, + usvg::FontStretch::Expanded => usvg::fontdb::Stretch::Expanded, + usvg::FontStretch::ExtraExpanded => usvg::fontdb::Stretch::ExtraExpanded, + usvg::FontStretch::UltraExpanded => usvg::fontdb::Stretch::UltraExpanded, }; let style = match font.style() { - usvg::FontStyle::Normal => fontdb::Style::Normal, - usvg::FontStyle::Italic => fontdb::Style::Italic, - usvg::FontStyle::Oblique => fontdb::Style::Oblique, + usvg::FontStyle::Normal => usvg::fontdb::Style::Normal, + usvg::FontStyle::Italic => usvg::fontdb::Style::Italic, + usvg::FontStyle::Oblique => usvg::fontdb::Style::Oblique, }; - let query = fontdb::Query { + let query = usvg::fontdb::Query { families: &all_families, - weight: fontdb::Weight(font.weight()), + weight: usvg::fontdb::Weight(font.weight()), stretch, style, }; @@ -152,10 +152,10 @@ fn custom_font_selector() -> usvg::FontSelectionFn<'static> { return Some(id); } - let fallback = [fontdb::Family::Name("DejaVu Sans Mono")]; - fontdb.query(&fontdb::Query { + let fallback = [usvg::fontdb::Family::Name("DejaVu Sans Mono")]; + fontdb.query(&usvg::fontdb::Query { families: &fallback, - weight: fontdb::Weight(font.weight()), + weight: usvg::fontdb::Weight(font.weight()), stretch, style, }) From 204e82efbae5db093ff630b6622112a05a93f540 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 02:15:24 +0000 Subject: [PATCH 17/34] chore(deps): update rust crate async-trait to v0.1.91 (#132) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 69 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2febccbf..7fccdb4b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -37,7 +37,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88b37d552feb6981a0109febda6b71fc723678cd065974c2d76279c19c407095" dependencies = [ "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -278,13 +278,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.89" +version = "0.1.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +checksum = "ae36dc4177970ef04fde5178d3e2429882def40e57a451f919c098f72baa6cec" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -520,7 +520,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -656,7 +656,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.116", ] [[package]] @@ -667,7 +667,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -711,7 +711,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn", + "syn 2.0.116", "unicode-xid", ] @@ -972,7 +972,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -1484,7 +1484,7 @@ checksum = "870d71c172fcf491c6b5fb4c04160619a2ee3e5a42a1402269c66bcbf1dd4deb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -1568,7 +1568,7 @@ checksum = "b0c03daabc1d9efd2d5aff2746199b4ed60f2cc24c321d6fcb2aa023169b0f13" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -1653,7 +1653,7 @@ checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -1774,7 +1774,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.116", ] [[package]] @@ -1896,7 +1896,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -2104,7 +2104,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn", + "syn 2.0.116", ] [[package]] @@ -2150,7 +2150,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -2161,7 +2161,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -2186,7 +2186,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -2227,7 +2227,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -2373,7 +2373,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -2403,6 +2403,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "tar" version = "0.4.46" @@ -2469,7 +2480,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -2643,7 +2654,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -2716,7 +2727,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad06847b7afb65c7866a36664b75c40b895e318cea4f71299f013fb22965329d" dependencies = [ "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -2998,7 +3009,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.116", "wasm-bindgen-shared", ] @@ -3090,7 +3101,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -3101,7 +3112,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] @@ -3258,7 +3269,7 @@ dependencies = [ "heck", "indexmap 2.13.0", "prettyplease", - "syn", + "syn 2.0.116", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -3274,7 +3285,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn", + "syn 2.0.116", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -3355,7 +3366,7 @@ checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.116", ] [[package]] From 92f05e2219575864cdfd089af78c691c8322883f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 03:15:42 +0000 Subject: [PATCH 18/34] chore(deps): update rust crate crossbeam-channel to v0.5.16 (#133) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7fccdb4b..f6b071b7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -594,9 +594,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.15" +version = "0.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e" dependencies = [ "crossbeam-utils", ] From b745b3a1901d284077d06bd6e2ffe3f927529abd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 03:28:03 +0000 Subject: [PATCH 19/34] chore(deps): update rust crate futures to v0.3.33 (#135) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f6b071b7..e8766636 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -892,9 +892,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +checksum = "a88cf1f829d945f548cf8fec32c61b1f202b6d93b45848602fc02af4b12ad218" dependencies = [ "futures-channel", "futures-core", @@ -907,9 +907,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae" dependencies = [ "futures-core", "futures-sink", @@ -930,15 +930,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" [[package]] name = "futures-executor" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458" dependencies = [ "futures-core", "futures-task", @@ -947,9 +947,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" +checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a" [[package]] name = "futures-lite" @@ -966,9 +966,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" dependencies = [ "proc-macro2", "quote", @@ -988,21 +988,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" dependencies = [ "futures-channel", "futures-core", From 8e8f19a0277715b08eafe5a09b9b46c24db67016 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 03:28:28 +0000 Subject: [PATCH 20/34] chore(deps): update rust crate libc to v0.2.189 (#136) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e8766636..b5d15f04 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1384,9 +1384,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libm" From ef5a56d921767916cea9715fa026e08aaa235cfa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 03:50:04 +0000 Subject: [PATCH 21/34] chore(deps): update rust crate serde to v1.0.229 (#137) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b5d15f04..37ff76e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2125,9 +2125,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -2135,22 +2135,22 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 3.0.3", ] [[package]] From 1d53941183f6b77e2a15bbfd87a8736d8e82e715 Mon Sep 17 00:00:00 2001 From: Marcus Ruddick Date: Wed, 22 Jul 2026 21:41:59 -1000 Subject: [PATCH 22/34] chore: fix issues with codecov (#140) * pin codecov version * fail when errors occur --- .circleci/config.yml | 13 ++---------- src/acp/connection/stdio/mod.rs | 36 ++++++++------------------------- 2 files changed, 10 insertions(+), 39 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ef802025..ccfa0016 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -186,21 +186,13 @@ commands: file: type: string description: Path to the coverage report file - allow-failure: - type: boolean - default: false - description: Whether to allow the upload to fail without failing the job steps: - run: name: Upload coverage to Codecov command: | - curl -Os https://cli.codecov.io/latest/linux/codecov + curl -Os https://cli.codecov.io/v10.2.1/linux/codecov chmod +x codecov - if [ "<< parameters.allow-failure >>" = "true" ]; then - ./codecov upload-coverage --file << parameters.file >> --disable-search || true - else - ./codecov upload-coverage --file << parameters.file >> --disable-search - fi + ./codecov upload-coverage --file << parameters.file >> --disable-search --fail-on-error restore-cargo-cache: steps: @@ -670,7 +662,6 @@ jobs: mv luacov.report.out lua.coverage.info - upload-coverage: file: lua.coverage.info - allow-failure: true lua_tests_0_11: environment: diff --git a/src/acp/connection/stdio/mod.rs b/src/acp/connection/stdio/mod.rs index 3d6f8298..90baa166 100644 --- a/src/acp/connection/stdio/mod.rs +++ b/src/acp/connection/stdio/mod.rs @@ -112,7 +112,7 @@ pub async fn connect( #[cfg(test)] mod tests { use super::*; - use futures::io::Cursor; + use futures::io::{BufReader, Cursor}; use pretty_assertions::assert_eq; use std::io::ErrorKind; @@ -125,22 +125,21 @@ mod tests { smol::block_on(executor.run(f())); } - struct FailOnce { + struct FailOnceRead { first: bool, } - impl futures::AsyncRead for FailOnce { + impl futures::AsyncRead for FailOnceRead { fn poll_read( - self: std::pin::Pin<&mut Self>, + mut self: std::pin::Pin<&mut Self>, _cx: &mut std::task::Context<'_>, buf: &mut [u8], ) -> std::task::Poll> { - let this = self.get_mut(); - if this.first { - this.first = false; + if self.first { + self.first = false; let data = b"ok\n"; let len = std::cmp::min(buf.len(), data.len()); - buf[..len].copy_from_slice(&data[..len]); + buf[..len].copy_from_slice(data); std::task::Poll::Ready(Ok(len)) } else { std::task::Poll::Ready(Err(std::io::Error::new( @@ -151,25 +150,6 @@ mod tests { } } - impl futures::AsyncBufRead for FailOnce { - fn poll_fill_buf( - mut self: std::pin::Pin<&mut Self>, - _cx: &mut std::task::Context<'_>, - ) -> std::task::Poll> { - if self.first { - self.first = false; - std::task::Poll::Ready(Ok(b"ok\n")) - } else { - std::task::Poll::Ready(Err(std::io::Error::new( - ErrorKind::Other, - "mock read error", - ))) - } - } - - fn consume(self: std::pin::Pin<&mut Self>, _amt: usize) {} - } - #[test] fn stderr_lines_reads_all_lines() { run_test(|| async { @@ -205,7 +185,7 @@ mod tests { #[test] fn stderr_lines_breaks_on_read_error() { run_test(|| async { - let reader = FailOnce { first: true }; + let reader = BufReader::new(FailOnceRead { first: true }); let mut writer = Vec::new(); read_stderr_lines(reader, &mut writer, "test-agent").await; let output = String::from_utf8(writer).unwrap(); From ac3978504aaa1cd05f77a8032318f0a2bfd9951e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 08:18:51 +0000 Subject: [PATCH 23/34] chore(deps): update rust crate serde_json to v1.0.151 (#141) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 37ff76e3..b629c7e7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2166,9 +2166,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.150" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ "indexmap 2.13.0", "itoa", From b0cb5f21829b21425f0a83004b67421c16627eed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 08:19:18 +0000 Subject: [PATCH 24/34] chore(deps): update cimg/rust docker tag to v1.97.1 (#142) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ccfa0016..a1ec717b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -18,14 +18,14 @@ executors: xcode: 26.3.0 rust-linux-x86_64: docker: - - image: cimg/rust:1.96.1 + - image: cimg/rust:1.97.1 resource_class: large environment: PIPELINE_NUM: << pipeline.number >> TZ: "America/Los_Angeles" rust-linux-aarch64: docker: - - image: cimg/rust:1.96.1 + - image: cimg/rust:1.97.1 resource_class: arm.medium environment: PIPELINE_NUM: << pipeline.number >> From fb6d76a5d52e324d699fdc5a62e6738b774f9a5c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 10:02:32 +0000 Subject: [PATCH 25/34] chore(deps): update rust crate proptest to v1.11.0 (#144) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b629c7e7..6957a3c0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -768,7 +768,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -1788,9 +1788,9 @@ dependencies = [ [[package]] name = "proptest" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37566cb3fdacef14c0737f9546df7cfeadbfbc9fef10991038bf5015d0c80532" +checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" dependencies = [ "bit-set", "bit-vec", @@ -1987,7 +1987,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -2435,7 +2435,7 @@ dependencies = [ "getrandom 0.4.1", "once_cell", "rustix", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -3077,7 +3077,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] From 2969d27fd4705cec2350572c8cf95debc575537a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 15:57:22 +0000 Subject: [PATCH 26/34] chore(deps): update rust crate tempfile to v3.27.0 (#145) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6957a3c0..fd5a972d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -768,7 +768,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -1396,9 +1396,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "lock_api" @@ -1979,15 +1979,15 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags 2.11.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2427,15 +2427,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.25.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.1", + "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3077,7 +3077,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] From 317b7275982203ae572efc0012066d539ec1085f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 16:37:55 +0000 Subject: [PATCH 27/34] chore(deps): update rust crate agent-client-protocol to v1.3.0 (#143) * chore(deps): update rust crate agent-client-protocol to v1.3.0 * fix mismatched types * fix e2e tests --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Ruddickmg --- Cargo.lock | 22 ++++++++++++---------- src/acp/connection/connect.rs | 8 +++++++- src/acp/handler/response.rs | 3 +-- src/nvim/api/configure_model.rs | 4 +++- src/nvim/api/set_mode.rs | 4 +++- src/nvim/api/set_model.rs | 2 +- src/nvim/api/set_thought_level.rs | 2 +- 7 files changed, 28 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fd5a972d..962978a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,17 +10,19 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "agent-client-protocol" -version = "1.0.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16302d16c7531355db16593d99c38c8297db0c4653aa7dd80c3556bb17f4cd8c" +checksum = "1d386d6a58f4dbe0ebfa98e915caa54005dabdefd419de3d4678b28cd5752444" dependencies = [ "agent-client-protocol-derive", "agent-client-protocol-schema", + "async-io", "async-process", "blocking", "futures", "futures-concurrency", "rustc-hash", + "rustix", "schemars 1.2.1", "serde", "serde_json", @@ -32,9 +34,9 @@ dependencies = [ [[package]] name = "agent-client-protocol-derive" -version = "1.0.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b37d552feb6981a0109febda6b71fc723678cd065974c2d76279c19c407095" +checksum = "97b94934d118a69e921d14e94d4af5b3076563318c52662c89a0ecb3f139e1da" dependencies = [ "quote", "syn 2.0.116", @@ -42,9 +44,9 @@ dependencies = [ [[package]] name = "agent-client-protocol-schema" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac542aba230234b1591ace7286a47c0514fe3efc3037d43296bde31ba7ee5728" +checksum = "06679e1542356341f4550ccfb16338b64f37f6af70de2105446ef6fbb078234c" dependencies = [ "anyhow", "derive_more", @@ -768,7 +770,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -1987,7 +1989,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -2435,7 +2437,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -3077,7 +3079,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] diff --git a/src/acp/connection/connect.rs b/src/acp/connection/connect.rs index 8067ffd7..37104415 100644 --- a/src/acp/connection/connect.rs +++ b/src/acp/connection/connect.rs @@ -37,7 +37,13 @@ async fn dispatch( } UserRequest::SetConfigOption(request) => { let session_id = request.session_id.to_string(); - let option = request.value.to_string(); + let option = match request.value { + acp::schema::v1::SessionConfigOptionValue::ValueId { ref value } => { + value.to_string() + } + acp::schema::v1::SessionConfigOptionValue::Boolean { value } => value.to_string(), + _ => String::new(), + }; let response = cx.send_request(request).block_task().await?; client .config_option_set(&session_id, &option, response) diff --git a/src/acp/handler/response.rs b/src/acp/handler/response.rs index 5f42abf8..a42d7003 100644 --- a/src/acp/handler/response.rs +++ b/src/acp/handler/response.rs @@ -29,9 +29,8 @@ impl Handler { ) -> Result<(), Error> { self.set_agent_info(agent.clone(), info.clone()).await; - // TODO: figure out a better way to deal with the deserialization issue with the protocol version let value = serde_json::json!({ - "protocolVersion": info.protocol_version.to_string(), + "protocolVersion": info.protocol_version.as_u16(), "agentCapabilities": { "loadSession": info.agent_capabilities.load_session, "promptCapabilities": { diff --git a/src/nvim/api/configure_model.rs b/src/nvim/api/configure_model.rs index 6a45d8ea..6e9ab5b3 100644 --- a/src/nvim/api/configure_model.rs +++ b/src/nvim/api/configure_model.rs @@ -107,7 +107,9 @@ impl Api { agent_client_protocol::schema::v1::SetSessionConfigOptionRequest::new( session_id, config.id, - config.value, + agent_client_protocol::schema::v1::SessionConfigOptionValue::value_id( + config.value, + ), ), ) .await?; diff --git a/src/nvim/api/set_mode.rs b/src/nvim/api/set_mode.rs index 2a677470..7eab9c58 100644 --- a/src/nvim/api/set_mode.rs +++ b/src/nvim/api/set_mode.rs @@ -43,7 +43,9 @@ impl Api { agent_client_protocol::schema::v1::SetSessionConfigOptionRequest::new( session_id, config_type.clone(), - mode_id, + agent_client_protocol::schema::v1::SessionConfigOptionValue::value_id( + mode_id, + ), ), ) .await?; diff --git a/src/nvim/api/set_model.rs b/src/nvim/api/set_model.rs index 57d43ced..8839a828 100644 --- a/src/nvim/api/set_model.rs +++ b/src/nvim/api/set_model.rs @@ -21,7 +21,7 @@ impl Api { .set_config_option(SetSessionConfigOptionRequest::new( session_id, "model".to_string(), - model_id, + agent_client_protocol::schema::v1::SessionConfigOptionValue::value_id(model_id), )) .await?; diff --git a/src/nvim/api/set_thought_level.rs b/src/nvim/api/set_thought_level.rs index 1d9db097..15a499ab 100644 --- a/src/nvim/api/set_thought_level.rs +++ b/src/nvim/api/set_thought_level.rs @@ -33,7 +33,7 @@ impl Api { agent_client_protocol::schema::v1::SetSessionConfigOptionRequest::new( session_id, "thought_level".to_string(), - level, + agent_client_protocol::schema::v1::SessionConfigOptionValue::value_id(level), ), ) .await?; From 1053c85e6c4b6b7452f3ed77fa4d4eb20229d6cf Mon Sep 17 00:00:00 2001 From: Marcus Ruddick Date: Thu, 23 Jul 2026 06:53:13 -1000 Subject: [PATCH 28/34] chore: remove git installation from nix publish script (#147) --- .circleci/publish-nix.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/.circleci/publish-nix.sh b/.circleci/publish-nix.sh index d3ba7357..879d913b 100755 --- a/.circleci/publish-nix.sh +++ b/.circleci/publish-nix.sh @@ -9,9 +9,6 @@ fi echo "Publishing nix package for v${VERSION}" -# git not included in nixos/nix image -nix-env -iA nixpkgs.git - # Update hashes nix run nixpkgs#nix-update -- hermes-nvim --flake --version v"${VERSION}" From 3ae1156de262765c4f584d4dfcac0843c13e32e7 Mon Sep 17 00:00:00 2001 From: Marcus Ruddick Date: Sat, 25 Jul 2026 16:33:56 -1000 Subject: [PATCH 29/34] feat: add hash validation for auto-downloads * feat: generate hashes for nix * feat: add hash validation for auto-downloads * add checksums to assets --- .circleci/publish-nix.sh | 18 ---------- nix/packaging/default.nix | 72 --------------------------------------- 2 files changed, 90 deletions(-) delete mode 100755 .circleci/publish-nix.sh delete mode 100644 nix/packaging/default.nix diff --git a/.circleci/publish-nix.sh b/.circleci/publish-nix.sh deleted file mode 100755 index 879d913b..00000000 --- a/.circleci/publish-nix.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -set -e - -VERSION=$(cat target/release/version.txt) -if [ -z "$VERSION" ]; then - echo "No version to publish" - exit 0 -fi - -echo "Publishing nix package for v${VERSION}" - -# Update hashes -nix run nixpkgs#nix-update -- hermes-nvim --flake --version v"${VERSION}" - -# Commit with [skip ci] -git add nix/packaging/default.nix -git commit -m "nix: update hermes-nvim to v${VERSION} [skip ci]" -git push origin HEAD diff --git a/nix/packaging/default.nix b/nix/packaging/default.nix deleted file mode 100644 index 782554e3..00000000 --- a/nix/packaging/default.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ - lib, - stdenv, - fetchFromGitHub, - fetchurl, - vimUtils, - nix-update-script, -}: - -let - version = "0.10.1"; - - # Map nix kernel name to hermes os name - os = { - "linux" = "linux"; - "darwin" = "macos"; - }.${stdenv.hostPlatform.kernel.name}; - - arch = stdenv.hostPlatform.qemuArch or stdenv.hostPlatform.arch; - arch' = { - "x86_64" = "x86_64"; - "aarch64" = "aarch64"; - }.${arch} or arch; - - ext = stdenv.hostPlatform.extensions.sharedLibrary; - binaryName = "libhermes-${os}-${arch'}.${ext}"; - - hermes-binary = fetchurl { - url = "https://github.com/Ruddickmg/hermes.nvim/releases/download/v${version}/${binaryName}"; - sha256 = { - "x86_64-linux" = "sha256-egBQrfX9/cn3NfuyWJ77BOEE7xlJEBE843cPa5xSwRg="; - "aarch64-linux" = "sha256-GvsduPnd5kHJqP6Q8m4KI6223ImoCdGzFjvbf1uCMzo="; - "x86_64-darwin" = "sha256-mnb2ramM2Ih0/ZDM6U7uGhOwkhK/LTIJ3ZpLZ+TOR/o="; - "aarch64-darwin"= "sha256-tm1d5Ir9LGVExA6qEa+CUtWbMACX4tr5XS4C8JtEA3g="; - }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); - }; -in -vimUtils.buildVimPlugin { - pname = "hermes-nvim"; - inherit version; - - src = fetchFromGitHub { - owner = "Ruddickmg"; - repo = "hermes.nvim"; - tag = "v${version}"; - hash = "sha256-cWJUr6ou6uZ+IErCoVLhhyZTefvlq4+XmyJVo/IJpjA="; - }; - - # Skip require() check for the native module — the Rust shared library - # is not available in the build sandbox, so require("hermes") would fail. - nvimSkipModules = [ "hermes" ]; - - # Place the pre-built binary where binary.lua's get_rock_binary_path() looks: - # /lib/libhermes--. - postInstall = '' - mkdir -p $out/lib - cp ${hermes-binary} $out/lib/${binaryName} - ''; - - passthru = { - updateScript = nix-update-script { - attrPath = "vimPlugins.hermes-nvim"; - }; - inherit hermes-binary; - }; - - meta = { - description = "ACP (Agent Client Protocol) client for Neovim"; - homepage = "https://github.com/Ruddickmg/hermes.nvim"; - license = lib.licenses.mit; - }; -} From fe19b697562be0ec58bec5600e35eb706c93b540 Mon Sep 17 00:00:00 2001 From: Marcus Ruddick Date: Sun, 26 Jul 2026 07:26:56 -1000 Subject: [PATCH 30/34] feat: add md5 hash for luarocks (#160) * chore: resolve warnings about nix command * feat: add md5 hash for luarocks * use github token with write permissions --- .circleci/config.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index a4350ca8..2a255e73 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -280,6 +280,8 @@ jobs: update-hashes: docker: - image: nixos/nix + environment: + GITHUB_TOKEN: ${GITHUB_WRITE_TOKEN} steps: - checkout - attach_workspace: From 279e31dc948cd34a593439b227e0c350013cbb3a Mon Sep 17 00:00:00 2001 From: Marcus Ruddick Date: Sun, 26 Jul 2026 08:58:54 -1000 Subject: [PATCH 31/34] fix: correct incorrect variable usage (#163) * use correct variable * update AGENTS.md --- .circleci/config.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2a255e73..a4350ca8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -280,8 +280,6 @@ jobs: update-hashes: docker: - image: nixos/nix - environment: - GITHUB_TOKEN: ${GITHUB_WRITE_TOKEN} steps: - checkout - attach_workspace: From 791b0dea2c09a0458ad919153f04035bfdea0e5f Mon Sep 17 00:00:00 2001 From: Marcus Ruddick Date: Sun, 26 Jul 2026 07:26:56 -1000 Subject: [PATCH 32/34] feat: add md5 hash for luarocks (#160) * chore: resolve warnings about nix command * feat: add md5 hash for luarocks * use github token with write permissions --- .circleci/config.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index a4350ca8..2a255e73 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -280,6 +280,8 @@ jobs: update-hashes: docker: - image: nixos/nix + environment: + GITHUB_TOKEN: ${GITHUB_WRITE_TOKEN} steps: - checkout - attach_workspace: From d0d58359c4b1e4fecd69e933e334fb19de1269ff Mon Sep 17 00:00:00 2001 From: Marcus Ruddick Date: Sun, 26 Jul 2026 08:58:54 -1000 Subject: [PATCH 33/34] fix: correct incorrect variable usage (#163) * use correct variable * update AGENTS.md --- .circleci/config.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2a255e73..a4350ca8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -280,8 +280,6 @@ jobs: update-hashes: docker: - image: nixos/nix - environment: - GITHUB_TOKEN: ${GITHUB_WRITE_TOKEN} steps: - checkout - attach_workspace: From 1e5dbacf4233ce7f02af974ee801ddbbe3abeae7 Mon Sep 17 00:00:00 2001 From: Ruddickmg Date: Sun, 26 Jul 2026 19:25:07 -1000 Subject: [PATCH 34/34] revert to previous state, skip md5 --- .circleci/publish-luarocks.sh | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/.circleci/publish-luarocks.sh b/.circleci/publish-luarocks.sh index f19bb002..92f742f1 100755 --- a/.circleci/publish-luarocks.sh +++ b/.circleci/publish-luarocks.sh @@ -21,19 +21,12 @@ luarocks install dkjson # The CLI `luarocks upload` packs and uploads a `.src.rock` automatically # alongside the rockspec. luarocks.org accepts these via its standard # upload endpoint. -SOURCE_URL="https://github.com/Ruddickmg/hermes.nvim/archive/refs/tags/v${VERSION}.tar.gz" -SOURCE_TARBALL=$(mktemp) -curl -fsSL "$SOURCE_URL" -o "$SOURCE_TARBALL" -SOURCE_MD5=$(md5sum "$SOURCE_TARBALL" | awk '{print $1}') -rm -f "$SOURCE_TARBALL" -SED_EXPR="s/scm-1/${VERSION}-1/g; /branch = \"main\"/d; s|git+https://github.com/Ruddickmg/hermes.nvim.git|${SOURCE_URL}|" +SED_EXPR="s/scm-1/${VERSION}-1/g; /branch = \"main\"/d; s|git+https://github.com/Ruddickmg/hermes.nvim.git|https://github.com/Ruddickmg/hermes.nvim/archive/refs/tags/v${VERSION}.tar.gz|" SOURCE_ROCKSPEC="/tmp/hermes.nvim-${VERSION}-1.rockspec" sed "$SED_EXPR" hermes.nvim-scm-1.rockspec > "$SOURCE_ROCKSPEC" # The GitHub-generated archive extracts into "hermes.nvim-${VERSION}" (no "v"), # so we must tell LuaRocks the expected source directory. -sed -i "/url = \"https:.*archive.*tar\\.gz\"/a\\ - md5 = \"${SOURCE_MD5}\",\\ - dir = \"hermes.nvim-${VERSION}\"," "$SOURCE_ROCKSPEC" +sed -i "/url = \"https:.*archive.*tar\.gz\"/a\\ dir = \"hermes.nvim-${VERSION}\"," "$SOURCE_ROCKSPEC" luarocks upload "$SOURCE_ROCKSPEC" --api-key="${LUAROCKS_API_KEY}" echo "Source rock published: hermes.nvim-${VERSION}-1" @@ -89,8 +82,7 @@ rockspec_format = "3.0" package = "hermes.nvim" version = "${VERSION}-1" source = { - url = "${SOURCE_URL}", - md5 = "${SOURCE_MD5}", + url = "https://github.com/Ruddickmg/hermes.nvim/archive/refs/tags/v${VERSION}.tar.gz", dir = "hermes.nvim-${VERSION}" } description = {