변경 로그
무슨 일이야?
플랫폼에 대한 모든 개선 사항, 그것이 선적.
· kamo-internal
TXT 도메인 소유권 기록 보기 DNS 설정 UI
- DomainData/DnsStatus: 검증 토큰, 소유권확인, 유형 필드 추가 - AliasStatusTable: 사본 단추를 가진 CNAME 테이블의 위 TxtOwnershipCard를 보여주십시오, indigo pending/녹색 확인 스타일링; 필터 TXT에서 CNAME 확인된 수 - ManualDnsGuide: 인증 토큰 프로; 단계 3a로 TXT 레코드를 보여줍니다 CNAME 레코드 전에 (Step 3b) 인라인 복사 버튼 - DnsProgressView: ManualDnsGuide에 domain.verificationToken을 전달합니다
· SecurityService
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> - TXT verification counts toward requiredTotal/requiredVerified - Once ownership_verified=true, cache result so member can remove TXT record - CNAME statuses now include type="CNAME"; TXT status includes type="TXT"
· InitializerService
Add verification_token and ownership_verified columns to org_domains
· kamo-shared-library
DNS TXT 레코드를 통해 도메인 소유권 확인 추가
- OrgDomain : 검증 토큰 및 소유권 인증 필드 추가 - DomainService: setVerificationToken() 및 setOwnershipVerified() 추가 - DomainDTO : API 응답에서 검증 토큰 및 소유권 검증 - DnsStatusDTO : CNAME 상태에서 TXT를 구별하는 유형 필드를 추가하십시오
· kamo-internal
Sticky header, 업데이트 별칭, 항상 보이지 않는 일반 영어 DNS 가이드
· SecurityService
Update required aliases — add app, capcha, docs, sign; remove legacy
· kamo-internal
항상 소유자를위한 DNS 버튼을 보여, 변경 도메인 흐름을 추가
· kamo-internal
Cross-org 도메인 관리 설정/dns 흐름을 통해 orgId
· SecurityService
Allow cross-org domain management by verifying user ownership
· kamo-internal
/setup/dns 페이지와 /network에 도메인 설정 흐름 추가
- 새로운 /setup/dns 페이지 2단계 흐름: 도메인 입력 후 DNS 60초 자동 융자 및 SSL 확인을 통한 검증 - ManualDnsGuide: 모든 단계별 DNS 지침 기록적인 이름과 표적 가치를 위한 사본 단추를 가진 기술 수준 - AliasStatusTable: 살아있는 per-alias CNAME 검증 상태와 인증 / 종료 / 오류 칩 및 옵션 배지 www - DnsProgressView: 단계 지표 (DNS → SSL → 준비), 진행 막대, countdown 타이머, 지금 단추를, 성공 상태에 자동 배정하십시오 - DomainEntryForm: 도메인 입력 www toggle 및 일반 언어 UX - /network 페이지: unconfirmed 관례를 가진 orgs를 위한 입력 단추를 해제하십시오 Domain; show Setup Domain button for owner needing configuration
· SecurityService
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 track required vs optional CNAMEs, auto-trigger HTTP seeds to Traefik logs when all required CNAMEs verified, and HTTPS-probe for SSL confirmation (marks sslConfirmed on parent domain) - Add SslProbeService with triggerHttpSeed() and probeHttps() methods - Expose domainSetupComplete per org in GET /api/security/org/my-networks
· InitializerService
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.
· kamo-shared-library
SslConfirmed/sslConfirmedAt 필드를 OrgDomain 및 DomainDTO에 추가하십시오
OrgDomain entity 및 DomainDTO에 두 가지 새로운 필드를 추가하여 SSL을 추적합니다. auto-cert 서비스 문제점 후에 증명서 확인 상태 인증서. 또한 SetSslConfirmed()를 DomainService에 추가합니다.
· kamo-marketing
클라이언트 측 changelog 검열 제거 — now handled by backend
Word 교체 및 비밀 중복 변경으로 이동 ChangelogSanitization (주) (SecurityService) 그래서 위생은 DB 저장 및 번역 전에 발생합니다. 더 이상 텍스트를 터치 할 필요가 없습니다.
· SecurityService
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, meaning the raw sensitive terms were stored in the database and transmitted to the translation service — so translated records could expose internal names in other languages. Both lists are now applied in ChangelogSanitizationService before the commit is persisted. replaceText() covers titles; sanitize() covers descriptions (strip-patterns run first, then replaceText). The frontend no longer needs to do any censoring.
· kamo-internal
저장을 대체하십시오 양 slider를 가진 add-on toggle
추가 저장은 사용 기반 ($ 4 / 25GB 블록)이며, 단순 / 오프 추가 기능 슬라이더를 가진 toggle 스위치를 (25GB에 있는 0-1000GB 대체했습니다 단계)와 숫자 입력 필드. Cost 고장은 이제 저장을 보여줍니다. 별도의 라인 아이템. PlanSelection에는 추가 저장GB가 포함되어 있습니다. 따라서 미터로 재 계산을 설정하는 백엔드.
· kamo-internal
Wire BillingManager 및 RelationshipManager는 실제 백엔드에
BillingManager (계정 청구 탭): - 실제 Stripe-backed 결제 방법을 사용하여 100 % 로컬 상태의 모종을 대체 billingApi를 통해 관리 - 마운트에 GET /api/billing/payment-methods에서 지불 방법 - 지불 방법 흐름을 추가 createSetupIntent → StripeProvider + PaymentMethodForm → 확인CardSetup → 첨부PaymentMethod (필수) PlansBillingTab에 흐르는) - 최적화된 최적화를 가진 ***********를 통해 기본 설정 스타 아이콘과 행당 in-flight 스피너 - 확인을 가진 billingApi.deletePaymentMethod를 통해 삭제Dialog; default card delete는 tooltip로 차단됩니다. - 기존의 카드 브랜드 아이콘(Visa/Mastercard/Amex/Discover) SVG 자산; 알 수없는 브랜드를 위한 일반적인 CreditCard 아이콘 fallback - Skeleton 선적, 재try, Snackbar 피드백을 가진 단면도 과실 RelationshipManager (회원 관계 탭): - GET /api/security/org/my-networks를 가진 대체된 빈 국부적으로 국가 - 네트워크 분류: isOwner=false → 부모 네트워크 (사용자가 속임수), isOwner=true → Child Networks (사용자 관리) - Avatar 초기, org 제목, type/domain 메타 및 역할 칩 표시 - org 도메인에 프로필 작업 링크 가능 - Tooltip (org admin를 통해 관리)에 대한 액세스 권한 동작 - 요약 칩은 살아있는 부모/어린이 조사를 보여줍니다 - Add/remove는 의도적으로 읽기 전용입니다; 정보 경고는 네트워크에 지시합니다 관계 관리 페이지 (CRUD 엔드포인트가 없습니다)
· KlusterServices
Restore bergamot with working model sources and correct image
- replicas: 1 - Init container (alpine): downloads 4 pairs from data.statmt.org (tarballs for enes/enfr/ende/enpl) and 2 from firefox-translations-models GitHub LFS (individual .gz files for enru/enar) - Image: mozilla/translation-service (proper HTTP server, was WASM library) - Port: 8080 via PORT env var (service defaults to 8000) - Health probes: TCP socket (service has no /health HTTP endpoint) - Remaining 7 locales (pt/it/uk/tr/ro/id/vi) fall through to LibreTranslate
· kamo-internal
라이브 KamoCRM 구독 대시보드와 함께 stats 페이지를 교체
재건 /settings/account?tab=stats 완전히 유선, 읽기 전용 통찰력 대시보드 BillingService로 병렬 통화로 모든 모성 데이터를 대체 기존 billingApi 클라이언트. 모델 번호: - 최고 2col 그리드 : 계획 개요 카드 (플랜 이름, 상태 배지, 좌석 수, 청구주기, 기간, 취소 경고, 기능 목록) + 자주 묻는 질문 카드 (다음 청구 금액, 단가 가격, 활성 애드온, 신용 균형, 지불 방법 마지막 4) - 전체 폭 사용 섹션 : 미터 진행 카드 (이메일 전송, 이메일 저장, 파일 저장, 문서) 컬러 코딩된 진행 막대로 계획 기능 제한에서 - 70 % / 90 % 임계 값의 녹색 / 워닝 / 오류 - 전폭 송장 기록표: 송장 번호, 기간, 상태 칩, subtotal/tax/total의 PDF 다운로드 연결; 20까지 가장 최근의 청구서 데이터: getCurrentSubscription, getAvailablePlans, getCurrentUsage, getInvoices, getCreditBalance, getPaymentMethods - 모든 via Promise.all 옵션 정보 그래서 각 단면도는 과실에 자주적으로 degrades. MUI Skeleton 장전기 당 fetching 동안 섹션.
· kamo-internal
계획 흐름 끝을 선택하십시오
- PlansBillingTab 대화 상자로 Wire PlanCalculator (장소 홀더) - 페이지 부하에 청구 API에서 Fetch 가능 계획 - 핸들 플랜 제출 : 새로운 가입 또는 기존 업데이트 - subscribing의 앞에 지불 방법 (결제를 추가하는 간접) - 제출 중에 Stripe 처리 메시지로 로딩 상태 표시 - 계산기에 플랜 컨텍스트 (현재 계획, 사이클, 좌석, 애드온) - 대신 clientSecret을 수락하기 위해 PaymentMethodForm 수정 Stripe Elements 내부 접근
· kamo-internal
루트 KamoCRM org에 대한 계획 및 청구 탭 숨기기
KamoCRM org 소유자는 비용없이 모든 것을 가지고 있습니다. - 그들은해야한다 청구 탭을 볼 수 없습니다. 탭은 현재 상태 렌더링 만 아이 조직의 경우 (조직.hasParent는 true). 초등학생 org 소유자는 자신의 org의 청구를 볼 수 있습니다; 회원은 청구를 참조하여 delegation 설정.
· SecurityService
BillingService 추가하기
· kamo-internal
플랫폼에서 Stripe 청구 시스템을 통합
- 새로운 billingApi.ts 클라이언트 모든 청구서에 대한 전체 TypeScript 유형 endpoints (subscriptions, 지불 방법, 송장, 신용, 사용, 구성, 관리자) - 새로운 줄무늬 성분: StripeProvider, PaymentMethodForm, 풀 비용 고장, 볼륨 할인 및 번들이있는 PlanCalculator - Rewrite PlansBillingTab 실제 줄무늬 통합 : 계획 관리, Stripe Elements 지불 방법, 송장 역사, 신용 균형, 사용법 미터로 재는, 위임 delegation 구성, 팀 일원 청구 상태 - 계획 기반 조명이있는 Update FeaturesManager : 잠금 아이콘 및 업그레이드 현재 구독 플랜에 포함되지 않은 기능에 대한 CTA - 계정 설정에서 청구 탭 제거 (회원 페이지로 이동) - @stripe/stripe-js 및 @stripe/react-stripe-js 설치
· BillingService
Initial BillingService — Stripe-integrated billing for KamoCRM
Complete Spring Boot service for managing KamoCRM billing via Stripe: - Stripe Customer, Subscription, PaymentMethod, Invoice lifecycle management - Credit system with ledger auditing (Stripe Customer Balance) - Usage metering for KamoMail and DocManager (daily cron sync to Stripe) - Billing delegation (ORG_PAYS_ALL / MEMBERS_PAY_OWN modes) - Configurable delinquency enforcement (SOFT_LOCK, HARD_LOCK, OWNER_FALLBACK) - Stripe webhook processing for real-time state sync - Stripe Price/Product auto-creation from subscription catalog - Full REST API: customers, subscriptions, payment methods, invoices, credits, usage, config, admin endpoints - K8s deployment manifests + Forgejo CI/CD pipeline - Internal-only service (no IngressRoute), accessed via APIService gateway
· APIService
Add Stripe webhook forwarding and billing API gateway routing
- POST /api/billing/webhooks/stripe receives Stripe webhooks and forwards to BillingService with Stripe-Signature header preserved - /api/billing/** gateway routes proxy authenticated billing API calls to BillingService through the existing forward() mechanism - Adds billing.service.url and stripe.webhook.secret configuration - Adds stripe-webhook-secret k8s secret reference
· InitializerService
Add billing config initialization to KamoCRMPricingLoader
Seeds a default BillingConfig (ORG_PAYS_ALL, SOFT_LOCK, 7-day grace) for the KamoCRM organization during pricing loader startup. Supports the new Stripe billing system.
· kamo-shared-library
Stripe 통합에 대한 청구 entities 및 저장소 추가
새로운 패키지 *********** with 9 entities (BillingCustomer, BillingSubscription, 빌링페이먼트 방법, BillingInvoice, BillingCredit, BillingCreditLedger, BillingConfig, BillingUsageSnapshot, BillingStripePriceMapping) 및 9 대응 JPA 저장소. 이 entities 거울 줄무늬 국가는 현지으로 새로운 KamoCRM 청구 시스템.
· kamo-marketing
모든 사이트 맵에 /calculator 및 /pricing/offer 추가; i18n HTML 사이트 맵 라벨
- app/sitemap.ts: /pricing/offer를 추가하고 /calculator는 locale alternates를 가진 항목 - app/api/sitemap/route.ts: 가격 계산기 및 특별 제안 항목 추가 - sitemapClient.tsx: t()에 있는 staticSections를 모든 labels/descriptions로 이동합니다. 제품 섹션에서 계산기 링크를 추가 - message/en.json: 38개의 새로운 사이트 맵 링크 라벨/문자 키 추가
· kamo-marketing
제품, 블로그, 가격, 데모, 연락처, 계산기에서 남아있는 신체 문자열을 완전히 추출
· kamo-marketing
기능, 약, 가정에서 몸 끈을 완전히 추출

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