Skip to content

أين تُحفظ البيانات ​

في مكانين، والتقسيم بينهم مقصود: أي حاجة تخص المشروع بتتكتب جوه المشروع عشان تتعمل لها commit، وأي حاجة تخصّك إنت بتفضل في فولدر البرنامج عشان ما توصلش لأي pull request.

مجلد بيانات البرنامج ​

%APPDATA%\XTop\
├── xtop-db.json      كل اللي تحت
├── notes/
│   ├── global/<slug>.md
│   └── projects/<projectId>/<slug>.md
├── meetings/<id>/
│   ├── meeting.json
│   └── shots/<n>.png    لقطات الشاشة المتاخدة أثناءه
└── before-restore/        بياناتك، مؤرشفة قبل أي استعادة

xtop-db.json بيتكتب بطريقة مستحيل تسيبه نص مكتوب، والملف اللي يطلع تالف بيتنقل جنب باسم *.corrupt-<timestamp> بدل ما يتمسح.

الترقية من DevX أو Dev Nexus

البرنامج كان اسمه Dev Nexus وبعدين DevX، والفولدر كان بإسمه — %APPDATA%\DevX\. أول مرة تفتحه بعد الترقية بينقل الفولدر كله لوحده، ويغيّر اسم dev-nexus-db.json لـ xtop-db.json، وبيجيب معاه الملاحظات والاجتماعات وموديل Whisper المحمّل. ولو حصلت أي مشكلة بيسيب الفولدر القديم مكانه، فمفيش حاجة بتضيع. والنسخ الاحتياطية القديمة لسه بترجع عادي — اسم قاعدة البيانات القديم جواها بيتقرا في الجديد.

اللي جواه ​

المفتاحبيشيل
collections[]{ id, name, commands[], projects[] }
collections[].projects[]{ id, name, aliases[], path, env, defaultIde, figmaLink, postmanCollectionId, commands[], lastOpenedAt, startup }
globalCommands[]الأوامر المتاحة في كل مشروع، متخزّنة مرة واحدة
settingsكل اللي في الإعدادات، وكمان panelSize و projectView و islandEdge و islandAutoHide
settings.agent*اللي X Agent بيفتكره بين الدردشات: agentProvider و agentMode و agentModels و agentProjectId. مفيش مفاتيح API — مش موجودة أصلًا
reminders[]النص والوقت والتكرار وحالة الإنجاز
apiHistory[]آخر ٢٠٠ تشغيل للـ API، لكل مشروع
commandHistory[]آخر ٣٠٠ أمر اتكتبوا في الترمينال، الأحدث الأول — دي مصدر الاقتراحات. والسطر اللي بيبدأ بمسافة مابيتسجّلش
apiSecrets'<projectId>:<envName>' → { variable: value } — ما بيخرجش من المجلد ده أبدًا
prayerCache و prayerLogمواقيت اليوم، والصلوات اللي اتأكّدت
athkarعدّادات النهاردة بمفتاح period:id، بتتصفّر بالتاريخ
lastOpenedالمشروع اللي اللوحة بتميّزه أول حاجة

جوه المشروع ​

<project>/.xtop/api/
├── requests/<slug>.json
└── environments.json

طلبات الـ API المحفوظة وبيئاتها بتتحفظ في الريبو عن قصد: بتمشي مع الكود، فأي زميل يعمل clone للمشروع بياخد طلباتك معاه.

والأسرار والسجل استثناء. ملف الطلب بيكتب بس إنه بيستخدم ؛ أما التوكن نفسه فمتحفوظ في فولدر بيانات البرنامج تحت <projectId>:<envName>. وده اللي بيخلي عمل commit لفولدر .xtop/ آمن.

والملاحظات ملفات Markdown مش صفوف في قاعدة بيانات — شوف الملاحظات.

النسخ الاحتياطية ​

النسخة بتضغط حاجتين بالظبط:

xtop-db.json
notes/**

الاجتماعات مش داخلة في النسخة — حجمها أكبر بكتير من كل حاجة تانية. خُد نسخة من %APPDATA%\XTop\meetings\ بنفسك لو محتاجها.

شوف النسخ الاحتياطي والاستعادة.

تفصيلتين يستاهلوا تعرفهم ​

  • المجموعات قايمة من { id, name, projects[] }، مش كائن مفاتيحه الأسماء — عشان تقدر تغيّر اسم المجموعة وترتيبها من غير ما المفاتيح تتكتب من أول.
  • الأوامر العامة بتتحفظ مرة واحدة في globalCommands[] مش متكرّرة في كل مشروع، فتعديل واحد بيغيّره في كل مكان. وأوامر المجموعة متحفوظة على المجموعة لنفس السبب. والأوامر الخاصة بس هي اللي متحفوظة على المشروع نفسه.