أين تُحفظ البيانات
مكانين، والتقسيم بينهم مقصود: اللي يخص المشروع بيتكتب جوه المشروع عشان يتعمله 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[]مش متكرّرة في كل مشروع، فتعديل واحد بيحدّثه في كل مكان. وأوامر المجموعة على المجموعة لنفس السبب. الأوامر الخاصة بس هي اللي بتعيش على المشروع نفسه.
