diff --git a/Cargo.lock b/Cargo.lock
index 9c56781..4711ecc 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -533,9 +533,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
-version = "0.4.40"
+version = "0.4.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c"
+checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
dependencies = [
"android-tzdata",
"iana-time-zone",
@@ -716,28 +716,6 @@ dependencies = [
"cfg-if",
]
-[[package]]
-name = "crossbeam"
-version = "0.8.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8"
-dependencies = [
- "crossbeam-channel",
- "crossbeam-deque",
- "crossbeam-epoch",
- "crossbeam-queue",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-channel"
-version = "0.5.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
-dependencies = [
- "crossbeam-utils",
-]
-
[[package]]
name = "crossbeam-deque"
version = "0.8.6"
@@ -757,15 +735,6 @@ dependencies = [
"crossbeam-utils",
]
-[[package]]
-name = "crossbeam-queue"
-version = "0.3.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115"
-dependencies = [
- "crossbeam-utils",
-]
-
[[package]]
name = "crossbeam-utils"
version = "0.8.21"
@@ -3271,11 +3240,11 @@ dependencies = [
"axum-extra",
"cf-turnstile",
"contrasted",
- "crossbeam",
"futures-util",
"image",
"mime_guess",
"pathbufd",
+ "redis",
"regex",
"reqwest",
"serde",
@@ -3299,7 +3268,6 @@ dependencies = [
"base64",
"bb8-postgres",
"bitflags 2.9.0",
- "futures-util",
"md-5",
"pathbufd",
"redis",
@@ -3556,9 +3524,9 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.8.21"
+version = "0.8.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "900f6c86a685850b1bc9f6223b20125115ee3f31e01207d81655bbcc0aea9231"
+checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae"
dependencies = [
"serde",
"serde_spanned",
@@ -3577,9 +3545,9 @@ dependencies = [
[[package]]
name = "toml_edit"
-version = "0.22.25"
+version = "0.22.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "10558ed0bd2a1562e630926a2d1f0b98c827da99fabd3fe20920a59642504485"
+checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e"
dependencies = [
"indexmap",
"serde",
@@ -3591,9 +3559,9 @@ dependencies = [
[[package]]
name = "toml_write"
-version = "0.1.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28391a4201ba7eb1984cfeb6862c0b3ea2cfe23332298967c749dddc0d6cd976"
+checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076"
[[package]]
name = "totp-rs"
diff --git a/crates/app/Cargo.toml b/crates/app/Cargo.toml
index 00862f3..8bdbeda 100644
--- a/crates/app/Cargo.toml
+++ b/crates/app/Cargo.toml
@@ -6,7 +6,7 @@ edition = "2024"
[features]
postgres = ["tetratto-core/postgres"]
sqlite = ["tetratto-core/sqlite"]
-redis = ["tetratto-core/redis"]
+redis = ["tetratto-core/redis", "dep:redis"]
default = ["sqlite", "redis"]
[dependencies]
@@ -34,4 +34,5 @@ mime_guess = "2.0.5"
cf-turnstile = "0.2.0"
contrasted = "0.1.2"
futures-util = "0.3.31"
-crossbeam = { version = "0.8.4", features = ["crossbeam-channel"] }
+
+redis = { version = "0.30.0", optional = true }
diff --git a/crates/app/src/public/html/chats/app.html b/crates/app/src/public/html/chats/app.html
index c215007..db1cd76 100644
--- a/crates/app/src/public/html/chats/app.html
+++ b/crates/app/src/public/html/chats/app.html
@@ -27,6 +27,7 @@
@@ -35,6 +36,7 @@