Commit Graph

69 Commits

Author SHA1 Message Date
0594b890c3 feat: mentions badge in chat list and muted-mention delivery
All checks were successful
CI / test (push) Successful in 21s
2026-03-08 12:23:39 +03:00
fc7a9cc3a6 test+web: fix test suite and remove redundant privacy checkbox
All checks were successful
CI / test (push) Successful in 25s
2026-03-08 12:16:21 +03:00
79baadb522 feat(auth,privacy,web): step-by-step login, privacy settings persistence, TOTP QR, and API docs
Some checks failed
CI / test (push) Failing after 22s
2026-03-08 12:09:53 +03:00
1546ae7381 web: move contacts to dedicated burger-menu screen
Some checks failed
CI / test (push) Failing after 24s
2026-03-08 11:57:01 +03:00
f6fecf57c7 fix(web): move Contacts access to burger menu only
Some checks failed
CI / test (push) Failing after 25s
- remove Contacts from top chat tabs

- keep contacts screen reachable via burger menu
2026-03-08 11:52:11 +03:00
cbd1b008bb feat(contacts): switch contacts UX to email-first flow
Some checks failed
CI / test (push) Failing after 18s
- expose email in user search/contact responses

- add add-contact-by-email API endpoint

- show email in contacts/search and add contact form by email in Contacts tab
2026-03-08 11:51:02 +03:00
897defc39d fix(audio,sessions): unify audio playback state and improve session discovery
Some checks failed
CI / test (push) Failing after 18s
- move voice/audio players to single global audio engine with shared volume

- stop/reset previous track when switching to another media

- keep playback alive across chat switches via global audio element

- list refresh sessions by redis scan fallback when user session set is missing
2026-03-08 11:48:13 +03:00
27d3340a37 feat(auth): add TOTP 2FA setup and login verification
Some checks failed
CI / test (push) Failing after 21s
- add user twofa fields and migration

- add 2FA setup/enable/disable endpoints

- enforce OTP on login when 2FA enabled

- add web login OTP field and settings UI
2026-03-08 11:43:51 +03:00
e685a38be6 feat(auth): add active sessions management
Some checks failed
CI / test (push) Failing after 33s
- store refresh session metadata in redis (ip/user-agent/created_at)

- add auth APIs: list sessions, revoke one, revoke all

- add web privacy UI for active sessions
2026-03-08 11:41:03 +03:00
da73b79ee7 feat(contacts): add contacts module with backend APIs and web tab
Some checks failed
CI / test (push) Failing after 18s
- add user_contacts table and migration

- expose /users/contacts list/add/remove endpoints

- add Contacts tab in chat list with add/remove actions
2026-03-08 11:38:11 +03:00
39b61ec94b feat(web): split chat list into pinned and regular sections
Some checks failed
CI / test (push) Failing after 19s
- render explicit Pinned and Chats blocks

- keep pin context actions unchanged
2026-03-08 11:35:31 +03:00
8fcfd60ff5 feat(web): improve archive chats UX
Some checks failed
CI / test (push) Failing after 18s
- keep archived list synced while browsing chats

- add archived entry in All tab with unread count-like badge

- show loading/empty states in Archived tab
2026-03-08 11:34:45 +03:00
4fe89ce89a feat(web): service-worker notifications and composer/scroll UX fixes
Some checks failed
CI / test (push) Failing after 21s
- register notifications service worker and handle click-to-open chat/message

- route realtime notifications through service worker with fallback

- support ?chat=&message= deep-link navigation in chats page

- enforce 1s minimum voice message length

- lift scroll-to-bottom button to avoid overlap with composer action
2026-03-08 11:33:58 +03:00
68ba97bb90 fix(web): unify mic/send button and restore scroll-down
Some checks failed
CI / test (push) Failing after 20s
- show one action button in composer: mic when empty, send when text exists

- add floating scroll-to-bottom button in message list

- exclude non-text/media messages from Chat Info links list to avoid duplicates
2026-03-08 11:27:16 +03:00
14610b5699 feat(web): inline chat search and global audio bar
Some checks failed
CI / test (push) Failing after 20s
- replace modal message search with header inline search controls

