Commit Graph

38 Commits

Author SHA1 Message Date
5d69d53301 feat(threads): support nested replies in thread API and panel
All checks were successful
CI / test (push) Successful in 31s
2026-03-08 13:40:42 +03:00
c6e8b779b0 feat(threads): add basic message thread API and web thread panel
All checks were successful
CI / test (push) Successful in 21s
2026-03-08 13:37:53 +03:00
704781e359 feat(web): add message edit flow in context menu and composer
All checks were successful
CI / test (push) Successful in 24s
2026-03-08 13:22:57 +03:00
18596e6dab fix(web): enforce channel read-only and admin delete rules 2026-03-08 13:18:52 +03:00
eda84d4d82 feat(web): redesign full-screen media viewer UX
All checks were successful
CI / test (push) Successful in 27s
2026-03-08 13:14:18 +03:00
10d4e0386a fix(web): refresh attachments when message list updates
All checks were successful
CI / test (push) Successful in 20s
2026-03-08 13:11:11 +03:00
072677b9ad feat(web): improve album layout and captions for multi-attachments
All checks were successful
CI / test (push) Successful in 31s
2026-03-08 13:07:53 +03:00
d2dd9aa01b feat(chat): add in-message attachments gallery and multi-file send
All checks were successful
CI / test (push) Successful in 19s
2026-03-08 13:06:00 +03:00
58208787e7 feat(web): refresh audio card UI and enforce outside-click menu close
All checks were successful
CI / test (push) Successful in 24s
2026-03-08 12:55:55 +03:00
82322c4d42 fix(realtime,ui): sync message deletes and channel delete/leave behavior
All checks were successful
CI / test (push) Successful in 23s
2026-03-08 12:52:31 +03:00
d7160af908 ui: move audio volume control to top player bar
All checks were successful
CI / test (push) Successful in 29s
2026-03-08 12:42:07 +03:00
30169a3a27 feat: add waveform voice messages end-to-end
All checks were successful
CI / test (push) Successful in 23s
2026-03-08 12:40:49 +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
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
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
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
76f008d635 feat(reactions): add message reactions API and web quick reactions 2026-03-08 09:51:18 +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
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
7003c8e4c3 feat(web): add multi-select batch delete and undo flow
Some checks failed
CI / test (push) Failing after 18s
- add message selection mode from context menu

- support batch delete for me and conditional batch delete for everyone

- add undo snackbar for delete-for-me with delayed backend commit

- add restoreMessages helper in chat store for undo rollback
2026-03-08 01:50:34 +03:00
4ffbfc1e83 feat(web-core): implement unread counters and new-messages divider
Some checks failed
CI / test (push) Failing after 19s
backend:

- add unread_count to ChatRead serialization

- compute unread_count per chat using message_receipts and hidden messages

web:

- add unread badges in chat list

- track unread boundary per chat in store

- show 'New messages' divider in message list

- update realtime flow to increment/clear unread on incoming events
2026-03-08 01:43:27 +03:00
7f15edcb4e feat(core): clear saved chat and add message deletion scopes
Some checks failed
CI / test (push) Failing after 26s
backend:

- add message_hidden table for per-user message hiding

- support DELETE /messages/{id}?for_all=true|false

- implement delete-for-me vs delete-for-all logic by chat type/permissions

- add POST /chats/{chat_id}/clear and route saved chat deletion to clear

web:

- saved messages action changed from delete to clear

- message context menu now supports delete modal: for me / for everyone

- add local store helpers removeMessage/clearChatMessages

- include realtime stability improvements and app error boundary
2026-03-08 01:13:20 +03:00
a42f97962b fix(web): resolve React #310 hook order crash in MessageList
Some checks failed
CI / test (push) Failing after 22s
- move forwardTargets useMemo above conditional early return

- keep hooks call order stable after login/activeChat switch
2026-03-08 01:05:45 +03:00
997598188d fix(web): improve context menu positioning and forward UX
Some checks failed
CI / test (push) Failing after 18s
- render chat/message context menus via portal to document.body

- clamp menu coordinates to viewport while keeping near-cursor placement

- remove visible chat id fallbacks from chat/discover UI

- hide 'delete for everyone' checkbox for channels; show channel-specific hint

- replace forward-by-chat-id prompt with searchable chat picker modal
2026-03-08 01:03:04 +03:00
456595a576 feat: add user display profiles and fix web context menu UX
Some checks failed
CI / test (push) Failing after 17s
backend:

- add required user name and optional bio fields

- extend auth/register and user schemas/services with name/bio

- add alembic migration 0006 with safe backfill name=username

- compute per-user chat display_title for private chats

- keep Saved Messages delete-for-all protections

web:

- registration now includes name

- add profile edit modal (name/username/bio/avatar url)

- show private chat names via display_title

- fix context menus to open near cursor with viewport clamping

- stabilize +/close floating button to remove visual jump
2026-03-08 00:57:02 +03:00
b9f71b9528 feat: add saved messages, public chat discovery/join, and chat delete options
All checks were successful
CI / test (push) Successful in 19s
- add Saved Messages system chat with dedicated API

- add public group/channel metadata and discover/join endpoints

- add chat delete flow with for_all option and channel-wide delete

- switch message actions to context menu and improve reply/forward visuals

- improve microphone permission handling for voice recording
2026-03-08 00:41:35 +03:00
e1d0375392 feat: add reply/forward/pin message flow across backend and web
Some checks failed
CI / test (push) Failing after 24s
- add reply_to/forwarded_from message fields and chat pinned_message field

- add forward and pin APIs plus reply support in message create

- wire web actions: Reply, Fwd, Pin and reply composer state

- fix spam policy bug: allow repeated identical messages, keep rate limiting
2026-03-08 00:28:43 +03:00
0a602e4078 feat(web): redesign chat ui in telegram-like style
All checks were successful
CI / test (push) Successful in 21s
- update overall layout for desktop/mobile chat navigation

- restyle dialogs list, message bubbles and composer

- add atmospheric background and unified panel styling
2026-03-08 00:10:08 +03:00
16a584c6cb feat(web): add telegram-like message status indicators
All checks were successful
CI / test (push) Successful in 21s
- optimistic sending state with pending clock icon

- transition statuses sent -> delivered -> read via realtime events

- render checkmarks next to outgoing message timestamps
2026-03-08 00:01:22 +03:00
f95a0e9727 feat: improve chat realtime and media composer UX
All checks were successful
CI / test (push) Successful in 27s
- add media preview and upload confirmation for image/video

- add upload progress tracking for presigned uploads

- keep voice recording/upload flow with better UI states

- include related realtime/chat updates currently in working tree
2026-03-07 22:46:04 +03:00
2501466c7a Add web client and containerized deployment stack
All checks were successful
CI / test (push) Successful in 19s
Web client:

- Added React + TypeScript + Vite + Tailwind application in web/.

- Implemented auth, chat list, chat messages, typing indicators, file uploads, and voice recording/playback.

- Added typed API layer, Zustand stores, and realtime websocket hook integration.

Containerization:

- Added backend Dockerfile and project .dockerignore.

- Added web multi-stage Dockerfile with nginx static hosting and API/WS reverse proxy.

- Added full docker-compose stack with postgres, redis, minio, backend, worker, mailpit, and web.

- Added MinIO bucket bootstrap init job and updated README with Docker quick-start.
2026-03-07 21:55:50 +03:00