6.7 KiB
6.7 KiB
Core Checklist Status (Web + API)
Legend:
DONE- implemented and works in current web flow.PARTIAL- implemented partly, limited UX/coverage, or needs hardening.TODO- not implemented yet.
Modules
- Account -
DONE(email auth, JWT, refresh, logout, reset, sessions; web handles/verify-email?token=...links with auth-page feedback; integration tests cover resend-verification replacement, password-reset login flow, andcheck-emailstatus transitions) - User Profile -
DONE(username, name, avatar, bio, update) - User Status -
PARTIAL(online/last seen/offline; web now formatsjust now/today/yesterday/recently, backend-side presence heuristics still limited) - Contacts -
PARTIAL(list/search/add/remove/block/unblock;add by emailflow covered by integration tests includingsuccess/not found/blocked conflict; web now surfaces specific add-by-email errors (not foundvsblocked); UX moved to menu) - Chat List -
DONE(all/pinned/archive/sort/unread; saved-messages delete behavior covered: clear history without deleting chat) - Chat Types -
DONE(private/group/channel) - Chat Creation -
DONE(private/group/channel) - Messages (base) -
DONE(send/read/edit/delete/delete for all; 7-day edit window enforced and covered by integration tests; group UI shows sender names over bubbles + sender avatars on incoming message clusters) - Message Types -
PARTIAL(text/photo/video/docs/audio/voice/circle; GIF/stickers via dedicated system missing) - Reply/Quote/Threads -
PARTIAL(reply + quote-like UI + thread panel with nested replies, no dedicated full thread navigation yet) - Forwarding -
DONE(single + bulk + without author) - Pinning -
DONE(message/chat pin-unpin) - Reactions -
DONE - Delivery Status -
DONE(sent/delivered/read + reconnect reconciliation after backend restarts) - Typing Realtime -
DONE(web: typing start/stop + recording voice start/stop;recording_video_*remains for mobile circle-video clients) - Media & Attachments -
DONE(upload/preview/download/gallery; sticker/GIF inline media no longer opens photo viewer on click; Chat Info and message context menus now have consistentOpen/Download/Copybehavior with menu auto-close and download toasts) - Voice Messages -
PARTIAL(record/send/play/seek + global speed 1x/1.5x/2x; recorder uses improved mime priority for better duration metadata; backend media allowlist includesaudio/mp4/audio/x-m4a; audio store tracks duration viadurationchange/seekablefallback; websocket send/recorder stop race on fast chat switch is guarded; UX still being polished) - Circle Video Messages -
PARTIAL(mobile-priority only: backend type/realtime supported; web composer intentionally does not send circles) - Stickers -
PARTIAL(web sticker picker with preset pack + favorites) - GIF -
PARTIAL(web GIF picker with Tenor search + preset fallback + favorites) - Message History/Search -
DONE(history/pagination/chat+global search) - Text Formatting -
PARTIAL(bold/italic/underline/spoiler/mono/links + strikethrough + quote/code block; toolbar still evolving) - Groups -
PARTIAL(create/add/remove/invite link; join-by-invite and invite permissions covered by integration tests; members API now returns profile fields (username/name/avatar_url) and web Chat Info consumes them to avoid extra per-member profile requests; add-member search also shows avatars; advanced moderation still partial) - Roles -
DONE(owner/admin/member) - Admin Rights -
PARTIAL(delete/pin/edit info + explicit ban APIs for groups/channels including ban list endpoint; web Chat Info now shows searchableBanned userswith both inline and right-clickUnbanactions for owner/admin, member search, avatars in moderation lists, invite-link copy/regenerate actions, ban metadata (who banned/when), explicit member action button for touch/trackpad UX,@username-friendly moderation filters, and resilient profile hydration (allSettled) for partially missing users; integration tests cover channel member read-only, channel admin full-delete, channel message delete-for-all permissions, group profile edit permissions, owner-only role management rules, and admin-visible/member-forbidden ban-list access; remaining UX moderation tools limited) - Channels -
PARTIAL(create/post/edit/delete/subscribe/unsubscribe; integration tests now also cover invite-link permissions (member forbidden, admin allowed); web Chat Info differentiates channel actions by role:Delete channel for allfor owner/admin andLeave channelfor member; remaining UX edge-cases still polishing) - Channel Types -
DONE(public/private) - Notifications -
PARTIAL(browser notifications + mute/settings; chat mute is propagated in chat list payload, honored by web realtime notifications with mention override, and mute toggle now syncs instantly in chat store; backend now emitschat_updatedafter notification mute/unmute for cross-tab consistency; no mobile push infra) - Archive -
DONE - Blacklist -
DONE - Privacy -
DONE(avatar/last-seen/group-invites + PM policyeveryone|contacts|nobody; API + web settings support all matrix values; integration tests cover PM policy matrix, group-invite policy matrix, private chat counterpart visibilitynobody/contacts/everyone, and avatar visibility in searcheveryone/contacts/nobody) - Security -
DONE(sessions + revoke + 2FA + access-session visibility; integration tests cover single-session revoke, revoke-all invalidation/force-disconnect, 2FA setup guard, recovery-code normalization/lifecycle, and disable-2FA cleanup; web auth supports recovery-code login; settings provides recovery-code warning/copy/download) - Realtime Events -
DONE(connect/disconnect/send/receive/typing/read/delivered/online/offline + chat/message updates + chat_deleted) - Sync -
DONE(cross-device via backend state + realtime; reconciliation for loaded chats/messages;chat_updatedcovers profile/membership/delete-for-self/archive/unarchive/pin/unpin/mute/clear and create-chat fanout to members; full-chat delete emitschat_deleted; web Chat Info also has 15s polling fallback to self-heal missed realtime updates; integration tests cover user-scoped archive/pin, member-side visibility after create, and user-scoped clear behavior; chat list and migration0026_deduplicate_saved_chatshandle historical duplicate Saved Messages) - Additional -
PARTIAL(drafts/link preview partial/autoload media basic)
Current Focus beyond P1
- Finalize media messaging UX parity (voice/circle controls, unified attachment behaviors).
- Expand message types ecosystem (GIF/stickers/thread UX + formatting polish).
- Continue raising test coverage for realtime/media edge cases.
- Close remaining PARTIAL items to reach stable 80%+ coverage.