@whykusanagi/corrupted-theme 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +253 -0
- package/README.md +97 -7
- package/docs/CAPABILITIES.md +209 -0
- package/docs/CHARACTER_LEVEL_CORRUPTION.md +264 -0
- package/docs/COMPONENTS_REFERENCE.md +295 -8
- package/docs/CORRUPTION_PHRASES.md +529 -0
- package/docs/FUTURE_WORK.md +189 -0
- package/docs/IMPLEMENTATION_VALIDATION.md +401 -0
- package/docs/LLM_PROVIDERS.md +345 -0
- package/docs/PERSONALITY.md +128 -0
- package/docs/ROADMAP.md +266 -0
- package/docs/ROUTING.md +324 -0
- package/docs/STYLE_GUIDE.md +605 -0
- package/docs/brand/BRAND_OVERVIEW.md +413 -0
- package/docs/brand/COLOR_SYSTEM.md +583 -0
- package/docs/brand/DESIGN_TOKENS.md +1009 -0
- package/docs/brand/TRANSLATION_FAILURE_AESTHETIC.md +525 -0
- package/docs/brand/TYPOGRAPHY.md +624 -0
- package/docs/components/ANIMATION_GUIDELINES.md +901 -0
- package/docs/components/COMPONENT_LIBRARY.md +1061 -0
- package/docs/components/GLASSMORPHISM.md +602 -0
- package/docs/components/INTERACTIVE_STATES.md +766 -0
- package/docs/governance/CONTRIBUTION_GUIDELINES.md +593 -0
- package/docs/governance/DESIGN_SYSTEM_GOVERNANCE.md +451 -0
- package/docs/governance/VERSION_MANAGEMENT.md +447 -0
- package/docs/governance/VERSION_REFERENCES.md +229 -0
- package/docs/platforms/CLI_IMPLEMENTATION.md +1025 -0
- package/docs/platforms/COMPONENT_MAPPING.md +579 -0
- package/docs/platforms/NPM_PACKAGE.md +854 -0
- package/docs/platforms/WEB_IMPLEMENTATION.md +1221 -0
- package/docs/standards/ACCESSIBILITY.md +715 -0
- package/docs/standards/ANTI_PATTERNS.md +554 -0
- package/docs/standards/SPACING_SYSTEM.md +549 -0
- package/examples/assets/celeste-avatar.png +0 -0
- package/examples/button.html +22 -10
- package/examples/card.html +22 -9
- package/examples/extensions-showcase.html +716 -0
- package/examples/form.html +22 -9
- package/examples/index.html +619 -396
- package/examples/layout.html +22 -8
- package/examples/nikke-team-builder.html +23 -9
- package/examples/showcase-complete.html +884 -28
- package/examples/showcase.html +21 -8
- package/package.json +14 -5
- package/src/css/components.css +676 -0
- package/src/css/extensions.css +933 -0
- package/src/css/theme.css +6 -74
- package/src/css/typography.css +5 -0
- package/src/lib/character-corruption.js +563 -0
- package/src/lib/components.js +283 -0
- package/src/lib/countdown-widget.js +609 -0
- package/src/lib/gallery.js +481 -0
|
@@ -0,0 +1,605 @@
|
|
|
1
|
+
# Celeste CLI Style Guide
|
|
2
|
+
|
|
3
|
+
**Translation-Failure Corruption Aesthetic - Official Style Documentation**
|
|
4
|
+
|
|
5
|
+
This document defines the visual and textual styling standards for CelesteCLI. These rules MUST be followed for all UI components, dashboard outputs, and user-facing text to maintain Celeste's brand identity.
|
|
6
|
+
|
|
7
|
+
> **Based on**: `@whykusanagi/corrupted-theme` official npm package
|
|
8
|
+
> **Updated**: 2025-12-12 - Corrected to remove leet speak entirely
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Core Principle: Translation-Failure Corruption
|
|
13
|
+
|
|
14
|
+
Celeste's aesthetic simulates a **multilingual AI system glitching between languages mid-translation**. Think of a corrupted translation engine that randomly switches between:
|
|
15
|
+
|
|
16
|
+
- **English** (primary language)
|
|
17
|
+
- **Japanese Kanji** (漢字) - meaning-based characters
|
|
18
|
+
- **Japanese Katakana** (カタカナ) - foreign word phonetics
|
|
19
|
+
- **Japanese Hiragana** (ひらがな) - native phonetics
|
|
20
|
+
- **Romaji** (rōmaji) - Japanese written in Latin alphabet
|
|
21
|
+
|
|
22
|
+
The corruption happens **at the character level** - individual letters get replaced with Japanese characters or symbols, creating a cyberpunk aesthetic of data corruption across language barriers.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## ❌ FORBIDDEN: Leet Speak
|
|
27
|
+
|
|
28
|
+
**DO NOT USE number substitutions** for letters:
|
|
29
|
+
- ❌ 4 for a
|
|
30
|
+
- ❌ 3 for e
|
|
31
|
+
- ❌ 1 for i or l
|
|
32
|
+
- ❌ 0 for o
|
|
33
|
+
- ❌ 5 for s
|
|
34
|
+
- ❌ 7 for t
|
|
35
|
+
|
|
36
|
+
**Examples of BANNED styling**:
|
|
37
|
+
```
|
|
38
|
+
❌ "US4G3 4N4LYT1CS"
|
|
39
|
+
❌ "ST4TS D4SHB04RD"
|
|
40
|
+
❌ "c0rrupt1on"
|
|
41
|
+
❌ "l0ad1ng"
|
|
42
|
+
❌ "pr0cess1ng"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
This is **1990s leet speak**, not Celeste's corruption aesthetic.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## ✅ CORRECT: Translation-Failure Mixing
|
|
50
|
+
|
|
51
|
+
### How It Works
|
|
52
|
+
|
|
53
|
+
Characters randomly get replaced with Japanese equivalents during "corruption":
|
|
54
|
+
|
|
55
|
+
**English → Katakana** (most common):
|
|
56
|
+
- loading → ローディング (rōdingu)
|
|
57
|
+
- processing → プロセス (purosesu)
|
|
58
|
+
- session → セッション (sesshon)
|
|
59
|
+
- error → エラー (erā)
|
|
60
|
+
|
|
61
|
+
**English → Kanji** (for meaning):
|
|
62
|
+
- corrupt → 壊 (kowas/broken)
|
|
63
|
+
- void → 虚 (kyo/emptiness)
|
|
64
|
+
- analyze → 分析 (bunseki)
|
|
65
|
+
- watch → 監視 (kanshi)
|
|
66
|
+
|
|
67
|
+
**English → Hiragana** (rare, for particles):
|
|
68
|
+
- ing → 中 (chū/in progress)
|
|
69
|
+
- the → の (no/possessive)
|
|
70
|
+
|
|
71
|
+
**English → Romaji** (transliterated):
|
|
72
|
+
- corrupting → kowarete
|
|
73
|
+
- watching → miteiru
|
|
74
|
+
- loading → rōdo
|
|
75
|
+
|
|
76
|
+
### Practical Examples
|
|
77
|
+
|
|
78
|
+
**Single-word corruption** (25-40% character replacement):
|
|
79
|
+
```
|
|
80
|
+
"loading..." → "loaディング..."
|
|
81
|
+
"processing..." → "pro理cessing..."
|
|
82
|
+
"analyzing..." → "ana分lysing..."
|
|
83
|
+
"corrupting..." → "cor壊rupting..."
|
|
84
|
+
"watching..." → "wat監ching..."
|
|
85
|
+
"session" → "seセshon"
|
|
86
|
+
"statistics" → "sta計stics"
|
|
87
|
+
"connection" → "con接nection"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Multi-language mixing** (full phrase corruption):
|
|
91
|
+
```
|
|
92
|
+
"loading data..." → "ロード data読み込み..."
|
|
93
|
+
"processing request..." → "処理 request プロセス中..."
|
|
94
|
+
"analyzing corruption..." → "分析 cor壊ruption 解析..."
|
|
95
|
+
"void corruption active" → "虚空 corruption 壊れ active"
|
|
96
|
+
"deep abyss connection" → "深淵 abyss 接続 shinnen"
|
|
97
|
+
"watching session data" → "監視 session データ kanshi"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**With context markers** (terminal-style):
|
|
101
|
+
```
|
|
102
|
+
"⟨ ロード loading 読み込み中... ⟩"
|
|
103
|
+
"⟨ 処理 processing purosesu... ⟩"
|
|
104
|
+
"⟨ 分析 analyzing bunseki... ⟩"
|
|
105
|
+
"⟨ 壊れ corrupting kowarete... ⟩"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Character Sets Reference
|
|
111
|
+
|
|
112
|
+
### Katakana (Foreign Words)
|
|
113
|
+
```
|
|
114
|
+
ア イ ウ エ オ
|
|
115
|
+
カ キ ク ケ コ
|
|
116
|
+
サ シ ス セ ソ
|
|
117
|
+
タ チ ツ テ ト
|
|
118
|
+
ナ ニ ヌ ネ ノ
|
|
119
|
+
ハ ヒ フ ヘ ホ
|
|
120
|
+
マ ミ ム メ モ
|
|
121
|
+
ヤ ユ ヨ
|
|
122
|
+
ラ リ ル レ ロ
|
|
123
|
+
ワ ヲ ン
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Common Kanji (Meanings)
|
|
127
|
+
```
|
|
128
|
+
壊 (kowas) - broken/corrupt
|
|
129
|
+
虚 (kyo) - void/emptiness
|
|
130
|
+
深 (shin) - deep
|
|
131
|
+
淵 (en) - abyss
|
|
132
|
+
闇 (yami) - darkness
|
|
133
|
+
処 (sho) - process
|
|
134
|
+
理 (ri) - logic/reason
|
|
135
|
+
分 (bun) - part/analyze
|
|
136
|
+
析 (seki) - analyze
|
|
137
|
+
監 (kan) - watch/supervise
|
|
138
|
+
視 (shi) - see/observe
|
|
139
|
+
接 (setsu) - connect
|
|
140
|
+
続 (zoku) - continue
|
|
141
|
+
統 (tō) -統計 statistics
|
|
142
|
+
計 (kei) - measure/count
|
|
143
|
+
読 (yomi) - read
|
|
144
|
+
込 (komi) - load/include
|
|
145
|
+
中 (chū) - in progress
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Hiragana (Native Phonetics)
|
|
149
|
+
```
|
|
150
|
+
あ い う え お
|
|
151
|
+
か き く け こ
|
|
152
|
+
さ し す せ そ
|
|
153
|
+
た ち つ て と
|
|
154
|
+
な に ぬ ね の
|
|
155
|
+
は ひ ふ へ ほ
|
|
156
|
+
ま み む め も
|
|
157
|
+
や ゆ よ
|
|
158
|
+
ら り る れ ろ
|
|
159
|
+
わ を ん
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Corruption Symbols
|
|
163
|
+
```
|
|
164
|
+
█ ▓ ▒ ░ - Shading blocks
|
|
165
|
+
⟨ ⟩ - Angle brackets
|
|
166
|
+
👁️ - Eye (Celeste watching)
|
|
167
|
+
═ ─ - Lines
|
|
168
|
+
♟ ☣ ☭ ☾ - Misc symbols
|
|
169
|
+
⚔ ✡ ☯ ⚡ - Decorative
|
|
170
|
+
▮ ▯ ◉ ◈ - Geometric
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Visual Elements
|
|
176
|
+
|
|
177
|
+
### Block Characters (Progress Bars, Separators)
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
█ Full block (100%)
|
|
181
|
+
▓ Dark shade (75%)
|
|
182
|
+
▒ Medium shade (50%)
|
|
183
|
+
░ Light shade (25%)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Usage**:
|
|
187
|
+
- Progress bars: `████████▓▓▓▓▒▒░░`
|
|
188
|
+
- Section bullets: `▓ Item`, `▒ Item`, `░ Item`
|
|
189
|
+
- Separators: `▓▒░ ════ ░▒▓`
|
|
190
|
+
|
|
191
|
+
### Corruption Markers
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
⟨⟩ Angle brackets for labels
|
|
195
|
+
👁️ Celeste's watching eye
|
|
196
|
+
═══ Heavy horizontal line
|
|
197
|
+
─── Light horizontal line
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Usage**:
|
|
201
|
+
- Labels: `⟨ 処理 processing プロセス中... ⟩`
|
|
202
|
+
- Headers: `═══════════════`
|
|
203
|
+
- Eye indicators: `👁️ 監視 watching kanshi 👁️`
|
|
204
|
+
|
|
205
|
+
### Status Indicators
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
🟢 Normal/OK (0-75%)
|
|
209
|
+
🟡 Warning (75-85%)
|
|
210
|
+
🟠 Caution (85-95%)
|
|
211
|
+
🔴 Critical (95%+)
|
|
212
|
+
👁️ Celeste watching/analyzing
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Color Palette
|
|
218
|
+
|
|
219
|
+
Defined in `/cmd/celeste/tui/styles.go`:
|
|
220
|
+
|
|
221
|
+
### Primary Colors
|
|
222
|
+
- **Pink/Magenta** (`#d94f90`, `#ff4da6`) - Primary accent, headers
|
|
223
|
+
- **Purple Void** (`#8b5cf6`, `#c084fc`) - Secondary elements
|
|
224
|
+
- **Cyan Glitch** (`#00d4ff`) - Digital effects
|
|
225
|
+
|
|
226
|
+
### Background Colors
|
|
227
|
+
- **Deep Void** (`#0a0a0a`) - Main background
|
|
228
|
+
- **Void Secondary** (`#0f0f1a`) - Secondary background
|
|
229
|
+
- **Glassmorphic** (`#1a1a2e`) - Overlays
|
|
230
|
+
|
|
231
|
+
### Functional Colors
|
|
232
|
+
- **Success**: Green (`#22c55e`)
|
|
233
|
+
- **Error**: Red (`#ef4444`)
|
|
234
|
+
- **Warning**: Yellow (`#eab308`)
|
|
235
|
+
- **Info**: Cyan (`#06b6d4`)
|
|
236
|
+
|
|
237
|
+
### Corruption/Glitch Colors
|
|
238
|
+
- **Red Corruption** (`#ff4757`)
|
|
239
|
+
- **Pink Corruption** (`#ff6b9d`)
|
|
240
|
+
- **Purple Corruption** (`#c084fc`)
|
|
241
|
+
- **Cyan Glitch** (`#00d4ff`)
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## UI Component Patterns
|
|
246
|
+
|
|
247
|
+
### 1. Dashboard Header Pattern
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
▓▒░ ═══════════════════════════════════════════════════════════ ░▒▓
|
|
251
|
+
👁️ USAGE 統計 ANALYTICS 👁️
|
|
252
|
+
⟨ 壊れ corrupting kowarete from the 虚空 void... ⟩
|
|
253
|
+
▓▒░ ═══════════════════════════════════════════════════════════ ░▒▓
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**Rules**:
|
|
257
|
+
- Separator: `▓▒░ ═══...═══ ░▒▓` (symmetric)
|
|
258
|
+
- Title: Mix English/Katakana/Kanji (uppercase English)
|
|
259
|
+
- Subtitle: `⟨⟩` brackets with translation-failure text
|
|
260
|
+
- Eyes: `👁️` on both sides for emphasis
|
|
261
|
+
|
|
262
|
+
### 2. Section Header Pattern
|
|
263
|
+
|
|
264
|
+
```
|
|
265
|
+
█ LIFETIME 統計 CORRUPTION:
|
|
266
|
+
▓ Total セッション: 127
|
|
267
|
+
▓ Total トークン: 1,234,567
|
|
268
|
+
▓ Total コスト: $12.45
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
**Rules**:
|
|
272
|
+
- Section marker: `█` (full block)
|
|
273
|
+
- Section name: Mix UPPERCASE English with Katakana/Kanji
|
|
274
|
+
- Data bullets: `▓` or `▒` for importance hierarchy
|
|
275
|
+
- Numbers/currency: Keep as-is (no corruption)
|
|
276
|
+
|
|
277
|
+
### 3. Progress Bar Pattern
|
|
278
|
+
|
|
279
|
+
```
|
|
280
|
+
OpenAI ████████▓▓▓▓░░░░ 45 msgs (35%) ⟨ $8.23 ⟩
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**Rules**:
|
|
284
|
+
- Provider name: Plain English (readable)
|
|
285
|
+
- Filled: `█` (100%)
|
|
286
|
+
- Gradient: `▓` (75%)
|
|
287
|
+
- Empty: `▒` (50%) then `░` (25%)
|
|
288
|
+
- Values in `⟨⟩` brackets
|
|
289
|
+
|
|
290
|
+
### 4. Data Row Pattern
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
2025-12-11 ▓ 8 セッション ░ 284 msgs ▒ $1.23
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
**Rules**:
|
|
297
|
+
- Timestamp: ISO format (plain)
|
|
298
|
+
- Labels: Mix English/Katakana
|
|
299
|
+
- Separator bullets: `▓`, `░`, or `▒`
|
|
300
|
+
- Values: Plain numbers
|
|
301
|
+
|
|
302
|
+
### 5. Status Line Pattern
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
⟨ 処理 processing purosesu... ⟩
|
|
306
|
+
⟨ 分析 analyzing bunseki... ⟩
|
|
307
|
+
⟨ 壊れ corrupting kowarete... ⟩
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
**Rules**:
|
|
311
|
+
- Angle bracket wrapper
|
|
312
|
+
- Kanji + English + Romaji mix
|
|
313
|
+
- Ellipsis for ongoing action
|
|
314
|
+
|
|
315
|
+
### 6. Footer Pattern
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
▓▒░ ═══════════════════════════════════════════════════════════ ░▒▓
|
|
319
|
+
⟨ 終わり end of report owari... ⟩
|
|
320
|
+
▓▒░ ═══════════════════════════════════════════════════════════ ░▒▓
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
**Rules**:
|
|
324
|
+
- Same separator as header
|
|
325
|
+
- Center-aligned message
|
|
326
|
+
- Mix all three languages (Kanji + English + Romaji)
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## Seeded Phrases for Branding
|
|
331
|
+
|
|
332
|
+
### Loading/Processing States
|
|
333
|
+
|
|
334
|
+
```
|
|
335
|
+
"ロード loading 読み込み中..."
|
|
336
|
+
"処理 processing purosesu..."
|
|
337
|
+
"分析 analyzing bunseki..."
|
|
338
|
+
"壊れ corrupting kowarete..."
|
|
339
|
+
"接続 connecting setsuzoku..."
|
|
340
|
+
"待機 waiting taiki..."
|
|
341
|
+
"実行 executing jikkō..."
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Status Messages
|
|
345
|
+
|
|
346
|
+
```
|
|
347
|
+
"👁️ 監視 watching kanshi 👁️"
|
|
348
|
+
"深淵 deep abyss shinnen 接続 connected"
|
|
349
|
+
"虚空 void corruption 壊れ active"
|
|
350
|
+
"データ data 読み込み yomikomi complete"
|
|
351
|
+
"統計 statistics tōkei 生成 generated"
|
|
352
|
+
"セッション session 保存 saved"
|
|
353
|
+
"エラー error detected 検出"
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### Dashboard Labels
|
|
357
|
+
|
|
358
|
+
```
|
|
359
|
+
"LIFETIME 統計 CORRUPTION"
|
|
360
|
+
"PROVIDER 分類 BREAKDOWN"
|
|
361
|
+
"SESSION データ DATA"
|
|
362
|
+
"TOKEN 使用 USAGE"
|
|
363
|
+
"COST 計算 CALCULATION"
|
|
364
|
+
"RECENT 活動 ACTIVITY"
|
|
365
|
+
"TOP プロバイダー PROVIDERS"
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### Action Verbs (Gerund Form)
|
|
369
|
+
|
|
370
|
+
```
|
|
371
|
+
loading → ロード rōdo
|
|
372
|
+
processing → 処理 shori
|
|
373
|
+
analyzing → 分析 bunseki
|
|
374
|
+
corrupting → 壊れ kowarete
|
|
375
|
+
watching → 監視 kanshi
|
|
376
|
+
connecting → 接続 setsuzoku
|
|
377
|
+
executing → 実行 jikkō
|
|
378
|
+
generating → 生成 seisei
|
|
379
|
+
calculating→ 計算 keisan
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
### Nouns
|
|
383
|
+
|
|
384
|
+
```
|
|
385
|
+
session → セッション sesshon
|
|
386
|
+
token → トークン tōkun
|
|
387
|
+
data → データ dēta
|
|
388
|
+
error → エラー erā
|
|
389
|
+
statistics → 統計 tōkei
|
|
390
|
+
cost → コスト kosuto
|
|
391
|
+
provider → プロバイダー purobaida
|
|
392
|
+
void → 虚空 kokū
|
|
393
|
+
abyss → 深淵 shinnen
|
|
394
|
+
corruption → 壊れ koware
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## Code Implementation
|
|
400
|
+
|
|
401
|
+
### Go: Text Corruption Function
|
|
402
|
+
|
|
403
|
+
**Location**: `/cmd/celeste/tui/streaming.go` or create new file
|
|
404
|
+
|
|
405
|
+
```go
|
|
406
|
+
package tui
|
|
407
|
+
|
|
408
|
+
import (
|
|
409
|
+
"math/rand"
|
|
410
|
+
"strings"
|
|
411
|
+
)
|
|
412
|
+
|
|
413
|
+
// Japanese character sets for corruption
|
|
414
|
+
var (
|
|
415
|
+
katakana = []rune("アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン")
|
|
416
|
+
hiragana = []rune("あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん")
|
|
417
|
+
symbols = []rune("█▓▒░⟨⟩═─♟☣☭☾⚔✡☯⚡▮▯◉◈")
|
|
418
|
+
)
|
|
419
|
+
|
|
420
|
+
// CorruptText applies translation-failure corruption to text
|
|
421
|
+
// intensity: 0.0-1.0 (recommended 0.2-0.4 for readability)
|
|
422
|
+
func CorruptText(text string, intensity float64) string {
|
|
423
|
+
if intensity <= 0 {
|
|
424
|
+
return text
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
runes := []rune(text)
|
|
428
|
+
result := make([]rune, len(runes))
|
|
429
|
+
|
|
430
|
+
for i, r := range runes {
|
|
431
|
+
// Skip whitespace, punctuation, numbers
|
|
432
|
+
if r == ' ' || r < 33 || (r >= '0' && r <= '9') {
|
|
433
|
+
result[i] = r
|
|
434
|
+
continue
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// Corrupt character based on intensity
|
|
438
|
+
if rand.Float64() < intensity {
|
|
439
|
+
// 70% Katakana, 20% symbols, 10% Hiragana
|
|
440
|
+
roll := rand.Float64()
|
|
441
|
+
if roll < 0.7 {
|
|
442
|
+
result[i] = katakana[rand.Intn(len(katakana))]
|
|
443
|
+
} else if roll < 0.9 {
|
|
444
|
+
result[i] = symbols[rand.Intn(len(symbols))]
|
|
445
|
+
} else {
|
|
446
|
+
result[i] = hiragana[rand.Intn(len(hiragana))]
|
|
447
|
+
}
|
|
448
|
+
} else {
|
|
449
|
+
result[i] = r
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
return string(result)
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
// RenderCorruptedSkill renders skill name with corruption during execution
|
|
457
|
+
func RenderCorruptedSkill(name string) string {
|
|
458
|
+
corrupted := CorruptText(name, 0.35) // 35% corruption
|
|
459
|
+
return SkillExecutingStyle.
|
|
460
|
+
Strikethrough(true).
|
|
461
|
+
Render(corrupted)
|
|
462
|
+
}
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### Usage in Dashboard
|
|
466
|
+
|
|
467
|
+
```go
|
|
468
|
+
// Header with translation-failure
|
|
469
|
+
header := lipgloss.NewStyle().
|
|
470
|
+
Foreground(ColorAccentGlow).
|
|
471
|
+
Bold(true).
|
|
472
|
+
Render("👁️ USAGE 統計 ANALYTICS 👁️")
|
|
473
|
+
|
|
474
|
+
// Status line with mixed languages
|
|
475
|
+
status := lipgloss.NewStyle().
|
|
476
|
+
Foreground(ColorTextSecondary).
|
|
477
|
+
Render("⟨ 処理 processing purosesu... ⟩")
|
|
478
|
+
|
|
479
|
+
// Section with Katakana labels
|
|
480
|
+
section := fmt.Sprintf("█ LIFETIME 統計 CORRUPTION:\n ▓ Total セッション: %d", count)
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
---
|
|
484
|
+
|
|
485
|
+
## Common Corrupted Phrases
|
|
486
|
+
|
|
487
|
+
Reference table for consistency:
|
|
488
|
+
|
|
489
|
+
| English | Corrupted Form | Usage |
|
|
490
|
+
|---------|----------------|-------|
|
|
491
|
+
| "Loading..." | "ロード loading 読み込み中..." | General loading |
|
|
492
|
+
| "Processing..." | "処理 processing purosesu..." | Background work |
|
|
493
|
+
| "Analyzing..." | "分析 analyzing bunseki..." | Data analysis |
|
|
494
|
+
| "Corrupting..." | "壊れ corrupting kowarete..." | Celeste-specific |
|
|
495
|
+
| "Statistics" | "統計 statistics tōkei" | Stats display |
|
|
496
|
+
| "Usage" | "使用 usage shiyō" | Usage tracking |
|
|
497
|
+
| "Session" | "セッション session sesshon" | Session management |
|
|
498
|
+
| "Connection" | "接続 connection setsuzoku" | Network |
|
|
499
|
+
| "Error" | "エラー error erā" | Error messages |
|
|
500
|
+
| "Complete" | "完了 complete kanryō" | Success |
|
|
501
|
+
| "Void" | "虚空 void kokū" | Theme-specific |
|
|
502
|
+
| "Abyss" | "深淵 abyss shinnen" | Theme-specific |
|
|
503
|
+
| "Watching" | "監視 watching kanshi" | Celeste observing |
|
|
504
|
+
| "End of report" | "終わり end owari" | Footer |
|
|
505
|
+
| "Data" | "データ data dēta" | General data |
|
|
506
|
+
| "Token" | "トークン token tōkun" | API tokens |
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
## Style Enforcement
|
|
511
|
+
|
|
512
|
+
### For All New Features:
|
|
513
|
+
|
|
514
|
+
1. **Check this guide first** before implementing UI text
|
|
515
|
+
2. **Use translation-failure**, never leet speak
|
|
516
|
+
3. **Reference `styles.go`** for colors
|
|
517
|
+
4. **Test in terminal** (256-color support required)
|
|
518
|
+
5. **Update this guide** if creating new patterns
|
|
519
|
+
|
|
520
|
+
### Code Review Checklist:
|
|
521
|
+
|
|
522
|
+
- [ ] No leet speak used (NO number substitutions)
|
|
523
|
+
- [ ] Japanese/English mixing used correctly
|
|
524
|
+
- [ ] Katakana for foreign words, Kanji for meanings
|
|
525
|
+
- [ ] Colors from `styles.go` palette
|
|
526
|
+
- [ ] Block characters (`█▓▒░`) for visual elements
|
|
527
|
+
- [ ] Follows established component patterns
|
|
528
|
+
- [ ] Maintains readability (corruption ≤ 40%)
|
|
529
|
+
|
|
530
|
+
---
|
|
531
|
+
|
|
532
|
+
## Examples: Before/After
|
|
533
|
+
|
|
534
|
+
### ❌ BEFORE (Incorrect - Leet Speak):
|
|
535
|
+
|
|
536
|
+
```
|
|
537
|
+
╔═══════════════════════════════════╗
|
|
538
|
+
US4G3 ST4TS D4SHB04RD
|
|
539
|
+
c0rrupt1on 1n pr0gr3ss...
|
|
540
|
+
╚═══════════════════════════════════╝
|
|
541
|
+
|
|
542
|
+
█ T0T4L US4G3:
|
|
543
|
+
• S3SS10NS: 127
|
|
544
|
+
• T0K3NS: 1.23M
|
|
545
|
+
• C0ST: $12.45
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### ✅ AFTER (Correct - Translation Failure):
|
|
549
|
+
|
|
550
|
+
```
|
|
551
|
+
▓▒░ ═══════════════════════════════════════════════════════════ ░▒▓
|
|
552
|
+
👁️ USAGE 統計 ANALYTICS 👁️
|
|
553
|
+
⟨ 処理 processing purosesu from the 虚空 void... ⟩
|
|
554
|
+
▓▒░ ═══════════════════════════════════════════════════════════ ░▒▓
|
|
555
|
+
|
|
556
|
+
█ LIFETIME 統計 CORRUPTION:
|
|
557
|
+
▓ Total セッション: 127
|
|
558
|
+
▓ Total トークン: 1.23M
|
|
559
|
+
▓ Total コスト: $12.45
|
|
560
|
+
|
|
561
|
+
█ TOP プロバイダー PROVIDERS:
|
|
562
|
+
▓ OpenAI ████████▓▓░░ 89 (70%) ⟨ $8.90 ⟩
|
|
563
|
+
▓ Claude ███▓░░░░░░░░ 23 (18%) ⟨ $2.30 ⟩
|
|
564
|
+
▓ Grok ██░░░░░░░░░░ 15 (12%) ⟨ $1.25 ⟩
|
|
565
|
+
|
|
566
|
+
▓▒░ ═══════════════════════════════════════════════════════════ ░▒▓
|
|
567
|
+
⟨ 終わり end of report owari... ⟩
|
|
568
|
+
▓▒░ ═══════════════════════════════════════════════════════════ ░▒▓
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
---
|
|
572
|
+
|
|
573
|
+
## Revision History
|
|
574
|
+
|
|
575
|
+
- **2025-12-12**: Complete rewrite to remove leet speak
|
|
576
|
+
- Aligned with `@whykusanagi/corrupted-theme` official package
|
|
577
|
+
- Removed ALL number substitutions (0,1,3,4,5,7)
|
|
578
|
+
- Added Japanese character set references
|
|
579
|
+
- Added seeded phrases for branding
|
|
580
|
+
- Added Go implementation examples
|
|
581
|
+
- **Purpose**: Establish translation-failure as canonical aesthetic
|
|
582
|
+
- **Authority**: Official Celeste brand guidelines
|
|
583
|
+
|
|
584
|
+
---
|
|
585
|
+
|
|
586
|
+
## Questions?
|
|
587
|
+
|
|
588
|
+
If implementing a new feature and unsure about styling:
|
|
589
|
+
|
|
590
|
+
1. Check `cmd/celeste/tui/styles.go` for existing patterns
|
|
591
|
+
2. Reference character sets above for Japanese mixing
|
|
592
|
+
3. Use `CorruptText()` function for dynamic corruption
|
|
593
|
+
4. Test output in terminal before committing
|
|
594
|
+
5. Add examples to this guide if creating new patterns
|
|
595
|
+
|
|
596
|
+
**Remember**: Celeste's aesthetic is **translation-failure corruption** (multilingual glitching), NOT leet speak (number substitutions).
|
|
597
|
+
|
|
598
|
+
---
|
|
599
|
+
|
|
600
|
+
## Related Files
|
|
601
|
+
|
|
602
|
+
- **Go Styles**: `/cmd/celeste/tui/styles.go`
|
|
603
|
+
- **Corruption Logic**: `/cmd/celeste/tui/streaming.go`
|
|
604
|
+
- **Official Theme**: `@whykusanagi/corrupted-theme` npm package
|
|
605
|
+
- **TypeScript Reference**: `../_archive/celeste-cli-typescript/src/ui/corruption.ts` (legacy, uses leet speak - DO NOT FOLLOW)
|