உள்ளடக்கத்திற்குச் செல்லவும்
KAMOUniverse

மாற்று பதிவேடு

என்ன புதிது.

அது கப்பல்கள் போல், தளத்தில் ஒவ்வொரு மேம்பாடு.

  1. · kamo-internal

    Web Chat Integration tab — list, create, snippet (BFF + UI)

    Phase 2 core of the Web Chat Integration settings tab: BFF routes proxying to the Phase-1a MediaService CRUD, a typed client, and the /settings/features/chat tab where an org lists integrations, creates one (name + required website origins + AI/Support modes), and gets the raw site key + embeddable snippet once. Design customizer and readiness checklist are later phases.

  2. · kamo-register

    Kamo-register honors software auth logo + name

    - DynamicMetaLoader: read software identity + auth selectors from config.json, resolve tab title, persist auth logo/name state to sessionStorage - brand.ts + ThemeLogo: register logos auto-follow the auth-logo identity (reactive) - useAuthName: register name text (landing + flow) follows the auth-name identity, reactive on theme config load; falls back to company

  3. · kamo-login

    Kamo-login honors software auth logo + tab title

    - DynamicMetaLoader: read software identity + auth selectors from config.json, set tab title from resolved name (authNameBrandSource), persist auth-logo state to sessionStorage - brand.ts + ThemeLogo: login logos auto-follow the auth-logo identity (company/software), re-resolved on theme config load; no call-site changes needed

  4. · kamo-internal

    LabelManager software identity UI + internal tab title

    - Company Info: software name/short-name + login/register name + tab-title selectors - Branding: software full/simple logo uploads, override toggles, and per-surface identity selectors (watermark, navpri, login/register logos) - forced-legal surfaces communicated as always-company (documents/email/invoices/etc.) - layout: internal browser tab title resolves via internalTabBrandSource

  5. · kamo-internal

    3-stage org onboarding guidance (create → finish DNS → enter)

    Generalize the first-org hero into a single stage-aware guidance panel keyed on the member's owned-org count + DNS status (from /api/security/org/my-networks): create — owns no child org → launch first white-label org (/network/create) dns — owns 1, DNS not verified → finish domain setup (/setup/dns?orgId=..) enter — owns 1, DNS complete → enter it (enter-as OTK → internal.<domain>) Once they own a second org, no panel shows — they know the ropes. DNS-pending mirrors the network page rule exactly (custom domain && domainSetupComplete===false; a *.kamocrm.com org needs no DNS). Each stage gets its own accent family (people/work/crm), icon and copy; CTA is a link for create/dns and an async enter action for the ready stage. Fails safe (no panel) on any fetch error.

  6. · kamo-internal

    Dual company/software resolver + delivery + consumption

    - Organization.ts: deliver software identity + per-surface selectors via OrgContext - brand.ts: **************** (+ vitest, 8 cases) - ThemeLogo: logoSoftware/logoFullSoftware variants - NavPri: navpri logo + text follow the Internal Software Logo selector - BackgroundWatermark + Backdrop: watermark honors software identity (both paths)

  7. · SecurityService

    Software logo upload types + config.json bake

    - uploadLogo: explicit object-key switch **************** with rejecting default so a software upload can never clobber the company logo.svg - copyFolder: preserve uploaded software logos on template re-copy - config.json: bake software identity + auth-surface selectors for login/register - tests: UploadLogoObjectKeyTest, buildConfigJson software cases

  8. · kamo-shared-library

    Add software white-label branding columns to Organization

  9. · kamo-shared-library

    Persist software branding fields via patchOrganization whitelist

  10. · kamo-internal

    First-org CTA hero for members on the platform org

    Show an onboarding hero at the top of the home launchpad inviting a KamoCRM-platform member (not a team member) who hasn't yet created a child org to spin up their first white-label organization. A prominent CTA button and an inline 'click here' link both route to /network/create, and the copy points to the 'My {branches}' nav above. Gated on userInfo.memberType === MEMBER + organization.isTopLevel; stays hidden unless /api/security/org/my-networks confirms they own no child org, and fails safe (hidden) on any fetch error. Follows the Instrument Panel design language (people accent, kglass, operator-label, house easing, reduced-motion-gated). Strings under home.firstOrg.

  11. · VOIPService

    TURN-REST credentials endpoint for the mobile softphone

    GET /api/voip/turn/credentials mints ephemeral coturn creds (HMAC-SHA1 over "<expiry>:<memberId>" with the shared static-auth-secret) so native/cellular WebRTC can relay through 47.181.8.84:3478. Auth via the same X-***-Token the SIP endpoint uses; returns configured:false (STUN-only) when the secret is absent. Wires KAMO_TURN_SECRET from the existing *** (optional).

  12. · SecurityService

    Expose per-org primaryColor + logo URLs on /my-networks

    Each org row now carries primaryColor (Organization.colors.colorPri, '#'-prefixed to match config.json) and derived logoUrl/logoSimpleUrl (theme.<domain>/public/ logos and per-org hex-head border colors.

  13. · MediaService

    Snapshot web-chat integration id on support visitor + ticket

    Resolves the WebChatIntegration by creatingKeyHash (enabled-filtered, consistent with bootstrap()/AI-prompt resolution) once in createSupportSession and stamps its id onto both PublicChatVisitor and SupportTicket for per-website attribution. Null/blank keyHash or no matching enabled integration leaves the columns null.

  14. · AIService

    Per-integration public AI prompt + session attribution

    Upgrade the public-chat system-prompt waterfall from per-org to per-integration: PublicAiChatController now reads the X-Public-Chat-Key-Hash header (nullable) forwarded by APIService and passes it to **************** which resolves the WebChatIntegration by hash and prefers its aiSystemPrompt over the AiOrgSettings default, falling back to the generic prompt. The resolved AiChatSession is also stamped with webChatIntegrationId for stable attribution that survives key rotation. Extracted the waterfall into a static, unit-tested resolvePrompt helper (integration-wins / org-fallback / generic-fallback / blank handling).

  15. · APIService

    GET /api/public-chat/bootstrap gateway route

    Add bootstrap endpoint that reuses the existing proxyWithAuth pipeline (key validation + opt-in origin + PUBLIC_CHAT scope + rate-limit + X-Public-Chat-Key-Hash) and proxies to the MediaService bootstrap endpoint.

  16. · MediaService

    Public-chat bootstrap config resolver

    Adds an internal GET **************** that resolves a WebChatIntegration by X-Public-Chat-Key-Hash and returns its resolved design/behavior config (default-filled via WebChatDefaultConfig.merge so a key with no integration row still renders like today's widget). Falls back to the active PublicChatApiKey's org when no integration exists; 404s when the key hash doesn't resolve at all.

  17. · MediaService

    WebChatIntegration CRUD (mints key + integration, org-scoped)

    Org-facing management API for the Phase-2 web-chat settings tab. On create, mints the underlying PublicChatApiKey (same key-gen approach as PublicChatKeyController) alongside the WebChatIntegration row and returns the raw key once. list/get/update/delete are org-ownership checked; update busts the (Task-5) bootstrap cache when designConfig or enabled changes.

  18. · kamo-shared-library

    Add WEB_CHAT_INTEGRATION_ID attribution columns to visitor/ticket/ai-session

  19. · kamo-shared-library

    WebChatIntegration entity + repo + DTO + default design config

  20. · kamo-internal

    Add "Access Copilot Mobile App" entry points on home + NavPri

    Both surfaces dispatch an `open-interaction-center` event that NavTop listens for to open the Interaction Center on the Setup Mobile App tab. Home shows a labeled pill under the wallpaper controls; NavPri shows a logo icon below the trial pill (label when expanded, tooltip when collapsed). Both gated by the ALLOW_MOBILE_ACCESS right.

  21. · kamo-internal

    Password-gate the QR, single-line tab, logo-left header, 10-min code

    - Member must re-enter their password (server-verified via /api/mobile-access-otk, which mints the OTK only on success) before the QR is revealed — prevents someone at an already-signed-in computer from grabbing it. - QR/OTK now lives 10 minutes (600s); countdown then re-locks. - Tab label forced to one line; logo moved left of the title to save vertical space; removed the 'Configuring for' pill.

  22. · SecurityService

    POST **************** — gate Mobile Copilot QR

    Verifies the caller's own password (passwordEncoder.matches against their session's user) without changing anything. Used by the mobile-access-otk BFF route so the setup QR is only minted after re-confirming the password.

  23. · kamo-internal

    Setup Mobile Access tab — QR to install + auto-configure Mobile Copilot

    New 3rd tab in NavTopPanel (gated by ALLOW_MOBILE_ACCESS right): shows a branded QR encoding a short-lived OTK deep link (kamocopilot://configure) that signs the member in on their phone and defaults the app to the current org. Auto-refreshes the OTK before expiry; polished MUI layout with the org's primary color. Adds

  24. · kamo-shared-library

    Add ALLOW_MOBILE_ACCESS (167) general right for Mobile Copilot

    New RoleRightType (serviceType=null → General group) gating the 'Setup Mobile Access' interaction-center tab. RoleRightsSyncService backfills it to all roles on SecurityService restart; appears under General Permissions in the role editor.

  25. · AIService

    Per-org public prompt, human-handoff on no provider, anon daily message cap

  26. · kamo-shared-library

    Add anon usage count query for public web-chat quota

  27. · APIService

    Verify *** PoW at the edge on public session create (enforced when payload present)

  28. · MediaService

    Bust APIService key cache immediately on public-chat key toggle/delete

  29. · MediaService

    Persist creating key hash on public-chat visitor + ticket for attribution

  30. · kamo-shared-library

    Add publicDailyMessageCap to AiOrgSettings for anon web-chat quota

உங்கள் உலகம் காத்திருக்கிறது.

நிமிடங்களில் இலவசமாகத் தொடங்கவும். நீங்கள் தயாராக இருக்கும் போது பொருட்களை சேர்க்கவும் - எந்த மாற்றமும் இல்லை, புதிய உள்நுழைவுகள் இல்லை.

எப்பொழுதும் இலவசம் — கடன் அட்டை தேவையில்லை