- add global top audio bar linked to active inline audio player

- improve chat info header variants and light theme readability
2026-03-08 11:21:57 +03:00
03bf197949 fix(web): stabilize realtime chat list synchronization
Some checks failed
CI / test (push) Failing after 17s
- throttle chat list reload on realtime events

- refresh chat previews after incoming messages

- keep active chat messages in sync on chat_updated
2026-03-08 11:10:55 +03:00
c58678ee09 feat(web): refine media gallery UX in chat info
Some checks failed
CI / test (push) Failing after 18s
- add per-tab counters and sticky media tabs

- normalize media ordering by newest first

- improve links tab readability with short host/path preview
2026-03-08 11:10:25 +03:00
48f521e551 feat(web): upgrade settings UX to telegram-like structure
Some checks failed
CI / test (push) Failing after 18s
- redesign settings main/general/notifications/privacy screens

- add status subtitles and structured rows

- improve privacy and notifications sections
2026-03-08 11:09:36 +03:00
0e44988634 fix(web): notification media preview and theme switching
Some checks failed
CI / test (push) Failing after 19s
- show media labels instead of raw URLs in browser notifications

- support notification icon preview for image messages

- implement effective light/dark/system theme application

- apply appearance prefs on app startup
2026-03-08 11:07:30 +03:00
663df37d92 fix(web): media preview labels and burger menu interactions
Some checks failed
CI / test (push) Failing after 19s
- show emoji+media type in chat list preview

- prevent burger menu from closing immediately via event propagation
2026-03-08 11:03:16 +03:00
99e7c70901 feat: realtime sync, settings UX and chat list improvements
Some checks failed
CI / test (push) Failing after 21s
- add chat_updated realtime event and dynamic chat subscriptions

- auto-join invite links in web app

- implement Telegram-like settings panel (general/notifications/privacy)

- add browser notification preferences and keyboard send mode

- improve chat list with last message preview/time and online badge

