From a706fadafa5a3e2c44d30489b427f0fd3453d67f Mon Sep 17 00:00:00 2001 From: Ren Amamiya Date: Wed, 7 Oct 2026 05:19:15 +0700 Subject: [PATCH] chore: upgrade gpui-component to 0.7 and gix to 0.88 --- CHANGELOG.md | 1 + Cargo.lock | 676 +++++++++++++++--------------- Cargo.toml | 16 +- crates/dock/src/dock_area.rs | 11 +- crates/signed_git/Cargo.toml | 4 +- crates/signed_git/src/cache.rs | 4 +- crates/signed_git/src/diff.rs | 3 +- crates/signed_git/src/history.rs | 7 +- crates/signed_git/src/lib.rs | 13 + crates/signed_git/src/nip34.rs | 3 +- crates/signed_git/src/patch.rs | 18 +- crates/signed_git/src/remote.rs | 48 ++- crates/signed_git/src/repo.rs | 61 ++- crates/signed_git/src/scan.rs | 2 +- crates/signed_git/src/worktree.rs | 80 ++-- crates/workspace/src/workspace.rs | 9 +- 16 files changed, 473 insertions(+), 483 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cb3aec..3e7d4f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Add an identity import dialog, importing an existing identity by pasting its `nsec` secret key (encrypted with a new passphrase), NIP-49 `ncryptsec` (unlocked with its passphrase), or `bunker://` NIP-46 URI - Add a dropdown menu on the signed-in user button in the sidebar - Add sign-out feature, confirmed by an alert dialog before deleting the stored session credential +- Add a quit action, bound to `secondary-q` (cmd on macOS, ctrl on others) ### Changed diff --git a/Cargo.lock b/Cargo.lock index 62b02a8..ed1f183 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -45,7 +45,7 @@ dependencies = [ "accesskit", "accesskit_consumer", "hashbrown 0.16.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", ] @@ -415,13 +415,13 @@ dependencies = [ [[package]] name = "async-recursion" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +checksum = "4f8abc12baad266b1c8cec146854c195b5864b4221d4b2ca7296a7ae82d9e451" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.6", ] [[package]] @@ -462,8 +462,7 @@ dependencies = [ [[package]] name = "async-utility" version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "188f83b9a198af8c336e505611edb00d6d2ac5c694241c5a4f9a12316938cfe9" +source = "git+https://github.com/yukibtc/async-utility?rev=7d3a79983d0e848aafed9d321637af7334e01349#7d3a79983d0e848aafed9d321637af7334e01349" dependencies = [ "futures-util", "gloo-timers", @@ -835,7 +834,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "objc2 0.5.2", + "objc2 0.5.3", ] [[package]] @@ -844,7 +843,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" dependencies = [ - "objc2 0.6.4", + "objc2 0.6.5", ] [[package]] @@ -860,16 +859,6 @@ dependencies = [ "piper", ] -[[package]] -name = "borsh" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "553c5d846a6ba5150c65e3b1b8ec073bcf1abc20f9b7220de384a4443ea4e20a" -dependencies = [ - "bytes", - "cfg_aliases", -] - [[package]] name = "bstr" version = "1.13.1" @@ -1578,9 +1567,9 @@ dependencies = [ [[package]] name = "ctutils" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +checksum = "03bb0e1cc970d482d121d9a1744999169b69a07470b3d644a7894e53fcaf4574" dependencies = [ "cmov", ] @@ -1769,7 +1758,7 @@ dependencies = [ "bitflags 2.13.2", "block2 0.6.2", "libc", - "objc2 0.6.4", + "objc2 0.6.5", ] [[package]] @@ -1853,15 +1842,15 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "either" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34" +checksum = "0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be" [[package]] name = "embed-resource" -version = "3.0.11" +version = "3.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbfdaacccebec3b28e4866b8973543c7647797db5ada1bdab552e48fe665fbbd" +checksum = "6168487b5e7eb2673e6efe1200b1848016e436a6ca0b8031bf04bd9d493a249f" dependencies = [ "cc", "memchr", @@ -2529,9 +2518,9 @@ checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "gix" -version = "0.87.1" +version = "0.88.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdefc1465d8631807deaf504dacdeff628b978de515653b47976ca7c28ab2a7a" +checksum = "32d6dd6028308ad2f2662207506e396b97f9ec899f74bd537c0775248c774f21" dependencies = [ "gix-actor", "gix-attributes", @@ -2584,14 +2573,13 @@ dependencies = [ "gix-zlib", "nonempty", "smallvec", - "thiserror 2.0.21", ] [[package]] name = "gix-actor" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e37efa99929ac62f980fb1a7dcd09dea85b3aa6ead6ba0498362add3f4e698de" +checksum = "8e046e9a929e8e1f40f9a34f736408c4c079f9cf004429f3e718d270e847be96" dependencies = [ "bstr", "gix-date", @@ -2600,46 +2588,47 @@ dependencies = [ [[package]] name = "gix-attributes" -version = "0.35.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76b83782ac69ae28921a6e8fbcf2e24069613f1518030b97ae622b079abffa54" +checksum = "a3d57bcf18768dc259868e335fae99a9063174178b78b00348603f0791cd780a" dependencies = [ "bstr", + "gix-error", "gix-features", "gix-glob", "gix-path", "gix-quote", "gix-trace", "smallvec", - "thiserror 2.0.21", "unicode-bom", ] [[package]] name = "gix-bitmap" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17013c7ef5cb95ebb4bf4978201e6a8a42ffea9d666fd5388f1b7e742307d80" +checksum = "4e9d28a8333a322df5c4fdc7b86a9928965e50794523c0edff57d1fbf2a520cf" dependencies = [ "gix-error", ] [[package]] name = "gix-chunk" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e32f938b3745ac93d73bc7490b6a15a661b2fc81973bfe90e275cc53c908e1" +checksum = "25303d07ce2b8f98aab48ce4251317d785a3208b7ed65698928e4a2f31889936" dependencies = [ "gix-error", ] [[package]] name = "gix-command" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa00adbd2c77f584cfe41f348772d2f131af1fa519a7f6b98638f1144ead96a4" +checksum = "eb3c2e61f97adc08764060e9becb0c819d8f2ba27896434710e039ae57b1d2a7" dependencies = [ "bstr", + "gix-error", "gix-path", "gix-quote", "gix-trace", @@ -2647,9 +2636,9 @@ dependencies = [ [[package]] name = "gix-commitgraph" -version = "0.39.0" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b93c9fb1f5be01bba54a7a3b7455d359efc68555539c75ef74b8021bb6db497" +checksum = "0462cbffd5828447f376559d397d9b29f1979dac3d980b5212b17fa174b174eb" dependencies = [ "bstr", "gix-chunk", @@ -2661,12 +2650,13 @@ dependencies = [ [[package]] name = "gix-config" -version = "0.60.0" +version = "0.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f973c28c0a4871a7926fc90c8377d4458fd6cbb19692f56582b4d2022313ae90" +checksum = "eb2cb454dce2f1895cf9def1df8b0a6bbc579d86d8313bdf60f1ab429d52df12" dependencies = [ "bstr", "gix-config-value", + "gix-error", "gix-features", "gix-glob", "gix-path", @@ -2674,47 +2664,46 @@ dependencies = [ "gix-sec", "gix-utils", "smallvec", - "thiserror 2.0.21", "unicode-bom", ] [[package]] name = "gix-config-value" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f6af5321bfd3711a279d6b244d58532ba1cfabf9eb6374791f19929d8970082" +checksum = "1894e816c774650b5157d965853b50d7e8f7137ea74055a6bac2f2ec051cf997" dependencies = [ "bitflags 2.13.2", "bstr", + "gix-error", "gix-path", "libc", - "thiserror 2.0.21", ] [[package]] name = "gix-credentials" -version = "0.40.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16c11822054fd4b80a1ab722b703f2e7c691b20484d898374289b742c1f49e50" +checksum = "e3a9965e5bd5a1d75e835e4765e3900c0614878c9c9199272d6088640fecacb8" dependencies = [ "bstr", "gix-command", "gix-config-value", "gix-date", + "gix-error", "gix-path", "gix-prompt", "gix-quote", "gix-sec", "gix-trace", "gix-url", - "thiserror 2.0.21", ] [[package]] name = "gix-date" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e63d9aa18f29facd571c8953e66224ee0075b9e16622024794555ed4acceea85" +checksum = "cb8beceb16a77fb222923592864b94beb4ad4c2b175a7055c2cac6815ee0370a" dependencies = [ "bstr", "gix-error", @@ -2724,13 +2713,14 @@ dependencies = [ [[package]] name = "gix-diff" -version = "0.67.1" +version = "0.68.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1689ff5ddeee4acfb2a43e875a1072a76d208624b15a9065c938b39cb0da2a" +checksum = "939aee7bbc9f233de858839e865c82886e0baceb8f1fe792ea1703fa895f09e1" dependencies = [ "bstr", "gix-attributes", "gix-command", + "gix-error", "gix-filter", "gix-fs", "gix-hash", @@ -2743,17 +2733,17 @@ dependencies = [ "gix-trace", "gix-traverse", "gix-worktree", - "thiserror 2.0.21", ] [[package]] name = "gix-dir" -version = "0.29.1" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8342d5eb0ea054ed6ef807e628e38f06dd51eceeec9529767d8b23e33eff9c09" +checksum = "e2e41d125c2c6f981aad27299a6233a7ace3413289c1e2994f57e5bab1c34847" dependencies = [ "bstr", "gix-discover", + "gix-error", "gix-fs", "gix-ignore", "gix-index", @@ -2763,38 +2753,37 @@ dependencies = [ "gix-trace", "gix-utils", "gix-worktree", - "thiserror 2.0.21", ] [[package]] name = "gix-discover" -version = "0.55.0" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec32a30ec2934735599c2545f30067e80bd255fd3454b52a5d59bc02b52874a3" +checksum = "4476ba055ec5fbb05f59dd98380b596428da060beac5f9dccd7374302ad1fbfb" dependencies = [ "bstr", "dunce", + "gix-error", "gix-fs", "gix-path", "gix-ref", "gix-sec", - "thiserror 2.0.21", ] [[package]] name = "gix-error" -version = "0.3.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1ba536602db507119eb5f3cdf80bef3ca5a5ec0dfc6e9c7f46dc70ade7c112" +checksum = "2c4a5c4cd326ddfe7f046ad9eed05461c59af6ea98b681648bac73954317addd" dependencies = [ "bstr", ] [[package]] name = "gix-features" -version = "0.49.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c0e59d9d253dcccc38c3a46b91bfb9b46bd63eed54fe1a719e12194884d52a" +checksum = "bb3a430dbc02d6c5e30a9f92083459593495ea22a476e837d248b22d800eed80" dependencies = [ "bytes", "crc32fast", @@ -2811,14 +2800,15 @@ dependencies = [ [[package]] name = "gix-filter" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c30b28d957e2e6f1e1bbfbfd26b8e0bb0aab68d8a5e730fb4fd3049943575e3" +checksum = "6f31a39e2c9b04843709d1f72b2c39c98dc0ee591e2f67d21302dbfbd06d2956" dependencies = [ "bstr", "encoding_rs", "gix-attributes", "gix-command", + "gix-error", "gix-hash", "gix-object", "gix-packetline", @@ -2827,51 +2817,51 @@ dependencies = [ "gix-trace", "gix-utils", "smallvec", - "thiserror 2.0.21", ] [[package]] name = "gix-fs" -version = "0.22.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcfa9fd253f25350a3b21b3dd74034a446098e373c6123d4cee3519894f12ef" +checksum = "0105ab1cef4542d092c27766d2daf1548fcbad7e460dc2208642c120bb19b3ad" dependencies = [ "bstr", + "gix-error", "gix-features", "gix-path", "gix-utils", - "thiserror 2.0.21", ] [[package]] name = "gix-glob" -version = "0.27.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b417cf515fd8c91468b578071f76d6cba716f8a1eccd853906bff4908b2c1413" +checksum = "bba50803dea16646cafb9a2d67e95b8cdf5b21c7e8c45bcd18f38bafe02fb81f" dependencies = [ "bitflags 2.13.2", "bstr", "gix-features", "gix-path", + "gix-utils", ] [[package]] name = "gix-hash" -version = "0.26.2" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b9c423a54f0821064b954b5a5ab25c660812f6a91da03c3f1cb4b10762aa5" +checksum = "7a22b6febaaee8546eb0c9dd21ecdd93aca269a6cb3897e1250f0f60933c0174" dependencies = [ "faster-hex", + "gix-error", "gix-features", - "sha1-checked", - "thiserror 2.0.21", + "sha1dc", ] [[package]] name = "gix-hashtable" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78fccd6fea3bcf0b39c076bae60ae49b08daaf538b950202101a981f9d3c01d3" +checksum = "c55bff2f32f6f5a95bdd43e5e5e01b0656250cffbc48eda19db0afa3d73adf2f" dependencies = [ "gix-hash", "hashbrown 0.17.1", @@ -2880,9 +2870,9 @@ dependencies = [ [[package]] name = "gix-ignore" -version = "0.22.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65859a2f7de5e159d4344a5486ebf53b6bac22d5ec6afa836e47c10ae88a7f0f" +checksum = "5bfd910e271ecd1a20e4df4009a0d9d844a0c51ee5444aaa3fadd1b1b077930b" dependencies = [ "bstr", "gix-glob", @@ -2893,9 +2883,9 @@ dependencies = [ [[package]] name = "gix-imara-diff" -version = "0.2.5" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c91d8cffac8849493a82233811bd02b2b183b8cf39bf704de0fa0841b737595" +checksum = "305657ad44356151d73c145f567c25b24fdf2466bfb3e90727e1d5461a4e9748" dependencies = [ "bstr", "hashbrown 0.17.1", @@ -2903,15 +2893,16 @@ dependencies = [ [[package]] name = "gix-index" -version = "0.55.0" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632e16cb48b0e88a747e106924cb2765194105d8070a7a961b0d080ed806c632" +checksum = "dfd5b484b5b4e218a5ac114f0982949f9bd7582ff67986665a0cf85895332433" dependencies = [ "bitflags 2.13.2", "bstr", "filetime", "fnv", "gix-bitmap", + "gix-error", "gix-features", "gix-fs", "gix-hash", @@ -2926,25 +2917,24 @@ dependencies = [ "memmap2", "rustix", "smallvec", - "thiserror 2.0.21", ] [[package]] name = "gix-lock" -version = "24.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c69157820343bf1c6e4b88b9808e920900de02e18aaf5862b30ada43814848" +checksum = "8fd5ddfd0cc476fef744ac544783b96a9ff5d49f8de541e6e9d6d6002aa90720" dependencies = [ + "gix-error", "gix-tempfile", "gix-utils", - "thiserror 2.0.21", ] [[package]] name = "gix-macros" -version = "0.1.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3836b4b051393464a753c5a08fe19c7ce0d8b77574a92bd558972941d4553cb" +checksum = "f11f5429ca73cc3758c9f53af56a9fba100a8701c5b4bc30e29b8b0b15288991" dependencies = [ "proc-macro2", "quote", @@ -2953,13 +2943,14 @@ dependencies = [ [[package]] name = "gix-negotiate" -version = "0.35.1" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91068ecee956121d663635b873ae87ad9c5d3f2d6788facfd12829140b39c897" +checksum = "72c2c0f64b64f435862c73a7f14767547781d7ca145aa9b273d12c6e55b55dd9" dependencies = [ "bitflags 2.13.2", "gix-commitgraph", "gix-date", + "gix-error", "gix-hash", "gix-object", "gix-revwalk", @@ -2967,44 +2958,45 @@ dependencies = [ [[package]] name = "gix-note" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9af6bbdb3f3c62b4920407c479af1cc0beb27fd75a762782d48baed53d330958" +checksum = "5d6879cc9e5a9a0429e40b05970af6c8dad8734098a3142fec23e32eeb567580" dependencies = [ "gix-error", "gix-hash", - "gix-hashtable", "gix-object", ] [[package]] name = "gix-object" -version = "0.64.1" +version = "0.65.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56fef799ca40cdeab4de5a3e74a696d8fa9b9c6264592646bf022e026f13ce2c" +checksum = "a72909eeeed845721a143ef3dbeb4d6cd5df79c839fe7eefc138cb4f982eba3e" dependencies = [ "bstr", "gix-actor", "gix-command", "gix-date", + "gix-error", "gix-features", "gix-hash", "gix-hashtable", + "gix-path", "gix-tempfile", "gix-utils", "gix-validate", "itoa", "smallvec", - "thiserror 2.0.21", ] [[package]] name = "gix-odb" -version = "0.84.0" +version = "0.85.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf45d195b71cb6363886e7b466821bf4dffd7aba1b6b814ff75488e0061d72a7" +checksum = "5794b85ff563a290ea18867fa1f0a5b0b84709f2f34dddbb3614556fbe88c629" dependencies = [ "arc-swap", + "gix-error", "gix-features", "gix-fs", "gix-hash", @@ -3017,14 +3009,13 @@ dependencies = [ "memmap2", "parking_lot", "tempfile", - "thiserror 2.0.21", ] [[package]] name = "gix-pack" -version = "0.74.2" +version = "0.75.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d199d515cbdcf05f531f3859be9771fc12acac7b7fe0f5b581b2c1ab1c3a61e" +checksum = "0451a48faef8e0e7a8f6d903c8329c7d18a793b3030907ca841f889dc695d1df" dependencies = [ "clru", "gix-chunk", @@ -3039,70 +3030,70 @@ dependencies = [ "memmap2", "parking_lot", "smallvec", - "thiserror 2.0.21", ] [[package]] name = "gix-packetline" -version = "0.22.2" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "792bd92bea390087e6223b18d4d023decc36467de31e6b066b69b94beea1b9e2" +checksum = "0ba540112a3fcc6388eb2aa4dc4837040478c285a35178cd9a44b07345cd6636" dependencies = [ "bstr", "faster-hex", + "gix-error", "gix-trace", - "thiserror 2.0.21", ] [[package]] name = "gix-path" -version = "0.12.6" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38fc6f029ea67de83cbcbd33fd98c05a48360d2932b39d9fdacbc6eae802d475" +checksum = "fd051ac60c5dbce2228daabf25b6a76408ac732d416c678cfa0a4914d13f60b8" dependencies = [ "bstr", + "gix-error", "gix-trace", "gix-validate", - "thiserror 2.0.21", ] [[package]] name = "gix-pathspec" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92e44c63ba53bb55aa88ee48847664beae9446417621582fb14dfc69b2f8c72" +checksum = "1ee883ab64bad641bf31ff338044edd7aa010605f19e866d98c9164e635c38b1" dependencies = [ "bitflags 2.13.2", "bstr", "gix-attributes", "gix-config-value", + "gix-error", "gix-glob", "gix-path", - "thiserror 2.0.21", ] [[package]] name = "gix-prompt" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "802256e13ecb2133ba5f9e6acbaa6b08bac027b1c5929f85f6adbb56ba3a4f28" +checksum = "057ae013425704c652a8abebc8660f45e9b0175b5b40ae72516732241ad6ba94" dependencies = [ "gix-command", "gix-config-value", + "gix-error", "parking_lot", "rustix", - "thiserror 2.0.21", ] [[package]] name = "gix-protocol" -version = "0.65.1" +version = "0.66.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68878c37ae168b474c762d70adc8a8e0f9323ed0d80444a672e2eb561fa16691" +checksum = "331ac489c461790b6b692afb322085c42041c6ff7621c30ac3dbb00b12e05e89" dependencies = [ "bstr", "gix-credentials", "gix-date", + "gix-error", "gix-features", "gix-hash", "gix-lock", @@ -3117,14 +3108,13 @@ dependencies = [ "gix-transport", "gix-utils", "nonempty", - "thiserror 2.0.21", ] [[package]] name = "gix-quote" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f74795eb76eab8313063849f9cbd2bbcdc6e4692f71c1d7d0244ab11cd777329" +checksum = "e6b040cfa7af50f131bfa34119cceee804c3cc40c766daaba8e0c8149340aea7" dependencies = [ "bstr", "gix-error", @@ -3133,11 +3123,12 @@ dependencies = [ [[package]] name = "gix-ref" -version = "0.67.1" +version = "0.68.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8328387e7ab354e1dc3afb63e6b4d1866f82d7ce035222bc9d5baaf36bc88020" +checksum = "c90ceeec67de03b737c30b1b69116ca56fec803edde022f3d25181f0f597083d" dependencies = [ "gix-actor", + "gix-error", "gix-features", "gix-fs", "gix-hash", @@ -3148,27 +3139,26 @@ dependencies = [ "gix-utils", "gix-validate", "memmap2", - "thiserror 2.0.21", ] [[package]] name = "gix-refspec" -version = "0.45.1" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de280d46e8fd9e4d3e7e2ab4276b965e377ba68b2b9a8fce56371015e8bb059" +checksum = "b4caa89a034a055c0578150092d3edb2f1c3f74cca86b883263a28caa26c5812" dependencies = [ "bstr", + "gix-error", "gix-hash", "gix-validate", "smallvec", - "thiserror 2.0.21", ] [[package]] name = "gix-revision" -version = "0.49.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4577b864c3e134697e91564553e43230c2e401bb1bcc51cfa998edca21c95078" +checksum = "d8438d38e197fa3ea7bb297302db1701879a64a343f23a3d150a602a609a8751" dependencies = [ "bitflags 2.13.2", "bstr", @@ -3185,9 +3175,9 @@ dependencies = [ [[package]] name = "gix-revwalk" -version = "0.35.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248823eefe405e2c0754b74f6f43ab6faab68670cdbf2d6e114cb0471f766450" +checksum = "2fa6d913e7cf8c6407d3954f9794b4b148c2113c672c34b63c59ea654a1e060e" dependencies = [ "gix-commitgraph", "gix-date", @@ -3196,14 +3186,13 @@ dependencies = [ "gix-hashtable", "gix-object", "smallvec", - "thiserror 2.0.21", ] [[package]] name = "gix-sec" -version = "0.14.2" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af4fe6c152c1d50aea36f299825702cd37e303307832fec1d0fdd5844e47ce2f" +checksum = "7d8eb983a830ba586b61f7005deaf44609e1a4186cbf13a0e8668154ca910461" dependencies = [ "bitflags 2.13.2", "gix-path", @@ -3213,27 +3202,28 @@ dependencies = [ [[package]] name = "gix-shallow" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecc9f4b40537043e4bbd7d3d1760e74fb8e7b07a546166b558acaa73ad97f4a" +checksum = "119bae1301715df40e8fd136deeff4fe8a3be4cfc001ed5e72bad7b47ebbc090" dependencies = [ "bstr", + "gix-error", "gix-hash", "gix-lock", "nonempty", - "thiserror 2.0.21", ] [[package]] name = "gix-status" -version = "0.34.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1401d871c01d82add5a9f654439b00722d0c632b332cd2cb63193f94327c8458" +checksum = "cdb7e035b6d9dce932f6b6c8d33d29b31b46e05da544bf810e324bf61aaa5b84" dependencies = [ "bstr", "filetime", "gix-diff", "gix-dir", + "gix-error", "gix-features", "gix-filter", "gix-fs", @@ -3245,54 +3235,55 @@ dependencies = [ "gix-worktree", "hashbrown 0.16.1", "portable-atomic", - "thiserror 2.0.21", "windows-sys 0.61.2", ] [[package]] name = "gix-submodule" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da85564d6725c483b8d95d7b31d1db0b78c29e462a2b481949e2f18e1ed55a6a" +checksum = "0b498192e5f89453fbd728263d52088aeec634a390e732f1da6d0a491c552091" dependencies = [ "bstr", "gix-config", + "gix-error", "gix-path", "gix-pathspec", "gix-refspec", "gix-url", - "thiserror 2.0.21", ] [[package]] name = "gix-tempfile" -version = "24.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b675b920bd5a61d17ad542772f03ec34c60feb8ff683e1560c03ae967363731e" +checksum = "3dd7dd8df3345933caddd6ce67821c9eec17192564f1011cf0bd0b8cb0d07ffb" dependencies = [ "dashmap", "gix-fs", "libc", "parking_lot", "tempfile", + "windows-sys 0.61.2", ] [[package]] name = "gix-trace" -version = "0.1.21" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be3eb81d9dc914335923e50d52829c551feefd6a72d176c4130c546b67a60814" +checksum = "df45b2cf6052d9e52681130c17d67505b023e8933ad974f94a2be0b0d24f636a" [[package]] name = "gix-transport" -version = "0.59.2" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3f41a64939953ff49117df4eb91334d299abc59ff57a90fb2193d8ffa5886f1" +checksum = "5d2beb7b0387bbf4d7c13763c6e168f9957319aa811f09349dc59601be3b2951" dependencies = [ "base64 0.22.1", "bstr", "gix-command", "gix-credentials", + "gix-error", "gix-features", "gix-packetline", "gix-path", @@ -3301,44 +3292,43 @@ dependencies = [ "gix-url", "parking_lot", "reqwest", - "thiserror 2.0.21", ] [[package]] name = "gix-traverse" -version = "0.61.0" +version = "0.62.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9af3503668739f4de5dba57fe15cfd9adc443b08bcbbf195e5de16b648872245" +checksum = "dd4864934e4efd92082ecc37107bce0c389b58d82888db634817f9c711efb7ed" dependencies = [ "bitflags 2.13.2", "gix-commitgraph", "gix-date", + "gix-error", "gix-hash", "gix-hashtable", "gix-object", "gix-revwalk", "smallvec", - "thiserror 2.0.21", ] [[package]] name = "gix-url" -version = "0.38.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bda80ccb4bc81fb9fb07a975916eb0c7a889bcbcb0c8a239c3f82a9cc2abdda" +checksum = "1f30fe2a228d7de5f9d582463d9b724debcb870162d9fbe908cd5d76ccdecf0d" dependencies = [ "bstr", + "gix-error", "gix-path", "gix-utils", "percent-encoding", - "thiserror 2.0.21", ] [[package]] name = "gix-utils" -version = "0.3.6" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da1c46491b49458a446cc76f0085860f8164c2290742e0aa8c653ce67240a97" +checksum = "70525766f53426ca4cd2ea4d58b0b31488dfedb416b3254e2efdd9dc184cc880" dependencies = [ "bstr", "fastrand", @@ -3348,21 +3338,23 @@ dependencies = [ [[package]] name = "gix-validate" -version = "0.11.4" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dae8780f63ed8a803b8bdabbd7aa5f5c5d74592c8b50eed875c1bb4f6545a6a" +checksum = "30574f81fc41b2ca3582ece2bdf8696bdfe9c170aa7e8bcafb81199c86b1ceea" dependencies = [ "bstr", + "gix-error", ] [[package]] name = "gix-worktree" -version = "0.56.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed36b627476e2072c129900a17c977a38052b5497e27308159bc881fbf4eecf" +checksum = "04fa19b9b3961aafb3b9e60005b9bcef0100f8b211f46ab5269a6ac896073780" dependencies = [ "bstr", "gix-attributes", + "gix-error", "gix-fs", "gix-glob", "gix-hash", @@ -3375,11 +3367,12 @@ dependencies = [ [[package]] name = "gix-worktree-state" -version = "0.34.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c14faa5b9527823c656a033e841dde11ca5b774f1bca7a9cdc23db677e55d56" +checksum = "6a925ddd8ba01f09b18fe570bf5070972f19f180489288747924dcd857c96ab1" dependencies = [ "bstr", + "gix-error", "gix-features", "gix-filter", "gix-fs", @@ -3388,14 +3381,13 @@ dependencies = [ "gix-path", "gix-worktree", "io-close", - "thiserror 2.0.21", ] [[package]] name = "gix-worktree-stream" -version = "0.36.1" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de5ec0ccbab39c9994656ea031ded8ffd90b370a3cc8e360fbe3c4ebe7c64964" +checksum = "2021e1609beae0edbeefa76ac641be0571b725afacb77ac5b12f33b436e0d3d9" dependencies = [ "gix-attributes", "gix-error", @@ -3411,11 +3403,11 @@ dependencies = [ [[package]] name = "gix-zlib" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e8813f5579b3075ff9c90f7c59cd2b62b4ebb639361f0911648b22d7446cc7c" +checksum = "44a1a9c82ec5b712082566cbef8f5782472a0d3973132911e5a83380a5298fe2" dependencies = [ - "thiserror 2.0.21", + "gix-error", "zlib-rs", ] @@ -3529,9 +3521,9 @@ dependencies = [ [[package]] name = "gpui-base" -version = "0.6.6" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e904ee0d351f4e85b967e26ae986d3aa195a8d9d35fcd18184a2c40989694e" +checksum = "3cf698677b253118459f552fe15513858c669d79a25837a94e480db2ae330050" dependencies = [ "aho-corasick", "anyhow", @@ -3545,10 +3537,12 @@ dependencies = [ "gpui-pre-sum-tree", "html5ever", "instant", + "itertools 0.13.0", "lsp-types", "markdown", "markup5ever_rcdom", - "objc2 0.6.4", + "num-traits", + "objc2 0.6.5", "objc2-app-kit 0.3.2", "objc2-foundation 0.3.2", "raw-window-handle", @@ -3560,6 +3554,7 @@ dependencies = [ "smallvec", "smol", "tracing", + "unicode-linebreak", "unicode-segmentation", "web-time", "windows 0.58.0", @@ -3567,9 +3562,9 @@ dependencies = [ [[package]] name = "gpui-component" -version = "0.6.6" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cf6c72516b44bb2e66a1bd2ccf77a122ecd1b54a75559ac299bb296bfcb5bb7" +checksum = "bc8b7def8e74b0d822d3e96f6b28fb5a2c20eb7a83d30d22fa59ca8088d1159b" dependencies = [ "anyhow", "chrono", @@ -3588,7 +3583,7 @@ dependencies = [ "markdown", "notify", "num-traits", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-app-kit 0.3.2", "objc2-foundation 0.3.2", "once_cell", @@ -3646,9 +3641,9 @@ dependencies = [ [[package]] name = "gpui-component-macros" -version = "0.6.6" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3867545508c7cf6a5f6da586f60d894a3f8e7cce94b7fe82df7fad5f868ec20e" +checksum = "2968cc7f4a2bd8f51b09cfe4f1e77409951b48a0e2d48f372b010e69c3d7fb49" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -3658,9 +3653,9 @@ dependencies = [ [[package]] name = "gpui-kit-assets" -version = "0.6.6" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "111d3d03a68454318a193f137419864ccebdc7d3dc0194b0b0b3f818a6bc3d55" +checksum = "db6c481ca987f1e6f10b1aed4d47f1b301cd1dc6f3016fac93c305f2a4f307c0" dependencies = [ "anyhow", "gpui-pre", @@ -3673,9 +3668,9 @@ dependencies = [ [[package]] name = "gpui-pre" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0437c0b83e636a92bd1a39fa1d05fb632ae671289537497b35871ffbe231b84" +checksum = "d7f0bc3ebba070f8981b3f8e905a12f47d27794a30d029e59cdb9edf7a4b3360" dependencies = [ "accesskit", "anyhow", @@ -3706,6 +3701,7 @@ dependencies = [ "image", "inventory", "itertools 0.14.0", + "libc", "log", "lyon", "num_cpus", @@ -3745,33 +3741,39 @@ dependencies = [ [[package]] name = "gpui-pre-apple" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3af534f0746eb9e014114bcc0ee00dc250c4b8d75df2e437180c403aa65649c1" +checksum = "bfdd914311cd12894367c8b9908947bb0c27fd42f8b9a5ff7a0730551a83fa4c" dependencies = [ "anyhow", - "block", + "async-task", + "block2 0.6.2", "cbindgen", - "cocoa 0.26.1", "core-foundation 0.10.1", + "core-graphics 0.24.0", "core-video", "derive_more", + "dispatch2", "etagere", "foreign-types", "gpui-pre", + "gpui-pre-util", "image", + "libc", "log", + "mach2", "metal", - "objc", - "objc2 0.6.4", + "objc2 0.6.5", + "objc2-foundation 0.3.2", + "objc2-quartz-core 0.3.2", "parking_lot", ] [[package]] name = "gpui-pre-collections" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e7a65204039187d1f4b3d4c2e0233eeac54d4acb0b13f9dc1a3b5adad26c1f" +checksum = "2c060863025dc3b8e90febad2d1f4ffd23a5d0dcedba39d3f6b7820ea2fdd3a0" dependencies = [ "gpui-pre-util", "indexmap", @@ -3780,9 +3782,9 @@ dependencies = [ [[package]] name = "gpui-pre-derive-refineable" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79dfb4a05f3cd9893d7768dbf5dba1bbbe99cab7394e89b360ccb3b2bcb6b34e" +checksum = "bc834f30f5f49791e214f1fde01a009c7de91c9cd0a9f31dabfed130ba39e6cf" dependencies = [ "proc-macro2", "quote", @@ -3791,9 +3793,9 @@ dependencies = [ [[package]] name = "gpui-pre-http-client" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd5a7542c77887a5aff997d78c95884119c8463409569b63fcf060956da1682" +checksum = "5d2935cf82333da3f41774e5757837756408f01356197b41c817ad2666034453" dependencies = [ "anyhow", "async-compression", @@ -3812,9 +3814,9 @@ dependencies = [ [[package]] name = "gpui-pre-http-client-tls" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72aed510adb5e7723f8f57b9751007e3451d46a84edb59b92227178cf59cc19c" +checksum = "9bbac58d44e80c2bfdd736cacd334e5c9446d5847cd584193ee3c8634c729c2b" dependencies = [ "log", "rustls", @@ -3824,16 +3826,15 @@ dependencies = [ [[package]] name = "gpui-pre-linux" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab655cda1d6dcd549ac869e8678babc84cf573ab6794a1fe1a39c6c70c60b48" +checksum = "b1131746fad5c87b5de74dc9c73105655b0c820a2dd4bb247586573e7cf5720e" dependencies = [ "accesskit", "accesskit_unix", "anyhow", "as-raw-xcb-connection", "ashpd", - "bitflags 2.13.2", "bytemuck", "calloop", "calloop-wayland-source", @@ -3862,7 +3863,6 @@ dependencies = [ "wayland-protocols", "wayland-protocols-plasma", "wayland-protocols-wlr", - "x11-clipboard", "x11rb", "xkbcommon", "zed-scap", @@ -3871,20 +3871,20 @@ dependencies = [ [[package]] name = "gpui-pre-macos" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "951d17e41a72067ad2d35c60e08a62e8ad7fa9400b41c802e26cfb459f6c05da" +checksum = "0d756813ff1cd741a502af60fd18869e0677795936d7349642b41c49f43120c0" dependencies = [ "accesskit", "accesskit_macos", "anyhow", - "async-task", "block2 0.6.2", "cocoa 0.26.1", "core-foundation 0.10.1", "core-foundation-sys", "core-graphics 0.24.0", "core-text", + "core-video", "ctor", "dispatch2", "foreign-types", @@ -3892,14 +3892,13 @@ dependencies = [ "gpui-pre", "gpui-pre-apple", "gpui-pre-collections", + "gpui-pre-scheduler", "gpui-pre-util", "image", "itertools 0.14.0", - "libc", "log", - "mach2", "objc", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-app-kit 0.3.2", "objc2-core-graphics", "objc2-core-media", @@ -3918,9 +3917,9 @@ dependencies = [ [[package]] name = "gpui-pre-macros" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6324092b40ea8ec7c327a4a28427e366a489b4d5d23b5d1bd0243fc2f4ca7a9e" +checksum = "d2ad26ca759364694cb55487bebff4c1b7dd6accab49990ff3cda6f7a818a9f4" dependencies = [ "heck 0.5.0", "proc-macro-crate", @@ -3931,9 +3930,9 @@ dependencies = [ [[package]] name = "gpui-pre-perf" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94bff26ccd8105f6206144f8dab16a2dc02e7a68f39dada02cdf492f0afd940" +checksum = "2fcb288a506a476b6cbf97e6ec1cc0118db43f0ca91087588afa1c2d8cd4f842" dependencies = [ "gpui-pre-collections", "serde", @@ -3942,10 +3941,11 @@ dependencies = [ [[package]] name = "gpui-pre-platform" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8423d1e0a693d2f9f16c0326bb01b5e81ec0531854d596a18476934ac6880478" +checksum = "e200b7b78836f1a0fc70767d971768e88f29d8b91b697285c15fb8e373635a3e" dependencies = [ + "anyhow", "console_error_panic_hook", "gpui-pre", "gpui-pre-linux", @@ -3956,9 +3956,9 @@ dependencies = [ [[package]] name = "gpui-pre-refineable" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93b4b0a8d296a3ee5beb1136bc48f8167a6028eb1e243b56851dcd8c9fc6d7a1" +checksum = "4042345bb5bd3ecbc5d15b21ed128154f462a992058d7038cd397631f5462338" dependencies = [ "gpui-pre-derive-refineable", ] @@ -4015,9 +4015,9 @@ dependencies = [ [[package]] name = "gpui-pre-reqwest-client" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f32ccea5d1a7c8d2868d7b346c2c1f76aa3f86ec9e0575c4e7340af3afd9e9d" +checksum = "894b8d8618c92cbd4da28a04dd3fcf3c0e0607074fa99416a864ac9b63b18aae" dependencies = [ "anyhow", "bytes", @@ -4033,9 +4033,9 @@ dependencies = [ [[package]] name = "gpui-pre-scheduler" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7b10b3d2fc3fda24847a04436eca9531612c8414874a37ddc005f20e521e12" +checksum = "f4acd73345bc3c09f1b98c1b21eb4459ad8336f89bb2edcef619e11c5a08456e" dependencies = [ "async-task", "backtrace", @@ -4050,9 +4050,9 @@ dependencies = [ [[package]] name = "gpui-pre-shared-string" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe17f81bd98a0253140ea79f7f76442d7499bd8d17db302861af8e46c11d38df" +checksum = "477529fd5aa90bff969785ee9a3938484d94aa5101cdf7b84719629c0345f98a" dependencies = [ "schemars", "serde", @@ -4061,9 +4061,9 @@ dependencies = [ [[package]] name = "gpui-pre-sum-tree" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6d35e998a51d24248dad731de1f09d386cbbf46a04edde3b67f469b2ce3f16" +checksum = "9ec0ec176d576b82aed716cf47185856b54ea9528caaf9d01787024689bfd824" dependencies = [ "gpui-pre-ztracing", "heapless 0.9.3", @@ -4074,9 +4074,9 @@ dependencies = [ [[package]] name = "gpui-pre-util" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a026a30c578930d20974fd8c3d77de36223ac7ba193bd4259e7238929bc8806" +checksum = "e1635ae7d0b05400bfa211ddef6c67dc8d9f223c463022c2b3bf2c1c14c6044f" dependencies = [ "anyhow", "log", @@ -4085,9 +4085,9 @@ dependencies = [ [[package]] name = "gpui-pre-util-macros" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cbf79627a6afc626d4e887dad9d2d92bb069413e8cc692ba3e90bff219eb7a9" +checksum = "01486fce7722e5d7d7e7bb71c719dfdcc6ed917112bdc7c56d0556fdb60d10ab" dependencies = [ "gpui-pre-perf", "quote", @@ -4096,9 +4096,9 @@ dependencies = [ [[package]] name = "gpui-pre-web" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34be433b9fcb370b1fe9a1c7fe911f0eb6058791ef8167dcf6c5a5deb624975c" +checksum = "184776d0763e6889dd2842dcb1204c15055945f2bdfe926b5ef57bdbd1952a65" dependencies = [ "anyhow", "console_error_panic_hook", @@ -4125,9 +4125,9 @@ dependencies = [ [[package]] name = "gpui-pre-wgpu" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05515b32799b1767d69300921c1b562cd53104965211a0e8905acdc7aa18e693" +checksum = "439c5421cafe1a7cf68d0c0ae5cc82b26fad6b0e6345ac98d20acaf1f2463914" dependencies = [ "anyhow", "bytemuck", @@ -4152,9 +4152,9 @@ dependencies = [ [[package]] name = "gpui-pre-windows" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27662e65bfcf4445d2cccfad91f1570ec07f4b1b5de98400a9f207fd19c464cf" +checksum = "371f9bb13f97e3bea2f8b8e5e81232bb74d735153c244ae67f7400e743925b1c" dependencies = [ "accesskit", "accesskit_windows", @@ -4164,6 +4164,7 @@ dependencies = [ "futures", "gpui-pre", "gpui-pre-collections", + "gpui-pre-scheduler", "gpui-pre-util", "image", "itertools 0.14.0", @@ -4181,9 +4182,9 @@ dependencies = [ [[package]] name = "gpui-pre-zlog" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a5af0b734a391a84872eb770b3ee9830091ec2487b79d06371fe14eefb2b5d" +checksum = "3bbe5b98630ef4bfed5a7105ec1062e78d571912bc491388f07ea22f2457c18b" dependencies = [ "anyhow", "chrono", @@ -4193,9 +4194,9 @@ dependencies = [ [[package]] name = "gpui-pre-ztracing" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a24cb19f78c5bc3aab8ddf1e8e0bd6b402fbcb9c7f112f64ddbedef8f8768a59" +checksum = "f806400f6bda1fdd9fc627e158c0e44fb0c4b7767582a3621efcf92f4a850db7" dependencies = [ "gpui-pre-zlog", "gpui-pre-ztracing-macro", @@ -4205,9 +4206,9 @@ dependencies = [ [[package]] name = "gpui-pre-ztracing-macro" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1bb25850ad31b88bbdef454afb93ec4cdb81f5e200ba5b3f1a0368111780d2c" +checksum = "d337c9acf058238e45ce0570d8a5958439242889492f91ae2d8e324211a61ccd" [[package]] name = "granit-parser" @@ -4221,9 +4222,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8e5e5a340588f4452631496976cf8636d4a7ecf600239fdc27615d2530bc16" +checksum = "7d29020232d6aa3fb1daca64c1127cf662cf97f254ae16c18c05b8ab635fc118" dependencies = [ "atomic-waker", "bytes", @@ -4502,9 +4503,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b501faa50e7a26c3d3560ca625132f4078a17771f4810baf70475ae48cbe43" +checksum = "2c3e324da4c95177d6291d4c8730197c0d1822f8a9766814a4a44fa5ab797c9c" dependencies = [ "atomic-waker", "bytes", @@ -4770,11 +4771,11 @@ dependencies = [ [[package]] name = "inotify" -version = "0.10.2" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc" +checksum = "4cc00ea907cab49550b7da656f80ebb97be1b997d931fbcd28d39734e17ce592" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.13.2", "inotify-sys", "libc", ] @@ -4921,9 +4922,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.37" +version = "0.2.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1baf72f08796de0260609515130699b890ac25f30e610ad894bc5856cafdb" +checksum = "b2b005715dcbeb0089a3c0dab99f2ff1cc3b2525323552703d648585d342a383" dependencies = [ "defmt 1.1.1", "jiff-core", @@ -4948,9 +4949,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.37" +version = "0.2.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "378268a1116ad67ae6228701118ac9f491d78fda38a40a1f1a9e1348de6f7212" +checksum = "2cc9817253cf7c7ee4684451bd327e88d6f3658014e54a29198625590650695c" dependencies = [ "jiff-core", "proc-macro2", @@ -4960,9 +4961,9 @@ dependencies = [ [[package]] name = "jiff-tzdb" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e" +checksum = "fa8377070c6bae868759445e5a77f66d84f0b72f3a054bfb00e6d038b8282da7" [[package]] name = "jiff-tzdb-platform" @@ -5352,7 +5353,7 @@ checksum = "fd604973958ddcc11b561193c0fb96ba146506ef2f231ef2e7c35fd2cbc9beca" dependencies = [ "cc", "log", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-foundation 0.3.2", "time", "uuid", @@ -5515,9 +5516,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8" +checksum = "1788edb87fdc09c7e26304471e2f5be8cdefb1b6930d6e3985fc02ff53bf86ee" dependencies = [ "libc", "log", @@ -5652,7 +5653,7 @@ dependencies = [ [[package]] name = "nostr" version = "0.45.5" -source = "git+https://github.com/rust-nostr/nostr#1c687bb852eb6dc90cd5e05a9571d0b20becc4b8" +source = "git+https://github.com/rust-nostr/nostr#463f0c2d48e1d3c9e295cc231715d8a3855c65d3" dependencies = [ "aes", "base64 0.22.1", @@ -5678,7 +5679,7 @@ dependencies = [ [[package]] name = "nostr-connect" version = "0.45.2" -source = "git+https://github.com/rust-nostr/nostr#1c687bb852eb6dc90cd5e05a9571d0b20becc4b8" +source = "git+https://github.com/rust-nostr/nostr#463f0c2d48e1d3c9e295cc231715d8a3855c65d3" dependencies = [ "async-utility", "futures-core", @@ -5692,7 +5693,7 @@ dependencies = [ [[package]] name = "nostr-database" version = "0.45.2" -source = "git+https://github.com/rust-nostr/nostr#1c687bb852eb6dc90cd5e05a9571d0b20becc4b8" +source = "git+https://github.com/rust-nostr/nostr#463f0c2d48e1d3c9e295cc231715d8a3855c65d3" dependencies = [ "nostr", "opaquerr", @@ -5701,7 +5702,7 @@ dependencies = [ [[package]] name = "nostr-gossip" version = "0.45.1" -source = "git+https://github.com/rust-nostr/nostr#1c687bb852eb6dc90cd5e05a9571d0b20becc4b8" +source = "git+https://github.com/rust-nostr/nostr#463f0c2d48e1d3c9e295cc231715d8a3855c65d3" dependencies = [ "nostr", "opaquerr", @@ -5710,7 +5711,7 @@ dependencies = [ [[package]] name = "nostr-gossip-memory" version = "0.45.1" -source = "git+https://github.com/rust-nostr/nostr#1c687bb852eb6dc90cd5e05a9571d0b20becc4b8" +source = "git+https://github.com/rust-nostr/nostr#463f0c2d48e1d3c9e295cc231715d8a3855c65d3" dependencies = [ "indexmap", "lru", @@ -5722,7 +5723,7 @@ dependencies = [ [[package]] name = "nostr-lmdb" version = "0.45.3" -source = "git+https://github.com/rust-nostr/nostr#1c687bb852eb6dc90cd5e05a9571d0b20becc4b8" +source = "git+https://github.com/rust-nostr/nostr#463f0c2d48e1d3c9e295cc231715d8a3855c65d3" dependencies = [ "async-utility", "flatbuffers", @@ -5737,7 +5738,7 @@ dependencies = [ [[package]] name = "nostr-sdk" version = "0.45.4" -source = "git+https://github.com/rust-nostr/nostr#1c687bb852eb6dc90cd5e05a9571d0b20becc4b8" +source = "git+https://github.com/rust-nostr/nostr#463f0c2d48e1d3c9e295cc231715d8a3855c65d3" dependencies = [ "async-utility", "async-wsocket", @@ -5758,12 +5759,11 @@ dependencies = [ [[package]] name = "notify" -version = "7.0.0" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c533b4c39709f9ba5005d8002048266593c1cfaf3c5f0739d5b8ab0c6c504009" +checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ "bitflags 2.13.2", - "filetime", "fsevent-sys", "inotify", "kqueue", @@ -5772,7 +5772,7 @@ dependencies = [ "mio", "notify-types", "walkdir", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] @@ -5791,11 +5791,11 @@ dependencies = [ [[package]] name = "notify-types" -version = "1.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585d3cb5e12e01aed9e8a1f70d5c6b5e86fe2a6e48fc8cd0b3e0b8df6f6eb174" +checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" dependencies = [ - "instant", + "bitflags 2.13.2", ] [[package]] @@ -5963,9 +5963,9 @@ checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" [[package]] name = "objc2" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +checksum = "19d5490aaf8f1d7cf7688dfa9b0ce07900e168852c45cd2c03f534dfd27cfd0b" dependencies = [ "objc-sys", "objc2-encode", @@ -5973,9 +5973,9 @@ dependencies = [ [[package]] name = "objc2" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +checksum = "08849bbd4767dfae9457696856ae1c84fe4e0281bbe4a7abff2d0e06fb7981f8" dependencies = [ "objc2-encode", ] @@ -5989,7 +5989,7 @@ dependencies = [ "bitflags 2.13.2", "block2 0.5.1", "libc", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-core-data 0.2.2", "objc2-core-image 0.2.2", "objc2-foundation 0.2.2", @@ -6005,7 +6005,7 @@ dependencies = [ "bitflags 2.13.2", "block2 0.6.2", "libc", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-cloud-kit", "objc2-core-data 0.3.2", "objc2-core-foundation", @@ -6024,7 +6024,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" dependencies = [ "bitflags 2.13.2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-foundation 0.3.2", ] @@ -6035,7 +6035,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1eebcea8b0dbff5f7c8504f3107c68fc061a3eb44932051c8cf8a68d969c3b2" dependencies = [ "dispatch2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-audio-types", "objc2-core-foundation", ] @@ -6047,7 +6047,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a89f2ec274a0cf4a32642b2991e8b351a404d290da87bb6a9a9d8632490bd1c" dependencies = [ "bitflags 2.13.2", - "objc2 0.6.4", + "objc2 0.6.5", ] [[package]] @@ -6058,7 +6058,7 @@ checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -6069,7 +6069,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" dependencies = [ "bitflags 2.13.2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-foundation 0.3.2", ] @@ -6081,7 +6081,7 @@ checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ "bitflags 2.13.2", "dispatch2", - "objc2 0.6.4", + "objc2 0.6.5", ] [[package]] @@ -6092,7 +6092,7 @@ checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ "bitflags 2.13.2", "dispatch2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-foundation", "objc2-io-surface", ] @@ -6104,7 +6104,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", "objc2-metal 0.2.2", ] @@ -6115,7 +6115,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" dependencies = [ - "objc2 0.6.4", + "objc2 0.6.5", "objc2-foundation 0.3.2", ] @@ -6125,7 +6125,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" dependencies = [ - "objc2 0.6.4", + "objc2 0.6.5", "objc2-foundation 0.3.2", ] @@ -6137,7 +6137,7 @@ checksum = "05ec576860167a15dd9fce7fbee7512beb4e31f532159d3482d1f9c6caedf31d" dependencies = [ "bitflags 2.13.2", "dispatch2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-audio", "objc2-core-audio-types", "objc2-core-foundation", @@ -6151,7 +6151,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" dependencies = [ "bitflags 2.13.2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-foundation", "objc2-core-graphics", ] @@ -6163,7 +6163,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ "bitflags 2.13.2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-foundation", "objc2-core-graphics", "objc2-io-surface", @@ -6184,7 +6184,7 @@ dependencies = [ "bitflags 2.13.2", "block2 0.5.1", "libc", - "objc2 0.5.2", + "objc2 0.5.3", ] [[package]] @@ -6196,7 +6196,7 @@ dependencies = [ "bitflags 2.13.2", "block2 0.6.2", "libc", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-foundation", ] @@ -6207,7 +6207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ "bitflags 2.13.2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-foundation", ] @@ -6219,7 +6219,7 @@ checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -6231,7 +6231,7 @@ checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" dependencies = [ "bitflags 2.13.2", "block2 0.6.2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-foundation 0.3.2", ] @@ -6243,7 +6243,7 @@ checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", "objc2-metal 0.2.2", ] @@ -6255,7 +6255,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" dependencies = [ "bitflags 2.13.2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-foundation", "objc2-foundation 0.3.2", "objc2-metal 0.3.2", @@ -6269,7 +6269,7 @@ checksum = "74b7c5390f477482f001bc354d6571a70db7e4f8d5288e860c45521fbce11394" dependencies = [ "block2 0.6.2", "dispatch2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-graphics", "objc2-core-media", "objc2-foundation 0.3.2", @@ -6283,7 +6283,7 @@ checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" dependencies = [ "bitflags 2.13.2", "block2 0.6.2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-location", "objc2-foundation 0.3.2", ] @@ -6771,9 +6771,9 @@ dependencies = [ [[package]] name = "powerfmt" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +checksum = "4a6394b9e965e73d0a289ee54f589087e2c676aedf60885baf52c76b771e4958" [[package]] name = "ppv-lite86" @@ -7198,7 +7198,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40d213455a5f1dc59214213c7330e074ddf8114c9a42411eb890c767357ce135" dependencies = [ - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-foundation", "objc2-foundation 0.3.2", "objc2-quartz-core 0.3.2", @@ -8032,22 +8032,18 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "sha1-checked" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89f599ac0c323ebb1c6082821a54962b839832b03984598375bff3975b804423" -dependencies = [ - "digest 0.10.7", - "sha1", -] - [[package]] name = "sha1_smol" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" +[[package]] +name = "sha1dc" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5b0ebf6537e3e8db8bb7d21ecb6d7399738c953c757945c6b95e46c4e95df7b" + [[package]] name = "sha2" version = "0.10.9" @@ -8313,7 +8309,6 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523" dependencies = [ - "borsh", "serde_core", ] @@ -8853,9 +8848,9 @@ checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee" [[package]] name = "tokio" -version = "1.53.1" +version = "1.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" +checksum = "e95f91fcc7a621e8b030f6aa23c71fe9838ae2fb4d8118b75602a328f5144044" dependencies = [ "bytes", "libc", @@ -9457,9 +9452,9 @@ dependencies = [ [[package]] name = "tree-sitter-swift" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe36052155b9dd69ca82b3b8f1b4ccfb2d867125ac1a4db1dd7331829242668c" +checksum = "2688c06564afa397313e0db17d140a73e2c6a47f3884794614246167c9dd5dfd" dependencies = [ "cc", "tree-sitter-language", @@ -9581,9 +9576,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicase" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" +checksum = "357cc3acc6a036009fd6c973ed009037c732d60d0b4f6c673e9041497482a28f" [[package]] name = "unicode-bidi" @@ -9899,9 +9894,9 @@ dependencies = [ [[package]] name = "want" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +checksum = "ec4cdd0dd910afe868b7ef477227d8d538b46b3075031afee8a9f2acb0a2ed0b" dependencies = [ "try-lock", ] @@ -10130,7 +10125,7 @@ dependencies = [ "jni", "log", "ndk-context", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-app-kit 0.3.2", "objc2-foundation 0.3.2", "url", @@ -10297,7 +10292,7 @@ dependencies = [ "log", "naga", "ndk-sys", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-foundation", "objc2-foundation 0.3.2", "objc2-metal 0.3.2", @@ -10750,11 +10745,11 @@ dependencies = [ [[package]] name = "windows-sys" -version = "0.59.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.52.6", + "windows-targets 0.53.5", ] [[package]] @@ -10999,12 +10994,12 @@ dependencies = [ [[package]] name = "winreg" -version = "0.55.0" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +checksum = "7d6f32a0ff4a9f6f01231eb2059cc85479330739333e0e58cadf03b6af2cca10" dependencies = [ "cfg-if", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -11061,16 +11056,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "x11-clipboard" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "662d74b3d77e396b8e5beb00b9cad6a9eccf40b2ef68cc858784b14c41d535a3" -dependencies = [ - "libc", - "x11rb", -] - [[package]] name = "x11rb" version = "0.13.2" @@ -11389,18 +11374,18 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.59" +version = "0.8.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df92bf3d9227be3d53173901ddbffac2babc27ae50f397776ffd6dc33f800cb" +checksum = "6400fc4bb7426f6faac3fb07566122bb18622e3022bd2c36426a92ed489b1dbe" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.59" +version = "0.8.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac4f328cf2f05d084e496c3e9c3f33ed0a183656a16e1fcec4d464d8373aec82" +checksum = "99c27cc7525bad4df59a45e073c45b2c2aa820efb588234cc23a547ec69a34db" dependencies = [ "proc-macro2", "quote", @@ -11430,9 +11415,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" +checksum = "e13084392c5e4bc371903e2935a5eaeed24905a7511356b883835e18a78f6879" dependencies = [ "zeroize_derive", ] @@ -11573,8 +11558,3 @@ dependencies = [ "syn 3.0.6", "winnow 1.0.4", ] - -[[patch.unused]] -name = "psm" -version = "0.1.32" -source = "git+https://github.com/rust-lang/stacker?branch=master#d3ac2df79a409c681329006e9b31c96ab9c5fcae" diff --git a/Cargo.toml b/Cargo.toml index d4287b2..275b713 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,13 +9,13 @@ edition = "2024" publish = false [workspace.dependencies] -gpui = { package = "gpui-pre", version = "0.3.6" } -gpui_platform = { package = "gpui-pre-platform", version = "0.3.6", features = ["font-kit", "x11", "wayland"] } -reqwest_client = { package = "gpui-pre-reqwest-client", version = "0.3.6" } +gpui = { package = "gpui-pre", version = "0.3.8" } +gpui_platform = { package = "gpui-pre-platform", version = "0.3.8", features = ["font-kit", "x11", "wayland"] } +reqwest_client = { package = "gpui-pre-reqwest-client", version = "0.3.8" } # GPUI Kit -gpui-component = { version = "0.6.6", features = ["tree-sitter-languages"] } -gpui-base = "0.6.6" +gpui-component = { version = "0.7.1", features = ["tree-sitter-languages"] } +gpui-base = "0.7.1" dock = { path = "crates/dock" } settings = { path = "crates/settings" } @@ -27,7 +27,7 @@ nostr-gossip-memory = { git = "https://github.com/rust-nostr/nostr" } nostr-connect = { git = "https://github.com/rust-nostr/nostr" } nostr-sdk = { git = "https://github.com/rust-nostr/nostr" } -gix = { version = "0.87.1", default-features = false, features = ["sha1", "blocking-network-client", "blocking-http-transport-reqwest-rust-tls", "worktree-mutation", "status"] } +gix = { version = "0.88", default-features = false, features = ["sha1", "blocking-network-client", "blocking-http-transport-reqwest-rust-tls", "worktree-mutation", "status"] } smol = "2" futures = "0.3" @@ -44,10 +44,6 @@ tracing = "0.1" errno = { version = "0.3.14", default-features = false } instant = "0.1" -[patch.crates-io] -# Use stacker's psm version which may have better WASM support -psm = { git = "https://github.com/rust-lang/stacker", branch = "master" } - [profile.release] strip = true opt-level = "z" diff --git a/crates/dock/src/dock_area.rs b/crates/dock/src/dock_area.rs index 87a329f..b3c3176 100644 --- a/crates/dock/src/dock_area.rs +++ b/crates/dock/src/dock_area.rs @@ -13,8 +13,8 @@ use gpui_base::dock::{ DockArea, DockAreaRenderer, DockContext, DockEvent, DockPlacement, NodeId, PanelState, PanelView, TabGroupRenderer, }; -use gpui_base::resize_handle; -use gpui_component::{ActiveTheme as _, Side}; +use gpui_base::{HandleEdge, resize_handle}; +use gpui_component::ActiveTheme as _; use crate::invalid_panel::InvalidPanel; use crate::panel_handle; @@ -164,7 +164,12 @@ impl SignedDockSkin { let shared = self.shared().clone(); resize_handle("resize-handle", placement.axis()) - .when(placement.is_left(), |this| this.placement(Side::Left)) + .when(placement.is_left(), |this| { + this.inside(HandleEdge::Trailing) + }) + .when(placement.is_right() || placement.is_bottom(), |this| { + this.inside(HandleEdge::Leading) + }) .on_drag(ResizePanel, move |info, _, _, cx| { cx.stop_propagation(); shared.resizing_dock().set(Some(placement)); diff --git a/crates/signed_git/Cargo.toml b/crates/signed_git/Cargo.toml index d5992cb..37eb6c5 100644 --- a/crates/signed_git/Cargo.toml +++ b/crates/signed_git/Cargo.toml @@ -11,8 +11,8 @@ nostr.workspace = true serde.workspace = true serde_json.workspace = true gix = { workspace = true, features = ["revision", "blob-diff"] } -gix-worktree = "0.56" -gix-worktree-state = "0.34" +gix-worktree = "0.57" +gix-worktree-state = "0.35" anyhow.workspace = true diffy = "0.5" ignore = "0.4" diff --git a/crates/signed_git/src/cache.rs b/crates/signed_git/src/cache.rs index 5cc04d2..667e63f 100644 --- a/crates/signed_git/src/cache.rs +++ b/crates/signed_git/src/cache.rs @@ -29,8 +29,8 @@ impl GitCache { let path = self.repo_path(addr); match gix::open(&path) { Ok(repo) => Ok(Some(Repo { inner: repo })), - Err(gix::open::Error::NotARepository { .. }) => Ok(None), - Err(gix::open::Error::Io(e)) if e.kind() == std::io::ErrorKind::NotFound => Ok(None), + // A missing path and a directory that is no repository are both classified `NotFound`. + Err(e) if e.is_not_found() => Ok(None), Err(e) => Err(e.into()), } } diff --git a/crates/signed_git/src/diff.rs b/crates/signed_git/src/diff.rs index 81e799a..17a5fc8 100644 --- a/crates/signed_git/src/diff.rs +++ b/crates/signed_git/src/diff.rs @@ -1,6 +1,7 @@ use anyhow::Result; use gix::diff::blob::unified_diff::{ConsumeHunk, DiffLineKind as GixLineKind, HunkHeader}; +use crate::GixResultExt as _; use crate::repo::Repo; #[derive(Debug, Clone, Copy, PartialEq, Eq)] @@ -164,7 +165,7 @@ impl Repo { .resource_cache .options .skip_internal_diff_if_external_is_configured = true; - let outcome = platform.resource_cache.prepare_diff()?; + let outcome = platform.resource_cache.prepare_diff().into_anyhow()?; let (binary, hunks, insertions, deletions) = match outcome.operation { Operation::InternalDiff { algorithm } => { diff --git a/crates/signed_git/src/history.rs b/crates/signed_git/src/history.rs index d26c916..cc8adeb 100644 --- a/crates/signed_git/src/history.rs +++ b/crates/signed_git/src/history.rs @@ -3,6 +3,7 @@ use std::path::{Path, PathBuf}; use anyhow::Result; +use crate::GixResultExt as _; use crate::repo::Repo; #[derive(Debug, Clone)] @@ -29,8 +30,8 @@ impl FileCommit { commit: &gix::Commit<'_>, include_description: bool, ) -> Result { - let author = commit.author()?; - let message = commit.message()?; + let author = commit.author().into_anyhow()?; + let message = commit.message().into_anyhow()?; Ok(FileCommit { id: commit.id().shorten_or_id().to_string(), @@ -44,7 +45,7 @@ impl FileCommit { None }, author: String::from_utf8_lossy(author.name).trim().to_string(), - time: author.time()?.seconds, + time: author.time().into_anyhow()?.seconds, }) } } diff --git a/crates/signed_git/src/lib.rs b/crates/signed_git/src/lib.rs index c967fe4..2e30a24 100644 --- a/crates/signed_git/src/lib.rs +++ b/crates/signed_git/src/lib.rs @@ -20,6 +20,19 @@ pub use repo::{Repo, RepoRefState}; pub use scan::{LocalRepo, find_git_repos}; pub use worktree::WorktreeSnapshot; +pub(crate) trait GixResultExt { + fn into_anyhow(self) -> anyhow::Result; +} + +impl GixResultExt for Result> +where + E: std::error::Error + Send + Sync + 'static, +{ + fn into_anyhow(self) -> anyhow::Result { + self.map_err(|exn| anyhow::Error::from(exn.into_error())) + } +} + #[cfg(test)] fn git_in(dir: &std::path::Path, args: &[&str]) -> anyhow::Result { let output = Repo::run_git(dir, args, "git")?; diff --git a/crates/signed_git/src/nip34.rs b/crates/signed_git/src/nip34.rs index d81caa2..7b67d49 100644 --- a/crates/signed_git/src/nip34.rs +++ b/crates/signed_git/src/nip34.rs @@ -2,6 +2,7 @@ use anyhow::Result; use gix::bstr::ByteSlice; use nostr::prelude::*; +use crate::GixResultExt as _; use crate::repo::Repo; /// The kind of NIP-34 relationship a local repository has on disk. @@ -186,7 +187,7 @@ impl Repo { pub fn set_nostr_repo(&self, naddr: &str) -> Result<()> { self.edit_local_config(|config| { - config.set_raw_value("nostr.repo", naddr)?; + config.set_raw_value("nostr.repo", naddr).into_anyhow()?; Ok(()) }) } diff --git a/crates/signed_git/src/patch.rs b/crates/signed_git/src/patch.rs index 33bf7b6..bb0b543 100644 --- a/crates/signed_git/src/patch.rs +++ b/crates/signed_git/src/patch.rs @@ -12,7 +12,6 @@ use crate::repo::Repo; pub struct PatchParser; impl PatchParser { - // A malformed input yields one element covering it. pub fn split_patch_series(patch: &str) -> Vec<&str> { Self::envelopes(patch) .into_iter() @@ -20,8 +19,6 @@ impl PatchParser { .collect() } - // Backed by `diffy::patch_set`, which implements git's extended diff format: - // rename and copy detection, binary detection, quoted/escaped paths. pub fn patch_diffs(patch: &str) -> Result { if !patch.lines().any(|line| line.starts_with("diff --git ")) { return Ok(CommitDiff { files: Vec::new() }); @@ -36,8 +33,6 @@ impl PatchParser { Ok(CommitDiff { files }) } - // Entries appear in patch order, oldest first as `git format-patch` - // produces them. pub fn patch_commits(patch: &str) -> Vec { Self::envelopes(patch) .into_iter() @@ -62,8 +57,6 @@ impl PatchParser { .collect() } - // The one parser `split_patch_series` and `patch_commits` share. - // A malformed input yields one message covering the whole input. fn envelopes(patch: &str) -> Vec> { let mut messages: Vec> = Vec::new(); let mut current: Option<(usize, &str, Vec<&str>)> = None; @@ -136,7 +129,7 @@ impl PatchParser { } } - // Matches `[PATCH]`, `[PATCH 1/2]`, `[RFC PATCH]`, etc. + /// Matches `[PATCH]`, `[PATCH 1/2]`, `[RFC PATCH]`, etc. fn strip_patch_prefix(subject: &str) -> String { let trimmed = subject.trim(); let Some(rest) = trimmed.strip_prefix('[') else { @@ -153,9 +146,6 @@ impl PatchParser { } fn file_diff(file: FilePatch<'_, str>) -> Result { - // The `---`/`+++` paths carry the `a/`/`b/` prefix, dropped the same way - // `git apply -p1` does; rename and copy paths come from their own - // headers, unprefixed. let stripped; let operation = match file.operation() { operation @ (FileOperation::Rename { .. } | FileOperation::Copy { .. }) => operation, @@ -213,8 +203,6 @@ impl PatchParser { }) } - // `diffy` reports only the hunk header ranges; the per-line numbers are - // counted from them the way the header encodes them. fn hunk_diff(hunk: &Hunk<'_, str>) -> DiffHunk { let old_range = hunk.old_range(); let new_range = hunk.new_range(); @@ -272,7 +260,7 @@ impl PatchParser { } } -// A `git format-patch` mbox message, split on its `From <40-hex> ` envelope. +/// A `git format-patch` mbox message, split on its `From <40-hex> ` envelope. struct Envelope<'a> { text: &'a str, id: &'a str, @@ -290,8 +278,6 @@ impl Envelope<'_> { } impl Repo { - // The git CLI handles the mbox format natively. - // TODO: replace with a pure-Rust implementation later without changing callers. pub fn apply_patch(&self, patch: &str) -> Result<()> { let workdir = self .inner diff --git a/crates/signed_git/src/remote.rs b/crates/signed_git/src/remote.rs index 7170444..a1445fa 100644 --- a/crates/signed_git/src/remote.rs +++ b/crates/signed_git/src/remote.rs @@ -6,6 +6,7 @@ use anyhow::{Context, Result, bail}; use gix::interrupt::IS_INTERRUPTED; use gix::progress::Discard; +use crate::GixResultExt as _; use crate::repo::Repo; impl Repo { @@ -15,7 +16,8 @@ impl Repo { gix::refspec::parse( gix::bstr::BStr::new("+refs/nostr/*:refs/nostr/*"), gix::refspec::parse::Operation::Fetch, - )? + ) + .into_anyhow()? .to_owned(), ], ..Default::default() @@ -87,10 +89,6 @@ impl Repo { Ok(()) } - // The convergence probe for a push that lost the compare-and-swap race to - // the grasp server's own background ref alignment. Extra advertised refs - // are ignored: the question is whether the pushed data is already there, - // not whether the remote is an exact mirror. pub fn remote_has_refs(&self, url: &str, expected: &[(String, String)]) -> Result { if expected.is_empty() { return Ok(true); @@ -98,8 +96,6 @@ impl Repo { let url = Self::transport_url(url); - // A URL-created remote has no configured fetch refspecs, and `ref_map` - // only keeps refs matching one; match each expected ref by exact name. let refspecs = expected .iter() .map(|(name, _)| { @@ -110,6 +106,7 @@ impl Repo { .map(|spec| spec.to_owned()) }) .collect::, _>>() + .into_anyhow() .context("invalid refspec")?; let options = gix::remote::ref_map::Options { @@ -126,8 +123,8 @@ impl Repo { .ref_map(Discard, options) .with_context(|| format!("listing refs of {url} failed"))?; - // Peeled tag entries carry the tag object in their direct oid, matching - // `git ls-remote` while skipping the duplicated `^{}` lines. + // Peeled tag entries carry the tag object in their direct oid, + // matching `git ls-remote` while skipping the duplicated `^{}` lines. let advertised: HashMap = refs .remote_refs .iter() @@ -149,23 +146,30 @@ impl Repo { // `git remote add` also configures the default fetch refspec. self.edit_local_config(|config| { - config.set_raw_value("remote.origin.url", url)?; - config.set_raw_value("remote.origin.fetch", "+refs/heads/*:refs/remotes/origin/*")?; + config + .set_raw_value("remote.origin.url", url) + .into_anyhow()?; + config + .set_raw_value("remote.origin.fetch", "+refs/heads/*:refs/remotes/origin/*") + .into_anyhow()?; Ok(()) }) } - // A working copy cloned from a local mirror is re-targeted at the - // grasp server; a pre-existing fetch refspec is left untouched. + // A working copy cloned from a local mirror is re-targeted at the grasp server, + // a pre-existing fetch refspec is left untouched. pub fn set_origin(&self, url: &str) -> Result<()> { let had_origin = self.inner.find_remote("origin").is_ok(); self.edit_local_config(|config| { - config.set_raw_value("remote.origin.url", url)?; + config + .set_raw_value("remote.origin.url", url) + .into_anyhow()?; if !had_origin { config - .set_raw_value("remote.origin.fetch", "+refs/heads/*:refs/remotes/origin/*")?; + .set_raw_value("remote.origin.fetch", "+refs/heads/*:refs/remotes/origin/*") + .into_anyhow()?; } Ok(()) @@ -182,13 +186,12 @@ impl Repo { .map(|url| url.to_string())) } - // Never touches the checked-out refs or the worktree. The last error is - // returned when no URL works. pub fn fetch_refs>(&self, urls: &[U], refspec: &str) -> Result<()> { let refspec = gix::refspec::parse( gix::bstr::BStr::new(refspec), gix::refspec::parse::Operation::Fetch, ) + .into_anyhow() .context("invalid fetch refspec")? .to_owned(); @@ -236,18 +239,19 @@ impl Repo { gix::lock::acquire::Fail::Immediately, None, ) + .into_anyhow() .context("failed to lock repository config")?; let mut config = match gix::config::File::from_path_no_includes(config_path, gix::config::Source::Local) { Ok(config) => config, - Err(gix::config::file::init::from_paths::Error::Io { source, .. }) - if source.kind() == std::io::ErrorKind::NotFound => - { - gix::config::File::default() + Err(error) if error.is_not_found() => gix::config::File::default(), + Err(error) => { + return Err(error) + .into_anyhow() + .context("failed to read repository config"); } - Err(error) => return Err(error).context("failed to read repository config"), }; edit(&mut config)?; diff --git a/crates/signed_git/src/repo.rs b/crates/signed_git/src/repo.rs index fe6184f..a286bd6 100644 --- a/crates/signed_git/src/repo.rs +++ b/crates/signed_git/src/repo.rs @@ -2,11 +2,23 @@ use std::path::Path; use anyhow::{Context, Result}; -// History walks re-decode the same commit objects without one; sized -// generously, a walk can cover a large portion of the history. +use crate::GixResultExt as _; + const OBJECT_CACHE_BYTES: usize = 64 * 1024 * 1024; -// One `open` per operation instead of every helper re-opening by path. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct RepoRefState { + pub refs: Vec<(String, String)>, + pub head: Option, +} + +impl RepoRefState { + fn new(refs: Vec<(String, String)>, head: Option) -> Self { + Self { refs, head } + } +} + +/// One `open` per operation instead of every helper re-opening by path. pub struct Repo { pub(crate) inner: gix::Repository, } @@ -22,8 +34,6 @@ impl Repo { Self::open(workdir).ok() } - // Only history walks benefit from the object cache, they re-decode the - // same commit objects repeatedly; single-object reads open plain. pub fn open_cached(workdir: &Path) -> Result { let mut repo = gix::open(workdir)?; repo.object_cache_size_if_unset(OBJECT_CACHE_BYTES); @@ -41,8 +51,6 @@ impl Repo { let (signature, mut time_buf) = Self::repository_signature(); let signature = signature.to_ref(&mut time_buf); - // The initial branch is `main` regardless of `init.defaultBranch`: - // point the unborn HEAD there. let head = gix::refs::FullName::try_from("HEAD") .map_err(|e| anyhow::anyhow!("invalid ref name: {e}"))?; @@ -98,12 +106,14 @@ impl Repo { // Populate the index so the fresh repository is clean, as `git add` // and `git commit` would leave it. let mut index = repo.index_from_tree(&tree)?; - index.write(gix::index::write::Options::default())?; + index + .write(gix::index::write::Options::default()) + .into_anyhow()?; Ok(commit.to_string()) } - // Not kept in any cache, unlike `GitCache::ensure_clone`. + /// Not kept in any cache, unlike `GitCache::ensure_clone`. pub fn clone>(clone_urls: &[U], path: &Path) -> Result { if path.exists() { anyhow::bail!("destination {} already exists", path.display()); @@ -130,7 +140,9 @@ impl Repo { fn clone_from(url: &str, path: &Path) -> Result { let url = Self::transport_url(url); - let url = gix::url::parse(url).context("invalid clone URL")?; + let url = gix::url::parse(url) + .into_anyhow() + .context("invalid clone URL")?; let mut prepare = gix::prepare_clone(url, path)?; let (mut checkout, _fetch) = @@ -149,24 +161,20 @@ impl Repo { self.inner.workdir() } - // `None` for an unborn HEAD. + /// `None` for an unborn HEAD. pub fn head(&self) -> Option { self.inner.head_id().ok().map(|id| id.to_string()) } - // `Ok(None)` when the revisions share no common ancestor — a valid - // outcome for a proposal; unresolvable revisions are errors. pub fn merge_base(&self, a: &str, b: &str) -> Result> { let a = self.inner.rev_parse_single(a.as_bytes())?; let b = self.inner.rev_parse_single(b.as_bytes())?; - match self.inner.merge_base(a, b) { - Ok(id) => Ok(Some(id.to_string())), - Err(gix::repository::merge_base::Error::NotFound { .. }) => Ok(None), - Err(e) => Err(e.into()), - } + // `merge_base` reports a missing base as an unclassified error, while the + // many-bases variant keeps the distinction as an empty result. + let bases = self.inner.merge_bases_many(a.detach(), &[b.detach()])?; + Ok(bases.first().map(|id| id.to_string())) } - // Oldest first: the order `git am` creates them. pub fn commits_since(&self, base: Option<&str>) -> Result> { let head = match self.inner.head_id() { Ok(head) => head, @@ -198,7 +206,6 @@ impl Repo { Ok(commits) } - // The NIP-34 announcement's `euc` marker; `None` without commits. pub fn root_commit(&self) -> Result> { let Ok(head) = self.inner.head_id() else { return Ok(None); @@ -331,11 +338,9 @@ impl Repo { Err(_) => None, }; - Ok(RepoRefState { refs, head }) + Ok(RepoRefState::new(refs, head)) } - // Fast-forward only: local-only commits or diverged history must never - // be rewritten by a refresh. Returns whether any branch moved. pub fn fast_forward_branches(&self) -> Result { use gix::refs::transaction::{Change, LogChange, PreviousValue, RefEdit, RefLog}; @@ -437,8 +442,6 @@ impl Repo { Ok(moved) } - // Like `git -c user.name=… -c user.email=…` per invocation: the repository - // works without a global git identity, and `gix` runs no hooks and never signs. pub(crate) fn repository_signature() -> (gix::actor::Signature, gix::date::parse::TimeBuf) { let seconds = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) @@ -454,17 +457,9 @@ impl Repo { (signature, gix::date::parse::TimeBuf::default()) } - // GRASP servers announce `grasp://` clone URLs but the transport is git - // smart HTTP, so the scheme is rewritten for gix. pub(crate) fn transport_url(url: &str) -> String { url.strip_prefix("grasp://") .map(|rest| format!("https://{rest}")) .unwrap_or_else(|| url.to_owned()) } } - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct RepoRefState { - pub refs: Vec<(String, String)>, - pub head: Option, -} diff --git a/crates/signed_git/src/scan.rs b/crates/signed_git/src/scan.rs index 7ef09a2..3fb7797 100644 --- a/crates/signed_git/src/scan.rs +++ b/crates/signed_git/src/scan.rs @@ -5,7 +5,7 @@ use ignore::WalkBuilder; use crate::nip34::Nip34Binding; use crate::repo::Repo; -// Caps nesting so pathological trees can't stall the scan. +/// Caps nesting so pathological trees can't stall the scan. const SCAN_MAX_DEPTH: usize = 12; #[derive(Debug, Clone)] diff --git a/crates/signed_git/src/worktree.rs b/crates/signed_git/src/worktree.rs index 3e3a350..ba0fde8 100644 --- a/crates/signed_git/src/worktree.rs +++ b/crates/signed_git/src/worktree.rs @@ -4,21 +4,51 @@ use std::path::{Path, PathBuf}; use anyhow::{Context, Result}; use gix::progress::Discard; +use crate::GixResultExt as _; use crate::history::FileCommit; use crate::repo::Repo; +pub struct WorktreeSnapshot { + pub entries: Vec, + pub readme_path: Option, + pub readme: Option>, + // `None` when detached, for example on a tag. + pub current_branch: Option, + pub head_commit: Option, + pub branches: Vec, + pub tags: Vec, +} + +impl WorktreeSnapshot { + fn new( + entries: Vec, + readme_path: Option, + readme: Option>, + current_branch: Option, + head_commit: Option, + branches: Vec, + tags: Vec, + ) -> Self { + Self { + entries, + readme_path, + readme, + current_branch, + head_commit, + branches, + tags, + } + } +} + impl Repo { - // Best-effort: any read failure is reported as clean. pub fn is_dirty(&self) -> bool { - // Tracked files, staged or not; untracked files are handled below. match self.inner.is_dirty() { Ok(true) => return true, Ok(false) => {} Err(_) => return false, } - // Untracked files surface as `DirectoryContents` items of the - // index-vs-worktree walk; tracked files only appear there when modified. let Ok(platform) = self.inner.status(Discard) else { return false; }; @@ -39,7 +69,6 @@ impl Repo { false } - // Best-effort: 0 when the range cannot be computed. pub fn commits_ahead(&self, base: &str, branch: &str) -> u32 { let (Some(base), Some(branch)) = (self.resolve_commit(base), self.resolve_commit(branch)) else { @@ -53,13 +82,10 @@ impl Repo { walk.filter_map(Result::ok).count().min(u32::MAX as usize) as u32 } - // Accepts full refs or the bare branch names callers pass; `gix`'s - // revision parser already applies git's ref DWIM. fn resolve_commit<'a>(&'a self, rev: &str) -> Option> { self.inner.rev_parse_single(rev.as_bytes()).ok() } - // The `.git` directory is skipped. pub fn entries(&self) -> Result> { let workdir = self.inner.workdir().context("repository has no worktree")?; @@ -74,7 +100,6 @@ impl Repo { Ok(entries.into_iter().map(|(path, _)| path).collect()) } - // `Ok(None)` when the path is missing or not a regular file. pub fn read(&self, rel: &Path) -> Result>> { let workdir = self.inner.workdir().context("repository has no worktree")?; let path = workdir.join(rel); @@ -87,7 +112,6 @@ impl Repo { } } - // Falls back to any other file whose name starts with `readme`. pub fn find_readme(&self) -> Result> { let Some(workdir) = self.inner.workdir() else { return Ok(None); @@ -129,18 +153,17 @@ impl Repo { Some(path) => self.read(path)?, None => None, }; - Ok(WorktreeSnapshot { - entries: self.entries()?, + Ok(WorktreeSnapshot::new( + self.entries()?, readme_path, readme, - current_branch: self.current_branch(), - head_commit: self.head_commit().unwrap_or(None), - branches: self.branches().unwrap_or_default(), - tags: self.tags().unwrap_or_default(), - }) + self.current_branch(), + self.head_commit().unwrap_or(None), + self.branches().unwrap_or_default(), + self.tags().unwrap_or_default(), + )) } - // HEAD stays attached to the branch. pub fn checkout_branch(&self, name: &str) -> Result<()> { let full = format!("refs/heads/{name}"); @@ -164,7 +187,6 @@ impl Repo { Ok(()) } - // HEAD becomes detached at the tagged commit. pub fn checkout_tag(&self, name: &str) -> Result<()> { let full = format!("refs/tags/{name}"); @@ -196,8 +218,6 @@ impl Repo { let mut index = self.inner.index_from_tree(tree)?; - // Files the previous index tracked but `tree` no longer contains are - // removed, like git deleting files that vanish between branches. if let Ok(previous) = self.inner.index_or_empty() { let keep: HashSet = index .entries() @@ -244,9 +264,12 @@ impl Repo { &bytes, &gix::interrupt::IS_INTERRUPTED, options, - )?; + ) + .into_anyhow()?; - index.write(gix::index::write::Options::default())?; + index + .write(gix::index::write::Options::default()) + .into_anyhow()?; Ok(()) } @@ -301,14 +324,3 @@ impl Repo { Ok(()) } } - -pub struct WorktreeSnapshot { - pub entries: Vec, - pub readme_path: Option, - pub readme: Option>, - // `None` when detached, for example on a tag. - pub current_branch: Option, - pub head_commit: Option, - pub branches: Vec, - pub tags: Vec, -} diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index f0485dd..62fb163 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -2,7 +2,7 @@ use dock::{DockArea, DockEvent, DockLayout, DockPlacement, SignedDockSkin, panel use gpui::prelude::*; use gpui::{Context, Entity, Render, Subscription, Window, div, px}; use gpui_component::notification::NotificationType; -use gpui_component::{Root, StyledExt, Theme, WindowExt}; +use gpui_component::{StyledExt, Theme, WindowExt}; use settings::{AppearanceMode, SettingsStore}; use signed_state::{Backend, BackendEvent}; @@ -106,17 +106,12 @@ impl Workspace { } impl Render for Workspace { - fn render(&mut self, window: &mut Window, cx: &mut Context) -> impl IntoElement { - let dialog_layer = Root::render_dialog_layer(window, cx); - let notification_layer = Root::render_notification_layer(window, cx); - + fn render(&mut self, _: &mut Window, _: &mut Context) -> impl IntoElement { div() .id("workspace") .v_flex() .size_full() .relative() .child(self.dock.clone()) - .children(notification_layer) - .children(dialog_layer) } }