atagen

malice

public
Star0
Watch0

Commit 8909d39b777b

tarball

atagen <boss@atagen.co>2026-10-26 03:48 UTC

4 files changed+22-13
macltok: bump to 417da9e

Opening a room with stored events no longer walks /messages, history gaps join on any already stored event, main timeline reply quotes resolve, direct rooms leave the mentions inbox, and the sdk offline probe stops polling /versions every 100ms. HistoryGapLifecycle::Paused now carries a reason.
Modified file: Cargo.toml+1 additions−1 deletions
@@ -3,7 +3,7 @@ resolver = "3"
33 members = ["crates/malice-core", "crates/malice-server", "crates/malice-static"]
44
55 [workspace.dependencies]
6-macltok = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/macltok", rev = "038cc6faeb1429501e5cd06596b831bbd2044b92" }
6+macltok = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/macltok", rev = "417da9e719bcfbb8b60e4ff4f1a09f3d6b0d0160" }
77 ruma = { version = "0.16", default-features = false }
88 serde = { version = "1", features = ["derive"] }
99 serde_json = "1"
Modified file: crates/malice-worker/Cargo.lock+9 additions−9 deletions
@@ -1999,7 +1999,7 @@ checksum = "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e"
19991999 [[package]]
20002000 name = "macltok"
20012001 version = "0.1.0"
2002-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/macltok?rev=038cc6faeb1429501e5cd06596b831bbd2044b92#038cc6faeb1429501e5cd06596b831bbd2044b92"
2002+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/macltok?rev=417da9e719bcfbb8b60e4ff4f1a09f3d6b0d0160#417da9e719bcfbb8b60e4ff4f1a09f3d6b0d0160"
20032003 dependencies = [
20042004 "futures-util",
20052005 "getrandom 0.2.17",
@@ -2210,7 +2210,7 @@ dependencies = [
22102210 [[package]]
22112211 name = "matrix-sdk"
22122212 version = "0.18.0"
2213-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd#5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd"
2213+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=ec026bc9ea2393fd0cce6212b950d91ab6d36097#ec026bc9ea2393fd0cce6212b950d91ab6d36097"
22142214 dependencies = [
22152215 "anymap2",
22162216 "aquamarine",
@@ -2270,7 +2270,7 @@ dependencies = [
22702270 [[package]]
22712271 name = "matrix-sdk-base"
22722272 version = "0.18.0"
2273-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd#5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd"
2273+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=ec026bc9ea2393fd0cce6212b950d91ab6d36097#ec026bc9ea2393fd0cce6212b950d91ab6d36097"
22742274 dependencies = [
22752275 "as_variant",
22762276 "async-trait",
@@ -2296,7 +2296,7 @@ dependencies = [
22962296 [[package]]
22972297 name = "matrix-sdk-common"
22982298 version = "0.18.0"
2299-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd#5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd"
2299+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=ec026bc9ea2393fd0cce6212b950d91ab6d36097#ec026bc9ea2393fd0cce6212b950d91ab6d36097"
23002300 dependencies = [
23012301 "eyeball-im",
23022302 "futures-core",
@@ -2319,7 +2319,7 @@ dependencies = [
23192319 [[package]]
23202320 name = "matrix-sdk-crypto"
23212321 version = "0.18.0"
2322-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd#5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd"
2322+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=ec026bc9ea2393fd0cce6212b950d91ab6d36097#ec026bc9ea2393fd0cce6212b950d91ab6d36097"
23232323 dependencies = [
23242324 "aes",
23252325 "aquamarine",
@@ -2359,7 +2359,7 @@ dependencies = [
23592359 [[package]]
23602360 name = "matrix-sdk-indexeddb"
23612361 version = "0.18.0"
2362-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd#5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd"
2362+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=ec026bc9ea2393fd0cce6212b950d91ab6d36097#ec026bc9ea2393fd0cce6212b950d91ab6d36097"
23632363 dependencies = [
23642364 "async-trait",
23652365 "base64 0.22.1",
@@ -2391,7 +2391,7 @@ dependencies = [
23912391 [[package]]
23922392 name = "matrix-sdk-sqlite"
23932393 version = "0.18.0"
2394-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd#5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd"
2394+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=ec026bc9ea2393fd0cce6212b950d91ab6d36097#ec026bc9ea2393fd0cce6212b950d91ab6d36097"
23952395 dependencies = [
23962396 "as_variant",
23972397 "async-trait",
@@ -2418,7 +2418,7 @@ dependencies = [
24182418 [[package]]
24192419 name = "matrix-sdk-store-encryption"
24202420 version = "0.18.0"
2421-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd#5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd"
2421+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=ec026bc9ea2393fd0cce6212b950d91ab6d36097#ec026bc9ea2393fd0cce6212b950d91ab6d36097"
24222422 dependencies = [
24232423 "base64 0.22.1",
24242424 "blake3",
@@ -2439,7 +2439,7 @@ dependencies = [
24392439 [[package]]
24402440 name = "matrix-sdk-ui"
24412441 version = "0.18.0"
2442-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd#5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd"
2442+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=ec026bc9ea2393fd0cce6212b950d91ab6d36097#ec026bc9ea2393fd0cce6212b950d91ab6d36097"
24432443 dependencies = [
24442444 "as_variant",
24452445 "async-rx",
Modified file: crates/malice-worker/Cargo.toml+2 additions−2 deletions
@@ -14,7 +14,7 @@ publish = false
1414 crate-type = ["cdylib", "rlib"]
1515
1616 [target.'cfg(target_family = "wasm")'.dependencies]
17-macltok = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/macltok", rev = "038cc6faeb1429501e5cd06596b831bbd2044b92", features = ["indexeddb", "serde", "mirror"] }
17+macltok = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/macltok", rev = "417da9e719bcfbb8b60e4ff4f1a09f3d6b0d0160", features = ["indexeddb", "serde", "mirror"] }
1818 malice-core = { path = "../malice-core" }
1919 ruma = { version = "0.16", default-features = false }
2020 futures-util = { version = "0.3", default-features = false, features = ["std"] }
@@ -27,7 +27,7 @@ wasm-bindgen-futures = "=0.4.78"
2727 js-sys = "=0.3.105"
2828
2929 [dev-dependencies]
30-matrix-sdk = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "5ec7600f0a5f648c6e2a34b5be0a1494a4e2eafd", default-features = false }
30+matrix-sdk = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "ec026bc9ea2393fd0cce6212b950d91ab6d36097", default-features = false }
3131 wasm-bindgen-test = "0.3"
3232 web-sys = { version = "0.3", features = ["SharedWorkerGlobalScope"] }
3333 gloo-timers = { version = "0.3", features = ["futures"] }
Modified file: web/src/lib/types.ts+10 additions−1 deletions
@@ -719,7 +719,7 @@ export function parseTimelineItem(raw: unknown): TimelineItem | null {
719719 id: stringField(gap, 'id'),
720720 older_boundary: optionalString(gap, 'older_boundary'),
721721 newer_boundary: optionalString(gap, 'newer_boundary'),
722- lifecycle: lifecycle === 'Paused' || lifecycle === 'Failed' || lifecycle === 'Unavailable' ? lifecycle : 'Idle',
722+ lifecycle: isRecord(lifecycle) && 'Paused' in lifecycle ? 'Paused' : lifecycle === 'Failed' || lifecycle === 'Unavailable' ? lifecycle : 'Idle',
723723 failure: optionalString(gap, 'failure')
724724 }
725725 };
@@ -734,6 +734,15 @@ export function parseTimelineItem(raw: unknown): TimelineItem | null {
734734 return { kind: 'unknown', label: Object.keys(raw).join(', ') || 'item' };
735735 }
736736
737+export function identifyTimelineItem(raw: unknown): string | null {
738+ if (!isRecord(raw)) return null;
739+ const event = raw['Event'];
740+ if (isRecord(event) && typeof event['item_id'] === 'string') return `e${event['item_id']}`;
741+ const gap = raw['HistoryGap'];
742+ if (isRecord(gap) && typeof gap['id'] === 'string') return `g${gap['id']}`;
743+ return null;
744+}
745+
737746 export function parseTimelineList(raw: unknown): TimelineItem[] {
738747 if (!Array.isArray(raw)) return [];
739748 const out: TimelineItem[] = [];