عن المشروع

Hunk هو عارض فروقات يعمل في الطرفية ومصمم حول مراجعة مجموعات التغييرات التي تنتجها وكلاء البرمجة. وبدلاً من طباعة رقعة عادية، يفتح واجهة مراجعة تفاعلية مبنية على OpenTUI ومكتبة Pierre diffs. المشروع مرخّص بموجب MIT ويُوزّع كملف تنفيذي مستقل لنظم macOS وLinux وWindows، مع مسارات تثبيت إضافية عبر npm وHomebrew وmise وNix. يحاكي سير العمل الأساسي أوامر Git المألوفة لكنه يعرض النتائج في واجهة مراجعة. يعرض `hunk diff` تغييرات المستودع الحالية بما في ذلك الملفات غير المتتبعة، ويراجع `hunk show` التزاماً محدداً، ويفتح `hunk log` متصفح سجل يعود إلى إخراج ثابت عند إعادة التوجيه. يعيد وضع المراقبة تحميل المراجعات المدعومة بالملفات وGit تلقائياً مع تغيّر شجرة العمل. يمكن أيضاً مقارنة الملفات والرقع الخام مباشرة، ويمكن تمرير الرقع من stdin. تشمل ميزات الواجهة الرئيسية تدفق مراجعة متعدد الملفات مع تنقل جانبي، وتخطيطات مقسّمة وموحّدة وتلقائية متجاوبة، وإبراز الصياغة، ودعم الفأرة، ومفاتيح تبديل العرض أثناء التشغيل، ووضع متوافق مع pager. ومن القدرات المميزة تعليقات AI والوكيل المضمّنة الموضوعة بجانب الكود، مدعومة بسير عمل موثّق للوكيل حيث يحمّل الوكيل ملف مهارة ويتفاعل مع جلسة Hunk حية. يكتشف Hunk تلقائياً نسخ Jujutsu وSapling بالإضافة إلى Git، ويمكن إعداده كـ pager لأنظمة التحكم في الإصدارات الثلاثة جميعها. تُحفظ التفضيلات في ملفات إعداد TOML على مستوى المستخدم أو المستودع، وتغطي السمات ووضع التخطيط واختيار نظام التحكم في الإصدارات وعرض الجدولة والتباعد والحركات وغير ذلك. كل اختصار لوحة مفاتيح هو أمر مسمّى يمكن إعادة تعيينه عبر جدول اختصارات المفاتيح. تسمح واجهة برمجة امتدادات تجريبية بتحميل امتدادات TypeScript يمكنها إضافة سير عمل CLI، والمساهمة بسمات وتعيينات لغات، وإضافة خلفيات VCS، وتحويل مجموعات التغييرات قبل المراجعة، واستبدال الشريط الجانبي بمكوّن React مخصص، والاستجابة لأحداث دورة الحياة. يمكن تثبيت الامتدادات من مستودعات Git، ويشير موضوع GitHub باسم `hunk-extension` إلى مساهمات المجتمع. كما يُنشر عارض الفروقات نفسه كمكوّن OpenTUI لتضمينه في تطبيقات أخرى. يتضمن README جدول مقارنة ميزات مع lumen وdifftastic وdelta وdiff-so-fancy وGNU diff، مشيراً إلى أن Hunk يركّز على المراجعة التفاعلية لمجموعة التغييرات الكاملة بدلاً من الفروقات البنيوية.