60s OTK TTL for meet windows, 독립 채팅/이메일은 백엔드에 차단하지 않는 초대
ROOT CAUSE : OTK는 10 초 TTL을 가지고 있습니다. 시간으로 kamo-meet 페이지 OTK를 검증하기 위해 모든 자산과 브랜딩/overrides.js ran을 로드했습니다. Redis → 401 → no session → no name → no JWT에서 이미 만료되었...
Config override + DOM mutation Observer를 통해 Properly lock display name
Name을 보장하는 3 층 접근은 정통한 사용자를 위해 잠깁니다: 1. LocalStorage 깃발 'kamo-meet-authenticated'는 OTK→JWT 리디렉션을 살아남습니다 2. 리디렉션 후, overrides window.config.readOnlyName=true 을 통...
기존 채팅 세션 API를 통해 채팅 초대를 보내, emailService에 multipart를 통해 이메일 초대
채팅 초대: POST /api/media/sessions/chat을 통해 채팅 세션을 생성/gets 그런 세션에서 텍스트 메시지로 회의 초대를 보냅니다. 사용 방법 ChatTool/ChatBox와 동일한 API 패턴. 이메일 초대: new /api/meet/invite-email ro...
Use getServerName() instead of getHeader(Host) for original host resolution
ForwardedHeaderFilter consumes X-Forwarded-Host and adapts getServerName() accordingly, while getHeader(Host) returns the raw HTTP Host which may be a K8s inter...
Lock display name via Meet의 네이티브 readOnly name config for 인증된 사용자
- Sidecar config.js는 이제 readOnlyName:true를 설정한다. 또는 페이지 URL에서 JWT (리더/코오키 헤더를 통해 탐지) - nginx는 config.js 요청에 대한 sidecar에 쿠키 및 Referer 헤더를 전달합니다. - 이 사용 Meets 내장 ...
Send chat invites to correct WebSocket topic /topic/chat/incoming/{memberId}
Was publishing to /topic/chat/member/{id} but kamo-internal subscribes to /topic/chat/incoming/{id}. Also fixed Member entity field access **************** inst...
모든 회의 필드를 전달 (sendChatInvite, sendEmailInvite, customMessage, roomAlias, JoinUrl) 백엔드
Next.js API 경로는 stripping sendChatInvite, sendEmailInvite, customMessage, and roomAlias — 오직 forwarding roomName 및 ExhibitMemberIds. 백엔드는 초대 깃발, roomAlias 없음 (약...
OTK 세션에서 Prosody JWT를 생성하고 적절한 moderator auth를 위해 ?jwt=로 리디렉션
지금 OTK 흐름: 1. 사이드카를 통해 OTK 유효성 검사 → 세션 (회원, displayName 등) 2. localStorage에 표시 이름 저장 3. 호출 /api/auth/jwt는 moderator=true를 가진 서명한 Prosody JWT를 생성하기 위하여 4. ?otk=x...
Org nav 색상을 전체 pre-meeting 왼쪽 열, 단지 도구 모음 스트립
Target .premeeting-screen (전체 높이 컨테이너) 및 그 내용 생성 된 클래스 이름 대신 패널 어린이. 또한 in-meeting 커버 툴박스 및 필름 스트립 사이드바.
앞으로 방문자 IP 및 사용자 - 정확한 계정 활동 로깅을 위해 백엔드
Next.js API 경로는 X-Forwarded-For, X-Real-IP 또는 전달되지 않았습니다. User-Agent 헤더를 Java 백엔드에 붙여넣기 위해서는 계정 활동을 로그아웃합니다. Next.js pod의 내부 IP 및 기본 fetch user-agent 대신 실제 웹 방문...
Use HTTP on port 80 for meet service URL to match other services
The HTTPS endpoint on 8443 causes SSL cert mismatch when routing through K8s internal DNS. All other services use HTTP on port 80.
직접 우회하는 대신 per-member 회의를 위한 MeetingDialog
두 개의 MemberItem (Interaction Center) 및 ChatBox (chat 도구 창) 지금 MeetingDialog를 대상 회원으로 사전 선택, 허용 사용자 룸 이름 및 toggle 채팅 / 이메일 초대 옵션을 설정하기 전에 회의 시작.
직접 MediaService 대신 APIService를 통해 Route meet config API
기존의 meet/create 경로는 forwardToApi (APIService)를 사용합니다. MediaService에 프록시. 새로운 config/background 노선을 따라야 합니다. 현재 인프라와 같은 패턴.
사전조인 화면에 인증된 사용자를 위한 Lock display name 입력
Authenticated member (OTK를 통해 도착)는 이름 사전 채우고 lock - 입력은 pointer-events와 readOnly에 설정된다. MutationObserver는 미팅 렌더링 후 잠금을 해제합니다. pre-join 스크린 동적인. Anonymous/guest ...
Config.js의 상대 BOSH / WS URL을 사용하여 OTK auth를 이름 사전 채우고, nav 색상에 대한 org CSS를로드하십시오
3개의 고침: 1. config.js BOSH URL은 클러스터 내부 주소에서 상대로 변경 /http-bind (nginx 프록시에서 Prosody). WebSocket은 호스트 헤더를 사용합니다. 2. 브랜딩/overrides.js 이제 URL params에서 OTK를 검증하고 세션을...
Add dnsPolicy ClusterFirstWithHostNet to JVB StatefulSets so hostNetwork pods can resolve cluster DNS
지금 채팅 후 새로운 탭 버튼을 아이콘 전용으로 제거, 중복 메모 링크를 제거
New Tab은 이제 Chat Now의 오른쪽에 위치한 아이콘 버튼입니다. NavTop에서 제거한 메모는 이미 NavPri에 있습니다.
Enable nginx SSI 및 복사 누락 된 HTML은 파일 (head.html, base.html, font.html, body.html, plugin.head.html)을 포함합니다
대회는 nginx Server Side를 사용하여 index.html을 구성합니다. 여러 부분 HTML 파일. SSI가 활성화되지 않고 파일을 포함합니다. 현재 페이지는 빈 어두운 화면으로 렌더링합니다.
KbArticle AI 가시성 필드에 명시된 @JsonProperty 표기
Jackson serializes/deserializes aiEnabled, aiVisibleToPublic, aiVisibleToMembers, aiVisibleToTeamMembers 정확한 필드 이름.
Infinite re-render loop in MeetingDialog는 기본 prop 배열 참조로 인한
UseEffect는 preSelectedMembers (과태 [])의 의존성으로, 모든 렌더링에 새로운 배열을 만들고 무한한 setState를 트리거 루프. 오픈 상태 전환을 추적하기 위해 ref를 사용하여 고정, 제거 unstable deps, 그리고 TextField 외부 새로 고침...
MeetingDialog에 MUI 7 호환성을 위한 SlotProps를 가진 deprecated InputProps를 대체하십시오
클라이언트 충돌을 방지하기 위해 MeetingDialog Autocomplete에 isOptionEqualToValue 및 null 안전 추가
지금 채팅 아이콘 화이트, 메시지 목록과 동기화 이메일 배지, 테마 색상 CSS 색상 혼합 사용
- NavTop: Change ForumIcon Color to white to match Chat Now 라벨 - MessageBrowser/MailButton: 좌표 WebSocket 이메일은 사용자 지정 이벤트를 통해 새로 고침하므로 배지 수는 메시지 목록과 동기화됩니다. - Fe...
Reference *** instead of non-existent turn-secret in Prosody deployment
UseMeeting을 단순화하고 OTK를 생성하고 직접 미팅 창을 엽니 다
Backend meeting API endpoints 아직 존재하지 않습니다 - 회의 기록 건너뛰기 지금 만들기. 모든 클릭 핸들러에 오류 처리 추가 클라이언트 측 충돌.
Add MEET to FeaturesManager icon/category maps and guard ChatBox Meet button with isMeet check
빌드 시스템을 만들고 .dockerignore를 Meet Meet Docker 빌드에 추가하십시오
Meet Meet use make/webpack, npm run build가 아닙니다. 추가 --legacy-peer-deps .dockerignore는 Node modules를 제외한다. build context에서.
가시 체크 박스 및 기차 AI toggle 독립적 인 제어
Visibility (멤버, 팀 멤버, 공개) 문서에 액세스 할 수있는 제어 KB UI에서 기차 AI는 RAG 지수에 대한 별도의 토글이며, 부모가 아닙니다. 가시 체크 박스.
Preserve upstream X-Forwarded-Host instead of overwriting with own Host
When an upstream proxy (Next.js) sets X-Forwarded-Host to the browser's original host, APIService now preserves it instead of overwriting with its own Host head...
API 라우팅에 대한 내부 K8s URL을 사용하여 비 KamoCRM orgs에 대한 아바타 업로드를 수정하십시오
API 프록시는 외부 URL(https://api.{domain})을 모든 org에 컴파일하고 있었습니다. KamoCRM에서만 해결됩니다. 이제 직접 API SERVICE URL env var를 사용 내부 여정. APIService에서 upstream X-Forwarded-Host를 보...
Re-fetch notes after create/update to show decrypted content in preview
The backend returns encrypted content/contentPlain in POST/PUT responses, causing NoteCard previews to display ciphertext until page refresh. Now re-fetches via...
Disable all auto-link behaviors in KB editor to prevent paste-as-hyperlink bug
The linkExtension singleton from @lexkit/editor retains internal paste handler state across component remounts. Disabling autoLinkUrls, autoLinkText, and linkSe...
Prevent KB editor link extension state leaking between article creates
Move Lexical extensions from module-level singletons into a factory function called via useMemo per component mount, so each new article gets fresh extension in...