كلود يبرمج.
DevLog يتذكّر.

كل جلسة Claude Code تنتهي وتنسى: أي حل رفضناه ولماذا، أي خطأ أُصلح وكيف، وأين وقف العمل. DevLog يلتقط ذلك من ثلاثة أسطر في نهاية الرد، ويردّه لكلود قبل أن يكرّر الخطأ نفسه، ويوقفه عند اللحظات المهمة: لا إصدار وخلفه عمل مفتوح، ولا مكتبة تُثبَّت بلا فحص — في لوحة محلية على جهازك، بدون سطر تكتبه بنفسك.

Claude Code — نهاية الرد
… انتهيت من بناء شاشة تسجيل الدخول وربطها بالـAPI. -(built) شاشة تسجيل الدخول مع تحقق الحقول -(todo) إضافة "نسيت كلمة المرور" -(bug fix) #12 — فحص التوكن كان يسبق قراءة الكوكي
ثلاثة أسطر في نهاية الرد — يلتقطها DevLog بصمت وتظهر في لوحتك لحظياً
المشكلة

يعرفها كل من يعمل مع كلود يومياً

🌫️

«وش سويت الأسبوع الماضي؟»

الجلسة تنتهي والسياق يتبخر معها. تفتح المشروع بعد أيام ولا أنت ولا كلود تتذكرون أين وقفتم.

📝

المهام تعيش في المحادثة — وتموت معها

«نرجع لها لاحقاً» تُقال في جلسة، وتُنسى في التي بعدها. لا أحد يحاسب أحداً.

🚢

إصدار يطلع وخلفه شغل مفتوح

بق مكتشف لم يُصلَّح، خطوة خطة لم تكتمل — والإصدار خرج للناس لأن لا شيء اعترض طريقه.

🔁

«اقترح الحل الذي رفضناه الشهر الماضي»

كلود لم يحضر النقاش الذي حسم القرار؛ يقرأ الكود فقط — والسبب ليس في الكود.

كيف يعمل

ثلاث خطوات — كلها تحدث وحدها

لا أوامر تحفظها، لا ملفات تكتبها، وسجلّك لا يدخل مستودعك. أنت تعمل مع كلود كالمعتاد.

كلود يختم رده بتاقات قصيرة

البروتوكول يصل لكلود تلقائياً مع بداية كل جلسة، فيختم عمله بأسطر مثل -(built) و-(todo) و-(bug fix) #7.

الـHook يلتقطها بصمت

عند نهاية كل رد، يقرأ DevLog التاقات ويرسلها للسيرفر المحلي. صفر ضجيج في سياق المحادثة؛ سجلّك يعيش في مجلد بيانات DevLog الخاص، لا في مستودعك.

اللوحة تتحدّث لحظياً

افتح 127.0.0.1:7777 وشاهد كل مشاريعك: النشاط، الخطط، الإصدارات، الثغرات — تتحرك أمامك أولاً بأول عبر WebSocket.

الفرق الجوهري

ليس سجلاً يكتب ويسكت — نظام محاسبة يرفض

أدوات التتبع المعتادة تدوّن وتتفرج. DevLog يفرض الانضباط على كلود نفسه — ١٩ حارساً يرفضون بدل أن يحذّروا؛ هذه ثلاثة منها.

انضباط الإغلاق — Closure Discipline
كلود: -(built) نظام تسجيل الدخول ✓
✗ هذا العمل يطابق مهمة مفتوحة ‎#14‎
✗ الرد مرفوض — أغلقها بـ -(done) #14
حارس الإصدارات — Release Guard
$ gh release create v2.0.0
✗ الأمر اعتُرض قبل التنفيذ:
بق مفتوح ‎#9‎ + خطوتا خطة لم تكتملا
+ اختبارات المشروع لم تنجح على هذه النسخة من الكود
✓ أغلِق العناصر أولاً — أو تعمّد التجاوز بنفسك
بوابة التركيب — Install Gate
$ bun add zod
✗ اعتُرض — تثبيت أعمى بلا استشارة
المستشار: zod@3.23.8 — أحدث مستقرة ناضجة، نظيفة في OSV
✓ أعد الأمر بالنسخة المثبّتة ليمرّ

كلود أنهى عملاً يطابق مهمة مفتوحة ولم يغلقها؟ الرد يُرفض حتى يغلقها. حاول أحد إطلاق إصدار وخلفه عناصر مفتوحة أو اختبارات لم تنجح؟ الأمر يُعترض قبل أن يُنفذ. حاول كلود تثبيت مكتبة بلا استشارة؟ يُحجب الأمر ومعه النسخة الآمنة الموصى بها — أحدث مستقرة عمرها 7 أيام فأكثر ونظيفة في OSV. هكذا لا يضيع شيء — ليس لأن أحداً انتبه، بل لأن النظام لا يسمح.

المميزات

كل ما تحتاجه — في عملية واحدة على جهازك

لوحة حية لكل مشاريعك

