Jump to content
KAMOUniverse

Changelog

Ada kabar baru.

Setiap perbaikan pada platform, sebagai kapal.

  1. · kamo-shared-library

    Tampilkan apa yang mematikan kegagalan akan dikenakan biaya

    kamo.fearment.fail-open hibah aplikasi apapun matriks rencana tidak pernah menyebutkan. Hal ini didokumentasikan sebagai katup sementara untuk backfill katalog - mematikannya sekali matriks dijahit - tetapi tidak ada yang bisa menjawab pertanyaan yang memutuskan apakah mematikan itu aman: dimana penyewa memegang aplikasi yang hanya karena itu. Flipping buta akan diambil aplikasi jauh dari organisasi hidup, dengan tiket dukungan pertama sebagai pemberitahuan. Gagal OpenGrants menyelesaikan setiap organisasi dua kali, sekali pemberian aplikasi yang tidak disebutkan dan pernah menyangkal mereka, dan melaporkan perbedaannya. Ini tidak membaca hidup bendera, sehingga memberikan jawaban yang sama sebelum dan setelah flip. Resolusi ulang melalui resolvePlan daripada rencana id secara langsung, mencerminkan jalan nyata fallback ke pencarian planCode - jika tidak hibah yang akan bertahan hidup dilaporkan sebagai kerugian.

  2. · kamo-internal

    Tampilkan apakah seseorang ada di sana, dan ekstensi mereka

    Setiap baris kini membawa titik kehadiran dan kata di samping nama, dan ekstensi dalam garis detail - sehingga memilih seseorang tidak lagi berarti memilih nama dan Berharap. Ini adalah salah satu orang picker dalam aplikasi, sehingga mendarat di Manajer field, e- sign signers, menambahkan orang ke sebuah chatting dan menugaskan dukungan sama. Offline mengalahkan apa pun yang dinyatakan. avability _ status hanya bergerak di signal-in, tanda tangan dan toggle manual, jadi seseorang yang tidak pernah menandatangani membaca AVAILABLE tanpa batas waktu menunjukkan bahwa sebagai titik hijau akan percaya diri salah tentang satu hal titik adalah untuk. Tidak terhubung menarik sebagai lingkaran garis luar daripada sebuah diisi titik, sehingga membaca sebagai ketiadaan bukan sebagai warna status lain. Sebuah direktori yang tidak pernah dilakukan kehadiran - sumber memori in- belakang 'fetcher' - menunjukkan tidak ada indikator sama sekali. Absen tidak diketahui, dan tidak diketahui harus mengatakan apa-apa daripada mengklaim semua orang offline.

  3. · SecurityService

    Ketersediaan, kehadiran, dan ekstensi pada suatu baris direktori

    Memilih seseorang lebih mudah ketika baris mengatakan apakah mereka ada dan bagaimana untuk mencapai mereka, sehingga masing-masing sekarang membawa apa yang mereka terakhir menyatakan, apakah apa pun mereka benar-benar terhubung, dan perpanjangan pekerjaan mereka ketika mereka memiliki satu. Ketersediaan dan kehadiran baik di sini karena baik sendiri menyesatkan: avabilbility _ status hanya bergerak pada sign-in, sign- out dan sebuah toggle manual, jadi anggota yang tidak pernah tanda tangan keluar membaca AVAILABLE tanpa batas waktu. Kehadiran dibaca dari PRESENCE: [memberId] kunci MediaService menulis - sebuah layanan lintas membaca layak penamaan. Alternatif adalah perjalanan keliling HTTP ke MediaService pada setiap keystroke dari pencarian, atau membaca kehadiran dalam browser, dan peramban tidak dapat: Alat Pemasok membuat dok alat sebagai saudara dari pohon yang memegang penyedia kehadiran, sehingga picker dibuka di dalam tiket dukungan jendela akan melaporkan setiap rekan offline. Kedua layanan berbagi host Redis dan database. Pencarian gagal dibaca sebagai luring daripada gagal dalam pencarian.

  4. · BillingService

    Beli blok ketika opted-in org kehabisan ruang

    Berjalan tak lama setelah snapshot menyapu malam, karena itulah yang menghasilkan angka penggunaan itu memutuskan - memperluas terhadap jumlah kemarin akan membeli Selalu telat setiap hari. Satu blok per menjalankan, tidak pernah catch-up meledak, dan berhenti di langit-langit pemilik. Jika sebuah organisasi jauh melewati langit-langit yang hasil yang tepat adalah bahwa menulis berhenti dan seseorang melihat itu, tidak bahwa platform diam-diam membeli jalan keluar di mereka biaya. Perluas otomatis dengan tidak ada langit-langit yang dibaca sebagai cacat daripada tak terbatas, karena absen batas jauh lebih mungkin menjadi oversight daripada niat.

  5. · InitializerService

    Tambahkan kolom auto- expand

  6. · kamo-shared-library

    Opt-in auto- expand dengan langit-langit

    Dua kolom pada langganan yang memegang blok: apakah untuk membeli yang lain satu otomatis ketika organisasi kehabisan ruang, dan yang paling mungkin pernah membeli. Off secara default sengaja - diam-diam meningkatkan tagihan seseorang lebih buruk daripada Mengunggah yang gagal dengan penjelasan, jadi menyalakannya adalah pemilik perdagangan uang kecil untuk tidak pernah harus berpikir tentang hal itu, dan itu hanya perdagangan mereka untuk buat. Langit-langit dibutuhkan daripada opsional: pembelian otomatis tanpa terikat adalah komitmen terbuka-berakhir untuk proses tidak ada yang menonton.

  7. · BillingService

    Biarkan harga katalog berubah benar-benar mencapai Stripe

    Harga Stripe tidak dapat diubah dan pemetaan memegang satu baris per (org, tipe, kode, cycle) dibelakang kunci yang unik, jadi sekali ada harga itu tidak akan pernah berubah. A pengubahan harga adalah noop permanen pada pendapatan, dan tidak ada yang melaporkan itu. StripePriceReconciler membandingkan setiap harga dipetakan terhadap apa katalog sekarang mengatakan dan, ketika diminta untuk, menunjuk pemetaan pada harga Stripe segar dengan yang lama satu diarsipkan - diarsipkan daripada dihapus, karena Stripe terus penagihan sebuah harga terarsip untuk langganan sudah di atasnya dan menolaknya untuk yang baru, yang persis perilaku diinginkan. Metering dilakukan di seluruh, sehingga meter harga tidak bisa kembali tanpa hati dan diam-diam berhenti menggunakan tagihan. Ini sengaja tidak memindahkan pelanggan yang ada ke harga baru. Diam-diam re- harga pelanggan hidup karena seseorang mengedit sebuah baris katalog adalah biaya tidak ada yang berwenang; apakah untuk kakek mereka adalah keputusan komersial, dan fakta bahwa itu tidak pernah keputusan adalah apa yang hilang. Hitung masih pada Sebagai gantinya, harga lama dilaporkan. Exposed reports -only by default at GET * * * * * * * * * * * * * with the repoint balik POST eksplisit.

  8. · InitializerService

    Tambahkan kolom yang membuat perubahan harga dapat dideteksi

    Order (0), nullable, no backfill - a null number reads as "we don 't know what harga ini dibuat dengan "dan pencocokan memperlakukannya sebagai tidak diketahui daripada sebagai drift.

  9. · kamo-shared-library

    Rekam apa setiap harga Stripe dibuat dengan

    Pemetaan hanya disimpan yang harga id untuk digunakan, sehingga perubahan harga katalog bisa bahkan akan diperhatikan. pastiPlanPrices pendek beredar pada keberadaan baris dan kunci unik melarang yang kedua, yang berarti menaikkan rencana dari $72 ke $79 diperbarui halaman pemasaran, kutipan in- app dan rencana DTO dan berubah Bukan apa-apa tentang apa yang orang didakwa dengan tidak melaporkan divergensi. unit _ number _ cents dan mata uang memberikan pencocokan sesuatu untuk dibandingkan. Kedua null dan kiri KOSONG untuk baris yang ada: null berarti "tidak diketahui", yaitu benar dari setiap baris mendahului kolom, dan memperlakukan tidak diketahui sebagai tidak cocok akan Recreate setiap harga di real pada run pertama.

  10. · kamo-internal

    Ketik kapasitas penyimpanan ringkasan sekarang kembali

    Menjaga kontrak klien dalam langkah dengan Layanan BillingService, yang sekarang melaporkan apa rencana termasuk, blok apa yang dibeli, langit-langit gabungan dan fraksi yang digunakan bersama byte yang disimpan. Panel yang membuatnya membutuhkan salinan baru, dan kamo- terjemahan - kamus adalah tengah-edit dengan sesi lain, sehingga UI mendarat secara terpisah daripada menyapu dalam penerbangan bekerja di repo itu.

  11. · BillingService

    Laporkan kapasitas bersama penggunaan

    Panel penyimpanan melaporkan byte yang disimpan tidak ada sama sekali - tidak ada tunjangan, tidak ada persentase, tidak ada uang - sehingga pemilik melihat 400 GB tidak punya cara untuk memberitahu apakah itu nyaman atau tentang untuk menghentikan upload mereka. Mereka pertama pengetahuan tentang masalah akan gagal meng-upload. Ringkasan sekarang membawa apa rencana termasuk, blok apa yang dibeli, yang gabungan langit-langit dan pecahan digunakan, ditambah ukuran blok dan harga sehingga Permukaan dapat mengatakan apa blok lain akan memberi dan biaya tanpa hardcoding itu. Semua itu berasal dari katalog yang sama baris biaya adalah harga dari.

  12. · kamo-shared-library

    Berikan tunjangan penyimpanan efek

    Penyimpanan diukur di sembilan belas domain, malam, dengan build- gagal cakupan tes - dan di mana saja dihitung sebuah tunjangan atau menolak byte. Sosok penyimpanan rencana adalah data yang tak seorang pun baca, dan Penyimpanan Tambahan add- on tidak memiliki efek produk sama sekali: membayar berubah apa-apa dan tidak membayar biaya Tidak ada. StorageQuotaService menyelesaikan apa yang mungkin dimiliki organisasi - pengguna per- rencana tunjangan pooled di kursi, ditambah blok yang telah membeli - dan ImageService menolak isi yang akan melebihi itu. Cek duduk setelah pencarian dedup, so re-attaching a file the platform already holds tidak pernah ditolak untuk ruang; hanya jumlah byte benar-benar baru. Ia tinggal di sini daripada di BillingService karena layanan yang menulis bytes tidak dapat setiap panggilan sebuah API penagihan pada jalur upload mereka, dan itu disuntikkan oleh field daripada melalui konstruktor karena ImageService dirakit oleh tangan di beberapa tempat - argumen konstruktor adalah salah satu edit yang compiles di mana-mana kecuali tes dan kemudian gagal membangun gambar. Dua cara yang disengaja menjadi salah. "GB" dibaca sebagai gibibyte, yaitu apa manajer berkas berarti ketika mencetak GB dan membaca lebih murah hati. Dan organisasi tanpa langganan hidup, atau layanan dengan tidak ada kuota kacang kabel, toko persis seperti sebelumnya: gerbang ini ada untuk memegang pelanggan membayar apa mereka membeli, tidak mengubah kesenjangan tagihan menjadi kehilangan data. Pembaca tidak pernah gated - Mengisi tempat penyimpanan Anda berhenti Anda menambahkan lebih, tidak pernah mengambil apa yang Anda miliki.

  13. · kamo-internal

    Katakan permintaan apakah agen mereka benar-benar ada

    Sebuah benang diam tidak membedakan "tidak ada yang melihat ini" dari "agenku melangkah pergi ", dan orang menunggu tidak bisa mengatakan yang mana. Pemberitahuan di bawah percakapan mengatakan yang, dan ketika jawabannya adalah "tidak sekarang" itu mengatakan apa yang terjadi berikutnya - pesan diterima dan akan dijawab ketika mereka kembali - bukan daripada meninggalkan seseorang untuk bertanya-tanya apakah mendarat sama sekali. Ditempatkan di bawah obrolan daripada di kepala karena jawaban "adalah siapa pun ada? ", yang merupakan pertanyaan yang ditanyakan sambil mengetik, bukan ketika memindai Metadata tiket. Server- menjawab, tidak dibaca dari peta kehadiran permintaan: kehadiran adalah Siaran per organisasi, jadi anggota pelanggan -org yang dibantu oleh penyedia org akan melihat agen mereka sebagai offline permanen. A confidently wrong "they 're Jauh lebih buruk daripada tidak ada pemberitahuan. Untuk alasan yang sama polling gagal terus terakhir yang dikenal sebagai jawaban bukannya membalik pemberitahuan. Jajak pendapat pada usia 30-an dan hanya saat tab terlihat. Kemampuan adalah kenyamanan sinyal, bukan satu pembenaran, dan tab backgrounded tidak ada yang menonton.

  14. · MediaService

    Penugasan mencapai agen baru, dan permintaan diberitahu yang ada

    Penugasan tidak mencapai siapa pun. Catatan yang diajukan klien percakapan di layar, dan itu adalah apa yang menimbulkan tiket di sign-in - tetapi masih memegang cap agen PREVIOUS, sehingga yang baru mendapat dorongan hidup hanya jika mereka kebetulan online saat itu, dan tidak ada apapun jika mereka keluar. applyAssigns sekarang membersihkannya setiap kali assignee benar-benar berubah, Yang membuat pemberian bisa bertahan bagi siapa pun yang memilikinya sekarang. GET * * * * * * * * * * * * * * memberitahu orang yang meminta bantuan apakah Orang yang membantu mereka bisa dihubungi. Jawaban sisi server- sengaja: kehadiran adalah siaran per organisasi, sehingga permintaan pelanggan -org tidak dapat melihat agen dalam penyedia org sama sekali dan status akan membaca "offline" untuk setiap single lintas percakapan -org. Scoped kepada orang-orang sudah dalam percakapan - a id tiket adalah UUID, bukan rahasia, dan "adalah orang ini di meja mereka" tidak boleh Jawaban untuk menebak.

  15. · kamo-internal

    Atur permintaan obrolan, dan tetapkan dari daftar tiket

    Dua kesenjangan, penyebab yang sama - tugas diperlakukan sebagai sesuatu yang terjadi pada Tiket daripada untuk sepotong pekerjaan. Tombol assign disembunyikan untuk pre-ticket secara langsung, jadi permintaan obrolan langsung, kasus di mana mendapatkan ke orang yang tepat paling penting, tidak punya cara untuk menjadi menyerahkan semuanya. Kekurangan tanggal dari ketika permintaan obrolan belum "a tiket nyata "dan tugas hanya terjadi pada konversi. Hal ini diterima sekarang, dan status bertahan, sehingga masih dapat dikonversi setelah itu. Dan menugaskan harus membuka percakapan pertama, yang merupakan bentuk yang salah untuk triaging a queue - orang yang bekerja antrian sering bukan orang yang harus menjawab. The Assigned To sel pada daftar tiket sekarang kontrol: menampilkan penempatan atau resisign, klik membuka picker yang sama dengan tiket jendela menggunakan. Baris klik masih membuka percakapan. Patch respon sendiri daripada memuat ulang, jadi menugaskan tidak memindahkan tempat operator dalam sebuah disaring, diurutkan, paged antrian.

  16. · kamo-internal

    Kutipan mesin untuk rencana picker, pencocokan apa Stripe akan tagihan

    Aritmatika di balik hidup berjalan total, disimpan terpisah dari komponen apapun sehingga angka dapat diuji secara langsung. Ini cermin * * * * * * * * * * * * * * * * * * exactly: per-seat add-ons skala dengan headcount, yang datar tagihan oleh unit dibeli Namun banyak orang yang pada rencana, dan kata-kata yang dinamai daripada menebak. Korespondensi itulah intinya. Kedua tempat platform sebelumnya dikutip sebuah harga tidak setuju dengan muatan - master urutan in- app menambahkan setiap add- pada sekali Terlepas dari kursi, dan halaman publik ditagih sebuah organisasi-luas kolam penyimpanan per pengguna.

  17. · BillingService

    Buat rencana pertama yang bisa dibeli, dan kembalikan harga rencana sebenarnya

    Dua hal menghentikan organisasi yang pernah membeli langganan pertama. Daftar rencana hanya dapat dicapai melalui sub.markeId pada berlangganan org sudah diselenggarakan, sehingga org dengan tidak ada tidak bisa melihat rencana di mana saja dalam produk. GET / API / billing / pasar / for-org menyelesaikan pasar dari penelepon Akar hak - org yang sama Rencana bebasnya sudah menyediakan dasar mereka, jadi rencana dan hak tidak dapat datang dari katalog yang berbeda. Dan rencana DTO dibaca * * * * * * * * * * * * * * * * * * yang apa-apa pernah populasi: mereka NULL untuk setiap rencana KamoCRM, karena pencari menulis harga menjadi * * * * * * * * * * * * * * * * Sebuah membeli permukaan oleh karena itu menunjukkan tidak ada harga sama sekali, dan rekening tercatat biaya kosong. Sekarang membaca harga baris, dengan kolom rencana sebagai fallback untuk katalog yang membawa mereka. Juga mengekspos add- pada ukuran unit sehingga membeli permukaan dapat mengatakan "per 10 GB" tanpa hardcoding itu.

  18. · kamo-internal

    Gerbang dibayar tindakan di kursi berlisensi, di titik chokepoint

    Hampir setiap aksi gatabel dalam produk - dial ekstensi, email anggota, membuka asisten AI, memutar rekaman, memulai percakapan sosial - adalah telanjang * * * * * * * * * * * * * dan alat registri tidak memiliki gerbang sama sekali. Gating situs panggilan satu per satu tidak pernah bisa selesai: operator ditambahkan kemudian, atau hanya terjawab, rute lurus di sekitarnya. Cek sekarang tinggal di Alat tunggal WindowsContext: penangan terbuka, sehingga setiap penelepon ditutupi. Aksi yang tidak pernah melewati jendela alat digated di mana mereka tinggal: lampiran (termasuk drag- drop dan paste, yang merupakan kemampuan yang sama dengan rute lain), tumbuh chatting ke dalam kelompok, dan entri pertemuan poin. Itu juga menyelesaikan tiga inkonsistensi audit ditemukan. Dua dari tiga "diundang untuk pertemuan" titik masuk memeriksa organisasi. Adalah Bertemu dan ketiga tidak bukan; dua dari tiga titik masukan email diperiksa AKSESS _ MAIL dan yang ketiga tidak bukan; dan memanggil ekstensi anggota dari daftar tidak memiliki pemeriksaan VOIP dari apapun baik. Mereka semua sekarang setuju. Kapabilitas baku untuk dikunci - sementara beban pertama dalam penerbangan, jika panggilan gagal, dan jika backend yang lebih tua mengacaukan lapangan. Guessing "diperbolehkan" akan tangan out paid features, which is the mistake the berhak path already made once dengan kegagalannya.

  19. · SecurityService

    Selesaikan apa yang anggota bisa lakukan, bukan hanya apa rencana mereka termasuk

    Fitur memberikan gambaran rencana. Mereka tidak pernah menggambarkan anggota ini, karena konsol navigasi pada org-level org.features - jadi anggota tanpa lisensi sama sekali melihat setiap aplikasi organisasi berhak, dan tingkat anggota lisensi yang sudah ada dalam database tidak berpengaruh pada apa pun. Kepentingan adalah bahwa jawaban yang hilang, diselesaikan sekali di server. Seorang anggota tanpa kursi membuat lantai yang disengaja: percakapan teks dengan rekan tim, dukungan, profil mereka sendiri, tagihan mereka sendiri - cukup untuk mencapai manusia dan untuk membeli kursi kembali. Incoing- terjemahan pesan tetap pada juga, karena membaca apa Anda dikirim tidak menghabiskan. Segala sesuatu yang biaya uang untuk menjalankan off. Sebuah percobaan org aktif lisensi semua orang di org daripada hanya kursi memegang. Sebuah uji coba org disemprotkan dengan satu kursi Rencana Bebas, sehingga mengatar percobaan lisensi akan berarti pemilik sendiri bisa mengevaluasi produk sementara tim mereka mengundang untuk mengevaluasi itu melihat apa-apa. Login tidak tersentuh: otentikasi belum pernah berkonsultasi kondisi penagihan dan masih Tidak. Kehilangan harga kursi, tidak pernah masuk.

  20. · BillingService

    Bill per- unit add-ons oleh unit dibeli, bukan oleh headcount

    Thread add-on baru kuantitas melalui pembuatan dan update: sebuah ADD- FLAT sekarang mengambil kuantitas Stripe dari apa yang sebenarnya dibeli langganan, jadi empat 10 GB blok penyimpanan sebagai empat blok daripada sekali per kursi. Quantities yang disaring terhadap alamat diselesaikan-pada kode dalam perjalanan, jadi tubuh basi atau bermusuhan tidak dapat taman kuantitas terhadap kode itu tidak berhak untuk membeli.

  21. · InitializerService

    Penyimpanan Tambahan Harga Sebagai $2.50 per 10 GB, org- lebar

    Add- on dijelaskan sebuah organisasi-berbagi kolam lebar dan kemudian harga USAGE _ BASED di $4 dengan "25 GB" dinyatakan hanya dalam prosa. Tidak ada yang pernah diajukan a event meter penyimpanan, sehingga ditagih apa-apa, dan apakah itu telah terpasang, Stripe Mengtolak kuantitas dengan harga yang pas, sehingga penciptaan berlangganan akan dilempar. Sementara itu, halaman publik menjadikannya sebagai "+ $4 / user / bulan". Sekarang FLAT dengan unit _ size 10 pada $2,50 - blok pemilik membeli, harga namun banyak orang yang ada dalam rencana. AddonQuantityMigrasi menambahkan dua kolom bernubled di Orde (0), sebelum pelari manapun dapat memuat entitas yang memetakan mereka.

  22. · kamo-shared-library

    Berikan add-ons ukuran unit dan kuantitas yang dapat dibeli

    Add- on unit hanya pernah ada sebagai prosa di dalam deskripsinya ("Setiap unit menambahkan 25 GB ") dan sebagai konstanta hardkode di situs pemasaran, jadi tidak ada yang bisa tagihan terhadap itu. Subscription AddOn memperoleh keuntungan unit _ size, dan AccountSubscription addon _ count - berapa banyak unit masing-masing add- pada langganan dibeli. active _ addon _ codes tetap sumber hak dari kebenaran, jadi tidak ada yang hanya bertanya "adalah aplikasi ini diberikan" harus tahu peta kuantitas ada. Juga memperbaiki kutipan wizard, yang menambahkan setiap add- pada sekali tanpa kursi faktor meskipun kebanyakan PER _ SEAT: urutan 25- coat dengan empat modul adalah Mengkutip $31 terhadap $775 Stripe akan tagihan. Kutipan sekarang berikut sama Model harga biaya tidak, dan mengomorolasi ditambahkan-on daripada menebak.

  23. · kamo-internal

    Pilih agen untuk menugaskan ulang tiket, daripada mengetik id mereka

    Atur dan atur ulang membuka kotak teks Anda mengetik ID anggota mentah ke - yang berarti sudah mengetahui id dari orang yang Anda inginkan, untuk tindakan yang keseluruhan tujuan adalah menemukan yang benar. Ini sekarang menggunakan MemberPickerDialog, picker yang sama di belakang Manager bidang pada profil anggota dan satu orang picker dalam aplikasi ini. Pencarian direktori yang dijalankan server- sisi dan cocok pada nama, alias, kerja dan account email, judul pekerjaan dan Departemen, jadi "ana pinjaman" menemukan Ana di Pinjaman; setiap baris membawa cukup untuk Beritahu dua orang dengan nama yang sama. Assignnee saat ini terjepit di atas hasil sehingga tidak hilang tengah pencarian. ID anggota melebihi jangkauan integer JavaScript yang tepat, sehingga id tetap string dari direktori ke kawat.

  24. · MediaService

    Endpoints for the signs-in auto- open handover

    GET / session / chat / auto-open mengembalikan percakapan obrolan klien anggota ini harus menaikkan; POST / sessions / {guid} / auto- membuka catatan yang dilakukannya. Yang tahan lama pihak dari dukungan tangan, dan untuk alasan yang sama: keputusan milik platform, bukan ke sesi peramban. Tulisannya diskotai ke baris keanggotaan pemanggil sendiri, jadi satu klien anggota tidak pernah dapat pensiun lain, dan waktu server perangko daripada klien-disediakan nilai - perbandingan adalah terhadap penanda waktu pesan ditulis oleh jam yang sama, dan browser miring akan dinyatakan baik menekan percakapan selamanya atau Angkat kembali tanpa henti. ChatAutoOpenHqlTest parses permintaan terhadap model entitas sebenarnya dan pin tiga memprediksi itu ada. Data Musim Semi hanya memvalidasi @ Query pada konteks boot, sehingga typo akan dinyatakan permukaan sebagai startup gagal atau 500 di jalan setiap anggota hits di sign- in; tes membaca query dari annotasi oleh Reflection so it cannot pass against a stale copy.

  25. · kamo-shared-library

    Rekor durable dari percakapan klien dibesarkan oleh dirinya sendiri

    Anggota Mediasi memperoleh AUTO _ OpenED _ AT, di samping msgIdLastViewed karena ini adalah biji - fakta tentang hubungan satu anggota dengan satu sesi. Yang itu jawaban "berapa banyak yang mereka baca"; jawaban ini "telah mereka sudah ditampilkan Apa yang kamu nasihatkan itu cukup menjadi pelajaran. Ini menggantikan bendera Penyimpanan Pertab, yang bukan catatan apa-apa: a perangkat kedua dibuka kembali setiap percakapan pertama telah muncul, dan membersihkan penyimpanan kehilangan fakta sepenuhnya. findChatSessToAutoOpen mengembalikan sesi memegang sesuatu anggota memiliki tidak membaca di mana sesuatu telah tiba sejak kenaikan terakhir - jadi percakapan sengaja dibiarkan tak dibaca berhenti membuka kembali setiap beban tapi kembali ketika Benar-benar pesan baru mendarat. Hanya sesi obrolan; dukungan tiket memiliki sendiri menyerahkan. Pesan anggota sendiri tidak termasuk, dan sebuah msgIdLastViewed penunjuk dihitung sebagai unread daripada sebagai caught-up, karena subquery skalar atas baris menghilang menghasilkan NULL dan akan membaca secara permanen dibaca.

  26. · kamo-internal

    Timpa panel preferensi

    Empat dropdowns dan saklar pada panel dicuci atas ke bawah di penyewa warna pada kekuatan penuh, sehingga setiap kontrol berjuang latar belakang sendiri. Masing-masing pilih menyembunyikan tiga atau empat pilihan di belakang klik dan mengulangi dua belas yang sama garis perbatasan styling. Panel adalah permukaan sekarang, dan warna milik pada apa pun yang dipilih. - Setiap pilihan ada di layar. Ini adalah empat pengaturan dengan tiga sampai lima nilai pendek masing-masing; menunjukkan mereka lebih cepat untuk digunakan daripada membuka menu, dan satu komponen Choice menggantikan empat blok gaya duplikat. - Pengingat waktu dan metode berbagi kartu, karena tidak berarti apa-apa tanpa yang lain. Pengingat offset adalah mono, cocok sisa kalender 's pengobatan waktu. - Kalender baku menunjukkan warnanya, sehingga diakui dengan cara yang sama berada di bilah sisi dan dialog acara daripada dengan nama saja. - Header tetap menempatkan sementara tubuh gulungan - dengan empat bagian judul atau gulungan pergi. Pengaturan ini menyimpan perubahan tanpa tombol untuk ditekan, dan sebelumnya dikatakan (Maka ia menerbangkan) atau mengepulkan (di waktu itu) di waktu tersebut, atau di tempat ia berlari (debu) karena gerakannya yang sangat keras. Sekarang ada eksplisit "Saved", yang memudar setelah beberapa detik karena itu adalah tanda terima untuk perubahan hanya membuat, bukan Kondisi permanen panel. Sections stager in and the confirm springs; both are pressed under Lebih memilih mengurangi gerakan. Setiap string adalah kunci yang ada. Diverifikasi dengan produksi bangunan di pohon kerja terpisah.

  27. · kamo-internal

    Gantikan pemintal kotak surat dengan kerangka yang merakit

    Setiap keadaan pemuatan pada / pesan adalah sebuah Loader2 pada sebuah panel yang dinyatakan kosong - boot, daftar pesan, pohon folder, tubuh pesan dan halaman berikutnya semua span di tempat dan memberitahu pembaca apa-apa tentang apa yang akan datang. Mereka sekarang menggambar hal yang dimuat. Setiap placeholder menyalin geometri komponen yang kepanjangan, turun ke avatar 40px, indent folder dan baris pesan 104 / 120px diukur dari markup nyata, sehingga tata letak tidak bergerak ketika data mendarat. Satu ide membawa gerakan: sebuah band salib cahaya setiap placeholder kiri ke kanan dan mulai mengalahkan kemudian di setiap baris di bawahnya, jadi sorot turun tumpukan sebagai lulus diagonal tunggal daripada setiap baris Berkedip pada jam sendiri. Naik ke tempatnya dalam urutan yang sama. Cahaya ini dicampurkan dari --accentcomms, modul pesan dengan aksen keluarga sendiri, sehingga membaca sebagai produk ini bukan gloss generik. prefer-reduced- motion Piring semuanya ke bar. Tidak ada kunci pesan baru: pemilik placeholder mengumumkan diri mereka sendiri untuk layar pembaca Melalui tiga beban string yang sudah ada.

  28. · kamo-internal

    Tambah dan hapus tamu dari dialog acara

    Hal terakhir yang tidak bisa dilakukan oleh dialog. Ini bisa menampilkan siapa yang sudah di sebuah acara, tapi tidak ada cara untuk menempatkan siapa pun di sana - satu-satunya kontrol tamu adalah "update dan memberitahu", yang kembali orang yang sudah diundang. Tamu ditambahkan melalui email, terdaftar dengan RSVP mereka sebagai titik berwarna berjudul dengan negara, dan dihapus pada hover. Masukkan menambahkan tamu daripada submit dialog, karena Anda mid-list daripada selesai. The organiser ditandai dan tidak bisa salah untuk tamu biasa. validasi surel sengaja berlaku: tes sebenarnya adalah apakah surat kepadanya memantul, dan pola stricter menolak alamat yang sempurna valid. Ini menangkap tipo yang jelas, tidak lebih. Negara bagian yang kosong mengundang daripada meminta maaf. String dikirim di depan ini dalam kamo- terjemahan - kamus - next- intl throw on a key missing from en.json and kamo- internal 's CI clone that repo pada waktu bangun, jadi mendarat ini pertama akan dikirim halaman kalender yang Kecelakaan. Diverifikasi dengan pembuatan produksi dalam sebuah pohon kerja terpisah; sesi lain memegang kunci pohon in-.

  29. · EmailService

    Kelola daftar tamu acara

    Dialog dapat menampilkan siapa yang telah ada pada suatu peristiwa tapi tidak pernah menambah atau menghapus siapapun; satu-satunya operasi tamu adalah memberitahukan orang-orang yang entah bagaimana sudah ada. Peristiwa sekarang menerima daftar tamu, diganti grosir pada menyimpan. Ganti saja daripada penggabungan, karena dialog memiliki daftar - seorang tamu dihapus ada harus menghilang di sini. Daftar kosong berarti "tidak disediakan" dan meninggalkan tamu sendirian, yang merupakan apa yang klien editing hanya judul mengirimkan. Dua hal klien tidak bisa menegaskan, sehingga tidak dibaca off permintaan: RSVP, yang adalah tamu untuk memberikan, dan bendera organiser, catatan yang disebut pertemuan. Keduanya selamat dari penyuntingan - menciptakan kembali baris daripada mengupdate mereka akan mereset setiap jawaban dan strip satu orang diizinkan untuk membatalkan acara. Para tamu datang kembali dengan usang. Sebuah tampilan sebulan kembali seratus peristiwa, dan meminta per acara adalah query per baris. Menghapus sebuah acara sekarang menghapus tamunya terlebih dahulu. Mereka membawa sebuah non- null kunci asing kembali ke itu, sehingga menghapus baik yatim mereka atau gagal sekali database dipaksa referensi.

  30. · kamo-shared-library

    Pencarian tamu yang kasar, dan hapus acara-oleh-acara

    Dialog acara menunjukkan dengan siapa acara ini, dan daftar titik akhir mengembalikan bulan kejadian pada suatu waktu. Meminta tamu per acara adalah query per baris; Menemukan EventIdIn bertanya sekali. deleteByEventId adalah paruh pertama dari mengganti daftar tamu grosir, dan dari menghapus suatu peristiwa tanpa antrean baris yang membawa sebuah bukan null asing kunci kembali untuk itu.

Alam semestamu menunggu.

Mulai gratis dalam beberapa menit. Tambahkan produk kapanpun Anda siap — tidak ada migrasi, tidak ada login baru.

Gratis selamanya — tidak diperlukan kartu kredit