일러스트 래퍼는 높이가 없었다 — 각 층은 0px 스트립으로 렌더링
JourneyIllustration root div는 `relative overflow-hidden`이 아니었다. 지정된 차원. 그것의 부모는 절대 inset-0를 통해 치수를 잽니다, 그러나 상대 어린이 만 자동 높이 차단했다 - 그리고 모든 후반 이후 절대적 위치, 아무런 흐름 내용...
Sky no longer washes to white — golden-hour default + tuned sky shader
Sky was reading white because: - toneMappingExposure 1.05 + Bloom@0.45 with luminanceThreshold 0.72 was blowing the bright procedural sky into the bloom buffe...
3D 세계 (/journey/persona 그 후 /journey)의 우체국 빌러 토지, 유산 MUI 마법사
보상 게이트 + 자동 이력서는 /journey/persona?app=<uid>, /journey?app=...&persona=..., 그리고 /journey에 /journey에 /journey에 /journey에 /journey에 /journey에 /apply/property 마법사를 ...
Welcome-back gate는 진정한 반송 방문자 만 트리거해야합니다
Brand-new visitors was 타격 the welcome-back gate 그만큼 순간 그들 hasPriorProgress가 현재로 재조정되었기 때문에 이름을 입력 state on every render — 그래서 곧 상태. 이름 * 이름이 설정되었습니다. 대화의 중간에 화재...
과태 흐름 + 견적에 isDone-only 자동 승인 제거
예상치 못한 화면에 착륙한 사용자의 실제 버그 "시작": 흐름 엔진은 DONE을 반환합니다. 유량은 null입니다. (흐름 선택 없음 → 질문 목록 없음 → 반복은 아무것도 → DONE)를 수확합니다. auto-advance 상태 `(isDone ||최소한도용)` 톱 DONE과 set ...
강제 역학 그래서 신선한 배치는 캐시 된 HTML에 의해 마스크되지 않습니다
홈페이지는 statically prerendered (○ / 빌드 출력), 이는 같은 HTML을 의미한다 - 특정 펑크에 내장 된 참조 hashes — indefinitely 에서 브라우저가 재효율 될 때까지. 후 그 배가 고정 (예를 들면, 환영 뒤 문, "시작" 링크), 방문자가 자...
Welcome-back gate + 항상 사용 가능한 "시작"
Persisted IDB 상태와 방문자가 곧 떨어졌다 어떤 단계로 그들은 마지막 도달 - 견적을 포함 화면, 즉 ( 대화 형 리드 업없이) 혼란으로 읽습니다. 따뜻한 대화를 결코 본 적이 없는 사람을 위한 숫자 덤프. 이 변화: 1. persistence 저장소에 resetAndCl...
Kamomarketing 패턴이있는 Align Dockerfile (노드 : 24-alpine, 2 단계)
CI 빌드는 npm 10.8 (bundled) Node 20)는 Next.js의 @swc/helpers 피어Dep (>=0.5.17)를 0.5.21로 해결합니다. 잠금 파일 (현지 npm 11 / 노드 24에서 생성) 0.5.15 기록 다음의 `dependencies` 블록에서. 두 n...
첨부 파일 + 인라인 이미지 fetches를 위한 우회 서비스 노동자
<a download> 첨부 파일 행 대신 파일로 이동 다운로드. 이메일 서비스 노동자는 각을 제외하고 /api/email/* 이진 스트림을 포함하여, 응답을 반환 responseWith — Chrome는 SW 합성 응답을 다르게 취급합니다 download-attribute clicks...
Resolve cid: 서명 플래너를 중지하는 시간을 절약하는 인라인 이미지
Cid: rewriting는 post-commit useEffect에서 일어났습니다, 그래서 sanitized HTML은 리터럴 src="cid:..."과 각 img를 mutated effect로 DOM을 명중합니다. 다음 진드기에. 안HTML (예 : 캐시 대 신선 body fetch...
Subdomain-tenant org 버킷을 자신의 MinIO 폴더로 해결
getThemePath()는 그들 모두를 위해 apex+tld에 hostname을 감소시켰습니다 주인과 물통 폴더, 그래서 subdomain tenants 같이 gnosia.demo.kamocrm.com 대신 부모 apex의 브랜딩을로드 그들의 자신의. 이제 가장 깊은 별칭 (login...
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...
