| 1 | # Codewhale voice and terminal charter |
| 2 | |
| 3 | Codewhale speaks like an instrument with a constitution: calm, exact, and |
| 4 | receipt-driven. It is maritime without nautical jokes. It names the action, |
| 5 | the boundary, and the next useful move. |
| 6 | |
| 7 | ## Voice |
| 8 | |
| 9 | - Lead with the fact: `MCP tool pool reloaded in process`. |
| 10 | - Name the boundary: `Provider switching stays in /provider`. |
| 11 | - Offer one next action when recovery is possible. |
| 12 | - Prefer short sentences and concrete nouns over slogans or celebration. |
| 13 | - Say `saved`, `reloaded`, `verified`, or `failed` only when that event |
| 14 | happened. An affordance is not a receipt. |
| 15 | - Keep product terms exact: Codewhale; Plan / Act / Operate; Ask / |
| 16 | Auto-Review / Full Access; Fleet / Workflow / Lane / Runtime; Work. |
| 17 | - Keep commands, key names, paths, and provider/model names literal. Compose |
| 18 | them in code around localized prose. |
| 19 | |
| 20 | Avoid timer carousels, marketing banners, anthropomorphic chatter, emoji |
| 21 | celebrations, and borrowed competitor language. Guidance is action-triggered, |
| 22 | seen-gated, and quiet. |
| 23 | |
| 24 | ## Blue Stage |
| 25 | |
| 26 | Blue Stage is the default visual grammar, not a separate product mode. |
| 27 | |
| 28 | - Stage black holds the room. |
| 29 | - Action blue owns general interaction. |
| 30 | - Structural ice owns Plan. |
| 31 | - Seafoam and working green report live or successful state. |
| 32 | - Signal Gold is reserved for the whale and moments requiring human attention. |
| 33 | |
| 34 | Theme settings remain compatible as `dark` and `light`; picker labels expose |
| 35 | the product names `Blue Stage` and `Blue Stage Light`. |
| 36 | |
| 37 | ## Glyphs |
| 38 | |
| 39 | `crates/tui/src/tui/glyphs.rs` owns authored terminal glyphs and their narrow |
| 40 | ASCII fallbacks. Renderers consume semantic names rather than choosing symbols |
| 41 | locally. |
| 42 | |
| 43 | - `●` is the recurring Codewhale anchor: current speaker or current human |
| 44 | choice. |
| 45 | - `▸` is selection or active traversal. |
| 46 | - `◆` means attention or waiting, never generic decoration. |
| 47 | - `✓` and `✕` are settled success and failure. |
| 48 | - `▎` marks finished user input; `▏` is a transcript continuation rail. |
| 49 | |
| 50 | The terminal compatibility layer applies ASCII fallbacks. Translation strings |
| 51 | do not own glyphs, commands, or key names. |
| 52 | |
| 53 | ## Copy review |
| 54 | |
| 55 | For new customer-visible text: |
| 56 | |
| 57 | 1. Identify the typed fact that owns it. |
| 58 | 2. Write the shortest truthful sentence in this register. |
| 59 | 3. Add a `MessageId` and every complete locale when the TUI renders it. |
| 60 | 4. Keep keys, commands, paths, and glyphs as code-owned placeholders. |
| 61 | 5. Test narrow widths and the ASCII-safe renderer when chrome changes. |
| 62 |