Load org logos from MinIO theme public path like dashboard
Use getThemePublicBaseForDomain so logo URLs match getThemePath()/img/logo.svg instead of legacy /domain/.../kamosite paths that 404 and fell back to initials.
Add missing nav-top strings and scope translations
English messages listed components.navtop.* keys for Mail/Docs/Voip buttons but never defined hi/welcome, branches, account, credits, calendar, chat, etc., so n...
Resolve nav-pri labels showing raw i18n keys
Use namespaced next-intl translators for nav and components.nav.navPri so lookups resolve against the merged message trees; add panel aria strings under navPri;...
Add MessageBrowser i18n strings and restore load error copy
next-intl threw MISSING_MESSAGE for components.messages.browser.* keys missing from en.json, breaking /messages render. Add English strings, use loadMessagesFai...
Construiește înregistrarea MinIO obiect cheie ca flux imagistic
Omit extensia atunci când fişierul EXT este nul/gol astfel încât numele obiectului se potrivește ÎnregistrareImagingService și ImagingController. Java șir conca...
Anulează apelarea dacă ai sunat înainte de rezolvarea sdk.invite
Starea cursei: agățare () în timpul conectării nu a avut nici o sesiune pentru a termina încă (Sdk.invite este așteptat înainte de WireSesssion), astfel încât a...
Auto-enter org nou după creare astfel încât membrii aterizează cu propriul rol și drepturile lor
După crearea org sesiunea a rămas în contextul părinte (fără drepturi admin), lăsând noul proprietar de org incapabil să vadă setările. Acum, creați vrăjitorul ...
Permite apelul final în timpul conectării, dezactiva AI asistent, elimina tab-ul coada
- Butonul apel final este acum activ și roșu în timpul stării de conectare astfel încât apelurile să poată fi anulate înainte de a se conecta - Dezactivează but...
Rezolva istoricul apelurilor de la membru voip config, nu la telefon extensie
***************** a fost NULL pentru unele extensii chiar şi atunci când membru voip config corect cartografiat membrul la extinderea lor. Utilizarea membru voi...
Full touch support for softphone popup on tablets
- Add touch-action: manipulation + WebkitTapHighlightColor to iconBtnStyle so window control buttons (minimize/maximize/close) respond instantly on touch - Ad...
Add go-sql-driver/mysql v1.7.1 checksum to go.sum
go mod tidy without source files is a no-op, so the mysql checksum was never added. Generated the correct h1 hashes via a throwaway golang:1.22-alpine container...
AtributeConverter
Rândurile DB aveau țara ca număr întreg ordinar (de exemplu, "186" pentru UNITED STATES) în loc de nume enum, care cauzează Argument ilegal Excepție pe găsiToat...
Anula traduce locuri de muncă instantaneu prin rularea tsx în fundal
Când Forgejo anulează un flux de lucru, bash așteaptă pentru orice copil prim-plan pentru a termina înainte de procesarea semnalului ar bloca anularea pentru m...
Mută ASTERISK CDR DSN la config.json local, nu secrete CI/CD
Acreditările CDR sunt locale pentru fiecare server FreePBX și nu au afaceri în conducta CI/CD. Operatorii adaugă ASTERISK CDR DSN direct la acestea config.json ...
Permite accesul ridicat la criteriile de evaluare DomainById și de verificare-dns
Proprietarii de org de nivel superior și membrii sistemului au fost obtinerea 403 pe getDomainBy Id și verificați-dns, deoarece aceste criterii de evaluare veri...
Afișează domeniul de org existent în loc de formularul de intrare atunci când nu există domeniu personalizat
Înapoi la subdomeniu platforma org ca domeniu de afișare astfel DnsProgressView redă mai degrabă decât DomainEntryForm atunci când nu există nici un domeniu ext...
Surface imaging fallback when provider has no call history
KamoPBXProvider.getCallHistory now returns null instead of throwing **************** so the 501 response no longer bypasses the imaging fallback. The provider c...
Correct account list member/teamMember fallback labels and trigger redeploy
Restore NavPri panel labels and LeadHistory column headers
NavPri: salvage-keys grabbed href URLs as label values and swapped label/description pairs for Accounts, KB, and Notes nav panels. LeadHistoryPanel: MUI bgcolo...
Show platform domain context when no custom domain is set
Surface the active *.kamocrm.com hostname in the domain entry form so users can see their current platform domain instead of a blank entry screen. Also fixes ve...
Checkpoint translations per chunk and per locale on main
Persist locale JSON after each API chunk so cancellation loses at most one batch. CI translates one locale per process and commits/pushes after each so finished...
Checkpoint translations per chunk and per locale on main
Persist locale JSON after each API chunk so cancellation loses at most one batch. CI translates one locale per process and commits/pushes after each so finished...
Disable Docker BuildKit cache so every pipeline run does a full rebuild
Sets no-cache on both image build steps so npm ci and npm run build always run, even when the source tree is unchanged.
Bust Docker BuildKit cache per commit so npm run build runs every push
Identical checkout trees (e.g. empty commits) reused cached layers and skipped a real Next build. Pass GIT_COMMIT from the workflow and label the image revision...
Supress grep non-match ieșire în captură OLD PID pentru a evita anularea conductei
Permite proprietarilor de org de nivel superior și membrilor de sistem să gestioneze orice domenii ale org
Sincronizează membrii.email atunci când căsuţa poştală primară este atribuită, modificată sau eliminată
Atunci când o cutie poștală a fost atribuită unui membru într-un org KAMO MAIL, membrii.email nu a fost niciodată actualizat, provocând EmailCredentialService s...
Preveniți domeniile de rădăcină duplicate și fixați ecranul de domeniu primar
Verificare ONE DOMAIN PER ORG exclusă incorect.kamocrm.com web-alias domenii, care permit unei orgi să acumuleze mai multe domenii rădăcină (și 10 aliasuri fiec...
Serializeaza securitatea membrilor si membrii Pune apelurile pentru a evita conflictul CockroachDB
Două scrieri simultane la aceeași linie de membri a cauzat un serializable Conflict de izolare Obiectivul scris (întotdeauna prin dataUpdated), abandonarea une...
Reduceți latența de creare a org-urilor și reparați eșecurile în cascadă ale traducerii
- OrganizationController: replacesesureTeamMembers For AllOrgs (org complet Scanare de masă) cu asigurareaMemberTeamForOrg (un singur org) ~400ms×N DB rotund-ex...
Widen commit log translations.title to TEXT to match DB column
Coloana a fost VARCHAR (512) atât în adnotare, cât și în DB, cauzând inserții de traducere pentru a eșua pentru lunga traducere titluri. Coloana DB este: acum S...
Despachetează catalogul și calculul din plicul de răspuns backend
abonamentCatalog returnat { catalog: {...} dar a fost distribuit direct ca AbonamentCatalog, lăsând catalogul.planuri nedefinite și planul pas de selecție gol. ...
Adăugați @JsonProperty la este*-prefix boolean DTO câmpurile
Lombok generează isXxx() is-getters pentru câmpurile booleane numite isXxx. Jackson fâşii de plumb "este" de la ist-geters şi le serializează ca 'xxx' mai degra...
Utilizați ss în loc de fuser pentru a ucide vechi port-forward (Fuser nu pe k0m1)
fuper și Isof nu sunt instalate pe gazda alergător. Utilizaţi ss - tlnp cu Grep pentru a extrage portul PID exploatație 18080 și ucide-l direct. De asemenea. co...
Curățați portul vechi înainte, astfel încât anulat traduce locul de muncă nu blochează următoarea cursă
Bash nu transmite semnale la procesele de fundal, deci kubectl Port-forward a depășit fluxurile de lucru anulate și a deținut portul 18080; blocarea fiecărei lu...
Restaurare toate valorile amplasării rupte pe pagini
Salvage-cheie script had happed CSS classNames, inline styles, and JS șablon literals în loc de textul original în limba engleză pentru 114 mesaj cheile se înti...
Restaurare conduce pagina erou titlu și subtitrare din istoria git
eroul "Titlul eroului" a fost "Titlul eroului" (Plastholder), eroul Subtitrare a fost "Flex Gap-2" (cheile de salvage au luat accidental numele clasei CSS adiac...
Activează butonul de finisare prin sondaj widget.getState() și trecerea la automat=onload
Ascultătorul evenimentului de schimbare de stat nu a permis în mod fiabil butonul Final după verificare. Două cauze profunde: 1. Logica de scurgere citește wid...
Include conturile care vizează subscrierea în lista org
listaForOrg returnează acum și conturile ale căror abonamente vizează Orga solicitată nu numai conturile deținute direct de aceasta. În multiorg model de cont p...
Adaugă statusLumea etichetelor namespace și fixează toate suporturile de setare
- Adăugaţi *************** (50 de chei) astfel încât setările bara laterală Nav arată text real în loc de căi cheie - Fix ramuraTypesLabel ICU format: \$ {brand...
Se potrivesc cu alte ferestre instrument dimensiunea + schema de culoare
- implicitSize and minSize now 320x650, resizable: fals (matches Softphone, Chat, Calculator, SMS, AI Chat) - Comutat de la gradient negru la gradient standard ...
Forward Range header so audio playback can scrub
Without this the VOIPService recording-streaming endpoint always returns the full file (Range header is dropped by buildForwardHeaders), which works for play-fr...
Rewrite /etc/odbc.ini to point at $MARIADB_HOST on every boot
The escomputers/freepbx:17 image bakes /etc/odbc.ini with Server=db (the docker-compose link target). On this Kubernetes deployment MariaDB lives at \$MARIADB_H...
Resolve member→extension before VM/CDR provider lookup
CallController was passing memberId where FreePBX (and other PBX-style providers) expect an extension number — voicemail listing returned empty because no PBX e...
Auto-asignează primul scaun, gratuit ca podea, mai larg org invalidare
BillingSetupService activează acum primul slot de licență deschisă pentru creator atunci când însămânțarea unui abonament sub-org (și același lucru pentru promo...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
