Skip to main content

mach/
banner.rs

1//! The mach wordmark and the text shown in the help overlay.
2
3pub const BANNER: [&str; 6] = [
4    r"███╗   ███╗ █████╗  ██████╗██╗  ██╗",
5    r"████╗ ████║██╔══██╗██╔════╝██║  ██║",
6    r"██╔████╔██║███████║██║     ███████║",
7    r"██║╚██╔╝██║██╔══██║██║     ██╔══██║",
8    r"██║ ╚═╝ ██║██║  ██║╚██████╗██║  ██║",
9    r"╚═╝     ╚═╝╚═╝  ╚═╝ ╚═════╝╚═╝  ╚═╝",
10];
11
12pub const BANNER_WIDTH: u16 = 35;
13
14/// Highlights bundled into the binary for the one-time post-upgrade screen.
15/// Update these alongside the package version when preparing a release.
16pub(crate) const WHATS_NEW: [(&str, &str); 3] = [
17    (
18        "Agent-ready CLI",
19        "Search task text and idempotently ensure categories or labels from scripts and agents.",
20    ),
21    (
22        "Reorder categories",
23        "Use Option+Up or Option+Down in manual view to put categories in the order you want.",
24    ),
25    (
26        "Cleaner task views",
27        "Label names render as entered, hidden-completed views show open counts, and overlays no longer corrupt images.",
28    ),
29];
30
31/// One row of the two-column key reference. Section headings are marked
32/// rather than guessed from their casing — "COMMANDS (press /)" has
33/// lowercase in it and would not read as a heading otherwise.
34pub struct HelpRow {
35    pub left: &'static str,
36    pub right: &'static str,
37    pub heading: bool,
38}
39
40const fn row(left: &'static str, right: &'static str) -> HelpRow {
41    HelpRow {
42        left,
43        right,
44        heading: false,
45    }
46}
47
48const fn heading(left: &'static str, right: &'static str) -> HelpRow {
49    HelpRow {
50        left,
51        right,
52        heading: true,
53    }
54}
55
56/// Two-column key reference. Empty strings are gaps.
57pub const HELP_COLUMNS: [HelpRow; 17] = [
58    heading("MOVING AROUND", "TASKS, CATEGORIES & LABELS"),
59    row(
60        "← →          between the two panels",
61        "Ctrl+A       new task / category / label",
62    ),
63    row(
64        "↑ ↓          within a panel",
65        "Enter        edit in the task preview",
66    ),
67    row("⌥↑ ⌥↓       reorder in manual view", ""),
68    row("PgUp PgDn    top / bottom", "Space        tick a task off"),
69    row(
70        "Tab          the other panel",
71        "Ctrl+F       importance, 0 to 3 flags",
72    ),
73    row("type         jump to matching row", "Backspace ×2 delete"),
74    row("Esc          back out", "Ctrl+C ×2    quit"),
75    row("Mouse        click, double-click, scroll", ""),
76    row("", ""),
77    heading(
78        "COMMANDS  (press /)",
79        "TASK PREVIEW  (Enter · when space allows)",
80    ),
81    row(
82        "/search  /settings  /help",
83        "Tab ⇧Tab     next / previous field",
84    ),
85    row("/whatsnew  /labels", "← → Space    choose category / flags"),
86    row("/copy  /copytitle · /done", "Enter / Space choose labels"),
87    row(
88        "/export  /import <FILE>",
89        "Enter        calendar · new line · open",
90    ),
91    row("/purge  /update  /quit", "Ctrl+Z / ⇧Z  undo · redo"),
92    row("? this page", "Esc          back to the task list"),
93];
94
95pub const HELP_FOOTER: &str = "Press Esc to close · github.com/Q1CHENL/mach";
96
97pub const EMPTY_TASKS: &str = "No active tasks here :)";
98pub const NO_SEARCH_RESULTS: &str = "No tasks found :)";