Skip to main content

max / goingson

Pin the keyring credential store bundle explicitly The dependency was declared as a bare version, so the 3 to 4 bump silently swapped the Linux backing store from kernel keyutils to the Secret Service. Pin the v1 store bundle explicitly and document why keyutils must not be re-enabled: it keeps entries in memory only and drops them on every reboot, which silently destroyed stored credentials. This resolves to the same stores as the current default, so it is a guard against the next bump rather than a behaviour change. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-07-21 17:44 UTC
Commit: 189683c0c4ea04e4540765820f24c87e0b1efecc
Parent: 22c29fb
2 files changed, +6 insertions, -142 deletions
M Cargo.lock +1 -141
@@ -368,29 +368,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
368 368 checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
369 369
370 370 [[package]]
371 - name = "aws-lc-rs"
372 - version = "1.17.3"
373 - source = "registry+https://github.com/rust-lang/crates.io-index"
374 - checksum = "00bdb5da18dac48ca2cc7cd4a98e533e8635a58e2361d13a1a4ee3888e0d72f1"
375 - dependencies = [
376 - "aws-lc-sys",
377 - "zeroize",
378 - ]
379 -
380 - [[package]]
381 - name = "aws-lc-sys"
382 - version = "0.43.0"
383 - source = "registry+https://github.com/rust-lang/crates.io-index"
384 - checksum = "43103168cc76fe62678a375e722fc9cb3a0146159ac5828bc4f0dfd755c2224c"
385 - dependencies = [
386 - "cc",
387 - "cmake",
388 - "dunce",
389 - "fs_extra",
390 - "pkg-config",
391 - ]
392 -
393 - [[package]]
394 371 name = "axum"
395 372 version = "0.8.9"
396 373 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -715,8 +692,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
715 692 checksum = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1"
716 693 dependencies = [
717 694 "find-msvc-tools",
718 - "jobserver",
719 - "libc",
720 695 "shlex",
721 696 ]
722 697
@@ -840,15 +815,6 @@ dependencies = [
840 815 ]
841 816
842 817 [[package]]
843 - name = "cmake"
844 - version = "0.1.58"
845 - source = "registry+https://github.com/rust-lang/crates.io-index"
846 - checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678"
847 - dependencies = [
848 - "cc",
849 - ]
850 -
851 - [[package]]
852 818 name = "cmov"
853 819 version = "0.5.4"
854 820 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1808,12 +1774,6 @@ dependencies = [
1808 1774 ]
1809 1775
1810 1776 [[package]]
1811 - name = "fs_extra"
1812 - version = "1.3.0"
1813 - source = "registry+https://github.com/rust-lang/crates.io-index"
1814 - checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
1815 -
1816 - [[package]]
1817 1777 name = "fsevent-sys"
1818 1778 version = "4.1.0"
1819 1779 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2089,10 +2049,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2089 2049 checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
2090 2050 dependencies = [
2091 2051 "cfg-if",
2092 - "js-sys",
2093 2052 "libc",
2094 2053 "wasi 0.11.1+wasi-snapshot-preview1",
2095 - "wasm-bindgen",
2096 2054 ]
2097 2055
2098 2056 [[package]]
@@ -2114,13 +2072,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2114 2072 checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
2115 2073 dependencies = [
2116 2074 "cfg-if",
2117 - "js-sys",
2118 2075 "libc",
2119 2076 "r-efi 6.0.0",
2120 2077 "rand_core 0.10.1",
2121 2078 "wasip2",
2122 2079 "wasip3",
2123 - "wasm-bindgen",
2124 2080 ]
2125 2081
2126 2082 [[package]]
@@ -3106,16 +3062,6 @@ dependencies = [
3106 3062 ]
3107 3063
3108 3064 [[package]]
3109 - name = "jobserver"
3110 - version = "0.1.35"
3111 - source = "registry+https://github.com/rust-lang/crates.io-index"
3112 - checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3"
3113 - dependencies = [
3114 - "getrandom 0.4.2",
3115 - "libc",
3116 - ]
3117 -
3118 - [[package]]
3119 3065 name = "js-sys"
3120 3066 version = "0.3.92"
3121 3067 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3406,12 +3352,6 @@ dependencies = [
3406 3352 ]
3407 3353
3408 3354 [[package]]
3409 - name = "lru-slab"
3410 - version = "0.1.2"
3411 - source = "registry+https://github.com/rust-lang/crates.io-index"
3412 - checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
3413 -
3414 - [[package]]
3415 3355 name = "mac"
3416 3356 version = "0.1.1"
3417 3357 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4820,63 +4760,6 @@ dependencies = [
4820 4760 ]
4821 4761
4822 4762 [[package]]
4823 - name = "quinn"
4824 - version = "0.11.11"
4825 - source = "registry+https://github.com/rust-lang/crates.io-index"
4826 - checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8"
4827 - dependencies = [
4828 - "bytes",
4829 - "cfg_aliases",
4830 - "pin-project-lite",
4831 - "quinn-proto",
4832 - "quinn-udp",
4833 - "rustc-hash",
4834 - "rustls",
4835 - "socket2",
4836 - "thiserror 2.0.18",
4837 - "tokio",
4838 - "tracing",
4839 - "web-time",
4840 - ]
4841 -
4842 - [[package]]
4843 - name = "quinn-proto"
4844 - version = "0.11.16"
4845 - source = "registry+https://github.com/rust-lang/crates.io-index"
4846 - checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560"
4847 - dependencies = [
4848 - "aws-lc-rs",
4849 - "bytes",
4850 - "getrandom 0.4.2",
4851 - "lru-slab",
4852 - "rand 0.10.2",
4853 - "rand_pcg 0.10.2",
4854 - "ring",
4855 - "rustc-hash",
4856 - "rustls",
4857 - "rustls-pki-types",
4858 - "slab",
4859 - "thiserror 2.0.18",
4860 - "tinyvec",
4861 - "tracing",
4862 - "web-time",
4863 - ]
4864 -
4865 - [[package]]
4866 - name = "quinn-udp"
4867 - version = "0.5.15"
4868 - source = "registry+https://github.com/rust-lang/crates.io-index"
4869 - checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694"
4870 - dependencies = [
4871 - "cfg_aliases",
4872 - "libc",
4873 - "once_cell",
4874 - "socket2",
4875 - "tracing",
4876 - "windows-sys 0.61.2",
4877 - ]
4878 -
4879 - [[package]]
4880 4763 name = "quote"
4881 4764 version = "1.0.45"
4882 4765 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4914,7 +4797,7 @@ dependencies = [
4914 4797 "rand_chacha 0.2.2",
4915 4798 "rand_core 0.5.1",
4916 4799 "rand_hc",
4917 - "rand_pcg 0.2.1",
4800 + "rand_pcg",
4918 4801 ]
4919 4802
4920 4803 [[package]]
@@ -5031,15 +4914,6 @@ dependencies = [
5031 4914 ]
5032 4915
5033 4916 [[package]]
5034 - name = "rand_pcg"
5035 - version = "0.10.2"
5036 - source = "registry+https://github.com/rust-lang/crates.io-index"
5037 - checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a"
5038 - dependencies = [
5039 - "rand_core 0.10.1",
5040 - ]
5041 -
5042 - [[package]]
5043 4917 name = "ratatui"
5044 4918 version = "0.30.2"
5045 4919 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5250,7 +5124,6 @@ dependencies = [
5250 5124 "native-tls",
5251 5125 "percent-encoding",
5252 5126 "pin-project-lite",
5253 - "quinn",
5254 5127 "rustls",
5255 5128 "rustls-pki-types",
5256 5129 "rustls-platform-verifier",
@@ -5369,7 +5242,6 @@ version = "0.23.37"
5369 5242 source = "registry+https://github.com/rust-lang/crates.io-index"
5370 5243 checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4"
5371 5244 dependencies = [
5372 - "aws-lc-rs",
5373 5245 "once_cell",
5374 5246 "ring",
5375 5247 "rustls-pki-types",
@@ -5396,7 +5268,6 @@ version = "1.14.0"
5396 5268 source = "registry+https://github.com/rust-lang/crates.io-index"
5397 5269 checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
5398 5270 dependencies = [
5399 - "web-time",
5400 5271 "zeroize",
5401 5272 ]
5402 5273
@@ -5433,7 +5304,6 @@ version = "0.103.13"
5433 5304 source = "registry+https://github.com/rust-lang/crates.io-index"
5434 5305 checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
5435 5306 dependencies = [
5436 - "aws-lc-rs",
5437 5307 "ring",
5438 5308 "rustls-pki-types",
5439 5309 "untrusted",
@@ -7858,16 +7728,6 @@ dependencies = [
7858 7728 ]
7859 7729
7860 7730 [[package]]
7861 - name = "web-time"
7862 - version = "1.1.0"
7863 - source = "registry+https://github.com/rust-lang/crates.io-index"
7864 - checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
7865 - dependencies = [
7866 - "js-sys",
7867 - "wasm-bindgen",
7868 - ]
7869 -
7870 - [[package]]
7871 7731 name = "web_atoms"
7872 7732 version = "0.2.3"
7873 7733 source = "registry+https://github.com/rust-lang/crates.io-index"
M Cargo.toml +5 -1
@@ -50,7 +50,11 @@ base64 = "0.22"
50 50 sha2 = "0.10"
51 51
52 52 # Secure credential storage
53 - keyring = { version = "4" }
53 + # Pinned to the v1 store bundle explicitly: Apple Keychain, Windows credential
54 + # manager, and Secret Service on Linux. Do not enable `linux-keyutils-keyring-store` —
55 + # that backing store is in-memory and drops every entry on reboot, which silently
56 + # destroyed stored secrets before keyring 4 moved the default to Secret Service.
57 + keyring = { version = "4", default-features = false, features = ["v1"] }
54 58
55 59 # Tauri
56 60 tauri = "2.10.2"