كل مشروع يلمسه كلود يظهر تلقائياً: ما بُني، ما فُتح، ما أُغلق — بتحديث لحظي بلا refresh.

خطط قابلة للتتبع من المحادثة

خطة بمراحل وخانات اختيار، تتحدّث عبر الجلسات: كلود يقول «أنجزت الخطوة» فتنقلب ☑ في اللوحة.

فحص ثغرات حقيقي (CVE)

فحص مدمج عبر قاعدة OSV.dev — بلا مفتاح API وبلا خدمة خارجية — مع كشف التبعيات غير المباشرة.

تقادم المكتبات عبر 5 سجلات

npm وcrates.io وPyPI وGo وPackagist — يقارن نسخك بآخر إصدار رسمي ويحذرك من الأحدث من 7 أيام.

إصدار بأمر واحد — ولا يخرج إلا أخضر

يكفي -(release): يشغّل DevLog فحوص مشروعك نفسها (typecheck وlint والاختبارات) في الخلفية، ويسجّل الإصدار حين تنجح. ثم يكتب تقريره، ويرقّي رقم النسخة في manifest مشروعك، ويشغّل خطوات ما بعد الإصدار التي عرّفتها (نسخ الشجرة إلى المستودع العام ثم البناء). أي فشل يصلك في الرد التالي، والتراجع عن إصدار خاطئ ممكن.

ذاكرة جلسات لكلود نفسه

مع بداية كل جلسة يُحقن سياق مضغوط: ما أُنجز سابقاً وما زال مفتوحاً — فلا يعيد كلود اختراع ما بناه أمس.

تتبع تغييرات الملفات مع Diff

كل تعديل يجريه كلود مسجّل بفرقه الكامل — لكل ملف، لكل جلسة، قابل للمراجعة من اللوحة.

مستندات جاهزة من المحادثة

تقارير وتحليلات وخطط تُكتب كـMarkdown وتُقدَّم كـHTML منسّق — بدون أن يكتب كلود صفحة ويب بيده.

جرد ميزات بلغة العميل — وتقرير جاهز للمشاركة

كل قدرة يراها المستخدم تُسجَّل سطراً بلغة غير تقنية، ويتولّد من الجرد تقرير عميل أنيق تشاركه من اللوحة متى شئت.

استدعاء من السجل بدل إعادة الاكتشاف

كلود يسأل «هل مررنا بهذا من قبل؟» فيستلم القرارات والإصلاحات المخزنة في نفس الدور — وبقٌ جديد يشبه بقاً مغلقاً يستدعي إصلاحه القديم تلقائياً.

محاضر رجعية ودراسات عميقة

«ما الذي يتكرر انكساره؟» — محضر بكل بق وثغرة عبر التاريخ بأعمارها وملفاتها، ودراسة كاملة تُحفظ مستنداً يقيس التقدم منذ سابقتها. كل إصلاح يُغلق بسببه ومعه صنف الخلل من قائمة ثابتة (شرط، توقيت، صمت عند الفشل…) فيبان أي نوع يتكرر، وخطأ عاد بعد إصلاحه يُربط بالقديم بعلامة ⟲.

مكتبة معايير تنمو معك

قواعد تُلتقط من تصحيحاتك، وتُسحب حسب اللغة أو نوع التطبيق حين تطلبها أنت فقط — كلود لا يسحبها من نفسه، فلا تشوّش على مشروع لا تناسبه. القاعدة المكتوبة داخل مشروع تبقى فيه، وبادئة global: ترفعها لكل مشاريعك — فلا يعيد كلود الخطأ نفسه في مشروع آخر.

دوسيه الملف قبل لمسه

-(ask:why) يعطي كلود تاريخ الملف كاملاً — غرضه، القرارات التي شكّلته، كل بق مسّه وكيف انتهى — قبل أي تعديل كبير. و-(ask:map) يرتّب الملفات حسب من يعتمد عليها.

بوابة الجدار الحامل

أول ما يلمس كلود ملفاً يعتمد عليه خمسة ملفات فأكثر يُستوقف مرة: «هذا جدار حامل — هذا ما فوقه». لا تمنع الهدم؛ تمنع الهدم بلا وعي.

وش صار آخر شي؟

-(ask:recent) خلاصة الجلسات السابقة بالزمن: تاقاتها، ملفاتها، أوامرها وما فشل منها. ومع كل دفعة يُحفظ طلبك الحرفي، فـ«ليش انطلب هذا؟» له جواب من كلامك أنت.

قصة الجلسة بمنعطفاتها

بعد دفعة تغلق عناصر، همسة واحدة تطلب المنعطفات فقط: نهج فشل، اتجاه تغيّر، تأجيل متعمد — وتُختم بختم الدليل: ادعاء بلا أثر في الجلسة يوسم «بلا سند».

«ليش هالمكتبة؟»

