Changelog
Was ist neu?
Jede Verbesserung an der Plattform, wie sie geliefert wird.
· SecurityService
Starten Sie eine Coder-Sitzung in der Cloud, und sagen, welche Terminals sind
Repository als cwd) und antwortet "Cloud: true"; die Maschine baut die Eine Cloud-Session kann beginnen. Die Terminal-Liste trägt die Agenten "Cloud" markieren durch, für die Wolke auf dem Fenster-Symbol.
· KlusterServices
Starten Sie eine Coder-Sitzung in der Cloud von einer lokalen Kasse
Repitor. Das Bündel wird gezwungen, weil unsere Fernbedienungen Forgejo sind, nicht GitHub, und der Punkt ist die Kasse auf dieser Festplatte. Nein --Erscheinungs-Modus (der CLI lässt BypassPermissions für eine Cloud-Sitzung fallen) und keine --Sitzung-id oder Empfang (die Cloud benennt die Sitzung und führt hier keine Niederschrift). Die tmux-Sitzung ist markiert @kamo_cloud, so dass die Terminal-Liste berichtet "Cloud: true" und die Konsole kann eine Wolke auf dem Fenster-Symbol setzen, nachdem Die Auswahl des Menüs für die Auswahl.
· kamo-internal
Ansitze sitzen über dem Körper, wie die Akten selbst
Eine E-Mail, deren einziger Inhalt ein PDF war, hatte keine Möglichkeit, die Datei: die Büroklammer zeigte auf der Liste Reihe, und die Lesescheibe zeigte nichts. EmailService hatte die PDF-Inline markiert, weil die Google Mail-App gab es eine Content-ID (fixiert dort in 0de0823); das Pane ließ jede Inline Teil, ohne zu fragen, ob der Körper tatsächlich gemalt. Die Regel lebt jetzt an einem Ort, denkmalgeschützte Anlagen: ein Teil bleibt draußen die Liste nur, wenn das HTML-Körper auf seinen Cid verweist:. Die Lesescheibe, die Vorlaufzeit und die Forwarding alle verwenden es, so dass eine weitergeleitete Nachricht nein länger lässt diese Datei auch leise fallen. Es traut dem Server nicht flag, welche im Browser eingezwischentchten Körper noch von vor der Korrektur tragen. Der Desinfektionsmittel löst cid: Referenzen mit der gleichen Normalisierung, so Alles, was aus der Liste herausgelassen wird, ist immer etwas, das der Körper zeigt. Das Befestigungsregal, erstes unter der Kopfzeile: - Jede Datei ist eine Karte mit der die Datei selbst: Seite eins eines PDF (mit seine Seitenzahl), das Foto oder die Glyphe des Typs auf leerem Papier - ein Klick-Vorschau in einem Vollbild-Viewer: PDF über pdf.js mit Zoom und eine Seitenzählung, Bilder fit-to-screen mit Click-to-Zoom, Video und Audio-Player, Text und CSV/TSV als Tabelle; die Pfeiltasten und ein filmtrip zwischen Dateien bewegen - Downloads gehen durch holen, mit dem Per-Tab-Sitzung Header eine nackte <ein Download] nie, mit einem Fortschrittsring und einem gezeichneten Tick - "Download all" reicht jede Datei als ein .zip im Browser geschrieben - Tastatur-erste, reduzierte Bewegung geehrt, Axt sauber; zwei Karten pro Reihe in einer schmalen Schein
· kamo-shared-library
Arive als zweiter externer LOS und als Anbieter Naht, die real ist
Arive ist nur über seine nur eingeladene Zapier App erreichbar, so dass die Verbindung ist Zapier in beide Richtungen: Kamo postet Befehle (leihen, Update-Darlehen erstellen Bühne, Update Lead, konvertieren führen) zu pro-Markt Catch Hooks, und Arive's Triggert Post zurück zu einem per-Verbindung eingehenden Token. Der Adapter, Feld mapper (drei Arive-Nennungen, aus der Live-App lesen), Bühnenkarte, verschlüsselt Geheimnisse und das Aktivitätsprotokoll leben in integrations.arive / integrations.los. LeadService führt nicht mehr MeridianLink Code für jeden Link aus. Pushes gehen zu der Link eigener LosProviderAdapter; ein Provider ohne einen wird übersprungen und protokolliert, anstatt einen SOAP-Umschlag zu erhalten. Inbound gilt nehmen Sie eine Anbieter-neutraler LosLead-Patch (Kontakt, Postanschrift, Hypotheken-Fakten, Status) und Attributhistorie an den Provider. Der Reeder sucht Mitglied Anmeldeinformationen durch den Anbieter der Verbindung, und ein Markt sparen mit einem unbekannten MLOS Wert ist ein 400 statt einer stillen NO_MLOS. Die Spalten dieser Karten existieren bereits in Yugabyte (LosAriveSchemaMigration's Vor diesem Push wurden auch die Anweisungen angewendet).
· kamo-internal
Ein entworfener Startbildschirm, in der eigenen Marke der Organisation
Öffnen eines Computers zeigte eine Zeile von Klartext auf einer weißen Seite, direkt in die Registerkarte mit geschrieben "document.body.textContent". Für bis zu neunzig Sekunden - ein Lebenslauf liest das gesamte Gästespeicherbild zurück aus einem replizierten Volumen - dieser Satz war die gesamte Erfahrung, und es liest sich als Browser Fehler und nicht als eigene Software des Mitglieds. Eine Seite, die kaputt aussieht, ist eine Person in der Nähe von vier Sekunden, die nichts löscht. Es ist ein Bildschirm jetzt, gebaut, um diese App Kanon statt erfunden: die radiale primäre / sekundäre waschen auf Weiß, eine weiße Karte im Radius 14 mit --elev-hover, dem 90deg Heldengefälle als Regel, --Ease-house, Lichtmodus. Das Logo der Organisation und sein Live **************** a Ring zählt bis zur Schätzung der SERVER gab eher als eine Vermutung, und Umgebung wäscht, dass bevorzugt-reduziert-Bewegung schaltet sich komplett ab. Ein Scheitern hat jetzt einen Ausweg. Es zeigt den eigenen Satz des Servers "kein Knoten hat derzeit 8 GiB free" ist es wert zu lesen - und ein Versuch erneut, dass der Start in der gleichen Registerkarte wiederholt. DAS TAB KEEPS THE ORGANIZATION'S ICON, das ist die andere Hälfte davon. Navigieren zum Gateway reicht das ganze Dokument an Guacamole, dessen eigenes .<link rel="icon" href="images/logo-64.png" besitzt den Reiter: Ein Mitglied, das den Computer seiner Firma öffnete, beobachtete, wie er sich in das Logo von Guacamole verwandelte. Die Sitzung ist stattdessen in dieser Seite gerahmt, so dass das Symbol und der Titel bleiben die org's und die Übergabe ist eher ein Fade als ein weißer Blitz. Guacamole sendet weder X-Frame-Optionen noch einen Frame-Actor Politik - überprüft, nicht angenommen - und wenn der Rahmen nicht erstellt werden kann, navigiert die Registerkarte, wie es immer tat, weil eine hübschere Registerkarte ist nicht wert, ein Mitglied nicht erreichen ihren Computer. Die Icons werden nicht von einem Pfad umgebaut: Sie sind die "<link"-Elemente, die DynamicMetaLoader bereits hat für diese Organisation, geklont. Re-Divierung, welche der beiden Favicon-Verzeichnisse eine Org verwendet wäre eine zweite Antwort, die von der ersten abweichen kann. Jede Zeichenkette ist ein Schlüssel, der zuerst ins Wörterbuch geschoben wird. Die Kopie wird injiziert, anstatt nach oben zu schauen die Seite wird durch eine einfache Funktion in ein anderes Fenster geschrieben, in dem "useTranslations" nicht ausgeführt werden kann und es gibt absichtlich keine englische Standardeinstellung, so dass ein Anrufer, der vergisst, nicht zu kompilieren, anstatt Versand Englisch zu jedem Ort. Dreizehn Tests, einschließlich, dass eine Server-Nachricht entflohen wird, anstatt als Markup geschrieben.
· kamo-login
Punktieren Sie ein Mitglied, das seine Arbeit E-Mail an ihre persönliche getippt
Vergessen-Passwort-Resets gehen an die Adresse auf dem Benutzerkonto, in der Regel ein Persönlich, aber Mitglieder tippen die Arbeitsadresse ein, die ihnen ihre Organisation gegeben hat. SecurityService erkennt jetzt eine Arbeitsadresse und antwortet 409 WORK_EMAIL mit personalEmailHint, die Kontoadresse maskiert. Nichts wird gesendet. Der Assistent zeigt, dass anstelle von "Check your Postbox": die Adresse, die sie getippt, der maskierte Hinweis auf einer eigenen Linie, und das Feld gelöscht, umetikettiert "Persönliche E-Mail-Adresse", konzentriert, mit dem Hinweis als Platzhalter. Die *** bleibt gelöst, da dem Mitglied geholfen wird, anstatt abgelehnt. Die Eingabe der persönlichen Adresse erfolgt wie bisher zum Code-Schritt. /recover E-Mail-Schritt zeigt die gleiche Antwort wie eine Info-Nachricht statt "Failed to send Recovery E-Mail".
· SecurityService
Eine Arbeitsadresse auf vergoe-Passwort fragt nach dem eigenen Konto, Maskiert angezeigt
Mitglieder eröffnen ihr Konto mit einer persönlichen Adresse (gmail, yahoo) und sind später gegeben eine Arbeitsadresse von ihrer Organisation, die sie sich erinnern und Typ auf Forgot-Passwort. Das hat sich immer nur mit dem Login-Host des eigenen org gelöst, und dann ging der Brief an den Arbeitseingang. Für 20 Mitglieder von KamoCRM ist das ein KamoMail-Postfach, die in dem Produkt gelesen wird, sind sie gerade gesperrt aus. Auf jedem anderen Host passte die Adresse niemandem, und die Seite sagte: "Wenn dies E-Mail ist registriert, ein Link wurde gesendet" mit nichts gesendet. /api/recover/email/initiate beantwortet nun die E-Mail des Kontos genau wie zuvor. Für jede andere Adresse sucht sie nach einer Arbeitsadresse für Mitglieder: zuerst in der org deren Login-Seite ist dies (Primary Mailbox, dann members.email), dann in jedem Live org. Wenn dieser ein Konto mit einer eigenen Adresse benennt, wird nichts gesendet. Die Antwort ist ein 409 mit Vernunft WORK_EMAIL und personalEmailHint, der Kontoadresse mit jedem Charakter des Namens zwischen dem ersten und dem letzten Stars, und die Domain in vollem Umfang. Es ist eine 409 absichtlich: eine Login-Seite, die vor der Hinweis zeigt "Nachrichten" für ein Non-2xx, und "message" sagt das gleiche in Worten. Ein Konto ohne eigene Adresse bekommt den Brief noch im Arbeitseingang auf dem Host der Org, da dies der einzige Posteingang ist. Der Hinweis sagt, eine Adresse gehört jemandem, die die generische Antwort nie tat, so dass jeder von CodeAttemptLimiter gezählt wird: fünf pro Stunde pro Adresse eingegeben, plus die Adresse des Anrufers, die mit den Code-Prüfungen geteilt wird. Vergangenheit, dass die Anfrage erhält eine 429.
· EmailService
Verschieben Sie System-Mail und die Plattform org eigene Domain senden Sie an kamouniverse.com
platform.mail.domain ist jetzt standardmäßig an kamouniverse.com (config value, no Code-Standardänderung) und Gates jede ungeprüfte-domain org's transaktional Fallback Von, wie zuvor. Die Plattform org (kamocrm) verwendet zu umgehen, dass Eigentum und senden Sie als eigene verifizierte OrgDomain statt - jetzt PlatformOrgResolver zwingt es durch den gleichen Fallback, so dass beide folgen einer Eigenschaft, anstatt zwei verschiedene Reihen zu fahren. **************** bekommt das passende Stück für Mitglieder: die primäre Mailbox der Plattform org bekommt einen synthetischen kamouniverse.com Eintrag vorauspended (gleiche Mailbox, klusterservices mail/ aliass es zurück zum echten kamocrm.com maildir) als neuer des Komponisten Standard, während die ursprüngliche kamocrm.com-Adresse vollständig sendbar bleibt - Additiv, kein Ersatz. Jede andere Org ist so oder so nicht betroffen. Bulk/campaign mail (bulk-email.platform-relay.*, hello.kamocrm.com) ist einen separaten Code-Pfad und unberührt.
· KlusterServices
Kamouniverse.com als zweite reguläre Mail-Domain hinzufügen
Fügt kamouniverse.com zu postfix virtual_alias_domains mit einem lokal-Teilerhalten regexp so dass jede Adresse auf sie landet in der identische kahlocrm.com Mailbox (kein pro Benutzer Setup, funktioniert für Mailboxen später auch erstellt), und zu relay_sender_domains können Mitglieder/Dienste senden Sie als kamouniverse.com durch dieses Relais. rspamd bekommt seine eigene DKIM keypair und Signierblock für die Domain (Selector Mail, veröffentlicht als ************ hello.kamocrm.com / postfix-bulk sind Unangetastet.
· KlusterServices
Forward kamouniverse.com zu kamocrm.com
DNS für den APex und www zeigen jetzt auf das öffentliche IP von k1m1. Fügen Sie eine UmleitungRegex Route auf beiden Eingängen (301, path/query erhalten, ACME Challenge Pfad ausgeschlossen auf :80) und Samen beide Hosts in auto-cert's STATIC_DOMAINS, so dass sie Zertifikate bekommen, obwohl sie nicht ein registrierte Org-Domain, genau wie sign.pink.
· kamo-internal
Select-all/Deselect-all für die Staaten Lead-Filter, Standard für alle
Die Zustände Dimension der Kampagne Publikum Panel und Tropf Trigger Blei-Filter zeigte nichts standardmäßig überprüft, obwohl eine unset Liste bedeutet bereits "jeder Staat" auf dem Draht - die gleiche "keine Einschränkung" Konventionsmarkt/Verkäufer/Verkäufer-Produkte bereits. Das machte die Picker sehen aus, als würde er zu Null führten statt zu jeder, und gab keine schnelle Möglichkeit, von "jeder Staat" oder "keine" zu starten vor der Hand-Picking ein paar. leadAudienceFilter.ts gewinnt effectiveStates() (was zu zeigen ist geprüft: die gespeicherte Liste, oder jeder Zustand, wenn es unset) und mitStates() (was zu zurück speichern: das komplette Set bricht eher zu undefinisch als zu einem expliziten fifty-Code-Liste, so dass eine Führung mit einem leeren Zustand auf Datei noch entspricht "jeder Staat", wie es tatsächlich ein Fehlen eines Filters tut - ein expliziter IN-Liste würde nicht). Beide Panels erhalten ein "Alle auswählen" / "Deselect all" Paar neben dem Staaten Picker nur; die anderen drei Dimensionen sind unverändert, da ihre Leer-für-Standard-Framing bereits korrekt war.
· kamo-internal
DKIM und DMARC Schritte, so E-Mail senden wir für eine org ist vollständig authentifiziert
Zwei neue Schritte nach dem bestehenden LSF, geschrieben für einen nicht-technischen Eigentümer die gleiche Weise SpfCard ist bereits klare Sprache, ein "Warum das zählt"-Box, und nie um eine Änderung bitten wir eigentlich nicht: - DkimCard: SecurityService generiert einen Signierschlüssel für die Domain der Zeit dieses Lasten, dann liest, ob die TXT-Rekord veröffentlicht wird. Nur zwei echte Staaten (nichts veröffentlicht noch, oder etwas veröffentlicht, das nicht Match) da ein DKIM-Rekord nie mit etwas kollidieren kann der Kunde hat - im Gegensatz zu SPF, gibt es keine "Add vs. Edit" Unterscheidung zu machen. - DmarcCard: Nur lesen. Da Kamos Mail immer die Org-Domain als sowohl Briefaussender als auch sichtbar Von, DMARC's Ausrichtungsprüfung ist bereits zufrieden, sobald SPF getan ist, welche Politik die org gewählt hat, so dass nur zeigt, was veröffentlicht ist (oder schlägt einen Ausgangspunkt), nie fragt eine Änderung. Beide neuen ************-Proxies folgen der vorhanden spf/ route.ts genau - kein Catch-all hier, also ein Weg ohne seinen eigenen Route Datei 404s vor Erreichen SecurityService. DnsSetupStudio zeigt jetzt 6 Schritte statt 4; Step-Nummerierung durch aktualisiert sowohl für die Eigentums-Token-und No-Eigentum-Token-Fälle. Abhängig vom kamo-translation-dictionary 2f143f94 (das setup.dns.studio.dkim.* und setup.dns.studio.dmarc.* kopieren) und die Beratungs-Endpunkte des Sicherheitsdienstes.
· EmailService
DKIM-sign Transaktionsmail als Org-eigene Domain
Sobald SecurityService bestätigt, dass der DKIM-Rekord einer Domain veröffentlicht wird (org_domains.dkim_verified), Passwort-Resets, Einladungen und andere Transaktionsbriefe, die als NoReply@{org domain gesendet werden, tragen jetzt eine DKIM Unterschrift neben der bestehenden SPF-Genehmigung - Wiederverwendung derselben DkimSigner Kampagnenpost ist bereits mit, unverändert signiert. EmailSmtpService erhält eine neue Sendung(...) Überlastung unter einer MessageSigner, Spiegelung sendVias signierter Pfad: saveChanges() einmal, unterschreiben, dann ein manuell bewirtschaftete Transport, da der statische Transport.send() verwendet wird von jeder andere send() Anrufe saveChanges() wieder intern und würde eine neue Nachrichten-ID, nachdem die Signatur über die alte berechnet wurde. Die vorhandene 6-arg send(...) delegiert es jetzt mit einem Null-Unterzeichner, so dass jeder sonstiger Anrufer ist Byte fürbyte unverändert. ************ Tore auf dkimVerified (nicht nur ein Schlüssel vorhanden) und gilt immer nur, wenn wir schon sind Senden als eigene Domain der Org - nie unter der Plattform-Domain, und nie auf der Plattform-Adresse Wiederaufnahme, wenn die org eigenen senden scheitert. Abhängig von der Kamo-Shared-Bibliothek 5de57705 und der DKIM des Sicherheitsdienstes Der beratende Endpunkt, der den Schlüssel generiert und überprüft, der dies aussieht.
· SecurityService
DKIM und DMARC beratende Endpunkte für /setup/dns
Fügt zwei Endpunkte neben dem bestehenden LSF ein, so dass ein org transaktional Mail (Passwort-Resets, Einladungen, Benachrichtigungen) kann eine DKIM-Signatur tragen und der Besitzer kann ihre DMARC Haltung sehen: - GET /api/security/domains/{id'/dkim erzeugt die DKIM-Taste einer Domäne zum ersten Mal wird es gefragt (nie danach regeneriert, seit dem Tausch Schlüssel würde Überprüfung von allem, was bereits mit dem alten unterzeichnet brechen), prüft, ob der TXT-Aufzeichnung veröffentlicht wird, und speichert das Urteil über **************** die gleiche karte Zustand Form spf_verified verwendet bereits. - GET ************ - Nur lesen. Jede Nachricht, die Kamo sendet als NoReply@{domain] verwendet diese Domain sowohl als Briefsender als auch als sichtbar Von, so DMARC Ausrichtungsprüfung ist bereits erfüllt, sobald SPF fertig ist, welche Politik der Kunde gewählt hat. Das berichtet nur, was ist veröffentlicht (oder schlägt eine Startaufzeichnung vor, wenn nichts ist) - es fragt nie zur Abwechslung, da es nie einen gibt, den Kamo braucht. ************ Spiegel SpfAdvisoryService's Form (ein reines Inspect(), eine createLookup() Naht für Tests) und DkimAuthorizationService Spiegel SpfAuthorizationService (pert das Urteil, lässt es in Ruhe auf einem gescheiterte Nachsorge). DkimDomainRepository ist eine einfache JpaRepository auf die gleiche Weise SpfDomainRepository ist, aus dem gleichen Grund: es Schiffe mit einem retipeploy anstatt einer Shared-Bibliothek Version Beule. Abhängig ist von der Kamo-shared-Bibliothek 5de57705 (OrgDomains neue dkim_* Felder).
· kamo-shared-library
DKIM Schlüsselfelder für die transaktionale E-Mail einer Org-Domain
Fügt ************ zu org_domains, das spf_verified/spf_checked_at pair spiegeln, das bereits dort vorhanden ist so eine Domain kann eine generierte DKIM Keypair halten und ob seine TXT-Rekord hat wurde bestätigt, die gleiche Check-State-Form, die SPF bereits verwendet.
· EmailService
Schengen Sie eine Kampagne All-Leads-Publikum und Tropf Auslöser durch Markt, Anbieter, Produkt und Staat
Die "All Leads"-Box des Kampagnenredakteurs und der Lead-Filter des Tropfauszugs könnte nur jeden Vorsprung, den der Absender sehen kann, ohne eine Möglichkeit, einen Markt ins Visier zu nehmen, Verkäufer, Hersteller- oder Zustand - das /leads-Raster hat alle vier seit Wochen. - Neue LeadAudienceFilter ************ durch KampagneAudienceInput --AudienceDefinition -- AudienceQueries.shape()'s LEADS-Fall, Spiegelung LeadGridSpecifications' Prädikate (Markt besitzt Leads direkt oder über ein Verkäuferprodukt; Zustand ist hypothekenbewusste Eigenschaft vs. Mailing, geänderten Umfang tut. /estimate und /browse nehmen die gleichen vier Filter wie Komma-getrennte Abfrageparams, so dass die Live-Zählung des Herausgebers eine ungesettielle Filter auch. - TriggerConfig gewinnt ein Staatenfeld neben den bestehenden marketIds/VendorIds/ productIds; DripTriggerMatcher.leadFilter() prüft es. Der Event-Zahlungsweg nie getragen Anbieter oder Zustand, so ist Zustand gelöst live pro Blei (DripContacts. stateOfLead), die gleiche Weise Anbieter war bereits von der Anbieter-Produkt. Jede bestehende 3/6/8-arg-Call-Site stellt unverändert über hinzugefügte Zusammenstellungen unverändert Überlastungen und Sekundärkonstrukteure; nur AudienceGatherer, die immer Threads eine Definition-Filter durch, benötigt seine Call-Sites aktualisiert.
· kamo-internal
************ Filter auf Kampagnen-Let- und Tropfauslöser
Die "Alle Leads"-Publikumsquelle des Kampagnenredakteurs hatte keine Möglichkeit zu verengen wen es über den Sichtbarkeitsbereich hinaus erreichte. Fügt eine Filterplatte hinzu (Market - Vendor -- Anbieter Produktkaskade, plus eine unabhängige staatliche Dimension) die die Live-Zählung, die Vorschau und das gerettete Publikum einschränkt, Einfädelt durch KampagneAudienceApis Schätz-/Browse-Calls. Der Bleifilter des Tropf-Triggers hatte bereits den Markt/Vendor/Produkt Kaskade; fügt die gleiche staatliche Dimension dort, neben der bestehenden drei, nicht-cascading.
· KlusterServices
Der eigene Computer-Host von einer Org erhält ein Zertifikat und eine Route
Computer ist jetzt ein Standard-Alias - jeder White-Label-Org wird gesagt, um einen auf Kamo zu zeigen auf /setup/dns, die Art, wie es Punkte treffen und unterschreiben - so zwei Dinge mussten es folgen oder die Rekord würde sich auflösen und nichts tun. Ein CERTIFICATE. Computer schließt sich SUBDOMAINS, das ist die pro-Ort-Liste dieser Service Fragen aus. Ohne sie hat ein org-Host DNS und kein TLS, was eine Browserwarnung ist ihre Marke und nicht ein Schreibtisch. Ein ROUTE. Das Gateway passte zu Host(? computers.kamocrm.com) und nichts anderem, also ein Org könnte die Platte hinzufügen, beobachten Sie das Setup-Studio grün und immer noch irgendwo landen, dass ist nicht dieses Gateway. Die neuen Routen verwenden HostRegexp(Computer[.].+$), die gleiche Form ************ und der Strom./Graffana. Routen bereits benutzen. SEPARATE IngressRouten anstatt die bestehenden Regeln zu erweitern, und der Grund dafür ist TLS. Die Plattform-Routen tragen einen expliziten geheimenNamen, der das einzige Zertifikat ist, das möglich ist vor der Zeit benannt werden; ein Mieter kommt, wenn ihre Domain geht live. Diese ausweiten Regeln hätten eine benannte geheime Antwort für jede Mieter-Domain gemacht - ein Zertifikat Warnung auf jemand anderes Marke, die schlimmer ist als gar keine Route, weil es aussieht wie Kamo ihre Domain falsch verstanden hat. Die Mieterrouten verlassen TLS in Traefiks und SNI, wie meet tut, und sitzen auf niedrigere Priorität, so computer.kamocrm.com behält seine eigene. Jede Org von einer Regex reicht niemandem etwas: die Verbindung wird von der signierte Token, nie mit dem Hostnamen, und ein Token prägt einen Computer für ein Mitglied für eine Sitzung.
· kamo-internal
Die Computer-Rekord auf dem DNS-Studio
Noch eine Karte auf /setup/dns, so dass eine org Konfiguration seiner Domain über den Host erzählt seine Hosted Computer öffnen auf. Ohne sie könnte eine Org der Seite zum Brief folgen, beenden mit jeder Karte grün, und haben immer noch einen Computer, der einen Browser-Tab produziert die öffnet und schließt - die Verbindung ist von Computern gebaut.<domain", und ein Link zu einem Host ohne Datensatz scheitert, bevor eine Anfrage die Maschine verlässt. Erforderlich wie jedes andere Label und nicht nur für Orgs mit der App. Der Rekord ist, was macht die App arbeiten am Tag ist es eingeschaltet, und eine Org zurück zu seiner gesendet Registrar Monate später für eine Aufzeichnung ist eine org, deren erster Computer nicht geöffnet. Das Label muss KnownAliases im Sicherheitsdienst genau entsprechen. DomainAliasContractTest pins sie, weil ein Label, das das Studio benötigt, aber überprüfen-dns gibt nie einen Status für meldet sich nicht als vermisst: das Ausschausgeknappt fällt auf "anhängig" und die Karte sitzt bei "Warte DNS" für immer, was auch immer die Kundenzone sagt.
· SecurityService
Computer ist ein Standard-Alias, und der Link verwendet die org eigenen
Jede White-Label-Org zeigt einen festen Satz von Etiketten bei Kamo und Computer war nicht eine von ihnen, so könnte ein org folgen /setup/dns auf den Buchstaben und haben immer noch eine Hosted Computer konnte niemand öffnen. Die Verbindung ist von diesem Host gebaut; ein Link zu einem Host mit Nein Datensatz ist ein Browser-Tab, öffnet und schließt, bevor jede Anfrage verlässt die Maschine, mit nichts irgendwo in Kamo und der Computer selbst gesund und wach aufgezeichnet durchweg. Vier Listen bewegen sich zusammen oder gar nicht. DomainAliasContractTest behauptet genau Gleichberechtigung zwischen KnownAliases, SSL_PROBE_LABELS und eigenem Spiegel des Studios Katalog, weil der Ausfall, vor dem sie sich hüten, still ist: ein Label, das das Studio benötigt aber überprüfen-dns gibt nie einen Status für fällt durch "anhänglich", so dass die Karte sitzt bei "Dräger DNS" für immer, egal was die Kundenzone tatsächlich sagt. Das ist, was Im Jahr 2026 ist es der "Medien" vier Monate lang passiert. Erforderlich wie jedes andere Label und nicht nur für Orgs mit der App. Der Rekord ist das, was Hosted Computern arbeiten, an dem es eingeschaltet ist, und eine Org zurückgeschickt seine Registrar Monate später, für eine Aufzeichnung, ist eine Org, deren erster Computer nicht offen. DER LINK JETZT DIE ORG'S OWN HOST buildLink übernimmt die Organisation und baut https://computer.<its live domain", via OrgLinkHosts.liveRootDomain - der gleiche Helfer, den das Kreditnehmer-Portal verwendet, und für die gleichen Grund: eine Domain, die konfiguriert, aber noch nicht verifiziert ist, würde ein Mitglied an eine senden host, das nicht auflöst. Im Gegensatz zum Kreditnehmer-Portal ist der Rückfall auf den Plattform-Host hier eher CORRECT als eine defekte Verbindung. Ein Gateway dient jedem Mieter und die Maschine wird von der signierte Token, nie mit dem Hostnamen, so dass ein Org ohne Live-Domain immer noch eine funktionierende Computer - es öffnet sich einfach auf computer.kamocrm.com, bis seine eigene Domain live ist.
· SecurityService
Liste nur die Getting Started Schritte eine Organisation gefragt wird
Eine Organisation, deren Sicherheitsmodell jede Compliance-Antwort fixiert (nein Produkt ein Mitglied kann wechseln, eine Altersgruppe für jeden Mitgliedstyp) war noch gezählt gegen neun Schritte. Es musste einen leeren neunten Schritt vor seiner "schicken" Assistent verriegelt als fertig (Bericht 2026-09-21, Gnosia). OrgSetupStepApplicability entscheidet, welche Schritte aus dem angewandten Modell angewendet werden. Heute kann nur die Compliance ausfallen. Die Schritte der Zusammenfassung, Schritte abgeschlossen und totalSteps, der completedAt Riegel und lastStep laufen alle über diese Liste. A Schritt aufgezeichnet, bevor es aufgehört Anwendung bleibt gespeichert, aber nicht gezählt, so es kommt wieder angekreuzt, wenn das Modell jemals bietet eine Wahl dort wieder. Wenn die Modell kann nicht gelesen werden, der Schritt wird gezeigt: ein gezeigter Schritt kann übersprungen werden, ein Verborgen ist nicht zu erreichen. Die Regel spiegelt kamo-interne getComplianceStepUi (was der Schritt zieht); Beide werden von der gleichen Falltabelle angeheftet. AppliedModelController liest jetzt Produktrichtlinien und Alter reicht durch die gleichen Helfer, so dass der Endpunkt und die Regel kann nicht auseinanderdriften.
· kamo-internal
Ein Schritt, den die Organisation nicht gefragt wird, wird nicht angezeigt oder gezählt
Eine Organisation, deren Sicherheitsmodell jede Compliance-Antwort behebt (nein Produkt ein Mitglied kann wechseln, eine Altersgruppe für jeden Mitgliedstyp) war immer noch gezeigt, ein neunter Schritt sagen, es gab nichts zu konfigurieren. Es musste "retten" dieser Schritt bevor der Assistent als fertig gezählt hat (Bericht 2026-09-21). SecurityService listet jetzt nur die Schritte auf, die eine Organisation verlangt, und die Seite folgt dieser Liste: die Schiene, die "x of y" zählen, wo der Assistent Lebensläufe, was kommt nach dem letzten Schritt, und ein "?step=" benennt einen Schritt, ist nicht gelistet. Eine Nutzlast ohne verwendbare Liste liest sich immer noch wie jeder Schritt, so ein Missgebildete Antwort hinterlässt nie einen leeren Zauberer. ComplianceStepApplies.test.ts Pins getComplianceStepUi zum gleichen Fall Tabelle als SecurityService's OrgSetupStepApplicabilityTest. Der Server entscheidet ob der Schritt aufgeführt ist, und diese Funktion entscheidet, was er zeichnet, so dass die Zwei müssen zustimmen.
· KlusterServices
Ausgabe und Spiegelung des Zertifikats für computers.kamocrm.com
Das Öffnen eines Hosted Computers produzierte einen Browser-Tab, der auftauchte und verschwand. Die Startlink ist korrekt und so ist das Token: SecurityService baut **************** von KAMO_HC_GUAC_BASE_URL, dessen Standard ist dieser Host. Der Host hat kein Zertifikat und keinen A-Rekord, so dass die Registerkarte stirbt bevor irgendetwas in Kamo davon hört - keine Anfrage erreicht Traefik, nichts ist protokolliert, und der Computer sitzt AWAKE und gesund die ganze Zeit. Die hc-https IngressRoute verweist bereits auf tls-computers-kamocrm-com nach Namen; Geheimnis wurde einfach nie geprägt, weil dieser Service Ausgaben für eine explizite Liste und computer.kamocrm.com war nicht auf sie. desktop.kamocrm.com ist für genau die aufgeführt gleichen Grund - nichts trifft entweder Host, bis jemand einen Link übergeben wird, so dass weder ist immer von Traefiks Logs entdeckt, wie eine Mieterdomäne ist. Auch in "hosted-Computer" gespiegelt, weil die IngressRoute lebt dort und verweist auf das Geheimnis mit Namen in seinem eigenen Namensraum. Das prägt NICHTS, bis die A-Platte existiert. Die Schleife überspringt einen Host, dessen DNS nicht lösen, weil eine HTTP-01 Herausforderung gegen sie nicht beantwortet werden kann: Überspringen media.b11capital.com (DNS löst nicht auf; HTTP-01 würde scheitern) computer.kamocrm.com braucht die gleiche A-Rekorde wie kamocrm.com und desktop.kamocrm.com, 47.181.8.84. Dieser Teil ist beim DNS-Anbieter, nicht hier. Einmal löst, diese Probleme in einer Schleife und spiegelt das Geheimnis ohne weitere Maßnahmen.
· kamo-internal
Die Nachrichtenliste nennt eine Leitung oder Kontakt, nicht ihre Adresse
Eine Zeile wurde vom Anzeigenamen des Absenders oder dem Teil der Adresse angeführt. vor dem @, wenn es keine gab, so ein Leer, der in lesen schrieb als "jlrivera1984" über "jlrivera1984@mail.example". Der Header-Chip bereits bevorzugte den Namen unseres eigenen Datensatzes, aber die Liste fragte nie. VirtualMessageList löst nun die Korrespondenten jeder geladenen Seite neben seine Avatare (eine Batch-Anfrage, cached per Adresse für die Sitzung) und die Zeile mit dem Namen auf der Platte: ein Kollege, ein gespeicherter Kontakt oder - neu mit EmailService d3d6e03 - eine Leite. Das Monogramm buchstabiert den gleichen Namen. Die Korrespondenzkarte beschriftet einen Leitwert "Lead" und bietet "View Lead".
· kamo-internal
Die Nachrichtenliste nennt eine Leitung oder Kontakt, nicht ihre Adresse
Eine Zeile wurde durch den Anzeigenamen des Absenders oder den Teil der Adresse angeführt. vor dem @, wenn es keine gab, so eine Leite, die in lesen schrieb als "rodarisdolgovanton" oben "rodarisdolgovanton@gmail.com". Der Header-Chip bereits bevorzugte den Namen unseres eigenen Datensatzes, aber die Liste fragte nie. VirtualMessageList löst nun die Korrespondenten jeder geladenen Seite auf seine Avatare (eine Batch-Anfrage, cached per Adresse für die Sitzung) und die Zeile mit dem Namen aufzeichnet: ein Kollege, ein gespeicherter Kontakt, oder - neu mit EmailService d3d6e03 - eine Leistanz. Das Monogramm buchstabiert den gleichen Namen. Die Korrespondenzkarte beschriftet eine Leitkarte "Lead" und bietet "View Lead".
· EmailService
Ein Lead, der schreibt, wird vom Korrespondent benannt
Die Mailbox-Liste leitete eine Lead-Nachricht mit dem Teil ihrer Adresse vor dem @ ("jlrivera1984"), wenn ihr Mail-Client keine Anzeige geschickt Name, obwohl die org hält sie als Lead ("Jordan Rivera"). Der Entschlossener kannte Kollegen und speicherte Kontakte nur. KorrespondentResolver gewinnt eine vierte Ebene, LEAD (nach CONTACT), mit der Name, Firma und LeadId (ein String: uids pass MAX_SAFE_INTEGER). LeadCorrespondents beantwortet nur, was das Lead-Raster dem Leser zeigen würde: VIEW_LEADS erforderlich, eine nicht zugewiesene Führung benötigt VIEW_UNASSIGNED_LEADS (fehlt geschlossen auf Free-for-all-Produkte), keine Telefone (Kontaktinformationen werden am Boden von Rechte diese Karte nicht überprüft), und jede Lead-Namen wird geschrieben, um phi_access_log als LIST in einem PHI org gelesen, über AudiencePhiAudit. Leads hatten keinen Index auf der Adresse: die Lookup ging alle 790k der Reporter's org's führt in 9.8 s. ix_leads_org_email_lower auf (org_id HASH, lower(trim(email))) ist in db/bles-email-lookup-index.sql und war APPLIED BY HAND als Eigentümer vor diesem Einsatz; der generische Plan jetzt nimmt 3,4 ms.
· EmailService
Ein Lead, der schreibt, wird vom Korrespondent benannt
Die Mailbox-Liste leitete eine Lead-Nachricht mit dem Teil ihrer Adresse vor dem @ ("rodarisdolgovanton"), wenn ihr Mail-Client keine Anzeige gesendet Name, obwohl die Org sie als Lead hält ("Anton Dolgov"). Der Entrechener kannte Kollegen und speicherte Kontakte nur. KorrespondentResolver gewinnt eine vierte Stufe, LEAD (nach CONTACT), mit der Name, Firma und LeadId (ein String: uids pass MAX_SAFE_INTEGER). LeadCorrespondents beantwortet nur, was das Lead-Raster dem Leser zeigen würde: VIEW_LEADS erforderlich, eine nicht zugeteilte Leitung benötigt VIEW_UNASSIGNED_LEADS (ausfallt geschlossen auf Free-for-all-Produkte), keine Telefone (Kontaktinformationen werden am Boden von Rechte diese Karte nicht überprüft), und jede Lead-Namen wird geschrieben, um phi_access_log als LIST in einem PHI org gelesen, über AudiencePhiAudit. Leads hatten keinen Index auf der Adresse: die Lookup ging alle 790k der die Hinweise von Reporter org in 9.8 s. ix_leads_org_email_lower auf (org_id HASH, lower(trim(email))) ist in db/bles-email-lookup-index.sql und war APPLIED BY HAND als Eigentümer vor diesem Einsatz; der generische Plan jetzt nimmt 3,4 ms.
· kamo-internal
Das Mitglied, das eine Benachrichtigung verursacht hat, öffnet seine Karte von ihr
"Dana Reyes hat dich reingebracht", "Weekly sync · Dana Reyes", eine ungelesene Chat-Karte, deren Körper der Absender: EmailService (29cb21e) sendet jetzt actorMemberId (als Text) und SchauspielerName, der Name genau als der Titel oder Körper buchstabiert es, und die Glocke zeichnet diese Strecke des Textes als Namen des Mitglieds. - NotificationText schneidet den Namen aus dem Titel (anderse den Körper) einmal, bei seinem ersten Vorfall; Alles andere liest sich genau wie zuvor. Wird vom Toast, der History-Reihe (clickToggles={false?: Die Zeile öffnet die Benachrichtigung) und den Detaildialog. - Die Karte eines Toasts öffnet sich auf der Deckebene. MemberHoverCard/MemberName nehmen zIndex und den Toast geht über NOTIFICATION_DECK_Z (1500, jetzt eine Konstante mit dem Dach). Bei der Karte 1305 es öffnete unter dem Deck, von dem es kam; auf der gleichen Ebene malt es darüber (es ist angefügt <body> später) und immer noch unter den eigenen Tooltips (angefügt später noch). - UnreadChatNotifier sendet den Absender als Schauspieler, nie für Exec2Exec. Der Server hält auch eine Schauspieler auf / sich nur von der eigenen Organisation des Anrufers. - Spec "As built": die Benachrichtigungen Absatz. Verifiziert: tsc; eslint (nichts auf geänderten Linien); die Repo 19 Wachen; vitest (Notifikationen, Mitglieder, lib, Einstellungen, Chat; die wenigen, die unter Maschinenlast aus- und schalten ihre eigenen) und Chrome Sonde, dass der Name bleibt inline in der Toast-Zwei-Linien-Titel und der Geschichte Reihe Ellipse hält immer noch.
· kamo-shared-library
Die Notes-App ist "Notizen & Checklisten"
Die Notes-App hält Checklisten sowie seit 2026-09-23 (Schritte abgehakt wie sie getan werden, ein Schritt, der wartet, bis die Schritte, bevor es sind fertig, eine Checkliste auf dem Kalender geplant), und es heißt "Notizen & Checklisten" überall, wo es genannt wird. ServiceType.NOTES trägt die neuer Display-Name und eine Beschreibung, die beide abdeckt, das ist, was Apps & Features, Zweigtypen und die org-create Assistent zeigen einmal SecurityService wird umgebaut. Nur kopieren: der konstante Name und die ID sind unverändert, so dass keine gespeicherte Zuschuss oder Feature-Reihe bewegt sich. ServiceTypeCustomerCopyTest pinnt den Namen und dass die Beschreibung erwähnt Checklisten.
· MediaService
Die Hold'em laden und die Sitzung Erinnerung sagen, wer sie sind aus
MemberNotificationClient.raise erhält eine Überlastung mit actorMemberId/actorName (die ID als gesendet die alte Signatur ist unverändert und sendet keines). HoldemInviteMessenger übergibt den Händler ("Dana Reyes hat dich reinbehandelt"); MeetingReminderSweep übergibt den Schöpfer des Treffens, wenn der Titel sie benennt ("Wochenend-Synchronisation · Dana Reyes"), den Schöpfer einmal lesen und nicht innerhalb des Titels(). E-Service behält die pair und kamo-interne zeichnet diesen Namen als die Karte des Mitglieds. Ein EmailService älter als die Felder ignoriert sie. Tests: HoldemInviteMessengerTest (+1; seine Erhöhung Überprüfungen nehmen die neue Überlastung), MeetingReminderActorTest (2), ************ (2). Komplette Suite: 1060 Run, 0 Ausfälle.

Euer Universum wartet.
Fügen Sie Produkte hinzu, wann immer Sie möchten – keine Migration, keine neuen Anmeldungen.
Für immer kostenlos – keine Kreditkarte erforderlich