main
tag: alloy_tui-v0.1.0
tag: v0.1.1
tag: v1.0.0
tag: v11.0.0
tag: v11.1.0
tag: v12.0.0
tag: v13.0.0
tag: v14.0.0
tag: v15.0.0
tag: v2.0.0
tag: v3.0.0
tag: v4.1.0
tag: v4.1.1
tag: v5.0.0
tag: v5.0.1
tag: v5.1.0
tag: v6.0.0
tag: v7.0.0
tag: v7.1.0
tag: v7.2.0
tag: v8.0.0
tag: v9.0.0
Files
Commits
Tags
Notes
Issues
Strip historical narrative from documentation
Remove what a doc used to say, when it changed, the incidents that justified
a rule, finished migration narration, and counts and versions that rot.
State the rules in the present tense instead.
Keep every instruction, prohibition and threshold, and keep the measurements
that make a rule actionable. Public-facing docs keep their explanatory voice.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session
https://claude.ai/code/session_01MptwXZ8k65v19rFmdGAyki
4 files changed,
+20 insertions,
-29 deletions
4
4
reserved keymap, and a focus ring, driven by
5
5
[makeover](https://crates.io/crates/makeover) themes.
6
6
7
-
Extracted from the Alloy console so other terminal UIs can share one look
8
-
rather than each re-deriving colors from a palette.
7
+
One look that any terminal UI can share, rather than each one re-deriving
8
+
colors from a palette.
9
9
10
10
## What it gives you
11
11
50
50
51
51
## License
52
52
53
-
MIT.
54
-
55
-
Split out of the [Alloy](https://makenot.work/git/max/alloy) repository, which is
56
-
GPLv3-or-later. This crate is permissive on purpose: it is the reusable design
57
-
system, not the application, and other terminal UIs should be able to adopt the
58
-
look without inheriting copyleft.
53
+
MIT. This crate is the reusable design system rather than the application, so
54
+
any terminal UI can adopt the look.
27
27
//!
28
28
//! # Where the painting lives
29
29
//!
30
-
//! Not here, since 2026-07-30. `makeover-tui` is the family's terminal renderer
31
-
//! for the same light model, arrived at independently two days after this module
32
-
//! and carrying two things this one never had: the fidelity measurements (across
33
-
//! 31 themes, a bevel loses an edge into its face on all of them at sixteen
34
-
//! colours) and a glyph fallback for that case. It also renders
35
-
//! [`makeover_tui::makeover_layout`]'s description, which is what lets a control light the same
36
-
//! way in a terminal and in an egui window.
30
+
//! Not here. `makeover-tui` is the family's terminal renderer for the same light
31
+
//! model, and it carries the fidelity measurements (across 31 themes, a bevel
32
+
//! loses an edge into its face on all of them at sixteen colours) and a glyph
33
+
//! fallback for that case. It also renders
34
+
//! [`makeover_tui::makeover_layout`]'s description, which is what lets a control
35
+
//! light the same way in a terminal and in an egui window.
37
36
//!
38
-
//! So the painting moved there, taking this module's half-blocks and split
39
-
//! corners with it, and what stays is the part worth keeping: a `Widget` that
40
-
//! speaks [`Theme`] rather than a palette, so an Alloy caller does not assemble
41
-
//! one per frame.
37
+
//! What stays here is a `Widget` that speaks [`Theme`] rather than a palette, so
38
+
//! an Alloy caller does not assemble one per frame.
42
39
//!
43
40
//! <!-- wiki: alloy-console -->
44
41
127
127
/// holding an active text input should route keys to the input and consult
128
128
/// this classifier only for `Cancel`, `Save`, and the focus movers.
129
129
///
130
-
/// `h` and `l` make this obligation sharper than it was. The earlier
131
-
/// character actions were punctuation and one letter that rarely opens a
132
-
/// word; `h` and `l` are ordinary letters that appear in almost any typed
133
-
/// value, so a view that forwards raw keys to an input without this check
134
-
/// now changes tabs mid-word rather than merely on a stray `q`.
130
+
/// `h` and `l` make this obligation sharp. They are ordinary letters that
131
+
/// appear in almost any typed value, so a view that forwards raw keys to an
132
+
/// input without this check changes tabs mid-word.
135
133
pub fn classify(key: KeyEvent) -> Action {
136
134
let ctrl = key.modifiers.contains(KeyModifiers::CONTROL);
137
135
let shift = key.modifiers.contains(KeyModifiers::SHIFT);
1
1
//! Alloy's theme: the family's resolved intents plus the two border tokens
2
2
//! Alloy derives for itself.
3
3
//!
4
-
//! The intent-to-`Color` mapping is [`makeover_tui::Theme`]. It used to be a
5
-
//! second copy here, and the two agreeing about which intent a surface reads
6
-
//! from was a convention rather than a fact. Quantisation moved with it, for the
7
-
//! same reason and one more: [`makeover_tui::Theme`] is `#[non_exhaustive]`, so
8
-
//! a copy out here could not rebuild a quantised version of it anyway.
4
+
//! The intent-to-`Color` mapping is [`makeover_tui::Theme`], and never a second
5
+
//! copy here: two mappings agreeing about which intent a surface reads from is a
6
+
//! convention rather than a fact. Quantisation lives there too, and
7
+
//! [`makeover_tui::Theme`] is `#[non_exhaustive]`, so a copy out here could not
8
+
//! rebuild a quantised version of it anyway.
9
9
//!
10
10
//! # The two tokens that stayed, and why they are not duplication
11
11
//!