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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
//! **The start half of the composer**: where a conversation is begun.
//!
//! It is a **mode of the composer and not a pane beside it**, and that is this
//! ball's one layout decision. A wall with no conversation selected already had
//! a box that refused — *pick a workspace and a conversation to say anything* —
//! and that refusal was the start's own case wearing a sentence: there is
//! nothing to say to, so the thing to do is begin one. A second box would be
//! the same box twice, each with its own Enter, on a face that is four panes
//! wide; upstream states the rule as *one box, one Enter* and it is worth more
//! here than there.
//!
//! So the composer is one control with two subjects, decided by what is
//! selected and by nothing else:
//!
//! - no wall aimed at → nothing to say and nothing to begin;
//! - a wall, no conversation → **this**, the start;
//! - a wall and a conversation → the deposit.
//!
//! **A start in flight paints its sentence instead of the box**, which is how a
//! second start is refused: not by a disarmed control, but by there being no
//! control. The receipt is the one state that paints the sentence *and* the box
//! — the minted name stays readable while the operator begins the next one.
//!
//! # One composer, in both of its modes (DESIGN §4.39)
//!
//! *Being* the same control and *looking* like it are two things, and until
//! bl-b3c3 this mode only had the first: it painted a one-line
//! [`crate::ui::theme::paint::field`] and a button beside it while the deposit
//! painted [`crate::ui::theme::paint::composer`] — the field
//! [`crate::ui::theme::COMPOSER_ROWS`] tall with the act inside it — so the
//! pane's focal element shrank to a bar whenever nothing was selected. It is
//! now laid through the same shape at the same rows, with [`START`] inside the
//! field where the deposit says `send`, and under it the same offers row
//! carrying what applies to a start ([`super::offers::starting`]).
//!
//! **What the row does NOT carry is the rule, not an omission.** `records…`,
//! `interrupt`, `stop`, `nudge` and the `…` strip are acts on a conversation's
//! turn or on a conversation as an object, and there is neither — so they are
//! absent rather than greyed, by the offers row's own rule that only what is
//! offered is on the row.
use crate;
/// **What the box asks for, naming the wall the Enter begins on** (§4.42
/// item 3; bl-9031). A start's goal is what the conversation is *for*, which
/// is a different question from what to say to one that exists; and with two
/// walls on one engine the box is the one place the operator is looking when
/// the Enter decides where the conversation lands. While `/plan` has said the
/// next start is a plan, the hint's tail says so instead.
/// **What the box says on a wall whose worker reaches no model yet**
/// (bl-7a77): the worker role's provider row holds no credential, so a goal
/// typed now would be refused — the hint names the two doors and the pick
/// before the operator types one. It stands in the goal's place, not after
/// it: the goal's question is the wrong one to ask first.
pub const UNSIGNED: &str = "no provider yet — /login or /config, then pick one on the rule";
/// **Whether the aimed wall's worker reaches no model yet**: its provider's
/// row in the provider table is bare (`ProviderRow::bare`). Both reads stand
/// on the aim; where either has not answered, nothing is claimed.
/// **The start's own sentence, with the doors it names** (bl-7a77): a
/// refused start says the engine's remedy — *sign in first … /config
/// brazen* — and each menu row it names stands after it as a link in the
/// brand that fires that row, as the notice's doors do on the rule.
/// Paint the start composer and take what it was given.