المشاريع
حيث تُنشأ المشاريع وتعيش بيانات اعتمادها: يحمل كل مشروع بيئتي Live و Test، ولكل منهما مفتاح استيعاب وسر توقيع خاصان بها. يجري التدوير مع نافذة سماح حتى يتمكن النشر من اللحاق، ولا يُعرض أي سر إلا مرة واحدة عند إنشائه.


The grid
Each row is one project: its name, its identifier chip, which environments it carries, a masked glimpse of its ingest key and when it was made. The Active and Archived tabs split the population, the search narrows by name, and New project opens a dialog that creates the project and reveals both credentials for Live and Test in the dialog itself: the ingest keys, which stay readable on the Messenger Install tab, and the signing secret, which is shown only there.
Renaming and archiving live on the row. Archiving asks for the project identifier to be typed back, because an archived project stops accepting traffic; the Archived tab restores.
Opening a project


Selecting a row opens the project: a card for the environment the console is in, carrying both credentials labelled. Deliberately not both cards at once: showing the Test key while working in Live is a mix-up waiting to happen, so the other environment's card appears by switching environment. The ingest key is what SDKs send events with; rotating it offers a grace window (immediately, one hour, a day or a week) during which the old key still ingests, so a fleet mid-deploy does not drop events. The signing secret is what the Messenger's identity verification signs with; its action reads Create until one exists and Rotate after. Either mint prints the new value exactly once, and a replaced secret says it replaced one, so an accidental rotation is visible before it bites.
ضم الزائر إلى الشخص
مفتاح واحد لكل بيئة على بطاقة المشروع: الاحتفاظ بالنشاط قبل تسجيل الدخول. عند التفعيل، يبقى نشاط الشخص قبل تسجيله الدخول مرتبطًا به بدلاً من أن يُحتسب كزائر منفصل. يبدأ مطفأً، والذي يقرأه هو عامل الحالة لا المتصفح، فمهما أرسلت المكتبة لا يقع الضم أبدًا لمشروع لم يختره. وإطفاؤه يوقف الضم التالي ولا يفكّ شيئًا سبق ضمه. أما العضو الذي لا يملك صلاحية الكتابة على المشروع فيرى المفتاح في حالته ولا يستطيع تحريكه.
نسخ الإعدادات
كل ما تضبطه في بيئة واحدة يمكن نسخه إلى أي بيئة أخرى لأي مشروع في مساحة العمل هذه، في عملية واحدة ذات أهداف متعددة. يفتح نسخ الإعدادات في صفحة المشاريع مربع الحوار فارغًا؛ أما نسخ إلى… على شريحة أو راية أو تجربة أو لوحة أو سير عمل أو اتصال فيفتحه وذلك العنصر محدد سلفًا. اختر ما تنسخه من الشجرة (النوع يأخذ كل ما تحته، والمرشّح يضيّقه)، ثم اختر الوجهة، ثم راجع هدفًا واحدًا في كل مرة: يقول كل عنصر هل سيُنشأ أم يُستبدل أم يبقى كما هو أم يحتاج شيئًا يفتقده الهدف (أضفه أو أسقط العنصر) أم أنه مرفوض، والاستبدال يعرض كل حقل يتغير قبل أن يُكتب أي شيء. أما المفاتيح (مفتاح تقديم الراية، وتشغيل سير العمل وإيقافه، وتفعيل المراسل، وحالة تشغيل التجربة، ومفتاح نشاط الشريحة) فلا تنتقل إلا إذا كان انسخ المفاتيح أيضًا مفعّلًا في المراجعة. والهدف الذي يشترط المراجعة يحوّل راياته إلى طلبات تغيير. ويُطبَّق كل هدف على حدة، فلا يعطّل رفضٌ واحد البقية أبدًا.
Where this meets the API
What the keys are for is the Keys guide. On the wire: the listing is the projectGroups query, creation and lifecycle are createProject, renameProject and archiveProject, the credentials rotate through rotateProjectKey and rotateSigningSecret, and the Identity switch reads identityLinkEnabled and writes setIdentityLinkEnabled (GraphQL reference). The ingest key authenticates event ingestion; the signing secret backs Messenger identity verification (Messaging pillar).