Gestisci stringhe ordinali legacy per CountryType tramite AttributeConverter
Le file DB avevano un paese conservato come interi ordinali (ad esempio "186" per UNITED STATES) invece di nomi enum, causando IllegalArgumentException su findA...
Cancella tradurre i lavori istantaneamente eseguendo tsx in background
Quando Forgejo cancella un flusso di lavoro, bash aspetta qualsiasi bambino di primo piano per finire prima di elaborare il segnale — in modo da un lavoro in es...
Spostare ASTERISK CDR DSN su config.json locale, non segreti CI/CD
Le credenziali CDR sono locali per ogni server FreePBX e non hanno business nella pipeline CI/CD. Gli operatori aggiungono ASTERISK CDR DSN direttamente al loro...
Consentire l'accesso elevato su getDomainById e verifica-dns endpoints
I proprietari di org di livello superiore e i membri del sistema stavano ottenendo 403 su getDomainBy Id e verifica-dns perché quegli endpoint controllati èUser...
Mostrare il dominio org esistente al posto del modulo di iscrizione quando nessun dominio personalizzato
Torna al sottodominio della piattaforma di org come dominio del display in modo da DnsProgressView rende piuttosto che DomainEntryForm quando non esiste un domi...
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...
Suppress grep uscita non-match nella cattura OLD PID per evitare abortire pipefail
Consenti ai proprietari di org di livello superiore e ai membri del sistema di gestire i domini di qualsiasi org
Sincronizza i membri.email quando la casella di posta primaria viene assegnata, modificata o rimossa
Quando una casella di posta è stata assegnata a un membro in un org KAMO MAIL, i membri.email non è mai stato aggiornato, inducendo EmailCredentialService a non...
Prevenire domini radice duplicati e fissare display di dominio primario
ONE DOMAIN PER ORG verifica erroneamente escluso .kamocrm.com web-alias domini, permettendo a un org di accumulare più domini root (e 10 alias ciascuno) riprova...
Serializzare le chiamate dei membri e dei membri PUT per evitare il conflitto CockroachDB
Due scritture concomitanti alla stessa riga `members` causarono una serializzabile conflitto di isolamento — sicurezza dei membri leggere la riga mentre i membr...
Ridurre la latenza della creazione org e correggere i guasti della cascata di traduzione
- OrganizationController: sostituire garantireTeamMembersForAllOrgs (full org scansione della tabella) con garantireTeamMemberForOrg (single org) — elimina il ~...
Widen commit log translations.title to TEXT to match colonna DB
La colonna era VARCHAR(512) sia nell'annotazione che nel DB, causando inserti di traduzione per fallire per lunghi titoli tradotti. La colonna DB è ora STRING (...
Unwrap catalogo e calcolo dalla busta di risposta backend
getSubscriptionCatalog restituito { catalogo: {...} } ma fu lanciato direttamente come AbbonamentoCatalog, lasciando catalog.plans non definito e il piano selez...
Aggiungi @JsonProperty ai campi DTO booleano prefisso
Lombok genera isXxx() is-getters per campi booleani chiamato isXxx. Jackson spoglia il leader 'è' da is-getters e serializzarli come 'xxx' piuttosto che 'isXxx'...
Utilizzare ss invece di fuser per uccidere stallo port-forward (fusatore non su k0m1)
fuser e lsof non sono installati sul runner host. Utilizzare ss -tlnp con grep per estrarre il PID tenendo la porta 18080 e ucciderlo direttamente. Anche passar...
Pulire la stale port-forward così cancellato tradurre il lavoro non blocca la prossima corsa
Bash non inoltra i segnali ai processi di sfondo, quindi kubectl port-forward outlived cancellata flusso di lavoro e ha tenuto il porto 18080, bloccando ogni su...
Ripristinare tutti i valori segnaposto rotti su pagine
Lo script Salvage-keys aveva afferrato la classe CSSNames, gli stili in linea, e JS modello letterali invece del testo originale inglese per 114 messaggio chiav...
Ripristina porta titolo eroe pagina e sottotitolo da storia git
eroeTitle era 'Hero Title' (placeholder), eroeSubtitle era 'flex gap-2' (le chiavi salvage afferrarono accidentalmente il nome della classe CSS adiacente). Valo...
Abilitare il pulsante Fine in polling widget.getState() e passare a auto=onload
L'ascoltatore dell'evento Statechange non è stato in grado di attivare in modo affidabile il pulsante Fine dopo la verifica. Due cause principali: 1. La logica...
Includi account di registrazione in elenco org
listForOrg ora restituisce anche i conti i cui abbonamenti mirano al richiesto org — non solo conti direttamente di proprietà di esso. Nel multi-org modello il ...
Aggiungi statusWindow etichette namespace e fissa tutti i segnaposto di impostazione
- Aggiungi le impostazioni. nav sidebar mostra testo reale invece di percorsi chiave - Fix branchTypesLabel formato ICU: \${branchLabel} → {branch} - Fix tr() f...
Abbinare altre finestre utensili dimensioni + schema di colori
- defaultSize e minSize ora 320x650, resizable: false (matches Softphone, Chat, Calculator, SMS, AI Chat) - Passato dal gradiente di ardesia scuro al gradiente ...
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-assegnare il primo posto, Libero come pavimento, più ampio org invalidazione
BillingSetupService attiva ora la prima slot di licenza aperta per il creatore quando si vede un abbonamento sub-org (e lo stesso per promo-to-billing-owner) — ...
I membri di org di livello superiore ottengono il piano del proprietario della piattaforma, bypass cancelli di fatturazione
KamoCRM (alto livello) org membri non sono soggetti al sistema di fatturazione — essi ottenere il piano OWNER UNLIMITED caratteristica matrice outright (con Fre...
Bypass di livello superiore + Rimborso base gratuito per org senza sub
L'assegno di livello org e' stato controllato. abbonamenti di passeggiate che mirano a un org. Con il nuovo modello target org, org che non hanno ancora un targ...
Rimuovi il titolo di storia del campo ridondante dal pannello di storia
L'etichetta di scheda già trasmette contesto — titolo e sottotitolo stavano sprecando spazio dello schermo. Pulsante di ricarica spostato in linea nella barra d...
Rimuovi Account.notes riferimenti da AccountViewClient Modifica finestra di dialogo
Rimuovere il layout prop causando corpo e-mail rimbalzamento
Il movimento esterno. div `layout` prop combattuto con l'animatePresence interiore altezza: animazione 'auto', creando un loop di feedback FLIP sulle e-mail con...
Risolvere la mappatura della colonna duplicata sovrascrivendo colonne di indirizzi incorporate a MAILING *
Aggiorna gli adattatori RetailService e provider per la rimozione di Account.notes e la conversione di CurrencyType
Omit "My" prefisso nel titolo dell'account quando si visualizza un altro membro
Mostra sempre Creare Document pulsante sulla pagina Doc Manager
Rimuoveto il getMemberId() > 0 guardia che nascondeva il pulsante durante la finestra di caricamento UserInfo. La pagina è già dietro auth quindi no qui è neces...
Ripristinare l'importazione dell'organizzazione rimosso per caso
organizzazione.id è ancora necessario nel manicoCreateDocument richiesta corpo; solo la condizione isDocsEditor dovrebbe essere stata rimossa.
Come quello che vedi la spedizione?
Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.