سجل التغييرات
ما الجديد؟
كل تحسين للمنصة، كما هو الشحن.
· kamo-shared-library
الاستفسارات المتعلقة بالمستودعات من أجل البحث الدقيق، وقائمة الصفحات، والإيصالات
· kamo-shared-library
يضاف تاريخ LastViewed to MediaSessionMember for receipt timestamps
· kamo-shared-library
يضاف العلم المقيد لمراقبة الدخول إلى المفرزة الواحدة
· kamo-marketing
Distinguish actively-translating vs queued messages
The translation queue was already sequential, but every queued bubble rendered "Translating…". Now the single in-flight message shows "Translating…" with a pulsing dot and the rest show "Pending Translation…" with a static dot, so the visitor can see the queue progressing.
· kamo-internal
Distinguish actively-translating vs queued messages
The streaming queue was already strictly sequential (one fetch at a time), but every queued message rendered "Translating…" because they all shared the same pendingTranslation flag. Split that into two states: the single message currently in flight shows "Translating…" with a pulsing dot, all the other queued messages show "Pending Translation…" with a static dot. Live (just-arrived) messages are translated alone and start in the active state.
· kamo-marketing
Show error icon when a message fails to translate
When the per-message translate call returns translated:false, errors out, or times out, the chat bubble now renders an AlertTriangle icon in red with tooltip "Failed to translate message." instead of silently leaving the bubble in the original language.
· kamo-internal
Show error icon when a message fails to translate
When the per-message translate call returns translated:false, errors out, or times out, the chat bubble now renders a small red ErrorOutline icon in place of the translate badge with tooltip "Failed to translate message." instead of silently leaving the bubble in the original language. The flag is reset whenever the user picks a new language so a re-attempt can succeed without the stale error sticking around.
· kamo-marketing
Stream translations newest-first for visitor history
When the visitor lands on a non-English locale and the support chat has existing English messages, every bubble flagged needsTranslation by the backend now shows a "Translating…" placeholder while a streaming queue fills them in one at a time, starting from the newest message. A generation counter prevents stale queues from clobbering current state.
· kamo-internal
Stream message translations newest-first on language switch
When the user picks a new language (or opens an existing chat in a language different from the messages' source), every bubble that needs translation immediately renders a "Translating…" placeholder and the translations stream in one at a time starting from the most recent message and working backwards. This includes the user's own past messages — anything authored in a different language than the viewer is now translated. A generation counter cancels in-flight queues if the user changes language again.
· kamo-marketing
Auto-translate visitor and agent messages
Live agent replies arriving in a language other than the visitor's URL locale now show a "Translating…" bubble while the TranslateService call resolves, then swap to the translated text with a Languages badge whose tooltip shows the source language and the original message. Visitor messages are tagged with the URL locale on send so the agent's chat can translate them into the agent's profile language. Messages loaded into history are translated up front via the new ?lang=<locale> query param on /api/chat/support.
· kamo-internal
Translate chat messages into the viewer's language
Adds a "My Language" flag picker in NavTop (left of the email tool, separated by a vertical rule). Selecting a language writes back to Member.language and syncs the locale cookie so the entire UI switches; it also broadcasts an event that any open ChatBox uses to re-fetch its history in the new language. ChatBox now fetches messages with ?lang=<locale>, renders translated bubbles with a small Translate badge whose tooltip shows the original text and source language, and shows a "Translating…" placeholder for live messages until the TranslateService call returns. The send path tags every outbound message with the author's locale so other viewers can translate it on demand.
· APIService
Proxy support-message translate endpoint
Adds a passthrough route for the new MediaService endpoint that translates a single support-chat message into the visitor's URL locale. The marketing-side chat widget hits **************** which the gateway now forwards to MediaService with the standard public-chat auth and rate-limit checks.
· MediaService
On-demand translation for chat and support messages
Captures the source language for every chat / support message and adds an optional ?lang=XX param on the message-fetch endpoints plus a per-message POST /translate endpoint. MediaService now talks to TranslateService via TranslationServiceClient, and MessageTranslationService caches results in MediaObjMsgTranslation so the same translation is never paid for twice. Wires the same flow into the public-chat (visitor) path: visitors send their URL locale as sourceLanguage, and the agent / visitor sides each pull translations into their own preferred language. Adds the translate-service secret to the MediaService deployment so the new client can authenticate.
· kamo-shared-library
Translation cache for chat messages
Adds the MediaObjMsgTranslation entity (one row per (message, language) pair) and an optional sourceLanguageId column on MediaObjMsg so chat messages can be translated on demand and re-served instantly to other viewers in the same language. ChatMessageDto carries sourceLanguageId so live recipients know whether they need to translate. MediaService.createMessage gains an overload that takes the authoring language, falling back to Member.language for legacy callers.
· kamo-internal
Add Personal + Chat/Docs/Notes/KB/HRS الأبواب
الرقم القياسي/الوضع لا يظهر أي فروع لغير الألغام وأُعطيت البوابة للقسم القائم على حق مسمّى (CONFIGURE SYSTEM، MANAGE * عضو فريق منتظم مع فقط وشهدت حقوق الدعم تحديداً 3 بطاقات (المناسبات، التحليلات، الجدول الزمني) الدعم ولا شيء آخر أضف قسماً شخصياً مرئياً دائماً المساءلة عن النشاط، وخطط " بيع الأطفال " المشاهد الخاص/المشاهير/العضوية/ترتيبات بغض النظر عن الحقوق على مستوى org. يُظهر أيضاً القفص/الوثائق/المذكرات/المعرفة أقسام القاعدة/دائرة الموارد البشرية - كل بوابة على علم المميز المقابل بالإضافة إلى الإدارة المناسبة* /القرارات/الاختصاصات/الطلبات موجودة بالفعل لهذه التطبيقات.
· kamo-internal
فتح الهدف على أساس نسبة النظر
The goal frame now tilts by atan2 (viewportH, viewportW) so its open يتجه الجانب الأيمن نحو تشخيص المنظر - لـ 16:9 مراقبين نقاط الافتتاح: 29 درجة جنوب شرق؛ وبالنسبة للصور، فإنها تقترب جنوباً يقرأ الطريقة التي يلقي بها المستعملون الرؤوس من الجزء الأكبر من الشاشة إلى الزاوية العلوية. الفيزياء: تصادم الهدف يُنفذ الآن في إطار الأهداف كل شيء رُمي مركز الرئيس + السرعة يتناوب في الإطار المحلي الاصطدام على جدران المحور لا يتغير الانعكاس والسرعه يعودان للفضاء العالمي The تم التحقق من منطقة النتيجة أيضاً في السراويل المحلية الدخول إلى الافتتاح (المتفجر) لا يزال يسجل Visual: the SVG frame + entry-side glow live inside a rotation حاوية؛ مصاريف الاحتفال (GAL)/MISS) اجلس خارج التناوب لذا يبقى النص قابلاً للقراءة الآنسة شاك الآن تدور حول زاوية القاعدة بدلاً من الصفر زاوية الهدف تُحَوَّل عند إعادة تصديرها عن طريق مُقر الدولة، مع a parallel ref so the throw RAF reads the latest value each frame بدون إعادة إحياء النداء.
· kamo-internal
هدف الرمي إلى الإزالة باحتفالات الإنجاز/الجوازات
A 132 x132 إطار الهدف يظهر في أعلى العمود كلما كان الرأس في السحب منفرد أو العجلة النشطة، مقابل 56px من الزاوية حتى يمكن للرؤوس افتقد الماضي أو خلفه ثلاثة جدران صلبة (أعلى، يسار، أسفل) أسطح القفز الفائقة (0.65 رد)؛ الجانب الأيمن مفتوح الدخول حرف "إكس" أحمر جريء في اللوحة الخلفية يجعل النية "أزالة" غير قابل للاشتعال، ومؤشر دخول نقي يميز الجانب المفتوح. عندما يصل مركز الرأس الملقى إلى منطقة النتيجة، يتم إزالتها مِنْ خريطةِ رميِ، نافذة الأداةِ الأساسيةِ مُغلقةُ عبر الأداة: إبتلاع الرأس عن طريق إزالته قطر أخضر وميض، وثمانية عشر جسيمات ذهبية/إنفجار برتقالي، وجوال مزدهر! النفقات أطلق النار عندما يُلقي رأساً فقط يقفز من أي جدار هدف الهدف يهز الأحمر و جهاز الأمن القومي ضربات زائدة Stability: goal collision lives entirely inside the throw RAF cycle و(هيكس هيدجولزون) يملك كل شيء الاحتفال على الصعيد الداخلي - المحرّك يشعل الأحداث فقط. Pure ولم يطرأ أي تغيير على الملامح المضافة؛ كما أن مسارات السحب/المسارات غير القائمة.
· kamo-internal
رمي الفيزياء مع تصادمات طاولة البلياردو وطريق المذنب
يَلْعقُ a رئيس خلف عتبةِ رميِ يَبْدأُه عبر المشهدِ تحت الفيزياء الصريحة (الصدمة، قفزة الحافة، الرأس المتحرك التصادمات. قطرات بطيئة لا تزال تهبط بالضبط حيث تم إطلاقها بينما الرأس هو في الحركة مسار حريق من الطراز الأول يتبعه. الرمي يتم بواباته عن طريق كل من سرعة الإطلاق (= 650 px/sمتوسطة على آخر: 110 ms and total drag distance ()= 30 px) إعادة التأقلم لا تؤدي أبداً إلى رمية العزلة مجهزة في 3200 باكس/س للحفاظ على حافة الكشف حلقة رمي القوات المسلحة الرواندية تدفع قيمة الحركة مكتوبة مباشرة عبر قفزات التأطير أثناء طيرانها - وتوقف ذاتي عندما جميع الرؤوس تنخفض تحت عتبة السرعة (هوم كلستر) (ليون بوش كلستر) يتخطى أي مرساة في الخريطة نظام الربيع لا يقاتل مدمج الفيزياء تفرق رؤوس الخيوط من أي مجموعة، تروج إلى مجموعة منفردة، إنضموا إلى محاكاة الرمي مع الدافع الذي اندفع به الإصطدام مقطورة: طبقة SVG مع إمبراطورات ذات تردد إشعاعي على طول الآونة الأخيرة المواقع، المزيج - المورد: الشاشة من أجل التوهج المضاف، وضبابية واحدة من البرمجيات الموحدة filter for softness — arcade aesthetic, near-zero CPU cost.
· kamo-internal
OTK المستخدم المزودة بذاكرة متحركة لتحويلها إلى org جديد
Prefer the otk returned by POST /api/security/org over the follow-up /api/security/enter-as round-trip. الخادم الآن يعض المالك الطازج دورة كجزء من إنشاء المنظمة، لذا إعادة توجيه ما بعد الإنشاء إلى الجديد org / validate is deterministic -- no race with domain creation, no صمتاً، فشلاً في ترك المُبدِع في دورة الأبوين (org).
· SecurityService
مالكة صغيرة *** + توك على org
"بعد إنشاء "أورغينتيشنتر نعنّت طقوس جديدة متجهة إلى المالك الجديد فريق (ميبر) وأعيد (أوتك) إلى جانب (أيد) أو أعضاء بدون هذا المبدعين يبقون في الدورة الوالدية - الحقوق المحدودة والحقوق (أورغينتيشنتر) مُتَعَب، لذا صفحة الطفل الجديد org تظهر البوابة والخطط مخبأة حتى تعود يدوياً.
· kamo-shared-library
طلبات الشراء غير المنقّحة ذاتياً
On @PostConstruct, scan all APPROVED COMP orders and provision any that لا يوجد اشتراك في الحساب بــاء - إيجاد أو إيجاد الوسائل المأمونة أركض مراراً.
· kamo-internal
تَحْركُ حالةَ تَسْقطُ إلى الجانبِ اليسارِ قبل أعمالِي
يُعيدُ حبوبَ الحالةَ مِنْ حانةِ العملِ اليمنىِ إلى قسمِ الترحيبِ الأيسرِ، يَضِعُه بين المُذيِلِ المُحَاوَلِ وشركتي مَع a تقسيم. يزيل القاعدة الرأسية التي تم تأكيدها الآن والتي سبق أن فصلت الوضع عن أزرار الإيكون.
· kamo-internal
مضافاً إليه الأهداف المنظمة حسب أنواع المشتركين وخلق الاشتراك الأمر
· SecurityService
إضافة نقطة نهاية لتفعيل الاشتراك في المجموعة من النظام المعتمد
Rlm; المكالمات **************** تبطل استحقاقات الهدف org عن طريق استحقاق سرفي.
· kamo-shared-library
حساب الاشتراك في نظام الشراء الآلي ومنح التراخيص
- الاشتراك: إضافة الهدف (لا يُحصى من الفينول الخماسي الكلور) **************************************** - مستودع حسابي: إضافة إلى البحث في الحساب من جانب العضو الحائز - الاشتراك: إعادة عرض فواتير الحقن؛ والاشتراك في الحكم ينشئ/ملحقات لا أعرف اشتراك عضو في المنظمة المستهدفة، ومحاسبة تنفيذية؛ وموافقته على طريقة الدفع الشامل؛ ومراقب تشغيلي جديد لتقديم طلبات الشراء بأثر رجعي
· kamo-internal
يستعاض عن عبارة " النقر إلى البداية " بضوابط الازدحام والحجم
يَلْعقُ رأسَ السدَسَ الآن يَفْتحُ a فطيرة زجاجيةِ مُهذبةِ مَع الإجراءات السياقية بدلاً من فتح نافذة أدواتها على الفور. عضو "الثرثرة مفتوحة، حساب فيو، إيميل، دعوة للاجتماع" الاتصال (عندما يكون لدى كلا الجانبين تمديد مسجل للشبكة)؛ فَضحَ مفتوحَ. A Size sub-menu lets the user pick small/medium/ كبير بالنسبة لهذا الرأس المحدد (يُرسل كل عضو عن طريق الجديد) مخزن الإمتحان العضوي (UiPreference store) بالإضافة إلى منزلق عالمي النطاق يؤثر على كل الرأس السداسي على هذه الآلة (المرصودة في التخزين المحلي). نوافذ الان clamp width/height to the viewport so they never open partially off- الشاشة حتى مع النوافذ الممزقة.
· InitializerService
مضافا إليها جدول الأعمال (الدرجة 60)
توفير خدمات الدعم العامة للمخزن الواحد لكل عضو مختار لحجم الـ"هيكس-هوكس" ومستقبل كل عضو Schema mirrors the EmbRecordState convention (is active, date created, (أ) مستكمل يستخدم في مكان آخر في نموذج البيانات.
· SecurityService
Add MemberUiPreferenceController for per-member UI settings
Backs the new hex-head popover size selector and any future small per- member UI preference. Endpoints under /api/security/members/me/ui- preferences resolve the member from the OTK session and read/write JSON values keyed by an opaque prefKey string.
· kamo-shared-library
Add MemberUiPreference entity for per-member UI prefs
Generic per-member UI preference store (memberId, prefKey, JSONB value) for small persisted UI settings. First consumer is the hex-head popover size selector.
· kamo-internal
Wire FeaturesManager to platform subscription for child-org gating
كان ينادي (ماناجر) بالإرث الرميات (الهبوط الغاشم) بدلاً من قراءة الاشتراك في المنبر الحقيقي. الآن اتصل الذي يتساءل عن جذور (جورج) طلبات الاشتراك في التجارة لعضوية المتصلين عندما المُتصل لديه أمر مُحدّد على الجذر (جورج)، جميع البوابات المُميزة مفتوحة يُتوقع أن يُجمع بين الأطفال والنساء.

كونك ينتظرك
ابدأ مجانا في دقائق. أضف المنتجات كلما كنت مستعدا - لا هجرة، لا دخول جديد.
مجانا إلى الأبد - لا حاجة إلى بطاقة ائتمان