diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 0e619c444441b7dece3773f730fd2af1c630f4c8..71760f801f1f86606cb6bdc80028ead87d8c3584 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -36,7 +36,7 @@
       - run: cargo test --locked --all-targets --all-features
       - run: cargo test --locked --release --lib
       - run: cargo test --locked --release --lib git_reads_tests::measures_bounded_search_without_an_index -- --ignored --nocapture
-      - run: cargo test --locked --release --lib sqlite_workload_tests:: -- --ignored --nocapture
+      - run: "cargo test --locked --release --lib sqlite_workload_tests:: -- --ignored --nocapture"
       - run: cargo build --locked --release
       - run: wc -c target/release/tit
       - run: ./scripts/package-release target/release/tit dist
diff --git a/Cargo.lock b/Cargo.lock
index ecfc7f5cc875bb18a982ba650f07251ee780823e..823e9b65ba079d6cd6f7d49c4284f48a43d61821 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2300,9 +2300,9 @@
 
 [[package]]
 name = "kstring"
-version = "2.0.4"
+version = "2.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b609e7ca5ea38f093c20a4a102335b247221c9643b7a6bc3510f196f99499a9e"
+checksum = "558bf9508a558512042d3095138b1f7b8fe90c5467d94f9f1da28b3731c5dbd1"
 dependencies = [
  "static_assertions",
 ]
@@ -2315,9 +2315,9 @@
 
 [[package]]
 name = "libsqlite3-sys"
-version = "0.38.1"
+version = "0.37.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6c19a05435c21ac299d71b6a9c13db3e3f47c520517d58990a462a1397a61db"
+checksum = "b1f111c8c41e7c61a49cd34e44c7619462967221a6443b0ec299e0ac30cfb9b1"
 dependencies = [
  "cc",
  "pkg-config",
@@ -2958,16 +2958,27 @@
 ]
 
 [[package]]
-name = "rusqlite"
-version = "0.40.1"
+name = "rsqlite-vfs"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11438310b19e3109b6446c33d1ed5e889428cf2e278407bc7896bc4aaea43323"
+checksum = "c51c9ae4df8a7fba42103df5c621fa3c37eccf3a3c650879e90fc48b11cc192c"
+dependencies = [
+ "hashbrown 0.16.1",
+ "thiserror",
+]
+
+[[package]]
+name = "rusqlite"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0d2b0146dd9661bf67bb107c0bb2a55064d556eeb3fc314151b957f313bcd4e"
 dependencies = [
  "bitflags 2.13.1",
  "fallible-iterator",
  "fallible-streaming-iterator",
  "libsqlite3-sys",
  "smallvec",
+ "sqlite-wasm-rs",
 ]
 
 [[package]]
@@ -3384,6 +3395,18 @@
 version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620"
+
+[[package]]
+name = "sqlite-wasm-rs"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc3efc0da82635d7e1ced0053bbbfa8c7ab9645d0bf36ceb4f7127bb85315d75"
+dependencies = [
+ "cc",
+ "js-sys",
+ "rsqlite-vfs",
+ "wasm-bindgen",
+]
 
 [[package]]
 name = "ssh-cipher"
diff --git a/Cargo.toml b/Cargo.toml
index ae0036c6d6ec61602600f6533a41609b742547f1..acbe4089df6aae713e3000e297d8c4de79cbf102 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -2,7 +2,7 @@
 name = "tit-cde"
 version = "0.1.0"
 edition = "2024"
-rust-version = "1.96"
+rust-version = "1.94"
 autotests = false
 license = "MIT"
 description = "A small self-hosted collaborative development environment"
@@ -31,7 +31,7 @@
 multra = "1.1.0"
 pulldown-cmark = { version = "0.13.4", default-features = false, features = ["html"] }
 rand = "0.10"
-rusqlite = { version = "0.40", default-features = false, features = ["backup", "bundled"] }
+rusqlite = { version = "0.39", default-features = false, features = ["backup", "bundled"] }
 russh = { version = "0.62", default-features = false, features = ["ring"] }
 serde = { version = "1.0", features = ["derive"] }
 serde_json = "1.0"
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index 80e6a12026ae1d03cdc5018509980746bfbe9420..28bb9c52a3b67012ea9ad2dd51714a41999f56a3 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,4 +1,4 @@
 [toolchain]
-channel = "1.96.0"
+channel = "1.94.0"
 components = ["clippy", "rustfmt"]
 profile = "minimal"
