byGalax
7726498218
feat(desktop): GIF picker popover (Tenor + trending/search/recent)
2026-05-16 18:05:45 +02:00
byGalax
f1d9602a76
fix(desktop): read Tenor API key from VITE_TENOR_API_KEY env, no hardcoded credential
2026-05-16 18:03:20 +02:00
byGalax
45bcbb449c
feat(desktop): Tenor v2 GIF search/featured/recent client
2026-05-16 18:02:01 +02:00
byGalax
ef98efb938
feat(desktop): mention notifications via realtime + osNotify
2026-05-16 17:59:57 +02:00
byGalax
7355b343c8
feat(shared): sendEncryptedMessage inserts mention rows after the message row
2026-05-16 17:57:52 +02:00
byGalax
1a39c1bb33
feat(shared): parseMentionUsernames + insertMentions helpers
2026-05-16 17:55:20 +02:00
byGalax
70209be1de
feat(db): message_mentions table (RLS: mentioned user + author can SELECT)
2026-05-16 17:52:40 +02:00
byGalax
3dbeabd268
feat(desktop): pin/unpin from message context menu + side panel
2026-05-16 17:51:01 +02:00
byGalax
6bff163f09
feat(desktop): pinned-messages side panel
2026-05-16 17:47:39 +02:00
byGalax
ddeedeb71d
feat(desktop): pinned-messages pill in conv header
2026-05-16 17:45:43 +02:00
byGalax
7e85ffe548
feat(desktop): usePinnedMessages live hook
2026-05-16 17:43:45 +02:00
byGalax
0d30a462b3
feat(shared): pinned-messages list/pin/unpin helpers
2026-05-16 17:42:09 +02:00
byGalax
745b8cd69d
feat(db): pinned_messages table (≤5 per conv via trigger)
2026-05-16 17:39:42 +02:00
byGalax
5ace6735d8
docs(plan): phase 2 — messaging (pinned / mentions / GIF / view-once)
2026-05-16 17:36:21 +02:00
byGalax
ffaa6ceb70
feat(mobile): SecurityCenter — PIN change, recovery, reset, migration retry
2026-05-16 17:23:04 +02:00
byGalax
ccac822cb9
feat(mobile): settings hub with security section + signout
2026-05-16 17:21:57 +02:00
byGalax
74a0ef6c32
refactor(mobile): chats header opens settings instead of inline logout
2026-05-16 17:18:56 +02:00
byGalax
9de2c368bf
feat(desktop): optional wipe-on-close (Settings -> Sicherheit)
2026-05-16 17:17:59 +02:00
byGalax
88345420e0
refactor(mobile): AttachmentImage drops device-keyed props
2026-05-16 17:17:37 +02:00
byGalax
0354676d2f
refactor(mobile): MessageBubble drops ownDeviceId prop
2026-05-16 17:17:30 +02:00
byGalax
cb7bd99fb4
refactor(mobile): conversation detail uses ownUserId + drops senderDeviceId
2026-05-16 17:13:47 +02:00
byGalax
3b55fcaf2c
feat(mobile): (app) layout routes by userKeyState
2026-05-16 17:11:05 +02:00
byGalax
7ae1d5ba8c
feat(mobile): UserKey unlock screen (PIN entry + recovery tab + reset)
2026-05-16 17:09:50 +02:00
byGalax
50bfb5b137
feat(desktop): wipe local crypto + caches on sign-out
2026-05-16 17:09:01 +02:00
byGalax
41359816f1
feat(mobile): UserKey setup screen (PIN + optional recovery code)
2026-05-16 17:08:47 +02:00
byGalax
8ad212291a
feat(desktop): apply friend nicknames in header / bubble / mentions / call tile
2026-05-16 17:06:18 +02:00
byGalax
18a6365586
feat(mobile): PinInput component — 6-digit numeric pad
2026-05-16 17:04:25 +02:00
byGalax
898b7469bb
feat(desktop): set-nickname dialog + right-click trigger in friends list
2026-05-16 17:01:38 +02:00
byGalax
a5eadef663
feat(desktop): friendNicknames local store + useNickname hook
2026-05-16 16:58:14 +02:00
byGalax
e8074e7da0
feat(desktop): empty-state for empty conversation
2026-05-16 16:56:27 +02:00
byGalax
88409aff5d
feat(desktop): empty-state for friends list
2026-05-16 16:54:12 +02:00
byGalax
b7d7a85253
feat(desktop): empty-state for chat list
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-16 16:51:37 +02:00
byGalax
502c6af1b8
feat(desktop): EmptyState primitive component
2026-05-16 16:49:16 +02:00
byGalax
adc9686035
refactor(mobile): AuthProvider exposes userKeyState instead of device record
2026-05-16 16:47:55 +02:00
byGalax
472665b980
fix(desktop): tray badge — IPC handler died when icon.ico missing from packaged resources
2026-05-16 16:47:19 +02:00
byGalax
c52c65faa9
feat(mobile): userIdentity orchestrator (setup/unlock/cache/change-PIN/reset)
2026-05-16 16:43:50 +02:00
byGalax
79f1786ac6
feat(desktop): Settings — 🌐 Global toggle per voice hotkey
2026-05-16 16:43:00 +02:00
byGalax
ca77214e2d
fix(desktop): voice hotkeys are window-scoped unless Global is toggled
...
The old code registered every enabled hotkey through Electron globalShortcut
API, which captures system-wide. Setting M as mute meant m could not be
typed in any other app. Now the OS-level registration only happens when
binding.global === true; otherwise the existing window-keydown listener
handles it.
2026-05-16 16:41:20 +02:00
byGalax
8c27e8eafa
feat(mobile): legacyDeviceVault helper for per-device key probing
2026-05-16 16:41:18 +02:00
byGalax
69733168ed
feat(desktop): add 'global' flag to voice hotkey binding (default false)
2026-05-16 16:38:51 +02:00
byGalax
bf87add18d
feat(mobile): extend cryptoBackend with pwhash + scalarMultBase
2026-05-16 16:37:09 +02:00
byGalax
c871687fd2
refactor(desktop): derivePublicKey via CryptoBackend.scalarMultBase
2026-05-16 16:35:36 +02:00
byGalax
61a1eb37ea
refactor(shared): route userKey through CryptoBackend (no libsodium-wrappers-sumo)
2026-05-16 16:33:50 +02:00
byGalax
9b9802ff6e
docs(plan): phase 1 — quality & fixes (hotkey-bug, tray-audit, empty-states, nicknames, memory-wipe)
2026-05-16 16:33:38 +02:00
byGalax
2463081949
feat(shared): extend CryptoBackend with pwhash + scalarMultBase
2026-05-16 16:30:52 +02:00
byGalax
1eea80c529
chore(mobile): check:env script lints .env.local against .env.example
2026-05-16 16:27:21 +02:00
byGalax
830dac4cdd
fix(mobile): defer crypto backend init into AppBootstrap (prevents white-screen)
2026-05-16 16:25:10 +02:00
byGalax
cb46483f5d
feat(mobile): AppBootstrap boundary — defers crypto init, catches global throws
2026-05-16 16:24:34 +02:00
byGalax
87fed820dc
feat(mobile): BootSplash + BootError fallback views for AppBootstrap
2026-05-16 16:23:26 +02:00
byGalax
fca5211008
docs(spec): fifteen-features initiative (0.19.0) — 5 phases, single end-of-batch release
2026-05-16 16:21:32 +02:00