Desktop Material

TUI language, appearance, and notifications

Language and tone

Settings persists exactly three application language modes:

English is the fallback for a missing Cantonese key. Independent English and Cantonese funny levels run from 1 (professional) to 5 (most playful). Every catalog entry that offers tone variants produces distinct output at all five positions. Tone can change wording but never changes repository names, paths, SHAs, error facts, security guidance, destructive targets, or the meaning of a choice.

the graphical edition's 2,000-plus-key catalog. Missing terminal copy therefore falls back rather than being counted as complete desktop localization parity. The shell and shared controls use the catalog; it is not yet the graphical edition's 2,000-plus-key catalog. Missing terminal copy therefore falls back rather than being counted as complete desktop localization parity.

Dim-sum startup surprise

An eligible launch makes one fresh cryptographic random draw. Values in the bottom 10% select one dish using a second independent draw from the bundled, verified local catalog. The card shows the factual English and Traditional Chinese names, Jyutping when available, meaningful bilingual alt text, and a terminal true-color rendering decoded from the tracked PNG. It never fetches an image or sends telemetry.

The card mounts after the shell is usable, never changes focus, stays within the viewport, dismisses automatically, and has a keyboard/mouse dismiss action. A first run, startup error, update, open modal, or configured quiet-hours window spends the launch's opportunity without showing or loading the art; clearing that condition later cannot trigger a delayed ambush. There is no disable setting. Decoder byte, pixel, format, and checksum bounds make an invalid asset fail closed without turning the optional delight into a startup failure. the graphical edition's 2,000-plus-key catalog. Missing terminal copy therefore falls back rather than being counted as complete desktop localization parity.

Appearance

The TUI persists light/dark/system choice, comfortable/compact density, accent, Unicode-border preference, and reduced motion. Settings also exposes terminal-safe per-element foreground, background, emphasis, and border inputs.

The terminal emulator owns font family, point size, glyph fallback, cell geometry, window opacity, and zoom. Those desktop capabilities are marked terminal_owned, not falsely described as implemented. The app uses compact and narrow responsive classes so controls reflow within available cells.

Narrator preferences

Optional narrator settings are off by default and include English, Cantonese, or Both; quiet-hour start/end; reduced sound; and yield-to-screen-reader. These values validate and persist. Actual speech synthesis, debouncing, a serialized playback queue, and assistive-technology ducking are not shipped in the first preview, so the parity contract marks narration partial.

Notifications

Informational, progress, success, and ordinary error events appear as non-blocking corner notices. Decisions—destructive confirmation, merge/cancel, or consent—remain dialogs. Notices are also written to app-owned SQLite so a user can review them after the corner toast disappears.

The Notification tab supports:

Notification storage contains operational text and repository metadata and should be treated as private user data. It is not a secret vault, and the app must not deliberately write credentials, tokens, or raw authorization headers into a notice.

Failure modes