1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//! Lean read models for the live-query path.
//!
//! Device-derived message/thread/body shapes carrying no store-only fields (no `rowid`,
//! `synced_at`, or `outgoing_status`, which have no device source). Only these models leave
//! `imsg-session`; the `map_core` protocol types they are normalized from do not.
/// Message direction relative to this device.
/// One message from a live folder listing, body text fetched on demand.
///
/// `list`-path carrier. `timestamp_ms` is always present (taken from the listing entry, falling
/// back to fetch time only on a malformed datetime). `read` is the device-reported read state.
/// Carries no direction — the list renderer does not use it.
/// Per-contact thread summary aggregated from live folder listings.
///
/// Counts are approximate: aggregated over the device's bounded listing window, not the full
/// corpus, so they differ from the store's full-corpus `GROUP BY`. No delivery badge — outgoing
/// status is outbox-only with no device source.
/// One MAP message folder from a live folder listing.
///
/// The name is a single path segment relative to `telecom/msg` (e.g. `inbox`), as the device
/// reported it — no normalisation, no full path.
/// One message body fetched live by handle.
///
/// `get`-path carrier. Structurally carries no timestamp — a `BMessage` has no datetime — and
/// carries `direction` because the `get` renderer prints a `From:`/`To:` label from it.