feat: upgrade toolchain and soften sync recovery after network blips
Bump Vite 8, matrix-js-sdk, and related deps; fix immer/vanilla-extract imports for new majors. Replace blocking sync error dialog with background recovery on wake/offline, and disable Vite auto-open in dev. Add feature handoff documentation index.
This commit is contained in:
92
docs/handoff/features/emoji-stickers/HANDOFF.md
Normal file
92
docs/handoff/features/emoji-stickers/HANDOFF.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Emojis & stickers — handoff
|
||||
|
||||
## Summary
|
||||
|
||||
Paarrot extends Cinny's emoji/sticker system with **usage tracking** (frequently used emojis), **Telegram sticker pack import**, custom emoji pack plugins, and configurable **emoji font** (System / Apple / Twemoji). Pack management lives under Settings and room/space settings.
|
||||
|
||||
## User-facing behavior
|
||||
|
||||
- **Settings → Emojis & stickers**: global packs, user packs, Telegram import
|
||||
- Frequently-used emojis sorted by usage stats
|
||||
- **Settings → General → Emoji style**: System, Apple, Twemoji fonts
|
||||
- Telegram: bot token stored locally, import packs by name
|
||||
- Room/space emoji packs via common-settings (inherited Cinny patterns)
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
useEmojiUsage → account data paarrot.favemojis
|
||||
EmojiStyleFeature (ClientNonUIFeatures) → CSS --font-emoji
|
||||
TelegramImport.tsx → telegramStickerImport.ts → Matrix image pack upload
|
||||
custom-emoji plugin (plugins/custom-emoji/) → PackMetaReader
|
||||
Settings / common-settings EmojisStickers pages
|
||||
```
|
||||
|
||||
## Key files
|
||||
|
||||
| Path | Role |
|
||||
|------|------|
|
||||
| `cinny/src/app/hooks/useEmojiUsage.ts` | Usage stats in account data |
|
||||
| `cinny/src/app/utils/telegramStickerImport.ts` | Telegram Bot API import |
|
||||
| `cinny/src/app/features/settings/emojis-stickers/TelegramImport.tsx` | Import UI |
|
||||
| `cinny/src/app/features/settings/emojis-stickers/EmojisStickers.tsx` | Settings hub |
|
||||
| `cinny/src/app/features/settings/emojis-stickers/UserPack.tsx` | User pack editor |
|
||||
| `cinny/src/app/features/settings/emojis-stickers/GlobalPacks.tsx` | Global packs |
|
||||
| `cinny/src/app/plugins/custom-emoji/` | Custom emoji pack reader |
|
||||
| `cinny/src/app/pages/client/ClientNonUIFeatures.tsx` | `EmojiStyleFeature` |
|
||||
| `cinny/src/app/state/settings.ts` | `EmojiStyle` enum |
|
||||
|
||||
## Data model
|
||||
|
||||
| Key | Scope | Content |
|
||||
|-----|-------|---------|
|
||||
| `paarrot.favemojis` | User account data | Emoji usage counts |
|
||||
| `cinny_telegram_bot_token` | localStorage | Telegram bot token (TelegramImport) |
|
||||
| `im.ponies.room_emotes` | Room state | Standard Matrix emoji packs |
|
||||
|
||||
## Dependencies
|
||||
|
||||
- Telegram Bot API (`api.telegram.org`)
|
||||
- Twemoji / Apple Color Emoji fonts (bundled or system)
|
||||
- `matrix-js-sdk` for image pack events
|
||||
|
||||
## Integration points
|
||||
|
||||
- **Emoji board / composer autocomplete**: reads usage ordering
|
||||
- **Image pack viewer**: preview imported packs
|
||||
- **Plugins**: custom-emoji pack format
|
||||
|
||||
## Testing
|
||||
|
||||
### Manual
|
||||
|
||||
1. Send messages with varied emoji; open picker — frequent ones rise.
|
||||
2. Import Telegram pack with valid bot token; verify stickers in room.
|
||||
3. Switch emoji style General setting; verify font change in messages.
|
||||
4. Add room emoji pack in space settings.
|
||||
|
||||
### Automated
|
||||
|
||||
- None
|
||||
|
||||
## Known issues & gotchas
|
||||
|
||||
- Telegram token in **localStorage** — not encrypted; user-provided bot
|
||||
- Telegram import uses network to Telegram servers — rate limits apply
|
||||
- `PAARROT_EMOJI_USAGE_EVENT = 'paarrot.favemojis'` — must stay stable or migrate
|
||||
- Pack id prefix `telegram_${packName}` for imported packs
|
||||
|
||||
## Future work
|
||||
|
||||
- Encrypt or secure-store Telegram token
|
||||
- Usage stats sync across devices (account data already does)
|
||||
- Sticker pack marketplace
|
||||
|
||||
## Related docs
|
||||
|
||||
- Cinny upstream emoji pack docs (if any)
|
||||
|
||||
## Add your extra things here
|
||||
|
||||
- Emoji style values: `EmojiStyle.System | Apple | Twemoji` in settings atom
|
||||
- `useEmojiGroupLabels` for picker section headers
|
||||
Reference in New Issue
Block a user