byGalax
a4f7a16c90
feat(P3.T4): ensure device row + revoke-realtime + revokedRemotely flag
2026-05-16 19:08:17 +02:00
byGalax
f6e0e4dd09
feat(P3.T3): app:hostname IPC for device-name default
2026-05-16 19:04:03 +02:00
byGalax
ef1f9f45d8
fix(desktop): swap GIF provider from Tenor (closed Jan 2026) to GIPHY
...
Google closed Tenor v2 to new API clients in Jan 2026, so the only
people who could use the picker were those with a pre-existing Google
Cloud Console key. Swapped to GIPHY's Developer API (still open, free
keys at https://developers.giphy.com/dashboard/ ).
- Env var renamed VITE_TENOR_API_KEY → VITE_GIPHY_API_KEY
- Endpoint, response mapping, error sentinel updated
- File still named tenor.ts for import-path stability — renaming
later if it bothers anyone
- Public GifResult interface unchanged so the picker UI didn't need
edits beyond the error-message switch
2026-05-16 18:25:18 +02:00
byGalax
95156a65eb
feat(desktop): view-once image attachments (sender toggle + recipient lightbox + tombstone)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-16 18:18:39 +02:00
byGalax
cd79b77e6f
feat(desktop): GIF button + picker wired into composer
2026-05-16 18:07:40 +02:00
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
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
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
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
c430a590fc
fix(mobile): lazy env proxy so missing EXPO_PUBLIC vars throw inside React
2026-05-16 16:21:02 +02:00
byGalax
3b884b0415
docs(mobile): document EAS Secrets contract for EXPO_PUBLIC_*
2026-05-16 16:14:23 +02:00
byGalax
90fa0a7e95
chore(desktop): release v0.18.8
2026-05-16 15:35:24 +02:00
byGalax
767db72847
fix(desktop): drop bright border on Settings SubSection cards
...
The inner cards (Nachrichten-Ton / Klingelton / Audio-Gerät / Hotkeys /
…) looked like they had a stark white outline. The cause: --color-line
is a semi-transparent white token, and applying the `/60` alpha modifier
in `border-line/60` overrides the original alpha — so the inner border
ended up brighter than the outer Section's normal `border-line`.
Drop the border entirely. Background tint + caps heading is enough
grouping signal in a tab-pattern panel.
2026-05-16 15:33:36 +02:00
byGalax
0288d7a476
chore(desktop): release v0.18.7
2026-05-16 15:30:14 +02:00