byGalax
258ad3511d
fix(screen-share): preset dims no longer crop non-16:9 monitors
...
Pass width/height as { ideal: N } constraints (not exact values) so
Chromium preserves the source's aspect ratio instead of cropping
non-matching monitors. Previously a 1920x1200 monitor under a 1080p
preset lost the bottom 120px including the Windows taskbar.
The auto-preset fallback now omits width/height entirely (both set to
undefined) so getDisplayMedia uses the screen's native resolution.
Cast through `unknown` to satisfy LiveKit's VideoResolution type, which
declares width/height as plain number but Chromium accepts the full
MediaTrackConstraints shape at runtime.
2026-05-16 19:19:30 +02:00
byGalax
2583613d7f
feat(P3.T7): RemoteRevokedScreen overlay for own-device revocation
2026-05-16 19:15:15 +02:00
byGalax
04d9909e92
feat(P3.T6): Settings 'Geräte' tab with revoke + this-device badge
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-16 19:13:31 +02:00
byGalax
e05f5445e7
feat(P3.T5): useOwnDevices hook with realtime refresh
...
Adds useOwnDevices React hook that fetches the user device list via
listOwnDevices and re-fetches on any postgres_changes event on the
devices table, matching the channel/filter convention in AuthContext.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-16 19:10:48 +02:00
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
d449e128a8
docs(hotfix): screen-share taskbar crop + strip-toggle icon padding plan
2026-05-16 18:59:59 +02:00
byGalax
5b0aa24a8d
feat(P3.T2): DeviceRecord.revokedAt + revokeDevice wrapper
...
Extend DeviceRecord with revokedAt field, update registerDevice and
listOwnDevices selects to include revoked_at, add revokeDevice RPC
helper, update db-types to reflect T1 migration schema, and add
vitest coverage for all new behaviour.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-16 18:52:34 +02:00
byGalax
540b506f91
feat(P3.T1): devices.revoked_at + revoke_device RPC + realtime publication
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-16 18:48:22 +02:00
byGalax
ede0d00f5b
docs(P3): Phase 3 implementation plan (Session/Device List + Revoke)
2026-05-16 18:45:46 +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
915569db39
feat(shared): mark_attachment_viewed + view_once on AttachmentHandle
2026-05-16 18:12:15 +02:00
byGalax
526f9d7bcc
feat(db): message_attachments.view_once + mark_attachment_viewed RPC
2026-05-16 18:09:36 +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
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