@whykusanagi/corrupted-theme 0.1.2 → 0.1.4
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 +157 -0
- package/README.md +6 -0
- package/docs/CHARACTER_LEVEL_CORRUPTION.md +264 -0
- package/docs/CORRUPTION_PHRASES.md +529 -0
- package/docs/ROADMAP.md +266 -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/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/button.html +1 -1
- package/examples/card.html +1 -1
- package/examples/form.html +1 -1
- package/examples/index.html +2 -2
- package/examples/layout.html +1 -1
- package/examples/nikke-team-builder.html +1 -1
- package/examples/showcase-complete.html +840 -15
- package/examples/showcase.html +1 -1
- package/package.json +16 -3
- package/src/css/components.css +676 -0
- package/src/lib/character-corruption.js +563 -0
- package/src/lib/components.js +283 -0
package/CHANGELOG.md
CHANGED
|
@@ -21,6 +21,163 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
+
## [0.1.4] - 2025-12-15
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
- **Navigation Consistency** - Moved index.html to root, fixed all navigation paths
|
|
28
|
+
- **Asset Loading** - Corrected CSS and documentation paths for root-level index
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
- **Complete Corruption Phrase Library** - Added 67 official phrases to character-corruption.js
|
|
32
|
+
- 30 technical phrases (6 categories: loading, processing, analyzing, corrupting, watching, void)
|
|
33
|
+
- 30 personality phrases (English, Japanese, Romaji)
|
|
34
|
+
- `getRandomPhrase()` helper function
|
|
35
|
+
- **Animation Utilities Showcase** - Added comprehensive examples for all 21+ animation classes
|
|
36
|
+
- **VERSION_REFERENCES.md** - Complete version tracking documentation for future releases
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
- **npm Package** - Excluded 7 internal docs from npm release (IMPLEMENTATION_VALIDATION, FUTURE_WORK, CAPABILITIES, PERSONALITY, ROUTING, LLM_PROVIDERS, CLI_IMPLEMENTATION)
|
|
40
|
+
- **Documentation** - Extended CORRUPTION_PHRASES.md with Celeste demon/succubus personality phrases
|
|
41
|
+
|
|
42
|
+
### Documentation
|
|
43
|
+
- Added 33 governance, brand, component, and platform documentation files
|
|
44
|
+
- All version references updated consistently across project
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## [0.1.3] - 2025-12-15
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
|
|
52
|
+
#### Character-Level Corruption System (`src/lib/character-corruption.js`)
|
|
53
|
+
**NEW: CLI Brand Parity** - Matches Celeste CLI's translation-failure aesthetic
|
|
54
|
+
|
|
55
|
+
- `corruptTextJapanese(text, intensity)` - Character-level Japanese mixing
|
|
56
|
+
- Mixes Japanese characters INTO English (e.g., "USAGE ANALYTICS" → "US使AGE ANア統LYTICS")
|
|
57
|
+
- Semantic character selection (Katakana 50%, Kanji 25%, Hiragana 10%, insertions 15%)
|
|
58
|
+
- Intensity constants: `INTENSITY.MINIMAL` (15%), `INTENSITY.LOW` (25%), `INTENSITY.MEDIUM` (35%), `INTENSITY.HIGH` (45%)
|
|
59
|
+
- Maximum 45% intensity for accessibility (WCAG AA compliance)
|
|
60
|
+
- `corruptTextSemantic(text, context, intensity)` - Context-aware corruption (future enhancement)
|
|
61
|
+
- `initAutoCorruption()` - Auto-corrupt elements with `.auto-corrupt` class
|
|
62
|
+
- `createCorruptedElement(text, options)` - Programmatically create corrupted elements
|
|
63
|
+
- `stopAutoCorruption(element)`, `restartAutoCorruption(element)` - Control helpers
|
|
64
|
+
|
|
65
|
+
**Use Cases:**
|
|
66
|
+
- Dashboard titles and headers (recommended: 35% intensity)
|
|
67
|
+
- Section labels and navigation
|
|
68
|
+
- UI text matching CLI branding
|
|
69
|
+
- Randomizes on interval to show dynamic corruption
|
|
70
|
+
|
|
71
|
+
#### Bootstrap-Equivalent Components (680+ lines added to `components.css`)
|
|
72
|
+
**GOAL: 1:1 Bootstrap Parity** - Build sites without writing custom CSS
|
|
73
|
+
|
|
74
|
+
**Accordion/Collapse:**
|
|
75
|
+
- `.accordion`, `.accordion-item` - Collapsible panels with glassmorphism
|
|
76
|
+
- `.accordion-header`, `.accordion-body` - Header/content areas
|
|
77
|
+
- `.collapse`, `.collapse.show` - Standalone collapsible utility
|
|
78
|
+
- Auto +/− indicators on active state
|
|
79
|
+
|
|
80
|
+
**Toast Notifications:**
|
|
81
|
+
- `.toast-container` - Fixed position container (bottom-right)
|
|
82
|
+
- `.toast` with variants: `.success`, `.warning`, `.error`, `.info`
|
|
83
|
+
- `.toast-header`, `.toast-body`, `.toast-close` - Toast structure
|
|
84
|
+
- Slide-in/slide-out animations (300ms)
|
|
85
|
+
- Auto-dismiss support
|
|
86
|
+
- JavaScript API for programmatic toasts
|
|
87
|
+
|
|
88
|
+
**Button Groups:**
|
|
89
|
+
- `.btn-group` - Horizontal button clusters (no gaps, merged borders)
|
|
90
|
+
- `.btn-group-vertical` - Vertical button stacks
|
|
91
|
+
- `.btn-toolbar` - Toolbar layout with proper spacing
|
|
92
|
+
- `.btn.active` state for grouped buttons
|
|
93
|
+
|
|
94
|
+
**Input Groups:**
|
|
95
|
+
- `.input-group` - Combined input + button/text addons
|
|
96
|
+
- `.input-group-text` - Prepend/append text labels
|
|
97
|
+
- `.input-group-prepend`, `.input-group-append` - Positioning helpers
|
|
98
|
+
- Seamless border merging with glassmorphism
|
|
99
|
+
|
|
100
|
+
**Form Enhancements:**
|
|
101
|
+
- `.form-check`, `.form-check-input`, `.form-check-label` - Custom checkboxes/radios
|
|
102
|
+
- Styled with accent gradient on :checked
|
|
103
|
+
- ✓ checkmark and ● radio indicators
|
|
104
|
+
- `.form-switch`, `.form-switch-input`, `.form-switch-label` - Toggle switches
|
|
105
|
+
- Animated slide transition (150ms)
|
|
106
|
+
- Accent gradient when active
|
|
107
|
+
- `.form-range` - Custom range slider with accent styling
|
|
108
|
+
- `.form-select` - Styled select dropdown with custom arrow
|
|
109
|
+
- `.form-floating` - Material Design-style floating labels
|
|
110
|
+
- `.form-file`, `.form-file-label` - Custom file upload button
|
|
111
|
+
|
|
112
|
+
**Utility Classes:**
|
|
113
|
+
- `.btn-close` - Standardized close button (× symbol)
|
|
114
|
+
- `.visually-hidden` - Screen reader only content (WCAG)
|
|
115
|
+
- `.text-truncate` - Overflow ellipsis
|
|
116
|
+
- `.ratio`, `.ratio-1x1`, `.ratio-4x3`, `.ratio-16x9`, `.ratio-21x9` - Aspect ratio containers
|
|
117
|
+
|
|
118
|
+
#### Component JavaScript Helpers (`src/lib/components.js`)
|
|
119
|
+
Interactive functionality for new components:
|
|
120
|
+
|
|
121
|
+
- `initAccordions()` - Auto-initialize all accordions (click to toggle)
|
|
122
|
+
- `toggleCollapse(element)`, `showCollapse(element)`, `hideCollapse(element)` - Collapse controls
|
|
123
|
+
- `showToast(options)` - Display toast notifications programmatically
|
|
124
|
+
- `toast.success(message, title, duration)` - Convenience method
|
|
125
|
+
- `toast.warning(message, title, duration)` - Convenience method
|
|
126
|
+
- `toast.error(message, title, duration)` - Convenience method
|
|
127
|
+
- `toast.info(message, title, duration)` - Convenience method
|
|
128
|
+
- `toast.dismiss(toastEl, callback)`, `toast.dismissAll()` - Dismissal methods
|
|
129
|
+
- Auto-initialization on DOMContentLoaded
|
|
130
|
+
|
|
131
|
+
#### Package Exports
|
|
132
|
+
```javascript
|
|
133
|
+
'@whykusanagi/corrupted-theme/character-corruption' // character-corruption.js
|
|
134
|
+
'@whykusanagi/corrupted-theme/components-js' // components.js
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Changed
|
|
138
|
+
|
|
139
|
+
**Component Coverage:** Now 95%+ Bootstrap parity (up from 62%)
|
|
140
|
+
- 40+ existing components (v0.1.2)
|
|
141
|
+
- 25+ new components added (v0.1.3)
|
|
142
|
+
- **Total: 65+ components** - True 1:1 Bootstrap equivalent
|
|
143
|
+
|
|
144
|
+
**Philosophy:** "Build sites without writing custom CSS"
|
|
145
|
+
- All common UI patterns available as classes
|
|
146
|
+
- No need for bespoke styles in most cases
|
|
147
|
+
- Matches Bootstrap's utility-first approach
|
|
148
|
+
|
|
149
|
+
### Documentation
|
|
150
|
+
|
|
151
|
+
#### Branding Standards Integration
|
|
152
|
+
- Character-level corruption matches `docs/brand/TRANSLATION_FAILURE_AESTHETIC.md`
|
|
153
|
+
- Implements CLI's `CorruptTextJapanese()` function in JavaScript
|
|
154
|
+
- Dual corruption systems:
|
|
155
|
+
- **`corrupted-text.js`** (existing) - Multilingual cycling for loading animations
|
|
156
|
+
- **`character-corruption.js`** (new) - Character-level mixing for UI text
|
|
157
|
+
- Non-breaking: Both systems coexist for different use cases
|
|
158
|
+
|
|
159
|
+
#### Usage Guidelines
|
|
160
|
+
- Corruption intensity levels documented (15%, 25%, 35%, 45%)
|
|
161
|
+
- Anti-patterns explicitly banned (leet speak, over-corruption, word replacement)
|
|
162
|
+
- Accessibility compliance maintained (WCAG AA contrast, max 45% intensity)
|
|
163
|
+
- Responsive considerations for new form components
|
|
164
|
+
|
|
165
|
+
### Performance
|
|
166
|
+
|
|
167
|
+
- Form components use CSS-only where possible (no JS required)
|
|
168
|
+
- Accordion animations use `max-height` transitions (GPU-accelerated)
|
|
169
|
+
- Toast system reuses single container (no DOM thrashing)
|
|
170
|
+
- Auto-corruption uses `requestAnimationFrame` for smooth updates
|
|
171
|
+
|
|
172
|
+
### Browser Support
|
|
173
|
+
|
|
174
|
+
- All new components tested in Chrome 90+, Firefox 88+, Safari 14+
|
|
175
|
+
- Custom form controls use `appearance: none` with fallbacks
|
|
176
|
+
- Range slider styled for both WebKit and Firefox
|
|
177
|
+
- Aspect ratio containers use modern `aspect-ratio` property with padding fallback
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
24
181
|
## [0.1.2] - 2025-11-26
|
|
25
182
|
|
|
26
183
|
### Added
|
package/README.md
CHANGED
|
@@ -20,6 +20,12 @@ A production-ready glassmorphic design system for cinematic, cyberpunk-inspired
|
|
|
20
20
|
15. [Celeste Widget Integration](#celeste-widget-integration-optional)
|
|
21
21
|
16. [License](#license)
|
|
22
22
|
|
|
23
|
+
<div align="center" style="margin: 2rem 0;">
|
|
24
|
+
|
|
25
|
+

|
|
26
|
+
|
|
27
|
+
</div>
|
|
28
|
+
|
|
23
29
|
## Overview
|
|
24
30
|
- **Glassmorphism-first** visual language with layered depth, gradients, and scanlines.
|
|
25
31
|
- **Systemized tokens** (`src/css/variables.css`) for colors, typography, spacing, motion, and elevation.
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
# Character-Level Corruption - Implementation Guide
|
|
2
|
+
|
|
3
|
+
**Date**: 2025-12-12
|
|
4
|
+
**Issue Fixed**: Dashboard titles now use character-level Japanese mixing instead of word replacement
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## The Problem
|
|
9
|
+
|
|
10
|
+
The old dashboard had Japanese characters mixed **INTO** English words like:
|
|
11
|
+
```
|
|
12
|
+
👁️ US使AGE ANア統LYTICS 👁️
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
But the implementation was using word-level replacement:
|
|
16
|
+
```
|
|
17
|
+
👁️ 使用 tōkei 👁️ (replaces whole words)
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
This didn't match the style guide examples like:
|
|
21
|
+
- `"loaディング"` - Japanese mixed into "loading"
|
|
22
|
+
- `"pro理cessing"` - Japanese mixed into "processing"
|
|
23
|
+
- `"ana分lysing"` - Japanese mixed into "analyzing"
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## The Solution
|
|
28
|
+
|
|
29
|
+
### New Function: `CorruptTextJapanese()`
|
|
30
|
+
|
|
31
|
+
**Location**: `cmd/celeste/tui/streaming.go` (line 252) and `cmd/celeste/commands/corruption.go`
|
|
32
|
+
|
|
33
|
+
This function mixes Japanese characters **INTO** English words at the character level:
|
|
34
|
+
|
|
35
|
+
```go
|
|
36
|
+
func CorruptTextJapanese(text string, intensity float64) string {
|
|
37
|
+
katakana := []rune("アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン")
|
|
38
|
+
kanjiFragments := []rune("壊虚深淵闇処理分析監視接続統計使用読込実行")
|
|
39
|
+
|
|
40
|
+
// For each character:
|
|
41
|
+
// 50% chance: Replace with Katakana
|
|
42
|
+
// 25% chance: Replace with Kanji
|
|
43
|
+
// 25% chance: Keep + maybe insert Katakana after
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Example Outputs
|
|
48
|
+
|
|
49
|
+
**Input**: `"USAGE ANALYTICS"`
|
|
50
|
+
**Intensity**: `0.35`
|
|
51
|
+
|
|
52
|
+
**Possible outputs** (randomized each time):
|
|
53
|
+
```
|
|
54
|
+
"US使AGE ANア統LYTICS"
|
|
55
|
+
"USアGE AN統AL読TICSカ"
|
|
56
|
+
"USカGE 分NALYTI監S"
|
|
57
|
+
"U接AGE処A壊ALYTICS"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The Japanese characters are mixed IN, making it readable but glitchy!
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Files Updated
|
|
65
|
+
|
|
66
|
+
### 1. `cmd/celeste/commands/corruption.go`
|
|
67
|
+
|
|
68
|
+
**Added** (line 124):
|
|
69
|
+
```go
|
|
70
|
+
func corruptTextCharacterLevel(text string, intensity float64) string {
|
|
71
|
+
// Character-level Japanese mixing
|
|
72
|
+
// Same implementation as CorruptTextJapanese
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 2. `cmd/celeste/commands/stats.go`
|
|
77
|
+
|
|
78
|
+
**Changed** (line 194):
|
|
79
|
+
```go
|
|
80
|
+
// OLD (word replacement):
|
|
81
|
+
title := corruptTextSimple("USAGE ANALYTICS", 0.40)
|
|
82
|
+
|
|
83
|
+
// NEW (character mixing):
|
|
84
|
+
title := corruptTextCharacterLevel("USAGE ANALYTICS", 0.35)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 3. `cmd/celeste/tui/streaming.go`
|
|
88
|
+
|
|
89
|
+
**Added** (line 252):
|
|
90
|
+
```go
|
|
91
|
+
func CorruptTextJapanese(text string, intensity float64) string {
|
|
92
|
+
// Character-level Japanese mixing
|
|
93
|
+
// Available throughout TUI
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Kept** (line 233):
|
|
98
|
+
```go
|
|
99
|
+
func CorruptText(text string, intensity float64) string {
|
|
100
|
+
// Block character corruption (█▓▒░)
|
|
101
|
+
// For skill execution, heavy glitching
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Two Corruption Types
|
|
108
|
+
|
|
109
|
+
### Type 1: Character-Level Japanese Mixing ✨ **NEW**
|
|
110
|
+
|
|
111
|
+
**Function**: `CorruptTextJapanese()` or `corruptTextCharacterLevel()`
|
|
112
|
+
**Output**: `"US使AGE ANア統LYTICS"` (readable with Japanese)
|
|
113
|
+
**Use for**: Dashboard titles, section headers, any text that should stay readable
|
|
114
|
+
|
|
115
|
+
```go
|
|
116
|
+
// Dashboard header
|
|
117
|
+
title := tui.CorruptTextJapanese("USAGE ANALYTICS", 0.35)
|
|
118
|
+
|
|
119
|
+
// Section header
|
|
120
|
+
section := tui.CorruptTextJapanese("PROVIDER BREAKDOWN", 0.30)
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Intensity Guide**:
|
|
124
|
+
- `0.25-0.30`: Light corruption (25-30% chars replaced)
|
|
125
|
+
- `0.30-0.35`: Medium corruption (30-35% chars replaced) ← **Recommended for titles**
|
|
126
|
+
- `0.35-0.40`: Heavy corruption (35-40% chars replaced)
|
|
127
|
+
|
|
128
|
+
### Type 2: Block Character Corruption
|
|
129
|
+
|
|
130
|
+
**Function**: `CorruptText()`
|
|
131
|
+
**Output**: `"tar▓█_r▒ad░ng"` (hard to read, heavy glitching)
|
|
132
|
+
**Use for**: Skill names during execution, loading animations
|
|
133
|
+
|
|
134
|
+
```go
|
|
135
|
+
// Skill execution (strikethrough + corruption)
|
|
136
|
+
skillName := tui.CorruptText("tarot_reading", 0.40)
|
|
137
|
+
|
|
138
|
+
// Loading state
|
|
139
|
+
loading := tui.CorruptText("Loading...", 0.30)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Intensity Guide**:
|
|
143
|
+
- `0.30-0.35`: Light block corruption
|
|
144
|
+
- `0.35-0.40`: Medium block corruption ← **Recommended for skills**
|
|
145
|
+
- `0.40-0.50`: Heavy block corruption
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## When to Use Each Function
|
|
150
|
+
|
|
151
|
+
| Context | Function | Intensity | Example |
|
|
152
|
+
|---------|----------|-----------|---------|
|
|
153
|
+
| Dashboard title | `CorruptTextJapanese` | 0.35 | "US使AGE ANア統LYTICS" |
|
|
154
|
+
| Section header | `CorruptTextJapanese` | 0.30 | "PROバIDERア BREア統KDOWN" |
|
|
155
|
+
| Subsection | `CorruptTextJapanese` | 0.25 | "TO監AL SEセSSI使NS" |
|
|
156
|
+
| Skill executing | `CorruptText` | 0.40 | "tar▓█_r▒ad░ng" |
|
|
157
|
+
| Loading animation | `CorruptText` | 0.30 | "L▓ad█ng..." |
|
|
158
|
+
| Status phrases | Neither (use phrase bank) | N/A | "処理 processing purosesu..." |
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Testing the Fix
|
|
163
|
+
|
|
164
|
+
### Before (Word Replacement):
|
|
165
|
+
```bash
|
|
166
|
+
celeste chat
|
|
167
|
+
/stats
|
|
168
|
+
```
|
|
169
|
+
Output was:
|
|
170
|
+
```
|
|
171
|
+
👁️ 使用 tōkei 👁️ (whole words replaced)
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### After (Character Mixing):
|
|
175
|
+
```bash
|
|
176
|
+
celeste chat
|
|
177
|
+
/stats
|
|
178
|
+
```
|
|
179
|
+
Output is now (randomized):
|
|
180
|
+
```
|
|
181
|
+
👁️ US使AGE ANア統LYTICS 👁️ (Japanese mixed in)
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Each time you run `/stats`, the corruption is randomized, so you'll see different variations like:
|
|
185
|
+
- `"US使AGE ANア統LYTICS"`
|
|
186
|
+
- `"USアGE AN統AL読TICSカ"`
|
|
187
|
+
- `"USカGE 分NALYTI監S"`
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Visual Comparison
|
|
192
|
+
|
|
193
|
+
### Old Implementation (Word-Level)
|
|
194
|
+
```
|
|
195
|
+
▓▒░ ═══════════════════════════════════════ ░▒▓
|
|
196
|
+
👁️ 使用 統計 👁️
|
|
197
|
+
⟨ tōkei dēta wo... fuhai sasete iru... ⟩
|
|
198
|
+
▓▒░ ═══════════════════════════════════════ ░▒▓
|
|
199
|
+
```
|
|
200
|
+
**Problem**: Entire words replaced, not mixed
|
|
201
|
+
|
|
202
|
+
### New Implementation (Character-Level)
|
|
203
|
+
```
|
|
204
|
+
▓▒░ ═══════════════════════════════════════ ░▒▓
|
|
205
|
+
👁️ US使AGE ANア統LYTICS 👁️
|
|
206
|
+
⟨ tōkei dēta wo... fuhai sasete iru... ⟩
|
|
207
|
+
▓▒░ ═══════════════════════════════════════ ░▒▓
|
|
208
|
+
```
|
|
209
|
+
**Solution**: Japanese characters mixed INTO English ✓
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Matches Style Guide Examples
|
|
214
|
+
|
|
215
|
+
The new implementation now matches all the examples from `STYLE_GUIDE.md`:
|
|
216
|
+
|
|
217
|
+
✅ `"loading"` → `"loaディング"`
|
|
218
|
+
✅ `"processing"` → `"pro理cessing"`
|
|
219
|
+
✅ `"analyzing"` → `"ana分lysing"`
|
|
220
|
+
✅ `"corrupting"` → `"cor壊rupting"`
|
|
221
|
+
✅ `"statistics"` → `"sta計stics"`
|
|
222
|
+
|
|
223
|
+
And the dashboard title:
|
|
224
|
+
✅ `"USAGE ANALYTICS"` → `"US使AGE ANア統LYTICS"`
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Implementation Notes
|
|
229
|
+
|
|
230
|
+
### Why Two Functions?
|
|
231
|
+
|
|
232
|
+
1. **Readable corruption** (Japanese mixing) - For UI text users need to read
|
|
233
|
+
2. **Heavy corruption** (block characters) - For dramatic effect when readability isn't critical
|
|
234
|
+
|
|
235
|
+
### Why the Old Implementation Was Wrong
|
|
236
|
+
|
|
237
|
+
The old `corruptTextSimple()` function did **semantic word replacement**:
|
|
238
|
+
- "USAGE" → `"使用"` (whole word)
|
|
239
|
+
- "ANALYTICS" → `"統計"` (whole word)
|
|
240
|
+
|
|
241
|
+
This was more of a **translation** than **corruption**. The aesthetic requires **glitchy mixing** where Japanese interrupts English mid-word.
|
|
242
|
+
|
|
243
|
+
### Performance
|
|
244
|
+
|
|
245
|
+
Character-level mixing is slightly more expensive than word replacement, but the difference is negligible:
|
|
246
|
+
- Dashboard renders once per `/stats` command
|
|
247
|
+
- Randomization happens at display time
|
|
248
|
+
- No caching needed (variations are a feature!)
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Related Files
|
|
253
|
+
|
|
254
|
+
- **Implementation**: `tui/streaming.go:252` and `commands/corruption.go:124`
|
|
255
|
+
- **Usage**: `commands/stats.go:194`
|
|
256
|
+
- **Style Guide**: `docs/STYLE_GUIDE.md`
|
|
257
|
+
- **Phrase Library**: `docs/CORRUPTION_PHRASES.md`
|
|
258
|
+
- **Validation**: `docs/IMPLEMENTATION_VALIDATION.md`
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
**Status**: ✅ **FIXED** - Dashboard now uses character-level corruption
|
|
263
|
+
**Tested**: Visual output matches style guide examples
|
|
264
|
+
**Impact**: All dashboard headers now have proper translation-failure aesthetic
|