Skip to content

Latest commit

 

History

History
138 lines (92 loc) · 9.45 KB

File metadata and controls

138 lines (92 loc) · 9.45 KB

جرّبه أونلاين

فقط اضغط — بدون تثبيت أو بناء أو تسجيل.

English · Русский · Español · Français · 中文 · العربية

Claude Code Chat Viewer

الرخصة: Unlicense صفر اعتماديات وقت التشغيل يعمل دون اتصال 6 لغات للواجهة

لقطة شاشة

عارض HTML لسجلات جلسات Claude Code بصيغة JSONL. يعمل مباشرة في المتصفح — بدون خادم، بدون خطوة بناء، اعتمادية واحدة مُحزَّمة محليًا. يعمل دون اتصال فور الاستخدام.

لماذا

يكتب Claude Code كل جلسة في ~/.claude/projects/<project>/<session-uuid>.jsonl — سطر واحد لكل سجل (رسالة المستخدم، رد النموذج، thinking، tool_use، tool_result، attachment، وما شابه). الملف الخام غير قابل للقراءة؛ الأوامر المدمجة مثل /resume تعرض المحادثة لكنها لا تسمح بتصديرها أو فحصها لاحقًا.

يحوّل هذا العارض ملف .jsonl إلى تدفق قابل للقراءة مع ألوان حسب الدور، وكتل خدمية قابلة للطي (thinking / tools / results)، ومرشّحات.

ماذا يعرض

  • user (أزرق) — رسائل المستخدم الحقيقية
  • assistant (أخضر) — ردود Claude النصية
  • thinking (بنفسجي) — التفكير الموسّع، مطويّ افتراضيًا
  • tool_use (كهرماني) — استدعاءات الأدوات مع معاينة للمعاملات
  • tool_result (سماوي / أحمر للأخطاء) — ردود الأدوات
  • meta / task-note (أصفر) — حقن النظام و <task-notification> من الوكلاء الفرعيين
  • system / attachment / ui-state — سجلات خدمية (مخفية افتراضيًا)

كل كتلة تظهر كصف منفصل مع شريط ملون على اليسار. لا توجد فقاعات محادثة: هذا سجلّ، وليس دردشة.

كيفية الفتح

اختر ما يناسبك:

أ. تنزيل ملف واحد — الأسهل. خذ HTML المستقل من آخر إصدار، واضغط عليه ضغطة مزدوجة. ملف واحد، يعمل دون اتصال للأبد.

ب. نسخ المستودع — إذا أردت التعديل على الكود. تحتاج إلى index.html ومجلد lib/.

ج. استخدام العارض عبر الإنترنت — افتح https://hitmman55.github.io/claude-code-chat-viewer/. لا شيء للتنزيل.

بعد الفتح، اضغط منتقي الملفات (أو اسحب ملفًا، أو استخدم زر «جرّب مثالاً») واختر سجلّ .jsonl.

تُحفظ سجلات Claude Code في:

~/.claude/projects/<project-slug>/<session-uuid>.jsonl

حيث <project-slug> هو مجلد العمل لديك مع استبدال / بـ -. مثال: /home/user/myproj-home-user-myproj.

الميزات

طرق تحميل الملف

  • منتقي الملفات — اضغط «اختيار ملف» واختر .jsonl.
  • السحب والإفلات — أسقط الملف في أي مكان على الصفحة. حدّ متقطّع يُشير إلى المنطقة. المجلدات والسحوبات غير المتعلّقة بالملفات تُرفض بلطف.
  • جرّب مثالاً — في الحالة الأولى (عند الاستخدام عبر الإنترنت) يظهر زرّ يُحمّل demo.jsonl مضمّنًا يعرض جميع أنواع الكتل.

