Changelog
Ada kabar baru.
Setiap perbaikan pada platform, sebagai kapal.
· kamo-internal
Stagger the cascade, add branch parse actions, explain the rule
Sorotan cascade sekarang perjalanan rantai bukannya berkedip setiap terpengaruh baris sekaligus. ancestors telah tiba terlebih dahulu, jadi indeks IS Jarak perjalanan naik pohon dan setiap baris penundaan oleh 90ms belakang terakhir - melihatnya memindahkan anak ke orang tua ke kakek adalah apa yang mengajarkan aturan, yang simultan flash dibaca sebagai kesalahan. Masih instan di bawah prefer-reduced- gerakan. Grant semua / Hapus semua pada cabang, hanya ditampilkan ketika mereka akan mengubah sesuatu. Routed melalui applyToggle per kanan daripada menulis pengaturan secara langsung: a aksi besar-besaran tidak boleh menjadi implementasi kedua dari aturan cascade yang Drifts dari satu dalam hak Hierarchy. Pil yang diberikan / total sekarang selalu pada baris induk daripada hanya ketika runtuh - itu adalah membaca tercepat dari apa cabang benar-benar hibah. Juga merender hirarki Heading / hirarryBody, yang commit sebelumnya ditambahkan ke kamus dan kemudian tidak pernah digunakan. Shown hanya di atas kelompok yang sebenarnya memiliki bersarang; banner yang muncul di mana-mana adalah satu orang belajar untuk melewatkan. RIGHtsTreeForest.testts memasang aturan jangkar pohon dan tipe-branch berbagi editor: hak yang orang tuanya disaring keluar dari grup saat ini attaches ke PRESENT terdekat nenek moyang, atau menjadi akar. Cara lain bulat membuat ijin grantable lenyap dari editor dengan apa-apa untuk menunjukkan itu - dan Dapat dicapai dalam praktek, karena EDIT _ QUOTE _ TERMS dideklarasikan CRM sementara yang induk Kelangsungan _ QUOTES adalah POS.
· kamo-internal
Tampilkan dan paksa hirarki perizinan dalam lima penyunting
Lima editor diberikan 199 hak sebagai lima daftar rata kotak cek, dan tidak satupun mereka menunjukkan bahwa salah satu hak dapat prasyarat untuk yang lain. Menggoda anak tanpa induk tampak persis seperti pemberian izin kerja - yang bagaimana tab Legal & Compliance membutuhkan dua hak dan tidak ada editor bisa mengatakannya. Hak Pohon merender pohon: indentasi dengan tulang belakang konektor, dapat diterima cabang, pil diberikan / total per cabang, pencarian yang membuat nenek moyang cocok terlihat, dan cascade yang animasi karena animasi adalah apa yang mengajarkan aturan - memungkinkan anak menyalakan apa yang tergantung pada, menonaktifkan induknya Subtree, keduanya dengan roti panggang membatalkan penamaan persis apa yang bergerak. Kehormatan Lebih memilih mengurangi gerakan. Ini juga berhenti berbohong tentang tiga negara bagian editor tidak pernah bisa mengekspresikan: hak-hak terkunci oleh model keamanan org, rancu-but- inert baris warisan yang orang tuanya ditolak, dan 58 hak yang megah tapi gerbang apa-apa di mana saja. Sebuah admin tidak bisa sebelumnya memberitahu izin nyata dari pemegang tempat. Aturan cascade hidup dalam aplikasi / lib / rightsHierarry.ts, tercermin dari Java RoleRightType. Salinan aturan keamanan adalah kewajiban, jadi tes parity dibaca sumber Java dan gagal pada divergensi apapun daripada mempercayai konvensi. Penyunting template tipe branch mendapat pengurutan dan indentasi tapi menyimpannya control sendiri dan TIDAK auto- cascade: mereka adalah nilai FORCE, absolut dan diterapkan setelah setiap tingkat, sehingga cascading mereka akan diam-diam menulis ulang disengaja override. Hubungan orang tua masih dipaksa ada pada waktu resolusi. Desain + audit reproduksi: docs / superpower / spesifikasi /
· SecurityService
Normalize anggota overrides terhadap hirarki
Anggota hak langsung sekarang pergi melalui RightsHierarchy. normalizeLevel sebelum mereka yang bertahan: seorang anak diberikan menarik nenek moyangnya sampai GRANTED pada anggota tingkat, orangtua ditolak mendorong NUKE bawah subtree yang ada. Server- sisi daripada mempercayai penyunting, karena titik akhir ini dapat dicapai langsung. Sebuah tingkat yang disimpan dengan seorang anak tetapi tidak induknya adalah apa yang resolver 's penutup strip kemudian - anggota akan terus kehilangan hak UI menunjukkan sebagai diberikan, dengan apa-apa untuk menjelaskannya. Dikumpulkan ke peta pertama sehingga hirarki melihat seluruh tingkat sekaligus; normalisasi entri dengan entri akan tergantung pada urutan klien kebetulan mengirim.
· InitializerService
Pengisian ulang leluhur sehingga penutupan tidak dapat menghapus akses
Anggota Layanan AppliedService sekarang menyangkal hak yang tidak ada rantai induknya diberikan. Setiap baris yang ditulis sebelum hirarki ada tahu apa-apa tentang nenek moyang, sehingga peran memegang Kelangsungan _ SUBSCRIPSI _ PLANS tanpa AKSESS _ COMPECE - Semuanya normal sampai sekarang - akan kehilangan perhitungan berikutnya. Di seberang 13 organisasi hidup yang tidak aktif, bukan migrasi. Membawa semua empat tingkat (org peran, departemen, pekerjaan judul, anggota overrides) up ke invarian jalan menulis sekarang mempertahankan, menggunakan aturan yang sama: diberikan keturunan menarik leluhurnya hingga GRANTED. Langkah 2 adalah salah satu yang sebenarnya mencegah pemadaman - itu membalik secara eksplisit nenek moyang ditolak untuk diberikan, karena baris yang ada bertahan langkah 1 tersentuh dan penutupan kemudian akan mencabut setiap keturunan di bawah mereka. Model keamanan templat sengaja TIDAK tersentuh: sebuah FORCE _ NUKE pada induk adalah administrator yang mematikan subtree dengan sengaja, dan penutupan menghormati itu adalah fitur. Langkah 3 adalah GATE, bukan garis log: itu re- memeriksa invarian dan gagal menjalankan jika setiap tingkat masih memegang keturunan yang diberikan di bawah nenek moyang yang tidak diberikan. A migrasi yang dilaporkan sukses dengan pelanggaran yang ditinggalkan akan menyerahkan masalah untuk resolver, di mana muncul sebagai anggota diam-diam kehilangan izin dengan apa-apa untuk menjelaskannya.
· kamo-shared-library
Hierarki orang tua / anak untuk semua hak 199
RoleRightType telah mengumumkan 'parent' field dan getParent publik () selama bertahun-tahun. Setiap konstan melewati kosong dan tidak pernah menyebutnya. Ini selesai bahwa scaffolding: 135 anak, 34 akar, 30 standalone, max kedalaman 3, berasal dari audit semua 199 hak atas 15.081 sumber file di 40 repos. Dua titik penegakan, dan perpecahan adalah desain: normalizeLevel () adalah Authoring. Itu membuat satu tingkat sendiri-konsisten - diberikan anak menarik nenek moyangnya sampai pada tingkat itu, orangtua ditolak mendorong NUKE bawah Itu subtree di sana. Terapan dalam peran, departemen dan pekerjaan-judul menulis jalur. Karena setiap tingkat tetap koheren, gelar pekerjaan yang memberikan anak juga hibah orang tua ada, dan air terjun yang ada sudah memungkinkan lebih spesifik tingkat mengalahkan departemen yang menyangkalnya. Tidak ada aturan tingkat-silang ditambahkan dan air terjun tidak tersentuh. applyClosure () adalah RESOLUTION, ditambahkan setelah applyTemplateRules. Ini adalah jaring pengaman hanya untuk dua hal yang tidak dapat dicapai: model keamanan FORCE _ NUKE pada orangtua (absolut, diterapkan terakhir, jadi tanpa ini sebuah paksa-off orang tua meninggalkan anak-anaknya diberikan) dan baris ditulis sebelum semua ini. Dua pasangan tetap sengaja FLAT karena pemisahan tugas tergantung pada hal itu: APPROVE _ TIMECARD _ ADJUSTMENTS / FINALIZE _ PAY _ PERIODS, dan APPROVE _ ORG _ PAYOUTS sebagai a sibling of manvage _ ORG _ FINANCES daripada anaknya - bersarang yang terakhir akan memaksa setiap persetujuan pembayaran untuk juga menjadi penerbit. Desain: kamo- internal * * * * * * * * * * * * * * *
· kamo-internal
Cat ulang pengingat dalam warna org, buka pilihan di tempat
Kartu adalah warna utama organisasi sekarang, dengan setiap tanda di atasnya ditarik dalam --on-primary daripada literal white - a white- label org yang memilih primer pucat dapat mendeklarasikan kembali bahwa satu token dan memindahkan seluruh kartu. Chips, rails dan perbatasan berwarna - dicampur dari tanda yang sama sehingga mereka tetap berwujud baik cara. Aksi utama adalah pil terbalik, pencocokan idiom penandatanganan hukum pahlawan sudah menggunakan untuk tombol pada band berwarna. Tulang belakang aksen per- jenis hilang; ikon sudah membawa jenis, dan warna kedua pada kartu berwarna hanya lumpur itu. Overdue adalah pengecualian, dan inverts itu daripada berubah merah: merah pada sebuah warna oras org tidak dapat dibaca. Snoze Its dan Menu Lebih adalah MUI Menus, yang portal ke dokumen dan membawa Gulungan terkunci dengan mereka. Bahwa kunci set overflow: tersembunyi DAN kompensasi padding-right on document.body, and padding the body moves every fixed-position elemen pada halaman - sehingga dek, yang tetap di bawah / kanan 20, melompat samping saat siapa pun mencapai untuk Snooze, dan menu menutupi kartu itu milik. Keduanya adalah satu panel inline sekarang, memperluas dalam kartu dengan pemicu kiri menyala. Tidak ada portal, tidak ada scroll lock, tidak ada untuk menutupi.
· kamo-internal
Tatanan pengaturan legal & Compliance tab dengan teks baku org
Tab baru pada / settings / features / hrs memegang Teks Legal Baku, dihubungkan dari menu pengaturan dan pengaturan launchpad. Membuat paket pada / hr / legal-compliance sekarang dimulai dari itu, dan lapangan yang tiga baris lebih tinggi. RIGHTS. Halaman pengaturan HRS sebagai keseluruhan sekarang MENANGKAT KE RENDER tanpa Manvaged _ HRS _ SETTINGS daripada hanya mengarahkan kembali: redirect adalah efek, jadi tidak dapat berjalan sampai setelah render, dan setiap tab itu melukis - dan menembak nya Gunung - waktu beban - untuk anggota yang tidak memegang hak. Tab baru secara tambahan membutuhkan kejantanan _ LEGAL _ AND _ COMPLIANCE, diselenggarakan identik di tiga tempat (halaman, menu link, kartu launchpad) dan disematkan oleh tes, karena link yang ditawarkan ke seseorang halaman tidak akan memberikan tab untuk membuka Penyiapan Provider: SettingsView menyelesaikan sebuah tab tidak dikenal? = ke indeks 0 daripada menyesatkan. Dialog benih standar saja sementara penulis belum diketik - fetch menyelesaikan setelah mereka sudah bisa menulis. seedDefaultAttenstation adalah murni Bantuan sehingga aturan diuji, dan diterapkan LUAR updater negara: React double- memanggil updaters dalam pengembangan, yang meninggalkan snapshot mendidih maju dan panggilan kedua menolak perubahan sendiri. Sebuah EDIT tidak pernah re- benih. Paket membawa kata-katanya sendiri dan menimpanya akan menulis ulang apa yang diinginkan oleh penonton versi yang diterbitkan.
· kamo-internal
Teks kaya dalam lengket dan pratilik, dan mode Anda dapat beralih
Sebuah catatan sekarang mengatakan apakah itu adalah teks kaya atau biasa, dan baik editor dan lengket mengambang dapat beralih itu. Catatan mengambang dalam mode kaya embed yang sangat sama digunakan editor / catatan, jadi ia memiliki setiap alat halaman penuh memiliki - berpakaian dalam warna catatan sendiri melalui sebuah opsional 'nada' prop pada KbArticleEditor. Prop adalah additive: absen, editor tampak persis seperti itu, sehingga pengetahuan Dasar tidak tersentuh. Batang alat membungkus dan gulungan daripada mendorong menulis area dari lengket sempit. Beralih kaya - > plain meminta pertama, dan mengatakan jelas bahwa format dibuang dan tidak dapat dikembalikan ketika teks disimpan. Hal ini tidak mode tersembunyi - polos memiliki tempat untuk meletakkannya - sehingga konversi juga snapshots sebuah versi, meninggalkan format lama dapat dipulihkan dari sejarah. Polos - > kaya hanya mengaktifkan alat dan tidak perlu peringatan. Preview pada kartu dinding dan chip launchpad sekarang menunjukkan yang sebenarnya isi daripada garis diratakan. Mereka membuat melalui standalone leksicalToHtml daripada sebuah lexical instansi yang dikait: sebuah dinding adalah puluhan Kartu, dan masing-masing akan sebaliknya menyeret di seluruh editor waktu jalan untuk tampilkan paragraf. Keluaran itu disuntikkan, dan isi catatan Keanggotaan dan sering ditempelkan, jadi ini bagian yang sensitif. dan ditulis tes-pertama - melarikan diri, skema allowlist yang menolak javascispt: dan data: (termasuk tab- dan case- obfustated), quote-escape di dalam href, dan catatan legacy raw-HTML ditampilkan sebagai teks daripada dirender. Sementara pencarian sedang berjalan kartu menjaga preview polos disorot: menandai hal-hal hit lebih mid- pencarian, dan tidak dapat menyoroti dirender HTML tanpa mengulangi apa yang baru saja serialisasi. Juga: catatan mengambang membawa latar belakang org yang dapat diatur watermark, the same one the content pages use, honoring the org 's Pengaturan bgWatermark termasuk NONE. Size sebagai bagian dari catatan sehingga memegang pada ukuran apapun, dan sedikit lebih kuat daripada halaman digunakan karena lengket duduk di kertas jenuh daripada dekat- putih.
· KBService
Membawa mode rich-text / missed-text catatan melalui API
Buat menghormati mode yang diminta dan baku ke kaya, cocok dengan Penyunting catatan dibuat masuk Perbarui dijaga ketat seperti yang lain field pada titik akhir, sehingga penelepon hanya mengirim {isRich Teks} tidak Kosongkan catatan. DTO membaca melalui isdrick TextOrDefault (), sehingga baris yang entah bagaimana melarikan diri backfill dilaporkan sebagai kaya. Erring terhadap menjaga memformat adalah arah aman: sebaliknya akan menyajikan sebuah format catatan sebagai polos dan mengundang anggota untuk meratakan itu.
· InitializerService
Tambahkan kolom _ is rich _ text, default dan backfilled ke kaya
Apakah suatu catatan disunting sebagai teks kaya atau biasa tidak dapat dibaca kembali keluar dari isinya: sebuah catatan kaya belum ada yang format adalah byte- for-byte yang polos. Tanpa kolom editor kehilangan bilah alat nya setiap kali catatan dibuka kembali. Tertolak TRUE, yang juga memungkinkan Yugabita teDB menambahkan kolom ke meja yang sudah memiliki baris. TRUE khusus karena setiap catatan ditulis sebelum kolom ada ditulis di editor kaya - itu adalah hanya penyunting ada - jadi backfilling ke FALSE akan menunjukkan format catatan sebagai polos dan menawarkan untuk meratakan mereka. @ Order (0) untuk alasan biasa: saat berbagi -lib memetakan kolom, setiap pelari yang memuat Catatan SELECT itu, sehingga migrasi terlambat tidak pernah dicapai. Kapal dengan drift guard paket ini menggunakan - itu mencerminkan kolom nama off entitas daripada mereset itu, dan diperiksa dengan melanggar nama dan menonton gagal. Terapan terhadap Yugabyte: kolom yang ada sebagai boolean default true, semua baris yang ada backfilled ke true, tidak ada NULL.
· kamo-shared-library
Catatan catatan apakah itu teks kaya atau biasa
Mode tidak dapat diturunkan dari isi. Sebuah catatan kaya anggota memiliki tidak terformat namun serializes byte-for-byte identik dengan satu polos - baik adalah dokumen Lexical dari paragraf unstyled - jadi tanpa suatu tempat untuk menyimpannya, editor kehilangan toolbar nya setiap kali catatan dibuka kembali. Baku untuk kaya, dan kolom diisi ulang ke TRUE, karena setiap catatan yang mendahului bendera ditulis di editor kaya, itu adalah satu-satunya satu ada. Backfilling ke FALSE akan menyajikan catatan terformat sebagai polos dan mengundang anggota untuk meratakan mereka. Bernomor dengan sengaja, dengan isdrick TextOrDefault () membaca sebuah bendera unset sebagai Kaya: baris yang entah bagaimana lolos backfill harus err terhadap menjaga memformat, tidak menuju membuangnya.
· kamo-internal
Satu halaman untuk pemberitahuan dan kontrol atas mereka
Halaman pemberitahuan memakai header sendiri - alis, judul dan tiga tombol pil di dalam kartu batas - sementara setiap halaman tetangga (akun peramban, setiap layar pengaturan) diperkenalkan oleh gradien merek pahlawan dengan panah belakang dan batang tab di bawahnya. Ini dibaca sebagai tempat lain dalam produk. Ini sekarang membawa header yang sama, dengan jumlah yang belum dibaca sebagai subjudul dan dua tindakan yang beroperasi dalam daftar sebagai tombol putih pahlawan. Di bawahnya, dua tab: Notifikasi dan Pengaturan. Pengaturan adalah orang-orang yang digunakan untuk menjadi tab pada profil anggota sendiri di / settings / anggota / {id}? tab = pemberitahuan, yang menempatkan kontrol atas pemberitahuan pada layar berbeda Dari pemberitahuan sendiri - satu subjek di dua tempat, baik yang menyebutkan yang lain. Seorang anggota yang membuka bel karena tidak akan berhenti sekarang sudah di halaman yang dapat menghentikannya. '? tab =' dibagi melalui NOTIFICASI _ TABS, sehingga bar dan permukaan yang mendalam- link ke dalamnya tidak dapat melayang ke nilai yang memilih apa-apa. Kedua permukaan yang terhubung dengan lokasi lama (aksi Pengaturan dek roti bakar, tombol Pengaturan sendiri halaman, sekarang tab) pergi ke NOTIFIKASI _ SETTINGS _ HREF. An bookmark lama dari anggota URL masih memecahkan - SettingsView jatuh kembali ke tab pertama untuk '? tab =' itu tidak mengenali. Quick Tips menyalin yang menggantung dari tab lama (settings.notifications.helps. *) adalah tidak dibawa lebih: laci bantuan adalah Support SettingsView dan halaman ini memiliki Tidak ada. Kunci yang tersisa di kamus daripada digosok.
· DocsService
GET / PATCH teks default org
/ api / docs / legal / settings, dibelakang corong yang dijaga sama seperti yang lain memetakan pengontrol ini. Pembacaan TIDAK PERNAH membuat sebuah baris: menyelesaikan ke LegalDefault ketika org memiliki Tidak ada. Yang membuat benih editor paket mengambil efek samping gratis dan adalah apa yang mencakup organisasi yang dibuat setelah benih KamoInivalizer dijalankan - baris ini Terwujud pada menyimpan pertama, di mana menulis milik. Set kanan secara sengaja lebih lebar dari titik akhir paket. Titik akhir ini dicapai dari tab pengaturan Legal & Compliance (manage _ HRS _ SETTINGS) dan dari penyunting paket (manage _ LEGAL _ AND _ COMPLIANCE); baik kanan sendiri 403 layar di lapangan itu memiliki. Aman untuk diperluas karena ini adalah salah satu string level org- boilerplate - tidak ada daftar, tidak ada tugas, tidak ada bukti - dan tes regresi pin yang lebar tidak mencapai daftar / buat / audience- pratinjau. Patch semantik: sebuah bidang absen tidak tersentuh, string kosong adalah disengaja Aman. Publikasikan telah menolak attestation kosong, jadi hanya baku yang dibersihkan membuat penulis menulis mereka sendiri.
· InitializerService
Benih setiap organisasi teks hukum baku
Satu hr _ legal _ settings row per org, unik pada org _ id, membawa * * * * * * * * * * * * * * * Tidak pernah naik. Sebuah org yang telah mengedit wording sendiri memilikinya; sebuah re-menyebarkan diam-diam menulis ulang kalimat rakyatnya diminta untuk secara hukum setuju untuk akan menjadi perilaku terburuk yang mungkin untuk string ini. Itu juga membuat pelari idempoten. Orgs dibuat Setelah berjalan ini ditutupi oleh DocsService dibaca fallback bukan oleh org provisioning, sehingga jalur provisioning masa depan yang lupa panggilan tidak dapat mengirimkan org yang teks hukum baku kosong. Kedua pernyataan mencoba kembali 40001: membuang dari Komandan LineRunner abborts seluruh penginisialisasi dan melewati setiap pelari memerintahkan setelah itu.
· kamo-shared-library
Teks baku tingkat organik
LegalSettings adalah satu baris per organisasi yang membawa kata-kata hukum NEW paket dimulai dengan. Ini adalah DEFAULT, tidak pernah referensi langsung: membuat paket menyalin teks, dan menerbitkan pembeku yang ke sebuah versi, jadi edit di sini tidak dapat mengubah paket yang ada atau seseorang telah Setuju. LegalDefault memegang platform wording di satu tempat. KamoInitializer benih, DocsService membaca fallback dan settings field semua terikat padanya - tiga literals akan hanyut dan orgs kedua sisi migrasi kemudian akan tidak setuju tentang apa yang default.
· kamo-internal
Sejarah menjadi halaman, dan bel berdering
Bel membuka popover, yang merupakan bentuk yang tepat untuk "apa yang baru saja terjadi" dan yang salah untuk "apa yang pengingat itu katakan pada hari Selasa". Sebuah panel tergantung dari toolbar tidak dapat paged, tidak dapat disaring tanpa crowding, dan menutup ketika Anda klik apapun - sehingga anggota dapat melihat beberapa pemberitahuan yang belum dibaca dan Tidak ada yang lain. Semuanya sudah dibaca adalah, dalam praktek, pergi. Itu adalah miskin properti untuk catatan dari apa yang aplikasi telah memberitahu seseorang. / pemberitahuan adalah catatan itu. Ini dibaca sebagai kronologi daripada daftar, karena pemberitahuan adalah peristiwa dan pertanyaan yang dibawa oleh anggota hampir selalu "ketika": tulang belakang hari dengan pemberitahuan tergantung di atasnya, setiap titik dalam warna jenisnya sendiri, jadi satu bulan sejarah membaca sebagai band sebelum satu kata dibaca. baris yang belum dibaca membawa tanah dan yang membaca hanya membawa titik, yang merupakan perbedaan yang dipindai. The filter trail menyempit apa tulang belakang memegang daripada memesan kembali itu - membaca, belum dibaca atau keduanya, dan dengan jenis dengan hitungan terhadap masing-masing. Hari pengelompokan adalah calendar- sadar daripada berlalu-jam: di setengah masa lalu tengah malam, sesuatu dari empat jam yang lalu terjadi kemarin, dan "4h lalu" tidak apa yang seseorang cari akan memindai. Apapun server tidak bisa tanggal Disimpan dan dikelompokkan terpisah, di mana tidak dapat mengklaim hari itu mungkin bukan milik. Bel sekarang link, badged seperti dua lainnya tanda perhatian di bar jadi ketiganya membaca dengan cara yang sama. Apa yang berbeda adalah gerakan, dan sengaja: dokumen luar biasa dan jam berjalan adalah negara, dan mereka pulsa cincin yang mengatakan "masih benar". Pemberitahuan yang belum dibaca adalah suatu peristiwa, dan apa yang bell lakukan ketika sebuah peristiwa yang terjadi adalah cincin. Jadi ayunan - memukul sekali dan menetap, amplifius Setengah dari 12 ° ° 9 ° 6 ° 3 ° 1.5 °, berputar di mahkota karena bel berbunyi - dan kemudian beristirahat selama empat detik. Sebuah lonceng yang tidak pernah berhenti akan alarm, dan menghitung di samping itu sudah mengatakan hal yang terus-menerus.
· EmailService
A paged, filteriable history
Pusat bisa menjawab satu pertanyaan: yang paling baru seratus, belum dibaca atau tidak, tanpa cara untuk meminta apa yang sudah dibaca. Jadi apa pun anggota telah melihat adalah, dalam praktek, pergi - yang merupakan properti yang buruk untuk catatan apa yang aplikasi telah memberitahu seseorang. GET / API / notifications / browse pages, laporkan total, menghitung setiap jenis untuk filter rel, dan mengambil status semua, belum dibaca atau dibaca. Daftar yang ada tetap seperti itu: mengisi dek hidup, yang ingin beberapa terbaru dan tidak ada yang lain. Dibangun dari predikat daripada kuiri per kombinasi dari filter, dan sengaja bukan dari (: kind IS NULL OR...) - sebuah parameter kosong yang tidak diketik adalah apa yang membuat setiap pencarian kalender 500, dan predikat diabaikan tidak bisa melakukan itu.
· kamo-shared-library
Biarkan sejarah diqueried oleh spesifikasi
Filter riwayat yang dapat diramban oleh jenis dan oleh apakah pemberitahuan telah atau tidak baca, dan mereka menggabungkan secara bebas - yang mana sebagai JPQL adalah query per kombinasi, atau satu query penuh dengan (: kind IS NULL OR n.kind =: kind). Yang kedua adalah apa yang membuat setiap kalender mencari jawaban 500: parameter kosong tiba tanpa mengetik dan PostgreSQL menolak pernyataan langsung. Spesifikasi Mengabaikan predikat daripada melewati null, sehingga kesalahan tidak dapat recur di sini.
· kamo-internal
Bangun ulang / catat sebagai dinding kertas dengan penyunting panel split-
Halaman itu masih layar terakhir pada biru tailwind mentah - 600 / gray- 50 sementara segala sesuatu di sekitarnya pindah ke sistem rumah, dan setiap satu dari nya ~ 100 'gelap:' varian kode mati - globals.css pin 'warna-skema: cahaya'. Ini juga diabaikan '--accent-knowledge', token aksen disediakan untuk persis modul ini. Dibangun ulang di sekeliling metafora data yang telah dibawa: palet ini posting - itu dengan konstruksi, jadi catatan membuat sebagai kertas - ketinggian masonry, sebuah deterministik per- id miring yang meluruskan pada hover, kepala pin pada disematkan catatan dalam catatan itu sendiri dalam hue. Sebuah catatan berwarna mendapat kertas polos daripada resolveStickyColor () 's lemon fallback, yang sebaliknya cat seluruh dinding kuning dan menghabiskan palet sebelum anggota memilih apa saja. Bands mengikuti semacam aktif daripada sedang diperbaiki, sehingga pembagi hanya biaya ruang ketika mengatakan sesuatu yang benar: retensi di bawah semacam tanggal, inisial di bawah semacam judul, terbuka-frekuensi di bawah view-count sort. Juga menambahkan: sebuah palet perintah (SchulK), sebuah jalur filter dengan warna swatch dan statistik dinding, multi- pilih dengan shift- jangkauan dan tindakan massal, Panah N P F F), penandaan pencarian, pemuatan kerangka dalam bentuk dinding sendiri, dan terpisah kosong vs hasil negara. Editor sekarang terbuka di samping dinding pada distribusi yang dapat dihapus daripada mengganti halaman, dan diketel dengan catatan id sehingga switching catatan mereset itu. Penyaringan, penyortiran, banding, timbangan batu dan geometri kertas pindah ke app / lib / noteWall.ts dibelakang 48 unit test. Isi berbasis DOM NoteCard parser hilang - dokumen yang digunakan. createElement, so a note whose contentPlain telah dibulatkan pada menyimpan diberikan ada pratinjau di semua server- side. Hapus CATATAN _ SORT _ OPSI, yang dikirim hard-code label pengurutan bahasa Inggris ke semua 22 locales.
· kamo-internal
Pin dan unpin catatan dari lengket mengambang nya
The lengket bisa recolour, mengubah nama, meminimalkan, memaksimalkan dan menutup catatan tapi bukan pin itu - sehingga pinning berarti akan kembali ke / catatan untuk satu hal catatan sudah di depan Anda untuk. Pinning adalah properti catatan daripada lengket, sehingga toggle menulis langsung ke catatan dan kembali melalui singgahan bersama. Itu adalah apa yang membuatnya mendarat di mana-mana sekaligus: daftar catatan, dan pinned- catatan band di home launchpad (di mana tetap tersembunyi sampai lengket tertutup, seperti sebelumnya). Optimistik, dan itu menempatkan pin kembali jika tulisan gagal. Mengembalikan components.notes.card.pin / .unpin dan ikon yang sama yang di penyunting gambar, sehingga pin berarti satu hal di tiga permukaan. Tidak ada string baru.
· kamo-internal
Satu jendela diam-jam, mengatur kedua saluran pemberitahuan
Ada dua. Pasangan dekat bagian atas halaman dibungkam kartu in- app; pasangan di bagian bawah dibungkam email missed- pesan. Tidak ada di layar mengatakan mereka adalah hal-hal yang berbeda, sehingga pengaturan anggota jam tenang harus melihat set kedua ada dan mengaturnya juga - dan asumsi yang masuk akal, bahwa satu mereka sudah diisi dengan ditutupi malam, salah. Jendela di atas sekarang satu-satunya, dan itu menulis keduanya. Mereka disimpan oleh layanan berbeda - in-app jam pada preferensi pemberitahuan anggota, jam email pada ui- preferensi MediService baca - jadi kontrol menulis dua kali, yang persis pipa anggota tidak perlu tahu tentang. Dua toko yang didamaikan sekali, pada beban, karena anggota dapat tiba dengan jendela di satu sisi dan bukan yang lain. Apapun yang dipilih akan menang: jendela surel diadopsi ketika sisi in- app tidak memiliki, jadi tidak ada siapapun dikonfigurasi dilemparkan jauh, dan jika tidak jendela in- app didorong keluar sehingga kontrol tunggal pada layar mengatakan kebenaran tentang kedua saluran. preferensi email dimiliki oleh panel sekarang daripada oleh bagian sendiri. Dua komponen debouncing menulis ke kunci yang sama disimpan akan ras dan bisa tetap setengah bentuk, dan MediaService membaca sebuah lapangan absen sebagai default anggota tidak pernah memilih.
· kamo-internal
Dua arti dari 100% - lebar bacaan, dan seluruh panel
Persentase direset ke satu baseline: halaman yang tumbuh ke panel tapi dibatasi pada 920px, yang pada monitor lebar daun lembar mengambang di banyak meja kosong. Topi itu disengaja - halaman surat membentang di Tampilan 34- inci adalah dokumen yang lebih buruk, bukan yang lebih besar, karena mata tidak dapat melacak garis yang panjang - tetapi tidak selalu apa anggota inginkan. Membaca cetakan baik-baik saja atau bekerja dalam bentuk padat, mereka ingin ruang yang mereka miliki. Jadi sekarang ada dua, dan sebuah toggle dalam kapsul picks yang: halaman lebar dapat dibaca, capped di 920. Apa panel terbuka di. lebar mengisi panel, kurang 24px selokan sehingga lembaran bayangan tidak dipotong terhadap tepi dan halaman baca sebagai meletakkan agak daripada dipotong. Mereka adalah MODE, bukan dua berhenti di tangga zoom, karena mereka maksud yang berbeda daripada perbesaran yang berbeda. Perkalian perbesaran Baseline mana yang aktif, sehingga readout tetap jujur tentang satu itu adalah banyak, dan + / means masih bekerja dari baik. Mengubah baseline LANDS di atasnya - zoom kembali ke 100%. "Fit to width" that meninggalkan sebuah 250% zum diterapkan di atas tidak akan cocok apa-apa, dan anggota meminta lebar, bukan pengganda dari satu. toggle adalah satu tombol dengan 'aria- ditekan', dan nama tooltip APA nya PRESSING IT DOES daripada apa yang sekarang di: "Fit ke Lebar" dalam halaman mode, "Reset view" dalam mode lebar. Kedua kunci sudah ada dan adalah non-kosong di semua 22 locales. maxPageWidthFor melingkupi tepi dalam tes: pengukuran panel NaN jatuh kembali ke cap dapat dibaca daripada mencapai PdfPages sebagai maxPageLebar dan rendering apa-apa, dan panel runtuh tidak pernah kembali lebar terlalu kecil untuk baca. Satu tes pin fakta bahwa pada panel lebih sempit dari tutup dua mode konverge ke dalam selokan - yang benar daripada bug ke desain sekitar.
· kamo-internal
Segarkan jam NavTop saat editor menyimpan
Voiding the punch a member is current clocked in under already leaves them OFF server-side: RosterService.ClockState membaca terbaru LIVE punch and skips baris voided, jadi tidak ada clock-out ditulis dan tidak ada yang dibutuhkan. A SHIFT _ OUT sini akan lebih buruk daripada tidak berguna - SHIFT _ IN itu akan berpasangan dengan hanya voided, sehingga tanah sebagai yatim piatu dan menimbulkan hilang pukulan kecuali editor ada untuk membersihkan. Apa yang salah sebenarnya adalah indikator. Ini polling di lantai 60-an dengan tidak sinyal dari penyunting, jadi setelah menghapus entri mereka terkunci di bawah anggota menonton krom terus mengatakan mereka berada di jam. Editor sekarang mengumumkan menyimpan yang menulis sesuatu dan kontrol dibaca ulang. Dipecat dari 'akhirnya' dan gated pada apa LANDED daripada pada sukses: menyimpan yang berhenti setengah jalan masih mengubah catatan, dan itulah kasus di mana Lencana basi paling sulit untuk dilihat. Acara ini membawa keId diedit karena jam NavTop adalah diri-scoped (fetchMyClockState tidak mengambil anggota id) sedangkan editor yang sama ini digunakan oleh HR terhadap anggota lain di / hr / kehadiran. ShouldRefreshClock Sebagai perbandingan STRINGS dan menolak nomor, untuk alasan parseClockState sudah memberikan: id adalah unik _ rowid () nilai masa lalu MAX _ SAFE _ INTEGER dan dua anggota dapat bulat ke nomor yang sama. Tidak memperbaiki peramban anggota LAIN ketika HR mengedit kartu mereka - yang membutuhkan Jam berapa.
· kamo-internal
Zum dokumen, dan ambil untuk memindahkannya
Kapsul mengambang di sebelah kanan kanan dari panel dokumen: metial, the current persentase, +. READOUT ADALAH RESET - tombol reset terpisah akan kontrol ketiga untuk sesuatu anggota hanya ingin sekali mereka sudah bisa lihat mereka tidak pada 100%, dan di mana mereka melihat untuk memeriksa adalah nomor. Hal ini tombol nyata dengan label, jadi keyboard dan pembaca layar mencapainya. 100% berarti FIT-TO-PANE, bukan ukuran sebenarnya. 'zoom' perkalian ukuran skala PdfPages telah dihitung, dan tampilan anggota dimulai dalam adalah apa yang mereka berarti ketika mereka menekan "100%". Langkah perkalian (x1.25), bukan 0,25: langkah tetap adalah seperempat halaman pada 100% dan keenam belas itu pada 400%, sehingga memperbesar kembali dari jauh dalam akan mengambil selusin menekan. The matematika dalam aplikasi / lib / pdfZoom.ts dengan tes, termasuk bahwa + maka comeback persis di mana Anda berada dan bahwa NaN jatuh kembali cocok daripada mencapai PdfPages sebagai 'skala = naturalScale * NaN', yang menghasilkan nol halaman dan terlihat persis seperti dokumen yang gagal dimuat. DRAG TO PAN, dimanapun itu bukan sesuatu yang kau operasikan. useDragToPan tulis scrollLeft / scrollTop daripada mengubah isi, jadi mewarisi batasan kontainer, scrollbars dan perilaku roda secara gratis - dan sumbu horizontal hanya tidak melakukan apa-apa sampai halaman lebih lebar dari panel, tanpa kondisi di mana saja untuk mengatakan begitu. Ini menolak untuk memulai input, textatea, pilih, tombol, [hint], label, [role = radiogroup] dan sisanya: mereka adalah kotak tanda tangan, kolom teks, dan grup checkbox InteractiveField membuat, dan zoom kapsul sendiri tombol. Penunjuk ditangkap dalam perjalanan ke bawah sehingga hambatan yang meninggalkan panel terus pelacakan dan masih berakhir dengan bersih. Hanya omong kosong. Touch already pans native with momentum and rubber- banding bahwa tidak ada penangan di sini dapat mereproduksi, dan pembajakan itu akan membuat dokumen buruk pada perangkat di mana menyeret adalah sikap alami. Satu tata letak dilengkapi dengan ini: Halaman pusat PdfPages dengan 'align- item: tengah', dan item flex lebih lebar daripada kontainer overflow EQUALLY di kedua belah pihak - bagian kiri yang tidak ada posisi gulungan dapat raihlah. Memperkecil melewati lebar panel akan menempatkan margin kiri setiap halaman secara permanen di luar jangkauan. The page wrapper now grows to the widest halaman ('width: fit-content', floored at 'min-width: 100%'), so the whole Lembaran tetap di dalam area scrolable.
· kamo-internal
Catatan tercetak pada launchpad, rotasi warna, dan send- off yang tepat
Tiga hal. Catatan tercetak mencapai launchpad rumah. Setiap catatan disematkan pada / catatan mendapat chip ada dalam sendiri warna lengket, dengan preview singkat; mengklik satu mengambilnya ke overlay, dan kontrol sudut membukanya di penuh Editor bukan untuk hal-hal yang lengket tidak bisa dilakukan. Sebuah catatan yang FLOATING CURRENTLY ditinggalkan - itu sudah pada layar anggota, dan daftar itu akan menawarkan catatan yang sama dua kali, aturan yang sama yang membuat kartu catatan pergi inert. Menutup lengket menempatkan chip kembali. Band hanya menghasilkan ketika pilihan catatan selamat dari gerbang navigasi sendiri, jadi memutuskan apa-apa tentang akses sendiri, dan lebih suka overlay 's cached salinan catatan sehingga chip tidak pernah menunjukkan judul atau warna dari sebelumnya Itu diambil. Catatan baru berputar melalui palet. Masing-masing membuka pada warna setelah catatan anggota terbaru CREATED, membungkus di akhir, sehingga dinding Dari stickies tidak pernah blok kuning identik. Keyed off the note diri mereka sendiri daripada counter yang disimpan, sehingga tetap tepat di seberang perangkat (Dan mereka tidak mengecualikan) di dalam sumpah mereka itu kepada kehendak Allah swt. Ayat ini merupakan jumlah isti 'naf atau kalimat permulaan; yakni, kelakuan mereka seperti itu; mereka tidak pernah menggantungkan sumpahnya itu kepada kehendak Allah swt. warna sebelumnya memulai kembali rotasi bukan menebak. Menutup catatan sekarang menghancurkan itu. Sebuah mengalahkan antisipasi, kemudian scrunches, Berputar dan tetes pergi, meninggalkan segenggam kertas memo dalam warnanya sendiri melewati ruang yang tersisa. Sampah yang diberikan oleh lapisan, bukan catatan: seorang anak mewarisi perubahan keluar catatan dan akan menyusut dengan itu bukan meledak keluar, sehingga catatan tangan di atas yang terakhir persegi panjang dan warna di jalan keluar. Sebuah semburan catatan maksimum di seluruh seluruh viewport daripada ukuran yang akan dikembalikan ke; diminimalkan satu semburan tidak sama sekali, tidak memiliki ruang di layar untuk meledak atas, dan Sebaiknya - pengurangan - gerakan mendapat polos memudar dengan tidak ada memo. Berpencar adalah deterministik hash, tidak Math.random, yang akan re- roll setiap render dan Memukul potongan tengah penerbangan.
· kamo-internal
Pengaturan notifikasi di seluruh lebar, dengan model kerja
Itu adalah salah satu 760px kolom dari baris switch, yang membaca sebagai bentuk untuk mengisi agak daripada sesuatu untuk lagu - dan pada layar lebar meninggalkan dua pertiga halaman kosong sedangkan daftar jenis pemberitahuan berlari dari bawah. Pertanyaan sebenarnya bukan "apa pengaturan saya" tapi "betapa sulitnya ini aplikasi diizinkan untuk mengganggu saya ", jadi sekarang terbuka dengan menjawab bahwa dalam kalimat dirakit dari nilai hidup - dalam aplikasi, dengan suara, pada Anda desktop, di luar jam sunyi Anda - dan memberikan lebar ke empat keputusan Yang saluran, di mana mereka mendarat, kapan harus tetap tenang, dan apa yang Layak diberitahu tentang. Sentrepiece adalah panggung: viewport aplikasi sendiri dalam miniatur, dicat di pemberitahuan dek gelap token sementara halaman di sekitarnya tetap ringan, karena itu adalah kontras yang tepat pemberitahuan nyata membuat ketika tiba di atas layar kerja. Sudut dipilih dengan mengklik sudut, dan kartu Pegas di seluruh daripada memotong, sehingga kontrol dan konsekuensinya adalah salah satu isyarat. Empat kuadran mengalahkan dropdown di sini: pilihan adalah ruang, dan kata "kanan bawah" adalah peta layar yang lebih buruk daripada gambar satu. Selain itu, Tampilkan saya menimbulkan pemberitahuan nyata di dek nyata di anggota suara, sudut dan waktu pemecatan. Sebuah halaman pengaturan untuk pemberitahuan seharusnya dapat menampilkan pemberitahuan, dan sebuah ejekan akan menjadi gambar satu - jadi previewToast menempatkan kartu throwaway melalui dek yang sebenarnya, tidak menulis apa-apa, Tidak menerbitkan apa-apa, dan tidak pernah mencapai pusat. Jenis-jenis menjadi ubin di mana seluruh ubin adalah saklar, daripada baris dengan a 34px toggle di kanan jauh, dan bagian email mengadopsi panel sendiri baris sehingga membaca sebagai bagian dari halaman daripada kartu yang mengembara masuk Tidak mengganggu sekarang muncul sekali. Itu di strip ringkasan dan lagi di tombol yang sama dua kali pada satu layar. Ia hidup dengan ringkasan, yang merupakan hal yang berubah; kartu tenang yang tersisa untuk jenis yang dijadwalkan.
· kamo-internal
Pemberitahuan menjadi tab pada profil anggota sendiri
Mereka adalah halaman mereka sendiri pada / pengaturan / pemberitahuan, yang menempatkan preferensi tentang satu orang di suatu tempat selain halaman tentang orang itu - dan meninggalkan hilang-pesan switch email terdampar pada tab profil, sehingga dua bagian dari "Bagaimana saya bisa diberitahu hal-hal" tinggal di layar yang berbeda. Keduanya di sini sekarang, pada * * * * * * * * * * * * langsung setelah Profil saya. Switch email menjaga perilaku mereka persis - kunci preferensi yang sama, sama jalur me- scoped, debounce sama dan keepalive flush - dan ditarik kembali dengan bagian pemberitahuan panel sendiri dan baris primitif sehingga mereka membaca sebagai bagian dari bukan sebagai kartu yang berjalan masuk Mereka tinggal bagian yang berbeda, dan berkata: saluran yang mencapai Anda ketika aplikasi ditutup, ditulis oleh layanan yang berbeda, dan terus sendiri jam tenang. Lipat dua set jam ke satu kontrol akan diam-diam mengubah apa salah satu dari mereka mengatur. tab adalah himself-only, karena setiap preferensi di balik itu dibaca dan ditulis melalui rute me- scoped - pada profil orang lain kontrol ini akan menyunting penampil sendiri saat muncul untuk mengedit mereka. Ini menahan alamat akun sendiri daripada mengambilnya dari tab profil: pengaturan tab mount satu di waktu, sehingga nilai diangkat dari saudara akan hilang persis ketika anggota membuka tab ini pertama, yang mana dari link pengaturan pemberitahuan adalah setiap saat. Rute lama hilang, bersama dengan yang settings- menu topik, dan tiga permukaan yang terhubung dengan itu sekarang membangun jalan melalui satu helper - rute terrakit tangan di tiga tempat adalah rute yang akhirnya tidak setuju dengan dirinya sendiri.
· kamo-internal
Tanda tangani paket pada / pengaturan / tanda, pada rute sendiri
Tanda tangan inline pada tab profil anggota, sehingga dokumen duduk di bawah strip tab pengaturan DAN pelengkap sub- tab strip DAN bantuan tab panel - tiga band krom tidak berhubungan atas instrumen anggota diminta untuk membaca, dan dua header. Ini sekarang Halaman ini mewarisi NavTop dan NavPri seperti setiap layar dan band pahlawan penyihir adalah satu-satunya tajuk. Menyelesaikan atau meninggalkan kembali ke * * * * * * * * * * * * * * * * - daftar itu berasal dari, pada ember paket itu masuk Daftar navigasi dengan 'push', bukan 'replace': itu adalah langkah ke berbeda layar, jadi browser Back harus kembali ke daftar. ALLOWLIST HARUS PERGI DENGAN IT. 'RESTRICTED _ ROUTE _ PREFIXES' adalah prefix- cocok dan menyangkal secara default, dan itu adalah apa anggota yang pekerjaan telah berakhir terbatas. Tanpa '/ settings / sign' di atasnya, a mantan karyawan bisa membuka daftar paket mereka dan akan memantul langsung kembali Untuk itu oleh Penjaga Keanggotaan Dilarang saat mereka diklik menjadi satu - a alihkan loop pada permukaan yang tepat bahwa tingkat ada untuk terus terjangkau, karena pengakuan adalah salah satu dari dua hal yang dilindungi. 'restrictedRout.testts' sekarang pin yang, termasuk bahwa pertandingan bukan startsWith telanjang: '/ settings / signage' bukan '/ settings / sign'. Tidak ada gerbang pada halaman itu sendiri, sengaja. Seorang anggota mengeksekusi mereka sendiri perjanjian kerja tidak berlaku dan tidak akan pernah - paket itu Diserahkan kepada mereka - dan setiap titik akhir di belakangnya adalah diri-scoped dalam Layanan Dokter (LegalAssignmenters Owities, not LegalPackageAccess), so the session decisions yang tugasnya itu dan orang lain apos; s uid jawaban 404. Sebuah kosong / atur / tanda dengan tidak ada penempatan kembali ke daftar daripada melaporkan kesalahan: tidak ada di halaman tanpa satu dan tidak ada cara untuk anggota untuk memasok di sana. Uid salah bentuk menunjukkan kesalahan, karena Bouncing akan menyembunyikan link buruk seseorang adalah tentang untuk mengirim lagi.
· kamo-internal
Ingat setiap ukuran catatan mengambang dan posisi per perangkat
Membuka kembali catatan terpisah sekarang menempatkan kembali persis di mana ia tersisa, di ukuran itu kiri, di layar itu. Penempatan per PERANGKAT, sengaja. Yang catatan mengambang adalah properti dari anggota dan tetap server-sisi dalam ui- preferensi, sehingga mengikuti mereka di mana-mana, di mana catatan SITS adalah properti dari layar dalam depan mereka, dan tata letak yang sesuai dengan 27 "desktop salah pada laptop. Jadi tempat tinggal di LocalStorage, scoped oleh anggota karena satu browser adalah satu perangkat tetapi dapat lebih dari satu orang. Penempatan outlive lengket sengaja - menutup catatan menyimpan nya geometri, yang merupakan seluruh titik - sehingga toko adalah capped per anggota dan pengusiran least-recently ditempatkan pertama, dan sebuah catatan yang dihapus (atau 404s on restore) memberikan slot up segera. Dua hal ini harus benar: - Logout melakukan grosir LocalStorag.clear (), yang akan menjatuhkan tata letak pada setiap tanda-keluar. Sekarang menangkap dan menyimpan kembali satu kunci ini cara yang sama yang sudah dilakukan untuk menyembunyikan deep- link. ID catatan dan koordinat saja, tidak pernah puas. - Hidrosi menunggu anggota id bukannya berjalan di mount. Placements are member- scoped, so restoring before we know who this is akan diam-diam mengabaikan tata letak perangkat ini dan kembali ke geometri perangkat silang. Precedence pada pengembalian adalah penempatan perangkat ini, atau apa pun preferensi peranti perangkat terakhir dilakukan - sehingga perangkat brand- baru masih terbuka ke tata letak waras daripada cascade - dan baik cara itu dijepit kembali ke viewport saat ini.
· kamo-internal
Petunjuk pada panggilan balik dibaca, tidak diingat - dan panggilan dapat dibuka kembali
Dua hal, baik tentang acara kalender menjadi tempat yang buruk untuk menyimpan salinan Catatan orang lain. Dialog acara sekarang membaca petunjuk dari CRM. Namanya, nomor untuk berdering, email, waktu terbaik untuk panggilan - semua diambil ketika dialog terbuka, paked oleh id callback acara sudah menyimpan. Apa yang tidak dilakukan adalah menunjukkan salinan membeku pada saat panggilan dipesan, yang merupakan apa deskripsi digunakan untuk membawa dan apa yang akan diam-diam mengatakan kepada anggota untuk cincin nomor tidak ada yang memiliki Menjawab dalam beberapa minggu. Deskripsi sekarang catatan anggota sendiri dan tidak ada lain, yang tidak bisa pergi basi karena itu tidak pernah salinan apa pun. Dan panggilan tertunda dapat dibuka dari halaman utama. Mengklik satu membuka kembali kejadian kalender yang sama dalam dialog yang sama, sehingga tempat anggota pergi untuk melihat pada Panggilan janji adalah tempat mereka bisa memindahkannya. Menyimpan berjalan melalui Layanan Security@@ daripada kalender API, karena callback record dan acara adalah dua pandangan dari satu janji dan hanya layanan yang memiliki keduanya dapat memindahkan mereka bersama-sama - alternatif adalah halaman utama dan kalender yang tidak setuju tentang kapan Panggilan, dan pengingat bahwa api terhadap mana anggota tidak membaca. Baris itu sendiri adalah kendali; tombol penyelesaian di sampingnya menghentikan klik, jadi Tidak ada yang menandai panggilan yang dihubungi sementara yang berarti untuk membacanya.

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