Commit Graph

23 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
f01bbda14e feat(invites): add group/channel invite links and join by token 2026-03-08 09:58:55 +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
76ab9c72f5 feat(privacy): add private-message permission toggle 2026-03-08 02:56:58 +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
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
e6a271f8be feat(chat): add presence metadata and improve web chat core
Some checks failed
CI / test (push) Failing after 22s
- add user last_seen_at with alembic migration and persist on realtime disconnect
- extend chat serialization with private online/last_seen, group members/online, channel subscribers
- add Redis batch presence lookup helper
- update web chat list/header to display status counters and last-seen labels
- improve delivery receipt handling using last_delivered/last_read boundaries
- include chat info panel and related API/type updates
2026-03-08 02:02:09 +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
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
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
9ef9366aca Add username search and improve chat creation UX
All checks were successful
CI / test (push) Successful in 23s
Backend user search:

- Added users search endpoint for @username lookup.

- Implemented repository/service/router support with bounded result limits.

Web chat creation:

- Added API client for /users/search.

- Added NewChatPanel for creating private chats via @username search.

- Added group/channel creation flow from sidebar.

UX refinement:

- Hide message composer when no chat is selected.

- Show explicit placeholder: 'Выберите чат, чтобы начать переписку'.

- Added tsbuildinfo ignore rule.
2026-03-07 22:34:53 +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