Salta al contenuto
KAMOUniverse

Changelog

Cosa c'è di nuovo.

Ogni miglioramento alla piattaforma, come si spedisce.

  1. · kamo-internal

    Impostare i tipi di visita e le ore di lavoro

    Il primo schermo ha bisogno di una nuova pratica, e quello che non esisteva. Prenotazione offre visita tipi da una tabella e cerca disponibilità contro un altro, quindi una pratica con né aveva un diario vuoto e nessun modo per riempirlo da dentro prodotto. Un tipo di visita è ritirato piuttosto che cancellato — appuntamenti e richieste di riferimento il codice, e un codice che svanisce trasforma un anno di storia in file che nessuno può etichetta. Il pulsante dice "ritiro" per questo motivo. Gli orari di lavoro sono salvati in una zona di tempo denominata e il pannello dice quale. E'... campo più probabile essere tranquillamente errato, la disponibilità è calcolato contro di esso, e il sintomo di sbagliare è che i pazienti non si presentano. La sezione appare solo per un ruolo che tiene MANAGE SCHEDULE TEMPLATES, e siede ultimo: una pratica lo visita una volta all'inizio e poi quasi mai, quindi non dovrebbe competere con il lavoro della giornata.

  2. · kamo-internal

    Scrivere una prescrizione, un ordine e una vaccinazione

    Il grafico potrebbe mostrare tutti e tre e non creare nessuno. Un pannello piuttosto che tre, perché sono un momento: un clinico che termina una visita scrive prescrizione, invia il laboratorio e registra il colpo negli stessi trenta secondi, e tre schermi in tre posti è come il terzo si dimentica — di solito il vaccinazione, che è quello che il registro e la domanda di richiamo hanno bisogno. Ogni scheda appare solo se il ruolo del membro lo include. Un pulsante presente e rifiuta insegna alle persone il sistema è inaffidabile; un pulsante che è assente insegna loro chi chiedere. Il server fa rispettare tutti e tre indipendentemente. L'interruttore di sostanza controllata è dichiarato, mai indovinato dal nome del farmaco. A ricerca sarebbe sbagliato in entrambe le direzioni — esigendo il permesso più forte per un nome sbagliato, o non chiederlo per uno che non ha riconosciuto — così il il prescrittore lo afferma e il server applica il secondo diritto su quello che era ha affermato. L'interruttore è disattivato per qualcuno senza quel diritto, con una linea che dice di chiedere un amministratore piuttosto che un rifiuto dopo aver digitato. Scrivere siede sopra la lettura sulla scheda: un medico arriva qui per registrare che cosa hanno appena deciso, e una casella di composizione sotto una lunga lista di problemi è uno nessuno scorre a. E 'chiamato sul paziente in modo che una prescrizione di mezzo tipo non può seguire qualcuno da un grafico all'altro, e una scrittura urta un token che rende il elenco sotto ri-letto — una lista una prescrizione fuori data legge come "non ha fatto salvare". Inoltre: un RIGHT mancante non riporta più come "non abilitato per i dati clinici". Entrambi arrivare come 403 e significare cose opposte — uno è fissato da un amministratore in minuti, l'altro è un contratto — quindi il client ora legge il motivo del server invia e porta la sua frase, che già nomina il permesso.

  3. · kamo-internal

    Scegliere chi paga per mailbox e mostrare il conteggio per fattura

    Il controllo dei costi appare solo una volta che esiste un gruppo di fatturazione — con nessuno l'impostazione non cambia nulla, e l'offerta invita la convinzione che è rotto. Le righe di fattura portano il conteggio della casella di posta registrata in modo che una carica passata rimanga spiegabile dopo che le caselle di posta vengono eliminate.

  4. · InitializerService

    Schema per caselle di posta associate

    Il vecchio membro unico su member imap configs è scoperto per forma piuttosto che con il suo nome Hibernate-generato, e caduto solo dopo esiste una chiave più ampia.

  5. · kamo-shared-library

    Contare caselle di posta personali collegate

  6. · SecurityService

    Modifica demografica, imposta il calendario, fattura e post

    Gli ultimi quattro diritti che hanno nominato operazioni che non esistevano. EDIT PATIENT DEMOGRAPHICS: i dettagli di un paziente potrebbero essere inseriti una volta e mai corretto. Un campo che il chiamante omette è lasciato da solo piuttosto che sgomberato, perché l'alternativa svuota una data di nascita quando qualcuno fissa un cognome — e un nome o la data cambia ri-indicizza l'identità, senza la quale un nome sposato lascia il paziente rilevabile solo sotto il nome che non usano più e crea un duplicato la prossima volta che qualcuno li registra. MANAGE SCHEDULE TEMPLATES: i tipi di visita e gli orari di lavoro sono le due cose che deve esistere prima di tutto può essere prenotato, e entrambi i tavoli sono stati leggibili e - Neanche per sogno. Una nuova schermata di prenotazione della pratica non ha offerto nulla e c'era non c'è modo di cambiarlo dall'interno del prodotto. Un tipo di visita è in pensione piuttosto che cancellato — appuntamenti e reclami di riferimento il codice, e un codice che svanisce trasforma un anno di storia in file che nessuno può etichettare. Ore lavorative richiedono un fuso orario, perché la disponibilità è calcolata contro di esso e un blocco senza uno è letto in chiunque stia cercando zona. MANAGE CLAIMS e POST INSURANCE PAYMENTS: il ciclo di ricavi potrebbe leggere sette code e non rivendicare. Creare e inviare sono chiamate separate perché sono decisioni separate — una creazione che potrebbe presentare è come un reclamo incontrollato raggiunge un casello. Pagamenti post linea per linea, che è come un payer e l'unico modo per rispondere "quale procedura è stata negata e perché". L'intestazione di reclamo è riassunto dalle sue linee piuttosto che preso dal chiamante: un testare in disaccordo con le proprie linee è lo stato che produce un equilibrio Nessuno può spiegare a un paziente. Ogni linea fissata a zero con regolazioni è una negazione, non un pagamento — diversa lista di lavoro, diversa scadenza. La restrizione del self-pay spostata da un banner a un rifiuto. §164.522(a)(1)(vi) è un paziente ha ragione, e fino ad ora l'unica cosa tra un paziente ristretto e un reclamo al loro piano era un pannello rosso su uno schermo, che non fa nulla su un rivendicazione sollevata da qualsiasi altra parte. Controllato quando il reclamo è sollevato E di nuovo quando è inviato, perché potrebbe essere stato registrato tra e l'invio è la chiamata che in realtà rivela. Gli importi sono letti attraverso la loro stringa decimale, mai un doppio: 0.1 + 0.2 su un la linea di reclamo è un equilibrio che un paziente viene chiesto di pagare e non può essere detto il motivo per. 24 test.

  7. · SecurityService

    POST /quote/{uid}/convertire

    Su QuoteController piuttosto che POSController: questo controller applica un a destra su ogni manubrio, POSController non applica alcun punto finale dell'ordine, e risolve le sessioni dall'attributo OTK, l'intestazione X-***-Token e il biscotto. Gated MANAGE QUOTS perché nessun diritto di cambio ordini esiste per riutilizzare. 409 per un conflitto di stato il chiamante può riprovare dopo, 404 per una citazione che non c'è — corrispondente ottenere/aggiornamento/revise/cancel. Un id malformato è già a 400 da parseUuid prima che sia raggiunto un ramo.

  8. · EmailService

    Indietro l'API di posta personale la console già chiama

    Diciotto metodi client su dodici rotte che erano state spedite senza dietro di loro. Un membro raggiunge solo la propria casella di posta e la configura solo una volta che un amministratore gli ha chiesto di farlo. OAuth utilizza gli scopi del consumatore: i gestori esistenti richiedono Workspace e inquilino-admin campi di applicazione un account personale non può concedere.

  9. · kamo-shared-library

    Personal mailbox entità e due fornitori di consumatori

    GMAIL PERSONAL e OUTLOOK PERSONAL sono stati offerti dal raccoglitore e non sono stati membri dell'enum, così selezionando o prodotto un org inutilizzabile.

  10. · kamo-internal

    Una testa chiusa si allontana invece di lampeggiare

    Fare clic con il tasto destro su una testa e scegliere Chiudi, o mettere uno nell'obiettivo — gettato in o portato e caduto — ora gioca un'uscita 500ms: un antiorario giro di tre quarti mentre si restringe a nulla e svanire, poi smontare. La testa lascia ogni pezzo di libretto del motore l'istante è chiuso (cluster, valori di movimento, fisica di lancio), così il suo cluster rifluisce immediatamente e niente può collidere con un cadavere. Ciò che sopravvive ai 500m è una visuale inerte fantasma congelato all'ultima posizione della testa, nella sua lista, smontato da un timer. L'animazione è opt-in per rimozione piuttosto che universale, perché hexheads:remove non è solo licenziato da chiusure: restaurare una finestra minimizzata spara, e FloatingNotesContext lo licenzia per rivestire la testa di una nota appiccicosa su un cambio di colore. Girare una testa in quei casi sarebbe sbagliato. Anche cadere la testa da gettiRef sulla rimozione. Una testa può essere cliccata con il tasto destro e chiuso mid-flight, e senza che il lancio RAF mantiene un ingresso morto per sempre — esso Non si drena mai, quindi la zona dell'obiettivo non si nasconde mai più. prefers-reduced-motion ottiene una dissolvenza normale sopra gli stessi 500ms.

  11. · SecurityService

    Prescrivere, ordinare e immunizzare

    Il grafico potrebbe visualizzare farmaci, ordini e vaccinazioni e potrebbe produrre Nessuno di loro. I percorsi letti, i renderer FHIR e le code di sicurezza erano tutti costruito contro questi tavoli mentre nulla poteva scrivere una fila, così una pratica potrebbe guardare una lista di farmaci che non ha avuto modo di aggiungere a — e PRESCRIBE MEDICATIONS, Non e' vero. PERSONALE ADMINISTER IMMUNIZATIONS denominate operazioni che non esistevano. Queste sono le operazioni quotidiane di un ufficio medico. Cinque endpoint: scrivi un prescrizione, stop one, posto un ordine, chiudere il suo ciclo, registrare una vaccinazione. Una sostanza controllata ha bisogno di un diritto SECOND, oltre al normale prescrivere uno, e il controllo legge il programma DEA dal farmaco piuttosto che fidarsi di una bandiera che il chiamante imposta. Un programma non riconosciuto conta come controllato: il fallimento che conta è quello che lascia passare una sostanza controllata, quindi un typo non deve diventare un bypass. Il prescrittore, l'ordinatore e l'amministratore vengono tutti dalla sessione, mai dal corpo. "Chi ha prescritto questo" è quello che un audit DEA, una recensione malpratica e un callback farmacia tutti chiedono, e una risposta fornita dal chiamante non vale nulla per Ognuno di loro. Refill rimanenti deriva da refill autorizzati per gli stessi ragione — lasciando un cliente impostato è come una prescrizione arriva senza fine ricaricabile. Un ordine è creato con chiusoA null, deliberatamente. Questo è ciò che lo mette nel coda aperta, che esiste perché il test ordinato nessuno inseguito è il classico modo di una diagnosi è mancato. La chiusura registra chi l'ha chiusa e perché; riga che invecchia da una coda da solo insegna alle persone a ignorare la coda. Viene rifiutata una vaccinazione senza molto numero. È l'unico campo che risponde "che ha ricevuto il lotto ricordato" — una domanda che arriva da fuori costruire con ore per rispondere — e ogni altro identificatore sulla riga può essere ricostruito. Il timestamp di presentazione VIS è timbrato dall'orologio del server: è la prova di un requisito federale della pratica, e prova il chiamante le forniture sono prove di nulla. 15 test, la maggior parte di loro sulla divisione controllata-sostanza.

  12. · kamo-internal

    Spiegare l'addebito della casella di posta dove vengono effettuate le caselle di posta

    Console righe prezzo mail per mailbox con il conteggio dal vivo; la scheda mailboxes, picker e fornitore del dipartimento aiutano a tutti gli stati che cosa conta, che un condiviso mailbox viene fatturata una volta, e che gli alias sono illimitati e liberi.

  13. · kamo-internal

    Opzione del fornitore del gate sull'add-on, le spese della casella di posta

    Carte bloccate dicono che add-on li sblocca piuttosto che essere nascosti o silenziosamente morto, e il cancello non si apre in modo che un'interruzione di fatturazione non può infilare un org mid-migration. Traduce anche dodici etichette di opzione che sono state codificate Inglese, e aggiunge il pannello stats-tab che mostra ciò che è fatturato e che gli alias sono liberi.

  14. · InitializerService

    Entrambi i componenti aggiuntivi della posta sono valutati per mailbox

    Prezzi invariati a $5 e $2; solo l'unità cambia. Copia ora afferma cosa in realtà conta, e che gli alias sono illimitati e liberi.

  15. · BillingService

    Expose mailbox conta, diritto e modalità di costo

  16. · BillingService

    Bill e-mail per casella di posta, riconciliato di notte

    La quantità è server-computata sotto una chiave riservata un corpo di richiesta non può raggiungere, e spinto attraverso il percorso di modifica esistente — così Stripe's CREATE PRORATIONS addebita giorni aggiunti e giorni di credito rilasciati. Inoltre si rifiuta di rilasciare una mail add-on mailbox sono ancora utilizzando, e ferma un gruppo di fatturazione che cambia add-ons che eredita solo.

  17. · kamo-shared-library

    Una citazione accettata diventa un ordine

    accettarePublic ha scritto quattro colonne e ha aggiunto un evento. Nessun impegno, no Ordine, nessuna Transazione — la pretesa di Quote javadoc che accetta menti L'impegno ha descritto il codice che non esiste. Deliberatamente non crea un Impegno: processOrderPaid restituisce immediatamente quando order.getCommitment() non è nullo, quindi crearne uno a mano disabilita tutto a valle. L'ordine è DRAFT e il pagamento lo sposta attraverso la macchina statale esistente, che mescola l'impegno, il Transazione e FulfillmentOrders. Riutilizza l'inganno della citazione piuttosto che coniare un secondo, e ne deriva stato attraverso EngagementLifecycle piuttosto che handsetting COMITATO la strada creaRetailOrder lo fa. Totali provengono dalla citazione, che QuoteTotals lato server calcolato — mai attraverso CreateRetailOrderRequest, che accetta clienti totali e linee a doppio conteggio in cima a un subtotale fornito. Una linea che opta per gli usiQuoteQuantity prende il driver condiviso del preventivo, non la sua colonna: copiare quel verbatim avrebbe messo un affare di 60 posti ordine come un sedile accanto a una lineaPrezzo totale per sessanta. Solo gli accettati le linee dell'opzione convertono, più ogni opzione-meno uno. QuoteConversionResult trasporta l'ordineUID come una stringa, non l'UUID il piano nome: Ordine estende BaseEntity, il cui id è un INT8 unico rowid() che JavaScript tronca. Ids lasciano questa piattaforma come stringhe. Primo produttore di ServiceLineItem ovunque.

  18. · kamo-shared-library

    Contare le caselle di posta fatturabili di un org

    Aggiunge i prezzi PER MAILBOX, la modalità di costo della posta e uno stereotipo-free aggregatore: ha ospitato fatture ogni casella sul server, fatture di terze parti solo cosa è stato mappato in Kamo. Deduto per indirizzo, quindi una casella di posta sei persone condividere è una carica. Gli alieni sono contati e mai fatturati. Un interruttore esaustivo senza braccio predefinito classifica ogni provider, quindi il successivo aggiunto è un errore di compilazione piuttosto che silenziosamente inbillabile.

  19. · InitializerService

    Schema di fatturazione per casella di posta

  20. · kamo-internal

    Ogni org sceglie quello che un ordine prende da un preventivo accettato

    Un gruppo radio, non un interruttore — entrambi sono modi legittimi di vendere, e né e' fuori. Mostra che è il default e che cosa ciascuno fa a una carica reale: per un preventivo di tre anni a 10k/yr con una tassa di configurazione 5k, una fattura 15k ora e le altre bollette 35k. La chiave di fatturazione viene omessa interamente dalla richiesta a meno che l'utente non sia cambiato E' cosi'. Il server legge una chiave assente come 'leave immutata' precisamente così un toggle verticale non può cancellare la scelta e inviare sempre il valore corrente lo avrebbe sconfitto.

  21. · SecurityService

    Il corpo di configurazione porta una scalare, e l'assenza significa invariata

    updatePOSConfig bound Map citazioneConversionBilling affatto. Ampliato alla mappa Una chiave che è assente significa lasciarla sola, non impostarla a null — la scheda di tipi di fidanzamento invia solo abilitatoEngagementTypes, in modo da lettura assenza come null pulirebbe la scelta di fatturazione dell'org su ogni gioco verticale, a HTTP 200 con nulla in qualsiasi registro.

  22. · kamo-shared-library

    Ogni org sceglie quello che un ordine prende da un preventivo accettato

    Non c'è una risposta giusta a livello di piattaforma. Un imprenditore di manutenzione su un bollette del piano di tre anni ogni periodo; un installatore di capitale-equipment fattura il contratto davanti. Il totale di un Ordine diventa un pagamento catturato, quindi o scelta in codice duro addebita metà degli inquilini l'importo sbagliato. Predefiniti per FIRST PERIOD PLUS SETUP perché sotto-carica piuttosto che sovraccarico. Null significa il default piuttosto che unset — ogni org predates questa impostazione, e un backfill che scrive un valore ovunque è una colonna che avrebbe potuto essere nulla. Un corpo che non menziona mai citazioneConversione Billing significa lasciarlo in pace, non chiaro: la scheda di tipi di fidanzamento invia solo abilitatoEngagementTypes, quindi l'assenza di lettura come null avrebbe cancellato la scelta su ogni gioco verticale. La colonna naviga senza costrizione CHECK. L'esportazione di Hibernate voleva E' il momento giusto. che è congelato a TABELLA CRETA e rompe il prossimo valore aggiunto all'enum.

  23. · kamo-internal

    Dì chi detiene una casella di posta contestata, e che gli alias sono liberi

    Lo snackbar ha sostituito il messaggio 409 del server con un guasto generico, quindi un manager non poteva dire a quale membro ha tenuto la casella di posta. Aggiunge la nota che condividere una casella di posta non costa niente di più e che gli alias sono illimitati.

  24. · InitializerService

    Un membro primario per mailbox

    is primary era unico solo per membro, quindi due membri potrebbero entrambi rivendicare mailbox — e PrimaryMailboxIdentityLookup restituisce null su un ambiguo indirizzo, in modo che l'indirizzo poi autenticato nessuno di loro.

  25. · kamo-internal

    Dipingere ogni scheda dall'alias della sua organizzazione, non dal nome host

    La base tematica è stata costruita da un nome host: goccia l'etichetta leader, unisciti al resto con trattini, e questa è la cartella del secchio. Ha risposto correttamente mentre ogni l'organizzazione aveva una serie di propri. Su internal.kamocrm.com — che ora serve ogni organizzazione che non ha dominio - risponde "la piattaforma", così quelle le organizzazioni sono state dipinte nel logo e nei colori di Kamo con il proprio branding fornito e non differito. La cartella è ALIAS dell'organizzazione. Ogni organizzazione ha uno; un dominio è opzionale. getThemePath() prende una slitta e nient'altro, e la slitta raggiunge tre modi, per quanto presto sono conosciuti: - app/layout.tsx passa organizzazione.alias in DynamicMetaLoader dal SERVER render, così il primo tema fetch nomi l'inquilino giusto piuttosto che a seconda di dove OrgProvider siede nell'albero rispetto a tale effetto. - OrgProvider lo registra durante il render, per tutto ciò che dipinge sul primo commit. - Un chiamante può nominare un'altra organizzazione in uscita — /network elenca ogni organizzazione nella rete e rende un logo per ciascuno, e orgLogoSrc ha preso una DOMAIN, così quelli senza un dominio proprio risolto a nessuna origine a tema a tutti e cadde a un iniziale con il loro logo seduto nel secchio. La metà host dell'URL segue l'indirizzo in fase di navigazione, invariato: MinIO serve l'intero secchio da ogni tema. <apex> nome, così decide solo se la richiesta si risolve — mai i cui beni ritornano. Questo è ciò che lascia un organizzazione essere inserito prima del proprio dominio. Il creato wizard ora aspetta, e si apre, la cartella che il SERVER ha chiamato. Si'. ha derivato la cartella dal dominio dell'org e ha sbagliato due volte: GET /org/{id} risposte con l'entità, il cui `domains` è LAZY e serializza come null al di fuori di un transazione, così la derivazione è passata a "{alias}.kamocrm.com". Per Panda Express che significava polling panda-express-kamocrm-com mentre il tema era stato scritto a pandaexpress-com — 45 secondi di attesa su una cartella che non avrebbe mai esistere, quindi aprire lo spazio di lavoro sotto un host che non risolve nulla. Anche qui, e parte della stessa storia: - Il campo alias rifiuta un'etichetta che la piattaforma mantiene per se stessa mentre sta essendo digitato, corrispondente OrgAliasPolicy del SecurityService. "theme" risponderebbe al ospitare ogni inquilino legge i suoi beni da, e "default" è il tema base ogni nuova organizzazione è semenzato da. - error.tsx e not-found.tsx avevano la loro copia della derivazione, costruendo ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** servire. La filigrana su quegli schermi era un 404 per ogni organizzazione. - I morti... questo schema è andato piuttosto che lasciato per il prossimo chiamante. 253 file di prova, 3396 test. La chiave di guardia i18n verificata contro un clone fresco il dizionario, il modo in cui CI risolve.

  26. · SecurityService

    Fornire un marchio di un'organizzazione sotto il suo alias, e migrare ciò che esiste

    La cartella di ogni logo, colore, favicon e sfondo è stata scritta l'hostname dell'organizzazione con i punti trasformati in trattini. Un dominio è facoltativo ora, in modo che non poteva nominare una cartella per un'organizzazione che non aveva portato uno — e il fallimento era silenzioso in entrambe le direzioni. Caricare un logo era rifiutato con "Nessun dominio configurato per questa organizzazione"; la lettura uno cadde attraverso la cartella della piattaforma, così il cliente ha visto il marchio di Kamo su una spazio di lavoro il cui proprio era previsto e non differito. La cartella è ALIAS dell'organizzazione, che è obbligatoria, unica e già a forma di segmento di percorso. Vedere OrgThemeAssets in kamo-shared-library. Che cosa cambia qui: - provisionFull/provisionUpdate prendere l'organizzazione e derivare la cartella da quindi un chiamante non può più dirigere il marchio di una organizzazione in una cartella prende il nome da qualcos'altro. il campo `domain` di provision-theme viene ignorato. - upload-logo, commit-backgrounds e provision-theme smettere di rifiutare un organizzazione che non ha dominio. - Il logo del raccoglitore di spazio di lavoro scende due sottoquadri correlati string agg per organizzazione — esistevano solo per elaborare quale cartella ciascuno branding era stato fornito in, e l'alias è già sulla fila. - Il sign-in reindirizzare NAMES l'organizzazione (&org=θalias>). interno. Traduzione: serve ogni organizzazione senza una serie di propri, quindi una scheda che arriva con solo una chiave una volta risolto l'host, ha ottenuto la piattaforma, e ha dipinto Kamo's logo sullo spazio di lavoro a cui il membro aveva appena firmato. come era stato fisso a dirlo; il segno ordinario non aveva. È un riferimento, non un le credenziali, e un alias che non può essere letto non blocca mai il sign-in. - Gli sfondi virtuali dei membri smettono di derivare dalla loro cartella dall'host della richiesta, che ha risposto "kamocrm-com" per ogni subdominio inquilino — quindi un bambino gli sfondi dell'organizzazione sono stati scritti in, elencati da e DELETED fuori la cartella della piattaforma. - Lo spazio di archiviazione attribuisce entrambi i prefissi, quindi un'organizzazione migrata l'uso di marca non sembra dimezzare durante la notte. ThemeFolderMigrationService copia i beni di ogni organizzazione nel suo alias cartella all'avvio. Copie, mai cancella: non c'è momento sicuro per rimuovere il vecchio chiavi — una scheda aperta attraverso il deploy, un'e-mail cache, un preventivo PDF già inviato tutti ancora li riferimento — e il costo di sbagliare è ogni white-label il marchio del cliente svanisce subito. Idemponte e un Blip MinIO non deve fermarsi il servizio di partenza. Già in esecuzione contro la produzione: 14 organizzazioni, 298 oggetti, tutti al servizio. OrgAliasPolicy è il terzo pezzo, e quello che conta più ora l'alias è un segmento di percorso. La regola della forma è stata applicata solo dal punto di vista della disponibilità la procedura guidata chiama come il campo è digitato — il creare i duplicati controllati endpoint e tutti i digiti e nient'altro, così qualsiasi chiamante che ha saltato il mago potrebbe conservare un alias che tiene uno spazio, un punto o uno slash. Si riserva anche le etichette piattaforma serve, perché un'organizzazione alias "tema" risponderebbe all'host ogni inquilino legge i suoi beni da; e i prefissi del secchio che non appartengono a organizzazione, di cui "default" è quella pericolosa: il tema base ogni l'organizzazione è seme, da cui i risparmi di una tale organizzazione riscriverebbero. Verificato contro un checkout pulito del principale più solo questi file: 1418 test, 0 guasti. Nessuna organizzazione esistente detiene un alias riservato o malformato.

  27. · kamo-shared-library

    Un marchio di un'organizzazione vive sotto il suo ALIAS, non il suo dominio

    La cartella un logo dell'organizzazione, colori, faviconi e sfondi sono scritti a nel secchio pubblico era il suo nome host con i punti trasformati in trattini — wendys.com divenne pubblico/wendys-com/. Questo ha funzionato solo quando ogni l'organizzazione aveva un nome host. Un dominio è facoltativo ora: è ciò che rende il marchio white-label andare in diretta, non che cosa fa esistere un'organizzazione. Quindi la derivazione non aveva nulla da rispondere per un'organizzazione che non ne aveva portato uno, e il fallimento non era un errore. Sul lato di scrittura provisioning rifiutato con "Nessun dominio configurato per questo organizzazione"; sul lato letto la derivazione è passata attraverso alla piattaforma propria cartella, quindi l'organizzazione è stata dipinta nei colori di Kamo con la propria attività che siedono correttamente fornite e non deferite. Un alias, al contrario, è obbligatorio, unico e già vincolato esattamente i personaggi che un segmento di percorso può contenere. OrgThemeAssets è una definizione di questo per l'intera tenuta. Era in codice aperto in una dozzina di posti su sei servizi e tre front-end — il provvisto, la lettera di preventivo, e-mail transazionale, il watermark e-signature, il la lobby di riunione, lo schermo di accesso — e ognuno di loro ha dovuto accettare carattere, perché un logo scritto sotto una chiave e richiesto sotto un altro è invisibile in un modo che sembra che il caricamento abbia fallito. La lettera di citazione è il primo chiamante si è spostato attraverso. Documenta anche la dividere il resto della tenuta ora segue: il FOLDER nomina l'organizzazione, e l'OST decide solo se la richiesta si risolve, dal momento che MinIO serve l'intero secchio da ogni tema.

  28. · kamo-internal

    Un rubinetto apre lo strumento, un tasto destro del mouse apre il menu

    Fare clic su una testa di esagonale ha aperto un menu di contesto, che significa l'atto comune — ottenere il mio chat back — costa due clic, e il menu stesso non è stato raggiungibile altro modo. The due sono ora gesti separati: - Fare clic a sinistra / toccare ripristina la finestra, inviando lo stesso `tool:focus` il riga "Apri" del menu già utilizzata. focusTool non-minima emette rimuovereHexhead, così la testa si schiarisce. - Il tasto destro del mouse apre il menu. I pulsanti secondari non iniziano più una resistenza, quindi il premere che si apre non può anche fling la testa. - Toccare non ha un secondo pulsante, quindi una presa stazionaria di 600ms sta in piedi. È armato solo per puntatori non-mouse e disarmato il momento in cui la testa stacca, quindi "hold it still" è l'intero gesto — trascinando una testa per più tempo non si apre mai il menu, e un menu già aperto viene ritratto se un trascinamento inizia. Le modifiche del menu: - L'intestazione X e' sparita. La sua unica etichetta era "Close", che si legge come "dismesso questo menu" — l'unica cosa che non ha fatto — quindi si sposta nell'elenco delle opzioni accanto "Apri {name}" come "Close {name}", dove ciò che scarta è scritto. - Il posizionamento ora mette un CORNER del pannello sul CENTRE della testa, raccogliendo qualsiasi dei quattro angoli mantiene il massimo sullo schermo. La vecchia regola ("oltre alla testa, capo, poi morsetto") è ciò che ha fatto sembrare arbitraria la posizione: il morsetto ha spinto il pannello lontano dalla sua testa vicino a un bordo dello schermo, che è esattamente dove vivono le teste. E' stato estratto da... è puro e testabile; il pannello è misurato piuttosto che indovinato a 460px. - La testa di chat di un membro mostra la loro foto, cadendo alle iniziali. Questo aveva bisogno di nuovo HeadState.avatarSrc: il `src` della testa ricade sempre su un generato iniziali immagine, in modo da non poter mai rispondere "è c'è una foto?". - Ogni pezzo di vernice cromata da var (--colore-primario) invece di un fisso indigo/violetto, che uscì quel colore per ogni white-label org indipendentemente della loro tavolozza. I colori di presenza rimangono semantici. Risolve anche un ascoltatore ridimensionato il popover aggiunto su ogni aperto e mai rimosso. Ha bisogno di kamo-translation-dictionary 5eac4334 (closeChat/closeTool), già spinto.

  29. · kamo-internal

    Date al paziente un link, non un token

    L'invito ora ha un posto dove andare — il portale vive su app. così il pannello mostra l'intero URL di attivazione con un pulsante di copia piuttosto che stringa opaca i problemi del server. Un paziente ha consegnato un token nudo deve capire dove va. Quelli che indovinano incollare una chiave di lavoro al loro record medico in una casella di ricerca. La mappatura è un subdominio scambiare l'host del personale, l'immagine dello specchio supporre che il sito app già fa circa il registro.*, quindi nessun backend deve conoscere i nomi degli host front-end. Un ospite che non è un subdominio inquilino rientra token: uno sviluppatore su localhost ottiene qualcosa di utilizzabile piuttosto che un link a un dominio che non esiste.

  30. · kamo-internal

    Rilasciare il record come FHIR e C-CDA

    §164.524(c)(2)(iii) è il modulo e il formato richiesto se è facilmente producibile. Entrambi erano già prodotti; solo uno è stato offerto. Un C-CDA è ciò che ingerisce il sistema di una pratica ricevente. Un fascio FHIR è quello L'app per la salute del paziente legge, e chiederne uno è il caso comune ora piuttosto di quello esotico. La linea helper dice chi ogni formato è FOR invece di nominare lo standard e lasciare la reception per farlo funzionare. Il destinatario va su entrambi i percorsi. Sul sentiero FHIR è quello che gira la lettura in una comunicazione registrata — lo stesso endpoint serve le schermate del grafico, e quelli non devono atterrare nella contabilità del paziente come comunicati. Il formato siede sopra il destinatario, non accanto al pulsante: fa parte di ciò il richiedente ha chiesto, non una preferenza download qualcuno scopre dopo digitando il nome.

Il tuo universo ti sta aspettando.

Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.

Gratis per sempre — nessuna carta di credito richiesta