@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.
Files changed (37) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/README.md +6 -0
  3. package/docs/CHARACTER_LEVEL_CORRUPTION.md +264 -0
  4. package/docs/CORRUPTION_PHRASES.md +529 -0
  5. package/docs/ROADMAP.md +266 -0
  6. package/docs/STYLE_GUIDE.md +605 -0
  7. package/docs/brand/BRAND_OVERVIEW.md +413 -0
  8. package/docs/brand/COLOR_SYSTEM.md +583 -0
  9. package/docs/brand/DESIGN_TOKENS.md +1009 -0
  10. package/docs/brand/TRANSLATION_FAILURE_AESTHETIC.md +525 -0
  11. package/docs/brand/TYPOGRAPHY.md +624 -0
  12. package/docs/components/ANIMATION_GUIDELINES.md +901 -0
  13. package/docs/components/COMPONENT_LIBRARY.md +1061 -0
  14. package/docs/components/GLASSMORPHISM.md +602 -0
  15. package/docs/components/INTERACTIVE_STATES.md +766 -0
  16. package/docs/governance/CONTRIBUTION_GUIDELINES.md +593 -0
  17. package/docs/governance/DESIGN_SYSTEM_GOVERNANCE.md +451 -0
  18. package/docs/governance/VERSION_MANAGEMENT.md +447 -0
  19. package/docs/governance/VERSION_REFERENCES.md +229 -0
  20. package/docs/platforms/COMPONENT_MAPPING.md +579 -0
  21. package/docs/platforms/NPM_PACKAGE.md +854 -0
  22. package/docs/platforms/WEB_IMPLEMENTATION.md +1221 -0
  23. package/docs/standards/ACCESSIBILITY.md +715 -0
  24. package/docs/standards/ANTI_PATTERNS.md +554 -0
  25. package/docs/standards/SPACING_SYSTEM.md +549 -0
  26. package/examples/button.html +1 -1
  27. package/examples/card.html +1 -1
  28. package/examples/form.html +1 -1
  29. package/examples/index.html +2 -2
  30. package/examples/layout.html +1 -1
  31. package/examples/nikke-team-builder.html +1 -1
  32. package/examples/showcase-complete.html +840 -15
  33. package/examples/showcase.html +1 -1
  34. package/package.json +16 -3
  35. package/src/css/components.css +676 -0
  36. package/src/lib/character-corruption.js +563 -0
  37. 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
+ ![Corrupted Theme - Glassmorphic Design System](https://s3.whykusanagi.xyz/art/cyber_sailor_moon_trans.png)
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