번역 수정 — 수동 overrides + 전체 delta 번역
Nav/UI 둘 다 엔진을 위한 수동 overrides는 지속적으로 실패합니다: - nav.home, nav.company, nav.roadmap, nav.changeLog, nav.legal, , nav.login, nav.documentation, footer 동등한 것, Cooki...
TXT 도메인 소유권 기록 보기 DNS 설정 UI
- DomainData/DnsStatus: 검증 토큰, 소유권확인, 유형 필드 추가 - AliasStatusTable: 사본 단추를 가진 CNAME 테이블의 위 TxtOwnershipCard를 보여주십시오, indigo pending/녹색 확인 스타일링; 필터 TXT에서 CNAME 확인...
번역이 동일 소스 텍스트일 때 다음 제공 업체로 가을
Bergamot는 단일 단어 nav를 위해 unchanged 소스 텍스트를 반환했습니다. 항목, 약어 구문 (API, CRM) 및 합성 단어 (Change Log) 성공보고 (fallback=0). 현재 라우터는 동일한 값을 취급합니다. 다음 공급자를 시도하는 신호로 결과 (예 : Li...
Generate TXT verification token on domain create, check in verify-dns
- createDomain: generate 32-char UUID token and store via setVerificationToken - verifyDns: check _kamo-verify TXT record for kamo-site-verification=<token> - T...
Add verification_token and ownership_verified columns to org_domains
DNS TXT 레코드를 통해 도메인 소유권 확인 추가
- OrgDomain : 검증 토큰 및 소유권 인증 필드 추가 - DomainService: setVerificationToken() 및 setOwnershipVerified() 추가 - DomainDTO : API 응답에서 검증 토큰 및 소유권 검증 - DnsStatusDTO : CN...
Update required aliases — add app, capcha, docs, sign; remove legacy
모든 나머지 hardcoded UI 문자열 사이트 전체를 번역
- PreviewBanner, PublicChatWidget, AiChatPanel, LiveSupportPanel, ExitIntentModal, FloatingSupportWidget은 이제 useTranslations()를 사용합니다. - 미리 추가, 채팅, ExitModal, s...
델타 번역 엔진 + 모든 hardcoded UI 문자열을 i18n에 와이어
번역 시스템: - 번역.ts 이제 delta 모드에서 작동 - 누락 된 키 만 여전히 동일한 영어는 API로 전송됩니다; 기존의 번역 키 보존되지 않음 표준 실행에 80-95%의 CI 번역 시간을 잘라. - 추가 --force 플래그는 모든 키를 다시 번역 (품질 패스에 적합). - C...
로컬 전환 페이지의 Chrome 자동 번역 팝업
<html>과 <meta name="google" content="notranslate">로 번역하십시오. 그래서 Chrome은 사용자가 이미 의도적으로 페이지를 번역 할 제공하지 않습니다. 다른 언어로 전환.
Bound translation concurrency to 3 threads to prevent DB pool exhaustion
Unbounded @Async (SimpleAsyncTaskExecutor) created 50 threads simultaneously when the retry scheduler fired, each opening a DB transaction and draining HikariCP...
Three bugs preventing changelog translations from being saved
1. **************** was discarding events because handleWebhook() had no @Transactional — save + publishEvent() ran outside any transaction. Add @Transact...
Query CommitLogs with LEFT JOIN so Zero-translation 레코드는 리트리에 의해 잡혀
CommitLogTranslation에서 선택한 오래된 쿼리 - 로그를 no로 번역은 전혀 보이지 않았습니다. CommitLog에서 LEFT 가입 그래서 HAVING COUNT < 예상 항목에는 0 개의 번역이 포함되어 있습니다. 또한 큰 allIds IN 절을 제거하고 대신 페이지를 ...
/setup/dns 페이지와 /network에 도메인 설정 흐름 추가
- 새로운 /setup/dns 페이지 2단계 흐름: 도메인 입력 후 DNS 60초 자동 융자 및 SSL 확인을 통한 검증 - ManualDnsGuide: 모든 단계별 DNS 지침 기록적인 이름과 표적 가치를 위한 사본 단추를 가진 기술 수준 - AliasStatusTable: 살아있는 ...
Add /setup/dns backend — one-domain enforcement, SSL probe, new aliases
- Enforce one custom domain per org in POST /api/security/domains - Add capcha, docs, sign to standard aliases; remove legacy aliases - Update verify-dns to tra...
Add ssl_confirmed and ssl_confirmed_at columns to org_domains
Adds idempotent ALTER TABLE statements to provision the two new columns needed for DNS setup SSL confirmation tracking.
SslConfirmed/sslConfirmedAt 필드를 OrgDomain 및 DomainDTO에 추가하십시오
OrgDomain entity 및 DomainDTO에 두 가지 새로운 필드를 추가하여 SSL을 추적합니다. auto-cert 서비스 문제점 후에 증명서 확인 상태 인증서. 또한 SetSslConfirmed()를 DomainService에 추가합니다.
Apply word replacement at translation time, not ingestion
Original text is preserved in the DB so that adding a new rule and re-triggering translation is all that is needed to update existing records. Changes: - Chang...
클라이언트 측 changelog 검열 제거 — now handled by backend
Word 교체 및 비밀 중복 변경으로 이동 ChangelogSanitization (주) (SecurityService) 그래서 위생은 DB 저장 및 번역 전에 발생합니다. 더 이상 텍스트를 터치 할 필요가 없습니다.
Move changelog word replacement to backend before translation
Text replacements (Docs→Docs, Meet→Meet, etc.) and secret name redaction (K8s secret names→***) were previously applied client-side in ChangelogClient.tsx, mean...
빌링 탭에서 빈 API 응답 및 우아한 degradation 처리
- billingApi get/put helpers 이제 안전하게 빈 응답 몸을 처리 대신 res.json()에 빈 입력 - PlansBillingTab LoadData는 .catch로 모든 청구 API 호출을 포장합니다. 그래서 개별 엔드포인트 실패는 전체 페이지를 깨지지 않습니다 —...
Check TeamMember.isOrganizationOwner flag for owner detection in my-networks endpoint
The previous check only looked at org.getOwner() (user_id_owner column) which can be null for existing orgs. The authoritative owner flag lives on the TeamMembe...
Resolve org/member context from *** 청구 프록시 세션
BillingService 컨트롤러는 X-Org-Id 및 X-Member-Id 헤더를 요구합니다. 직접 호출 할 때 (APIService를 우회), 이 설정되지 않았습니다. 이제 Next.js 프록시는 *** 쿠키를 읽고 세션을 찾습니다. Redis, orgID 및 memberID를 추...
네트워크 페이지의 org/member ID에 대한 문자열 유형을 사용하여 CockroachDB unique rowid() 정밀도를 처리하십시오
APIService를 통해 대신 k8s DNS를 통해 직접 청구
Next.js 서버 측 프록시는 이제 BillingService를 호출 *************** 직접 건너뛰기 APIService를 통한 불필요한 hop. 사용 BILLING SERVICE URL env var k8s 내부 DNS를 기본으로 합니다.
다음을 추가하십시오.js API 프록시 경로 /api/billing/*
청구 API 클라이언트는 /api/billing/*를 상대 URL로 호출했습니다. APIService Gateway 대신 Next.js 서버를 명중합니다. 지원하다 a catch-all 프록시 경로 (커머스 마켓과 같은 패턴) 그 전달 forwardToApi → APIService → ...
저장을 대체하십시오 양 slider를 가진 add-on toggle
추가 저장은 사용 기반 ($ 4 / 25GB 블록)이며, 단순 / 오프 추가 기능 슬라이더를 가진 toggle 스위치를 (25GB에 있는 0-1000GB 대체했습니다 단계)와 숫자 입력 필드. Cost 고장은 이제 저장을 보여줍니다. 별도의 라인 아이템. PlanSelection에는 추...
Include parent org in /org/domain response
The getOrganizationByDomain endpoint manually builds a response map but never included the parent organization reference. This prevented the frontend from knowi...
부모와 부모를 OrgProviderProps 유형에 추가하십시오
조직은 인터페이스가 부모Id 및 부모 필드를 누락했습니다. TypeScript 컴파일 중에 떨어뜨리기 때문에 백엔드는 그들을 보냅니다. 이 예방 된 조직.hasParent는 이제까지 사실, 모든 아이 orgs에 대한 계획 및 청구 탭을 숨겨.
Wire BillingManager 및 RelationshipManager는 실제 백엔드에
BillingManager (계정 청구 탭): - 실제 Stripe-backed 결제 방법을 사용하여 100 % 로컬 상태의 모종을 대체 billingApi를 통해 관리 - 마운트에 GET /api/billing/payment-methods에서 지불 방법 - 지불 방법 흐름을 추가 cr...
Purge incomplete model directories in init container
The service crashes on startup if it finds a directory in /models that has missing or partial model files. Add a sweep at init start that removes any directory ...
