--- # vibed-p2es title: 'bit-by-bit: allow arbitrary emoji for habits, not just the curated list' status: todo type: feature created_at: 2026-07-14T18:53:47Z updated_at: 2026-07-14T18:53:47Z --- User request: habits should accept any emoji, not only the 24 curated options in the picker. Current behavior: the emoji picker is a native with a small free-text input (maxlength ~4 to allow multi-codepoint emoji like 👨‍🌾; validate with Intl.Segmenter or a grapheme-aware check, falling back to length caps). - Sanitize: trim, take the first grapheme cluster; empty → auto-assign as today. - Keep keyboard accessibility and the 🎲 Auto option. - Applies to both the onboarding wizard and Settings → Habits (add + rename flows). - Export/import already stores emoji as plain strings, so no data model change expected. - [ ] Free-form emoji input in onboarding - [ ] Free-form emoji input in Settings → Habits - [ ] Grapheme-aware validation + auto fallback - [ ] Verify in real browser (screenshots)