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
//! The §11 bottom in-flight strip (bl-905f): one pulsing line at the bottom
//! of the conversation pane saying what the open conversation is doing right
//! now.
//!
//! **Why a third seat for one fact.** The chat is tail-anchored (bl-5cdb), so
//! the operator's eyes live at the bottom of the screen; the altitude-1
//! header's chip — the same class off the same derivation — is out of view
//! while they read the tail. The inference status at the top is right as far as
//! it goes, but an in-flight call's characteristics belong at the bottom of the
//! screen while it runs, so that an operator looking down at the chat sees that
//! it is working.
//!
//! Coverage-excluded glue: the strip's whole content is
//! [`AppModel::flight_strip`] and [`theme::flight_badge`], both tested — this
//! file only chooses the seat and asks for the pulse.
use crateAppModel;
use crateSTRIP_HOVER;
use cratetheme;
/// Paint the strip, if anything is in flight. **The panel itself is
/// conditional**, not its content: an idle conversation costs no strip, no
/// pixel row, and no repaint (§7.2 — `None` is one decision at one site).
///
/// The seat is the **innermost** bottom panel of the conversation pane: hard
/// against the chat tail, above whichever goal box holds the composer's seat
/// and above the settings rows below it (§11 bottom accessories, bl-c038,
/// bl-2e18 as amended by bl-58e4 — the band-order ruling moved the settings
/// rows to the far side of the input box and did **not** touch this seat). The
/// strip is a fact about the open conversation and belongs inside its pane,
/// while the window-level activity accessory below is world-level ops chrome.
/// Called last of the pane's bottom stack for exactly that stacking, with its
/// §11 rule 5 share already checked by the stack that owns the arithmetic
/// ([`super::pane`]).
pub