변경 로그
무슨 일이야?
플랫폼에 대한 모든 개선 사항, 그것이 선적.
· kamo-shared-library
Alias-uniqueness 체크 추가
*********** 공급자의 범위, 그리고 그 alias가 이제까지 해결되었는지 (security provider id, alias) - <alias> 뒤에 쌍.<parentdomain> 이름 * 다른 공급자의 밑에 2개의 orgs는 주위 없이 1 공유할 수 있었습니다. 조직은 현재 ?org=와 더불어 별명으로 직접 이름을 지정할 수 있으며, 그 조회는 범위에 공급자가 없습니다. 반복된 별명은 참조 주변 플랫폼 전체, 그래서 OrgResolutionService 그것을 거부 오히려 하나 선택보다 — 이는 BOTH 조직에 의해 제한되지 않는 한국어 부동산은 이미 반복을 포함합니다 (4 orgs 공유 "acme-corp", 2 공유 "kia-kaha"), 왜 해결자가 거부하는 이유입니다; 이 더 많은 것을 생성하는 것은 무엇입니까? excludeId는 다른 분야가 있는 동안 조직이 자신의 별명을 유지하도록 합니다. 저장; 생성할 때 null을 통과하십시오. 1597 테스트 패스.
· KlusterServices
Sage의 오픈 VS Code로 버그 보고서를 해제
URI 핸들러는 RUNNING 창과 사전 충전에서 대화를 만듭니다. sage에 도달 할 수있는 유일한 방법은 이미 열려 대신 두 번째를 시작한다. URI는 프롬프트와 아무것도 다른, 그래서 모델과 노력을 통해 이동 coderProcessWrapper - 고정 플래그에 검증된 enum을 지도하는 래퍼 그리고 결코 파일에서 argv를 가지고, 그래서 위조된 파일은 다른 것을 선택할 수 있습니다 모델과 더 이상 아무것도. URI pre-fills 하지만 제출 하지 않습니다, 그래서 제출은 합성 반환 그리고 그 대리인은 성공보고하기 전에 성적표를 기다립니다. 더 보기 JSON-escaped는 다음과 같습니다. 성적표는 JSONL이며 검색 raw newlines는 실패한 대로 각 배달한 메시지를 표시할 것입니다.
· InitializerService
시스템 버그 테이블 만들기
Ordinal 열에 CHECK constraint 없음: support ticket status check는 Hibernate가 enum의 크기와 enum에 하나 동결될 때 무슨 일이 일어납니다 성장, SystemBugStatusType은 성장할 것으로 예상됩니다. yb-tserver:5433에 적용하여, 이 서비스에는 CI가 없습니다.
· kamo-internal
회사 설정에서 사용자 정의 도메인 관리
조직에 doorway가되기 위해 사용되는 도메인: DNS가 있어야 누구나 로그인 할 수 있기 전에 구성, 왜 /setup/dns가 org-creation 마법사에서 도달하고 "needs setup" 배너에서 오히려 설정에서. 그것은 지금 선택, 그래서 그것은 나머지와 속합니다 흰색 라벨링. Settings → Essential → Behavior & Labeling에 Custom Domain 섹션을 추가합니다. 회사 정보와 브랜딩 사이. org의 현재 도메인 또는 평범하지 않은 것을 말한다, 그리고 /setup/dns를 열고 변경 그것은. 버튼은 "설정 도메인" 또는 "관리 도메인"에 따라 그대는 복사는 이미 kamocrm.com에 도달 할 수있는 작업 공간으로 리드, 그래서 자신의 주소를 원하지 않는 소유자는이 뭔가를 알고 무시할 수 있습니다. orgIdStr 를 사용한다. truncates int64 org ids 과거 MAX SAFE INTEGER, 이는 DNS를 열 것이다 다른 조직의 페이지. 버튼이 비활성화 될 때까지 잘못된 id로 navigating 보다는 오히려 해결합니다. 카모 번역 사전에 착륙 복사 (98ee7cb6) - CI는 그것을 복제 image-build time에서 unpinned, 그래서 app-first는 빨간색 빌드입니다. 2921 테스트 및 모든 8 가드 패스, i18n 포함.
· SecurityService
App-catalog endpoint에 나무를 전송하십시오
Branch Types → 허용된 Apps는 /features/app-catalog에서 편집기를 구축합니다. 열렬한 기능 목록에서 아닙니다, 그래서 할 수 있던 1개의 표면이었습니다 어떤 앱이 아이들의 것을 볼 수 없습니다. 부모는 어떤 것을 결정한다. 아이들은 제안될 수 있습니다, 그래서 편집기는 동일한 모양을 필요로 합니다. 947 시험 녹색.
· kamo-internal
앱 트리를 렌더링하고 부모의 전환을 확인
아이들은 이제 앱 & 기능 목록에서 부모를 앉습니다. 그것의 자신의 스위치. Nesting은 ORDER와 indent에 의해 표현됩니다. 배열된 콘테이너, 그래서 기존하는 카드, 동의 및 빛나는 부호는 입니다 untouched - 그리고 부모가 현재 탭에서 필터링되는 아이 여전히 밴싱보다 최고 수준의 렌더링. 두 가지 행동이 필요한 폭포 : Toggling은 이제 플립핑 대신 서버 전체 기능 목록을 적용합니다. 클릭된 행. 자녀가 부모를 켜고 혐의 부모는 모든 아이를 떨어져 전환합니다, 그래서 현지 단 하나 줄 갱신은 떠납니다 UI는 다른 모든 것에 대해 서버와 동의 제품정보 두 개의 엔드 포인트는 이미 전체 목록을 반환; 새로운 것은 필요한 서버 측. 오래된 단일 경로는 가을에 머물 보안 보안 목록없이 보내는 서비스. 부모를 끄는 것은 먼저 묻습니다, 아이들의 이름을 바꾸는 것은 가지고 갈 것입니다 그것은. 그것은 toggle 보기 보다는 더 큰 활동입니다. 나무는 TypeScript 미러가 아닌 기능 endpoint에서 온다. ServiceType의 - Java에서 이미 두 번 드리며, 서버는 연산자 카탈로그를 알고있는 유일한 장소입니다. 203 테스트 파일 / 2921 테스트 그린, 깨끗한 빌드.
· InitializerService
상거래 어린이 및 EHR의 전체 감시 가격
Neither 가격 맵은 총 검사를 가지고 있으며, 두 개의 실패 모드가 있습니다. 다른 모두 침묵. CATALOG에서 미스링, 앱은 어디에도 없습니다. 가격 매트릭스. TIERS에서 미스, 모든 계층 쓰기 is included=false — 제목이 실패하지 않는 표현식 계획이 전혀 행하지 않을 때만 실패하지 않기 때문에 구출 그리고이 글을 하나. 잊혀진 앱은 모든 분들에게 또는 모두를 위해 통제해, 어느 것이 세부사항 nobody에 달려 있습니다 시간에 기억하십시오. 5개의 상업 수직은 정확하게 POS의 rung에 앉습니다. 그들은 아니었다 앱 트리 전에 별도의 지갑 — POS를 들고있는 모든 것 할 수 있었다, 그것은 할 수 있었다 — 그래서 다른 곳에 넣어 기능에 대한 책임은 이미 있습니다. POS가 아닌 테스트 핀 리터보다, 그래서 이동 POS 그들을 이동. EHR는 원소 체계 같이 기업 협상됩니다: 명부 가격 없음, CUSTOM 계획은 모든 계층의 부채입니다. PHI 고객 내장 BAA 및 규정 준수 검토를 의미, 셀프 서비스 체크 아웃하지. 159 테스트 그린.
· kamo-marketing
회원의 방문을 자신의 링크로 계산
자신의 추적 링크가 가장 일반적 인 것을 확인하는 회원 어떤 코드를 이제 얻을, 그리고 그것은 쓸모 보다 더 악화: 그것은 번호를 팽창 그들은 측정, 그것은 방문자의 실제 전망에서 indistinguishable 서랍, 그리고 그것은 영구 방문자 쿠키를 유지 하 고 나중에 방문 다시 계산합니다. 세 번의 방문을 보여주는 코드, 그들 모두는 그것을 분화, 그것은 그것에 거짓말과 지불 기록입니다. 이 사이트는 질문에 대답 할 수있는 유일한 기원입니다 - 그것은 세션이 없습니다 회원이 아니고, 내부 콘솔은 www. <apex>에서 내부.<apex>. 그 틈이 링크가 무엇인지: ?mrt self=1 mints에 도착 예외, 그리고 브라우저에서 모든 방문에 대해 제외됩니다. 매개 변수가 없습니다. 내부 추적 코드 탭은 제어를 성장 그 링크를 생성합니다. 축소는 충분하지 않다, 그래서 제외된 방문 방문자와 소스를 삭제 제품 정보 이 발송하기 전에 자신의 링크를 미리 한 회원, 또는 누가 선택 이미 계산 된 브라우저에서, 여전히 GUID를 수행 - 그리고 비콘 화재 누구에게나 옵트 아웃을 삭제하지 않고 이제는 일 그것을 필요로하지 않은 사람들을 위해. 예외는 TRACKING COOKIES에 deliberately 아닙니다. 그 세트는 쿠키가 무엇인지 정책의 삭제 통제는 명확하고 식별자와의 옵트 아웃을 청소 자주 묻는 질문들 — on 정확하게 그 사람에 의해 눌러질 가능성이 가장 통제하십시오. 체크-discount-cookie는 50 체크에서 72까지 성장하고, 일치하는 값을 덮고, 매개 변수 맞춤법, 삭제 설정 exclusion 및 두 소스 invariants (middleware는 정체성을 삭제해야하며, beacon은 로컬로 구해야합니다. midware는 문서 요청에서 실행되는 동안 beacon은 모든 클라이언트 측에서 실행합니다. 이름 *.
· kamo-internal
제휴 판매 득점판 위젯
1개의 격자 란 넓게와 2개의 줄 키 큰: 조직에 있는 10명의 사람들 그들의 추적 링크를 통해 가장 가져, 오늘, 이 달, 이 년 또는 모든 시간, 이번 달 방문자를 엽니 다. 주문은 기능입니다. 4개의 미터를 보여주는 다른 방법 창은 여섯 개의 별도의 목록입니다. 이것은 하나의 목록입니다. 사이트맵 회원이 키우고 레이아웃 애니메이션을 수행하므로 카테고리 슬라이드를 전환 같은 사람들은 다른 사람보다 팬을 비우기보다 - 그리고 후크 모든 보드를 유지하고, 그래서 그 애니메이션이 트리거를 눌러 같은 프레임에 대한 데이터. 선택자는 회원의 PROFILE에 대해 저장되므로 LocalStorage가 아니라 책상에서 설정 한 누군가가 자신의 노트북에 도착 보드입니다. 둘 다 독자는 인식되지 않은 값을 기본으로 인식하지 못합니다. 서버는 동일한 규칙과 echoes를 사용한 것을 다시 적용합니다, 그래서 이전 빌드에 의해 작성된 선호도는 빈 팬에 회원을 떠나지 못할 수 있습니다. 상위 10 개 이상의 회원은 목록 아래 자체 라인 핀을 얻고, 아무것도 아직 순위 0에 그것을 얻을. "당신은 말할 수있는 보드는 그렇지 않다"는 것은 득점판이 사람들이 존재하지 않아야 할 것입니다. 모티브. 또한, 다른 끝에서 동일한 문제이기 때문에: "preview" 통제 방문을 계산하는 링크가 열 수있는 추적 코드 탭에. Check 자신의 링크 땅이 가장 일반적인 첫 번째 방문 어떤 코드는 이제까지, 그리고 회원의 자신의 클릭을 기록으로 계산하여 측정됩니다. 연락처 PreviewLink는 실제 링크와 마커 마케팅 사이트 reads — cross-repo 계약, 그래서 테스트 핀 매개 변수 이름.
· MediaService
제휴 판매 득점판 endpoint
* * * * * * * * * 1개의 창을 통해 1개의 미터를 위한 조직의 정상 10, 더하기 콜러의 자신 그들이 그것을하지 않을 때 서. MARKETING TRACKING CODES의 카운터는 다음을 수행 할 수 없습니다. 시간 차원없이 롤 업, 그리고 그 실행에 아무것도 없다 무슨 일이 있었을 때 말한다. 창의적인 진실은 행에 있습니다 — **************** 획득 및 각 변환의 자체 * MARKETING VISITORS에서 스탬프. 왜 모든 시간은 코드에 동의합니다 그리드 : 동일한 데이터, 동일한 방법을 계산, 두 번째 책장하지. 4개의 결정은 배열합니다: - 인수는 FIRST 접촉에 의해, 활동에 의해 아닙니다. 관람객 창에서 단지 활성은 매월 동일한 사람을 인증 할 것입니다, 그래서 일 한 번 아웃랭크 작업은 지금, 영원히. - AssetdTrackingCodeId의 전환 순위. 그 열은 동결 현재 계정이 존재합니다. lastTrackingCodeId가 이동을 유지하고 순위를 끄십시오. 한 명의 회원이 추가 클릭으로 닫힌 전환을 할 수 있습니다. - 창은 UTC에 비해 MEMBER의 달력에서 잘라. "이달" 그 달력이 물어 졌고, 각 열에 따라 하루까지 다를 수 있습니다. 이 스키마는 UTC의 상쇄없는 LocalDateTime 의미입니다. - 모든 4 미터는 요구 당 computed, 그래서 엇바꾸기 종류는 즉시입니다 회전자보다 스크린에 이미 행의 재 정렬. AFFILIATE SCOREBOARD WIDGET에 의거하여 다른 것을 볼 수 있습니다. Java 문서 그것은 드릴 다운을 구입하지 않습니다 : 코드 ID, 방문자 ID 및 회원이 없습니다 endpoint의 매개 변수 및 모든 by-id 분석 endpoint는 여전히 MarketingTrackingScopeResolver는 변경되지 않았습니다. 4개의 응집은 합동 보다는 오히려 comma-join를 이용합니다. 외국 열쇠는 JPA 협회이고 모든 Hibernate에 comma 모양 벌레입니다 버전의 함대 실행 — MarketingTrackingHqlTest 이제는 모두 4를 곱합니다. 6.2.13에 있는 진짜 법인 모형 및 취득, attribution 및 tenant 핀 그들은 무서운 경우 침묵하지 못한다.
· kamo-shared-library
제휴 판매 득점판 위젯 권한 추가
5권, 234-238, MARKETING 그룹에서 VIEW REFERRAL CODES를 해제: 추천 번호의 리더보드는 추적 코드 데이터이며, 회원은 할 수 있습니다. Tracking Code 탭이 작동하지 않습니다. the widget right — not VIEW ALL MEMBER TRACKING — 다른 것을 공개하는 것 회원의 합계, 그리고 그것은 deliberate입니다. 200/201 게이트 ANALYTICS : 그의 방문자, 그의 주소, 그의 시간, 대상 회원 당 해결 범위 해결자. 득점판은 이름, 등급 및 1개의 수를, 에 공개합니다 한 번에 모두. org-wide 분석 권리가 표시될 것입니다. 하나의 관리자에게만, 이 보고서는 오히려 보드보다. 심리적으로 씨를 받지 않는, 같은 이유로 200 그리고 201는 하지 않습니다: 묘목은 모든 기존 소지자의 추천 총을 부트에 게시 그것은 그것을 배송, 이는 배포에 의해 만들어진 공개 결정은 오히려 로 관리자. 감사의 형태로 229/166/32/31 — 모두 5명의 아이들과 VIEW REFERRAL CODES VIEW MARKETING의 자녀이므로 루트 버킷이 움직일 수 없습니다.
· kamo-login
상표와 범위는 ?org=를 가진 표시에서 스크린
login.kamocrm.com은 모든 조직에 대한 로그인 화면입니다. 그 자체의 호스트, 그래서 호스트 이름은 어느 쪽이 서명 할 수 없습니다. 다운로드 do: id 또는 alias에 의해 조직을 지명하고, 브랜딩을 선정하십시오 페인트 및 조직으로 자격 증명과 여행 관련 상품 힌트, credential 아닙니다. 회원은 검증된 서버 측으로, 그래서 naming으로 동일한 refusal을 얻지 못하는 조직 소설 1. 최악의 잘못된 참조는 잘못된 로고입니다. 본문 바로가기 브랜딩은 SecurityService's /org/public/{ref}에서 옵니다. reimplemented 보다는 오히려 추측할 수 있는 참고가 드러나다에 관하여 규칙 한 곳에서 숙박하십시오. 테마베이스는 대신 조직을 따릅니다. 호스트, 주어진대로 사용 : 호스트 경로의 첫 번째 레이블을 삭제 acme.kamocrm.com 을 kamocrm.com 으로 돌려주고 10 을 페인트합니다. 플랫폼의 상표. 첫번째 페인트는 반드시 참고 때문에 주인의 브랜딩을 이용합니다, 아직 해결되지 않았습니다. KAMO THEME REAPPLY repaints 한 번 가지고 있습니다. 오시는 길 그 이름은 조직이 이전 방문을 명확하게합니다. 이 탭에서, 그래서 플랫폼의 자신의 화면은 다른 사람을 유지하지 않습니다 로고.
· SecurityService
세션 없이 org의 브랜딩을 합니다
로그인, 등록 및 회의 로비 페인트 조직의 색상 모든 세션이 존재하기 전에. 그들은 호스트 이름 중 하나를 알고, 이는 자신의 호스트 이름 없이 어떤 조직도 공급할 수 없습니다. GET /api/security/org/public/{ref}는 명시된 ?org= 참조 -- 숫자로 id, 또는 별명으로 -- 페인트에 무언가로. 브랜드 ONLY : 이름, 로고, 색상, 로컬, 테마 호스트. 기능 없음, 아니 권한, 도메인, 회원이 아닙니다. 이 재사용의 첫 번째 시도 프로젝트 조직 기록 및 endpoint ratchet는 그것을 거부, 올바르게 -- 별칭은 추측 할 수 있으므로 추측 할 수있는 전체 레코드 각 조직의 구성에 대한 참조. 왼쪽은 어떤 사람이 조직의 로그인 페이지를 이미 보고, 그리고 별도의 필드를 개별적으로 테스트하므로 한 뒤를 두는 것은 관련 기사 읽기 전용. sibling /org/domain/{host} 자동 프로비전 앱 기능 측 효력; 추측에 의해 도달한 endpoint는 쓰지 않아야 합니다. 알 수없는 참조 404s, 그래서 주위 별 -- byPublicRef 이미 여러 개의 orgs를 naming을 거부, 이 핀은 refusal 다른 사람보다는 "다른 조직"으로 콜러에 도달 브랜드. 콜러는 플랫폼 자체로 돌아갑니다. themeDomain은 동일한 값을 쉘과 테마 프로듀서 사용, 그래서 사전 세션 화면은 폴더에서 org의 브랜딩을 읽었습니다. 실제로 -- {alias}.kamocrm.com 도메인없이 org에 기록. 947 테스트 패스.
· MediaService
PHI를 처리하는 tenant에 대한 회의 녹음
기능 분할 된 ServiceType.MEET 허용 - 라이브 회의 Self-hosted Meet은 클러스터를 떠나지 못했습니다. MEETING RECORDING 이 파이프 라인이 전체 성적표를 게시했기 때문에 차단 Multi-provider AI 라우터 및 그 다음 모든 참가자에게 결과를 보냅니다. 외부 손님. 즉 비할 수없는 제 3 자 사본입니다. 감시는 개인 ingest에서 앉습니다 () 대중적인 입장 점 funnel 를 통해, 그래서 그것은 어떤 바이트 도달 MinIO 전에 거부, 그리고 다시 상단에 의 runSummaryPipeline, 이는 공개 및 @Async. 녹색 200의 시험.
· VOIPService
차단된 기능은 이제 오른쪽과 신 모드를 능가합니다
PhiPlaybackAuthorizer 게이트 PHI는 VIEW CALL LOGS에서 재생합니다. 그것은 전체 체크 때문에 ServiceType.VOIP는 차단 VOIP RECORDING 단위, 그래서 PHI tenant는 전화 체계가 안으로 있을 수 있었습니다 모두와이 클래스는 아무도 ran하지 않습니다. 기능 분할 된 VOIP 자체 허용 - 호출 처리는 in-cluster — VOIP RECORDING은 BLOCKED PENDING WORK를 유지하면서 변경되지 않은 경우: 재생은 정리 체크, 성적표 수행 metadata에서 타고 유지 또는 삭제 경로가 없습니다. 혼자서 그것은 곧 약화 된 것입니다 : PHI tenant는 활성화 할 수 있습니다. 전화 시스템 및, 한 권리 부여, 모든 것을 재생. 소 PhiCapability Guard는 FIRST를 실행하고 그것의 refusal는 최종적입니다. 없습니다. 호출기 매개 변수, 그래서 PHI tenant no right lifts it — and nothing 가장 중요한 속성 인 Active god session을 수행합니다. ****************는 지금 입니다 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 세 가지 테스트는 오래된 계약을 인코딩하고 오히려 재 작성 삭제 된, 각 기록 왜 기대가 핍니다. voicemail refusal 메시지가 더 이상 누락되지 않습니다. 일반적으로 더 이상 이유가 아닙니다. 152의 시험 녹색.
· SecurityService
앱 트리를 떼어내고, 자동 사용 해제를 수정
FeatureController는 지금 각 serialized에 부모/children/isParent를 보냅니다 앱 그래서 클라이언트는 자녀가 부모의 밑에 배열 할 수 있습니다. 한국어 오히려 목적으로 TypeScript에 미러링 : ServiceType 미러 Java에서 이미 두 번 드리며 나무의 두 번째 사본은 drift에 더 많은 것일 것입니다. 새로운 응답 모양이 캐스케이드에 필요 없음 — /enable 및 /disable 이미 전체 기능 목록을 re-serialize, 그래서 노크에 변경 도착 클라이언트가 아무것도 재구성하지 않고. auto-provision 루프 모두 이제 부모가 플랫폼을 수행하는 아이를 건너 제안하지 않기 때문에 enableFeature는 부모를 켜고 그렇지 않으면 부모 nobody에 대한 전환. OrganizationController의 루프는 FeatureController의 동안 PHI 체크가 없었다. 동등 한, 공개 unauthenticated endpoint에. PHI에 대해 첫번째 막힌 단위 threw, 주위 붙잡음은 경고를 기록하고, effectiveFeatures 조용히 적용 모델 없이 원시 행에 떨어졌다 프로젝트. 그것은 이제는 특징처럼 잡기보다 오히려 묻습니다. 목록입니다. /api/security/ehr 등록. commerce prefixes는 POS에 mapped 체재합니다: 부모는 오른쪽 조악한 문과 *********** 이미 시장 당 정제. 938 테스트 그린.
· kamo-internal
6개의 상거래 아이 앱을 미러링하고 거울을 드리기
둘 다 TS 거울은 이제 ServiceType.java에서 GENERATED는 오히려 손 유지. 그들은 Java에서 악화했다. stale "RAG 통합"및 "Falls back to parent 조직 SMTP" Java가 2026-08에서 제거한 사본, ServiceType.ts에서 POS 표시 PLANNING AppType.ts는 COMPLETED와 같은 다른 설명들을 말했다. 각 파일에서 앱. 신뢰하기 전에 알고있는 가치 : displayName 및 설명은 여기 있습니다. 주의사항 모든 소비자는 정체성을 위해서만 사용합니다. — hasFeature() id, appServiceIcons 키에 일치합니다. 본문 바로가기 PLATFORM APP CATALOG overrides를 수여하는 /api/security/features를 얻으십시오. 거울은 볼 수 없습니다. 문자열은 synced 그래서 독자는 잘못되지 않습니다, 그리고 파일 헤더는 렌더링을 시작할 수 없습니다. 부모 / 어린이 나무는 deliberately not mirrored — 기능 endpoint는 앱당 부모/아이들/isParent를 보내고, 두번째 사본을 보냅니다 모양은 편류에 더 많은 것일 것입니다. 또한: 새로운 수직 당 아이콘은 부모의 대출보다 오히려 isEhr를 포함한 storefront 및 Organization getters.
· kamo-internal
1개의 scrollbar, 3배 넓게, 아래 각 대화
메시지 옆에 표시된 바는 회원 채팅 및 SMS, 6px의 지원 티켓 및 사회, 그리고 AI 채팅에서 그것은 전혀 없었다 : 그 목록은 `scrollbar-width` 인라인 선언 그 외에 ::-webkit-scrollbar 규칙, 그리고 크롬 121 이후 비-initial `scrollbar-width` 또는 `scrollbar-color`는 브라우저가 전체를 삭제합니다 -webkit- 블록 - 그래서 12px에 대해 물었다. 플랫폼 헤어 라인을 가지고. globals.css 문서는 페이지 스크롤러에 대한 규칙; 아무것도 그것을 시행하고, AI 채팅은 조용히 그것의 잘못된 측면에 있었다. 모든 5 이제 하나의 CHAT SCROLLBAR 일정을 읽으십시오: 24px 개골창 — 회원 채팅의 세 번 오래된 폭 — 엄지 inset와 함께 6px 투명 경계에 의해 측면, 그래서 넓은 바 아직도 창 가장자리에 용접된 석판 보다는 오히려 여물통에 있는 알약으로 읽습니다. AI 채팅 표준 속성은 `@supports not selector(::-webkit-scrollbar)`로 이동하여 여기서 globals.css는 그(것)들을 끼워넣고 유일한 장소 Firefox는 Chrome 그것의 규칙을 요하지 않고 그(것)들을 읽습니다. 시험은 주제가 스타일 시트이고 jsdom은 scrollbars가 아닙니다. 그것은 창문이 리터럴에서 바를 크기가없고, 그 중 누구도 표준을 설정합니다. 재산은 다시 비난했습니다.
· InitializerService
앱 트리 백필로 확대
할머니항문 GatedMarkets는 이미 각 org의 적극적인 시장을 걸어 왔습니다. getRequiredService()를 해결하고 누락된 앱을 활성화했습니다. isGated() 수직, 즉 MORTGAGE 및 PERSONAL LOANS에 제한됩니다. 제품 정보 모든 CommerceType은 자신의 아이 앱을 사용하여 제한이 사라집니다. 같은 루프 씨앗 RETAIL / 렌터 / 서비스 / SUBSCRIPTION / PROCUREMENT 행. 새로운 마이그레이션이 필요 없습니다. 또한 모든 시장에서 POS를 잡고있는 orgs의 RETAIL 소매가 자체의 응용 프로그램을 필요로하기 때문에 나무 전에 작업 상거래. Top-level orgs는 더 이상 건너 뛰지 않고 그 문제를 해결하는 것입니다. 면제는 두 개의 랜딩 앱을 부여 할 때 권리였다 - a platform-operator org는 조용히 MLOS를 취득하지 않아야합니다. 그러나 그것은 잘못 AppEffectivelyEnabled가 OrgFeature를 필요로 하기 때문에 app 나무를 위해 ROW와 최고 수준의 면제가 없습니다. 첫 번째 실행은 성공을보고 KamoCRM을 떠나, 활성 RETAIL 및 SUBSCRIPTION 시장을 실행, 와 어떤 행든지를 위해; 그것은 다음에 /commerce에서 둘 다 잃을 것입니다 보안 보안 서비스 배치. 에 의해 쿼리 데이터베이스, 읽지 않은 로그인. enableFeature now cascades a child to its parent, 그래서 아이를 씨를 쳐 POS 행을 보장합니다. 2026-08-24 prod에 대한 런. 인증: 모든 활성 commerce markets 행 이제는 활성 아이 OrgFeature 행, 0 누락.
· SecurityService
제목 체크 모든 수직, 그냥 문 두
모든 CommerceType 이제 POS에서 자체 아이 응용 프로그램을 이름을 따서 isGated() 단락 소매, 대여, 서비스, 구독 그리고 직진은 사라집니다. 현재 위치 자신의 앱에 대하여 - 포인트: 수직 판매 될 수, 전환, 자체에. KamoInitializer 백필에 따라 실행됩니다.
· kamo-internal
도구 모음의 검색은 필드에 열 glyph입니다
회원 채팅은 창의 상단에 영구 검색 상자를 수행 — 폭 모든 툴바는 거의 모든 시간을 비우고 파열에 사용됩니다. · 이제 28px의 돋보기를 클릭하고 도구 모음을 4로 읽습니다. glyphs와 공기. 그것은 주변에 내장 된 아이디어 : 돋보이지 않고 결코 움직입니다. 붕괴, pill은 28px이고 아이콘은 중앙에 앉아, 왼쪽 가장자리에서 14px; 열다, 알약은 6px의 16px 아이콘 전에 패딩하여 14px의 아이콘 센터를 다시 놓습니다. 따라서 알약은 성장합니다 아직 붙은 glyph 뒤에, 그리고 통제는 1개의 목표 오프닝으로 오히려 읽습니다 2개의 국가 crossfading 보다는. 길에 약간의 과잉을 가진 폭 봄은 열리고 아무도 없습니다 닫히는 방법에; placeholder는 60ms에 의하여 성장을 추적합니다 그래서 텍스트는 상자에 도착합니다 이미 방을 가지고; 한 번에 명확한 제어 스프링은 뭔가가 분명합니다. 닫기는 항상 쿼리를 삭제하고 필드는 한 번 붙일 수 없습니다. 여전히 대화를 필터링하는 것은 그것이 무엇인지에 대한 창이 될 것입니다 이름 * Blur는 텍스트로 열고, glyph의 스레이 클릭 필드에 초점 검색을 무시하지 않고. 감소된 동의는 전반적으로 명예를 얻고, glyph는 탭 뿐 아니라를 위한 초점 반지를 나릅니다 클릭, 그리고 50px 우주선이 필요한 오래된 상자와 사라.
· kamo-shared-library
모든 수직 이름은 자신의 아이 앱
requiredService는 이제 각 수직이 어린이 앱을 가지고 있습니다. ServiceType.POS는 "null은 POS를 혼자 충분히 의미" 특별한 경우와 isGated() 그것으로. 각 수직은 지금 전환될 수 있습니다, 독립적으로 라이센스 및 PHI-classified - 의료를 할 수있는 것 RETAIL가 PHI tenant에 대해 차단 된 이후로 모든 상업 사용 상업의 나머지는하지 않습니다. HEALTHCARE(ServiceType.EHR)는 EHR가 어떻게 나타날까요? **************** 앱이 켜지면 새로운 조명이 없습니다. 코드: assertCommerceTypeAllowed, getAllowedCommerceTypes, 두 시장 픽업자 뒤에 허용 유형 endpoint, **************** 및 시장 목록 필터 모두 getRequiredService()를 통해 이미 해결합니다. KamoInitializer 백필이 실행될 때까지 PUSHED. assertCommerce유효한 reads getRequiredService() 직접, 그래서 순간 SecurityService 참조 소매 또는 임대 시장의 모든 org는 어린이 OrgFeature 행을 필요로합니다. 아직 없습니다.
· MediaService
Org id가 org id에 의해 공개 설정하자, 뿐만 아니라 호스트
Meet sidecar는 org의 meet config를 통해 게스트를 결정합니다. 회의 암호가 필요합니다. 그것은 hostname에 의해 물었다, 공유 대회에 호스트는 플랫폼 조직에 대한 해결 -- 그래서 필요한 tenant 비밀번호는 모든 손님에 대해 침묵적으로 떨어졌다 로그인 해당 이용 후기에 달린 코멘트가 없습니다. 이제는 org 토큰을 운반합니다. 두 개의 공개 엔드 포인트는 따라서 받아들입니다 명시된 orgId 하지 않은 경우 도메인 조회로 돌아 떨어졌다, 그래서 오늘 호스트에 의해 요청 아무것도 변경. Ids는 손가락으로 도착하고 긴대로 패된다 : 그들은 과거 2^53, 그래서 하나 다른 조직의 두 배 이름을 통해 경로를. 200의 시험 통행.
· kamo-shared-library
Cascade 기능 활성화 / 앱 트리를 통해 비활성화
자녀가 부모를 활성화; 부모가 모든 것을 비활성화 아이; 마지막 아이가 부모를 비활성화합니다. 부모를 혼자 아이들을 떠나십시오, 그래서 부모는 deliberately에 전환 아이들은 켜집니다. 캐스케이드는 이벤트 구동이며, deliberately no reconciliation 기타 제품 그것은 안전 재산입니다: 지속적으로 강화 된 "모자와 활성화된 아이들은 떨어져 있습니다" invariant는 각을 위해 commerce를 전환할 것입니다 기존의 org는 이 발송된 순간, 아이 행이 될 때까지 KamoInitializer 백필 실행. 아이는 부모의 단위 뿐 아니라 그 자체에 PHI 감시를 주장합니다, 쓰기 전에 - 그렇지 않으면 차단 된 부모의 허용 자주 묻는 질문.
· kamo-shared-library
PhiCapabilityGuard 추가
PhiTenantGuard는 기능 사용 시간 및 다른 곳에서 실행됩니다. - 3 통화 사이트, 모든 기능 서비스. 이제 PhiModule은 기능 편두, 핵심이 허용된 앱은 여전히 존재하지 않는 기능을 포함 할 수 있습니다. 가능한 시간 검사는 차이를 볼 수 없습니다. PhiTenantGuard와 동일한 deliberate 서명: 순수한 기능의 (status, 단위) 콜러 없음, 권리 또는 신 형태 모수, 그래서 거기 있습니다 높은 것. 스테레오 타입보다 일반 클래스 — shared-lib unscanned 저장소를 필요로 하는 @Component는 충돌 반복한 서비스 4를 비치하고 있습니다 시간; 각 consuming 서비스는 그것의 자신의 @Bean 선언합니다. 참고 : MEETING RECORDING 및 VOIP RECORDING은 이제 모든 곳에서 비바운다. ServiceType 하지만 아직 호출 사이트에서 보호되지 않았습니다. — 즉, MediaService 및 VOIPService를 터치합니다. 이것은 생산에 inert입니다 현재 모든 org가 handlesPhi=false를 가지고 있기 때문에 meanwhile, 하지만 전화 사이트가 어떤 열거 전에 착륙해야합니다.
· kamo-shared-library
App-grained의 Split PhiModule
POS는 ECOMMERCE SYNC (BLOCKED NO BAA) 및 전체 상거래에 매핑 표면은 POS, 그래서 handlesPhi=true를 가진 org를 전환할 수 없었습니다 commerce on at all — no 시장, no /commerce, 과 아니 임상 수직 에 내장. 10개의 소매 sync 접합기는 잎이 있는 일입니다 경계, 상거래가 아닌. 현재 COMMERCE CORE (permitted) 및 ECOMMERCE SYNC 범위에 대한지도 RETAIL 아이에게. MEET의 동일한 보정 (라이브 회의 대 외부 inference에 transcript를 보내는 개요 파이프라인 (telephony vs 저장된 기록 및 성적표). MEETING RECORDING과 VOIP RECORDING은 이제 모든 ServiceType이 없습니다. 코드를 통해서만 도달 가능, PhiModule의 javadoc 이제는 규칙을 주었다. 그런 일정한 MUST는 PhiCapabilityGuard가 호출됩니다. 사이트 맵 기능을 감시하지 않고도 허용된 앱을 정렬 아무 것도 잊지 않고도 호환이 됩니다. AI ASSISTANT 및 RAG SEARCH deliberately stay blocked: 클러스터 서비스 embeddings, whisper-asr 및 번역 하지만 유전자 LLM, 그리고 RAG는 페이로드 필터에 의해 격리 된 Qdrant 컬렉션을 공유합니다. 기타 제품 그들은 종이 변화가 될 것입니다. 2개의 시험은 app-grained 모형을 암호로 하고 오히려 업데이트됩니다 확장: PhiServiceTypeMapping 테스트의 차단된 앱 assertion 및 FeatureServicePhiGateTest는 VOIP에서 exemplar 움직임을 차단했습니다. RETAIL - VOIP는 더 이상 사용할 수 없습니다.
· kamo-internal
DNS 설정 대신 새로 만들어진 org 내부 토지
Org는 제작자를 /setup/dns로 옮겼고, 그 이유는 사실이었습니다. 내부에 OTK 리디렉션을 입력합니다.<new-domain>, 그리고 브랜드 뉴 org에는 DNS가 없습니다. 그래서 호스트는 허용되지 않았습니다. DNS 구성 당신이 방금 만든 것을 열어가는 가격 --이 정확한 벽 작업 제거. 생성 호출은 이미 한 번의 키를 반환; 마법사는 아무도 없었다 으로 그것은 현재 기원에 그것을 소비, 세션 org를 이름, 그래서 기다릴 호스트가 없습니다. 도메인은 여전히 가치가있다 및 설정은 지금 살고있는 곳 : 선택 흰색 라벨 단계는 도어 웨이보다. 상표 경고는 입니다 어느 방법을 통해 수행, 그리고 키가 org가 여전히 존재하지 않은 경우, 그래서 실패보다 부동산 전망에 마법사 땅. check-client-navigation는 window.location.href를 올바르게 붙여줍니다. 그 자체 docstring 이름 / 정품 세션-바운드로 한 번 키로 유효성 점프, 그래서 이것은 주변을 일하는 것보다 그 이유로 수당됩니다 -- 라우터는 제작자의 오래된 세션을 유지하고, 정확하게 무엇이 대체된다. 2857 테스트 및 모든 7 가드 패스.
· kamo-shared-library
ServiceType 2단계 부모/아이디 트리
새로운 ids 26-31에 6개의 상거래 아이들, 정적 구획에 있는 POS에 타전하는 RoleRightType 패턴(enum constant)은 다른 것을 참조할 수 없습니다. 그것의 자신의 constructor 인수). MLOS와 LOS는 id를 바꾸지 않고, ORG FEATURES가 ServiceTypeConverter를 통해 id를 주장하고 이동 모든 기존 행을 재 할당할 것입니다. POS의 사본은 이제 부모가 대출하고있는 "비즈니스 라인"이됩니다. 환자 기록; 일정한 이름은 POS 때문에 체재합니다 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** persists 이름 문자열로. 뚱 베어 설명은 RETAIL로 이동, 그것은 정확하고 이미 vetted 서비스TypeCustomerCopyTest. 새로운 상수 선박 PLANNING/disabled 그래서 FeatureController.list의 자동 보호 루프는 모든 org에 대해 스위치 할 수 없습니다. PhiServiceType매핑 테스트는 다음 커밋 맵까지 디자인에 의해 실패 새로운 상수; 1개의 강요에 있는 땅.
· kamo-internal
도메인 입력 없이 org를 만드십시오
Org의 입력은 ****************로 항해하지 않습니다. URL이 리터럴로 렌더링되는 도메인 없음 ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 그래서 Enter는 비활성화 및 소유자 /setup/dns 대신에 routed -- DNS는 문이 아닌, 흰색 라벨 옵션. workspace는 이제 CURRENT 기원에 살고 있지 않을 때 호스트 및 세션 이름은 org. 작업 사용자 정의 도메인을 가진 tenant 여전히 자신의 호스트에 열려, 그래서 아무것도 변경하지 않는 사람의 흰색 라벨. 정의되지 않은 사용자 정의 도메인은 도메인과 같은 처리됩니다. HOST는 할 수 없습니다 아직 제공되지 않은 org와 같지 않습니다. canEnterOrg 그러므로 열쇠는 항상 진짜 일이었습니다 precondition -- 사용 가능한 회원 -- 오히려 도메인에. needsDomainSetup 및 orgStatus deliberately unfinished 보고 유지 도메인 : 더 이상 장벽이 없지만 누군가의 걸출한 작업, 그리고 재산 전망은 그 통지를 얻는 곳이다. 쉘은 또한 org의 hostname을 요청해야했습니다. 이름 * layout stripped "internal." and looked the host up, 어느 대답 "who owns 이 이름" -- 같은 질문으로 "작업 공간은 내가"만 동안 모든 tenant는 주인이 있었습니다. 플랫폼 호스트에서 반환합니다. platform owner, 그래서 회원은 domainless org를 입력했다 카테고리 Inc.의 브랜드, 기능 및 권리. 이제 세션을 먼저 묻습니다. /api/org/current를 통해 세션이 없을 때 호스트로 돌아갑니다. 서명 밖으로 포탄 연출을 지키는. *** 쿠키는 무엇을 만드는가? -- sessionStorage는 문서 요청에 보이지 않습니다. 2857 테스트 및 모든 7 감시 스크립트 패스.
· SecurityService
쉘은 세션에서 org를 태워 호스트가 아닌
kamo-internal의 루트 레이아웃은 호스트 헤더, 스트립 "내부"를 읽고 fetches /org/domain/<그>. 호스트는 같은 일종의 일종 "org am I"로 질문; 공유 호스트에 그것은 다른 질문입니다 잘못된 대답으로 -- 그것은 누구가 호스트를 소유, 그래서 회원 누가 Domainless org를 입력하면 KamoCRM Inc.의 브랜딩, 기능 그리고 깃발. Adds GET /api/security/org/current, 프로젝트 기록 반환 콜러의 SESSION을 조직합니다. 레이아웃은 그것을 도달 할 수 있기 때문에 이미 쿠키 헤더와 *** 쿠키가 존재하므로 서버 sessionStorage가 문서에 보이지 않는 경우에도 세션을 볼 수 있습니다. 이름 * 매개 변수가 없어, deliberately. 첫 번째 초안은 id 또는 alias를 허용 그리고 **************** 제대로 거부 : 그 모양 alias를 추측하여 모든 org의 레코드를 enumerable 만들고, aliases는 다운로드 세션은 이미 org를 알고, 그래서 매개 변수 다른 것에 대해서만 요청할 수 있었습니다. 세션이 해결되었습니다. ratchet는 기본 항목을 필요로하는 것보다 자체에 전달합니다. 투상은 대변보다 오히려 추출된다. 두 개의 엔드 포인트 반환 2 동일한 기록의 모양은 막는 실패입니다 -- 클라이언트 그것이 붙은 것을 말할 수 없으며, 그들은 첫 번째 시간 만 무서워 업데이트 928 테스트 패스.

당신의 우주는 기다리고 있습니다.
몇 분 안에 무료로 시작하세요. 준비가 되면 언제든지 제품을 추가할 수 있습니다.
영원히 무료 - 신용 카드 필요 없음