راحة القراءة

  • وضع القراءة — مفتاح في الرأس يُخفي كل شيء باستثناء رسائل المستخدم الفعلية وردود المساعد النصية. بدون thinking، بدون استدعاءات أدوات، بدون سجلات خدمية.
  • نسخ لكل رسالة — زرّ 📋 في رأس كل مُدخل. ينسخ النصّ إلى الحافظة مع تأكيد لمدة 1.2 ثانية. يستخدم navigator.clipboard.writeText مع احتياطي document.execCommand لسياقات file://.
  • أسماء أدوات ودية — الأدوات المعروفة تحصل على أيقونات (مثل 📖 Read file، 🖥️ Shell، 📝 Edit file). الأدوات غير المعروفة / MCP → 🔧 {raw_name}.
  • سمة تلقائية — يتبع العارض prefers-color-scheme للنظام افتراضيًا. اضغط زرّ الشمس/القمر لتثبيت الاختيار؛ الاختيار المثبّت يستمرّ عبر الجلسات.
  • ست لغات للواجهة — English، Русский، Español، Français، 中文، العربية. تنتقل العربية تلقائيًا إلى RTL. يوجد منتقي في الرأس، ويُحفظ التفضيل.

الأداء والأمان

  • تحليل متدفّق — يُقرأ .jsonl عبر file.stream() + TextDecoderStream، ولا يُحمَّل الملف كسلسلة واحدة.
  • افتراضية أصليةcontent-visibility: auto على كل سجل: يتخطى المتصفح تخطيط ورسم السجلات خارج الشاشة. يتحمّل آلاف السجلات.
  • عرض بأجزاء — 500 سجل في كل جزء، وزر «عرض المزيد» لبقية السجلات.
  • مرشّحات — خمسة مربعات اختيار (thinking / tools / results / system / ui-state)، تُبدّل الفئات عبر صنف CSS واحد على الحاوية (بدون إعادة تخطيط DOM).
  • عرض آمن من XSS — تُهرَّب كل كتلة نصية قبل تمريرها إلى محلّل markdown. يتم تحييد صور Markdown (تظهر كنص خامل، لا تُجلب أبدًا). الروابط مقتصرة على http(s) مع rel="noopener noreferrer nofollow".
  • حدود للحجم — تُقصَّ كتل النص إلى 20 كيلوبايت، والكتل الخدمية إلى 5 كيلوبايت. عمليات النسخ ترث هذه الحدود — الصفحة لا ترسل ميغابايتات إلى الحافظة ولا يمكن أن تُعطّل المتصفح.
  • احتياطي لـ .json — إذا لم يكن الملف JSONL بل مصفوفة/كائن JSON عادية، يُحلَّل كقائمة سجلات.

متطلبات المتصفح

  • Chrome / Edge 85+
  • Safari 18+
  • Firefox 125+

كل هذا ضروري لدعم content-visibility: auto. على المتصفحات الأقدم يعمل العارض، لكن التمرير على الملفات الكبيرة سيصبح أبطأ بشكل ملحوظ.

الاعتماديات

واحدة فقط، مُحزَّمة محليًا في lib/:

  • marked — markdown → HTML (~35 كيلوبايت)

بدون CDN، بدون شبكة، بدون Subresource Integrity. انسخ وشغِّل.

الخصوصية

كل شيء يعمل محليًا في متصفحك. العارض نفسه لا يُرسل أي طلبات شبكية تلقائية — لا CDN، ولا تحليلات، ولا خطوط بعيدة. يتم تحييد صور Markdown المضمّنة في السجلات: تُعرض كنص خامل مع ظهور الرابط، لكن لا يتم جلبها. الروابط الخارجية (فقط http(s)) تُفتح في علامة تبويب جديدة فقط عند النقر عليها، مع rel="noopener noreferrer nofollow". تبقى سجلاتك على جهازك.

قيود معروفة

  • الملفات التي تتجاوز حوالي 100 ميجابايت تحتاج إلى تحميل مفهرس حسب إزاحات الأسطر مع عرض نوافذ (غير مُنفَّذ).
  • لا يوجد تصدير إلى Markdown/HTML (الهدف هو العرض لا التحويل).
  • لا يوجد تلوين للصياغة في كتل الشيفرة (قرار مقصود للحفاظ على الحد الأدنى من الاعتماديات).

التطوير

كل الشيفرة في ملف HTML واحد. حرِّره مباشرة — الأنماط في <style>، والمنطق في <script>، والترجمات في كائن I18N في بداية السكربت.

فحص صياغة JS بدون متصفح:

sed -n '/^<script>$/,/^<\/script>$/p' index.html | sed '1d;$d' | node --check /dev/stdin

الرخصة

Unlicense — ملكية عامة. استخدمه كما تشاء دون الحاجة إلى إسناد.