Değişiklik Günlüğü
Yeni ne var?
Gemideki her iyileştirme.
· kamo-shared-library
Kaçınılmazlığın maliyetinin ne olduğunu göster
kamo.entitlement.fail-open, plan matrixini asla bahsetmez. Bu Katalog geri yükleme için geçici bir valf olarak belgelendi - bir kez kapat matrix tohumlanır - ama karar veren soruyu cevaplayamaz Döndürme güvenli: hangi kiracılar sadece bunun yüzünden hangi uygulamaları tutuyor. Körlüğü, canlı organizasyonlardan uzak uygulamalar alırdı, onunla Bildirim olarak ilk destek bileti. Başarısız OpenGrants her organizasyonunu iki kez çözer, bir kez söz konusu olmayan uygulamaları verir Ve bir kez onları inkar eder ve farkı rapor eder. Canlıyı okumuyor Bayrak, daha önce ve sonra aynı cevabı verir. Yeniden çözünürlüklü, plan id'dan doğrudan yerine Plan'ı çözmeye devam eder, Gerçek yolun bir plana geri çekilmesini aynalamak – aksi takdirde bir hibe Aslında hayatta kalmak bir kayıp olarak bildirilirdi.
· kamo-internal
Birinin orada olup olmadığını gösterin ve onların uzantıları
Her satır şimdi adın yanında bir varlık ve kelime taşır ve uzantıları Detay çizgisinde - bu yüzden bir kişiyi seçmek artık bir isim seçmek ve Umarım. Bu uygulamadaki bir kişi seçicidir, bu yüzden Müdüre topraklar Alan, e-sign signers, insanları bir sohbete eklemek ve aynı şekilde destek vermek. Offline her ne ilan edildi. Access status sadece işaretle hareket eder, işareti ve bir el elek, bu yüzden asla işaret etmeyen biri AVAILABLE Son zamanlarda – yeşil bir dot olarak, kesinlikle yanlış olacağını gösteriyor Dot için bir şey var. Bağlantılı olmayan bir yüzük olarak değil, bir satırdan ziyade çizer Dot, bu yüzden başka bir statü rengi yerine yokluğu olarak okur. Hiçbir zaman varlığını taşımayan bir rehber – bir in-memory kaynağının arkasında “fetcher” – Hepsinin herhangi bir göstergesidir. Absent bilinmemektedir ve bilinmeyen hiçbir şey söylememelidir Herkesin çevrimdışı olduğunu iddia etmek yerine.
· SecurityService
Bir dizi satır üzerinde kullanılabilirlik, varlık ve genişleme
Bir kişiyi seçmek, sıranın orada olup olmadığını ve nasıl olduğunu söylediğinde daha kolaydır. Onlara ulaşmak, bu yüzden her biri son ilan ettikleri şeyi taşır, ne olursa olsun. Onların aslında birbirine bağlı ve iş uzantıları. Erişilebilirlik ve varlık her ikisi de burada çünkü sadece yanlışlar: Kullanılabilirlik status sadece işaret-in, işaret-out ve bir kılavuzda hareket eder, bu yüzden bir Hiçbir zaman işaret etmeyen üye AVAIL'ı süresiz olarak okur. Presence PRESENCE'den okunuyor:{memberId} anahtar MediaService yazıyor – a Cross-service adlandırmaya değer. Alternatifler HTTP yuvarlak bir geziydi MediaService on every keystroke of a search, or reading entity in the browser, Ve tarayıcı yapamaz: ToolProviders aracı bir sibling olarak verir Varlık sağlayıcıları tutan ağaç, bu yüzden bir picker bir destek bileti içinde açıldı Pencere her meslektaşı çevrimdışı rapor ederdi. Her iki hizmet de Redis ev sahipliği yapıyor ve veritabanı. Başarısız bir görünüm aramayı başarısız yerine çevrimdışı olarak okur.
· BillingService
Bir opted-in veyag odadan çıktığında bir blok satın alın
Geceli anlık süpüründen kısa bir süre sonra, çünkü bu ne üretir Kullanım figürüne karar verir - dünün sayısına karşı genişlemek bir satın alır Her seferinde bir gün geç. İş başına bir blok, asla bir yakalama patlamadı ve sahibinin tavanında durur. Bir organizasyon çok geçmişse, doğru sonucun tavanın bu yazının durması Ve birisi buna bakıyor, platform sessizce kendi yollarını satın almıyor Maliyet. Auto-expand ile hiçbir tavan sınırsızdan ziyade engelli olarak okunur, Çünkü mevcut olmayan bir sınır, bir niyetten daha fazla gözetim olması muhtemeldir.
· InitializerService
Auto-expand sütunları ekleyin
· kamo-shared-library
Opt-in auto-expand with a tavan
Blokları tutan abonelikteki iki sütun: başka bir satın almak isteyip Organizasyon odadan çıktığında otomatik olarak bir tane ve çoğu olabilir Hiç satın alın. Hedefe varsayılan olarak – sessizce birinin faturasını artırmak, bir şeyden daha kötü Bu bir açıklama ile başarısız olan yükleme, bu yüzden onu açmak sahibi bir ticarettir Hiç düşünmemek zorunda kalmamak için küçük para ve bu sadece onların ticareti Yap. Bir tavan isteğe bağlı olarak gereklidir: Otomatik bir satın alma olmadan sınır, kimsenin izlediği bir süreçtir.
· BillingService
Bir katalog fiyat değişikliği aslında Stripe'e ulaşır
Stripe Fiyatları tahmin edilebilir ve haritalama bir satır tutar (org, tip, kod, kod, döngüsü) eşsiz bir anahtarın arkasında, bu yüzden bir fiyat asla değişmeyebilirdi. A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A fiyat düzenlemesi gelir üzerinde kalıcı bir no-op idi ve hiçbir şey bunu rapor etmedi. StripePriceReconciler şimdi kataloga karşı her haritayı karşılaştırır Söyle ve sorulduğunda, eski bir Stripe Fiyatındaki haritayı eski bir fiyatla işaret eder. Bir arşivlendi - silinmek yerine arşivlendi, çünkü Stripe faturaya devam ediyor Abonelik için arşivlenmiş fiyat zaten üzerinde ve yeni olanları reddediyor, Bu tam olarak davranış istiyordu. Ölçümü devam ediyor, bu yüzden bir metre fiyat geri dönmez ve sessizce fatura kullanımını durduramaz. Bu kasıtlı olarak mevcut aboneleri yeni fiyata taşımaz. Sessizce Canlı bir müşteriyi yeniden finanse etmek, çünkü birisi bir katalog sırasını düzenler Kimse yetkili değil; onları büyükbabaya ticari bir karar ve Aslında hiçbir zaman bir karar eksik değildi. Sayı hala devam ediyor Eski fiyat bunun yerine rapor edilir. Sunulan rapor yalnızca GET **************** ile varsayılan olarak Açık bir POST'nin arkasındaki yeniden nokta.
· InitializerService
Bir fiyat değişikliği tespit edilebilir sütunları ekleyin
Operatör, nüllable, geri yükleme - bir null miktar "biz ne bilmiyoruz Bu fiyat ile yaratıldı" ve uzlaşıcı bunu daha önce bilinmeyen olarak görüyor sürüklenmek gibi.
· kamo-shared-library
Her Stripe fiyatının nasıl yaratıldığını kayıt edin
Haritalama yalnızca hangi fiyat boşunu kullanmak için depolanır, bu yüzden bir katalog fiyat değişikliği olabilir Hatta fark edilmez. PlanPrices kısa sirkül sıranın varlığı ve ikinci bir anahtar, bu da 72 $79'dan 79 dolara bir plan yükseltmek anlamına geliyordu. Pazarlama sayfasını güncelledi, in-app alıntısı ve DTO planı ve değişti Kimsenin ne suçlandığı hakkında hiçbir şey - hiçbir şey ayrımı rapor etmedi. Unit amount cents ve para, karşı karşılaştırmak için bir şeyler verir. Her ikisi de mevcut satırlar için NULL'yi terk edebilir: null, "görünmez" anlamına gelir, ki bu da "göçücü" demektir. Her sıranın gerçek sütunu önleyecek ve yanlış bir şekilde bilinmeyeni tedavi etmek İlk başta emlakta her fiyat yeniden yarat.
· kamo-internal
Depolama kapasitesi Özeti Şimdi döndürür
BillingService ile adımdaki müşteri sözleşmesini tutun, şimdi ne rapor ediyor Plan şunları içerir, bloklar satın alındı, birleşik tavan ve Altmışlar yanında kullanılır. Yeni kopyaya ihtiyacı olan panel ve kamo-translasyon-dictionary is Başka bir oturumla e-edit, bu yüzden UI toprakları ayrı olarak süpürmek yerine In-flight bu repo'da çalışır.
· BillingService
Kullanım kapasitesinin yanı sıra
Depolama paneli, herhangi bir şeye karşı saklanantes tarafından bildirilen - hiçbir ücret, Yüzde yok, para yok - bu yüzden bir sahibi 400 GB'ye bakmak hiçbir yolu yoktu Bu rahat mıydı yoksa yüklemelerini durdurmak için. İlk önceleri Bir problemin bilgisi başarısız bir yük olurdu. Özet şimdi planın ne içerdiği, hangi bloklar satın alındı, Birleştirilmiş tavan ve fraksiyonlar kullanılır, artı blok boyutu ve fiyat bu yüzden Yüzey, başka bir blokun vermek ve zorlaştırmak olmadan maliyeti ne söyleyebilir. Tüm bunlar aynı katalog satırlarından geliyor, ücret fiyatlandı.
· kamo-shared-library
Depolama ödenekine bir etki verin
Depolama, dokuz alanda ölçüldü, gece, bir bina ile kapsama testi - ve herhangi bir yerde bir ücret hesaplamadı veya bir aste reddetti. Planın depolama rakamı hiç okumadı ve Ek Depolama Add-on'un hiçbir ürün etkisi yoktu: ödeme hiçbir şeyi değiştirip maliyet ödemedi Hiçbir şey. StorageQuotaService, bir organizasyonun ne tutabileceğini çözüyor - planın per-user koltuklarda havuzlu, artı satın aldığı bloklar - ve ImageService, onu aşacak olan içeriği reddediyor. Kontrol sonra oturur Dikkat et, bu yüzden platformu zaten tutan bir dosyayı geri almak asla reddedilmez Uzay için; sadece gerçekten yeni Bytes count. BillingService'da olduğu gibi burada yaşıyor çünkü bu yazı yazan hizmetler Bytes her biri yükleme yolunda bir fatura API çağıramaz ve enjekte edilir Binadan ziyade alan, çünkü ImageService tarafından bir araya getirilir Birkaç yerde el - bir yapısal tartışma, derleyicilerin derlediği bir düzenlemedir Testler dışında her yerde ve sonra görüntü inşasını başarısız olur. Yanlış olmanın iki kasıtlı yolu. "GB", bir debay olarak okunur, ki bu bir şey Dosya yöneticisi, GB'yi ve daha cömert okumayı baskıladığı zaman anlamına gelir. Ve Hiçbir canlı abonelik veya kontenjan olmayan bir hizmet, Tam olarak daha önce mağazalar: Bu kapı, ödeme müşterisini nelere ödeme yapmak için var Satın aldılar, bir fatura boşluğu veri kaybına çevirmediler. Okumalar asla kapılanmıyor - Depolamanızı doldurmak sizi daha fazla eklemeyi bırakır, asla sahip olduğunuz şeyi almaz.
· kamo-internal
İstek veya acentelerinin aslında orada olup olmadığını söyle
Sessiz bir iplik, “buna kimsenin bakmadığı” “benim ajanım Gitti", ve bekleyen kişi bunu anlatamaz. Farkın altında Konuşmanın hangisi olduğunu ve cevabın "şimdi değil" olduğunu söylediğinde, ne olacağını söylüyor Sonraki - mesaj alındı ve geri döndüklerinde cevap verilecek - yerine - Birini her şeye indiğini merak etmek yerine. Başlarda yerine sohbet altında kalın, çünkü “Herkese cevap verir” Orada?", hangi soru tipken soru sorulur, tarama yaparken değil Bilet metadata. Server-answered, talepçinin varlığı haritasından okumuyor: varlık Organizasyon başına yayın, bu yüzden müşteri-org üyesi sağlayıcı tarafından yardım ediliyor org, ajanlarını kalıcı olarak çevrimdışı olarak görecekti. Güvenilir bir şekilde yanlış "onlar" Uzak" hiçbir farkdan daha kötü. Aynı nedenle başarısız bir anket son tutar Farkı çevirmek yerine bilinen cevabı. 30'larda ve sadece sekme görünürken. Erişilebilirlik rahatlatıcıdır sinyal, doğru bir şey değil ve arka planlı bir sekme kimse izlemez.
· MediaService
Reassignment yeni ajana ulaşır ve istek sahibi kim olduğunu söylüyor
Reassignment kimseye ulaşmadı. GörevAçıklandı Bir müşterinin koyduğu kayıtlarda Ekrandaki konuşma ve bir biletin işareti-in'de açtığı şey - ama bu Hala PREVIOUS ajanının damgasını tuttu, bu yüzden yeni biri sadece canlı iti aldıysa Bu ikinci online oldu ve ne olursa olsun hiçbir şey olmadı İmzalandı. Başvuru Assignment şimdi, ne zaman atama aslında değişir, Bu, şimdiye kadar sahip olan herkes için kalıcı hale getirir. GET ******************** Yardım isteyen kişiye, yardım isteyen kişiye, Onlara yardım eden kişi ulaşılabilir. Hedefe cevap veren sunucu-side: varlık Organizasyon başına yayınlanır, bu yüzden bir müşteri-org isteği veya bir ajan göreemez Tüm ve statüdeki sağlayıcı veyag, her single için "offline" okuyacaktır. cross-org konuşması. Konuşmada zaten insanlara Kapsam - bir konuşma Bilet id bir UUID, sır değil ve "bu kişi masalarında olmalı" Bir tahmine cevap verin.
· kamo-internal
Bir sohbet isteği imzalamak ve bilet liste listesinden atamak
İki boşluk, aynı sebep - atama, meydana gelen bir şeye olarak tedavi edildi Bir iş parçası yerine bilet. Bahsedilen düğme, pre-tickets outright için gizliydi, bu yüzden canlı bir sohbet isteği, Bunu doğru kişiye alan dava çoğu önemli, hiçbir yolu yoktu Her şeye teslim oldu. Bu dışlama tarihleri, bir sohbet talebi henüz "aa Gerçek bilet" ve atama sadece dönüşümde gerçekleşti. Şimdi tayin edilebilir, Ve durum hayatta kalır, bu yüzden daha sonra dönüştürülebilir. Ve konuşmayı ilk önce açmanız gerekiyordu, bu yanlış şekil Bir kuyruk atmak için - kuyruk çalışan kişi genellikle kişi değildir Cevap olmalıdır. Bilet listesinde hücreye Assigned To cell şu anda kontrol: hovering şovları atama veya yeniden atama, tıklayarak aynı picker the ticket Pencere kullanır. Ekran hala konuşma açıyor. Yanıt, geri yükleme yerine kendi sırasını yamalar, bu yüzden atama yapmaz Operatörün yerini filtrelenmiş, sıralanmış bir kuyrukta hareket ettirin.
· kamo-internal
Plan seçicileyicisi için alıntı motoru, Stripe'in ne yapacağını eşleşen
Canlı çalışanın arkasındaki arithmetici, herhangi bir bileşenden ayrı tutuldu, böylece Sayılar doğrudan test edilebilir. Aynalar ******************** Tam olarak: per-seat add-ons ölçek with headcount, flat ones bill by üniteleri satın alındı Bununla birlikte, birçok insan plan üzerindedir ve metrelenenler daha ziyade adlandırılmaktadır. Tahmin edildi. Bu yazışma noktadır. Her ikisi de platformu daha önce alıntılar Fiyat şarjla aynı fikirde değil - In-app order Sihirbazı her bir kez eklenmiştir Koltuklar ne olursa olsun ve halk sayfası bir organizasyon çapında depolama havuzu Tasarladı kullanıcı başına.
· BillingService
İlk bir plan purchasable yapın ve gerçek plan fiyatları geri dön
İki şey bir organizasyonun ilk abonelik satın almayı bıraktı. Plan listeleri sadece alt.marketId üzerinden bir abonelikte veyag Zaten tuttu, bu yüzden kimse ile bir plan hiçbir yerde üründe göremezdi. GET /api/billing/markets / For-org piyasayı çağrıcınınkinden çözüyor Başlık kökü - Free planı zaten üslerini tedarik eden aynı veyag Bu yüzden planlar ve ödüller farklı kataloglardan gelemez. Ve Plan DTO, ************ Hiç popülatlar: Her KamoCRM planı için NULL, çünkü görünüm yazarı yazıyor **************** fiyatlar Bu nedenle bir satın alma yüzeyi gösterdi Hiçbir fiyat ve hesap bir null şarj kaydetti. Şimdi fiyat okur satırlar, plan sütunları ile onları taşıyan kataloglar için bir geri dönüş. Ayrıca, satın alma yüzeyinin "per 10 GB" dediğini ortaya çıkarır. Sertleşmeden.
· kamo-internal
Kapı lisanslı bir koltukta, chokepoint'te
Üründeki neredeyse her kapılı eylem - bir uzatma, e-posta üye, AI asistanını açın, bir kayıt yapın, sosyal bir sohbete başlayın - çıplak **************** ve araç kaydı hiç bir kapı yoktu. Bu çağrı sitelerini bir seferde asla tamamlanmayamadım: bir nakliyeci Daha sonra ekledi, ya da sadece kaçırılmış, doğrudan etrafındaki rotalar. Kontrol şimdi hayatta ToolWindowsContext'in tek aracı: açık eller, bu yüzden her çağrıcı kaplıdır. Bir araç penceresinden geçemeyen eylemler, nerede yaşadıklarına kapılıyorlar: Bağlar (fotoğraf ve yapıştırma dahil, bu aynı yetenektir Başka bir rota, bir gruba bir sohbet büyüyor ve toplantı giriş noktaları. Bu ayrıca denetimin bulduğu üç tutarsızlıkları da beraberinde getiriyor. Üçü "Bir toplantıya davet et" giriş noktaları kontrol organizasyonunu kontrol etti. Meet ve üçüncü oldu değil; üç e-posta giriş noktasının ikisi ACCESS MAIL ve üçüncüsünü kontrol etti Değil; ve bir üyenin roster'dan uzatmasını aramak hiç bir VOIP çeki yoktu tür. Hepsi şimdi aynı fikirde. Kilitli olmak için yetenek varsayılan - ilk yük uçuştayken, çağrı çağrısı Başarısız, ve daha yaşlı bir geri dönüş alanı durdurursa. De ki: "Eylül" el ele Ödemeli özellikler, hangi yanlışlık yolu zaten bir kez yapılır Başarısız açık varsayılan ile.
· SecurityService
Bir üyenin ne yapabileceğini çözün, sadece planlarının ne içerdiğini değil
Özel hibeler bir planı tanımlar. Bu üyesi asla açıklamadılar, çünkü bu üye Konsol kapıları org- level org.features üzerinde navigasyon - bu yüzden lisansı olmayan bir üye Her uygulama organizasyonuna hak olduğunu gördü ve üye düzeyinde Veritabanında zaten var olan lisanslar hiçbir şeye etkisi yoktu. ÜyeCap yükümlülükleri bu eksik cevap, sunucuda bir kez çözülür. Bir üye Bir koltuk olmadan kasıtlı bir zemin tutar: Takım arkadaşlarıyla metin konuşması, Destek, kendi profili, kendi faturaları - bir insana ulaşmak ve bir insana ulaşmak için yeterli Bir koltuk geri satın alın. Incoming-message çeviri de devam ediyor, çünkü ne okuyor Gönderildiniz harcama değildir. koşmak için para maliyeti olan her şey kapalı. Aktif veya yargılayıcı herkese sadece koltuktan ziyade veyag'de lisans verir Sahibi. Bir deneme veyag, Free planın tek koltuğu ile tohumlanır, bu yüzden üşür. Lisanslar üzerinde deneme, tek başına ürünün ürünü değerlendirebileceği anlamına gelirdi Takım onu değerlendirmeye davet ederken hiçbir şey görmediler. Giriş şu şekilde yapılır: kimlik doğrulama asla fatura durumuna danışmadı ve hala Değil. Bir koltuk maliyeti özelliklerini kaybetmek, asla erişim.
· BillingService
Bill per-unit satın alınan birimler tarafından ekleniyor, başsaygı tarafından değil
Yeni ek miktarı oluşturma ve güncelleme yoluyla dinleyin: bir FLAT add-on şimdi Stripe miktarını abonelik aslında satın aldığı şeyden alır, bu yüzden dört 10 GB depolama blokları, koltuk başına bir kez yerine dört blok olarak faturalandırılır. Sayılar, bu şekilde çözülebilir eklenti kodlarına karşı filtrelenir, bu yüzden bir stale veya düşmanca vücut, bir koda karşı bir miktar park edemezdi, bu hak değil Satın almak için.
· InitializerService
Reprice Ek Depolama 10 GB başına 2,50 $ veyag- çapında
Add-on bir organizasyon çapında paylaşılan havuz tarif etti ve sonra fiyatlandı USAGE BASED, "25 GB" ile 4, sadece prose'de ifade edildi. Hiçbir şey asla teslim olmadı depolama metre olayı, bu yüzden hiçbir şey söylemedi; ve bağlıydı, Stripe Bir metre fiyat üzerinde bir miktar reddediyor, bu yüzden abonelik yaratması olurdu atıldı. Bu arada halk sayfası "+$4 /user/ay" olarak verdi. Şimdi FLAT, birim size 10 $ 2.50 ile - sahibi satın alır, fiyatlandı Bununla birlikte, birçok insan plan üzerindedir. AddOnQuantityMigration iki kat daha ekliyor Sipariş Masası'nda nullable sütunlar, herhangi bir koşucudan önce haritalar o haritaları yükleyebilir Onlara.
· kamo-shared-library
Bir birim büyüklüğü ve bir purchasable miktar ekleyin
Add-on'un ünitesi sadece kendi açıklamasının içinde prose olarak var olmuştur ("Her birim 25 GB'yi ekliyor) ve pazarlama alanında sıkı bir sabit olarak, bu yüzden hiçbir şey hiçbir şey yapamadı Buna karşı fatura. AbonelikAddOn kazançlar ünitesi size ve HesapSubscription kazanımlar Addon quantities - her bir eklentinin kaç birim satın alındı. Aktif addon codes gerçeğin entitlement kaynağı kalıyor, bu yüzden sadece hiçbir şey değil “Bu uygulamayı verilen” istemek, miktar haritasının var olduğunu bilmek zorundadır. Ayrıca, sihirbazın alıntısını düzeltin, bu da her bir sandalyeyi bir kez hiçbir koltukla ekledi. Çoğu PER SEAT olmasına rağmen faktör: dört modülle 25-seat siparişi 59 $ Stripe'a karşı 31 dolar alıntı yaptı. Şimdi alıntı aynı şeyi takip ediyor Fiyatlama modeli yükü yapar ve omits sayacı-onları tahmin etmek yerine.
· kamo-internal
Ajanı bir bilet imzalamak için seçin, yerine boşlarını yazmak yerine
Assign ve reassign, bir metin kutusu açtı, bir ham üye id içine bastı - hangi İstediğin kişinin boşunu zaten bilmek anlamına geliyordu, bütün bir eylem için Amaç doğru olanı bulmaktır. Şimdi ÜyePickerDialog'u kullanıyor, aynı seçici müdür alanının arkasındaki aynı seçici Üyenin profili ve bir kişi bu uygulamada seçicidir. onun rehberi arama çalışır server-side and maç on name, alias, work and account email, iş unvanı ve Bölüm, bu yüzden "ana ödünç alma" Ana'yı Lending bulur; her satır her satır yeterli taşır Aynı adın iki kişiye ayrı söyleyin. Mevcut atama, yukarıda pinlenmiş Sonuçlar bu yüzden orta aramayı kaybetmez. Üye ids JavaScript'in tam tam tam tam tam tam tam tam tam tam tam tam tam tam tam tam sayısını aşıyor, bu yüzden id bir dizeden kalır Kılavuz tele.
· MediaService
İşaret için uç noktaları
GET /sessions/chat/auto-open, bu üyesin müşterinin müşteri konuşmaları döndürür yükseltilmeli; POST /sessions/{guid}/auto-opened records that it did. Kalıcı bağlantıyı Destek elover ve aynı sebepten dolayı: karar Platforma ait, bir tarayıcı sekmenin seansı için değil. Yaz, caller'in kendi üyeliği sırasına tabidir, bu yüzden bir üyenin müşterisi Hiçbir zaman başka bir şeyi emekli edemez ve bir müşteri kitlesinden ziyade puls sunucu zamanı Değer - karşılaştırma aynı saat tarafından yazılmış mesaj zamanlarına karşı, Ve bir skewed tarayıcı aksi takdirde bir konuşma sonsuza dek bastırır veya Onu sonsuza dek yeniden değerlendirin. ChatAutoOpenHqlTest gerçek varlık modeline karşı sorguyu parlar ve pins the query against the query against the real entity model and pins the pins the query against the query against the query against the real entity model and pins the pins the real entity model and pins the pins the query pars the query against the query against the query against the query against the query against the query against the query against the query against the real entity model and pins the pins the real entity model and pins the pins the real entity model. Üç predikates için var. Spring Data sadece @Query'yi bağlamlarda doğrular boot, bu yüzden bir tipo, başarısız bir başlangıç veya bir yolda 500 olarak başka bir yüzey olurdu Her üye imzaya vurur; test sorguyu annotasyondan okur Bu yüzden bir stale kopyasına karşı geçemez.
· kamo-shared-library
Kendi tarafından yetiştirilen müşteri tarafından yetiştirilen bir konuşmanın küçük kaydı
MediaSessionMember, AUTO OPENED AT'ı, msgIdLastViewed'in yanında elde ediyor çünkü bu Aynı tahıl - bir üyenin bir seansla ilişkisi hakkında bir gerçek. Bu biri “Ne kadar okuduklarını” yanıtlar; Bu bir cevap “ Zaten gösterildiler Bu, şaşkınlık.” Her şeyin kaydı olmayan per-tab seansı bayrakını değiştirir: a record of anything: İkinci cihaz, ilk önce attığı her konuşmayı yeniden açtı ve Açık depolama tamamen gerçeği kaybetti. ChatSessionsToAutoOpen, üyenin sahip olduğu bir şeyi tutan seansları döndürür. Son yükseltmeden beri bir şeyin nereden geldiğini okuma - bu yüzden bir konuşma kasıtlı olarak terk edilmiş duraklar her yük üzerinde yeniden açılır, ancak geri gelirken Gerçekten yeni mesaj toprakları. Chat seansları sadece; destek biletleri kendi kendine sahip Elover. Üyenin kendi mesajları dışlanmış ve bir dangling msgIdLastViewed pointer yakalanmak yerine daha kısa sürede sayılıyor, çünkü bir ölçekaltı altk Yok bir sıra NULL'ı verir ve kalıcı olarak okurlardı.
· kamo-internal
Overhaul the tercih paneli
Four dropdowns ve bir panelde bir geçiş onant'ta alta kadar yıkandı Tam güçte renk, bu yüzden her kontrol kendi geçmişiyle savaştı. Her biri her Bir tıklamanın arkasındaki üç veya dört seçeneği ve aynı on ikisini tekrarladı Sınır stili hatları. Panel şimdi bir yüzeydir ve renk her ne seçilirse aittir. - Her seçenek ekranda. Bunlar üç ila beş ile dört ayar Her biri kısa değerler; onlara bir menü açmaktan daha hızlı göstermek ve Bir seçim bileşeni, tekrarlanan stilin dört blokunu değiştirir. - Hatırlatma zamanı ve yöntemi bir kartı paylaşıyor, çünkü ne anlama geliyor Diğeri olmadan. Hatırlatma sıralamaları mono, geri kalanını eşleşen Takvimin zaman tedavisi. - Varsayılan takvim rengini gösterir, bu yüzden aynı şekilde tanınır Yanbar'da ve tek başına isim yerine olay diyalogu. - Başlık vücut kaydırakları sırasında ortaya çıkıyor - dört bölümle başlık Aksi takdirde uzaklaşır. Bu ayarlar basına hiçbir düğme ile değişmiyor ve daha önce de dedi. Bu yüzden çıplak bir spinner ile. Şimdi açık bir "Resulüm" var, sonra da kaybolur Birkaç saniye çünkü sadece yapılan değişiklik için bir makbul, değil Panelin kalıcı durumu. Bölümler ve onay ilkbaharları; her ikisi de bastırılır Tercih edilen duygusallığı tercih eder. Her dize mevcut bir anahtardır. Detached worktree içinde bir üretim ile doğrulandı.
· kamo-internal
Posta kutusunu bir araya getiren bir iskeletle değiştirin
/messajlar üzerindeki her yükleme durumu, aksi takdirde boş bir pane üzerinde bir Kargo2 idi - boot, mesaj listesi, klasör ağacı, mesaj vücudu ve bir sonraki sayfa Yere girin ve okuyucuya ne geldiği hakkında hiçbir şey söylemedi. Şimdi yükleme olan şeyi çiziyorlar. Her yer sahibi geometriyi kopyalar İçindeki bileşen, 40px Avatar'a aşağı, klasör indent ve 104/120px mesaj satırları gerçek işaretten ölçüldü, bu yüzden düzen hiçbir şey değildir. Veri toprakları olduğunda hareket edin. Bir fikir hareketi taşır: bir ışık haçı grubu Her yer sahibi sağdan ayrıldı ve aşağıda her satırda bir yene başlar, bu yüzden vurgu, her satırdan ziyade tek bir digonal geçiş olarak yığını geri alır. Kendi saatine basmak. Rows aynı sırayla yer haline gelir. Işıktan karışıktır - mecent-comms, mesajlar modülünün kendi aile aksanını, Bu nedenle, genel bir parlaktan ziyade bu ürün olarak okur. Tercih edilen duygusallığı tercih eder Hala barlara olan her şeyi düzeler. Yeni mesaj anahtarları yok: yer sahipleri kendilerini ekran okuyuculara duyuruyor Zaten orada olan üç yükleme dizeleri aracılığıyla.
· kamo-internal
Ekleyin ve konukları olaydan çıkarın
Tartışmanın yapamadığı son şey. Zaten kim olduğunu gösterebiliyordu Bir olay, ama orada kimseyi koymak için bir yol yoktu - sadece misafir kontrolü “Güncelleme ve bildirim” idi, zaten davet edilen e-postalar. Konuklar e-posta tarafından eklenir, RSVP ile renkli olarak listelenir Devletle ve yukarı doğru kaldırıldı. Enter add a guest rather than than than Diyaloğu gönderin, çünkü bitmek yerine orta listesiniz. The The The The The The The The organizatör işaretlenir ve sıradan bir misafir için yanlış olamaz. E-posta doğrulama kasıtlı olarak izin vericidir: gerçek test postanın posta kodu olup olmadığını Yemin ederim ve katı bir desen mükemmel adresleri reddeder geçerli. Açık bir tipo yakalar, daha fazlası değil. Boş devlet özürlerden ziyade davet eder. Strings bunu kamo-translation-dictionary'de önceden gönderdi – bir sonraki-intl En.json ve kamo-internal's CI klonlarından eksik olan bir anahtara atlar Zaman inşa etmek için, bu yüzden ilk önce bir takvim sayfasını gönderirdi, Kazalar. Bir detached worktree içinde bir üretim ile doğrulandı; başka bir seans In-tree kilit tutar.
· EmailService
Bir olayın misafir listesini yönetin
Diyalog zaten bir olayda kim olduğunu gösterebilirdi ama asla ekleme veya kaldırmaz Herkes; tek misafir operasyonu bir şekilde olan insanları yeniden ifade ediyordu Zaten orada. Olaylar şimdi bir misafir listesi kabul ediyor, tasarruf üzerine tamamen değiştirildi. Değiştirin Birleşmeden daha fazla, çünkü diyalog listeye sahiptir - bir misafir kaldırıldı Burada kaybolur. Bir null listesi, "alan değil" anlamına gelir ve konukları terk eder Yalnız, bir müşteri düzenlemesinin yalnızca bir başlık gönderdiği şeydir. Bir müşteri iddia etmedikleri iki şey, bu yüzden ne okumuyor Talep: RSVP, misafirin vermek ve organizatör bayrağı, Toplantıyı çağıran hangi kayıtları. Her ikisi de bir düzenleme hayatta kalır - yeniden yaratır Güncelleme yerine satırlar her cevabı sıfırlayacak ve birini şeritle Kişi olayı iptal etmesine izin verdi. Konuklar geri döndü. Bir ay görüş yüz olay döndürür ve sormak Olay başına bir sorgulamadır. Bir olayı ortadan kaldırmak şimdi ilk önce misafirlerini kaldırır. Onlar, olmayanları taşırlar Yabancı anahtar buna geri döndü, bu yüzden onları yeten ya da bir kez başarısız oldu Veritabanı referansı zorladı.
· kamo-shared-library
Batched guest lookup and delete-by-event
Olay dialog kiminle olduğunu gösterir ve liste uç noktası geri döndürür Bir seferde olayların ay. Etkinlik başına konuklara sorun, satır başına bir sorgudur; FindBy EventIdIn bir kez sorar. DiptId tarafından silinen bir misafir listesinin tamamen değiştirilmesinin ilk yarısıdır ve Bir olayı yetimsiz sıralar olmadan çıkarmak, olmayan bir yabancı taşımak Ona geri anahtar.

Evreniniz sizi bekliyor.
Birkaç dakika içinde ücretsiz olarak başlatın. Hazır olduğunuzda ürünleri ekleyin - göç yok, yeni girişler yok.
Sonsuza kadar ücretsiz — kredi kartı gerekmiyor