2.9 KiB
| title | date | category | tags | problem_type | component | severity | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| No-Emoji Style Guide | 2026-07-03 | style |
|
best_practice | cross-cutting | convention |
No-Emoji Style Guide
Problem
Emoji characters cause inconsistent rendering across terminals, OSes, and fonts. On Linux servers without Noto Color Emoji, they display as tofu blocks. They also clash with the project's Ant Design Vue Outlined icon family.
Replacement Strategies
Three strategies based on context:
KTD1: First-letter avatars (expert/persona avatars)
Use the first character of the expert name — uppercase for English, first CJK character for Chinese.
'🦊'→'F'(Fox)'🐼'→'P'(Panda)'🤖'→'A'(AI)
Applies to: configs/experts/*.yaml avatar fields, test fixtures.
KTD2: Ant Design Vue Outlined icons (UI banners/cards)
Use @ant-design/icons-vue components for visual icons in frontend components.
🏛️→ no icon (BoardBannerCard uses plain text)⚖→<AuditOutlined />✓/✗→<CheckOutlined />/<CloseOutlined />↻→<ReloadOutlined />◆→<ApartmentOutlined />!→<WarningOutlined />
Applies to: useMessageRenderer.ts shell.avatar, ReviewResultCard.vue statusIcon, DebateBannerCard.vue, DebateConclusionCard.vue, UserBubble.vue.
KTD3: Text labels (CLI/shell/terminal output)
Use ASCII text labels with ANSI color codes for status markers.
✓→OK(with[bold green]in Rich)✗→FAIL(with[bold red]in Rich)⚠→WARN(with[bold yellow]in Rich)○→..orPENDING❌→[FAIL]✅→[OK]
Applies to: src/agentkit/cli/*.py (Rich output), scripts/*.sh (shell output), .gitea/workflows/*.yml (CI logs).
Unicode Ranges Covered
The scripts/check-no-emoji.sh pre-commit hook scans for:
| Range | Block |
|---|---|
1F000-1FFFF |
Emoji and Supplementary Symbols |
2600-27BF |
Misc Symbols and Dingbats (includes ✓ ✗) |
2300-23FF |
Miscellaneous Technical |
25A0-25FF |
Geometric Shapes (includes ◆ ○) |
2B00-2BFF |
Misc Symbols and Arrows |
Excluded ranges (pervasive in comments/docstrings, not emoji):
| Range | Block | Reason |
|---|---|---|
2190-21FF |
Arrows | → is a pervasive docstring flow indicator |
2500-257F |
Box Drawings | ─ is a pervasive comment section separator |
2580-259F |
Block Elements | █ ░ used in terminal progress bars |
Also detects escaped unicode sequences (\u2713, \u2717, \u25c6, etc.) in string literals, narrowed to emoji-like ranges only.
Enforcement
- Pre-commit hook:
scripts/check-no-emoji.shruns on every commit - CI: Add
bash scripts/check-no-emoji.shto.gitea/workflows/(deferred) - PR review: Reviewers should check for emoji in code changes