- rework chat members UI with context actions and role crowns
2026-03-08 10:59:44 +03:00
a4fa72df30 fix(web): always show media actions in context menu for media messages
Some checks failed
CI / test (push) Failing after 20s
2026-03-08 10:40:57 +03:00
72c3b10ba5 feat(web): fullscreen media preview/viewer and fix media context menu
Some checks failed
CI / test (push) Failing after 26s
2026-03-08 10:38:46 +03:00
a77516cfea feat(web): sprint1 ui core with global toasts and improved chat layout
Some checks failed
CI / test (push) Failing after 19s
2026-03-08 10:35:21 +03:00
1119cc65b8 fix(web): chat sidebar layout, media context actions, and scrollable chat info
Some checks failed
CI / test (push) Failing after 21s
2026-03-08 10:30:38 +03:00
6a96a99775 feat(web): improve message UX, voice gestures, and attachments
Some checks failed
CI / test (push) Failing after 21s
2026-03-08 10:20:52 +03:00
52c41b6958 feat(web): send on Enter and newline on Shift+Enter
Some checks failed
CI / test (push) Failing after 25s
2026-03-08 09:59:29 +03:00
f01bbda14e feat(invites): add group/channel invite links and join by token 2026-03-08 09:58:55 +03:00
cc70394960 feat(web): add safe rich text formatting for message rendering 2026-03-08 09:56:37 +03:00
7c4a5f990d feat(messages): support forwarding to multiple chats 2026-03-08 09:55:39 +03:00
8cdcd9531d feat(chats): add per-user pinned chats and pinned sorting 2026-03-08 09:54:43 +03:00
fdf973eeab feat(chats): add per-user chat archive support 2026-03-08 09:53:28 +03:00
76f008d635 feat(reactions): add message reactions API and web quick reactions 2026-03-08 09:51:18 +03:00
bc483afd78 feat(search): add unified global search for users/chats/messages
Some checks failed
CI / test (push) Failing after 24s
2026-03-08 09:41:20 +03:00
76ab9c72f5 feat(privacy): add private-message permission toggle 2026-03-08 02:56:58 +03:00
f1b2e47df8 feat(notifications): add in-app notification center panel
- add notifications API client
- add notifications modal in chat page header
- show recent notification events with timestamps and count badge
2026-03-08 02:54:16 +03:00
d74e2c08c1 feat(drafts): persist chat drafts in localStorage
- load drafts from localStorage on startup
- write drafts to localStorage on update/clear
- keep per-chat draft restore across page reload
2026-03-08 02:53:32 +03:00
eef89983e0 feat(search): focus and highlight found message in chat
- store focused message id per chat
- scroll to target message and highlight it after search selection
- clear focus automatically after short timeout
2026-03-08 02:53:03 +03:00
874f9da12c fix(realtime): resync active chat messages on websocket reconnect
- on ws reconnect, reload chats and active chat history
- reduce status/history drift after transient disconnects
2026-03-08 02:52:26 +03:00
71d0472337 feat(web-chat): add message history pagination
- add loadMoreMessages with before_id cursor in chat store
- track hasMore/loading state per chat
- add 'Load older messages' control in message list
2026-03-08 02:52:01 +03:00
66158b9070 fix(web): handle blocked users fetch fallback in chat info
Some checks failed
CI / test (push) Failing after 24s
2026-03-08 02:35:08 +03:00
0b4bb19425 feat(chat): add random public_id and fix users blocked route
Some checks failed
CI / test (push) Failing after 20s
- add chats.public_id random identifier with migration 0011
- expose public_id in chat API payloads
- use chat public_id in message search UI label
- fix users router order so /users/blocked no longer conflicts with /users/{user_id}
2026-03-08 02:34:24 +03:00
34edf2bae5 feat(web-media): improve upload/send reliability
Some checks failed
CI / test (push) Failing after 17s
- add retry logic for presigned media upload
- add retry for text send with idempotent client message id
- avoid dropping already sent media message when attachment metadata call fails
2026-03-08 02:20:24 +03:00
159a8ba516 feat(privacy): user blocklist with private chat enforcement
Some checks failed
CI / test (push) Failing after 21s
- add blocked_users table and migration
- add users API: block, unblock, list blocked users
- prevent private chat creation and private messaging when block relation exists
- add block/unblock action in private chat info panel
2026-03-08 02:19:37 +03:00
ea8a50ee05 feat(notifications): per-chat mute settings
Some checks failed
CI / test (push) Failing after 18s
- add chat_notification_settings table and migration
- add chat notifications API (get/update muted)
- skip message notifications for muted recipients
- add mute/unmute control in chat info panel
2026-03-08 02:17:09 +03:00
eddd4bda0b feat(web): per-chat message drafts
Some checks failed
CI / test (push) Failing after 17s
- store unsent draft text per chat in zustand
- restore draft when switching chats
- clear draft after successful send
2026-03-08 02:15:13 +03:00
62390a1727 feat(web): add message search modal (chat/global)
Some checks failed
CI / test (push) Failing after 19s
- add Search action in chat header
- support search in active chat or globally when no chat selected
- show searchable message results and jump to target chat on click
2026-03-08 02:14:26 +03:00
a9e4222062 feat(realtime): add ping/pong heartbeat and watchdog reconnect
Some checks failed
CI / test (push) Failing after 20s
- support ping incoming event and pong outgoing response
- add web heartbeat interval to keep ws alive
- add stale-connection watchdog to force reconnect on missing pong
2026-03-08 02:13:34 +03:00
46dc601c84 feat(realtime): live online/offline events and unified search
Some checks failed
CI / test (push) Failing after 18s
- add websocket events user_online/user_offline
- broadcast presence changes on first connect and final disconnect only
- apply live presence updates in web chat store and realtime hook
- move public discover into unified left search (users + groups/channels)
- remove separate Discover Chats dialog/menu entry
2026-03-08 02:12:11 +03:00
afeb0acbe7 fix(channel): enforce read-only for members and polish chat info
Some checks failed
CI / test (push) Failing after 26s
- block send/forward in channels for member role on backend
- expose my_role in chat payload for client-side permissions
- hide message composer for channel members and show read-only notice
- hide members management sections for private/saved chats in info panel
- return enriched chat detail via serialize_chat_for_user
2026-03-08 02:07:37 +03:00