Changelog
Ce qui est nouveau.
Chaque amélioration apportée à la plateforme, à mesure qu'elle est livrée.
· kamo-internal
Espace de travail de matériel d'entreprise (P0) - dossiers, recherche, volume, aperçu réel, compositeur de courrier électronique partagé
Remplace la grille plate à 200 éléments par un espace de travail complet des documents sur l'imagerie existante backend (qui prend déjà en charge les dossiers, les ordures, le partage, l'historique, l'encombrement pour MATERIALS): - Dossier-barre (créer/renommer/supprimer, glisser-dépliant) - Toutes / Vues de la corbeille - Recherche, tri, grille------------------------------------------------------------ - Sélection en vrac et téléchargement en vrac (zip) / e-mail / déplacer / supprimer - Tiroir de détail droit: prévisualisation réelle, renommage en ligne et description, transfert à dossier, partage interne (membre, permis-edit, expiration) et historique de l'activité - Le courrier électronique réutilise désormais le compositeur partagé MessageTool via l'outil mondial: event ouvert (Carte de courrier, CC/BCC, organisme riche, signatures, brouillons) au lieu d'une forme sur mesure - Nouvelles routes proxy d'imagerie: folder create/[id- rename-delicit-delete/move-doc, renommez, description, restauration, niveau d'accès - Supprime la bibliothèque matérielle remplacée; toutes les caractéristiques de Canva (créer/importe/autoremplir/ , les imgIds gérés comme des chaînes précises.
· kamo-internal
Remise/messages et rendu iframe, liste de menu de contexte, threading, races, a11y
Implique la vérification de la page de fond/messages. Questions communiquées : - Répondre/Répondre Les boutons All/Forward affichent maintenant des étiquettes de texte; retirées des plus importantes déroulant (ils sont à des boutons adjacents) tandis que le nouveau menu de liste les conserve. - Les lignes de listes de messages ouvrent maintenant le menu d'action partagée en clic droit et en touche la pression longue et les lignes gagnent a bague de mise au point (j/k), case à cocher de sélection (x) et défilement en vue. - Le courrier électronique rend désormais en bac à sable i-hauteur iframe (srcdoc) au lieu de l'in-line dangereusementSetInnerHTML. Cela isole l'email CSS/layout, qui fixe le Le "bouquet" de la bande de lecture et la perte de sélection de texte de la rive moyenne, ferme l'ensemble de l'application CSS-laak, et ajoute une porte de pixel de suivi par défaut "images externes bloquées". Correctité/buges: - Répondre/Réponse complète - Tout est maintenant placé en réponse/références (Brouillier unifié type) ainsi les réponses restent filetées; threads de réponse rapide Références et parent id, HTML- s'échappe du corps et envoie de la boîte aux lettres active partagée/de membre. - Vers l'avant porte les pièces jointes originales; la réponse/vers le renvoi résout le message complet (organe de rencontre pour les actions de liste-basque) au lieu de citer tout ce qui est ouvert. - Gardes de course (derniers-wins) sur les chargesMessages / sélection de message / charge de fil / charge de conversation; poll ne raye plus les utilisateurs de page page 0; rechargement WS filtré à la pliance active; searchPage resets sur le changement de requête. - ThreadDetail dilaminants de l'état clé par folder-uid (crise croisée); markRead uniquement en cas de non-lire; essayer d'utiliser le support de dossier. - Composer: récepteur dactylographié, mais non engagé, envoyer un formulaire; deduèvre dedu. Capsule d'agrégat de 40 Mo: mises à jour fonctionnelles; abandonnez le client redondant OTK. - Proxy: marge avant et valideurs de mise en cache pour la mise en service de la mise en service/en continu en ligne; fermeture l'encliquetage en plusieurs parties sur les chemins d'approvisionnement gardés. - Envoyer par courrier électronique WebSocket: arrêt réel après max retries, retournement exponentiel, connexion stable rétrécissement; valeur contextuelle mémorisée pour réduire le re-retour de la baratte du consommateur. Qualité: unifiée et a11y (labels, aria-pressé, lignes/marquettes actionnables sur le clavier); i18n (noms de dossier, dates de liste, pagers, Plein de l'UTI); supprimer le code mort et les entrées à court-circuit du clavier fantôme.
· kamo-internal
Réaménagement du tableau d'instruments et familles d'accent, tête de mât, nav de section, carte de verre unifiée
Redéfinit les deux atterrissages les plus visités en forme d'autorisation dans la console d'un opérateur en forme de permission. Fondation - Allumez le Géist Sans/Mono déjà groupé (rejeté par une repli Arial); la typographie MUI par voie de Geist. - Ajouter des jetons de la famille du module de sécurité en blanc, un panneau d'élévation, un bord de toit en verre, des utilitaires de label .tabulaire et un jeton de la maison de l'appareil. Fixer --gradient-prime-transparent (a été bleu codé en dur - maintenant dérivé de -color-primaire). FeatureCard partagé (un composant, clavier correct) - Maintenant une véritable ancre (NextLink): Tab/Entrée/middle-click et l'anneau de mise au point visible peuvent enfin tirer. Ajout de l'utilisationReducedMotion guard, tandis que l'entrée InView sur la facilité de la maison, la puce éclairée par la famille, le décompte de l'attention, le mètre de poids et le passage de surClic. Relève l'intention de couleur par module qui a été rejetée lors de la restitution. Supprime la carte à domicile en ligne fourchue. Foyer - Mâsthead (mono kicker et hossole/nom de la bande d'état tabulaire) remplace la bannière de l'org-only; oklab Backdrop remplace le fil d'appel à l'échelle grise multiple-filtre; la rampe de lancement en forme de permission (l'annuaire primaire et groupé de l'utilisation) par une bande d'attention "Needs you aujourd'hui" et "Retour" (nouveaupoints de repère. Paramètres - Rendres à rayures cyclo-en-coche sous forme de copies - rail à index de section collant - IntersectionObserver scroll-spy - nombre en direct, 4 supergroupes, divulgation progressive (Personal open, récent, dernière section restaure, expansion/récupération complète), lignes d'instruments SectionHeader, et un accès rapide fixe (corrigée MAX-RECENT slice - temps de départ. Préserve exactement chaque autorisation/porte d'entrée du pavillon du produit. Supérieur : squelette et EmptyState, préfère la transparence réduite et les chemins de mouvement réduits, l'exclusion des chapeaux de marquage par opérateur-locataire. Les nouvelles chaînes d'UI atterrissent dans le kamo-traduction-dictionary (en) dans un engagement compagnon.
· kamo-shared-library
- mise à jour ciblée
la conversion async (fils virtuels) et les balayages programmés maintiennent un ImgDat détaché; save()/merge() cascades dans l'orphelinRemoval-true images collection et jette des images "une collection avec cascade-all-delete-orphan n'a plus été référencée par la propriété l'instance d'entité'. Une MISE À JOUR en vrac des seules colonnes de vignettes évite le graphe de l'entité entièrement et est à l'abri de tout fil.
· kamo-internal
Ajouter Répondre Tous aux messages de lecture du volet et de la vue du fil
Répondre à tous a fait l'objet d'une publicité (étiquette clavi-shortcut touche . . . . . . . . . . . . . Mouteur. Wire it up: un nouveau calculReplyAllRecipients helper met l'expéditeur dans À tout autre destinataire initial en Cc, à l'exclusion de soi-même et de dépoussiérage cas-insensible. Ajout d'un bouton, du raccourci 'a' et d'une entrée contextuelle-menu dans MessageBrowser, plus un bouton par message dans ThreadDetailView.
· InitializerService
Indice unique faisant exécuter un ensemble de clôture actif par prêt (eClose double-close back-stop)
CREATE UNIQUE INDEX uk-mlos-closing-pkg-active-loan ON mlos-closing-package (Lunan-file-uid) Où le statut «ANNULÉ». Double appui durable derrière le Garde d'idémpotence intégrée de l'assembleur: un ensemble de fermeture actif dupliqué , dirigent son propre enregistrement et financement du MERS (une double fermeture). Enveloppe de fermeture vit en partageant des données avec seulement des entrées non uniques « Indice » et ne peut pas exprimer un Contrat partiel-unique via JPA, donc c'est DDL manuscrit ici (KI possède schéma). Idémpotent; s'applique à la prochaine course KI.
· MediaService
Matériaux en cours de fabrication programmés de vignette
Un balayage sans tête ne peut pas conduire le pipeline utignon OTK de ConversionService, donc générer une vignette py-pGN page-0 via ImageIO immédiatement après avoir stocké l'exportation Les matériaux programmés sont maintenant rendus dans la grille comme les autres, aucun remblai n'est nécessaire.
· kamo-internal
Calendriers de génération récurrents UI
ScheduleManager : créer/liste/supprimer des horaires (recettes : tous les jours/hebdomadaire/mensuellement) heure/jour - cibles optionnelles d'autoposte - légende); lancé à partir de matériaux, fermés sur la capacité Autofill (Enterprise) de Canva. - des proxys canvaApi /api/canva/schedules.
· MediaService
La génération programmée et le balayage exécute des recettes sur une cadence
- CanvaScheduleCtroller: CRUD pour les horaires d'orge (recette et cadence: heure/jour des objectifs sociaux optionnels), calcule nextRunAt CanvaGenerationService : sans tête Matériau (en cours de procédé ImageService; vignette sans vignette jusqu'au remblai) - CanvaScheduleSweep: «Revendication de balayage atomique, à titre de schéma, génère et l'auto-poste le résultat des connexions sociales cibles via couchus URL signé
· kamo-shared-library
Entité CanvaSchedule - repo (génération récurrente)
Calendrier récurrent à la gale org (recette et cadence et cibles sociales facultatives) avec une requête de réclamation atomique de sorte qu'un balayage MediaService exécute chaque calendrier prévu une fois.
· kamo-internal
Transcription de chuchotage extensible en ligne sur la messagerie vocale et les lignes d'appel
Chaque ligne enregistrée (voixmail et historique des appels) obtient un "Transcription" qui fetche la transcription de Whisper de l'enregistrement à la demande et le montre en ligne, donc les membres peuvent le lire sans ouvrir le joueur. Caché par enregistrement.
· kamo-internal
Sauver et réutiliser des recettes de remplissage automatique
TemplateAutofill: "Recettes sauvegardées" copeaux charge un modèle et cartographie préchargée; "Sauvegarder la recette" maintient le modèle actuel - valeurs de champ à l'échelle de l'ensemble. - canvaApi list/save/delete - /api/canva/recipes proxies.
· MediaService
Recettes d'auto-remplissage sauvegardées CRUD (org-scoped)
CanvaRecipeContrôleur: GET/POST/api/média/canva/recettes et DELETE/-id- sauvegarder/liste/supprimer un modèle de marque nommé et cartographie de champ, portée à la l'orge de l'appelant.
· kamo-shared-library
CanvaAutofillEntité de recettes et de reprise (recettes de remplissage automatiques évincées)
Org-partagé nommé liaison d'un modèle de marque Canva aux valeurs de champ (littéral texte ou une image de matériau), de sorte que les stewards peuvent refaire une fusion de données standard.
· kamo-internal
Ajouter un champ d'identification des matériaux pour créer un formulaire, une page de détails et des importations
File un matériau annulableId (max 40) par l'intermédiaire du type plomb, leadApi (créer et mettre à jour les demandes de filaire), et le champ de système leadFields partagé Liste - qui pilote à la fois l'assistant d'importation manuelle et l'API/fournisseur l'ingestion de l'UI de cartographie (plus le modèle CSV téléchargeable). Ajout de l'entrée à / leads/nouveau et une ligne de visualisation/mise sur la page des détails de plomb, câblée à la page carte de flash en temps réel. Étiquettes via leads.new.fields / leads.view.fields / leads.view.rows (materialId).
· kamo-internal
Entreprise automatique de remplissage de l'interface utilisateur et des modèles de marque de fusion de données
TemplateAutofill: choisir un modèle de marque Canva, remplir chaque champ avec littéral texte, un org/jeton de conformité (NMLS, Equal Housing disclosure, org name/phone/ site web/adresse, nom du membre), ou image du matériel; générer une donnée fusionnée concevoir et l'importer à nouveau dans les matériaux. Relâché sur la Canva Capacité (Entreprises). - les méthodes canvaApi et les modèles /api/canva/marque, - les procurations.
· MediaService
Modèles de marque de remplissage automatique et de fusion de données
- CanvaApiClient: liste de modèles de marque (dataset-non-empty), obtenir l'ensemble de données, Chargement d'emplois, création/crémenter des emplois à autoremplissage - CanvaContrôleur: GET/marque-modèles, GET/marque-templates/-id-/dataset, POST /autofill et résout les champs d'image en téléchargeant les MATERIALS référencés matériel à Canva en tant qu'actif, puis fusionne des données; sondages à la nouvelle conception. Canva 403 (pas de capacité de remplissage automatique) en tant que autoremplissage - non disponible.
· SecurityService
ID de matériau persisté sur l'importation manuelle et l'admission d'API
Les deux commutateurs setDireFieldOnCreateRequest n'ont pas de cas par défaut, donc un Un système non mapappéFieldPath est silencieusement abandonné. Ajouter un cas materialId à la importation manuelle (LeadImportController) et fournisseur/API-intake (LeadIntakeController) les expéditeurs donc une colonne/champ d'identification matérielle cartographié persiste en fait.
· kamo-shared-library
Ajouter champ ID de matériau bout à bout en partage
Ajoute un matériau max-40-cartre inond à l'entité plombi-trouillage (MATERIAL-ID VARCHAR(40)), le enregistre dans LeadHistoryFieldRegistre (catégorie de profil) les modifications sont vérifiées, le threads via Create/Update/Read DTO et LeadService crée/mise à jour (trim et tronquer à 40, produit de la société miroirName), et le conserve au-delà de la conversion du plomb de rial.
· kamo-internal
associe social et courriel à un matériel et à des liens publics
Distribution de matériel de commercialisation, construite sur la nouvelle limite publique signée. - matériauxApi.publicLink(imgId) et/ou matériaux/composant de liaison - Matériel : "Copier le lien public" et "Email this material" (joint le fichier à l'adresse suivante: un envoi sortant via le multipart/api/courrier/coursal existant, relié par un courriel org) MatériauPickerDialog (grille réutilisable sur l'assisoc de MATERIALS) - SocialComposer: le bouton photo autrefois inable ouvre maintenant le sélecteur et s'attache un matériel en tant que messager par l'intermédiaire de son URL publique (œuvres pour Meta/Telegram/Discord)
· MediaService
URL signées à court terme pour la commercialisation des actifs
Lets les prestataires sociaux (Meta) et le courrier électronique va chercher un matériel spécifique pour un contenu limité fenêtre sans exposer le seau d'imagerie-matériau privé. - MatériauSigner: HMAC-SHA256 (platform.enc-key) jeton imgId:orgId:exp, 1h TTL - MatériauxContrôleur : POST /api/média/materials/link (URL d'auth et de menthe pour un image de MATÉRIELS appartenant à l'org) servir des octets pour un jeton valide; org - assoc vérifié). Règne les activités existantes sessionless /api/media/t- forward - pas de changement d'APIService nécessaire.
· kamo-shared-library
Transition de l'emprunteur de première classe
PROJET DE APPLICATION-TAKEN pour un emprunteur (une partie prête, pas un opérateur, donc non LOS-TAKE-APPLICATION). Itinéraires par transition() avec un prédicat de portée qui UNE SEULE la demande de prise en charge et un cloché à Statusid, de sorte que l'emprunteur soumission devient une transition appropriée en matière de gazoducs - la légalité de l'État-machine, l'étape à chaîne de la hachage, la demande de soumission (INITIAL-DISCLOSURE), et après l'événement STATUS-CHANGE - au lieu d'un poke de dossier de prêt silencieux. L'adhérent à la partie de prêt est vérifiée par l'appelant.
· kamo-internal
Supprimer et prévisualiser l'importation-fichier-à-Canva
- supprimer un matériau (conduite sur MANAGE-MATERIALS) avec confirmation - cliquez sur une vignette pour la visualiser dans une boîte à lumière - "Importer un fichier" transforme un PDF/PPTX/image en un concept Canva éditable (le prétexte reconstruit le corps en plusieurs parties comme le téléchargeur d'imagerie)
· MediaService
Importation d'un fichier dans Canva en tant que dessin modifiable
(importation de conception binaire) - CanvaController POST /imports (multipart) - création - Emploi d'importation de pollules - éditeur lien profond avec corrélation-état pour retour-nav - chute des importations de Base64 actuellement inutilisées à CanvaOAuthContur
· InitializerService
Migration ajoute la colonne TEXT enregistrements.transscript
· VOIPService
Retour de la transcription dans les métadonnées d'enregistrement pour le lecteur de téléphone mobile
· kamo-internal
Montrer la transcription de whisper dans le lecteur multimédia pour téléphone portable
· ConversionService
TranscriptionService partagé et critère générique; transcrire des enregistrements VOIP
- Extraire un service de transcription réutilisable (ffmpeg normalise - et chuchotement) et a critère générique POST /api/conversion/transcrire, remplaçant le critère de répondeur spécifique contrôleur. Meet et VOIP partagent maintenant un chemin de transcription. - RecordProcessControviseur : transcrire chaque enregistrement VOIP/courrier électronique définitif en cours (non fatal sur la défaillance) et stocker la transcription sur l'enregistrement.
· kamo-shared-library
Colonne de transcription sur Enregistrement et EnregistrementMétadonnées
Ajoute une colonne TRANSCRIPT TEXTE à l'entité d'enregistrement et fait passer une transcription à travers le z (avec rétrocompat les constructeurs de 5 et 9 à 9 abrégs sont inchangés). Populées par le l'enregistrement-finaliser le flux via Whisper; créé par la migration KI.
· MediaService
Vérifier la signature JWT return-nav; rafraîchir les jetons bien
- CanvaJwtVerifier: vérifier la signature de la corrélation-jwt's Ed25519 contre Canva's JWKS (/connect/keys), plus aud/exp/type; clés mises en cache par enfant. Le retour nav vient de se fermer à l'importation manuelle en cas d'échec de la vérification. - CanvaTokenService : abandonnez l'inefficacité rafraîchissement/marque aide à la valise (Printemps des données par appel tx et par chariot clarifier avec un commentaire.

Votre univers vous attend.
Commencez gratuitement en quelques minutes. Ajoutez des produits quand vous êtes prêt. Pas de migration, pas de nouvelles connexions.
Gratuit pour toujours — aucune carte de crédit requise