# العمل دون اتصال والمزامنة

> كيف يحتفظ Octa Pass بنسخة محلية مشفّرة من خزنتك للاستخدام دون اتصال، ويزامن التغييرات بين الأجهزة فورًا، ويتعامل مع تعارض التعديلات بأمان.

Source: https://octap.app/ar/docs/features/offline-and-sync/
Status: in-progress
Project: Octa Pass

:::note[قيد التطوير]
تزامن معاينة خزنة الويب مع خادم المزامنة. تجلب كل شيء عند فتح القفل، ثم تستمع عبر WebSocket: يصلك خلال لحظات تغيير من جهاز آخر أو تغيير في أعضاء خزنة مشتركة. وما دام WebSocket منقطعًا تعيد الاتصال بفواصل متزايدة، وتعود علامة التبويب إلى المزامنة عند التركيز عليها وكل 30 ثانية ما دامت ظاهرة. يُرفع الاستيراد على دفعات تصل إلى 1,000 عنصر. إذا سُجّل خروج هذا الجهاز عن بُعد (**الإعدادات ← الأجهزة**) فإنه يعلم فورًا ويزيل نسخته من خزنتك. يحتفظ بالسجلات المشفّرة في هذا المتصفح، فتستطيع فتح القفل وقراءة خزنتك دون اتصال؛ أما الحفظ فيحتاج إلى اتصال حاليًا. يُحفظ التعديل المتعارض كنسخة تعارض؛ أما دمج التعديلات حقلًا حقلًا وطابور التغييرات دون اتصال فسيأتيان لاحقًا.
:::

## العمل دون اتصال أولًا

يحتفظ كل تطبيق **بنسخة محلية مشفّرة** من خزنتك (SQLite تخزّن كتلًا من النص المشفَّر). تستطيع فتح القفل والبحث وعرض العناصر وتعديلها دون اتصال. تنتظر التغييرات في طابور وتُزامَن عند عودة الاتصال.

يستخدم البحث فهرسًا مشفّرًا أثناء التخزين، ولا يُفكّ تشفيره إلا في الذاكرة وما دامت الخزنة مفتوحة.

## كيف تعمل المزامنة

- لكل خزنة رقم مراجعة يزداد مع كل تغيير.
- تسحب الأجهزة "كل ما تغيّر منذ المراجعة N" وترفع العناصر المشفّرة واحدًا واحدًا.
- يُخبر اتصال WebSocket أجهزتك الأخرى بأن خزنة تغيّرت. لا ينقل أي بيانات، بل مجرد حدوث تغيير.
- تذهب العناصر المحذوفة إلى سلة المهملات لمدة 30 يومًا. وتُحفظ علامات الحذف 90 يومًا لتلحق بها الأجهزة التي كانت دون اتصال.

تفاصيل البروتوكول: [واجهة المزامنة](https://octap.app/ar/docs/developers/sync-api/).

## التعارضات

إذا عدّل جهازان العنصر نفسه وهما دون اتصال:

1. إذا مسّت التعديلات حقولًا مختلفة، يدمجها Octa Pass.
2. إذا مسّت الحقل نفسه، تفوز نسخة الخادم، وتُحفظ نسخة جهازك **نسخةَ تعارض** في الخزنة نفسها مع شريط تنبيه لتختار.

لا يُسقط Octa Pass بياناتك بصمت أبدًا.

## سجل الإصدارات

يحتفظ كل عنصر بآخر 10 إصدارات. افتح عنصرًا واختر **سجل الإصدارات** لتراها، و**استعادة** للرجوع إلى أحدها.

- تُشفَّر الإصدارات بمفتاح العنصر نفسه، مثل العنصر. ويحتفظ بها الخادم نصًّا مشفّرًا ولا يستطيع قراءتها. وهي تُحتسب من حصة التخزين الخاصة بك.
- الاستعادة تعديل عادي، فينضم الإصدار الذي تحلّ محلّه إلى القائمة وتستطيع الرجوع مرة أخرى.
- يشمل الإصدار ما يقوله العنصر، لا ملفاته. والاستعادة تُبقي ملفات العنصر الحالية ومفاتيح المرور، وتُبقي سجل كلمات المرور ينمو، ولا تعيد أبدًا عدّاد رمز قائم على العدّاد إلى الوراء.
- قراءة السجل تحتاج إلى اتصال. والخزنات الموجودة على هذا الجهاز فقط لا تحتفظ بسجل بعد.
- نقل عنصر إلى خزنة أخرى يبدأ سجله من جديد، لأن تشفيره مرتبط بالخزنة.
