From 2bcde4a94dd6af69d18042367d7e4fd20e2e8028 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 01:58:25 +0000 Subject: [PATCH 01/13] chore(deps): bump proptest from 1.10.0 to 1.11.0 Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.10.0 to 1.11.0. - [Release notes](https://github.com/proptest-rs/proptest/releases) - [Changelog](https://github.com/proptest-rs/proptest/blob/main/CHANGELOG.md) - [Commits](https://github.com/proptest-rs/proptest/compare/v1.10.0...v1.11.0) --- updated-dependencies: - dependency-name: proptest dependency-version: 1.11.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 870459d7d..18730322a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1771,14 +1771,14 @@ dependencies = [ [[package]] name = "goud-engine" -version = "0.0.838" +version = "0.0.839" dependencies = [ "goud-engine-core", ] [[package]] name = "goud-engine-core" -version = "0.0.838" +version = "0.0.839" dependencies = [ "bincode", "bindgen", @@ -1834,7 +1834,7 @@ dependencies = [ [[package]] name = "goud-engine-node" -version = "0.0.838" +version = "0.0.839" dependencies = [ "goud-engine-core", "napi", @@ -1844,7 +1844,7 @@ dependencies = [ [[package]] name = "goud_engine_macros" -version = "0.0.838" +version = "0.0.839" dependencies = [ "proc-macro2", "quote", @@ -3620,9 +3620,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 0.8.0", From 25f0cb8b00d142c9d35b96b430fbedae9367a0ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 01:58:26 +0000 Subject: [PATCH 02/13] chore(deps): bump rmcp from 1.2.0 to 1.3.0 Bumps [rmcp](https://github.com/modelcontextprotocol/rust-sdk) from 1.2.0 to 1.3.0. - [Release notes](https://github.com/modelcontextprotocol/rust-sdk/releases) - [Changelog](https://github.com/modelcontextprotocol/rust-sdk/blob/main/release-plz.toml) - [Commits](https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v1.2.0...rmcp-v1.3.0) --- updated-dependencies: - dependency-name: rmcp dependency-version: 1.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 16 ++++++++-------- tools/goudengine-mcp/Cargo.toml | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 870459d7d..62a2eaca2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1771,14 +1771,14 @@ dependencies = [ [[package]] name = "goud-engine" -version = "0.0.838" +version = "0.0.839" dependencies = [ "goud-engine-core", ] [[package]] name = "goud-engine-core" -version = "0.0.838" +version = "0.0.839" dependencies = [ "bincode", "bindgen", @@ -1834,7 +1834,7 @@ dependencies = [ [[package]] name = "goud-engine-node" -version = "0.0.838" +version = "0.0.839" dependencies = [ "goud-engine-core", "napi", @@ -1844,7 +1844,7 @@ dependencies = [ [[package]] name = "goud_engine_macros" -version = "0.0.838" +version = "0.0.839" dependencies = [ "proc-macro2", "quote", @@ -4017,9 +4017,9 @@ checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" [[package]] name = "rmcp" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6b9d2f0efe2258b23767f1f9e0054cfbcac9c2d6f81a031214143096d7864f" +checksum = "2231b2c085b371c01bc90c0e6c1cab8834711b6394533375bdbf870b0166d419" dependencies = [ "async-trait", "base64 0.22.1", @@ -4039,9 +4039,9 @@ dependencies = [ [[package]] name = "rmcp-macros" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab9d95d7ed26ad8306352b0d5f05b593222b272790564589790d210aa15caa9e" +checksum = "36ea0e100fadf81be85d7ff70f86cd805c7572601d4ab2946207f36540854b43" dependencies = [ "darling", "proc-macro2", diff --git a/tools/goudengine-mcp/Cargo.toml b/tools/goudengine-mcp/Cargo.toml index 84678b940..495f4983e 100644 --- a/tools/goudengine-mcp/Cargo.toml +++ b/tools/goudengine-mcp/Cargo.toml @@ -10,7 +10,7 @@ anyhow = "1" base64 = "0.22" goud_engine = { path = "../../goud_engine", package = "goud-engine-core" } interprocess = { git = "https://github.com/kotauskas/interprocess", rev = "41facdd4e7517cae4b99a44b24671603bc65041e" } -rmcp = { version = "1.2.0", features = ["server", "macros", "transport-io"] } +rmcp = { version = "1.3.0", features = ["server", "macros", "transport-io"] } schemars = "1.2.1" serde = { version = "1", features = ["derive"] } serde_json = "1" From d596d226d6dba14d061d916b7abd0c40bef74647 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 02:01:17 +0000 Subject: [PATCH 03/13] chore(deps): bump the rust-patch group across 1 directory with 9 updates --- updated-dependencies: - dependency-name: cc dependency-version: 1.2.58 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-patch - dependency-name: env_logger dependency-version: 0.11.10 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-patch - dependency-name: wasm-bindgen-futures dependency-version: 0.4.67 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-patch - dependency-name: js-sys dependency-version: 0.3.94 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-patch - dependency-name: web-sys dependency-version: 0.3.94 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-patch - dependency-name: napi dependency-version: 3.8.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-patch - dependency-name: napi-derive dependency-version: 3.5.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-patch - dependency-name: goud-engine-core dependency-version: 0.0.839 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-patch - dependency-name: goud-engine dependency-version: 0.0.839 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 96 ++++++++++++++++++++++++++---------------- goud_engine/Cargo.toml | 2 +- 2 files changed, 60 insertions(+), 38 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 870459d7d..48358f560 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -158,7 +158,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", - "anstyle-parse", + "anstyle-parse 0.2.7", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse 1.0.0", "anstyle-query", "anstyle-wincon", "colorchoice", @@ -181,6 +196,15 @@ dependencies = [ "utf8parse", ] +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + [[package]] name = "anstyle-query" version = "1.1.5" @@ -620,9 +644,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.57" +version = "1.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" +checksum = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1" dependencies = [ "find-msvc-tools", "jobserver", @@ -745,7 +769,7 @@ version = "4.5.60" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" dependencies = [ - "anstream", + "anstream 0.6.21", "anstyle", "clap_lex", "strsim", @@ -1077,9 +1101,9 @@ dependencies = [ [[package]] name = "ctor" -version = "0.6.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "424e0138278faeb2b401f174ad17e715c829512d74f3d1e81eb43365c2e0590e" +checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98" dependencies = [ "ctor-proc-macro", "dtor", @@ -1241,9 +1265,9 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "dtor" -version = "0.1.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "404d02eeb088a82cfd873006cb713fe411306c7d182c344905e101fb1167d301" +checksum = "f1057d6c64987086ff8ed0fd3fbf377a6b7d205cc7715868cd401705f715cbe4" dependencies = [ "dtor-proc-macro", ] @@ -1296,11 +1320,11 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.9" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d" +checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" dependencies = [ - "anstream", + "anstream 1.0.0", "anstyle", "env_filter", "jiff", @@ -1771,14 +1795,14 @@ dependencies = [ [[package]] name = "goud-engine" -version = "0.0.838" +version = "0.0.839" dependencies = [ "goud-engine-core", ] [[package]] name = "goud-engine-core" -version = "0.0.838" +version = "0.0.839" dependencies = [ "bincode", "bindgen", @@ -1834,7 +1858,7 @@ dependencies = [ [[package]] name = "goud-engine-node" -version = "0.0.838" +version = "0.0.839" dependencies = [ "goud-engine-core", "napi", @@ -1844,7 +1868,7 @@ dependencies = [ [[package]] name = "goud_engine_macros" -version = "0.0.838" +version = "0.0.839" dependencies = [ "proc-macro2", "quote", @@ -2294,10 +2318,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.91" +version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9" dependencies = [ + "cfg-if", + "futures-util", "once_cell", "wasm-bindgen", ] @@ -2711,9 +2737,9 @@ dependencies = [ [[package]] name = "napi" -version = "3.8.3" +version = "3.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6944d0bf100571cd6e1a98a316cdca262deb6fccf8d93f5ae1502ca3fc88bd3" +checksum = "fb7848c221fb7bb789e02f01875287ebb1e078b92a6566a34de01ef8806e7c2b" dependencies = [ "bitflags 2.11.0", "ctor", @@ -2732,9 +2758,9 @@ checksum = "d376940fd5b723c6893cd1ee3f33abbfd86acb1cd1ec079f3ab04a2a3bc4d3b1" [[package]] name = "napi-derive" -version = "3.5.2" +version = "3.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c914b5e420182bfb73504e0607592cdb8e2e21437d450883077669fb72a114d" +checksum = "60867ff9a6f76e82350e0c3420cb0736f5866091b61d7d8a024baa54b0ec17dd" dependencies = [ "convert_case", "ctor", @@ -5295,9 +5321,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0" dependencies = [ "cfg-if", "once_cell", @@ -5308,23 +5334,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.64" +version = "0.4.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" +checksum = "03623de6905b7206edd0a75f69f747f134b7f0a2323392d664448bf2d3c5d87e" dependencies = [ - "cfg-if", - "futures-util", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5332,9 +5354,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2" dependencies = [ "bumpalo", "proc-macro2", @@ -5345,9 +5367,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b" dependencies = [ "unicode-ident", ] @@ -5497,9 +5519,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.91" +version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" +checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/goud_engine/Cargo.toml b/goud_engine/Cargo.toml index 11f65ab46..82d8aebe5 100644 --- a/goud_engine/Cargo.toml +++ b/goud_engine/Cargo.toml @@ -33,7 +33,7 @@ cc = { version = "1.2", optional = true } bindgen = { version = "0.64.0", optional = true } cgmath = "0.18.0" crossbeam-channel = "0.5" -env_logger = { version = "0.11.6", optional = true } +env_logger = { version = "0.11.10", optional = true } gl = { version = "0.14.0", optional = true } glfw = { version = "0.59.0", optional = true } log = "0.4.17" From 2fdf0f808745e0439a4c8e3cdd8516ec7d723593 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 15:32:14 +0000 Subject: [PATCH 04/13] ci(deps): bump DavidAnson/markdownlint-cli2-action from 22 to 23 Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 22 to 23. - [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases) - [Commits](https://github.com/davidanson/markdownlint-cli2-action/compare/v22...v23) --- updated-dependencies: - dependency-name: DavidAnson/markdownlint-cli2-action dependency-version: '23' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/pr-validation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index fd0560a3b..f20e44fa8 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -202,7 +202,7 @@ jobs: - name: Lint changed Markdown files if: steps.changed.outputs.files != '' - uses: DavidAnson/markdownlint-cli2-action@v22 + uses: DavidAnson/markdownlint-cli2-action@v23 with: globs: ${{ steps.changed.outputs.files }} From 0a14a00c08fac338294fdf00c7b2360ff6b8ba7f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 15:32:17 +0000 Subject: [PATCH 05/13] ci(deps): bump codecov/codecov-action from 5 to 6 Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5 to 6. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v5...v6) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a417b305..f84080b5a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -228,7 +228,7 @@ jobs: - name: Upload coverage to Codecov if: matrix.rust == 'stable' && matrix.os == 'ubuntu-latest' && github.event_name == 'merge_group' - uses: codecov/codecov-action@v5 + uses: codecov/codecov-action@v6 with: file: ./coverage-report/cobertura.xml flags: rust From eff6cc9dd530490ff78dd2d65ee4a6512b413d2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 15:32:21 +0000 Subject: [PATCH 06/13] ci(deps): bump android-actions/setup-android from 3 to 4 Bumps [android-actions/setup-android](https://github.com/android-actions/setup-android) from 3 to 4. - [Release notes](https://github.com/android-actions/setup-android/releases) - [Commits](https://github.com/android-actions/setup-android/compare/v3...v4) --- updated-dependencies: - dependency-name: android-actions/setup-android dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a417b305..2b5f9399a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1127,7 +1127,7 @@ jobs: java-version: '17' - name: Set up Android SDK - uses: android-actions/setup-android@v3 + uses: android-actions/setup-android@v4 - name: Install Android build tooling run: sdkmanager "platforms;android-34" "build-tools;34.0.0" "ndk;27.2.12479018" From 4d1f9c4c4d6f64346b52135ef427cf466b6f25a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 15:32:24 +0000 Subject: [PATCH 07/13] ci(deps): bump actions/deploy-pages from 4 to 5 Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 4 to 5. - [Release notes](https://github.com/actions/deploy-pages/releases) - [Commits](https://github.com/actions/deploy-pages/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/deploy-pages dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index aeb876fe3..c103c64a1 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -184,4 +184,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v5 From 761fe895edf88d800e7c2005e1e627f6a7cbf7d5 Mon Sep 17 00:00:00 2001 From: Aram Hammoudeh Date: Thu, 2 Apr 2026 10:37:42 -0600 Subject: [PATCH 08/13] fix(ci): accept scoped conventional commits in PR title validation The title check rejected dependabot PRs using chore(deps): format. Now uses a regex that accepts optional scopes like type(scope):. Also skips posting comment on bot PRs since they can't edit titles. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/pr-validation.yml | 66 ++++++++++++++--------------- 1 file changed, 31 insertions(+), 35 deletions(-) diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index f20e44fa8..7aea9fdca 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -19,41 +19,37 @@ jobs: with: script: | const title = context.payload.pull_request.title; - const validPrefixes = [ - 'feat:', 'fix:', 'docs:', 'style:', 'refactor:', - 'perf:', 'test:', 'chore:', 'ci:', 'build:' - ]; - - const hasValidPrefix = validPrefixes.some(prefix => - title.toLowerCase().startsWith(prefix) - ); - - if (!hasValidPrefix) { - core.setFailed(`PR title must start with one of: ${validPrefixes.join(', ')}`); - - // Add comment to PR - await github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body: `## ❌ Invalid PR Title - - Your PR title must start with one of the following prefixes: - - \`feat:\` - A new feature - - \`fix:\` - A bug fix - - \`docs:\` - Documentation changes - - \`style:\` - Code style changes (formatting, missing semi-colons, etc) - - \`refactor:\` - Code refactoring - - \`perf:\` - Performance improvements - - \`test:\` - Adding or updating tests - - \`chore:\` - Maintenance tasks - - \`ci:\` - CI/CD changes - - \`build:\` - Build system changes - - Example: \`feat: add new sprite collision detection\` - - Please update your PR title and try again.` - }); + const pr = context.payload.pull_request; + + // Conventional commit: type(optional-scope): description + const pattern = /^(feat|fix|docs|style|refactor|perf|test|chore|ci|build)(\(.+\))?:/; + const isValid = pattern.test(title.toLowerCase()); + + if (!isValid) { + core.setFailed(`PR title must follow conventional commits: type(scope): description`); + + // Don't comment on bot PRs — they can't fix their titles + const isBot = pr.user.type === 'Bot'; + if (!isBot) { + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + body: `## Invalid PR Title + + Your PR title must follow conventional commits format: + \`type(optional-scope): description\` + + Valid types: \`feat\`, \`fix\`, \`docs\`, \`style\`, \`refactor\`, \`perf\`, \`test\`, \`chore\`, \`ci\`, \`build\` + + Examples: + - \`feat: add new sprite collision detection\` + - \`fix(renderer): correct z-ordering for 2D sprites\` + - \`chore(deps): bump serde from 1.0 to 1.1\` + + Please update your PR title and try again.` + }); + } } validate-release-config: From 62412e384cc9503f0d4e67c37d7129a68d957ee8 Mon Sep 17 00:00:00 2001 From: Aram Hammoudeh Date: Thu, 2 Apr 2026 11:06:27 -0600 Subject: [PATCH 09/13] =?UTF-8?q?chore(deps):=20upgrade=20wgpu=2028?= =?UTF-8?q?=E2=86=9229,=20naga=2028=E2=86=9229,=20jni=200.21=E2=86=920.22?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit wgpu 29: Surface::get_current_texture() now returns CurrentSurfaceTexture enum instead of Result. Updated both native (frame.rs) and wasm call sites to match on the new variants. Also adapted pipeline.rs for Option-wrapped depth stencil fields and bind_group_layouts, and init.rs for u64 limit type. naga 29: No breaking public API changes for the GLSL/WGSL pipeline used here. jni 0.22: Drop-in compatible; deprecated methods still functional. Co-Authored-By: Claude Opus 4.6 (1M context) --- Cargo.lock | 293 +++++++++++------- goud_engine/Cargo.toml | 6 +- .../graphics/backend/wgpu_backend/frame.rs | 21 +- .../graphics/backend/wgpu_backend/init.rs | 2 +- .../graphics/backend/wgpu_backend/pipeline.rs | 18 +- goud_engine/src/wasm/mod.rs | 8 +- 6 files changed, 225 insertions(+), 123 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index acb801aa3..96869f9b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -119,8 +119,8 @@ dependencies = [ "bitflags 2.11.0", "cc", "cesu8", - "jni", - "jni-sys", + "jni 0.21.1", + "jni-sys 0.3.0", "libc", "log", "ndk", @@ -459,6 +459,15 @@ dependencies = [ "bit-vec 0.8.0", ] +[[package]] +name = "bit-set" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ddef2995421ab6a5c779542c81ee77c115206f4ad9d5a8e05f4ff49716a3dd" +dependencies = [ + "bit-vec 0.9.1", +] + [[package]] name = "bit-vec" version = "0.7.0" @@ -471,6 +480,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bit-vec" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71798fca2c1fe1086445a7258a4bc81e6e49dcd24c8d0dd9a1e57395b603f51" + [[package]] name = "bit_field" version = "0.10.3" @@ -498,12 +513,6 @@ dependencies = [ "core2", ] -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - [[package]] name = "block-buffer" version = "0.10.4" @@ -792,9 +801,9 @@ dependencies = [ [[package]] name = "codespan-reporting" -version = "0.12.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" +checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" dependencies = [ "serde", "termcolor", @@ -875,7 +884,7 @@ checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", "core-foundation 0.9.4", - "core-graphics-types 0.1.3", + "core-graphics-types", "foreign-types", "libc", ] @@ -891,17 +900,6 @@ dependencies = [ "libc", ] -[[package]] -name = "core-graphics-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" -dependencies = [ - "bitflags 2.11.0", - "core-foundation 0.10.1", - "libc", -] - [[package]] name = "core2" version = "0.4.0" @@ -943,7 +941,7 @@ dependencies = [ "alsa", "coreaudio-rs", "dasp_sample", - "jni", + "jni 0.21.1", "js-sys", "libc", "mach2", @@ -1735,9 +1733,9 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "glow" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" +checksum = "29038e1c483364cc6bb3cf78feee1816002e127c331a1eec55a4d202b9e1adb5" dependencies = [ "js-sys", "slotmap", @@ -1824,7 +1822,7 @@ dependencies = [ "husky-rs", "image", "interprocess", - "jni", + "jni 0.22.4", "js-sys", "log", "mlua", @@ -2291,21 +2289,70 @@ dependencies = [ "cesu8", "cfg-if", "combine", - "java-locator", - "jni-sys", - "libloading 0.7.4", + "jni-sys 0.3.0", "log", "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] +[[package]] +name = "jni" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" +dependencies = [ + "cfg-if", + "combine", + "java-locator", + "jni-macros", + "jni-sys 0.4.1", + "libloading 0.8.9", + "log", + "simd_cesu8", + "thiserror 2.0.18", + "walkdir", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.117", +] + [[package]] name = "jni-sys" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] + [[package]] name = "jobserver" version = "0.1.34" @@ -2425,16 +2472,6 @@ dependencies = [ "cc", ] -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] - [[package]] name = "libloading" version = "0.8.9" @@ -2554,15 +2591,6 @@ dependencies = [ "libc", ] -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - [[package]] name = "matrixmultiply" version = "0.3.10" @@ -2598,21 +2626,6 @@ dependencies = [ "libc", ] -[[package]] -name = "metal" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7047791b5bc903b8cd963014b355f71dc9864a9a0b727057676c1dcae5cbc15" -dependencies = [ - "bitflags 2.11.0", - "block", - "core-graphics-types 0.2.0", - "foreign-types", - "log", - "objc", - "paste", -] - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -2683,12 +2696,12 @@ dependencies = [ [[package]] name = "naga" -version = "28.0.0" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "618f667225063219ddfc61251087db8a9aec3c3f0950c916b614e403486f1135" +checksum = "aa2630921705b9b01dcdd0b6864b9562ca3c1951eecd0f0c4f5f04f61e412647" dependencies = [ "arrayvec", - "bit-set", + "bit-set 0.9.1", "bitflags 2.11.0", "cfg-if", "cfg_aliases", @@ -2799,7 +2812,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ "bitflags 2.11.0", - "jni-sys", + "jni-sys 0.3.0", "log", "ndk-sys", "num_enum", @@ -2819,7 +2832,7 @@ version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ - "jni-sys", + "jni-sys 0.3.0", ] [[package]] @@ -2974,15 +2987,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", -] - [[package]] name = "objc-sys" version = "0.3.5" @@ -3021,7 +3025,7 @@ dependencies = [ "objc2-core-data", "objc2-core-image", "objc2-foundation 0.2.2", - "objc2-quartz-core", + "objc2-quartz-core 0.2.2", ] [[package]] @@ -3130,7 +3134,7 @@ dependencies = [ "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", - "objc2-metal", + "objc2-metal 0.2.2", ] [[package]] @@ -3201,6 +3205,18 @@ dependencies = [ "objc2-foundation 0.2.2", ] +[[package]] +name = "objc2-metal" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" +dependencies = [ + "bitflags 2.11.0", + "block2 0.6.2", + "objc2 0.6.4", + "objc2-foundation 0.3.2", +] + [[package]] name = "objc2-quartz-core" version = "0.2.2" @@ -3211,7 +3227,20 @@ dependencies = [ "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", - "objc2-metal", + "objc2-metal 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.11.0", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "objc2-metal 0.3.2", ] [[package]] @@ -3239,7 +3268,7 @@ dependencies = [ "objc2-core-location", "objc2-foundation 0.2.2", "objc2-link-presentation", - "objc2-quartz-core", + "objc2-quartz-core 0.2.2", "objc2-symbols", "objc2-uniform-type-identifiers", "objc2-user-notifications", @@ -3650,7 +3679,7 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" dependencies = [ - "bit-set", + "bit-set 0.8.0", "bit-vec 0.8.0", "bitflags 2.11.0", "num-traits", @@ -3887,6 +3916,18 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" +[[package]] +name = "raw-window-metal" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40d213455a5f1dc59214213c7330e074ddf8114c9a42411eb890c767357ce135" +dependencies = [ + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "objc2-quartz-core 0.3.2", +] + [[package]] name = "rawpointer" version = "0.2.1" @@ -4127,6 +4168,15 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + [[package]] name = "rusticata-macros" version = "4.1.0" @@ -4468,6 +4518,16 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + [[package]] name = "simd_helpers" version = "0.1.0" @@ -4477,6 +4537,12 @@ dependencies = [ "quote", ] +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "slab" version = "0.4.12" @@ -4556,9 +4622,9 @@ dependencies = [ [[package]] name = "spirv" -version = "0.3.0+sdk-1.3.268.0" +version = "0.4.0+sdk-1.4.341.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f" dependencies = [ "bitflags 2.11.0", ] @@ -5545,9 +5611,9 @@ checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] name = "wgpu" -version = "28.0.0" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cb534d5ffd109c7d1135f34cdae29e60eab94855a625dcfe1705f8bc7ad79f" +checksum = "72c239a9a747bbd379590985bac952c2e53cb19873f7072b3370c6a6a8e06837" dependencies = [ "arrayvec", "bitflags 2.11.0", @@ -5575,13 +5641,13 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "28.0.1" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d23f4642f53f666adcfd2d3218ab174d1e6681101aef18696b90cbe64d1c10f9" +checksum = "1e80ac6cf1895df6342f87d975162108f9d98772a0d74bc404ab7304ac29469e" dependencies = [ "arrayvec", - "bit-set", - "bit-vec 0.8.0", + "bit-set 0.9.1", + "bit-vec 0.9.1", "bitflags 2.11.0", "bytemuck", "cfg_aliases", @@ -5602,52 +5668,52 @@ dependencies = [ "wgpu-core-deps-emscripten", "wgpu-core-deps-windows-linux-android", "wgpu-hal", + "wgpu-naga-bridge", "wgpu-types", ] [[package]] name = "wgpu-core-deps-apple" -version = "28.0.0" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87b7b696b918f337c486bf93142454080a32a37832ba8a31e4f48221890047da" +checksum = "43acd053312501689cd92a01a9638d37f3e41a5fd9534875efa8917ee2d11ac0" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-emscripten" -version = "28.0.0" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34b251c331f84feac147de3c4aa3aa45112622a95dd7ee1b74384fa0458dbd79" +checksum = "ef043bf135cc68b6f667c55ff4e345ce2b5924d75bad36a47921b0287ca4b24a" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-windows-linux-android" -version = "28.0.0" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ca976e72b2c9964eb243e281f6ce7f14a514e409920920dcda12ae40febaae" +checksum = "725d5c006a8c02967b6d93ef04f6537ec4593313e330cfe86d9d3f946eb90f28" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-hal" -version = "28.0.1" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d6cb474beb218824dcc9e1ce679d973f719262789bfb27407da560cac20eeb" +checksum = "89a47aef47636562f3937285af4c44b4b5b404b46577471411cc5313a921da7e" dependencies = [ "android_system_properties", "arrayvec", "ash", - "bit-set", + "bit-set 0.9.1", "bitflags 2.11.0", - "block", + "block2 0.6.2", "bytemuck", "cfg-if", "cfg_aliases", - "core-graphics-types 0.2.0", "glow", "glutin_wgl_sys", "gpu-allocator", @@ -5658,10 +5724,13 @@ dependencies = [ "libc", "libloading 0.8.9", "log", - "metal", "naga", "ndk-sys", - "objc", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "objc2-metal 0.3.2", + "objc2-quartz-core 0.3.2", "once_cell", "ordered-float 5.1.0", "parking_lot", @@ -5670,26 +5739,40 @@ dependencies = [ "profiling", "range-alloc", "raw-window-handle", + "raw-window-metal", "renderdoc-sys", "smallvec", "thiserror 2.0.18", "wasm-bindgen", + "wayland-sys", "web-sys", + "wgpu-naga-bridge", "wgpu-types", "windows", "windows-core", ] +[[package]] +name = "wgpu-naga-bridge" +version = "29.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4684f4410da0cf95a4cb63bb5edaac022461dedb6adf0b64d0d9b5f6890d51" +dependencies = [ + "naga", + "wgpu-types", +] + [[package]] name = "wgpu-types" -version = "28.0.0" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e18308757e594ed2cd27dddbb16a139c42a683819d32a2e0b1b0167552f5840c" +checksum = "ec2675540fb1a5cfa5ef122d3d5f390e2c75711a0b946410f2d6ac3a0f77d1f6" dependencies = [ "bitflags 2.11.0", "bytemuck", "js-sys", "log", + "raw-window-handle", "web-sys", ] diff --git a/goud_engine/Cargo.toml b/goud_engine/Cargo.toml index 82d8aebe5..b741f7578 100644 --- a/goud_engine/Cargo.toml +++ b/goud_engine/Cargo.toml @@ -37,7 +37,7 @@ env_logger = { version = "0.11.10", optional = true } gl = { version = "0.14.0", optional = true } glfw = { version = "0.59.0", optional = true } log = "0.4.17" -jni = { version = "0.21", features = ["invocation"], optional = true } +jni = { version = "0.22", features = ["invocation"], optional = true } mlua = { version = "0.11", optional = true, default-features = false, features = ["lua54", "vendored"] } thiserror = "2.0.12" image = "0.25" @@ -62,9 +62,9 @@ tobj = { version = "4.0", optional = true, features = ["ahash"] } fbxcel = { version = "0.9", optional = true, features = ["tree"] } bytemuck = "1.14" goud_engine_macros = { version = "=0.0.839", path = "../goud_engine_macros" } # x-release-please-version -wgpu = { version = "28", optional = true } +wgpu = { version = "29", optional = true } winit = { version = "0.30", optional = true, features = ["android-native-activity"] } -naga = { version = "28", optional = true, features = ["glsl-in", "wgsl-out"] } +naga = { version = "29", optional = true, features = ["glsl-in", "wgsl-out"] } pollster = { version = "0.4", optional = true } wasm-bindgen = { version = "0.2", optional = true } wasm-bindgen-futures = { version = "0.4", optional = true } diff --git a/goud_engine/src/libs/graphics/backend/wgpu_backend/frame.rs b/goud_engine/src/libs/graphics/backend/wgpu_backend/frame.rs index 88e68c434..c0d82e5a7 100644 --- a/goud_engine/src/libs/graphics/backend/wgpu_backend/frame.rs +++ b/goud_engine/src/libs/graphics/backend/wgpu_backend/frame.rs @@ -9,10 +9,23 @@ use crate::libs::error::{GoudError, GoudResult}; impl FrameOps for WgpuBackend { fn begin_frame(&mut self) -> GoudResult<()> { - let surface_texture = self - .surface - .get_current_texture() - .map_err(|e| GoudError::InternalError(format!("Surface texture: {e}")))?; + let surface_texture = match self.surface.get_current_texture() { + wgpu::CurrentSurfaceTexture::Success(tex) => tex, + wgpu::CurrentSurfaceTexture::Suboptimal(tex) => { + self.surface.configure(&self.device, &self.surface_config); + tex + } + wgpu::CurrentSurfaceTexture::Timeout | wgpu::CurrentSurfaceTexture::Occluded => { + return Ok(()); // skip frame + } + wgpu::CurrentSurfaceTexture::Outdated | wgpu::CurrentSurfaceTexture::Lost => { + self.surface.configure(&self.device, &self.surface_config); + return Err(GoudError::InternalError("Surface lost or outdated".into())); + } + wgpu::CurrentSurfaceTexture::Validation => { + return Err(GoudError::InternalError("Surface validation error".into())); + } + }; let surface_view = surface_texture .texture .create_view(&wgpu::TextureViewDescriptor::default()); diff --git a/goud_engine/src/libs/graphics/backend/wgpu_backend/init.rs b/goud_engine/src/libs/graphics/backend/wgpu_backend/init.rs index 93b2c2d1b..6a760d42e 100644 --- a/goud_engine/src/libs/graphics/backend/wgpu_backend/init.rs +++ b/goud_engine/src/libs/graphics/backend/wgpu_backend/init.rs @@ -90,7 +90,7 @@ impl WgpuBackend { max_texture_units: limits.max_sampled_textures_per_shader_stage.min(16), max_texture_size: limits.max_texture_dimension_2d, max_vertex_attributes: limits.max_vertex_attributes, - max_uniform_buffer_size: limits.max_uniform_buffer_binding_size, + max_uniform_buffer_size: limits.max_uniform_buffer_binding_size as u32, supports_instancing: true, supports_compute_shaders: true, supports_geometry_shaders: false, diff --git a/goud_engine/src/libs/graphics/backend/wgpu_backend/pipeline.rs b/goud_engine/src/libs/graphics/backend/wgpu_backend/pipeline.rs index 649ed4206..2832035a0 100644 --- a/goud_engine/src/libs/graphics/backend/wgpu_backend/pipeline.rs +++ b/goud_engine/src/libs/graphics/backend/wgpu_backend/pipeline.rs @@ -34,9 +34,9 @@ impl WgpuBackend { .create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { label: None, bind_group_layouts: &[ - &self.uniform_bind_group_layout, - &self.texture_bind_group_layout, - &self.storage_bind_group_layout, + Some(&self.uniform_bind_group_layout), + Some(&self.texture_bind_group_layout), + Some(&self.storage_bind_group_layout), ], immediate_size: 0, }) @@ -45,8 +45,8 @@ impl WgpuBackend { .create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { label: None, bind_group_layouts: &[ - &self.uniform_bind_group_layout, - &self.texture_bind_group_layout, + Some(&self.uniform_bind_group_layout), + Some(&self.texture_bind_group_layout), ], immediate_size: 0, }) @@ -78,16 +78,16 @@ impl WgpuBackend { let func = unsafe { std::mem::transmute::(key.depth_func) }; wgpu::DepthStencilState { format: wgpu::TextureFormat::Depth32Float, - depth_write_enabled: key.depth_write, - depth_compare: convert::map_depth_func(func), + depth_write_enabled: Some(key.depth_write), + depth_compare: Some(convert::map_depth_func(func)), stencil: wgpu::StencilState::default(), bias: wgpu::DepthBiasState::default(), } } else { wgpu::DepthStencilState { format: wgpu::TextureFormat::Depth32Float, - depth_write_enabled: false, - depth_compare: wgpu::CompareFunction::Always, + depth_write_enabled: Some(false), + depth_compare: Some(wgpu::CompareFunction::Always), stencil: wgpu::StencilState::default(), bias: wgpu::DepthBiasState::default(), } diff --git a/goud_engine/src/wasm/mod.rs b/goud_engine/src/wasm/mod.rs index 7f3e8b192..046ad69d1 100644 --- a/goud_engine/src/wasm/mod.rs +++ b/goud_engine/src/wasm/mod.rs @@ -214,7 +214,13 @@ impl WasmGame { if let Some(rs) = &mut self.render_state { rs.renderer.begin_frame(); - if let Ok(frame) = rs.surface.get_current_texture() { + let frame_result = rs.surface.get_current_texture(); + let frame_opt = match frame_result { + wgpu::CurrentSurfaceTexture::Success(tex) => Some(tex), + wgpu::CurrentSurfaceTexture::Suboptimal(tex) => Some(tex), + _ => None, + }; + if let Some(frame) = frame_opt { let view = frame .texture .create_view(&wgpu::TextureViewDescriptor::default()); From 5616478f1f0c34ed156c6265abecdc790060d34b Mon Sep 17 00:00:00 2001 From: Aram Hammoudeh Date: Thu, 2 Apr 2026 12:08:56 -0600 Subject: [PATCH 10/13] fix(deps): revert jni to 0.21, ignore 0.22+ in dependabot jni 0.22 is a major API rewrite (JNIEnv renamed to EnvUnowned, all methods moved to Env type) requiring 149+ changes across helpers and generated code. Revert to 0.21 and add a dependabot ignore rule to prevent it from re-opening PRs for this version. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/dependabot.yml | 3 +++ goud_engine/Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 545811ee3..f5a646624 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -33,6 +33,9 @@ updates: update-types: ["version-update:semver-major"] - dependency-name: "glfw" update-types: ["version-update:semver-major"] + # jni 0.22 is a major API rewrite (JNIEnv → EnvUnowned); requires codegen changes + - dependency-name: "jni" + versions: [">=0.22"] # .NET dependencies - package-ecosystem: "nuget" diff --git a/goud_engine/Cargo.toml b/goud_engine/Cargo.toml index b741f7578..e0ffccf49 100644 --- a/goud_engine/Cargo.toml +++ b/goud_engine/Cargo.toml @@ -37,7 +37,7 @@ env_logger = { version = "0.11.10", optional = true } gl = { version = "0.14.0", optional = true } glfw = { version = "0.59.0", optional = true } log = "0.4.17" -jni = { version = "0.22", features = ["invocation"], optional = true } +jni = { version = "0.21", features = ["invocation"], optional = true } mlua = { version = "0.11", optional = true, default-features = false, features = ["lua54", "vendored"] } thiserror = "2.0.12" image = "0.25" From 6573939a89d3ffae81b26d7fa9d960448c3a7c55 Mon Sep 17 00:00:00 2001 From: Aram Hammoudeh Date: Thu, 2 Apr 2026 12:18:28 -0600 Subject: [PATCH 11/13] fix(wasm): adapt wasm target to wgpu 29 API changes - Instance::new() now takes InstanceDescriptor by value, and InstanceDescriptor no longer implements Default. Use new_without_display_handle() builder instead. - bind_group_layouts entries now require Option wrapping. Co-Authored-By: Claude Opus 4.6 (1M context) --- goud_engine/src/wasm/lifecycle.rs | 7 +++---- goud_engine/src/wasm/sprite_renderer/renderer_core.rs | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/goud_engine/src/wasm/lifecycle.rs b/goud_engine/src/wasm/lifecycle.rs index 73396f165..96e5bb330 100644 --- a/goud_engine/src/wasm/lifecycle.rs +++ b/goud_engine/src/wasm/lifecycle.rs @@ -58,10 +58,9 @@ impl WasmGame { std::panic::set_hook(Box::new(super::console_error_panic_hook)); } - let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor { - backends: wgpu::Backends::BROWSER_WEBGPU | wgpu::Backends::GL, - ..Default::default() - }); + let mut instance_desc = wgpu::InstanceDescriptor::new_without_display_handle(); + instance_desc.backends = wgpu::Backends::BROWSER_WEBGPU | wgpu::Backends::GL; + let instance = wgpu::Instance::new(instance_desc); let surface = instance .create_surface(wgpu::SurfaceTarget::Canvas(canvas)) diff --git a/goud_engine/src/wasm/sprite_renderer/renderer_core.rs b/goud_engine/src/wasm/sprite_renderer/renderer_core.rs index 1670352a2..ddbec61ca 100644 --- a/goud_engine/src/wasm/sprite_renderer/renderer_core.rs +++ b/goud_engine/src/wasm/sprite_renderer/renderer_core.rs @@ -85,7 +85,7 @@ impl WgpuSpriteRenderer { let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { label: Some("sprite_pipeline_layout"), - bind_group_layouts: &[&uniform_bind_group_layout, &texture_bind_group_layout], + bind_group_layouts: &[Some(&uniform_bind_group_layout), Some(&texture_bind_group_layout)], immediate_size: 0, }); From 8e3d1f7d34f2d11beb3fc27d417bf2dea9a8133e Mon Sep 17 00:00:00 2001 From: Aram Hammoudeh Date: Thu, 2 Apr 2026 12:22:08 -0600 Subject: [PATCH 12/13] style: fix rustfmt formatting in wasm sprite renderer Co-Authored-By: Claude Opus 4.6 (1M context) --- goud_engine/src/wasm/sprite_renderer/renderer_core.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/goud_engine/src/wasm/sprite_renderer/renderer_core.rs b/goud_engine/src/wasm/sprite_renderer/renderer_core.rs index ddbec61ca..f49549e37 100644 --- a/goud_engine/src/wasm/sprite_renderer/renderer_core.rs +++ b/goud_engine/src/wasm/sprite_renderer/renderer_core.rs @@ -85,7 +85,10 @@ impl WgpuSpriteRenderer { let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { label: Some("sprite_pipeline_layout"), - bind_group_layouts: &[Some(&uniform_bind_group_layout), Some(&texture_bind_group_layout)], + bind_group_layouts: &[ + Some(&uniform_bind_group_layout), + Some(&texture_bind_group_layout), + ], immediate_size: 0, }); From ae32365eaa558a6a53c067694eaa5a9c96852108 Mon Sep 17 00:00:00 2001 From: Aram Hammoudeh Date: Thu, 2 Apr 2026 12:32:50 -0600 Subject: [PATCH 13/13] fix(wgpu): pass display handle when creating wgpu Instance wgpu 29 requires an explicit display handle for the GL backend to find a compatible surface. Without it, xvfb-based CI environments fail with "gl not compatible with provided surface". Co-Authored-By: Claude Opus 4.6 (1M context) --- goud_engine/src/libs/graphics/backend/wgpu_backend/init.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/goud_engine/src/libs/graphics/backend/wgpu_backend/init.rs b/goud_engine/src/libs/graphics/backend/wgpu_backend/init.rs index 6a760d42e..84e1841ce 100644 --- a/goud_engine/src/libs/graphics/backend/wgpu_backend/init.rs +++ b/goud_engine/src/libs/graphics/backend/wgpu_backend/init.rs @@ -24,7 +24,9 @@ impl WgpuBackend { } async fn new_async(window: Arc) -> GoudResult { - let instance = wgpu::Instance::default(); + let instance = wgpu::Instance::new(wgpu::InstanceDescriptor::new_with_display_handle( + Box::new(window.clone()), + )); let surface = instance .create_surface(wgpu::SurfaceTarget::from(window.clone())) .map_err(|e| GoudError::BackendNotSupported(format!("wgpu surface: {e}")))?;