Add SmsChatTab with search, emoji, attach, timestamps, quick replies
Remove Client ID and Secret fields from RingCentral UI
These are platform-level credentials set once in the K8s secret. Customers only need to provide their JWT Key and main phone number.
Read RingCentral client-id/secret from platform config, not per-org DB
Client ID and Secret identify the Kamo app on RingCentral's platform — they are shared across all orgs. Inject them from Spring Boot properties (backed by the K...
从 VoipProviderConfig 中删除客户端ID/客户端加密
这些是平台层面的证书,由所有鸟类共享。 只有 jwtKey 和 主Phone Number 是人均 org.
Use correct session key casing for orgID and memberID
KSessionService stores keys as orgID and memberID (capital D). Both controllers were calling .get("orgId") and .get("memberId") which always returns null, causi...
Always show softphone and SMS buttons in NavTop
Removed isVoip gate so the buttons are always visible regardless of feature flag state.
Add Dockerfile for VOIPService
Matches the shared-library + service two-stage build pattern used by EmailService and other Java services.
Use feature type name as key before numeric id in org feature preprocessing
Java returns features with `type: "VOIP"` and a numeric `id`. The preprocessing chain had `obj.id` before `obj.type`, causing all features to get numeric string...
Add SMS tool button to NavTop, gate softphone + SMS on organization.isVoip
将voip. > 添加到 NATS 流主题中, 并在 VoipStompRelay 控制器中处理非法状态例外
NATS 流只覆盖了聊天. > 因此订阅了voip. " 丢弃 非法状态例外([SUB-90007]) 没有匹配的流). 已添加发音。 " 将两个学科都包括在内,并扩大 抓取块以包含非法状态排除,防止启动失败 如果该流没有可用.
Add security-service.*** to K8s ConfigMap
KamoJwtService requires this property for Bearer token validation in DavAuthFilter, but the K8s ConfigMap overrides application.yml and was missing it — causing...
Redesign phone provider setup to match email provider format with logos, help tips, and correct nav tabs
- Rewrite PhoneProviderSetup to match EmailProviderSetup pattern: list/config view split, AnimatePresence transitions, back button with provider name in header,...
Show Phone System(s) settings unconditionally so orgs can configure VOIP before enabling it
- Remove isVoip gate from phone section on /settings page — Provider Setup card has no condition so it always appears; Agents and Dial Plans still gated by isVo...
Guard against non-array API responses in useContacts hook
setBooks, fetchContacts, and searchContacts now safely handle error objects and Spring paginated wrappers instead of crashing with 'e.map is not a function'.
Add Personal Calendars & Contacts section to member membership-permissions tab
Add PersonalProviderSection component for member CalDav/CardDav integrations
Initial DaemonService project — Quartz jobs, NATS publishers, K8s, CI/CD
Write ContactSyncLog on calendar/contact mutations for bidirectional sync
Add Google, Microsoft, and GenericDav provider stubs with token refreshers
Add IntegrationSettingsController, IntegrationSettingsService, SyncTriggerPublisher stub
Extract resolveUserId helper, add ETag comment in KamoGroupwareProvider
Add GroupwareProvider interface, ProviderContext, and model classes
- GroupwareProvider interface defines calendar and contact book operations - ProviderContext carries runtime context for provider invocations - Model classes: P...
CalDav/CardDav Part 4 — schema indexes and email repo scan
- Add supplemental indexes on **************** and **************** via SchemaCleanupRunner (Hibernate ddl-auto:update adds the FK columns; indexes are extr...
CalDav/CardDav 第4部分——共享库库和实体添加
- 添加联系人整合 FK 到联系人Book 实体 - 添加查找ByContact集成Id到用户算法仓库 - 添加查找ByContact集成Id到联系文件库 - 添加 findByStatusIsNull 到联系人同步日志存储库 - 以 QQ 创建日历晚报存储器
Add proxyDav route, fix forward() body guard for DAV methods, add email service URL
Add CardDavController and ContactService DAV methods for CardDAV support
添加查找ByUid和ContactBookId,查找已更改 自此, 查找已删除的连接仓库; 将查找 ByOwnerId 添加到连接库
Add CalDavController and CalendarService DAV methods
Adds findEventByUid, getChangedEventsSince, getDeletedEventsSince to CalendarService. Adds CalDavController handling PROPFIND, REPORT, MKCALENDAR, PROPPATCH, GE...