परिवर्तन लॉग
क्या नया है.
यह जहाज के रूप में, प्लेटफार्म के हर सुधार.
· InitializerService
ऑटो-expand कॉलम जोड़ें
· kamo-shared-library
एक छत के साथ ऑप्ट-इन ऑटो-expand
सदस्यता पर दो कॉलम जो ब्लॉक रखता है: क्या अन्य खरीदना है जब संगठन कमरे से बाहर निकलता है तो एक स्वचालित रूप से, और सबसे ज्यादा यह हो सकता है कभी खरीदते हैं। उद्देश्य पर डिफ़ॉल्ट रूप से बंद - चुपचाप किसी के बिल में वृद्धि एक से भी बदतर है अपलोड करना जो एक स्पष्टीकरण के साथ विफल हो जाता है, इसलिए इसे मोड़ना मालिक एक व्यापार है इसके बारे में सोचने के लिए कुछ पैसे नहीं हैं, और यह केवल उनके व्यापार के लिए है बनाना वैकल्पिक के बजाय एक छत की आवश्यकता होती है: कोई स्वचालित खरीद नहीं है बाध्य किसी भी प्रक्रिया के लिए एक खुला अंत प्रतिबद्धता है।.
· BillingService
वास्तव में एक सूची मूल्य परिवर्तन स्ट्राइप तक पहुंचें
स्ट्रिप प्राइस इम्यूटेबल हैं और मैपिंग में प्रति पंक्ति (ऑर्ग, टाइप, कोड) होती है। चक्र एक अद्वितीय कुंजी के पीछे, इसलिए एक बार एक मूल्य अस्तित्व में यह कभी नहीं बदल सकता है। A मूल्य संपादन राजस्व पर स्थायी noop था और कुछ भी नहीं बताया। StripePriceReconciler अब क्या सूची के खिलाफ हर मैप्ड मूल्य की तुलना करता है कहा जाता है और जब पूछा जाता है, तो पुराने के साथ एक ताजा स्ट्राइप प्राइस पर मैपिंग को इंगित करता है एक संग्रहीत - हटाए जाने के बजाय संग्रहीत, क्योंकि स्ट्राइप बिलिंग को रखता है पहले से ही सदस्यता के लिए संग्रहीत मूल्य और इसे नए लोगों के लिए मना कर देता है, जो वास्तव में व्यवहार चाहता था। मीटरिंग को पार किया जाता है, इसलिए एक मीटर कीमत अनमीटर्ड वापस नहीं आ सकती है और चुपचाप बिलिंग उपयोग को रोक सकती है। यह जानबूझकर मौजूदा ग्राहकों को नई कीमत पर नहीं चल पाता है। चुपचाप एक लाइव ग्राहक को फिर से निर्धारित करना क्योंकि किसी ने एक कैटलॉग पंक्ति को संपादित किया एक शुल्क है कोई भी अधिकृत नहीं है; क्या उन्हें दादाजी के लिए एक व्यावसायिक निर्णय है, और क्या उन्हें दादाजी के रूप में जाना जाता है? तथ्य यह है कि यह कभी भी एक निर्णय नहीं था कि क्या लापता था। अभी भी गिनती इसके बजाय पुरानी कीमत की रिपोर्ट की गई है। केवल GET ************* पर डिफ़ॉल्ट रूप से उजागर रिपोर्ट एक स्पष्ट पोस्ट के पीछे की ओर इशारा करें।.
· InitializerService
उन स्तंभों को जोड़ें जो एक मूल्य परिवर्तन का पता लगाने योग्य बनाते हैं
आदेश(0), nullable, कोई backfill — एक null राशि "हम क्या पता नहीं है? इस कीमत के साथ बनाया गया था "और इसके विपरीत यह अज्ञात के बजाय के रूप में व्यवहार करता है बहाव के रूप में।.
· kamo-shared-library
प्रत्येक स्ट्रिप की कीमत किसके साथ बनाई गई थी
मानचित्रण केवल किस कीमत का उपयोग करने के लिए आईडी संग्रहीत किया जाता है, इसलिए एक सूची मूल्य परिवर्तन हो सकता है यहां तक कि ध्यान नहीं दिया जाना चाहिए। यह सुनिश्चित करता है किPlanPrices पंक्ति के अस्तित्व पर शॉर्ट-circuited है और अद्वितीय कुंजी forbade एक दूसरा, जिसका मतलब है $72 से $79 तक की योजना बनाना विपणन पृष्ठ, इन-ऐप उद्धरण और योजना डीटीओ को अद्यतन किया और बदल दिया किसी के बारे में कुछ भी चार्ज नहीं किया गया था - कुछ भी विचलन की रिपोर्टिंग के साथ। unit amount cents और मुद्रा के खिलाफ तुलना करने के लिए कुछ समानताएं प्रदान करते हैं। मौजूदा पंक्तियों के लिए दोनों nullable और बाएं NULL: null का मतलब "अज्ञात", जो है प्रत्येक पंक्ति में स्तंभ को भविष्यवाणी करने का सच है, और अज्ञात के रूप में गलत तरीके से इलाज करना होगा पहले रन पर संपत्ति में हर कीमत को फिर से बनाना।.
· kamo-internal
भंडारण क्षमता टाइप करें अब सारांश रिटर्न
बिलिंग सर्विस के साथ कदम में क्लाइंट अनुबंध रखता है, जो अब बताता है कि क्या योजना में शामिल हैं, क्या ब्लॉक खरीदे गए थे, संयुक्त छत और संयुक्त छत संग्रहित बाइट्स के साथ इस्तेमाल किया जाने वाला अंश। वह पैनल जो इसे नई प्रतिलिपि प्रदान करता है, और कामो-ट्रांसलेशन शब्दकोश है दूसरे सत्र के मध्य-शिक्षा, इसलिए यूआई अलग से उतरता है, बजाय स्वीप करने के बजाय उस रेपो में इन-फ्लाइट काम।.
· BillingService
उपयोग के साथ क्षमता रिपोर्ट करें
स्टोरेज पैनल ने सभी पर कुछ नहीं संग्रहीत बाइट्स की सूचना दी - कोई भत्ते नहीं, कोई प्रतिशत नहीं, कोई पैसा नहीं - इसलिए 400 जीबी की तलाश में मालिक को बताने का कोई तरीका नहीं था क्या वह आरामदायक था या उनके अपलोड को रोकने के बारे में था। पहला किसी समस्या का ज्ञान असफल हो गया है। सारांश अब क्या योजना शामिल किया गया है, क्या ब्लॉक खरीदे गए थे, अब किया गया है संयुक्त छत और भिन्न का उपयोग किया जाता है, साथ ही ब्लॉक का आकार और मूल्य भी इसी तरह सतह कह सकती है कि हार्डकोडिंग के बिना किसी अन्य ब्लॉक को क्या देना और खर्च करना होगा। यह सब उसी सूची पंक्तियों से आता है जो शुल्क की कीमत से है।.
· kamo-shared-library
भंडारण भत्ता एक प्रभाव देना
भंडारण को उन्नीस डोमेन में मापा गया था, रात में, बिल्ड-फ़ाइलिंग के साथ कवरेज परीक्षण - और कहीं भी एक भत्ता की गणना नहीं की जाती है या एक बाइट से इनकार कर दिया। योजना का भंडारण आंकड़ा डेटा नहीं था, और अतिरिक्त भंडारण ऐड-ऑन का कोई उत्पाद प्रभाव नहीं पड़ा: भुगतान ने कुछ भी नहीं बदला और भुगतान नहीं किया कुछ नहीं। StorageQuotaservice एक संगठन क्या हो सकता है हल - योजना प्रति उपयोगकर्ता भत्ते अपनी सीटों पर पूल हो गए, साथ ही ब्लॉकों ने खरीदा है - और इमेज सर्विस उस सामग्री से इनकार करती है जो इससे अधिक होगी। जांच के बाद बैठता है इसलिए एक फ़ाइल को फिर से संलग्न करने के लिए पहले से मौजूद प्लेटफॉर्म को कभी मना नहीं किया जाता है अंतरिक्ष के लिए; केवल वास्तविक रूप से नए बाइट्स गिनती। यह बिलिंग सर्विस के बजाय यहां रहता है क्योंकि वे सेवाएं जो लिखते हैं बाइट्स प्रत्येक अपने अपलोड पथ पर एक बिलिंग एपीआई को कॉल नहीं कर सकते हैं, और इसे इंजेक्ट किया जाता है निर्माता के बजाय फ़ील्ड क्योंकि इमेज सर्विस को इकट्ठा किया गया है कई स्थानों में हाथ - एक निर्माता तर्क एक संपादन है जो संकलन करता है हर जगह परीक्षण को छोड़कर और फिर छवि निर्माण में विफल रहता है। गलत होने के दो तरीके। "GB" को एक गिबाइट के रूप में पढ़ा जाता है, जो एक है फ़ाइल प्रबंधक का मतलब है जब यह जीबी और अधिक उदार पढ़ने को प्रिंट करता है। और एक कोई लाइव सदस्यता के साथ संगठन, या कोई कोटा बीन वायर्ड के साथ एक सेवा, वास्तव में पहले की तरह स्टोर: यह गेट एक भुगतान ग्राहक को क्या करने के लिए मौजूद है उन्होंने खरीदा, डेटा हानि में बिलिंग अंतर को बदलने के लिए नहीं। पढ़े कभी नहीं जा रहे हैं - अपने भंडारण को भरने से आप अधिक जुड़ जाते हैं, कभी भी आपके पास क्या है।.
· kamo-internal
अनुरोधकर्ता को बताएं कि क्या उनका एजेंट वास्तव में वहाँ है
एक मूक धागा "कोई भी इस पर नहीं देखा है" को "मेरे एजेंट" से अलग नहीं करता है वह व्यक्ति जो इंतजार कर रहा है उसे नहीं बता सकता। सूचना के तहत बातचीत का कहना है कि कौन है, और जब जवाब "अब नहीं" है तो यह क्या होता है अगला — संदेश प्राप्त होता है और जवाब दिया जाएगा जब वे वापस होते हैं — बल्कि किसी को यह सोचने की बजाय कि क्या यह सब पर उतर गया है। क्योंकि यह जवाब देता है "कोई भी है वहाँ है, जो सवाल पूछ रहा है जबकि टाइपिंग, जबकि स्कैनिंग टिकट मेटाडाटा। सर्वर-answered, अनुरोधकर्ता के उपस्थिति मानचित्र से नहीं पढ़ा: उपस्थिति है प्रति संगठन प्रसारण, इसलिए ग्राहक-ऑर्ग सदस्य को प्रदाता द्वारा मदद की जा रही है ऑर्ग अपने एजेंट को स्थायी रूप से ऑफलाइन के रूप में देखेंगे। "they're दूर नहीं है। इसी कारण एक असफल मतदान आखिरी रहता है सूचना को बदलने के बजाय ज्ञात उत्तर। 30s पर और केवल जबकि टैब दिखाई देता है। उपलब्धता एक आराम है संकेत, सही नहीं है, और एक पृष्ठभूमि टैब कोई भी नहीं देख रहा है।.
· MediaService
Reassignment नए एजेंट तक पहुंच जाता है, और अनुरोधकर्ता को बताया जाता है कि कौन है
असाइनमेंट किसी भी व्यक्ति तक नहीं पहुंच सका। Not OpenAt रिकॉर्ड करता है कि एक ग्राहक डाल दिया स्क्रीन पर बातचीत, और यह वही है जो साइन-इन पर टिकट जुटाता है - लेकिन यह अभी भी PREVIOUS एजेंट के स्टाम्प का आयोजन किया गया, इसलिए नए को केवल तभी लाइव पुश प्राप्त हुआ जब केवल तभी वे उस दूसरे को ऑनलाइन होने लगे और कुछ भी नहीं जो वे थे साइन आउट जब भी असाइनमेंट वास्तव में बदल जाता है, तब लागू होता है। जो कभी भी इसके मालिक के लिए हाथ से टिकाऊ बनाता है। **************** वह व्यक्ति जो मदद के लिए पूछता है कि क्या उनकी मदद करने वाला व्यक्ति पहुंच योग्य है। उद्देश्य पर सर्वर-साइड का जवाब दिया: उपस्थिति प्रति संगठन प्रसारित होता है, इसलिए ग्राहक-ऑर्ग अनुरोधकर्ता किसी एजेंट को नहीं देख सकता सब पर प्रदाता org और स्थिति हर एक के लिए "offline" पढ़ा होगा क्रॉस-ऑर्ग वार्तालाप। पहले से ही बातचीत में लोगों के लिए दायर - एक टिकट आईडी एक UUID है, एक रहस्य नहीं है और "इस व्यक्ति को उनके डेस्क पर है" नहीं होना चाहिए एक अनुमान का जवाब दें।.
· kamo-internal
एक चैट अनुरोध को असाइन करें, और टिकट सूची से असाइन करें
दो अंतराल, एक ही कारण - असाइनमेंट को उस चीज़ के रूप में माना जाता है जो एक के लिए होता है काम के एक टुकड़े के बजाय टिकट। निर्दिष्ट बटन को पूर्व-टिकटों के लिए सीधे छिपाया गया था, इसलिए एक लाइव चैट अनुरोध, जिस मामले में यह सही व्यक्ति के लिए हो रहा है, उसके पास कोई रास्ता नहीं था सभी पर सौंप दिया। जब एक चैट अनुरोध अभी तक नहीं था तब से यह बहिष्कार की तारीख है " वास्तविक टिकट" और असाइनमेंट केवल रूपांतरण पर हुआ। यह अब असाइनेबल है, और स्थिति जीवित रहती है, इसलिए इसे बाद में परिवर्तित किया जा सकता है। और पहली बार बातचीत खोलने की आवश्यकता को असाइन करना, जो गलत आकार है एक कतार को बचाने के लिए - कतार काम करने वाला व्यक्ति अक्सर ऐसा व्यक्ति नहीं होता है जो कतार को काम करने वाला व्यक्ति नहीं होता है। जवाब देना चाहिए। टिकट सूची में सेल को सौंपा गया अब नियंत्रण है: होवरिंग शो असाइन या इस्तीफा दे देते हैं, क्लिक करने वाले उसी पिकर को टिकट खोलता है विंडो का उपयोग करता है। पंक्ति अभी भी बातचीत को खोलती है। प्रतिक्रिया पुनः लोड करने के बजाय अपनी खुद की पंक्ति को पैच करती है, इसलिए असाइन नहीं होती है ऑपरेटर के स्थान को फ़िल्टर्ड, सॉर्टेड, पेज्ड कतार में ले जाएँ।.
· kamo-internal
प्लान पिकर के लिए उद्धरण इंजन, जो मिलान करता है स्ट्राइप बिल होगा
एक लाइव रनिंग कुल के पीछे अंकगणित, किसी भी घटक से अलग रखा गया है इसलिए संख्याओं को सीधे परीक्षण किया जा सकता है। यह दर्पण **************** वास्तव में: प्रति सीट ऐड-ऑन स्केल हेडकाउंट के साथ, इकाइयों द्वारा फ्लैट बिल खरीदा हालांकि कई लोग योजना पर हैं, और मीटर वाले लोगों को इसके बजाय नामित किया जाता है। पर अनुमान लगाया गया। वह पत्राचार है। दोनों जगहों पर पहले से उद्धृत मंच कीमत चार्ज से असहमत - इन-ऐप ऑर्डर विज़ार्ड ने प्रत्येक ऐड-ऑन को एक बार जोड़ा सीटों की परवाह किए बिना, और सार्वजनिक पृष्ठ ने एक संगठन-व्यापी भंडारण पूल का बिल दिया प्रति उपयोगकर्ता.
· BillingService
पहला प्लान खरीदने योग्य बनाएं और रियल प्लान की कीमतों को वापस लौटाएं
दो बातें एक संगठन कभी एक पहली सदस्यता खरीद बंद कर दिया। योजना सूची केवल उप-मार्केट के माध्यम से उपलब्ध थी। पहले से ही आयोजित, इसलिए किसी के साथ कोई भी उत्पाद में कहीं भी एक योजना नहीं देख सकता है। GET/api/billing/markets/for-org caller के बाजार को हल करता है हकदारी जड़ - वही org जिसका फ्री प्लान पहले से ही अपनी बेसलाइन की आपूर्ति करता है, इसलिए योजनाएं और पात्रता विभिन्न कैटलॉग से नहीं आ सकती हैं। और योजना डीटीओ पढ़ें ************* कभी आबादी: वे हर KamoCRM योजना के लिए नल हैं, क्योंकि बीजदाता लिखते हैं **************** इसलिए ख़रीदना कोई कीमत नहीं, और खाता ने एक शून्य शुल्क दर्ज किया। यह अब मूल्य पढ़ता है पंक्तियां, उन कैटलॉग के लिए एक वापसी के रूप में योजना स्तंभों के साथ जो उन्हें ले जाते हैं। इसके अलावा ऐड-ऑन यूनिट आकार को उजागर करता है इसलिए एक खरीद सतह "प्रति 10 जीबी" कह सकती है। इसे हार्डकोडिंग के बिना।.
· kamo-internal
गेट ने एक लाइसेंस प्राप्त सीट पर कार्रवाई की, चोकपॉइंट पर
उत्पाद में लगभग हर गेटेबल एक्शन - एक एक्सटेंशन डायल करें, एक सदस्य को ईमेल करें, एआई सहायक खोलें, एक रिकॉर्डिंग खेलना, एक सामाजिक बातचीत शुरू करना - एक नंगे है ************* और उपकरण रजिस्ट्री सभी पर कोई गेट नहीं था। उन कॉल साइटों को एक समय में पूरा नहीं किया जा सकता: एक प्रेषक बाद में जोड़ा गया, या बस याद किया गया, इसके आसपास सीधे मार्गों। अब चेक में रहता है टूल WindowsContext का सिंगल टूल: ओपन हैंडलर, इसलिए हर कॉलर को कवर किया गया है। कभी भी एक उपकरण विंडो के माध्यम से गुजरने वाले कार्य को वह गेट किया जाता है जहां वे रहते हैं: संलग्नक (ड्रैग-ड्रॉप और पेस्ट सहित, जो समान क्षमता वाले हैं दूसरा मार्ग, एक समूह में एक चैट और मीटिंग प्रवेश बिंदुओं को बढ़ाता है। यह भी पता चलता है कि तीन असंतोषों की जाँच की गई है। तीन प्रवेश बिंदुओं की जांच करने वाले संगठन को आमंत्रित करें। isMeet और तीसरे ने किया नहीं; दो तीन ईमेल प्रविष्टि बिंदुओं की जांच ACCESS MAIL और तीसरे ने किया नहीं; और रोस्टर से सदस्य के विस्तार को डायल करने के लिए किसी भी वीओआईपी की कोई जांच नहीं थी प्रकार उनमें से सभी अब सहमत हैं। क्षमताओं को बंद करने के लिए डिफ़ॉल्ट - जबकि पहला लोड उड़ान में है, अगर कॉल विफल रहता है, और अगर एक पुराने बैकेंड क्षेत्र को छोड़ देता है। Guessing "allowed" हाथ होगा भुगतान की गई विशेषताएं, जो गलती है कि पात्रता पथ पहले से ही एक बार बनाया गया है इसके असफल डिफ़ॉल्ट के साथ।.
· SecurityService
क्या एक सदस्य कर सकते हैं हल, न सिर्फ उनकी योजना में क्या शामिल है
फ़ीचर अनुदान एक योजना का वर्णन करते हैं। उन्होंने कभी इस सदस्य का वर्णन नहीं किया, क्योंकि Org-level org.features पर कंसोल गेट्स नेविगेशन - इसलिए लाइसेंस के साथ कोई सदस्य सभी ने देखा कि प्रत्येक ऐप संगठन का हकदार था, और सदस्य स्तर डेटाबेस में पहले से मौजूद लाइसेंसिंग का कोई प्रभाव नहीं पड़ा। सदस्यक्षमता यह है कि लापता उत्तर सर्वर पर एक बार हल हो गया। सदस्य एक सीट के बिना एक जानबूझकर मंजिल रखता है: टीममेट्स के साथ पाठ बातचीत, समर्थन, अपनी प्रोफ़ाइल, अपनी खुद की बिलिंग - एक मानव तक पहुंचने के लिए और उसके लिए पर्याप्त एक सीट वापस खरीदो। इनकमिंग-मेसेज अनुवाद भी रहता है, क्योंकि पढ़ना क्या है आपको भेजा गया है खर्च नहीं करना चाहिए। वह सब कुछ जो रन पर पैसा खर्च करता है। एक सक्रिय ओर्ग परीक्षण लाइसेंस सभी को केवल सीट के बजाय ऑर्ग में लाइसेंस देता है धारक एक परीक्षण org को फ्री प्लान की सिंगल सीट के साथ बीज दिया जाता है, इसलिए गेट करना लाइसेंस पर परीक्षण का मतलब होगा कि मालिक अकेले उत्पाद का मूल्यांकन कर सकता है जबकि टीम ने इसका मूल्यांकन करने के लिए आमंत्रित किया, कुछ नहीं देखा। लॉग इन नहीं है: प्रमाणीकरण ने कभी बिलिंग स्टेट से परामर्श नहीं किया है और अभी भी नहीं। एक सीट लागत सुविधाओं को खोने, कभी पहुंच नहीं।.
· BillingService
बिल प्रति यूनिट ऐड-ऑन इकाइयों द्वारा खरीदा, headcount द्वारा नहीं
निर्माण और अद्यतन के माध्यम से नए ऐड-ऑन मात्रा को थ्रेड करें: अब एक FLAT ऐड-ऑन क्या सदस्यता वास्तव में खरीदा से अपनी धारी मात्रा लेता है, तो चार प्रति सीट एक बार के बजाय 4 ब्लॉकों के रूप में 10 जीबी स्टोरेज ब्लॉक बिल। क्वांटिटी को रास्ते में हल किए गए ऐड-ऑन कोड के खिलाफ फ़िल्टर किया जाता है, इसलिए एक कहानी या शत्रुतापूर्ण शरीर किसी कोड के खिलाफ एक मात्रा को पार्क नहीं कर सकता, जिसका हकदार नहीं था खरीदने के लिए।.
· InitializerService
Reprice अतिरिक्त भंडारण $2.50 प्रति 10 जीबी, org-wide
ऐड-ऑन ने एक संगठन-व्यापी साझा पूल का वर्णन किया और फिर कीमत की थी USAGE BASED $4 पर "25 GB" के साथ केवल prose में कहा गया है। कभी नहीं जमा भंडारण मीटर घटना, इसलिए यह कुछ भी बिल नहीं था; और यह संलग्न किया गया था, पट्टी एक मीटर की कीमत पर एक मात्रा को अस्वीकार करता है, इसलिए सदस्यता का निर्माण होता है फेंकना। इस बीच सार्वजनिक पृष्ठ ने इसे "+$4 / उपयोगकर्ता / माह" के रूप में प्रस्तुत किया। यह अब Unit size 10 के साथ $ 2.50 पर FLAT है - मालिक को खरीदने के लिए ब्लॉक करता है, कीमत की कीमत हालांकि कई लोग योजना पर हैं। AddOnQuantityMigration दो जोड़ता है किसी भी धावक से पहले आदेश(0) पर nullable कॉलम एक इकाई को लोड कर सकते हैं जो मानचित्र उन्हें।.
· kamo-shared-library
ऐड-ऑन को एक यूनिट आकार और एक शुद्ध मात्रा दें
एक ऐड-ऑन की इकाई केवल अपने विवरण के अंदर पीछा के रूप में अस्तित्व में है ("एक इकाई 25 जीबी जोड़ती है) और विपणन स्थल में एक हार्डकोडेड स्थिर के रूप में, इसलिए कुछ भी नहीं हो सकता इसके खिलाफ बिल। सब्सक्रिप्शनAddOn लाभ Unit size, and AccountSubscription लाभ addon quantity - प्रत्येक ऐड-ऑन सदस्यता की कितनी इकाइयां खरीदी गईं। Active addon code सत्य के पात्रता स्रोत को बरकरार रखता है, इसलिए ऐसा कुछ नहीं है कि केवल पूछता है कि "इस ऐप को दिया गया है" को मात्रा मानचित्र मौजूद है। इसके अलावा ऑर्डर विज़ार्ड के उद्धरण को ठीक करता है, जिसने प्रत्येक ऐड-ऑन को एक बार बिना किसी सीट के जोड़ा हालांकि अधिकांश Per SEAT हैं: चार मॉड्यूल के साथ एक 25 सीट ऑर्डर था $ 775 स्ट्रिप के खिलाफ $ 31 उद्धृत बिल होगा। अब उद्धरण उसी प्रकार है मूल्य निर्धारण मॉडल जो शुल्क करता है, और अनुमान लगाने के बजाय omits ने ऐड-ऑन को मीटर किया।.
· kamo-internal
अपने आईडी को टाइप करने के बजाय, एजेंट को टिकट देने के लिए चुनें
असाइन और reassign ने एक टेक्स्ट बॉक्स खोला जिसे आप एक कच्चे सदस्य आईडी को टाइप करते हैं - जिसमें पहले से ही उस व्यक्ति की आईडी जानने का मतलब था जिसे आप चाहते थे, एक कार्रवाई के लिए जिसका पूरा उद्देश्य सही खोजने के लिए है। यह अब सदस्यपिकरडियालॉग का उपयोग करता है, जो प्रबंधक क्षेत्र के पीछे एक ही पिकर है। सदस्य प्रोफ़ाइल और इस ऐप में एक व्यक्ति पिकर। इसकी निर्देशिका खोज रन सर्वर-साइड और नाम, उपनाम, काम और खाता ईमेल, नौकरी का शीर्षक और पर मैच विभाग, इसलिए "ana lending" ने एना को लेंडिंग में पाया; प्रत्येक पंक्ति पर्याप्त रूप से चलती है उसी नाम के दो लोगों को अलग-अलग बताएं। वर्तमान असाइनी को ऊपर पिन किया जाता है परिणाम तो यह मध्य खोज खो नहीं है। सदस्य आईडी जावास्क्रिप्ट की सटीक पूर्णांक सीमा से अधिक है, इसलिए आईडी एक स्ट्रिंग से रहता है निर्देशिका तार करने के लिए।.
· MediaService
साइन-इन ऑटो-ओपन हैंडओवर के लिए समापन बिंदु
GET / सत्र / चैट / ऑटो-ओपन इस सदस्य के ग्राहक के चैट वार्तालाप को वापस देता है इसे उठाना चाहिए; POST / सत्र / {guid} / ऑटो-ओपन रिकॉर्ड जिसे यह किया गया था। टिकाऊ समर्थन हैंडओवर के समकक्ष, और उसी कारण से: निर्णय मंच से संबंधित है, एक ब्राउज़र टैब के सत्रस्टोरेज के लिए नहीं। लेखन कॉलर की अपनी सदस्यता पंक्ति के लिए दायर किया गया है, इसलिए एक सदस्य का ग्राहक कभी किसी अन्य को रिटायर नहीं कर सकता, और ग्राहक की आपूर्ति के बजाय टिकट सर्वर समय मूल्य — तुलना इस एक ही घड़ी द्वारा लिखित संदेश टाइमस्टैम्प के खिलाफ है, और एक चौंकाने वाला ब्राउज़र अन्यथा हमेशा के लिए बातचीत को दबा देगा या इसे अंतहीन रूप से फिर से व्यवस्थित करें। ChatAutoOpenHqlTest वास्तविक इकाई मॉडल के खिलाफ क्वेरी को पार करता है और पिन करता है इसके लिए तीन संकेत मौजूद हैं। स्प्रिंग डेटा केवल संदर्भ में @Query को मान्य करता है बूट, इसलिए एक टाइपो अन्यथा असफल स्टार्टअप या एक पथ पर 500 के रूप में सतह होगी प्रत्येक सदस्य साइन-इन पर हिट होता है; परीक्षण ने क्वेरी को एननोटेशन से पढ़ लिया है प्रतिबिंब इसलिए यह एक कहानी प्रतिलिपि के खिलाफ पारित नहीं कर सकता है।.
· kamo-shared-library
एक बातचीत का टिकाऊ रिकॉर्ड ग्राहक ने खुद को उठाया
MediaSessionMember gains AUTO OPENED AT, msgIdLastViewed के बगल में क्योंकि यह है एक ही अनाज - एक सत्र के लिए एक सदस्य के रिश्ते के बारे में तथ्य। एक जवाब "वे कितनी पढ़ चुके हैं"; यह एक जवाब है "वह पहले से ही दिखाया गया है" यह, unasked. यह एक प्रति टैब सत्रस्टोरेज ध्वज की जगह लेता है, जो किसी भी चीज़ का रिकॉर्ड नहीं था: एक दूसरे डिवाइस ने प्रत्येक बातचीत को फिर से खोला, पहले पहले ही पॉप किया था, और क्लियरिंग स्टोरेज पूरी तरह से इस तथ्य को खो देता है। findChatSessionToAutoOpen कुछ सदस्य रखने वाले सत्रों को लौटा देता है पढ़ना नहीं है कि आखिरी वृद्धि के बाद से कुछ आया है - इसलिए बातचीत जानबूझकर हर भार पर फिर से खुलने से रोको, लेकिन वापस आता है जब एक वास्तव में नए संदेश भूमि। केवल चैट सत्र; समर्थन टिकट अपने स्वयं के है हैंडओवर सदस्य के अपने संदेशों को बाहर रखा गया है, और एक dangling msgIdLastViewed पॉइंटर ने पकड़ा-अप के बजाय अपठित रूप में गिनती की क्योंकि एक स्कैलर सबक्वायरी ओवर एक गायब पंक्ति एनयूएल की पैदावार करती है और स्थायी रूप से पढ़ने के रूप में पढ़ी जाएगी।.
· kamo-internal
ओवरहाल वरीयता पैनल
चार ड्रॉपडाउन और एक पैनल पर एक स्विच ने किरायेदार में ऊपर से नीचे तक धोया पूरी ताकत पर रंग, इसलिए हर नियंत्रण ने अपनी पृष्ठभूमि को तोड़ दिया। प्रत्येक एक क्लिक के पीछे तीन या चार विकल्पों को छिपाएं और उसी बारह को दोहराएं सीमा शैली की रेखाएं। पैनल अब एक सतह है, और रंग जो भी चुना जाता है उस पर है। - प्रत्येक विकल्प स्क्रीन पर है। ये तीन से पांच के साथ चार सेटिंग्स हैं प्रत्येक लघु मान; उन्हें दिखाने के लिए एक मेनू खोलने की तुलना में उपयोग करने के लिए तेजी से है, और एक विकल्प घटक डुप्लिकेट स्टाइल के चार ब्लॉकों की जगह लेता है। - अनुस्मारक समय और विधि एक कार्ड साझा करती है क्योंकि न तो इसका मतलब कुछ भी है अन्य के बिना। रिमाइंडर ऑफ़सेट्स एक हैं, जो बाकी हिस्सों से मेल खाते हैं। कैलेंडर के समय का उपचार। - डिफ़ॉल्ट कैलेंडर अपने रंग को दिखाता है, इसलिए इसे उसी तरह पहचाना जाता है जिस तरह से इसे पहचाना जाता है। केवल एक ही नाम के बजाय साइडबार और इवेंट संवाद में है। - हेडर शरीर स्क्रॉल करते समय रखता है - चार खंडों के साथ शीर्षक अन्यथा स्क्रॉल दूर। ये सेटिंग्स प्रेस करने के लिए कोई बटन के साथ बदलाव को बचाती हैं, और पहले कहा इसलिए एक नंगे स्पिनर के साथ। अब एक स्पष्ट "सुरक्षित" है, जो बाद में फीका हो जाता है कुछ सेकंड क्योंकि यह सिर्फ बनाया परिवर्तन के लिए एक रसीद है, नहीं एक पैनल की स्थायी स्थिति। धारा में कंपित और पुष्टिकरण स्प्रिंग्स; दोनों के तहत दबाया जाता है प्रेरित गति को पसंद करता है। प्रत्येक स्ट्रिंग एक मौजूदा कुंजी है। एक अलग कामट्री में एक उत्पादन निर्माण के साथ सत्यापित किया गया।.
· kamo-internal
मेलबॉक्स स्पिनरों को एक कंकाल के साथ बदलें जो इकट्ठा होता है
प्रत्येक लोडिंग स्टेट ऑन / मेसेज एक लोडर2 था, जो अन्यथा खाली फलक पर था - बूट, संदेश सूची, फ़ोल्डर पेड़, संदेश शरीर और अगले पृष्ठ सभी इस बात के बारे में कुछ नहीं बताया कि पाठक क्या आ रहा था। अब वे उस चीज को आकर्षित करते हैं जो लोड हो रहा है। प्रत्येक प्लेसहोल्डर की ज्यामिति की प्रतियां करता है यह घटक 40px अवतार, फ़ोल्डर इंडेंट और के लिए नीचे खड़ा है 104/120px संदेश पंक्ति को वास्तविक मार्कअप से मापा जाता है, इसलिए लेआउट नहीं है जब डेटा भूमि होती है तो चलती है। एक विचार प्रस्ताव को वहन करता है: प्रकाश क्रॉस का एक बैंड प्रत्येक प्लेसहोल्डर को दाईं ओर छोड़ दिया जाता है और उसके नीचे हर पंक्ति पर बाद में एक बीट शुरू होता है। हाइलाइट हर पंक्ति के बजाय एक एकल विकर्ण पास के रूप में स्टैक को छोड़ देता है अपनी घड़ी पर चमकती हुई। पंक्तियाँ उसी क्रम में होती हैं। प्रकाश - उच्चारण-कॉम से मिश्रित है, संदेश मॉड्यूल का अपना पारिवारिक उच्चारण, इसलिए यह एक सामान्य चमक के बजाय इस उत्पाद के रूप में पढ़ता है। पसंद-कम-गति अभी भी सलाखों के लिए पूरी चीज को समतल करता है। कोई नया संदेश कुंजी नहीं: प्लेसहोल्डर खुद को स्क्रीन रीडर की घोषणा करते हैं पहले से ही वहाँ थे कि तीन लोड स्ट्रिंग के माध्यम से।.
· kamo-internal
घटना संवाद से मेहमानों को जोड़ें और निकालें
आखिरी बात संवाद नहीं कर सकता। यह प्रदर्शित कर सकता है कि कौन पहले से ही था एक घटना, लेकिन वहाँ किसी को रखने का कोई तरीका नहीं था - एकमात्र अतिथि नियंत्रण "update" था, जो पहले से ही आमंत्रित लोगों को फिर से मेल खाता था। अतिथियों को ईमेल द्वारा जोड़ा जाता है, उनके RSVP के साथ एक रंगीन डॉट शीर्षक के रूप में सूचीबद्ध किया गया है। राज्य के साथ, और होवर पर हटा दिया। प्रवेश करने के बजाय एक अतिथि जोड़ें संवाद प्रस्तुत करना, क्योंकि आप समाप्त होने के बजाय मध्य सूची हैं। The आयोजक चिह्नित है और एक साधारण अतिथि के लिए गलत नहीं किया जा सकता है। ईमेल सत्यापन जानबूझकर permissive है: वास्तविक परीक्षण है कि क्या मेल है यह बाउंस करने के लिए, और एक सख्त पैटर्न उन पते को खारिज कर देता है जो पूरी तरह से हैं मान्य। यह एक स्पष्ट टाइपो को पकड़ता है, कुछ भी नहीं। खाली राज्य माफी मांगने के बजाय आमंत्रित करता है। स्ट्रिंग्स ने इस से आगे कैमो-ट्रांसलेशन-डिक्शनरी में भेज दिया - अगली-intl en.json और kamo-internal के CI क्लोन से लापता एक कुंजी पर फेंकता है जो रेपो निर्माण समय पर, इसलिए इस पहले को लैंडिंग ने एक कैलेंडर पेज भेज दिया होगा जो एक कैलेंडर पेज भेज दिया जाएगा। दुर्घटना। एक अलग कामट्री में एक उत्पादन निर्माण के साथ सत्यापित; एक अन्य सत्र इन-ट्री लॉक रखता है।.
· EmailService
एक कार्यक्रम की अतिथि सूची प्रबंधित करें
संवाद यह दिखा सकता है कि कौन पहले से ही एक घटना पर था लेकिन कभी नहीं जोड़ सकते हैं या हटा सकते हैं कोई भी व्यक्ति; एकमात्र अतिथि संचालन उन लोगों को फिर से सूचित किया गया था जो किसी भी तरह थे पहले से ही वहाँ। कार्यक्रम अब एक अतिथि सूची को स्वीकार करते हैं, सहेजने पर थोक बदल दिया। बल्कि बदलें मर्ज की तुलना में, क्योंकि संवाद सूची का मालिक है - एक अतिथि को हटाने के लिए वहाँ है यहां गायब हो गया। एक शून्य सूची का मतलब है "आपूर्ति नहीं" और मेहमानों को छोड़ देता है अकेले, जो एक क्लाइंट संपादन केवल एक शीर्षक भेजता है। दो चीजें जो एक ग्राहक को जोर देने के लिए नहीं मिलती है, इसलिए न तो पढ़ा जाता है अनुरोध: RSVP, जो अतिथि को देने के लिए है, और आयोजक ध्वज, जो रिकॉर्ड्स ने बैठक बुलाई। दोनों एक संपादन जीवित रहते हैं - फिर से बनाना उन्हें अद्यतन करने के बजाय पंक्तियाँ हर जवाब को रीसेट करेगी और एक को स्ट्रिप करेगी व्यक्ति ने घटना को रद्द करने की अनुमति दी। मेहमान बैच वापस आ गए। एक महीने का दृष्टिकोण सौ घटनाओं को वापस करता है और पूछता है प्रति घटना प्रति पंक्ति एक क्वेरी है। एक घटना को हटाने से पहले अपने मेहमानों को हटा दिया जाता है। वे एक गैर शून्य ले जाते हैं इसके लिए वापस विदेशी कुंजी, इसलिए उन्हें हटा दें या तो उन्हें अनाथित करें या एक बार विफल हो गया डेटाबेस ने संदर्भ को लागू किया।.
· kamo-shared-library
बैचेड अतिथि लुकअप, और डिलीट-बाय-ईवेंट
घटना संवाद से पता चलता है कि कौन एक घटना के साथ है, और सूची समापन बिंदु एक रिटर्न देता है एक समय में घटनाओं का महीना। प्रति घटना मेहमानों के लिए पूछ एक क्वेरी प्रति पंक्ति है; findByEventIdIn एक बार पूछता है। डिलीटByEventId एक अतिथि सूची थोक की जगह का पहला आधा हिस्सा है, और अनाथन पंक्तियों के बिना एक घटना को हटाने के लिए जो एक गैर शून्य विदेशी ले जाता है इसके लिए वापस कुंजी।.
· kamo-internal
सदस्य को बताएं कि क्या कार्यक्रम के साथ संबंध है, क्योंकि वे इसे सेट करते हैं
सबसे उपयोगी बात एक शेड्यूलिंग संवाद कह सकते हैं "आप पहले से ही है कुछ तो", और जवाब देने के लिए समापन बिंदु यह सब के साथ अस्तित्व में है कुछ भी नहीं कह रहा है। अब संवाद समय परिवर्तन के रूप में पूछता है - घोषित, क्योंकि डेटटाइम इनपुट प्रति कीस्ट्रोक आग - और टकराव की रिपोर्ट करता है जब कार्ड के अंदर, सीधे नियंत्रण के तहत जो इसके कारण हुए थे, बल्कि एक बैनर के रूप में कहीं और या बचत के बाद एक त्रुटि। एडिटिंग पास को बाहर निकाल देता है तो एक घटना खुद को रिपोर्ट नहीं करती है। दो और चीजें जो दो-फ़ील्ड संपादन थे और अब एक टैप हैं: - आज और टोमरो अपने समय को रखते हुए उस दिन इस घटना को स्थानांतरित करते हैं और अवधि "सैम टाइम कल" एक चुनने की तुलना में कहीं अधिक आम इरादा है एक विजेट से बाहर तारीख। - सहेजे गए शॉर्टकट को पाद लेख में दिखाया गया है, जो प्रति प्लेटफ़ॉर्म प्रस्तुत किया गया है, इसलिए यह है लोकगीत के बजाय खोज योग्य। प्रत्येक स्ट्रिंग एक मौजूदा कुंजी है: संघर्ष पहले से ही एक {names} किया सप्ताह और दिन के विचारों के लिए प्लेसहोल्डर, और आम। समय की आपूर्ति लेबल शॉर्टकट संकेत प्रतीक है, इसलिए इसे कोई आवश्यकता नहीं है। एक अलग कामट्री में एक उत्पादन निर्माण के साथ सत्यापित - एक अन्य सत्र इन-ट्री बिल्ड लॉक रखता है।.
· EmailService
संघर्ष समापन बिंदु को संपादित होने की घटना को बाहर करने दें
ConflictDetection Service हमेशा बाहर रखा गया है; यह समापन बिंदु पारित null। इसके बिना एक घटना खुद को ओवरलैप करती है, इसलिए क्षण घटना संवाद शुरू किया पूछ रहा है, कुछ भी संपादित करने की बात के साथ एक संघर्ष की रिपोर्ट होगी संपादित किया जा रहा है। इसके अलावा इस नियंत्रक के बाकी हिस्सों की तरह डीटीओ के साथ जवाब। कच्ची इकाई एक सदस्य, संगठन और कैलेंडर प्रकाशित किया गया है कि जैक्सन नल के रूप में प्रस्तुत करता है वैसे भी, और इसके अलावा एक अच्छा सौदा।.
· kamo-internal
जब आसपास घटना संवाद का पुनर्निर्माण, फ़ील्ड के आसपास नहीं
एक स्तंभ में दस समान भारित रूपरेखा फ़ील्ड, क्रम में स्तंभ तालिका में बैठने के लिए होते हैं: शीर्षक, विवरण, स्थान, कैलेंडर, सभी दिन, शुरू, अंत, रंग, निजी, आवर्ती। कुछ भी संकेत नहीं दिया कि शीर्षक और समय पूरे काम हैं और बाकी आमतौर पर अकेले छोड़ दिया जाता है। वास्तव में क्या निर्णय लिया है, और मैच के लिए पदानुक्रम दिया: - शीर्षक एक शीर्षक टाइप किया जा रहा है की तरह सेट है - बड़े, borderless, ऑटोफोकस - क्योंकि यह हर एक बार में भरा हुआ एक चीज है। - जब हीरो ब्लॉक बन जाता है: दो बार मोनो में, अवधि के साथ उनके बीच व्युत्पन्न और दिखाया गया है, और 15m / 30m / 1h / 2h प्रीसेट जो सेट करता है प्रारंभ से अंत तक। यह कैसे एक बैठक वास्तव में निर्णय लिया है ("मेक यह एक घंटे है) और डेटटाइम इनपुट की जोड़ी ने कभी भी इसका जवाब नहीं दिया। - कैलेंडर और रंग ड्रॉपडाउन के बजाय चिप्स और घड़ी बन जाते हैं। शायद ही कभी एक मुट्ठी से अधिक हैं, रंग उतना ही ज्यादा है। वस्तु को नाम के रूप में चुना जा रहा है, और रंग * नाम * की एक बूंद आपको बनाया एक swatch लेने के लिए एक शब्द पढ़ा। अवधि भी वैधता है। जब अंत शुरू होता है चिप लाल हो जाता है और नकारात्मक मान पढ़ता है - "-30m" समस्या को अधिक बताता है एक वाक्य की तुलना में, कोई नया अनुवाद कुंजी की आवश्यकता नहीं है, और सही में है प्रत्येक भाषा। सेव उस पर और खाली शीर्षक पर अक्षम है, दोनों जो पहले से ही फॉर्म पर दिखाई देते हैं। Cmd/Ctrl+Enter बचाता है। यह संवाद खोला जाता है, भरा जाता है और खारिज कर दिया जाता है दर्जनों दिन में कई बार। यहां एक वास्तविक बग को ठीक करता है: समय क्षेत्र के साथ आबादी थी toISOString(), जो UTC है, उन इनपुटों में जो स्थानीय दीवार के समय की उम्मीद करते हैं। में कैलिफ़ोर्निया संवाद ने सात घंटे की शुरुआत की और कोई भी इस क्षेत्र को छूने के बिना बनाई गई घटना गलत घंटों में उतरी।.
· kamo-internal
ऑटो असाइनमेंट रणनीति, और स्वचालित रूप से एक निर्दिष्ट वार्तालाप खोलें
टॉपिक्स सेटिंग्स चौथे रणनीति हासिल करते हैं। सूची पंक्तियों और संपादित संवाद उसी लेबल को साझा करें, और कुंजी को कैमो-ट्रांसलेशन-डायक्शनरी पहले भेज दिया गया - संदेश / यहां gitignored है और अगली-intl en.json से लापता एक कुंजी पर फेंकता है, इसलिए शब्दकोश के आगे इस उतरने से एक निर्माण होता है जिसका पृष्ठ दुर्घटनाग्रस्त हो जाता है। AssignedTicketOpener टिकट की खिड़की को बढ़ा देता है पल का काम यह हो जाता है सदस्य, और फिर से साइन-इन पर, जबकि वे दूर थे। दोनों पथ एक लांच ऑफ /assigned-unopened रन, इसलिए "यह पहुंचे जबकि मैं यहाँ था" और "जब मैं चला गया तो आया" दो तंत्रों के बजाय एक मामला है सहमति देने के लिए - ASSIGNED पुश कोर NATS है और केवल तभी खो जाता है जब कोई व्यक्ति नहीं हो इसलिए इसे एक संकेत के रूप में माना जाता है और सर्वर रिकॉर्ड रखता है। उपलब्धता पर या स्वीकार्य-पॉपअप के नियमों पर नहीं: यह प्रस्ताव नहीं है इसे डिकोडर्ड किया जा सकता है, काम पहले से ही सौंपा गया है। पॉपअप के लिए मौजूद है विपरीत स्थिति। NEW TICKET ऑटो-ओपन के विपरीत Add9036 में हटा दिया गया, कभी-कभी यह चिंता करने वाले एक एजेंट तक पहुंच जाता है, इसलिए यह विंडो खोल नहीं सकता है प्रत्येक स्क्रीन पर org.

तुम्हारा ब्रह्मांड इंतजार कर रहा है.
मिनटों में मुफ्त शुरू करें. जब भी आप तैयार हों तो उत्पाद जोड़ें - कोई माइग्रेशन नहीं, कोई नया लॉगइन नहीं.
हमेशा के लिए मुफ्त - कोई क्रेडिट कार्ड की आवश्यकता नहीं