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