Canva는 OAuth + 디자인 / 내보내기 연결
- CanvaApiClient: PKCE, 토큰 교환/refresh/revoke, 사용자, 디자인 (create/list), 수출 일, 바이트 fetch - CanvaTokenService: 암호화된 토큰(PlatformSecretCipher), Single-flight proactiv...
부분 상태 PATCH는 조용히 차단 깃발을 삭제할 수 없습니다; 기본 명예를 짓는 템플렛; 투입 후에 발행
**************** 불린 -> Boolean 그래서 PATCH 그 OMITS 이 필드는 명시된 false로 구별됩니다. LoanConditionService.업데이트 현재 null 가드 *************** (부분 업데이트 e.g. 의 제목 더 이상 그들을 닦아), 그...
Canva 통합 + 마케팅으로 org-enable 앱
-********** — 플랫폼 Canva Connect 클라이언트 등록 - ImageAssocType.MATERIALS(13, Imaging-materials) - org 마케팅 자산 버킷 -********** 아래 ServiceType.MARKETING - ServiceType.MA...
익명 손님을위한 Require-password gate (회원 우회)
Org를 사용할 때 requirePassword, 익명의 링크 방문자가 방에 들어가야 합니다. 비밀번호; 인증된 회원은 결코 프롬프트되지 않습니다. - sidecar: requirePassword가 없을 때 익명도메인이 없습니다. 익명으로 - 그들은 /api/auth/guest-jwt...
Alias Prisma 7 콘텐츠 해시 클라이언트 그래서 DB 경로 중지 500ing
Prisma-client generator (engineType=client)는 콘텐츠를 굽습니다. runtime specifier (@prisma/client-<hash>)는 다음 빌드에 있습니다. 회사 소개 pnpm-store symlink를 통해 만족하지만 runner의 신선한 `...
Enable Guacamole json-auth SSO + KamoDesktop 브랜드
- JSON SECRET KEY (선택 사항) 공유 데스크톱 sso 비밀에서 guacamole에서 번들 guacamole-auth-json 확장 신 SSO 링크에 대한 검증. - kamo-branding extension (title=KamoDesktop, kamocrm 로고 + fav...
God-only KamoDesktop 아이콘 (Linux + Windows) 자동 연결 세션
두 개의 nav 아이콘은 Analytics를 왼쪽으로, 오직 신-eligible 회원(isGod 추가 NavGateContext). SecurityService의 짧은 라이브 SSO 링크와 개방 새로운 창의 KamoDesktop Gateway는 인스턴스에 자동 연결됩니다. 자주 묻는 질...
KamoDesktop SSO env 직접 + 와이어 guac-sso 추적 k8s 배포
- @Value는 KAMO GUAC SIGNING KEY / DESKTOP PASSWORD를 직접 읽습니다 (런타임 application.yml는 configmap-mounted이므로 속성 간접은 바인딩되지 않습니다. - 옵션 guac-sso secretRef를 k8s/deploymen...
KamoDesktop SSO 토큰 엔드포인트
감사합니다. (god-eligible only) 분 5 분 guacamole-auth-json 토큰 (HMAC-SHA256 + AES-128-CBC, 확장 당 와이어 형식) 및 KamoDesktop에 대한 자동 로그인 + 자동 연결 URL을 반환 게이트웨이 로그인 키 + RDP 암호는 ...
Org-scoped 룸 이름, 룸 이름 형식, 달력 카모 회의, 시작 알림; i18n 설정
- useMeeting/MeetingDialog: 룸 이름은 이제 org 토큰에 의해 네임스페이스입니다. 그래서 두 orgs는 같은 Prosody 회의에 결코 collide 할 수 없으며 org의 명예 RoomNameFormat (RANDOM 대 DISPLAY NAME RANDOM 회원...
Auto-record + org 설정에서 워터 마크 녹음
overrides.js loadOrgMeetSettings now, 녹음이 활성화되면: - watermarkOnRecordings → 기록하는 동안 org "REC" 워터 마크 오버레이를 보여줍니다 Active (Jibri는 녹음 및 신호 참가자로 캡처합니다). - autoRecord ...
스케줄링 시작 알림 + 게스트 링크 만료
- MeetingReminderSweep : @Scheduled 스위퍼는 실시간 불 "미팅 시작"에 초대 된 회원에게 알림 (start − noticeerMinutesBefore) on *********** 다음 회의 SCHEDULED→ACTIVE 전환 dedupe에. 과거 시작 시간보...
채팅 목록의 회원 가용성을 표시; 디렉토리로 탭 이름을 변경
1:1 채팅은 이제 반대의 라이브 출연 + 가용성을 표면 동일한 방법 디렉토리 탭 — 동일한 useAvailability/usePresence 소스 및 같은 색상/표본으로 MemberItem(dot + uppercase label, pulsing when 온라인, 오프라인 때 회색), ...
KamoDesktop 신 SSO 아이콘 디자인 사양 + Guacamole rebrand
두 개의 신 전용 nav 아이콘 (Linux / Windows) kamo-internal에서 Guacamole을 엽니 다 SecurityService (god-eligible gate), 각 인스턴스로 바로 연결됩니다. KamoDesktop (title/logo/favicon)에 상표 ...
팟 네트워크 (MTU 수정) + unicast WoL에 guacd 이동
hostNetwork (k1m1 eno49 MTU 1500) 대 guacamole pod on cilium 오버레이 (MTU 1420) : RDP 연결되었지만 대형 프레임은 경계를 가로 질러 떨어졌다 -> 'Guacamole 프로토콜 위반' -> BOTH 연결에서 클라이언트 타임 아웃....
JWT-forge Hole을 닫고, 게스트가 참여하고, "카모로 로그인"을 추가하십시오
- sidecar /api/auth/jwt: 회원 정체성(id/name/email/org)를 파생 server-side *** 세션은 요청되지 않습니다. 이전 사람이 할 수 arbitrary identity + moderator:true 및 유효한 Prosody JWT를 얻는다 어떤 방...
로그인 회원가입을 통해 미팅에 초대합니다
Invite 링크 (chat + 이메일) 이전에 베어 룸 URL을 내장, 그래서 해당 이용 후기에 달린 코멘트가 없습니다. OTK는 할 수 없습니다 pre-embedded (single-use, short-lived), 그래서 클릭 시간 리디렉션을 추가 클릭 회원의 자신의 세션 중 하나...
Persist 초대 참가자, MANAGE MEET SETTINGS, 드롭 더블 초대 경로
- createMeeting : 초대 회원은 UUID 문자열이 아닌 숫자 snowflake ID입니다. 제작자처럼 longToUUID를 통해 경로. 이전 UUID.fromString 모든 초대를 위해 threw 그래서 아무도 참가자로 기록되었습니다. - MeetConfigControll...
IngressRoutes에 대한 데스크탑 네임스페이스 보기
데스크탑.kamocrm.com IngressRoute는 데스크톱 ns에 살고 있지만 Traefik의 CRD 공급자는 단지 감시했습니다 *********** — 이렇게 노선 무시하고 요청은 kamo-nowww로 떨어졌다. 바탕 화면을 watched에 추가 네임스페이스.
Filesystem로 가져 오기 VM 디스크, 블록이 아닌
CDI의 블록 importer 충돌: 'blockdev: 열 수 없습니다 /dev/cdi-block-volume: Permission denied' — 그것은 익지않는 Longhorn 구획 장치에 접근할 수 없습니다. 파일시스템 volumeMode는 disk.img로 클라우드 이미지를 ...
Borrower는 응용 프로그램 태켄 부작용 (doc checklist + notify)을 제출합니다
포털 대출 제출은 PATCH 대출 파일 {statusId:2}, 이는 우회 연산자 /transitions endpoint where the application-Taken 부작용 live — 그래서 차용자는 생성 된 시나리오 doc 체크리스트를 제출하고 아무도 통지 (listDocume...
부정적인 대출 금액 / 섹션의 속성 값 구하기
updateLoan 및 updateProperty는 이제 부정적인 수익률을 거부합니다. LTV 입력 (대량, 추정 / 추적 / 승인 값) 통해 requireNonNegative — 부정적인 주 또는 재산 가치는 침묵하게 할 것입니다 persist 및 손상 LTV 및 다운스트림 득점. 순...
Correct KubeVirt VM 클라우드 입력 필드 + spec을 현대화
- cloudInitNoCloud userdata secret 필드는 'secretRef' (UserDataSecretRef); KubeVirt v1.8.4 잘못된 필드를 실행 -> 'must는 적어도 하나의 userdatasource' - runStrategy : 항상 deprecat...
Www를 subdomains로 전환하지 마십시오
캐치 올 리디렉션 ANY 비 별 호스트 https://www.<host>, 이는 베어 apex에 대한 올바른 (kamocrm.com -> www.kamocrm.com)하지만 잘못 subdomain: desktop.kamocrm.com은 www.desktop.kamocrm.com에 308...
Borrower는 대출 파일 상태를 확장하거나 제출 한 후 URLA를 편집 할 수 없습니다
셀프 서비스 앱 엔드포인트의 두 개의 관련 차용기 사용 구멍 : - Privilege escalation (#2): patchLoanFile는 아무 statusId도 적용했습니다 caller-rights check, 그래서 대여자 (자신의 응용 프로그램에 파티, 0 연산자 권리)는 P...
Loan-file status accessor for renter edit-lock, 차입자-delete cascade, 선물-recipient app scoping
**************** orgId): 읽힌 돕기 차입자 포스트 제출 잠금 (차입자는 URLA 만 편집 할 수 있습니다) 파일은 DRAFT입니다. *************** deletePair/deleteBorrower 지금 각 per-borrower 아이 행 제거 ******...
경화 KubeVirt 원격 데스크톱 + Guacamole 게이트웨이
배포 워크플로를 통해 전체 원격 데스크톱 스택을 추가합니다. - KubeVirt + CDI는 배치 시간에 설치 (pinned-stable release URL) - 데스크탑 1 : 쿠분투 24.04 VM, 8 vCPU / 16Gi / 500Gi Longhorn 구획 디스크, masqu...
채팅 그룹을위한 하위 탭, 마지막 열림 탭을 기억
채팅 목록은 멀티 선택 알약 칩의 행에 의해 필터링 Chats 탭 아래 위치. 단일 선택 sub-tab bar로 교체하십시오. (그룹별 한 탭: 팀 멤버 / 회원 / 사회 / 지원) 부모 회원 / 채팅 탭, 그래서 선택한 그룹 목록 전체를 작성 내용 영역. - ActiveBucket ...
강화된 KubeVirt 먼 탁상용 + Guacamole 출입구를 위한 디자인 spec
KubeVirt Kubuntu VM (16Gi/500Gi Longhorn) 아파치 Guacamole HTML5 뒤에, Traefik을 통해 desktop.kamocrm.com에 노출 (TLS + 속도 제한 + IP-ban). Guacamole native Wake-on-LAN을 사용하여...
탭 행에 상태 편집기를 이동; 주의 콜백 자동 노트
- Status/sub-status 편집기는 이제 기본탭 행을 공유합니다: 탭 왼쪽, 상태 aligned right (작동 버튼에서 별도의 행 제거). - Callback 대화 상자 : 자동 추가 된 주석 아래 도움말 텍스트 리드 노트.
채팅 탭에서 회원 avatars보기
MediaService는 채팅 세션 회원 avatarUrl=null을 디자인(avatars are)로 반환합니다. 프론트엔드에 해결되었지만, 채팅 탭은 결코 해결되지 않았으므로 항상 초기에 떨어졌다. 앱의 멤버->avatar 지도를 실을 뀁니다 (사임 소스로 작업 멤버 탭) ChatsL...
Borrower 자체 생성 idempotency + orphan 보상; 성공으로 빈 체크리스트를 릴레이하지 마십시오
MortgageAppController.create() 자동 생성 지점: - Idempotency (#2) : findOwnedDraft를 통해 기존의 DRAFT를 다시 시작합니다. 더블 클릭 / 리로드 / 두 번째 탭 / 리트리에 중복 공백을 축소의. - Atomicity (#5) :...
Readiness 배너는 새로 고침 버튼과 빈 시장 이름을 표시하지 않습니다
MLOS 디폴트 리드 소스 읽기 배너에서 두 개의 후속 : - 새로 고침 (IconButton) 이제는 loadMlosReadiness(), 그래서 서핑 새로 만들어진 시장은 이미 탑재된 인스턴스로 재평가합니다. canDesignateDefault stale/contradictory 대...
Idempotent 차용기 자기 창조 초안 + deterministic 활동적인 납 시장 해결책
*********** memberId: 회원의 해결 기존 in-progress DRAFT 애플리케이션으로 반복된 차용기 자체 생성 (double-click / reload / second tab / client retry) 대신 이력서 duplicate 공백 신청을 minting. 앱만...
이메일이 설정되지 않을 때 설명; 문 compose
/messages inbox는 이전에 org 때 전체 쉘을 렌더링했습니다. 이메일 공급자가 없었다 또는 회원은 mailbox가 없었다, 조용히 모든 실패 API 호출. 이메일 보내기 usable이고, 그렇지 않다면, 왜 (대를 형성하지 않는 경우. mailbox)와 현재 회원이 자신의 ...
모든 유형 채팅 목록 + browser-tab 관심
Chats sub-tab 이제 회원, 그룹, 지원 및 소셜 대화 함께, 가장 존경하는 첫 번째, 멀티 선택 필터 (팀 회원 / 회원 / 사회 / 지원; 첫번째 두 사용 org의 사용자 정의 라벨). Team-Members vs Member는 counterpart memberType으로 ...
회원/지원/관계 세션에 따른 통합 채팅 피드
GET /api/media/sessions/chat 이제는 '카테고리' 필터 (chat, 지원, 사회; 과태 모두) 과 반환 하나 globally most-recent-first, 다각적 쿼리의 병합. 각 행은 나릅니다: - 세션타입(CHAT|SUPPORT|SOCIAL) + 회원[].m...
지원 + 소셜 채팅 세션에 대한 Paged 쿼리
통일 된 상호 작용 센터 채팅 목록은 모든 종류를 포함 할 수 있습니다 : - SUPPORT (TYPE ID=2) : 회원이 할당된 에이전트 또는 세션 requestor (또한 티켓 ID를 반환 + 행에 할당 된 에이전트 ID). - SOCIAL (TYPE ID=3) : 회원이 소유한 ...
끝 지도 전망 우두머리 활동 + callbacks
- 헤더 : 전화 (Work) / 전화 (Personal)로 분할 (회원이 등록되지 않은 경우 숨겨져 있음), 이메일은 엽니다. 작곡가, 텍스트 -> comms/texts, Note는 규칙과 blinks로 왼쪽으로 이동 참고는 마지막 재 할당 이후 배치됩니다. 작업 버튼 제거. - 상태...
내부 엔드포인트는 회원의 캘린더 이벤트를 만들 수 있습니다
POST /api/internal/calendar/events (X-Internal-Auth gated)는 회원을 해결합니다 -> user -> 1차 캘린더(기본값을 선택하면) 및 이벤트를 생성합니다. SecurityService가 회원 캘린더에 미러 리드 콜백에 사용됩니다.
리드 콜백 엔드포인트(schedule/list/resolve)
새로운 *********** 관제사 + 서비스: persists 콜백, 포스트 스케줄링/outcome 노트는 리드의 미디어 스트림으로, 이메일서비스를 통해 스케줄링 회원의 캘린더에 콜백을 미러링합니다. 내부 캘린더 엔드포인트 (best-effort).
LeadCallback entity, 상태 enum 및 저장소 추가
Backs the lead-view 콜백 기능: 유명한 콜백 레코드 (PENDING/CONTACTED/CANCELED)는 연약한 참고로 LeadUid를 열쇠로 합니다 이메일서비스 캘린더 이벤트.
MLOS default-lead-source 제어가 침묵적으로 떨어지는 대신 숨겨지은 이유
납품업자 제품 탭에서 "designate default lead product" 제어가 mortgage-vertical readiness에 gated — POS 활성화, 활성 MORTGAGE 상거래 시장, 그리고 RESIDENTIAL MORTGAGE 리드 마켓 — 그리고 현재 선택된 시...
공유lib dbNow()에 대한 재건 CAST 수정
빌드 시간에 clones kamo-shared-library와 CI를 트리거하기 위해 빈 커밋 *********** dbNow() CAST(지금() 타임스탬프) 수정을 선택합니다.
DbNow() 사용 CAST(지금() 타임스탬프), 이제()::timestamp
::timestamp shorthand는 Hibernate의 정체성 파서 (읽습니다)에 의해 mangled입니다 ':'라는 매개 변수 접두사로, 도는 ::timestamp로 :timestamp) -> 크롬DB 'at or near ":"' 구문 오류, 그래서 dbNow() 여전히 모든 ...
회원이 오픈한 그룹 채팅 세션 만들기Ids
ChatTool는 props.memberIds를 무시했습니다. 그룹이 빈으로 도착했습니다. userId 및 no sessionGuid, 그래서 1:1 createSession bailed 초기와 창은 세션을 얻지 못했습니다. 이제 memberIds가 ChatTool를 선물할 때 POST...
같은 대화에 대한 중복 채팅 팝업
Tool-window dedup은 단일 userId 키에 대해 정확히 일치 async-mirrored windowsRef, 그래서 같은 1:1 채팅 두 번 오픈: - 회원 행에서 userId는 id.toString() 의 정밀도로 truncated CockroachDB unique r...
Kamo-shared-library 권리 폭포 수정 (5f20d29)에 대한 재건
CI 복제 및 소스에서 kamo-shared-library 구축, 그래서이 빈 커밋 re-triggers layered 권리 해결책을 픽업하는 구조. 에 boots memberRightsBackfillService는 모든 회원의 적용 권리를 보유합니다. 올바른 폭포.
작업 제목 및 부서 편집자의 모든 활성화 응용 권한 그룹보기
JobTitleManager 및 DepartmentManager는 이제 두 권한 그룹을 렌더링했습니다. 일반 및 CRM — 그래서 *********** 권한은 보이지 않았고 SecurityRoleManager 및 회원 프로파일 편집기가 표시된 동안 uneditable 모든 그룹. 이제 ...