Commit Graph

24 Commits

Author SHA1 Message Date
Ruslan Bakiev
12af9979ab feat(crm): add deal create/update controls with status and payment 2026-02-27 09:44:15 +07:00
Ruslan Bakiev
aae2a03340 fix(contacts): keep unread inbound-only while refreshing outbound preview 2026-02-26 12:27:06 +07:00
Ruslan Bakiev
a0ff1d00f6 Hydrate Telegram avatars on demand in frontend API 2026-02-26 11:43:47 +07:00
Ruslan Bakiev
ba3e5f7cac Fix Telegram contact avatars in CRM list 2026-02-26 10:41:27 +07:00
Ruslan Bakiev
0f87586e81 fix: OUT messages no longer create unread status + handle Telegram read receipts
Only inbound (IN) messages determine hasUnread in getContacts(). Telegram
read_business_message events are now parsed and processed to auto-mark
contacts as read for the entire team.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 14:53:55 +07:00
Ruslan Bakiev
5c29cde13d refactor: remove manual upsertClientTimelineEntry from GraphQL resolvers
CalendarEvent and FeedCard timeline entries are now handled by Prisma
middleware automatically. Document timeline entry is inlined since
WorkspaceDocument stores contactId in scope field, not on the model.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 09:04:04 +07:00
Ruslan Bakiev
5492e0d05c feat: unread message tracking with blue dot indicator
Add ContactThreadRead model to track when users last viewed each contact thread.
Contacts with messages newer than the last read time show a blue dot in the sidebar.
Opening a thread automatically marks it as read via markThreadRead mutation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:25:32 +07:00
Ruslan Bakiev
601de37ab0 feat: add lastMessageText and lastMessageChannel to contacts query
Enriches the contacts resolver to include the last message preview
and channel, so the sidebar can show thread previews without loading
all communications. No frontend changes yet — fields returned but unused.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:02:02 +07:00
Ruslan Bakiev
227030b9ae feat(calendar): replace CSS-transform zoom with GSAP flying-rect animation and scope data to year
- Add CalendarDateRange input to GraphQL schema; server resolver now accepts from/to params
- Frontend query sends year-scoped date range variables reactively
- Rewrite zoom-in/zoom-out animations using GSAP flying-rect overlay (650ms vs 2400ms)
- Add flying-rect element to CrmCalendarPanel with proper CSS
- Remove old calendarSceneTransformStyle CSS-transition approach
- Add calendarKillTweens cleanup in onBeforeUnmount

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 11:41:35 +07:00
Ruslan Bakiev
94c01516ba precompute call waveforms and stop list-time audio loading 2026-02-23 16:02:57 +07:00
Ruslan Bakiev
60b9bb9fd1 remove contact company/country/location across db and ui 2026-02-23 14:52:26 +07:00
Ruslan Bakiev
6ad53e64c5 feat(documents): delete document from context menu 2026-02-23 14:27:00 +07:00
Ruslan Bakiev
d3b751db65 refactor(graphql): replace dashboard query with resource queries 2026-02-23 12:46:29 +07:00
Ruslan Bakiev
acd974766a feat(telegram): ingest and render inbound voice messages 2026-02-23 12:21:53 +07:00
Ruslan Bakiev
4b9682e447 feat: add unified client timeline query 2026-02-23 10:48:21 +07:00
Ruslan Bakiev
95fd9a64ce feat(chat): add contact inbox sources with per-user hide filters 2026-02-23 10:41:02 +07:00
Ruslan Bakiev
43b487ccec refactor ai naming and make omni raw-json first 2026-02-23 09:32:59 +07:00
Ruslan Bakiev
f1fb2fbfa6 feat(chat): add outbound delivery statuses to omnichat thread UI 2026-02-23 09:04:49 +07:00
Ruslan Bakiev
2f719219c4 Queue Telegram outbound on createCommunication 2026-02-23 08:45:23 +07:00
Ruslan Bakiev
cd2267e9d3 Remove Telegram API avatar logic from frontend service 2026-02-23 08:24:04 +07:00
Ruslan Bakiev
cbc2a3b31b Fallback Telegram avatars from identities in dashboard 2026-02-23 08:10:59 +07:00
Ruslan Bakiev
f81a0fde55 Refine documents UX and extract document scope helpers 2026-02-23 08:04:58 +07:00
Ruslan Bakiev
129daa31d7 Add URL-based change review and selective change-set rollback 2026-02-20 19:04:49 +07:00
Ruslan Bakiev
46cca064df chore: rename service folders to lowercase 2026-02-20 12:10:25 +07:00