feat: GIF search (Klipy), stickers, emoji picker, and bug fixes

- Add GIF search powered by Klipy API with correct response mapping
  (file.sm/hd tiers, not flat files structure)
- Add sticker system: packs, upload with auto-downscale, send in messages
- Add tabbed InputPopover with emoji, GIF, and sticker pickers
- Fix GIF API key migration race condition (column-add loop vs rename)
- Fix masked API key corruption on settings save (server + client guards)
- Fix sticker packs 403 (reversed isMember parameter order)
- Fix emoji picker not filling popover width (perLine 8→9, CSS 100%)
- Add error logging for Klipy API failures
This commit is contained in:
Jannis Braun
2026-03-15 02:04:37 +01:00
parent 7113f47b17
commit 3de6e4a668
26 changed files with 2160 additions and 50 deletions
+15
View File
@@ -292,6 +292,21 @@
}
}
/* ── Emoji Mart Overrides ── */
.emoji-picker-wrapper em-emoji-picker {
--em-rgb-background: 20, 20, 26;
--em-rgb-input: 17, 17, 24;
--em-rgb-color: 216, 216, 222;
--em-color-border: rgba(255, 255, 255, 0.07);
--em-color-border-over: rgba(255, 255, 255, 0.12);
--rgb-accent: 124, 108, 246;
--font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
border: none !important;
background: transparent !important;
width: 100% !important;
max-height: 400px;
}
/* Animations */
@keyframes fadeIn {
from { opacity: 0; }