Skip to content

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

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

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

%APPDATA%\XTop\
├── xtop-db.json      كل اللي تحت
├── notes/
│   ├── global/<slug>.md
│   └── projects/<projectId>/<slug>.md
├── meetings/<id>/meeting.json
└── 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 و orbPosition و projectView
reminders[]النص والوقت والتكرار وحالة الإنجاز
apiHistory[]آخر ٢٠٠ تشغيل للـ API، لكل مشروع
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[] مش متكرّرة في كل مشروع، فتعديل واحد بيحدّثه في كل مكان. وأوامر المجموعة على المجموعة لنفس السبب. الأوامر الخاصة بس هي اللي بتعيش على المشروع نفسه.