Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· kamo-internal
AI auto-tag + capzione UI; Impostazioni di costo-tier/visione del fornitore (P3)
Impostazioni → AI → Fornitori: ogni provider acquisisce un livello di costi (Luce/Medium/Heavy) seleziona e un Supporta la visione attiva (+ list chips). Materiale cassetto: 'Suggest tags con AI' (accetta chip da applicare) e "Generare descrizione con AI" — entrambi chiamano i fornitori configurati org tramite MediaService→AIService; non chiuso con un messaggio chiaro quando non viene impostato alcun fornitore di visione.
· AIService
Provvedimento del costo-tier/visione + endpoint di visione unica interna
AiProviderController legge/echoes costTier + supportiVision. ProviderRouting Guadagni di servizio selezionareVisionProvider(orgId, tier). Non e' vero. corre un solo colpo il completamento della visione riutilizza il provider/adattatore dell'org (nessuna sessione/RAG/tools). Nuovo sistema AiInternalController POST /api/ai/internal/vision (X-Internal-Auth, OTK-exempt) per i chiamanti di servizio-servizio.
· MediaService
AI auto-tag + didascalia tramite i fornitori di org (P3)
MaterialeAiController POST E' il momento giusto. verifica la proprietà, mints un URL di materiale firmato di breve durata, e chiama l'endpoint di visione interna di AIService (org's propri fornitori, livello LIGHT) tramite AiVisionClient. Lenient tag parsing; non chiuso se nessuna visione fornitore configurato.
· kamo-shared-library
AiProvider costa tier + la bandiera della visione (due assi di capacità ortogonali)
Aggiunge il costoTier (LIGHT/MEDIUM/HEAVY tramite il nuovo AiProviderTier enum) e sostieneVision boolean a AiProvider, così le integrazioni possono scegliere quanto costoso un fornitore da utilizzare e quale visione di supporto. Repo finder per i fornitori di visione attivi. Colonne aggiunte a AI PROVIDERS via ALTER.
· EmailService
Consenso "mostra immagini esterne" lato server
Sostituisce il client-local (localStorage) che ricorda la scelta dell'immagine esterna con un record durevole per membro. Nuovo RemoteImageConsentService (fail-soft legge così messaggio fetch funziona ancora prima della tabella esiste) + POST /api/email/remote-image-consent per registrare il consenso. Il messaggio completo DTO ora porta remoteImages Ammessi (guardati da membro + Message-ID), popolato nel singolo messaggio, thread e casella di posta condivisa Individua i percorsi in modo che il client sementi il suo cancello dal server.
· kamo-shared-library
EmailRemoteImageEntità client + repository
Iscritto che un membro ha scelto di visualizzare immagini esterne (rimozione) per un messaggio specifico, chiave da member id + normalized RFC Message-ID (unique). Segui il modello e-mail metadata (FilterRuleEntity). Indietro server-side "display immagini esterne" preferenza in modo che la scelta persista attraverso dispositivi e sessioni. KamoInitializer crea il tavolo sulla sua prossima corsa.
· InitializerService
Aggiungere la colonna INVESTOR PRICE a rate locks + prestito pricing snapshots
@Order(80) idempotent ADD COLUMN IF NOT EXISTS (DECIMAL(9,4), corrispondente al prezzo-to-100 griglie) in modo che il RCE MLOS possa registrare il vero non-par prezzo di esecuzione degli investitori sul serratura vincolante di registrazione e la sua citazione limite invece di par-by-omission. Additivo nullable; mirrors RecordingTranscriptMigration.
· kamo-shared-library
Registra il vero prezzo di investimento non-par su RateLock + LoanPricingSnapshot
Il tasso vincolante-blocco-di-record e il suo vincolo hanno portato solo tasso + bloccoGiorni; punti di sconto /riginazione sono stati lasciati null, quindi le entità principali leggere PAR mentre il Il numero di prezzo reale e'... margine cotto in) vissuto solo sul MLOS side-ledger MlosLockRecord.lockedPrice. Aggiungi una colonna INVESTOR PRICE (DECIMAL(9,4), corrispondente alle griglie spedite da prezzo a 100) a entrambe le entità + i loro DTO + OTTOBRE È il prezzo di esecuzione INVESTOR, deliberatamente NON decomposto in punti di debitore (che reti fuori margine e ha bisogno del modello di tassa — decomposing ora sarebbe misstate mutuatario punti, un errore di divulgazione Reg-Z/ECOA). I punti rimangono nulli fino a quando il modello di tassa atterra; il prezzo grezzo è ora conservato sulla serratura della registrazione, non solo il registro laterale. Populate dal RCE (MLOSCapitalMarketsService) da finalPrice; colonna materializzata di KamoInitializer RateLockInvestorPrezzoMigrazione (ADD COLUMN IF NOT EXISTS).
· kamo-internal
Consente agli amministratori di collegare RingCentral per conto di un membro
Nelle impostazioni del telefono di un altro membro, un amministratore con i diritti di gestione-VOIP (canManageVoipConfig) ora vede Connect/Reconnect/Disconnect per il membro RingCentral account invece di una sola lettura "devono collegarlo da soli" messaggio — per il caso comune in cui un sysadmin detiene il membro RingCentral credenziali. La copia di connessione ti fa capire che accedi con quella parte credenziali, e l'ID membro di destinazione è passato attraverso (server applica il diritto).
· VOIPService
Permettere agli amministratori di collegare RingCentral per conto di un membro
Il flusso per-membro RingCentral era solo self-serve, quindi un amministratore di gestione Il profilo di un altro membro ha visto "devo collegarlo da solo". Sysadmins comunemente creare l'account RingCentral del membro e tenere le loro credenziali, quindi dovrebbero essere in grado di connettersi per conto del membro. - OAuthController membro start/status/disconnect ora accetta un target opzionale MemberId. Agire su un altro membro richiede MANAGE EXTENSIONs o MANAGE VOIP SETTINGS (mirrors il cancello del profilo); auto è sempre permesso. - avviare verifica anche il membro di destinazione è effettivamente assegnato tale istanza (il istanza è org-scoped, quindi questo conferma lo stesso-org). - Chi completa il login RingCentral determina ancora l'identità; la guardia di estensione collegata a vs bandiere un errore.
· kamo-internal
Analisi di utilizzo + Vista delle prospettive (P2)
Records Non e' vero. eventi e una finestra di dialogo Insights con org totali + il materiali più utilizzati (da download + anteprime).
· MediaService
MaterialAnalyticsController — eventi record + aggregati
# POST # (record) + GET /analytics (conti per materiale di tipo + org totali).
· kamo-shared-library
MaterialeEvent entità+repo (analisi dell'utilizzo)
Solo eventi di utilizzo # Con un per-(imgId,type) # query aggregata. Tabella MATERIAL EVENTS (targeted CRDB DDL; KI auto-scans).
· kamo-internal
Flusso di lavoro omologo UI + filtro di carico (P2)
Controllo dello stato nel cassetto e un distintivo di stato sulle piastrelle. stato filtro nella barra degli strumenti. Carica anche tutte le pagine materiali in alto (incassate) quindi ricerca/tag/ filtri campagna/status coprono l'intera libreria, non solo la prima pagina.
· MediaService
MaterialReviewController — mappa di stato + set-status
GET /api/media/materials/reviews (mappa imgId→status) + POST per impostare lo stato del materiale (validato, recensore-stamped, upsert).
· kamo-shared-library
MaterialeReview entità+repo (stato di approvazione side-table)
DRAFT/PENDING/APPROVED/ARCHIVED per materiale, con chiave imgId (imaging schema intatto). Tabella MATERIAL REVIEWS (targeted CRDB DDL; KI auto-scans).
· kamo-internal
Per-membro RingCentral collegare + softphone web-phone v2 correzioni
Softphone SDK correzioni (ringcentral-web-phone è v2.4.0, non v0.x l'adattatore mirato — il vecchio wp.userAgent.* uso gettato init): - Rewrite RingCentralPhoneSdk per l'API v2: singolo oggetto sipInfo, start()/call()/dispose(), eventi inboundCall/outboundCall, uscita anticipata cablaggio, muto sintetizzato/hold/muted/unmuted e adozione della SDK per-call audio elemento come #rc-remote-audio così AV volume / dispositivo routing funziona. - PhoneSdk.SipInfo: aggiungere outboundProxyBackup + stunServers. - useSoftphone: cancellare il banner bloccato in arrivo su un blocco remoto durante anello; non abbattere il SDK mid-call su credenziali rinfresca; guardia contro auto-risposta + call-forward double-accepting. Per-membro RingConnessione centrale: - PhoneSettingsTab: self-serve "Connect RingCentral" carta sul proprio membro profilo (gli amministratori ottengono lo stato di sola lettura), OAuth redirect handling, e un Avvertenza all'estensione. - voipApi: membro OAuth start/status/disconnect. - useSoftphone + SoftphonePanel: esigenzeConnessione gating con un "Connect il tuo account RingCentral" prompt invece di un errore di registrazione.
· VOIPService
Per-membro RingCentral OAuth identità + softphone SIP correzioni
Softphone SIP correzioni credenziali: - getSipCredentials: mappa in uscitaProxyBackup + stunServers (web-phone v2 esigenze loro per WSS failover + ICE/media); gettare ProviderException (502) invece di un bare RuntimeException (500) che la cattura di SipController ha mancato; guardia contro un identità SIP errata. Per-membro RingConnessione centrale: - RingCentralTokenResolver: risolvi/rinfresca il token di un membro con single-flight (RC ruota token di rinfresco), bisogno-ricollegamento su un token morto, e revocare la connessione. - Membro della sessione solo (auto-serve), Campo di applicazione VoipCalling, PKCE; collegare il callback registra il estensione collegata. - SipController + PhoneProviderFactory: il softphone registra come membro Estensione OWN; restituisce un 200 esigenzeMemberConnection discriminatore quando non collegato. - MemberVoipConfigController: esporre lo stato di connessione; revocare su riassegnazione. - La nuova tabella legge degrade con grazia se member voip oauth token non è ancora migrato.
· kamo-shared-library
Aggiungi MemberVoipOAuthToken per i collegamenti anelli centrali
Token OAuth (memberId, provider, istanzaId) Anello ad anello con circuito chiuso — softphone sip-provision più registro di chiamata personale del membro / segreteria / presenza. Distinzione dal org/instance OrgOAuthToken (conto-scopio). Richiede una corsa KamoInitializer per creare E' il momento giusto
· kamo-internal
Collezioni/campagne UI (P2)
Sinistra-nav Collezione sezione (creare/select/delete), filtro campagna sulla vista della collezione, e un editor di collezioni nel cassetto dei dettagli (add/remove material, create-and-add). Filo attraverso /api/materials/campaigns/* + materialCampaignsApi; workspace unisce la mappa dell'elemento lato cliente come tag.
· MediaService
MaterialeCampaignController — CRUD + mappa dell'elemento + aggiungere/remove
/api/media/materials/campaigns: list/create/update/delete, GET /items (org-wide imgId↔campaignId mappa), POST /add + /remove con controlli di org-ownership.
· kamo-shared-library
MaterialeCampaign + entità/repos (collezioni)
Collezioni di prima classe che raggruppano materiali attraverso cartelle. Tavoli MATERIALE CAMPAIGNS + MATERIAL CAMPAIGN ITEMS (targeted CRDB DDL; KI auto-scande sulla prossima corsa).
· kamo-internal
Tag UI + controllo a livello di accesso (P2)
Tag (org-scoped, cross-cutting): tag chips su piastrelle, una barra filtro tag (AND attraverso selezionato), e un tag editor nel cassetto dei dettagli (assegna/rimuovi esistente, crea-e-assegna nuovo). Filo attraverso /api/materials/tags/* proxies + materialiTagsApi. Aggiunge anche una visibilità (livello di accesso) controllo al cassetto utilizzando il punto finale di accesso esistente.
· MediaService
MaterialTagController — tag CRUD + assegna/unassign + mappa di assegnazione
/api/media/materials/tags: list/create/delete tags, GET /assignments (org-wide imgId↔tagId mappa lo spazio di lavoro si unisce lato client), POST /assign + /unassign con i controlli di org-ownership.
· kamo-shared-library
MaterialeTag + entità di assegnazione/repos (tassi di geoscopi)
Asse di tag piatto e trasversale su cartelle per materiali di marketing. Tavole MATERIALE TAGS e MATERIALI (creato tramite CRDB DDL mirato; KI auto-scans sulla prossima corsa).
· kamo-internal
Link pubblici gestiti UI (P1) — creare/espiry/revoke/view-count
Il cassetto del dettaglio ottiene un pannello 'Public links' (ShareLinkManager): crea un collegamento durevole con un'etichetta facoltativa e la scadenza (1h/1d/7d/30d/never), copiarla, vedere il suo numero di vista e revocarla. Supportato dai nuovi endpoint del registro MediaService tramite /api/materials/links proxies. The un-shot veloce-copia di collegamento rimane per la condivisione di social/email veloce.
· MediaService
Finalpoint di collegamento pubblico gestiti (creare/list/revoke) + servizio tracciato
Aggiunge POST/GET /api/media/materials/links e DELETE /links/{id} supportato da MaterialShareLink, e risolve i gettoni gestiti sul GET pubblico per primo (controllare revocato / scadere e urtare viewCount) prima di tornare al vecchio verificatore HMAC. Token opachi casuali, placcati org controlli di proprietà, TTL bloccato a <=1y.
· kamo-shared-library
MaterialeShareLink entità del registro + repo (collegamenti pubblici gestiti/tracciati)
Supporti revocabili, espulsi, link pubblici conteggiati per materiali di marketing — persistiti in modo che i collegamenti possono essere elencati, revocati, e contati (vs. il senza stato HMAC token one-shot). Auto-scanned by KI (@EntityScan com.kamo) e MediaService; ha bisogno di una corsa KI per creare Tabella MATERIALE SHARE LINKS.
· kamo-internal
Aggiungi il tasto destro del mouse / menu contestuale a righe di conversazione
Completa il menu di azione elenco in entrambe le modalità di visualizzazione. Conversazione righe ora aperte lo stesso menu condiviso sul tasto destro del mouse e toccare il tasto lungo con le azioni a livello di thread: Rispondi / Rispondi Tutto / Avanti (operando sull'ultimo messaggio del thread, presa su richiesta e composta dalla casella di posta attiva), Report Spam / Not Spam and Delete (applicato attraverso l'intero thread), Mark leggere, e Star / Unstar.
· kamo-shared-library
DecisionGate.applied Threshold espone la barra di fiducia reale
Il cancello si applica internamente max (corridoio tenant, sicurezzaFloor, piano) ma I chiamanti avevano solo il muro pre-gate. applicato La soglia restituisce il vero bar in modo da una decisione di registrazione può persistere la soglia-IN-EFFECT (esaminatore- riproducibile) invece di un valore che il cancello solleva silenziosamente. Additivo; valutare() invariato. DecisionGateTest 14/14 pass.

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