Rifiutare un alias che nomina più di un'organizzazione
byAlias ha preso LIMIT 1 sopra org. alias, che non ha vincoli di unicità: il percorso di creazione lo controlla per provider di sicurezza e PUT /org/{id} non Co...
Il presentatore di supporto programmato non ha offerto nessuno
L'abbassamento della scheda Presenters era vuoto per ogni organizzazione, e aveva sempre Sono stato. G E' il momento giusto. risposte con { teamMembers, total }...
Servire l'albero dell'app e fissare l'auto non custodito
FeatureController ora invia genitore/bambini/isParent su ogni serializzato app in modo che il cliente possa rendere i bambini nidificato sotto il loro genitore....
Specchio le sei app per bambini di commercio, e fermare gli specchi alla deriva
Entrambi gli specchi TS sono ora GENERATED di ServiceType.java piuttosto che mantenute a mano. Si erano allontanati male da Java e l'uno dall'altro: stale "inte...
Il compito 7 non ha bisogno di nuove migrazioni e gli org di alto livello devono essere inclusi
L'app-tree backfill si è rivelato già esistente come E' il momento giusto. ristretto a isGated() verticali. Gettare quella restrizione è l'intero cambiamento. ...
Una barra di scorrimento, tre volte più ampia, giù ogni conversazione
La barra accanto ai messaggi era 8px nella chat dei membri e SMS, 6px nei biglietti di supporto e social, e nella chat AI non era affatto nulla: quella lista ha...
Risolvere il dominio sul lato server /org/current
internal.kamocrm.com non è riuscito a rendere con "Dati di organizzazione non validi: mancante 'id' o 'domain'. L'organizzazione non ha campo `domain` - ha un C...
Dare /api/org/corrente il dominio richiesto dal client
internal.kamocrm.com non è riuscito a rendere con "Dati di organizzazione non validi: mancante 'id' o 'domain'. Organizzazione.daJSON rifiuta un record senza un...
Spostare il salto verso il basso con le altre azioni della barra degli strumenti
Ricerca ora possiede l'intera traccia sinistra della barra degli strumenti, perché la parte vuota di quella traccia è esattamente la stanza in cui il campo si a...
Rifiutare il favicon e rilasciare i loghi inutilizzati blueleven
public/favicon.ico ora trasporta 48x48 e 32x32 strati invece di 32x32/16x16. I cinque logo-blu*/logo-blueleven* PNGs sono riportati dal nulla nell'app, così van...
Estendere il nonno di mercato nel backfill dell'app-tree
nonnoEsistere GatedMarkets ha già camminato i mercati attivi di ogni org, risolto getRequiredService() e abilitato l'app mancante — era solo ristretto ad isGate...
Inserimento-controllare ogni verticale, non solo il gated due
Ogni CommerceType ora nomina la propria app per bambini sotto POS, quindi la isGated() cortocircuito che ha waved retail, affitti, servizio, abbonamenti e l'app...
Dare il percorso workspace lo stesso lavoro post-login come il percorso host
Due lacune riscontrate rileggendo la coda di login originale contro quella nuova, prima di abilitare il raccoglitore. L'endpoint form-encoded /login ha costrui...
La ricerca della barra degli strumenti è un glifo che si apre in un campo
La chat dei membri ha portato una casella di ricerca permanente nella parte superiore della finestra — la larghezza della intera barra degli strumenti, speso su...
Un messaggio inviato anima in una volta, non due volte
L'elenco dei messaggi ha messo in chiave ogni riga sul messaggio id, e un messaggio inviato cambia esattamente una volta — la riga ottimista è allegata sotto un...
Ogni verticale nomina la propria app per bambini
richiestoServizio diventa totale ora che ogni verticale ha un'app per bambini sotto ServiceType.POS, che elimina il "null significa POS da solo è sufficiente" c...
Nome camere dopo l'org id, non il nome host
getOrgToken() ha preso la prima etichetta dell'ospite corrente, e il suo commento ha detto perché: "così le camere identico-nome non possono collidere attravers...
Lasciate che la configurazione pubblica sia indirizzata da org id, non solo da host
Il sidecar dell'incontro cerca una configurazione di org per decidere se un ospite ha bisogno di una password di riunione. Ha chiesto da hostname, che sull'inco...
Camere Scope alla loro organizzazione sull'host di incontro condiviso
L'isolamento in camera era l'OST. Un membro di org B non poteva presentare un cookie su meet. Da nessuna parte. Servono organizzazioni senza un dominio proprio ...
Funzione Cascade abilita/disattiva dall'albero app
Abilitare un bambino abilita il genitore; disabilitare un genitore disabilita ogni bambino; disabilitare l'ultimo bambino disabilita il genitore. Abilitare un g...
Aggiungi PhiCapabilityGuard per i controlli delle capacità di chiamata
PhiTenantGuard corre a tempo reale e nessun altro — tre chiamate siti, tutti in FeatureService. Ora che PhiModule è dotato di capacità, un app il cui nucleo è c...
Split PhiModule da app-grained a funzionalità-grained
POS mappato a ECOMMERCE SYNC (BLOCKED NO BAA) e all'intero commercio superficie appende fuori POS, quindi un org con maniciPhi=true non poteva cambiare commerci...
Terreni all'interno di un org appena creato anziché in configurazione DNS
Creare un org ha indirizzato il creatore a /setup/dns, e la ragione era reale: entrare significava un reindirizzamento di OTK all'interno. org non ha DNS, in mo...
Dare a ServiceType un genitore di due livelli / albero bambino
Sei bambini di commercio al nuovo ids 26-31, cablati a POS in un blocco statico su il modello RoleRightType (una costante di enum non può fare riferimento a un ...
Piano di attuazione per SP1, l'app catalogo genitore/albero bambino
12 attività attraverso il clero-shared-library, KamoInitializerService, SecurityService, MediaService, VOIPService, kamo-internal e il dizionario di traduzione....
Fare l'auto-login cross-tenant guard effettivamente eseguire
La guardia legge l'ID dell'host org con /"id"\s*:\s*(\d+)/ - una cifra nuda subito dopo il colon. Il JsSafeLongSerializer di SecurityService scrive qualsiasi Mo...
Smettere di consegnare una riga alias come dominio dell'org
****************************************************************************************************************************************************************...
Correggere il segno.pink trovare
L'inventario chiamato SignLinkBuilder's sign.sign.pink fallback a "foreign apex" e l'ho registrato come uno. Non è: sign.pink è di proprietà di Kamo organizzazi...
Progettare la verticale EHR/EMR e il catalogo delle app madre/bambino
Due specifiche dell'analisi pre-costruttiva di ~30 repos e dell'ambulatorio del 2026 Mercato EHR. Il progetto del programma registra le sei decisioni che legan...
Fare un org senza un dominio inseribile
Inserire un org significava passare a... Con nessun dominio che l'URL ha reso come E' il momento giusto. così Enter è stato disabilitato e proprietari sono stat...
Lascia che il guscio prenda il suo org dalla sessione, non l'host
il layout radice di kamo-internal legge l'intestazione di Host, strisce "interne". fetches /org/domain/ <that>. Su un ospite che serve un inquilino che è lo ste...
Scrivere una descrizione di supporto programmato come testo ricco
La descrizione su... area di testo a tre righe. È la /kb / nuova superficie di scrittura ora, meno immagini e la libreria multimediale — quelli caricati in KB m...
Aggiungi il raccoglitore spazio di lavoro
Un segno in cui i nomi di nessuna organizzazione ora torna con una lista invece di una sessione. Questa è la metà del cliente: /api/login passa che payload attr...
Portare la descrizione del tipo in entrambe le sue forme
La descrizione è un documento Lexical ora, quindi il servizio memorizza il testo normale specchio il cliente invia accanto a esso e mani lettori qualsiasi forma...
Colonne di descrizione del testo ricco su webinar type
Specchi il cambiamento dell'entità condivisa-lib. Due cose che il tavolo ha bisogno prima MediaService li mappa. La colonna di descrizione deve essere unbounde...
Conservare la descrizione del tipo come testo ricco
La descrizione su... L'editore Lexical afferma ora piuttosto che una linea di prosa, quindi la colonna deve essere un TEXT non legato come un lungo varchar — un...
Lasciate un membro entrare senza un host che nomina il loro org
Aggiunge la seconda metà della divisione: un segnale in cui non nomina nessuna organizzazione autentica l'utente, quindi chiede quale spazio di lavoro. POST /ap...
Prendere la chat-core che ferma un messaggio inviato che mostra due volte
@kamo/chat-core 0.1.6. Il riduttore di conversazione adotta ora la fila ottimista in sospeso quando il proprio messaggio del membro torna su STOMP, invece di ap...
Ricordate l'ultimo spazio di lavoro a cui un membro ha firmato
user.last org id supporta il raccoglitore dello spazio di lavoro. Un'organizzazione non è più chiamato dal nome host, quindi un membro che appartiene a diverse ...
Separare il controllo delle credenziali da org autorizzazione
L'accesso è stato due domande fuse in una sola domanda. "Sono queste credenziali buono" viene risposto dalla riga degli utenti -- la password vive lì, quindi er...
Smettere di richiedere la verifica DNS per accedere
OrgHostResolver.resolveByDomain filtrato su od.is dns verified = TRUE, quindi una riga di dominio che esisteva ma non aveva finito di verificare risolto niente ...
Un file può essere abbandonato ovunque su una finestra di chat, non solo sulla striscia di input
L'obiettivo di goccia era la sola superficie del compositore — alcune dozzine di pixel in fondo a una finestra che è altrimenti tutti i messaggi. Uno screenshot...
Pianifica il rollout di tenancy dipendente dall'ospite
Sei fasi, ciascuna naufragabile indipendentemente, perché spingere distribuisce: il percorso host continua a funzionare fino a quando la Fase 6 lo rimuove. La ...
Tenancy ospite design
Org identità viene oggi dal nome host: OrgHostResolver.resolveByFqdn trasforma <alias>. od.is dns verified = TRUE. Che un predicato è il motivo per cui un org a...
Stop RingCentral OAuth firma inquilini in white label
Due difetti, entrambi sullo stesso piano, e ognuno nasconde l'altro. RingCentral rifiuta ogni valore di portata che questa applicazione può chiedere — "invalid...
Mostra centesimi su un tasso aggiuntivo che li ha
Deposito supplementare è $2.50 per blocco 10 GB, e il catalogo memorizza che come un numero — così 2.50 arriva come 2.5 e reso dritto nella scheda che legge "+$...
Settle Storage supplementare a $2.50 per blocco 10 GB
Conferma la dimensione del blocco e il tasso come $2.50 per 10 GB piuttosto che il $4 per 25 GB la fila di produzione era alla deriva. The seeder, the catalogo ...
Prezzo Deposito aggiuntivo come $4 per unità 25 GB, FLAT non misurato
Deposito supplementare è acquistato dall'unità, non appartiene a nessun piano su qualsiasi livello, ed è non basato sul sedile. Il seeder lo ha ancora descritto...
Collegare le tracce di stack alla loro linea di registro, e fissare i livelli ho sbagliato
printStackTrace() scrive direttamente a stderr, così 186 di loro sopravvissero la stampa ha spazzato intatto — ancora incondizionato, ancora non attribuito, e o...
Come quello che vedi la spedizione?
Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.