صفحة لكل مكتبة في مشروعك: لماذا هي هنا، وصفها الرسمي، وحالتها الأمنية. تجاوز أي تحذير يُسجَّل بند أمان مفتوح — لا يُمحى.

مقارنة النماذج من سجلك

أي نموذج يفتح أخطاء أكثر، وأيهم إصلاحاته تثبت، ومن يسلّم بلا اختبار — أرقام من عملك الحقيقي، وكل تاق يحمل اسم من كتبه.

الأداة تقيس نفسها

فاعلية كل قاعدة قبل/بعد، عدّاد صدّ لكل حارس (يفرّق الساكت عن الميت)، وختم «مسنود/بلا أثر» على كل ادعاء «سويت» — بلا أي ذكاء اصطناعي مدمج.

لا شيء يُمحى

القديم يُؤرشف مضغوطاً، والتراجع يحفظ نسخة أولاً — وإن تعذّر الحفظ رُفض الحذف. صدّر أي مشروع ملفاً واحداً واستورده على جهاز آخر.

مشروعك يُعرف أينما نقلته

انقل مجلد المشروع أو غيّر اسمه ويبقى تاريخه معه. ونسخة من المجلد، أو مجلدان بنفس الاسم، يصيران مشروعين منفصلين لا يختلط سجلّهما — عبر رقم عشوائي في .devlog/project.json لا يدخل git.

الخصوصية

ليست ميزة إضافية — هي التصميم نفسه

100% محلي

كل بياناتك على جهازك. السيرفر يستمع على 127.0.0.1 فقط — لا شيء يخرج للإنترنت.

صفر تبعيات تشغيل

Bun ومكتبات Node المدمجة فقط. لا سلسلة توريد تقلق منها، ولا حزمة مجهولة تفحصها.

لا Telemetry ولا حسابات

لا تسجيل، لا تتبّع، لا سحابة. الاتصالات الخارجية الوحيدة استعلامات عن الاعتماديات — أسماء الحزم ونسخها إلى السجلات الرسمية وOSV.dev، وفحص تحديث من GitHub Releases. بيانات وصفية فقط، لا كودك ولا سجلّك؛ ولكلٍّ مفتاح إيقاف خاص.

أمان بمستوى أداة إنتاجية

دفاعات مدمجة ضد DNS rebinding وXSS وتجاوز المسارات، ومفاتيح API وكلمات المرور والتوكنات تُمسح من سجل الأوامر قبل حفظه — ومغطى بأكثر من 2500 اختبار آلي.

التثبيت

أمران داخل Claude Code — وانتهيت

/plugin marketplace add fmaaakcode/devlog
/plugin install devlog@devlog

هذا كل شيء: الـhooks والبروتوكول والسيرفر كلها داخل الإضافة، والسيرفر يعمل وحده مع أول جلسة. افتح http://127.0.0.1:7777 وشاهد لوحتك. المتطلب الوحيد: Bun على جهازك.

أسئلة متوقعة

قبل أن تسأل

هل يضيف ملفات إلى مستودعاتي أو يلوّثها؟

شبه لا شيء. التاقات تُلتقط من ردود كلود مباشرة، والسجل يُخزَّن في مجلد DevLog الخاص (~/.devlog/data) خارج مشاريعك. ما يكتبه DevLog داخل المشروع هو مجلد واحد .devlog/: ملف هوية صغير (project.json، مستثنى من git تلقائياً)، ثم الوثائق المولَّدة وصفحات الإصدارات ومرآة DEVLOG_STATUS.md عند استخدام هذه الميزات. أضفه إلى .gitignore أو ارفعه؛ لا يُمَسّ شيء آخر في شجرتك.

هل يستهلك من سياق كلود أو يبطئه؟

الحقن عند بداية الجلسة مضغوط ومشروط (يظهر فقط عند الحاجة)، والتقاط التاقات يضيف أجزاء من الثانية في نهاية الرد — ثمن زهيد مقابل إنفاذ حقيقي.

هل يحتاج اتصالاً بالإنترنت؟

ليس لعمله الأساسي — الالتقاط والداشبورد والحرّاس والاسترجاع كلها تعمل بلا اتصال. ثلاثة أشياء تتصل، وكلها قابلة للإيقاف: فحص نضارة/ثغرات الاعتماديات (السجلات الرسمية + OSV.dev، أسماء الحزم ونسخها فقط)، ومستشار المكتبات خلف -(ask:lib) وبوابة التثبيت، وفحص تحديث كل ساعة من GitHub Releases. مفاتيح الإيقاف: DEVLOG_REGISTRY_CHECK_DISABLED=1 وDEVLOG_VULN_CHECK_DISABLED=1 وDEVLOG_VERSION_CHECK_DISABLED=1.

ماذا لو احتجت إصداراً طارئاً وعندي عناصر مفتوحة؟

حارس الإصدارات قابل للتجاوز الواعي بمتغير بيئة (DEVLOG_RELEASE_GUARD=0) — القرار يبقى بيدك، لكن لا يمر شيء بالسهو أبداً.