Subdomain-tenant org 버킷을 자신의 MinIO 폴더로 해결
getThemePath()는 그들 모두를 위해 apex+tld에 hostname을 감소시켰습니다 주인과 물통 폴더, 그래서 subdomain tenants 같이 gnosia.demo.kamocrm.com 대신 부모 apex의 브랜딩을로드 그들의 자신의. 이제 가장 깊은 별칭 (login...
/me/language를 통해 NavTop 픽업
일반 회원 PUT라고 불리는 Picker, SystemUserGuard 403s 시스템 사용자는 하위 파일로 서명했습니다. 잡음은 조용히, 그래서 kamo-locale 쿠키가 설정되지 않았고 UI는 결코 전환되지 않았습니다. ****************로 전환 (SecuritySer...
SystemUserGuard를 우회하는 /me/language endpoint 추가
NavTop 언어 선택기는 System User에 서명하지 않았습니다. 하위 파일: PUT **************** systemUserGuard를 먼저 실행합니다. 어느 403s 모든 시스템 사용자 TeamMember mutation (모든에서 제공) SystemUserBackfi...
Subdomain-tenant org 버킷을 자신의 MinIO 폴더로 해결
getThemePath()는 apex+tld(mainDomain.tld)에 호스트명을 감소했습니다. 그들 둘 다 주인과 물통 폴더. subdomain tenants에 대해 gnosia.demo.kamocrm.com 부모의 apex를 공유, 이 그들을 접 부모의 물통으로 (kamocrm-...
ModernColorGroup에서 어두운 색 입력을 클립을 중지
컬러 피커 행은 1fr 1fr 그리드 안쪽에 hardcoded 280px 래퍼를 가지고 overflow:숨겨진, 그래서 입력은 좁은 란에 잘랐습니다. 코드 사용: 1 + minWidth:0 그래서 피커는 란을 채우고 그로 수축합니다.
버려진 구독 stub 으로 no-subscription, 오류 없음
그만큼 legacy getCurrentSubscription stub throws 로 디자인 그래서 callers 가을 ungated 경로로 돌아가기. StatsManager는 던지고있다 " 구독 데이터를로드하지 마십시오." 데이터로 가는 길:현재 "Activescription" 인포메...
GetCurrentUsage에서 null 대신 빈 미터를 반환
StatsManager 렌더링 <UsageMeters usage={null}> 때 레거시 stub null로 해결, use.meters에 충돌. 반환 { 미터: [] } 그래서 구성 요소는 기존의 빈 상태 지점을 취합니다.
CONFIGURE SYSTEM의 내 계정 슬라이드 아웃 섹션
CONFIGURE SYSTEM이 부족한 멤버들의 "내 계정" 메뉴를 숨기십시오. 그들은 링크를 볼 수 없습니다 (Stats & Costs, Apps & Features, Branch Types, Automation Streams)는 클릭을 /settings로 돌려줍니다. 더 보기 홈 페...
Auto-route 어린이 소유자는 허용 된 org에
/settings/account가 CONFIGURE SYSTEM이 부족한 사용자를 위해 로드할 때 현재 org, 이전 행동은 /settings에 침묵하는 리디렉션이었다 — a 관리자 권한이 다른 사람에 살고있는 어린이 소유자를위한 죽음 한국어 고전적인 경우 : Daniel은 GNosia...
전체 FQDN, eTLD+1, 도메인에 의해 org를 fetching 할 때
registrableDomainFromAlias는 어떤 다 상표 subdomain (e.g.를 벗깁니다. "gnosia.demo.kamocrm.com") 그 eTLD+1 ("kamocrm.com"). 그것은 API베이스 / 로그인 호스트 / OAuth credential lookup -...
Subdomains를 위한 가득 차있는 FQDN는 2개의 상표 보다는 더 깊습니다
configure by root()는 첫 번째 라벨과 마지막 두 가지만 추출했습니다. 각 Traefik-l 로그 호스트 이름의 라벨. 일반적인 2단계 경우 (login.b11capital.com -> 루트 b11capital.com, 하위 로그인) 이 왕복 견적 요청 그러나 더 깊은 호...
TXT 소유권에 Kamo-owned subdomains를 문지르십시오
카모 웹 별칭 (예 : gnosia.demo.kamocrm.com) "TXT 레코드 발견되었지만 검증 코드는 일치하지 않습니다" DNS 설정 UI에서. 뿌리 원인 : org domain 행은 stale을 가지고 valid token 및 소유권 verified=false, 그래서 확인Dn...
클라이언트를 위한 세계적인 선적 overlay를 보여주지 마십시오
NavigationInterceptor의 제출 청취자는 어떤 양식을 처리했습니다. form.action은 진실과 method=get을 네비게이션으로, 호출 글로벌 LoadContext에 setLoading(true). 명시하지 않고 action 속성, 브라우저는 form.action을 ...
Grant top-level org 소유자 cross-org 삭제/업데이트 액세스
deleteDomain 및 updateDomain 이전 거부 플랫폼 관리자 isUserOwnerOfOrg를 확인했기 때문에 어린이 도메인에서 작동 대상 org에 직접, 최고 수준의 org에 대 한 우회 소유자 - 읽기 흐름과 달리 (getAllDomains, getDomainById)....
Per-org *.kamocrm.com 하위 도메인 삭제 허용
EndWith(".kamocrm.com")는 모든 데모 org를 보호합니다. 플랫폼 하위 도메인 (예 : gmosia.demo.kamocrm.com)을 교환 사용자 정의 도메인. 플랫폼 루트 kamocrm.com은 저장되지 않습니다 org domain 행, 그래서 감시는 실제 대상이 없...
외부 매체를 위한 새로운 공중 IP 47.181.8.83 광고
JVB-k1m1는 75.83.113.11를 광고하고 coturn는 광고되었습니다 status.hostIP를 통해 노드의 LAN IP - 이제 외부 WebRTC 미디어를 파기 WAN은 47.181.8.83이다.
Guard admin-essential 권리 + 템플릿 편집에 대한 재생 역할
높은: *********** 지금 거부 ADMINISTRATOR에 NUKE 또는 FORCE NUKE 설정 템플릿의 admin-essential 권리 (CONFIGURE SYSTEM, MANAGE MEMBER SECURITY, MANAGE MEMBERS, EDIT MEMBER ACCESS...
Propagate Child-org-creator 관리자 상태 부모의 회원
사용자가 아이 org를 만들 때 그들은 소유자 + 관리자 (via *************** 그들의 PARENT-org 회원, 그러나, 전에 있었던 것은 무엇입니까 — 일반적으로 등록 시간 팀 멤버 역할 없이 관리자 역할 — 그리고 그 방법을 유지 후 아이 org가 생성됩니다. 그것은...
Wrap toolbar 및 축소 검색/날짜 그래서 새로운 이벤트는 페이지에 머물
Toolbar는 너무 많은 고정 폭 콘텐츠를 단일 비 휘핑으로 포장했습니다. 플렉스 행; 겹침에 놓인 부모 주요 지역으로: 숨겨지은, 권리 섹션 (새로운 이벤트 + 설정) ~1366-1440px 뷰 포트에 클립되었습니다. flexWrap를 사용해서 검색 필드(300->220)과 날짜 라...
읽기 *** 세션 후 마스터에서 재생 복제 지연 방지
이전 수정에는 /api/user-info 호출 /api/security/session/refresh가 있었습니다. 읽기 전에 Redis, 하지만 읽기를 통해 갔다 readKsemJsonFromRedisWithRetry getRedisReadClient() - read replica를 사...
이름 별 탭 + 사용자 정보 읽기 전에 세션을 새로 고침
두 가지 관련 내비게이션 버그는 다음과 같습니다. "잘못된 탭이 열립니다.": 1. SettingsView는 *index*에 의해 활성화된 탭을 추적했습니다. childrenArray는 할 수 있습니다 상태 탭 (DocsTab, EmailMailboxTab, PhoneSettingsT...
그룹화 된 에코를 가진 heredoc를 대체하십시오 그래서 YAML 리터 블록 파스
/etc/odbc.ini heredoc body sat 에 열 1, 에 dedented 아웃 의 주변 스타트.sh: | 리터블록 사기꾼과 broke `kubectl apply` ConfigMap의. 입력된 블록 내부의 `echo`s를 그룹화 YAML 범위 안에 각 선 체재. 배포 서비스...
HostToContainer 마운트 propagation을 통해 rclone remount를 따르십시오
노예 propagation 없이 pod는 FUSE 묶음 산을 한 번에 붙듭니다 콘테이너 시작; rclone 산 경우에. 호스트에 재시작, pod 지금 환불 FUSE 연결과 모든 쓰기에서 지적 유지 /mnt/shared-files는 ENOTCONN (Transport 엔드포인트는 아닙니다...
VIEW DOCUMENTS / MANAGE DOCS SETTINGS의 게이트 문서 탭
이메일 + 전화 탭 게이트 미러. VIEW DOCUMENTS 없이 회원 MANAGE DOCS SETTINGS (admin)없이 사용자 수준의 액세스) 및 더 이상 참조 Docs 탭에서 자신의 계정 페이지.
문 이메일 + 권리, 문 VOIP 설정 편집, 정기 세션 새로 고침
ACCESS MAIL / ACCESS VOIP없이 기본 회원을 누락 더 이상 자신의 전자 메일 및 메일 박스 또는 전화 설정 탭을 볼 수 없습니다 계정 페이지. 이미 제대로 omits 회원의 권리 member rights applied / ***; UI는 단순히 탭을 렌더링 자주 묻는 ...
Align Type/Name/TTL 필드는 TTL 힌트를 툴팁으로 이동
TTL 필드는 레지스트라가 보여지면 '사용 1 시간 dropdown' hint as the 단락 아래의 입력. 그 란 끝 유형과 이름 보다는 더 높은 쪽으로, 그래서 alignItems로 조차: 센터 입력 행은 수평 정렬을 능가합니다. 이제 힌트 표면은 작은 도구 끝에? 다음 아이콘 ...
SSL 카드 중지 청구 기록은 그들이 있기 전에 확인
SSL 카드는 두 주가 있었다 (설치 / 완료) 그래서 "설치" 복사 ("모든 필요한 기록은 확인, 우리는 인증서를 지금 설치하십시오")는 CNAMEs가 된 동안 표시됩니다. 여전히 pending - 사용자가이 읽기 전에보고 기록이 확인되었습니다. 세 번째 정직한 "와이팅"상태를 추가...
헤더 간격 제거, subdomains, 드롭 레지스트라 피커
- DnsProvisioning 이동 DnsSetupStudio 내부 패널 그래서 빈 px:4 pt:3 래퍼 주위에 (whitespace의 밴드를 창조하는) 패널이 null을 반환했을 때 영웅의 위. - 페이지가 레이아웃의 콘텐츠 영역의 전체 폭을 가지고; 몸에 반응한 수평한 패딩, 최...
Org 생성 후 부모의 /setup/dns에 착륙
Wizard는 이전에 제작자를 *************** POST /api/security/org가 반환된 후 오른쪽. 새로운 org의 도메인 아직 DNS가 없습니다. 따라서 접근 가능한 호스트에 대한 리디렉션이 해결되었습니다. (e.g. https://internal.sign.pin...
EmbAddress.country의 Drop CountryTypeConverter
변환기는 문자열로 enum name (e.g. "UNITED STATES")를 작성합니다. 그러나 모든 테이블 embedding EmbAddress (orgs, 사용자, 회원, user addresses, account addresses, member team member lic loc...
만 표시 계정 복구 씨앗 구걸 단계에 대한 아래-13
왜: 13+ 사용자는 이미 이메일, 전화 및 보안 질문을 제공합니다 복구 방법으로, 씨앗 구문 단계는 그들을 위해 중복. 13 계정은 이메일 / 전화 / 보안 질문이 없습니다. 그래서 씨앗 구문은 자신의 유일한 회복 경로를 유지.
Sync + runtime 트래픽을 흡수하는 2개의 복제물에 가늠자
단일 복제는 사전 동기화 워크플로우의 병목입니다. 각 gunicorn 노동자는 1개의 요구 그 후에 자동 나머지를 취급합니다 (~5-10s 연결 주입의 창), 그리고 2-CPU 한계 모자 inference 관련 제품 런타임 콜러와 12k-string sync 타격 모두 같은 인스턴스, ...
Bump LibreTranslate per-call timeout 에 90s; 단일 번역 backward-compat 유지
Retry/failedKeys 변화에 2개의 후속: 1. 퍼 콜 요청 타임 아웃은 30 년대이었다. 생산 런타임 콜러 (chat, 알림 등) 같은 번역 서비스를 타격 CI sync 호출 — LibreTranslate 노동자가 중거리인 경우 또는 큐는 비 면제, 우리의 요청은 30-60...
탄력 있는 과실 및 표면은 열쇠를 실패했습니다 ( 가짜 passthrough 아닙니다)
두 실패 모드는 응답에서 indistinguishable, 그래서 스크립트 그대를 알 수 없으며 "번역"을 영어에 동일한 키로 유지 모든 동기화 실행에, 임의 서브셋이 성공으로 인해 정확한 LibreTranslate 요청은 노동자 재시작시 착륙했습니다. 1. 공급자 오류 (timeou...
별명으로 zh -> zh-Hans 그래서 en->zh 실제로 번역
LibreTranslate의 /languages endpoint는 중국을 광고합니다. 지역 별 코드 "zh-Hans"및 "zh-Hant"(이하 "zh"), 심지어 POST /translate는 베어 코드를 받아들입니다. 별명 없이, *************** 반환된 false, Pro...
첨부 파일 다운로드에 원본 파일명 및 내용 유형 보존
*********** endpoints (개인의 것 and shared-mailbox controllers)는 Content-Disposition를 방출하고 있었습니다: 부착 filename 매개 변수와 Content-Type: application/octet-stream, 브라우저가 ...
Broken 인라인 이미지, 첨부 파일 다운로드 및 뷰-pane flicker
- Strip <img> with cid: src in the email sanitizer so Embedded image don't 깨진 이미지 아이콘으로 렌더링하고, 실패한 이미지를 숨깁니다. SanitizedEmailRenderer의 onerror 핸들러를 통해 실행 시간. - T...
/languages의 지원 대상을 구동, stale 목록
Hardcoded SUPPORTED TARGETS는 sw/ta/etc를 주장했습니다. 지원되었지만, 공공 argos 패키지는 그 존재, 그래서 모든 en->sw / en->ta 번역 요청은 libretranslate pod에 충돌, 400 실패, 과 라우터 리트리 쌍을 트리거. k1m1...
인식되지 않는 드롭 --workers는 충돌을 유발
Libretranslate CLI는 받아지지 않습니다 --workers, gunicorn 내부 프로세스. 파드가 실패한 것을 막기 위해 부팅 및 CrashLoopBackOff (1384 k1m1)에 5d에서 다시 시작합니다. 본문 바로가기 이미 4개의 sync 노동자에 기본적으로, re...
트랜잭션 후 NATS CREATE 이벤트를 게시하여 이미지 첨부 레이스를 수정
NATS 메시지는 @Transactional body 내부에 게재되었습니다. 수신자는 CREATE 이벤트를 받고 이미지를 요청할 수 있습니다. /imaging/proxy/{objImgId} 전에 MediaObjImg 행이 DB에 표시됩니다. 결과 404 및 채팅이 다시 열릴 때까지 이미...
Serialize attachments in WS relay and message history; allow attachment-only sends
Three bugs fixed: 1. ChatSessionSubscriptionManager was building the STOMP messageMap manually and omitting attachments, sourceLanguageId, readMemberId, msg...
Add attachments and event fields to ChatMessageDto; ignore unknown fields
ChatMessageDto was missing `attachments`, `readMemberId`, `msgIdLastViewed`, `dateLastViewed`, `addedMemberId`, `objImgId`, `transitMemberId`, and `isJoin` fiel...
Fix NPE in getChatSessions from Map.of() rejecting null nextcoder
java.util.Map.of() throws NullPointerException when nextcoder is null (no more pages). Replace with HashMap that accepts null values. Also wrap entire handler i...
Defects C/D/E — title display name, toolbar layout, header lift
Defect C: Add GET proxy for /sessions/{guid}/members so ChatBox.loadMembers() can populate the SessionMember.name field. ChatTool already uses members[0].name f...
Fix upload 500 (missing EmbRecordState) and empty chats tab (Timestamp cast)
Defect A: ChatAttachmentService.upload omitted **************** causing a NOT NULL violation on imgs.is_active. Added the default recordState. Also hardened Cha...
Prefer usernameAlias over User.name in memberDisplayName
Switches display name priority to: Member.usernameAlias → User.name → User.alias → User.username. Also includes the paged query dispatch fix from the previous c...
Show upload error toast in Composer when attachments fail
Catches errors thrown by uploadAll() and renders an MUI Alert above the input row. Root cause of Defect 4 was the missing MinIO bucket (imaging-chat-attachments...
Empty Chats tab — frontend already expects {rows} paged shape (no change needed)
The ChatsList component already reads data.rows. Backend fix (shared-lib + MediaService) is the root cause: HAVING CAST(null AS TIMESTAMP) IS NULL did not work ...
Use split First/After queries for chat sessions paged endpoint
Addresses empty Chats tab by dispatching to ****************