v1.0.310
ميزات جديدة
- كلُّ أتمتةٍ ومشروعٍ وإجراءٍ يختار مستوى تفكيره بنفسه. كانت الأتمتةُ المجدولة والإجراءُ المحفوظ والمشروع يَرِثون مستوى التفكير الذي تصادف أن تكون عليه المحادثة — فتقريرٌ ليليّ لا يحتاج إلا مروراً خفيفاً قد يعمل بهدوءٍ على الأقصى، وتحليلٌ عميق قد يعمل على الأدنى لأنك خفّضت المحرِّر في وقتٍ سابق من اليوم. والجهدُ الذي يستحقّه عملٌ هو صفةُ العمل، لا صفةُ النافذة التي كتبت فيها آخر مرّة. وصار كلٌّ منها يحمل مستواه الخاصّ — مغلق، أو مفعّل، أو مرتفع، أو أقصى — يُختار من مفتاحٍ على بطاقته، بجوار مفتاح النمط الذي كان لها. والجديدُ يبدأ من النمط الذي تعمل به الآن، فلا يتغيّر شيءٌ حتى تقول؛ وما حفظتَه قبل هذا الإصدار لا يحمل إعداداً ويظلّ يتبع محادثتك كما كان دائماً. والمستوياتُ المعروضة هي التي يحترمها النموذج المختار فعلاً، فلا تعرض بطاقةٌ مستوى يتجاهله النموذج بصمت. انظر الأتمتات والإجراءات والمشاريع.
- الهاتف يحمل المفتاح نفسه، والقيمةُ واحدة. البطاقاتُ الثلاث على هاتفك تقرأ وتكتب الإعدادَ نفسه بعينه — فقلّبه على سطح المكتب فيُظهره الهاتف، وقلّبه على الهاتف فيُظهره سطح المكتب، لأنهما إعدادٌ واحد يُرى من موضعين لا نسختان تتناوبان.
- والطرفيّة تناله أيضاً. الأمر
wolffish procedures thinking <id> highيضبطه من سطر الأوامر، وwolffish procedures thinking <id> defaultيعيد القرار إلى محادثتك. وقائمتا الإجراءات والأتمتات تعرضان الآن عمود تفكير، فترى بنظرةٍ ما يعمل به كلٌّ منها.
v1.0.309
ميزات جديدة
- للدور المنتهي طريقةٌ حقيقية لينتهي بها. كان زمنُ التنفيذ يقول للدور المنتهي أن يُغلق بـردٍّ فارغٍ تماماً — صفرِ حرف — ولا مزوّدَ يحمل رسالةً فارغة: قناةُ المحتوى لا تكون فارغة، ولهذا يرفض التطبيقُ نفسه تخزينَها. فصار للدور الذي لم يبقَ له ما يقوله حركةٌ واحدة مشروعة: يكتب بديلاً صغيراً عن الصمت ويرسله إليك. وقد رأيتَ النتائج:
(no output)و(no content)و[Empty response]، وأحدثها[(empty — nothing further)]ملتصقةً بنهاية ردٍّ كان قد انتهى. الوصيّةُ كانت مستحيلة، والحلُّ المؤقّت هو العطل. والآن هناك أداةُclose_turnالتي مهمّتها الوحيدة إنهاءُ الدور حين يكون كلُّ شيءٍ قد قيل وسُلِّم — فقول «لا شيء بعد» صار استدعاءَ أداة، وهو ما يستطيع النموذجُ إنتاجه فعلاً، بدل رسالةٍ من صفر حرف لا يستطيعها. ويبقى الأمرُ بقيادة النموذج من أوّله إلى آخره: لا شيءَ يعيد كتابة حرفٍ كتبه النموذجُ أو يجرّده أو يكتمه. والنموذجُ ما زال يقرّر متى ينتهي الدور — صار له فقط طريقةٌ حقيقية ليقولها. انظر إنهاء الدور. - كاشفُ الصمت كفَّ عن الاحتفاظ بقائمة. كان الحارسُ الذي يلتقط الصمتَ المُتظاهَر به يعمل من قائمة عباراتٍ مكتوبةٍ باليد، وظلّ يخسر السباق:
(no output)←(no content)←[Empty response]←空空如也←[(empty — nothing further)]، وكلُّ واحدةٍ تُضاف إلى القائمة بعد أن تصل إليك. والكشفُ الآن بنيويٌّ لا معجميّ: مجموعةٌ قصيرة بين قوسين تُغلق ردّاً وتكون عن غياب المحتوى تُطلقه، سواءٌ رأى أحدٌ تلك الصيغةَ بعينها أم لا. ويلتقط أيضاً الشكلَ الذي كان خفيّاً — علامةً ملتصقةً مباشرةً بنهاية نصّ. ويعرف العباراتِ نفسها في الصينيّة، المبسّطة والتقليديّة، وهذا يهمّ لأنّ سبعةً من المزوّدين الذين يخاطبهم وولفيش مختبراتٌ صينيّة. والجُمَلُ الاعتراضيّة العاديّة تبقى محتوىً:The build ran clean (no output)وBlockers: (none)لا يُشكَّك فيهما أبداً. والحارسُ يرصد ويُخبر؛ ولا يحرّر — فيرى النموذجُ ما رأيتَه ويصحّح نفسه. - رقائقُ المجلّدات تسمّي المشروع، لا الطرف. شريطُ رقائق المجلّدات فوق نصّ المحادثة يجيب سؤالاً واحداً — أين عمل هذا الدور؟ — وقد صار يجيب سؤالاً آخر. ففي محادثةٍ بلا مجلّد عملٍ محدَّد، كانت كلُّ رقيقةٍ تُسمّى بـطرف المسار الذي لمسه الدور، فكانت المجلّدات التي عملتَ فيها فعلاً غير مرئيّة:
…/wolffish-app/.github/workflows/ci.ymlيُنتج رقيقةً تقرأworkflows. والأسوأ أنّ عملاً يمتدّ على مشروعين مبنيَّين بالطريقة نفسها كان يضع رقاقتين اسمُ كلٍّ منهماsrcعلى الشريط. والآن ينطوي كلُّ مجلّدٍ ملموس إلى مجلّد المشروع الذي يفتح شجرته —wolffish-appوwolffish-cloudوcapabilities— والعدّاتُ تُجمع عبر كلّ ما تحته. انظر مجلّدات العمل.
تحديثات
- خِتامٌ واحد للدور. دورٌ كتب جوابه الختامي، وأرسل إشعارَ الهاتف، ثمّ كتب الخبر نفسه ثانيةً كان يتركك تقرأ فقرةً مرّتين. وقاعدةُ الخِتام الواحد صارت صريحةً في التوجيه وفي وصف أداة الإشعار نفسها — الموضعُ الذي يقرأ فيه النموذج فعلاً في اللحظة التي يكسر فيها القاعدة. فالإشعارُ الذي هبط خطُّ النهاية، لا استراحة.
- عناصرُ التحكّم حول دورٍ جارٍ كفَّت عن التظاهر بالموت. زرُّ تصدير PDF كان يبقى باهتاً ما دام دورٌ أو تصديرٌ في الطريق؛ وصار لا يُرسَم حين لا يستطيع العمل، ويعود في اللحظة التي يستطيع. وسهمُ الإرسال بجوار «إيقاف» كان يقف هناك باهتاً دائماً؛ وصار يظهر مع أول حرفٍ تكتبه أو أول مرفق، فيكون ظهورُه هو الإشارةُ إلى أنّ الرسالةَ تستطيع العبور إلى الدور الجاري. ومغادرةُ مشروع لم تبقَ باهتةً ما دام دوره يعمل — فالخروج تبديلُ عرض، وعملٌ جارٍ ليس سبباً لاحتجازك فيه.
- ترويسةٌ أوضح للوحة الجانبيّة في المتصفّح. حالةُ الاتّصال صار لها سطرُها الخاصّ تحت الترويسة: علامةُ صحٍّ عند الاتّصال، ودوّارةٌ عند الاتّصال الجاري، وقابسٌ ينبض عند الانقطاع. وعنوانُ المحادثة يُقتَرّ ليُختصَر بدل أن يزحزح السطر.
v1.0.306
ميزات جديدة
- تستطيع أن تخاطب عملاً وهو يعمل. تعلّم وولفيش أخذَ رسالةٍ في منتصف الدور قبل إصدارات — لكن في محادثةٍ بدأتَها بنفسك فقط. أمّا الأتمتةُ المجدولة والإجراءُ ومهمّةُ النبض فلم تأخذ شيئاً منه، وهي بالضبط الأدوارُ التي تعمل بلا إشرافٍ دقائقَ طويلةً وأشدُّ ما تحتاج التوجيه: نصُّ ذلك المنشور خطأ، أصلحه قبل النشر. تكتب في أحدها فتُرفَض الرسالةُ رفضاً صريحاً — ترتفع فقاعتك وتنزل فوراً، ثمّ تنتظر كلماتُك، على لا شاشةٍ في العالم، حتى ينتهي الدور فترسلها النافذةُ دوراً جديداً بالكامل، متأخّرةً جداً لتُجدي. فتلك الأدوارُ لا تسير على مسار دور المحادثة، فلم يكن شيءٌ قد سجّلها قابلةً للتوجيه. والآن تستعير الصندوقَ نفسه: القبولُ نفسه، وسطرُ الانتظار نفسه، والزرُّ نفسه لاستعادة رسالة، وإعادةُ كلّ ما لم يقرأه العملُ في وقته. انظر توجيه دورٍ أثناء الطيران.
- مجموعةُ تبويباتٍ خاصّة بكلّ عمل. يعمل وولفيش في مجموعة تبويباته الزرقاء لا في تبويباتك — لكن لم تكن هناك إلا مجموعةٌ واحدة دائماً، فعملان يعملان جنباً إلى جنب، أو عملٌ يبدأ بعد آخر مباشرةً، كانا يحطّان في تبويب بعضهما ويتركان اسمَ عملٍ قائماً فوق عمل الآخر. والآن كلُّ محادثةٍ تحصل على مجموعةٍ وتبويبٍ وعنوانٍ خاصٍّ بها: فأتمتةٌ تتصفّح في الخلفيّة لا تخطف التبويبَ الذي تراقبه، ولا تعيد تسميته من تحتك. ولوحةُ المتصفّح الجانبيّة تتبع القاعدة نفسها — تعرض اسمَ المحادثة التي شغّلت الأوامر فعلاً، لا أيَّ محادثةٍ صادف أن كان عليها نافذةُ التطبيق، ومحادثةٌ سُمّيت قبل ثوانٍ تُظهر اسمَها فوراً بدل
Untitled.
تحديثات
- رسالةٌ أُرسلت في الشِّقّ الذي ينغلق فيه الدور لم تعد تختفي. كان المحرِّر يُفرَّغ لحظةَ ضغطك على Enter، فتتبدّد الرسالةُ بلا أثر. والآن تبقى على الشاشة تقول إنها تنتظر انتهاء الدور الحالي، واستعادتُها تُعيد الكلماتِ إلى المحرِّر بدل إسقاطها. ولحظةَ يقرأ دورٌ رسالتك فعلاً، تظهر في الموضع الذي قُرئت فيه — على سطح المكتب وعلى هاتفك وفي الطرفيّة — بدل انتظار إيقاع الدور في بقيّته.
- بطاقاتٌ لا تنزلق عمّا تصفه. في صفحات الأتمتات والإجراءات والمشاريع، كان سطرُ التفاصيل الرماديّ الصغير عند قدم كلّ بطاقة مثبَّتاً بأرضيّة البطاقة حتى تنتهي كلُّ بطاقةٍ في الصفّ على السطر نفسه. وما اشتراه ذلك كان العكس: بطاقةٌ بجوار جارةٍ أطول تفتح فجوةً فوق السطر، فيطفو التفصيلُ بعيداً عن الشيء الذي ينتمي إليه. وصار يجلس مباشرةً تحت محتواه.
v1.0.305
تحديثات
- الشَّظِيّة الشاردة في نهاية عملٍ منتهٍ. كان دورٌ مجدول يفعل كلّ شيءٍ صحيحاً — يبني الملفّ، وينشر المنشور، ويكتب ملاحظاته — ثمّ يُغلق بـشظيّةٍ مُلغِزة مثل
[Empty response]في موضع الخِتام النظيف. ووولفيش يرصد هذا بالفعل، لكن كلَّ دورٍ مجدول يحصل على محادثةٍ خاصّةٍ به، تُغلق لحظةَ انتهاء الدور — فكان التصحيحُ موجَّهاً إلى محادثةٍ لن تتكلّم أبداً، ويُطرح بهدوء. كان الفحصُ يلتقط كلَّ واحدةٍ منها ولا يخبر أحداً، وهذا بالضبط سببُ رؤيتك لها في الأتمتات ونادراً جداً في المحادثة. وتلك الملاحظةُ تصل وولفيش حيثما تكفّل بعدها، حاملةً سطراً يقول إنّ الزلّةَ وقعت في موضعٍ آخر، فلا يعتذر إليك أبداً عن رسالةٍ لم ترها.
v1.0.304
تحديثات
- ردٌّ من هاتفك يصل إلى المحادثة التي تركتها مفتوحة. تابِع محادثةً على هاتفك وسطحُ المكتب ما زال يحمل تلك المحادثة مفتوحة، فيصل الجوابُ في كلّ مكان إلا هنا: يقف نصُّك مع فقاعةٍ فارغةٍ تحته، أو بردٍّ توقّف في منتصف الجملة، والعلاجُ الوحيد إغلاقُ وولفيش بالكامل. فالدورُ الجاري في أيّ مكانٍ غير هذه النافذة يبثّ نفسه إلى محادثةٍ مفتوحة سلسلةَ لقطات، وسطحُ المكتب يحتفظ بآخر لقطةٍ وصلت؛ ولجوابٍ قصيرٍ كانت تلك أولَ لقطةٍ بالضبط، أُرسلت قبل كتابة كلمةٍ واحدة. والردُّ المنتهي كان يصل بعد لحظات، ويُطرَح لأنّ المحادثة تعرفه وتفترض أنها تحمله أصلاً. والمحادثةُ المفتوحة الآن تُحدِّث ما تحمله بالفعل مقابل ما حُفظ فعلاً، بدل إضافة ما لم تره قطّ — ودورٌ يجري من هاتفك يرسل لقطةً أخيرة لحظةَ ينتهي بدل التوقّف نصف ثانيةٍ قبله. والتصحيحُ نفسه يغطّي ردّاً كُتب على تيليجرام أو واتساب، أو بأتمتةٍ مجدولة، وأنت محتفظٌ بتلك المحادثة أمامك.
v1.0.303
ميزات جديدة
- وولفيش يستطيع الانتظار. حتى الآن لم تكن هناك طريقةٌ صادقة ليكون وولفيش فارغاً. بناءٌ بدأه للتوّ، أو حدُّ مُعدَّلٍ ينتظر انقضاءه، أو تصييرٌ يحتاج عشر دقائق — لم تكن الخيارات إلا
sleepفي الصدفة لا تراه ولا تقاطعه، أو استدعاءُ الأداة نفسها في حلقة، أو التسليم والقول إنه سيعود لاحقاً، وهذا يعني البدء من الصفر. والآن هناك أداةُwaitبلا سقفٍ عليها — عشرُ ثوانٍ أو أربعُ ساعات، ما يحتاجه العملُ فعلاً، يُطلب مرّةً واحدة بدل تقطيعه إلى حلقة استقصاء. وأثناء عملها تعرض المحادثةُ بطاقةً تقول لماذا هو خامل ومتى سيستيقظ، بعدّادٍ تنازليّ، وصندوقاً تكتب فيه لتوقظه فوراً. وكلُّ ما ترسله من أيّ مكانٍ يفعل ذلك — الصندوقُ نفسه، أو المحرِّر، أو هاتفك، أو تيليجرام، أو واتساب — ورسالتُك تصل كأوّل ما يقرأه، بالترتيب الذي أرسلتَه. والدورُ كلُّه ينجو من الوقفة: الملفّاتُ التي كانت مفتوحة، وما استنتجه بالفعل، وبقيّةُ خطّته. والبطاقةُ تصل إلى القرص في ثانيةٍ من بدء الانتظار، فانتظارُ ساعةٍ يعيش أطول من انهيارٍ أو إعادة تشغيل، وتظهر في الطرفيّة وعلى هاتفك وفي تصدير PDF ككلّ بطاقةٍ أخرى. وثلاثةُ أمورٍ كانت تتشابك صار لها حدود: الانتظارُ يُبقي هذا الدور، والعدّادُ التنازليّ لفعلٍ يجب أن يقع بعد إرسال الردّ، والأتمتةُ ذاتُ المرّة الواحدة لساعاتٍ أو أيّامٍ قادمة، تبدأ جديدةً من ما كُتب فيها. انظر الانتظارُ الجيّد. - وولفيش يربت على كتفك. حتى الآن لم تكن لوولفيش طريقةٌ للوصول إليك بعد أن تُشيح بنظرك. ينتهي دور، أو تظهر بطاقةُ موافقةٍ وتنتظر، وإن لم تكن النافذةُ أمامك فلا شيءَ يقول ذلك — والعملُ يجلس هناك فقط. والآن يستخدم وولفيش الإشارةَ التي يمتلكها نظامُ تشغيلك لهذا الأمر بالضبط: على macOS يقفز رمزُ الـDock، وعلى Windows يومض زرُّ شريط المهامّ، وعلى Linux تُعلَّم مدخلةُ المشغِّل عاجلةً حيث يحترم ذلك سطحُ مكتبك. ولحظتان تستحقّانها ولا شيء غيرها. انتهاءُ دورٍ خبر، فيأخذ نظرةً — قفزةً واحدة ثمّ سكون. وبطاقةٌ لا تستطيع المضيّ بدونك، موافقةٌ أو سؤال، طلبٌ لا خبر، فتظلّ تقفز حتى تعود فعلاً. ولا شيء من ذلك يقع وأنت تنظر إلى النافذة أصلاً، وتُسحَب الإشارةُ لحظةَ عودتك أو إجابتك على البطاقة، وبطاقةٌ تُركت منتظرة تحتفظ بقفزتها حتى لو انتهى دورٌ آخر وهي تنتظر. والأدوارُ الواردة من هاتفك أو من تيليجرام أو واتساب أو من أتمتةٍ مجدولة لا تفعل ذلك أبداً: لكلٍّ منها طريقتُه في الوصول إليك.
- مستندات Word تبدو مؤلَّفة. كان
.docxالمُنشأ صحيحاً وعاديّاً؛ وهذا مرورُ طباعةٍ على المحرّك كلّه. العناوين الآن ثلاثةُ أصواتٍ لا ثلاثةُ أحجام — دعوى قسمٍ تحتها خطّ، وعنوانُ تمييزٍ داخل قسم، وترويسةٌ بحروفٍ متباعدةٍ لترويسةٍ قصيرةٍ فوق قائمةٍ أو جدول. والافتراضُ زوجٌ من المحارف، Cambria فوق Calibri، لأنّ محرفاً واحداً يقوم بكلّ عملٍ هو أفلَتُ ما يبدو عليه المستند. والهوامشُ تتّسع إلى 1.25 إنش والنصُّ يقع على تباعدٍ 130% — فعند إنشٍ واحد يمتدّ سطر A4 إلى أكثر من تسعين حرفاً. والجداولُ فقدت مظهر الجداول الحسابيّة: لا خطوطَ عموديّة، ولا صفوفَ مخطَّطة، ولا تعبئات، مع ترويساتِ أعمدةٍ بحروفٍ متباعدةٍ فوق خطّ وخطوطٍ شعريّةٍ بين الصفوف، وعمودُ أرقامٍ يُحاذي نفسه يميناً، بما فيه ترويسته. والغلافُ يحمل الآن سطرَ تسميةٍ وقيمةٍ عبر خطٍّ شعريّ ولم يبقَ يطبع رقمَ صفحةٍ أو ترويسةً جاريةً على نفسه، فالغلافُ صفحةٌ لا تُعدّ، وأوّلُ صفحةٍ من المحتوى الحقيقيّ هي الصفحة 1.
v1.0.302
تحديثات
- ألوان الجداول الحسابيّة ونِسَب العروض، مصحَّحة. خليّةٌ يطلب تنسيقُ رقمها لوناً برقمه لا باسمه —
[Color 3]بدل[Red]— كانت تُدهَن من القائمة الخطأ، وكلُّ رقمٍ بعد الثامن كان يخرج بلا لونٍ إطلاقاً؛ وصار يقرأ اللوحةَ التي تعنيها Excel فعلاً. وعرضٌ تعذّر رسم شريحته الأولى كان يأخذ هيئته من تخمين، فكان عرضُ 4:3 يُحبَس في إطارٍ عريضٍ لكلّ شريحةٍ بعده؛ والنِّسَبُ الآن تأتي من أول شريحةٍ رُسمت فعلاً. - بدايةٌ أسرع. كانت مكتبةُ رمز QR تُحمَّل في كلّ بدءٍ للتطبيق، لأنّ إحدى لوحتَي الإعدادات التي ترسم رمزَ الاقتران كانت تجلبها بشغف. وصارت تُجلَب فقط حين يكون رمزٌ على الشاشة فعلاً — نحو 64 كيلوبايت خارج حزمة الإقلاع.
v1.0.301
ميزات جديدة
- العروضُ والمستندات والجداول الحسابيّة تبدو نفسها الآن. كان
.pptxأو.docxأو.xlsxفي المحادثة بطاقةَ ملفٍّ رماديّةً عليها اسم — عليك فتحُه في مكانٍ آخر لتعرف ما فيه. والثلاثةُ الآن تُرسَم كالمستند نفسه، في الموضع الذي تحطّ فيه. فالعرضُ يأتي بشريحاته الحقيقيّة، مع سهمين للتنقّل بينها. وملفُّ Word يُنسَّق صفحاتٍ حقيقيّة — هوامشُه وعناوينه وجداوله وصوره وترويساته وتذييلاته — مع رقيقةٍ تقول أيَّ صفحةٍ أنت عليها. والجدولُ الحسابيّ يصل شبكةً حفظت تنسيق الملفّ: تعبئاتُه ومحارفُه وحدودُه وتنسيقاتُ أرقامه وخلاياه المدمَجة ولوحاتُه المجمَّدة وأعراضُ أعمدته وتبويباتُ أوراقه، كلُّ ورقةٍ في اتّجاهها فلا تقلب واجهةٌ عربيّةٌ مصنَّفاً غربيّاً. انظر مستندات أوفيس في التغذية. - وولفيش يصنع عروض PowerPoint. هناك قدرةُ عرضٍ جديدة: اقرأ عرضاً، وابنِ عرضاً، وحرّره، وافحصه قبل أن ترسله. والبناءُ ليس غلافاً رقيقاً حول مكتبة شرائح — أنت تقول ما تكونه كلُّ شريحة (عنوان، فاصلُ قسم، نقاط، عمودان، بطاقات، إحصاءات، خطوات، جدول، رسمٌ بيانيّ، صورة، اقتباس، خِتام) ومحرّكُ التخطيط يملك الهندسةَ ومقياسَ المحارف واللوحة، فتخرج الشرائحُ مؤلَّفةً لا مجمَّعة. وثيماتُ الألوان هي اللوحاتُ الثماني المُختبَرة نفسها التي تستخدمها مستندات PDF، فيبدو العرضُ وتقريرُه كأنّهما من موضعٍ واحد. والعرضُ الذي ترفعه يُقرأ الآن قراءةً صحيحة أيضاً، بدل فكّ ضغطه باليد.
- مستندات Word تبقى قابلةً للتحرير. كان
.docxالمُنشأ يُنسَّق كما تُنسَّق لقطةُ شاشة — كلُّ عنوانٍ منسَّقٌ باليد، فتغييرُ المظهر يعني تغييرَ كلّ فقرة. والمستنداتُ الآن مبنيّةٌ على أنماط Word مسمّاةٍ حقيقيّة، وهي الطريقةُ التي يتوقّع Word نفسه أن يُبنى بها المستند: افتح واحداً، وغيّر نمط العنوان 1، فيتبعه المستندُ كلُّه. وهناك خطوةُ تصميمٍ تضبط المظهرَ مقدَّماً، وفحصٌ بنيويّ يلتقط ملفّاً معطوباً قبل أن تفتحه، ومرورُ تصييرٍ ونظرٍ ليرى وولفيش الصفحةَ التي ستراها. - جداول حسابيّة تُعيد الحساب فعلاً. كان مصنَّفٌ مليءٌ بالصيغ قد يعود شبكةً من الخلايا الفارغة: كُتبت الصيغُ لكن لم تُخزَّن قيمةٌ بجوارها، فيرى ما يقرأ الملفَّ دون فتح Excel لا شيء. وكلُّ كتابةِ صيغةٍ الآن تُعيد حساب المصنَّف كلَّه وتخزّن القيمةَ المحسوبة مع الصيغة — والنتيجةُ تسمّي أيَّ خليّةٍ قُيِّمت إلى خطأ (
#DIV/0!،#REF!،#VALUE!). والرسومُ البيانيّةُ الآن مخطّطات Excel أصليّة ترسمها Excel وNumbers وLibreOffice، بسبعة أنواع، بدل صورٍ ملصقة. - بضعةُ خياراتٍ، جنباً إلى جنب، جاهزةٌ للنسخ. حين يكون الجوابُ الصادق «هذه ثلاث طرقٍ لكتابة هذا»، كان وولفيش يكدّس ثلاث كتل شيفرةٍ في صفّ ويتركك تتّمرّر بينها. والآن يعرضها بطاقةً واحدةً بتبويبات: تبويباتٌ مُرقَّمة بالأحرف في الأعلى، والخيارُ المختار تحت، وزرُّ نسخٍ على كلّ واحد. والأحرفُ هي نفسها في كلّ مكان، فـ_«سآخذ الخيار ج»_ تشير إلى الشيء نفسه على كلّ شاشة. وتتبعك عبر الأسطح — البطاقةُ على سطح مكتبك وفي الطرفيّة، وعلى تيليجرام وواتساب يصل كلُّ خيارٍ رسالةً خاصّةً قابلةً للنسخ بضغطة، لأنّ التبويبات لا وجود لها هناك.
- وولفيش يستطيع بناء خادم أدوات، لا الاتّصال بواحدٍ فقط. كان وولفيش يتّصل بخوادم MCP بالفعل — الطريقةُ المعياريّة التي تمدّ بها خدمةٌ خارجيّةٌ مساعداً بالأدوات. والآن يستطيع أن يكتب واحداً. فأمرُ هيكلةٍ يضع خادماً قابلاً للتشغيل بأدواته وبيانه وملفّ README، ثمّ يتّصل به وولفيش عبر العميل نفسه الذي تستخدمه ويستدعي أدواته ليراها تعمل قبل تسليمه إليك. انظر بناء خادم.
- إشعارٌ يسمّي المحادثة التي جاء منها. محادثةٌ أرسلت خمسة إشعارات كان يمكن أن تُظهر شارةً تقرأ 2. كان الهاتف يستنتج أيَّ محادثةٍ ينتمي إليها الإشعار بقراءة رابطه — لكنّ الرابطَ هو حيث يذهب النقر، ووولفيش يتركه عمداً خارج معظم إشعارات منتصف الدور، فثلاثةٌ من الخمسة لم تكن تسمّي محادثةً أصلاً ولم يعدَّها شيء. وكلُّ إشعارٍ الآن يحمل محادثته، مختومةً من سطح المكتب لا مختارةً من النموذج، فتطابق الشارةُ قائمةَ الإشعارات. والنقرُ يذهب بالضبط حيث يشير الرابط، وسطحُ مكتبٍ أقدم مقترنٌ بهاتفٍ أحدث يتصرّف كما كان تماماً. انظر شارات عدم القراءة.
- إضافةُ المتصفّح تحصل على صفحة إعدادات. كانت مفاتيحُ الإضافة في أسفل اللوحة الجانبيّة، في طريق الشيء الذي فتحتَها من أجله. وصار لها صفحةُ إعداداتٍ خاصّة، مقسَّمةً إلى ما يُظهره وولفيش على الصفحة وما يملكه من وصولٍ إلى المتصفّح — مع جملةٍ صريحةٍ تقول لماذا يُحتاج كلٌّ منها. وحضورُه على الصفحة كبر أيضاً: التبويبُ الذي يقوده وولفيش يحمل الآن توهّجاً أزرقَ ناعماً حول حافّة النافذة.
v1.0.300
ميزات جديدة
- وولفيش يقرأ صفحة الويب كخريطةٍ لأشياء يستطيع التصرّف عليها. كانت قيادةُ الصفحة تعني التخمين: مُحدِّدُ CSS منسوخٌ من حدس، ونقرةٌ على نصٍّ مرئيّ، ولا طريقةَ لمعرفة ما إذا جرى شيء. والآن يقرأ وولفيش الصفحةَ كشجرة وصوليّتها — البنيةُ نفسها التي يستخدمها قارئُ الشاشة — فيستعيد كلَّ زرٍّ وحقلٍ ورابطٍ وترويسةٍ سطراً واحداً بـمرجعٍ خاصٍّ به:
uid=3_4 textbox "Email" required. ثمّ يتصرّف على المرجع، لا على تخمين. وخُذ الشجرةَ ثانيةً بعد نقرةٍ فتُعلَّم كلُّ جديدٍ منذ آخر مرّةٍ بنجمة، فيرى وولفيش بالضبط ما الذي فتحته نقرتُه. وكلُّ فعلٍ ينتهي الآن بما فعلته الصفحةُ فعلاً — تنقّلت، أو تغيّرت، أو لا تغييرَ مرئيّ — وهذا يحوّل أكثرَ إخفاقات الأتمتة شيوعاً، النقرَ آملاً في الموضع الخطأ نفسه ثلاث مرّات، إلى سطرٍ واحدٍ يقول أعِد التصويب. انظر إضافة المتصفّح. - نماذجُ تُرسَل فعلاً. كان تعبئةُ نموذجٍ في تطبيق ويب حديث إخفاقاً صامتاً في الانتظار: الكتابةُ في حقل React تضع النصَّ على الشاشة، ولا يسجّله الإطارُ قطّ، فينشر النموذجُ فراغاً. والآن هناك أداتان مخصّصتان — حقلٌ واحد، أو نموذجٌ كامل في استدعاءٍ واحد — تدخلان بالطريقة التي يتوقّعها الإطار، متعاملتين مع النصّ والقوائم المنسدلة بخيارها المرئيّ ومربّعات الاختيار والأزرار الدائريّة وصناديق النصّ الغنيّ بالسويّة. واستدعاءُ النموذج كاملاً يُبلِغ كم حقلاً هبط ويسمّي التي لم تهبط.
- يستطيع مراقبة الصفحة، لا لمسها فقط. مع تصحيح تصحيح أخطاء المتصفّح موصولاً، يستطيع وولفيش أن يرى ما تفعله الصفحة: كلَّ طلب شبكةٍ أجرته بحالته وحجمه وتوقيته — وترويساتَ أيٍّ منها وجسمَ ما بعدَه وردَّه الكامل — إضافةً إلى مخرجات وحدة تحكّم الصفحة مع آثار المكدّس. ويجيب أيضاً على تنبيهات الصفحة وتأكيداتِها ومطالباتِها، ويستطيع جعل تبويبٍ يتظاهر: منفذُ هاتفٍ باللمس، أو الوضعُ الداكن، أو موقعٌ (بلا فقاعة إذن)، أو Slow 3G، أو انقطاعٌ، أو معالجٌ مخنوق. واللقطاتُ نالت الرفعة نفسها: الصفحةُ القابلة للتمرير كاملةً، أو عنصرٌ واحد. والمنقّحُ الآن موصولٌ بكلّ تبويبٍ ويبقى موصولاً. إحدى عشرة أداةً جديدة في هذا الإصدار، وثلاثٌ وسبعون في المجموع.
- ترى أين يعمل وولفيش، على الصفحة نفسها. التبويبُ الذي يستخدمه وولفيش يحمل الآن قرصاً صغيراً يقرأ «وولفيش يعمل في هذا التبويب» ومؤشّراً ينزلق إلى كلّ موضعٍ قبل أن يتصرّف، محدِّداً الهدف. ولا يظهر في لقطات وولفيش نفسه أبداً، ويختفي حين يقف العمل.
- حين لا يتعاون المتصفّح، يسمّي وولفيش السبب. هناك الآن فحصُ جاهزيّة يعمل حتى بلا أيّ شيءٍ موصول: ينظر إلى خادم الإضافة ومنفذه، والمتصفّحات الموصولة، وما إذا كانت الإضافة مفقودةً أو معطَّلةً أو قديمةً أو محجوبةً بسياسة، ووصولَ الموقع، والوضعَ المتخفّي والوصولَ للملفّات المحلّيّة، وتوفّرَ المنقّح، وعلى macOS أذوناتَ تسجيل الشاشة والوصوليّة والأتمتة. وكلُّ نتيجةٍ تعود عائقاً أو حدّاً أو ملاحظة، مع خطوات إصلاحه — وحيث يستطيع وولفيش إصلاحَه بنفسه، يفعل ذلك زرُّ إصلاح ويُعيد تحقّقٌ تشغيلَ الفحص. انظر الجاهزيّة.
- داخل الصفحة، وخارج الصفحة. تقف الإضافةُ عند حدّ الصفحة، وكلُّ ما هو خارجها تماماً — منتقي الملفّات الأصليّ، أو نافذة OAuth أو مفتاح المرور، أو فقاعةُ إذنِ متصفّح، أو عارضُ PDF المدمج، أو صفحةُ إعدادات
chrome://— كان حيث تتوقّف مهمّةُ متصفّحٍ بهدوء. والآن يعرف وولفيش ذلك الحدَّ ويعبره عمداً: أدواتُ الإضافة داخل الصفحة، واستخدامُ الحاسوب للنافذة حولها، وسطرٌ في الردّ يقول إنه فعل. - الرسالةُ التي ترسلها في منتصف الدور لا تُفقد. كان في مخاطبة وولفيش أثناء عمله ثقب: الرسالةُ تعيش في الذاكرة وفي الفقاعة على شاشتك — ولا مكانَ آخر. فسطحُ مكتبٍ يغلق قبل أن يقرأها، أو هاتفٌ ينام في اللحظة الخطأ، أو دورٌ توقفه ورسالتُك ما تزال غير مقروءة، كان يمكن أن يأخذ كلماتِك معه. وكلُّ رسالةٍ في منتصف الدور تُكتب الآن إلى القرص قبل أن يُقال لك إنها قُبلت، ولا تُطلق إلا بعد أن تسكن في مكانٍ آخر بشكلٍ مؤكَّد. وكلُّ ما عدا ذلك يُعاد: يُرسَل دوراً عاديّاً، أو — حين تكون إعادةُ الإرسال إعادةَ تشغيل عملٍ أوقفتَه عمداً — يُعاد إلى المحرِّر كمسوَّدة.
- المستنداتُ تحصل على ثماني لوحاتٍ مُختبَرة وفحصِ صفحةٍ مقيس. كان كلُّ PDF منسَّق يخرج بالأزرق نفسه. والآن هناك ثمانيةُ ثيماتٍ كاملة — Steel وTeal وForest وIndigo وPlum وClaret وRust وGraphite. والإصلاحُ الأكبر تحتها: كانت صفحةٌ تطبع فقرتها الأخيرة بصمت مستقيمةً عبر تذييلها، وصفحةٌ ثلثُها فارغ تبدو مؤلَّفةً تماماً في صورةٍ مصغَّرة. والتذييلُ الآن جزءٌ حقيقيٌّ من الصفحة لا يستطيع المحتوى أن يجري تحته، ووولفيش يقيس كل ورقةٍ قبل تصييرها، مبلِّغاً كم امتلأت كلُّ صفحةٍ وهل قُطع منها شيء — فيُلتقَط الإخفاقان أرقاماً بدل أن تفوتهما العين.
v1.0.299
ميزات جديدة
- وولفيش يستطيع تشغيل تطبيقك للهاتف، وقيادته. صار وولفيش يقود محاكيات iOS ومحاكيات أندرويد وأجهزته بـمفرداتٍ واحدة: أقلِع جهازاً، وثبّت تطبيقاً وشغّله وسجلّاته موصولة، واقرأ الشاشة، والمسها، وانظر ما جرى. واللمساتُ لا تذهب أبداً إلى إحداثيٍّ مخمَّنٍ من لقطةٍ قديمة — فوولفيش يقرأ شجرة الوصوليّة للتطبيق، فيستعيد كلّ زرٍّ وحقلٍ وخليّة بمرجعٍ خاصٍّ بها، ويلمس المرجع. وكلُّ لمسةٍ تعيد برهاناً: رقعةً مقرَّبة للموضع بعينه وعليها خطّا تصويب، وحكماً موضوعيّاً على ما إذا كانت الشاشة قد تغيّرت فعلاً — و**«لم تتغيّر» تعني أعِد التصويب من نظرةٍ جديدة، لا اضغط ثانية**. والكتابةُ تدخل ضغطاتِ مفاتيح للنصّ الصريح، وعبر الحافظة للـعربية وسائر الكتابات والرموز التعبيرية، فيصل ما طلبتَه كما طلبتَه. وإلى جانب القيادة: اللقطاتُ والتكبير بالدقّة الأصليّة، وتسجيلُ الفيديو، وسجلُّ الجهاز للانهيارات ومخرجات الطباعة، ومحاكاةُ المواقع والإشعارات الدافعة ومنح الأذونات والوضع الداكن وشريط الحالة والدوران. سبعٌ وثلاثون أداةً في المجموع — iOS على macOS، وأندرويد في كلّ مكان. وأسماءُ
sim_وadb_التي شحنها الإصدار 1.0.288 ذهبت، وحلّت محلّها مجموعةُmobile_الواحدة. - ترى الجهاز وهو يُقاد. محاكٍ يتحرّك وحده أمرٌ مقلق إن لم تعرف السبب. فكلّما كان وولفيش ينظر إلى جهازٍ أو يلمسه، يقوم إطارٌ أزرق حول نافذة ذلك الجهاز بقرصٍ يقرأ «وولفيش يقود iPhone 16 Pro»، وتظهر تموّجةٌ حيث تحطّ كلّ لمسة — وخطٌّ مرسومٌ عبر الشاشة للسحب. ويتبع النافذةَ إن سحبتها أو غيّرت حجمها، والنقراتُ تنفذ من خلاله فلا يعترض طريقك أبداً، والأدواتُ التي ترى الجهاز أو تلمسه ترفض العمل حتى يكون قائماً. وينزل فعلاً أخيراً في الدور، وإن انتهى دورٌ وهو ما يزال مشتعلاً — منتهياً أو مستسلماً أو مخفقاً — أنزله التطبيق بنفسه، فالإطارُ على شاشتك يعني دائماً ما يقوله.
- بناءُ تطبيق iOS من مصدره، في استدعاءٍ واحد. وجِّه وولفيش إلى مجلّدٍ فيجد ما فيه: مساحات عمل Xcode ومشاريعه، وحزم Swift، وFlutter، وExpo، وReact Native، وGradle — وكيف يُشغَّل كلٌّ منها. ولتطبيق Xcode، استدعاءٌ واحد يبنيه ويثبّته على المحاكي ويشغّله وسجلّاته تنساب؛ وحين يخفق البناء تعود الأخطاء بالملفّ والسطر، لا بألف سطرٍ من مخرجات
xcodebuild. والمخطّطُ والمشروعُ والتهيئةُ والجهاز تُضبَط مرّةً للمحادثة ثمّ تُترَك خارج كلّ استدعاءٍ بعدها. وأيّاً كان الإطار، تُغلَق الحلقةُ بالطريقة نفسها: شغّل التطبيق، ثمّ اقرأه والمسه على الجهاز بدل التخمين من الشيفرة.
تحديثات
- استدعاءُ واجهةٍ صامت لم يعد يعلّق دورك. يستطيع مزوّدُ نموذجٍ أن يقبل الطلب ثمّ لا يقول شيئاً البتّة — فاستدعاءٌ قيس هنا جلس صامتاً عشر دقائق ثمّ أعاد رمزاً واحداً، وآخرُ أربعَ دقائق ولم يُعِد شيئاً — وكان الدور يعلّق ببساطة، لأنّ الاتّصال المفتوح الذي لا يتكلّم يبدو تماماً كالذي يفكّر. وصار وولفيش يترصّد ذلك: خمس دقائق بلا أيّ استجابة فيُسقَط الطلب، وينتهي الدور، وتنال بطاقةً تقول ذلك. ولا تُعاد المحاولة تلقائياً أبداً، لأنّ خمس دقائق من الصمت قرارُك أنت — فتعرض البطاقة زرّ متابعة، يواصل من حيث توقّفت الأمور بالضبط. ولا يضيع شيء: فالملفّات المكتوبة ونتائجُ الأدوات والخطّةُ حتى تلك اللحظة كلُّها قائمة، والملاحظةُ التي تستأنف المحادثة تظهر سطراً هادئاً في الخيط، لا شيئاً قلتَه أنت. والنماذج المحلّية مستثناة — فالجهازُ البطيء وهو يفكّر في طلبٍ طويل صامتٌ حقّاً.
- استخدام الحاسوب يحتفظ بجلسته، ويكفّ عن إعادة ما لا يستطيع إصلاحه. كانت جلسةُ مشغّل الشاشة تنتهي بعد خمس دقائق من الخمول، وكان استدعاءُ واجهةٍ صامتٌ واحد يكفي لتجاوز ذلك الحدّ — وبعده يرفض كلُّ إجراء شاشةٍ بقيّةَ الدور. وصارت الجلسة تبقى حيّةً ما دام المؤشّر قائماً، وإن انقضت أعاد الإجراءُ التالي الاتّصالَ وكرّر نفسَه دون أن ترى إخفاقاً. وحالاتُ الرفض التي لا تتغيّر بمحاولةٍ أخرى — نقطةٌ خارج الصورة الحاليّة، أو اسمُ مفتاحٍ لا يعرفه المشغّل، أو إجراءٌ قبل إشعال المؤشّر — صارت تعود فوراً ومعها العلاج، بدل إحراق ثلاث محاولاتٍ متطابقة. وأسماءُ المفاتيح مثل period وcomma وslash مفهومةٌ الآن، والنصُّ الطويل يُكتَب في استدعاءٍ واحد، مع الإبلاغ بعدد المحارف، فالفقرةُ التي وصلت ناقصةً ظاهرةٌ لا صامتة.
v1.0.298
ميزات جديدة
- استخدام الحاسوب يكفّ عن أخذ فأرتك. كانت قيادةُ الشاشة تعني التنازل عنها: فكلُّ نقرةٍ تحرّك مؤشّرك أنت، وكلُّ ضغطة مفتاحٍ تذهب إلى ما عليه التركيز، ودفعةٌ للفأرة في منتصف الإجراء ترسل النقرة إلى مكانٍ آخر. وصار استخدام الحاسوب يسلّم النقرات والكتابة والاختصارات والتمرير والسحب مباشرةً إلى النافذة الهدف في الخلفية — فمؤشّرك لا يتحرّك، والنافذة لا تُرفَع، وتبقى تعمل إلى جانبها. وحين يعجز تطبيقٌ حقّاً عن تلقّي إدخال الخلفية، ينزل وولفيش درجةً واحدة عن قصد — تسليمٌ وجيزٌ في المقدّمة مع إعادة المؤشّر — ويقول ذلك في الناتج، بدل أن يخفق بصمت. وتحت ذلك مشغّلٌ أصليّ لأنظمة التشغيل الثلاثة (macOS وويندوز ولينكس X11، وWayland حيث يسمح المؤلِّف)، متحقَّقاً منه حيّاً على macOS وعلى ويندوز 11 أمام نافذةٍ حقيقيّة بحقيقةٍ أرضيّةٍ دقيقةِ البكسل. واحتاج ويندوز ثلاث قواعد خاصّة به، تعلّمتها كلُّها تلك التشغيلة: نوافذُ الصدفة المخفيّة التي يبقيها ويندوز (قائمة ابدأ، والبحث، وإعداداتٌ مغلقة) لا تُعامَل أهدافاً أبداً؛ والنقراتُ اليمنى والوسطى، والكتابةُ في المتصفّحات وتطبيقات Electron، تستعمل التسليم الوجيز في المقدّمة لأنّ تلك التطبيقات تُسقط الإدخال المُرسَل؛ وكلّما اضطرّ وولفيش إلى استعارة المؤشّر أعاده إلى حيث كان.
- مؤشّرٌ ظلّيّ يُري أين يعمل وولفيش. صار التوهّج الأزرق وتنبيهُ الالتقاط يسافران مع مؤشّرٍ ظلّيّ: سهمٌ ينزلق إلى النقطة بعينها قبل كلّ إجراء، وينبض عند الضغط، ويركن هناك بعده، بعلامةٍ صغيرة تسمّي الهدف. فترى دائماً أين وولفيش على وشك أن يعمل — ولأنّه رسمٌ على طبقة المؤشّر، فهو لا يمسّ مؤشّرك الحقيقيّ أبداً ولا يظهر في لقطات وولفيش نفسِه. وتعلّم المؤشّر أن يبقى صادقاً تحت الضغط كذلك: فإن أسقط النظامُ نافذته (شاشةٌ فُصلت، أو إسبات)، أعاده الإجراءُ التالي إلى شاشةٍ موجودة، فـ**«مشتعل» تعني مشتعلاً على مرأى دائماً**.
- طريقٌ ثانٍ إلى إيجاد الأشياء: بالاسم. إلى جانب البكسلات، صار وولفيش يستطيع قراءة شجرة الوصوليّة للتطبيق — البنيةَ نفسَها التي يقرؤها قارئُ الشاشة — ليجد زرّاً أو حقلاً أو مربّع اختيارٍ أو عنصر قائمةٍ باسمه، وينقره بمرجعه، ويقرأ قيمة حقلٍ حاليّة، ويكتب قيمةً مباشرةً مع قراءةٍ راجعة، ويستدعي مساراتِ قوائم مثل File › Save As… دون أن يصوّب إلى عناصر ضئيلة. وكلُّ نقرةٍ بالبكسلات تبلّغ كذلك عن العنصر الذي يقول التطبيق إنّه تحت النقطة، فيُمسَك التصويبُ الخاطئ باستعلامٍ واحد لا بالعين. والتطبيقاتُ الأصليّة تعرض أشجاراً غنيّة؛ أمّا محتوى الويب في المتصفّحات فلا يعرض عادةً إلّا إطار النافذة، والناتج يقول ذلك بصراحة.
- دليلٌ على كلّ إجراء. صار كلُّ إجراء شاشةٍ يعيد سطرَ دليلٍ واحداً: كيف سُلّم، وحكمُ المشغّل على وقوع الأثر، ومقارنةٌ موضوعيّة للشاشة قبل وبعد، والعنصرُ تحت النقطة، و — في التسليم النادر في المقدّمة — هل تحرّكت فأرتك في أثنائه، فإن تحرّكت رفض وولفيش إعادةَ أيّ شيءٍ له أثرٌ جانبيّ. وذلك الدليل، مع ما قال النموذج إنّه يتوقّعه، يُحمَل إلى الخطوة التالية فـيتحقّق النموذج قبل أن يخطّط. وأداةُ انتظارٍ جديدة تحلّ محلّ المهل المخمَّنة: انتظر حتى تستقرّ الشاشة، أو حتى تظهر نافذةٌ بعنوانٍ معيّن، أو حتى يظهر عنصرٌ أو يختفي.
- الأذونات، تُطلَب مقدّماً. فحصُ أذوناتٍ جديد يقول لوولفيش — ولك — ما الذي يسمح به هذا الجهاز بالضبط قبل أن تبدأ الجلسة: الوصوليّةُ وتسجيلُ الشاشة على macOS مع لوحة الإعدادات التي تُفتَح، ونوعُ الجلسة والمؤلِّفُ على لينكس، وحدودُ الترقية على ويندوز، وهل حُمِّل مشغّل الخلفية. وإشعالُ المؤشّر يجري الفحصَ نفسه، فـيُسمّى الإذنُ الناقص عند الخطوة الأولى ومعه علاجُه، لا يُكتشَف خطأً مبهماً في منتصف الطريق. وصفحةُ إعدادات Computer Use تعرض زرّ فتح إعدادات النظام بجوار أيّ إذنٍ ناقص، ولا شيء بجوار الحاضر.
- طرقٌ أكثر للفعل، كلُّها للنموذج يختار منها. نمت العُدّة من اثنتي عشرة أداةً إلى إحدى وثلاثين: سردُ النوافذ والتقاطُ كلّ نافذةٍ على حدة (حتى وهي مغطّاة)، والنقراتُ الثلاثية والنقرُ مع مفاتيح التعديل، وإمساكُ أزرار الفأرة والمفاتيح، والتمريرُ فوق العناصر للتلميحات، والكتابةُ مع الاستبدال وضغط Enter في خطوةٍ واحدة، والتمريرُ بالصفحات، وقراءةُ الحافظة والكتابةُ فيها، ودفعاتٌ تشغّل تسلسلاً واثقاً في استدعاءٍ واحد وتتوقّف عند أوّل إخفاق. وبطاقةُ الموافقة تسمّي التطبيق والنافذة التي يذهب إليها الإجراء، و**«اسمح في هذه المحادثة» صار يسمح لذلك التطبيق** لا لاسم أداةٍ واحدة.
- الرسائل في أثناء الدور على الهاتف (الهاتف 1.0.59). الرسالةُ المكتوبة والوكيلُ في وسط عمله صارت تذهب إلى العمل الجاري أصلاً بدل أن تنتظر دورها، فتبلغ الوكيل عند خطوته التالية. وتنضمّ إلى المحادثة فقّاعةً خاصّةً بك تحتها سطرٌ هادئ يقول إنّها تُقرَأ عند الخطوة التالية، وحين يقرؤها الوكيل تنتقل تلك الفقّاعة إلى داخل الردّ، عند النقطة التي أُخذت فيها بالضبط. ونقرةٌ واحدة تستردّها قبل أن تُقرَأ، وتعود الكلماتُ إلى حقل الإدخال. والردُّ يواصل انسيابه، والبطاقاتُ تبقى مكانها، والإيقاف ما زال يوقف، وهي تحمل صورةً أو ملفّاً أو رسالةً صوتية كأيّ رسالةٍ عادية — وفي الوضع التجريبيّ كذلك.
تحديثات
- التخطيط ينتقل إلى حقل الإدخال (الهاتف 1.0.59). غادر موقفُ التخطيط ورقةَ أدوات التحكّم إلى صفّ حقل الإدخال نفسِه، بجوار شريحة النموذج — حيث يضعه سطح المكتب، وحيث تُكتَب فعلاً الرسالةُ التي يصوغها. وهو مفتاحٌ هناك، لا لافتةٌ فحسب: نقرةٌ تشعل التخطيط، وأخرى تطفئه، والشريحةُ تقول أيَّ وضعٍ هي فيه دون أن تفتح شيئاً. وهو قائمٌ في الوضع التجريبيّ كذلك. وحين يكون سطح مكتبك بعيد المنال تبقى الشريحة مكانها وتخفت، والنقرةُ تقول لك السبب بدل أن تضبط موقفاً لن يتلقّاه أحد.
v1.0.297
تحديثات
- الملاحظةُ بين قوسين رسالةٌ أيضاً. عاد التوقيعُ الختاميّ بين القوسين في صورةٍ أشدّ إقناعاً بكثير. فالدور الذي لم يبقَ له ما يقوله كان يُغلق بـجملةٍ مُعلَّلةٍ بين قوسين — بأنّ الخلاصة أعلاه هي الردّ، وبأنّ الإشعار إلى هاتفك في طريقه أصلاً — ولأنّ الملاحظة كانت دقيقةً تماماً، لم تستطع القواعدُ كما كُتبت أن تبلغها. كانت تحظر «النائب عن الصمت» دون أن تنكر قطّ المقدّمةَ تحته، أنّ القوسين قناةٌ جانبيّة، فشعر نموذجٌ قادرٌ على المحاجّة أنّه مأذونٌ له بكتابة واحدة. وما وصلك شظيّةٌ مبهمة في آخر محادثتك، تشرح شيئاً لم تحتج قطّ إلى شرحه. وصارت التعليمات تسمّي ما وُجد القوسان له حقّاً — استطرادٌ حقيقيّ داخل جملةٍ يقولها وولفيش فعلاً، أو توضيحٌ، أو تحفّظٌ، أو مثالٌ مشروح — وعندها فقط تُغلق القناة: فالملاحظةُ بين قوسين عن مخرجاته هو ما زالت رسالةً إليك، ومهما أحسن المحاجّة عنها، فكتابتُها هي بعينها الإخفاقُ الذي تصفه. والتصحيحُ نفسه يجري في كلّ موضعٍ يتكلّم فيه التطبيق عن هذا — القاعدةُ الدائمة، والتنبيهُ حين ينتهي دورٌ على لا شيء، والاستطراداتُ عن مؤشّر الشاشة وقائمة المهامّ، والإشعاراتُ الثلاثة اللاحقة كلُّها — فلم تبقَ صياغةٌ في أيّ مكان ما زالت تعامل القوسين مخرجاً. ولم يُشدَّد شيءٌ في جانب الكشف، وعن قصد: فإمساكُ الصنف البليغ بالأنماط يعني وسمَ الأقواس العاديّة في الجمل العاديّة. فيبقى وولفيش يكتب بطبيعته، والدورُ المنتهي ينتهي ببساطة.
v1.0.296
ميزات جديدة
- تستطيع مراسلة وولفيش وهو يعمل. كانت الرسالة المكتوبة في دورٍ جارٍ تنتظر في طابور: ينهي وولفيش ما هو فيه — المجلّد الخطأ، والملفّ الخطأ، والالتفافةَ الطويلة كلّها — ثم يقرأ عندئذٍ السطرَ الذي كان سيوقفه، فيصل التوجيهُ بعد أن لم يبقَ ما يُوجَّه. وصارت الرسالةُ المرسَلة في أثناء المهمّة تُسلَّم إلى العمل الطائر. فيقرؤها الوكيل عند خطوته التالية — لحظةَ انتهاء دفعة استدعاءات الأدوات التي يشغّلها، قبل أن يختار التالية — وتحطّ في المحادثة رسالةً حقيقيةً منك، عند النقطة التي قُرئت فيها بالضبط. فصارت «تخطَّ مجلّد الاختبارات» و**«استعمل الملفّ الآخر»** و**«يكفي، لخّص ما عندك»** تفعل ما تقوله والتشغيلة ما زالت جارية: يُقرّ وولفيش بالتغيير في سطر، ويُعدّل، ولا يعيد أبداً العملَ الذي لم تمسّه رسالتُك. وليس هذا دوراً ثانياً يسابق الأوّل — بل تشغيلةٌ واحدة، تُوجَّه من الخارج.
- معلَّقة حتى تُقرَأ، ولك أن تستردّها. تجلس رسالتك في آخر الخيط فقّاعةً خاصّةً بها بعلامة «تُقرَأ عند الخطوة التالية»، ومعها علامةُ × تستردّها — إلى حقل الإدخال مسوّدةً، فلا تكلّف رسالةٌ أُرسلت قبل أوانها شيئاً. وحين يقرؤها الوكيل تذهب الـ×، لأنّ الرسالة المسلَّمة جزءٌ من المحادثة لا سبيل إلى سحبها. وهي تعمل في كلّ مكانٍ يعمل فيه وولفيش: التطبيق، والطرفية (اكتب وهو يعمل؛ و
escيستردّ الأخيرة)، وهاتفك، وتيليجرام وواتساب — والرسائل الصوتية محسوبة، تُفرَّغ نصّاً قبل أن تُسلَّم. والرسالة التي تصل بينما يكتب وولفيش جوابه الأخير تُبقي الدور حيّاً فيجيبك في التشغيلة نفسها بدل أن ينتهي ويبدأ من جديد. وأوقِف الدور فتُعاد إليك الرسالة غير المقروءة بدل أن تُطبَّق صامتةً على ما يأتي بعده.
تحديثات
- الردّ ينتهي عند آخر كلمةٍ حقيقيةٍ فيه. كانت بعض الأدوار ما تزال تُغلق بـملاحظةٍ بين قوسين حيث ينبغي الصمت —
(no content)شاردةٌ مدبوسةٌ تحت جوابٍ منتهٍ، أو مُرسَلةٌ وحدها رسالةً قائمةً بذاتها. ولم تُمسك بها جولتا إصلاحٍ في التعليمات، لأنّ التعليمات لم تكن المصدر: فكلّما أنهى وولفيش دوراً بلا شيء، كان التطبيق يكتب نائباً بين قوسين في فم وولفيش نفسِه — سطراً بصوته، في تاريخه، قبل رسالةٍ واحدةٍ من مطالبته بالردّ — وكانت التسرّبات على هيئة ذلك السطر بعينها. وقد زال النائب من المواضع الثلاثة التي استعملته، فلم يعد النمط يُعرَض على النموذج أصلاً. والنائبُ الذي يُكتَب رغم ذلك يُلاحَظ ويُبلَّغ به كما كان يُفعَل مع رمز تحكّمٍ شاردٍ أو نقطةٍ وحيدة، بحروفه منقولةً، فيرى وولفيش ما وصلك. والصمت يُكتَب لا شيئاً. wolffishيعمل في طرفيةٍ جديدة، بلا شيءٍ تلصقه. كان تثبيت عميل الطرفية يكتب الأمر في مجلّدٍ لا تنظر إليه أيّ صدفة، ويترك لك الخطوة الأخيرة: إضافةَ سطرٍ إلى ملفّ صدفتك، بيدك، على كلّ جهاز. وصار التطبيق يضع المجلّد على PATH بنفسه — كتلةٌ معلَّمة في ملفّات الصدفة على macOS ولينكس، وPATH المستخدم على ويندوز — تُفحَص عند كلّ إقلاع، وتُنزَع نظيفةً عند إلغاء التثبيت، ولا تمسّ سطراً كتبتَه أنت. وصارت الإعدادات وwolffish pathوشاشات الحالة تقول «افتح طرفيةً جديدة» بدل أن تسلّمك شيئاً تنسخه، ولا تُظهر السطر اليدويّ إلّا إن عجز التطبيق. وأُصلح كذلك العثور على الأمر في ويندوز: صار يُطابَق مهما كانت حالة أحرف اسمه على القرص.
v1.0.295
ميزات جديدة
- الطرفية صارت شاشةً حقيقية. كان
wolffishفي الطرفية سطراً في كلّ مرّة: تكتب، وتنتظر، وتقرأ، وترجو أن تكون استدعاءات الأدوات التي لا تراها ماضيةً إلى مكانٍ ما. وصار الآن عميلَ طرفيةٍ ملءَ الشاشة، ندّاً للتطبيق الذي ينتمي إليه. تنساب المحادثة في خيطٍ متمرِّرٍ بالبطاقات نفسها التي يرسمها التطبيق — استدعاءات الأدوات بمخرجاتها، وتعديلات الملفات فروقاً، والملفات المسلَّمة، وقوائم المهامّ، وكشوف سير العمل، ومهامّ الخلفية، والعدّادات التنازلية — والمطالبةُ في الأسفل محرِّرٌ حقيقيّ: Shift+Enter يضيف سطراً، واللصقةُ الطويلة تُطوى في نائبٍ مختصر، و**@path** يكمل المسار ويرفق الملفّ، و**/** يكمل كلّ أمر. وتحت المطالبة يقوم ما تعرضه نافذةُ محادثةٍ مجّاناً ولم تعرضه طرفيةٌ قطّ: الوضع والنموذج وجهد التفكير ووضع التخطيط والمشروع في سطرٍ واحد، وبينما يعمل الدور، ما الذي يفعله الوكيل الآن، ومنذ متى وهو عليه، وكم استُهلك من نافذة السياق، وكم كلّف — مقياسُ السياق الخاصّ بالتطبيق، مصنوعاً لطرفية. وتصل الموافقات والأسئلة بطاقاتٍ تجيب عنها بلوحة المفاتيح (اسمح مرّة، اسمح دائماً، ارفض؛ واختر خياراً برقمه)، والمطالبةُ المكتوبة في أثناء الدور تصطفّ بدل أن تُرفَض، وescمرّتين يقاطع، وإن أُعيد تشغيل التطبيق من تحتك أعاد العميلُ الاتصالَ من تلقائه والتقط المحادثة من حيث كانت. - كلُّ ما يفعله التطبيق، من صندوقٍ بلا شاشة.
ctrl+pيفتح لوحة أوامر تسرد كلّ أمرٍ بمفتاحه؛ و**ctrl+x l** يبدّل المحادثات من قائمةٍ ببحثٍ ضبابيّ فيها إعادةُ تسميةٍ وحذف؛ و**ctrl+x m** يبدّل النموذج ثمّ جهد التفكير؛ ووضع التخطيط ووضع المحادثة والمشروع المربوط بالمحادثة لكلٍّ منها مفتاحٌ وأمرُ شرطةٍ مائلة. وتُفتَح الإعدادات متصفّحَ صفحة ← بطاقة ← صفّ الخاصّ بالتطبيق نفسه — كلّ مفتاحٍ ورقمٍ وخيارٍ وسرٍّ يُحرَّر في مكانه، وكلّ إجراءٍ في التطبيق (اقتران هاتف، اختبار مفتاح، إضافة خادم MCP، تثبيت محرّك) يُشغَّل من القائمة نفسها، والبحثُ يبلغ كلّ الصفوف دفعةً واحدة. ويعرض الاستهلاك المجاميع والمزوّدين والنماذج نفسها التي تعرضها لوحة التطبيق مع منتقي مدًى وشريطٍ يوميّ؛ وتعرض الحالة العفريتَ والدماغَ والتشغيل التلقائيّ وPATH والقنوات. وللمشاريع والإجراءات والأتمتة (بما يعمل وما ينتظر) والملفات المسلَّمة والموافقات المركونة ومهامّ الخلفية وسجلّ العفريت حوارٌ خاصّ بكلٍّ منها. وكلُّ ما كان يقبل راية--jsonما زال يقبلها، وwolffish -p "…"مع أنبوبٍ ما زال يطبع نصّاً صرفاً ثم يخرج — النصوص البرمجية لا تتغيّر. - ملفّات HTML تعمل حيّةً في المحادثة. كان ملفّ HTML في المحادثة — لعبةٌ بناها الوكيل للتوّ، أو تقريرٌ، أو صفحة — يُصيَّر صورةً ساكنةً لترميزه: فسياسةُ أمان التطبيق نفسها كانت تحجب كلّ سكربتٍ داخليّ بصمت، فيظهر كلُّ تفاعليٍّ لوحةً بيضاء. وصارت البطاقة تستضيف الصفحة في تبويب متصفّحٍ حقيقيٍّ خاصٍّ بها: تعمل السكربتات، ويرسم الـcanvas، وتعمل المفاتيح والصوت، ويبقى
localStorageبين الفتحات، وتُحلّ الأصول النسبيّة وتحميلات الـCDN كما تُحلّ في Chrome. والبطاقة تُصغّر الصفحة العريضة لتناسب؛ والعرضُ الموسَّع يريها بحجمها الكامل، مع إعادة التحميل للبدء من جديد وأدوات المطوّر للنظر في الداخل. وكلُّ ضيفٍ مُحصَّنٌ من التطبيق — لا وصول إلى سياق التطبيق، والنوافذ المنبثقة والروابط الخارجة تذهب إلى متصفّح نظامك — والملفّ الأكبر من أن يُعرَض مصدراً يبقى له معاينةٌ حيّة.
تحديثات
- مبنيٌّ في التطبيق، يُحدَّث معه. صار عميل الطرفية برنامجاً مترجَماً قائماً بذاته، يُشحن داخل التطبيق ويشير إليه أمرُ
wolffishنفسه كما كان — لا شيء يُثبَّت، ولا شيء يُتابَع تحديثه، وتحديثُ التطبيق يستبدله في الخطوة نفسها. وعلى ويندوز هو برنامج كونسول بمعنى الكلمة، فذهب المشغِّل الإضافيّ الذي كان يحتاجه العميل القديم. وتفضيلات الطرفية الصغيرة — سمتها، وتاريخ مطالباتها، ونماذجها الأخيرة — تسكن مع بيانات التطبيق، فالجهاز الذي تبلغه عبر SSH يتذكّرها هو أيضاً.
v1.0.294
ميزات جديدة
- إعادة التشغيل تُسلَّح، لا تُنفَّذ. كان طلبُ إعادة التشغيل أو الإطفاء أو الخروج من الحساب يسلّم المهمّة إلى مؤقّتٍ خفيّ: يجدول الوكيلُ الأمرَ بعد عشرين ثانية في صدفةٍ منفصلة ويمضي، بلا سبيلٍ إلى إلغائه على ماك أو لينكس، والعجزُ عن بدء ذلك المؤقّت أصلاً يُبلَّغ عنه إليك نجاحاً. وقد أُعيد بناء ذلك كلّه حول قاعدةٍ واحدة: لا يعمل داخل الدور شيءٌ يقطع ردّ الوكيل نفسه. فإجراء الطاقة يُسلَّح لا يُنفَّذ — ينهي الوكيل جوابه، وتُحفَظ المحادثة، وعندها فقط تظهر بطاقة عدٍّ تنازليّ في المحادثة باسم الإجراء، وشريطٍ ينضب في عشر ثوانٍ، وزرّ إحباط. فإذا فرغ الشريط نُفّذ الأمر؛ وإن ضغطت إحباط لم يُنفَّذ أبداً. والبطاقة جزءٌ حقيقيّ من المحادثة، فتظهر على هاتفك بزرّ الإحباط نفسه، والمحادثة التي تُفتَح لاحقاً تُري بالضبط ما جرى — نُفّذ، أو أحبطتَه، أو أُسقط لأنّ الدور أُوقف قبل أن يهبط ردّه. وعلى قناة محادثة يُحبطه
/cancel. ولا يبقى شيءٌ معلّقاً عبر إعادة التشغيل: فالعدّ الذي سقط التطبيق وهو جارٍ يُسجَّل مُسقَطاً، ولا يُترَك عادّاً أبداً. ويبقى منفذُ الطوارئ للحالة الوحيدة التي وُجد لها — مستخدمٌ يقول «أعد التشغيل الآن» ويقبل خسارة ذيل الدور. - أيّ إجراءٍ يقبل العدّ نفسه. إعادةُ التشغيل أوّلُ مستعملٍ لآليّةٍ عامّة، وللوكيل منها أداةٌ خاصّة. فـ**
countdown_start** تسلّح أيّ استدعاء أداةٍ ليعمل بعد ثوانٍ من انتهاء الردّ، على البطاقة نفسها وبالإحباط نفسه — إنهاءُ التطبيق، أو تنظيفٌ لا رجعة فيه، وأيّ شيءٍ تودّ أن تنال فرصةً أخيرةً لإيقافه. والإجراء المسلَّح يُفحَص بـقواعد الأمان نفسها التي تحكم استدعاءه مباشرةً، وإن كان يحتاج موافقتك رُفعت بطاقة الموافقة لحظة التسليح، لا لاحقاً حين لا يكون هناك من يجيب. وعدٌّ واحد معلّقٌ في كلّ وقت؛ وتسليحُ ثانٍ يحلّ محلّ الأوّل. والأتمتة لا تستطيع تسليح واحدٍ أصلاً، لأنّ بطاقتها لا يراها أحد. - الإحباط من جيبك (الهاتف 1.0.58). تصل بطاقة العدّ إلى الهاتف كأيّ بطاقةٍ أخرى — وزرُّ الإحباط يعمل من هناك، وهو ما يهمّ أكثر ما يهمّ حين يكون الجهاز الذي سيُطفأ هو الذي لا تجلس إليه.
v1.0.293
تحديثات
- الدور المنتهي ينتهي على لا شيء، لا على ملاحظةٍ عن لا شيء. حين لم يبقَ للدور ما يقوله — الجوابُ سُلّم، والهاتفُ أُشعر — كانت تعليمات وولفيش نفسُها تقول له أن ينتهي بلا شيء، وتطبع الخطأ الذي يجب ألّا يقع فيه: الملاحظةَ المخالفة نفسَها، بين علامتي اقتباس، مثالاً على ما لا يُكتَب. والنموذجُ الذي قرّر ألّا يقول شيئاً يمدّ يده إلى أقرب رمز، وكان أقربَ رمزٍ هو الذي عرضته عليه التعليمةُ للتوّ. فكان الدور المنتهي قد يُغلق بتلك الملاحظة مكتوبةً بعد جوابٍ حقيقيّ ومسلَّمةً إليك جزءاً منه، مرّتين في محادثةٍ واحدة. وكلُّ تلك التعليمات — الإجراءات القائمة وكلا التنبيهين في أثناء التشغيل — صارت لا تسمّي مثالاً البتّة ولا تطبع العبارة التي تحظرها. بل تصف صنف الخطأ (ملاحظةُ حالةٍ بين قوسين، أو تصريحٌ مكتوبٌ بأنّك ساكت، أو نقطةٌ وحيدة أو «…»)، وتقول صراحةً إنّه لا شيء مطلوبٌ بنيويّاً في ردٍّ أبداً، وتغطّي الهيئة التي تسرّبت: الجوابُ الجوهريّ لا يحمل علامةً في ذيله — بل ينتهي عند آخر محرفٍ حقيقيّ فيه.
- زرّ التحديث يحتفظ باسمه. لا استبدالَ بـجارٍ التثبيت… في بطاقة المحادثة ولا في لوحة الإعدادات ما دام العمل جارياً.
- ملاحظةُ التشغيل آخرُ سطرٍ في بطاقة الأتمتة، تحت البئر أحاديّ المسافة، لا طافيةً بين سائرها.
v1.0.292
تحديثات
- بطاقةُ الأتمتة تقول «متى» بلمحة. الجدولُ الذي تعمل به الأتمتة —
Daily (09:00)أوWeekly (Mon 09:00)أو سطرُ cron خام — كان يفتح سطرَ الشيفرة الرماديّ الصغير في أسفل بطاقتها، يتقاسم سطرين مقصوصين مع تاريخ التشغيل القادم والمشروع وختم التحرير، حيث قد يُقطَع الطويلُ قبل أن تقرأه أصلاً. وصار له شريحةٌ خاصّة به، مقرونةً في صفٍّ واحد مع العدّ التنازليّ: متى يعمل تالياً على جانب، والقاعدةُ التي يعمل بها على الجانب الآخر، مدفوعتين إلى حافّتي البطاقة كما هما مفتاحا التشغيل/الإيقاف والفرديّ/سير العمل فوقهما. وتلبس الشريحة رمزَ فترتها — شمساً لليوميّ، وحقيبةً لأيّام العمل، وتقويماً للأسبوعيّ والشهريّ، وساعةَ إيقافٍ للساعيّ، وصاروخاً لما ينطلق عند إقلاع التطبيق، وقوسين زاويّين لـcron الخام — فتُدرَك هيئةُ الأتمتة قبل أن تقرأ منها كلمة، وcron الطويل ينزل إلى سطره بدل أن ينضغط. وسطرُ الشيفرة تحته لم يبقَ فيه إلّا ما كان له دائماً: لحظةُ التشغيل القادم بالضبط، والمشروع الذي ينتمي إليه، ومتى حرّرتَه آخر مرّة. - مكتبةٌ واحدة على الهاتف كذلك (الهاتف 1.0.56). الصفحات الثلاث التي تصنع عليها أشياءك صارت خلف صفٍّ واحد في ورقة المحادثات: المكتبة، وفيها الأتمتة والمشاريع والإجراءات ثلاثةَ تبويباتٍ تحت العنوان — حركةُ سطح المكتب نفسُها في إصداره 1.0.286، مرتَّبةً لهاتف، تتذكّر التبويب الذي تركته وما زالت تفتح على الصحيح مباشرةً من إشعار. وتبويب الأتمتة يعرض البطاقات وحدها: فنظرة
heartbeat.mdالخام ومفتاحها ذهبا، لأنّ البطاقات على الهاتف هي الجدول، وسطحٌ ثانٍ للمخزن نفسه موضعٌ ثانٍ للخطأ فيه. وصفحةُ المحادثات الكاملة — تلك التي فيها البحث والحذف — خرجت من الإعدادات إلى الورقة كذلك، بجانب سائر الصفحات التي تقصدها لا الإعدادات التي تضبطها. - بطاقاتٌ تقف عند الحافّة نفسها (الهاتف 1.0.57). الصفوفُ المضغوطة التي تبلّغ عن تعديلٍ أو كتابةٍ أو أمر طرفيّة، والبطاقةُ التي تلخّص سير عمل، كانت تجري بعرض المحادثة كلّه بينما تقف كلُّ بطاقةٍ أخرى يرسمها الوكيل دونه — هامشان أيسران مختلفان في محادثةٍ واحدة. وصار كلاهما يقف حيث يقف الردّ، بعرض الوكيل نفسه. ودوّامُ الصفّ الجاري يدور فعلاً كذلك: فالرمز الذي كان يقوم مقامه لا يخفت إلّا في مكانه، فيُقرَأ شاشةً متجمّدة.
v1.0.291
تحديثات
- التحديثات على ماك تعود. كان الضغط على تحديث على ماك يُغلق وولفيش أحياناً ثمّ — لا شيء. لا إعادة تشغيل، وحين تفتحه بنفسك تجده النسخةَ القديمة. والسبب سباق: فعلى macOS يلزم مثبِّتَ النظام نفسِه أن يفكّ حزمةَ الـ300 ميجابايت ويفحصها بعد ضغطك، وكان وولفيش يمنحه خمس ثوانٍ ثابتة قبل أن يُجبر نفسه على الإغلاق. وعلى قرصٍ مشغول لا تكفي، فيموت التطبيق والتحديثُ نصفُ مُهيَّأ. وصار وولفيش يهيّئ التحديث أوّلاً وهو ما يزال يعمل بكامله، ولا يشرع في الإغلاق إلّا بعد أن يؤكّد المثبِّت أنّه يحوز النسخة الجديدة. وإن أخفق التهيئة لا يُفكَّك شيء: يبقى التطبيق مفتوحاً، ويقول لك إنّ التثبيت لم يتمّ، ويدعك تحاول ثانية. والقاعدة نفسها تسري الآن على كلّ منصّة — لا يُجبر وولفيش نفسه على الإغلاق أبداً ولا شيء مثبَّت؛ وإن تعذّر تسليح المثبِّت بعد بدء الإغلاق، أعاد تشغيل النسخة الحالية بدل أن يتلاشى. وملاحظةٌ صادقة واحدة: التحديثُ الذي يجلب إليك هذه النسخة ما زالت تنفّذه الشيفرةُ القديمة، فقد يسيء التصرّف مرّةً أخيرة — والتحديثُ بعده أوّلُ من يشغّل الإصلاح.
- إخفاقات التثبيت تقول ذلك. كان زرّ تحديث إن أخفق التثبيت يبقى رمادياً على «جارٍ التثبيت» إلى الأبد، في بطاقة المحادثة وفي الإعدادات ← التحديثات معاً، بلا رجعةٍ دون إعادة تشغيل. وصار كلاهما يعرض ما الذي أخفق مكان ملاحظات الإصدار، ويحيل الزرّ إلى إعادة المحاولة، ويقرأ «جارٍ التثبيت…» فقط ما دام العمل جارياً حقّاً.
v1.0.290
ميزات جديدة
- عدّة مرّاتٍ في اليوم أتمتةٌ واحدة. كان «اجتحِ صندوق البريد عند 8 و2 و8» يعني ثلاث أتمتاتٍ منفصلة تقف في صفّ، لكلٍّ بطاقتُها وتاريخُها وتحريرُها. وصار الجدول يحمل قائمة:
Daily (08:00, 14:00, 20:00)ينطلق ثلاث مرّاتٍ في اليوم، وWeekday (09:00, 17:00)مرّتين في كلّ يوم عمل، وWeekly (Monday, Wednesday, Friday 09:00)ثلاث مرّاتٍ في الأسبوع. والأيّام والأوقات كلاهما يقبل القوائم — فـWeekly (Monday, Friday 09:00, 17:00)أربعُ تشغيلاتٍ في الأسبوع من سطرٍ واحد — وأسماءُ الأيّام تقبل Mon وTue وWed كما تقبل الكلمة كاملة، وMonthly (1, 15 09:00)يغطّي الأوّل والخامس عشر، ولا يلزم أن تتشارك الأوقات الدقيقة نفسها، فـDaily (08:00, 12:30, 18:00)سليم. ولأيّ جدولةٍ لا تقولها القوائم، تقبلCron (…)عدّة تعبيراتٍ مفصولةٍ بـ;. والعدّ التنازليّ على البطاقة يتبع: فجدولٌ كهذا يعرض تشغيله القادم لا أوّله، فأتمتةٌ تنطلق عند 08:00 و14:00 و20:00 تقرأ 14:00 حين تنظر وقت الغداء. وكلُّ ما كُتب من قبل يعمل كما كان تماماً — فالقيمة المفردة ببساطة قائمةٌ من عنصرٍ واحد. - اختر كم مرّة، ثمّ الفترة. فوق حقل الجدولة صار هناك صفٌّ من شرائح العدد — مرّة، مرّتين، 3 مرات، 4 مرات، 5 مرات — يُقرأ جملةً واحدة مع شرائح الفترة تحته: «3 مرات» · «كل يوم» يملأ
Daily (…)بثلاثة أوقاتٍ موزَّعةٍ بالتساوي على اليوم، مرتكزةً على الآن. واخترهما بأيّ ترتيب. والصفّان يُضاءان ممّا في الحقل فعلاً لا من آخر نقرةٍ نقرتَها، ففتحُ أتمتةٍ قائمة — أو كتابةُ جدولٍ بيدك — يريك فترتَها هي وعددَها هو. والهاتف نال الشرائح نفسها في إصداره 1.0.55، وتحتها سطرُ التشغيل القادم يؤكّد القراءة قبل الحفظ.
تحديثات
- كتل الشيفرة بلا وسم لغة. الكتلةُ المسيّجة بلا لغةٍ عليها — ثلاثُ علاماتٍ خلفيّةٍ لا غير — كانت تُصيَّر وبداخلها صندوقٌ ثانٍ أغمق، بمقاس النصّ لا بمقاس الكتلة، ظاهراً بيّناً في الوضع الفاتح. كان وولفيش يقرّر «كتلةٌ أم مقتطفٌ سطريّ؟» بالبحث عن صنف
language-لا تحمله السياجةُ غير الموسومة قطّ. وصار يقرّر بـموضع الشيفرة: ما دامت داخل سياج، فهي كتلة. - المعاينات على الأرضيّة الصحيحة. كانت معاينتا Word والجداول ترسمان نفسيهما على خلفيّة النافذة لا على خلفيّة البطاقة، فيجلس المستند في بئرٍ أغمق قليلاً من البطاقة الحاملة له؛ وصارتا تستعملان الأرضيّة نفسها التي ترسم عليها كلُّ بطاقةٍ أخرى. وشرائح المجلّدات على الحافّة العليا من السجلّ كانت شفّافةً، فتشبح الأسطرُ المارّة تحتها من خلالها — وصارت صلبةً الآن.
v1.0.289
تحديثات
- Ollama يكفّ عن طلب تثبيته. كان التشغيل الأوّل يسوقك من شاشة الترحيب مباشرةً إلى ثبّت Ollama، ومنها إلى اختر نموذج Ollama — صفحتان ملءَ الشاشة لا تحملان شيئاً من تنقّل التطبيق، فمن لم يُرد نموذجاً محلّيّاً ببساطة لم يكن له مذهب. وصار وولفيش يعامل Ollama بما هو: مزوّدٌ اختياريّ واحد بين عدّة. والإعداد الأوّليّ صار سمةً ولغةً ثمّ المحادثة — لا شيء غير ذلك. ولم تعد شاشة انتقاء النموذج موجودةً أصلاً؛ صارت لوحة Ollama في الإعدادات ← النماذج، حيث تقصدها حين تريدها حقّاً، وكلُّ مدخلٍ إليها زرٌّ اخترتَ أن تضغطه. والإقلاعُ نفسه لا يسأل Ollama شيئاً — لا استطلاع، ولا قائمة وسوم، ولا إعادة كتابةٍ صامتة لإعداداتك قبل أن تظهر النافذة أصلاً.
- لوحة النماذج تُبقيك حيث أنت. كان إنهاء التنزيل يقذفك خارج الإعدادات إلى المحادثة، لأنّ شاشة الانتقاء بُنيت خطوةً في مسارٍ لا لوحةً فتحتها عن قصد. وصارت تُبقيك حيث أنت بالضبط: تعود القائمة ونموذجك الجديد معلَّمٌ بأنّه الحاليّ، وتعيد اللوحة قراءة ما يملكه Ollama فعلاً، فـإعادةُ تنزيل نموذجٍ تسمّيه إعداداتك أصلاً لم تعد تترك البطاقة قائمةً تعرض «تثبيت». والأزرار التي كانت لذلك المسار — «تخطَّ الآن» و«العودة إلى المحادثة» و«المتابعة إلى المحادثة» — ذهبت، لأنّ الشريط الجانبيّ للإعدادات وزرّ الرجوع كانا دائماً طريق الخروج من لوحة.
- حين يختفي نموذجٌ محلّيّ. احذف نموذجاً بـ
ollama rmوكان وولفيش يمضي معتقداً أنّه ما زال يملك واحداً: حقلُ الإدخال حيّ، والتنبيهُ الذي يدلّك على الإعدادات مخفيّ، فتكتشف الأمر بـإرسال رسالةٍ يعود عليك بخطأ مزوّدٍ خام. وصارت المحادثة تقرأ حالة العفريت الحيّة — مراقبةً خلفيّةً يحفظها التطبيق أصلاً لا استطلاعاً جديداً من عندها — وتقول لك بصراحة إنّ نموذجك المحلّيّ لم يعد مثبَّتاً في Ollama، مع الطريق نفسِه بنقرةٍ واحدة إلى الإعدادات ← النماذج. أمّا العفريت المطفأ فيُترَك وشأنه، وكذلك الذي يتعثّر لحظةً قبل أن يجيب: فلا يُبلَّغ عن أيٍّ منهما نموذجاً مفقوداً. وزرّ الإيقاف لم يعد مشروطاً بشيء البتّة، فالدور الذي يعمل على نموذجٍ اختفى في منتصف التوليد يبقى قابلاً للإيقاف.
v1.0.288
ميزات جديدة
- وولفيش يكتب الشيفرة الآن. وجِّه محادثةً إلى مشروع شيفرة فيكفّ وولفيش عن أن يكون مساعداً يملك صدفةً ويصير وكيلَ برمجةٍ يعمل كما تعمل أنت. يبدأ بـقراءة المشروع بدل التخمين فيه: فبيئةُ التشغيل صارت تخبره أيّ مجلّدات عملك مشاريع حقيقية، وعلى أيّ فرعٍ كلٌّ منها وكم يحمل من تغييراتٍ غير مودَعة، وأيّ سلسلة أدواتٍ يستعمل، وأوامر الفحص التي يعرضها ذلك المشروع بالضبط — ويقرأ
AGENTS.mdأوCLAUDE.mdالخاصّ بالمشروع أوّلاً، فقواعدُ بيت المستودع تعلو على كلّ ما يعتقده وولفيش افتراضاً. وثلاثُ أدواتٍ جديدة تؤدّي العمل:file_editتُجري تعديلاً جراحيّاً بنصٍّ مطابقٍ تماماً وتريك الفرق بدل إعادة كتابة الملفّ كلّه؛ و**file_grep** تبحث في محتوى الملفات بـripgrep عبر قاعدة شيفرة بأيّ حجم، مع احترام.gitignore؛ و**file_glob** تجد الملفّ باسمه. ويتبع كلَّ تعديلٍ خطوتان لا تحتاج أن تطلبهما — مُنسِّق المشروع نفسه يعمل على الملفّ حين يكون المشروع يستعمل واحداً بشكلٍ ظاهر، وTypeScript أو ESLint أو Ruff أو Pyright الخاصّ بالمشروع يُسأل عن رأيه، وتُعاد أيّ أخطاءٍ مباشرةً فتُصلَح في الدور نفسه بدل أن تظهر عند البناء. والتغييرُ لا يُعدّ منجَزاً حتى يمرّ فحص: الاختبار الأضيق أوّلاً، ثم فحص الأنواع والتدقيق والاختبارات كاملةً، مع الإبلاغ عن الإخفاق لا إخفائه. وهذا كلّه يُرفَق حين يكون مجلّد العمل مشروع شيفرةٍ حقّاً وحدها — أمّا المحادثة العادية فلا تحمل منه شيئاً. - خطِّط أوّلاً، وغيِّر بعدُ. شريحةُ تخطيط جديدة تجلس في حقل الإدخال بجوار زرّ محرّر المسوّدة. وحين تكون مشتعلة لا يستطيع الدور أن يغيّر شيئاً: يقرأ ويبحث ويحقّق، ثم ينتهي بكتابة خطّة — المقاربة الموصى بها، والملفات التي سيمسّها، والخطوات مرتَّبة، وكيف سيُفحَص الناتج — ويقول لك أطفئ التخطيط لتشغيلها. وهو موقفٌ تتّخذه لمحادثةٍ لا صفةٌ في سجلّها، فهو محفوظٌ في مكانٍ واحد ومشتركٌ مع هاتفك المقترن: اضبطه من أيّ السطحين يتبعه الآخر فوراً. بل تستطيع محادثةٌ جديدة تماماً أن تحمل الموقف قبل أن يكون لها معرّف. وأطفئه فيُبلَّغ الدورُ التالي، مرّةً واحدة، أنّ الخطّة صارت معتمَدةً للتنفيذ.
- كلُّ تغييرٍ يصل فرقاً. كان تعديل الملفّ وتشغيل الأمر يبدوان كسائر استدعاءات الأدوات في الخيط. وصار لكلٍّ منهما صفُّ نشاطٍ مضغوطٌ خاصّ به — عنوانٌ قصير، والملفّ أو الأمر، وشريحةٌ تقرأ
+12 −3للتعديل أوexit 0للأمر، خضراء أو حمراء. وافتح الصفّ فيُظهر التعديلُ الفرقَ الموحَّد الحقيقيّ، أحمرَ وأخضرَ بأرقام الأسطر الصحيحة على الجانبين؛ ويُظهر الأمرُ مخرجاته، وحين تكون طويلة مسارَ الملفّ الذي يحملها كلّها. والفرقُ يسافر على الناتج نفسه، فـالمحادثة التي تُفتَح بعد أسبوع تُرسَم تماماً كما رُسمت حيّة. - قائمة المهامّ. حين يبلغ العمل ثلاث خطوات فأكثر صار الوكيل يحتفظ بـقائمة مهامّ، وتظهر في المحادثة بطاقةَ تحقّق: عنصرٌ واحدٌ قيد التنفيذ لا غير، ولا يُشطَب عنصرٌ إلّا بعد الفحص الذي يثبت أنّه تمّ حقّاً. والبطاقة تتحدّث في مكانها لا تكدّس نسخةً جديدة مع كلّ مراجعة، فتترك التشغيلةُ الطويلة قائمةً واحدة في السجلّ تبيّن أين وصلت الأمور. وتصل إلى الهاتف المقترن وإلى ملفّ الـPDF المصدَّر على السواء.
- إعادة الأمر إلى ما كان. قبل أوّل تغيير يُجريه دورٌ على ملفّ، صار وولفيش يحتفظ بـالبايتات الأصلية. فـ**
changes_list** تُري ما مسّه كلُّ دورٍ حديث، و**changes_revert** تعيد ملفّات دورٍ إلى ما كانت — الدورَ كلّه، أو ملفًّا واحداً منه. لا تحتاج git، وتعمل في أيّ مجلّد، وتحتفظ بـآخر عشرين دوراً لكلّ محادثة. وهي موجودةٌ لجملةٍ واحدة قلتَها من قبل بلا شكّ: هذا الإصلاح زاد الأمر سوءاً، أعِده. - محاكيات، على الهاتفين معاً. قدرةُ محاكيات الهاتف الجديدة تضع iOS وAndroid على المكتب: تسع أدوات
sim_لمحاكي iOS — سرد الأجهزة، وإقلاع واحد، والبناء، والتثبيت، والتشغيل، والإنهاء، والتقاط الشاشة، وقراءة السجلّ، وفتح رابط عميق — وسبع أدواتadb_لمحاكي أندرويد أو جهازٍ موصولٍ بالكبل، والنقر والكتابة منها. فصار سؤال «هل تبدو الشاشة الجديدة صحيحة؟» سؤالاً يجيب عنه الوكيل ببناء التطبيق وتشغيله والنظر إليه.
تحديثات
- اسمح به في هذه المحادثة. لبطاقة الموافقة زرٌّ ثانٍ. اسمح في هذه المحادثة يوافق على الاستدعاء الذي أمامك ويكفّ عن السؤال عن النوع نفسه من الاستدعاءات بقيّةَ المحادثة — الأداةُ نفسها، وفي الطرفية رأسُ الأمر نفسه، فالسماح بـ
npm installمرّةً لا يسمح ضمناً بـgit pushلاحقاً. وما يُحظَر حظراً لا يبلغ هذه البطاقة أصلاً ولا ينال هذا الزرّ. - موافقاتٌ تقرأ المسار لا الشيفرة. كانت كتابةُ ملفٍّ صادف أنّ محتواه يذكر مساراً توقف الوكيل وتسألك عنه. فاستيرادٌ نسبيّ عاديّ —
import x from '../lib/x'— كان يرفع بطاقةً حمراء تقول «محاولة اجتياز مسار»، وهي أشدّ تحذيرات التطبيق، فوق سطرٍ من شيفرةٍ سليمةٍ تماماً؛ وسكربتٌ يبدأ بـ#!/usr/bin/env nodeكان يُعلَن «تعديل ملفّات النظام». كانت القواعد تقرأ الاستدعاء كلّه، بنصّه، بدل الشيء الوحيد الذي هي عنه. وصارت تقرأ المسارَ المكتوب إليه، لا شيء غيره. أمّا الاجتياز الحقيقيّ مثل../../../etc/hosts، والكتابةُ الحقيقية في/etcأو/usrأو/private، فما زالت تتوقّف وتسأل تماماً كما كانت، على أداة ملفّاتٍ وعلى أمر طرفيّةٍ سواء. وشيءٌ واحد يرتخي حقّاً: أمرُ طرفيّةٍ يصعد مجلّداً لا غير،cd ../sibling && npm test، لم يعد يُحسَب محاولةَ خروج. - الخيط يعرض العمل، لا الميكانيكا. المفتاحُ الذي يحكم كم ترى من الدور كان يحمل اسم «نتائج المهام المفصّلة» على أربعة أسطح مختلفة — اسمٌ يصف ضبطه لا ما ستراه. وصار «عرض كل نشاط الأدوات» في كلّ مكان: سطح المكتب والهاتف والطرفية وتيليجرام وواتساب. والأنفع من ذلك أنّ ما تعرضه التغذية النظيفة دائماً قد اتّسع. فمع إطفاء المفتاح صرت ترى الردود، والملفات المسلَّمة، وتعديلات الشيفرة وأوامر الطرفية، والأسئلة والموافقات، والتفكير وقوائم المهامّ — ولا يبقى خارج النظر إلّا الميكانيكا الصرفة. وعلى الحافّة العليا من السجلّ صار هناك شريطٌ جديد من شرائح المجلّدات: كلُّ مجلّدٍ غيّرت هذه المحادثةُ ملفّاتٍ فيه، وكم منها، كلُّ واحدةٍ على بُعد نقرةٍ من فتحه على سطح مكتبك. وفي الاتجاه الآخر، بطاقات التشغيل الحيّة ذهبت — البطاقةُ التي كانت تغطّي المحادثة بينما تعمل أتمتةٌ أو إجراءٌ أو ضغطٌ أو مراجعةٌ ذاتية أُزيلت مع مفاتيحها الأربعة، لأنّ كلّاً من تلك التشغيلات يبلّغ عن نفسه في صفحته أصلاً، ولم تكن البطاقة تقوم يوماً إلّا أمام ما تقرؤه.
- مخرجاتٌ تحتفظ بنهايتها، وخوادمُ يمكن إيقافها. كانت مخرجات تشغيلة اختباراتٍ طويلة تُقطَع بعد نحو 100 كيلوبايت — تحتفظ بالبداية وترمي أسفل السجلّ، وهو بالضبط حيث يُبلَّغ عن الإخفاق. وصارت المخرجات الطويلة تحتفظ بـآخر 2000 سطر أو 50 كيلوبايت، ويُكتَب النصّ الكامل في ملفٍّ يسمّيه الناتج، فلا يضيع شيء ويستطيع الوكيل البحث في السجلّ عن الاختبار المخفق بدل إعادة تشغيل كلّ شيء. وصارت الأوامر أيضاً تعمل في مجلّد عملك افتراضياً بدل مجلّد المنزل، فيهبط
npm testوgit statusداخل المشروع دون أن يُدَلّا عليه، وتعود بلا رموز ألوان. والأمرُ الذي يشبه خادم تطوير أو مراقباً يُرفَض في المقدّمة بدل أن يعلّق الدور: يُبدَأ في الخلفية بدلاً من ذلك، معshell_jobsلسرد ما يعمل و**shell_stop** لإنهاء واحدٍ أو الكلّ قبل انتهاء الدور. - مجموعة النماذج المحلّية تنتظر Ollama. كانت بطاقة النموذج في حقل الإدخال تسأل Ollama عمّا يملكه في كلّ مرّةٍ تفتحها، ثم تُعيد الرسم حين يصل الجواب — وكانت تعرض مجموعةً محلّيةً سواءٌ أكان العفريت يعمل أم لا. وصار وولفيش يراقب Ollama في الخلفية، وتقرأ البطاقةُ ببساطةٍ جواباً استقرّ سلفاً: فتحضر المجموعة المحلّية تماماً حين يستطيع Ollama الإجابة، كما تحضر مجموعة مزوّدٍ سحابيّ تماماً حين يكون له مفتاح. ففتحُ البطاقة لا يكلّف شيئاً، ولا يتزحزح شيءٌ تحت مؤشّرك.
- هذا كلّه على الهاتف (الهاتف 1.0.54). مفتاحُ التخطيط يجلس في أدوات التحكّم بالمحادثة مع شريحته في حقل الإدخال، مرآةً للسطحين معاً — ويخفي نفسه في الوضع التجريبيّ، حيث لا سطح مكتب يحمل الموقف فلا يملك المفتاح إلّا أن يكذب. وتعديلاتُ الملفات والكتابات وأوامر الطرفية ترسم صفّها المضغوط دائماً مهما قال ضبطُ نشاط الأدوات، وينفتح على فرقٍ أحمرَ وأخضرَ بأرقام الأسطر أو على مخرجات الأمر ورمز خروجه ومدّته ومسار حفظه. وقائمة المهامّ تُرسَم بطاقةَ تحقّقٍ تتحدّث في مكانها وتحسم بطاقتها الأصلية حين يستأنف دورٌ لاحق القائمة. ومنتقي النماذج يُسقط مفتاح المحلّي/السحابيّ لصفّ مزوّدين واحدٍ فيه Ollama إلى جانب مزوّدي السحابة كلّما كان عفريته يعمل. وبطاقات التشغيل العائمة تتقاعد مع مفاتيحها الأربعة، فلا يبقى إلّا غطاءُ إعادة الفهرسة.
v1.0.287
ميزات جديدة
- نموذج Flash الجديد من DeepSeek يرى. أحال DeepSeek خطَّ V4 Flash كلَّه إلى التقاعد وأحلّ محلّه نموذجاً واحداً، DeepSeek-V4.1-Flash، يُقدَّم بالاسم المجرّد
deepseek-flash. وهو الآن اختيار DeepSeek الافتراضيّ في فهرس النماذج، ويلبس شارة رؤية لأوّل مرّةٍ في صفّ ذلك المزوّد: يقرأ الصور التي ترفقها ولقطاتِ الشاشة التي يأخذها استخدام الحاسوب، فـلم تعد قيادةُ الشاشة على DeepSeek تعني الانتقال إلى مزوّدٍ آخر أوّلاً. وهو أيضاً أرخص بوضوح — إدخالٌ بـ0.30 وإخراجٌ بـ1.20 لكلّ مليون رمز بحسب الساعة، وإصاباتُ التخزين المؤقّت شبه مجّانية — والفهرس يعرض تلك الأسعار الآن. وتحت ذلك، صار التطبيق أخيراً يعرف اسماً لا يحمل رقم نسخة: فحتى الآن كانت محادثةٌ علىdeepseek-flashتُعامَل بصمتٍ نموذجاً بسياق 8K وإخراج 16K بدل نموذج الـ1M الذي هو، وكانت كلُّ صورةٍ تُجرَّد قبل الإرسال لأنّ التطبيق ما زال يظنّ DeepSeek أعمى. والأسماءُ المتقاعدة تبقى عاملة — فـDeepSeek يوجّهها إلى النموذج نفسه، وصار التطبيق يعاملها المعاملة نفسها. وdeepseek-v4-proيبقى مسروداً بأسعاره الخاصّة أيّامَه القليلة الباقية؛ ومن 14 سبتمبر يوجّهه DeepSeek إلى V4.1 Flash كذلك ويفوتره بسعر Flash.
v1.0.286
تحديثات
- الأتمتة والمشاريع والإجراءات تصير مكتبةً واحدة. الصفحات الثلاث التي تحمل ما يشغّله الوكيل من تلقائه، وما يبدأ منه محادثة، وما تشغّله أنت عند الطلب كانت خلف ثلاثة مداخل منفصلة في الشريط الجانبيّ، كلٌّ منها يفتح شبكةَ بطاقاتٍ تكاد تطابق أختها تحت زرّ رجوعٍ خاصّ بها — فصار العثورُ على ما تريد تحريره يبدأ بتذكّر أيِّ الصفحات الثلاث المتشابهة كان يسكنه. وصارت صفحةَ مكتبةٍ واحدة بثلاثة تبويبات، الشكلَ نفسَه الذي اتّخذه التخصيص للروح والمستخدم والوكلاء: زرُّ الرجوع يتصدّر، والتبويبات بجانبه، والشبكة تملأ الباقي. ولم يتغيّر شيءٌ على البطاقات — فالإنشاء والتحرير والتشغيل والحذف تعمل كما كانت تماماً — ويحتفظ تبويب الأتمتة بـمفتاح البطاقات/الماركداون، في الطرف البعيد من الصفّ نفسه الذي فيه التبويبات لا في ترويسةٍ خاصّة به. والتبويب الذي تركته هو الذي تعود إليه بعد جولةٍ في المحادثة، فلا تكلّفك نظرةٌ إلى ما هو مجدول موضعَك بين إجراءاتك. والشريط الجانبيّ أقصرُ بصفٍّ من أجل ذلك، بالإنجليزية والعربية سواءً.
v1.0.285
تحديثات
- النقطة الشاردة في آخر الجواب. بين حينٍ وحين كان الجوابُ المنتهي يتبعه رسالةٌ ليس فيها إلّا نقطة. تصل تحت ردٍّ كان قد اكتمل، ولا تقول شيئاً، وتتركك تتساءل ماذا عنى الوكيلُ بها. عنى بها الصمت. فحين ينتهي العمل ويخرج الإشعار، تقول بيئةُ التشغيل للوكيل إنّه لم يبقَ ما يُردّ عليه — والوجهُ الصحيح للانتهاء هناك أن يكتب لا شيء البتّة. لكنّ نموذجاً يُطلَب إليه ألّا يرسل شيئاً لا يستطيع دائماً أن يرسل لا شيء، فكتب أصغر علامةٍ وجدها وأرسلها. والتطبيق لا يحرّر حرفاً يكتبه الوكيل، عن قصد، فلم يكن الجواب أن تُحذَف العلامةُ بصمت — بل أن يعلم الوكيل أنّ نقطةً وحيدة ظاهرةٌ ظهورَ جملةٍ تماماً. وصار يُقال له ذلك بالضبط في المرّة التالية التي يتكلّم فيها، ومعه ما رأيتَه أنت على شاشتك، كما يُقال له حين تنزلق علامةُ مُرمِّزٍ خام في ردّ. والتعليماتُ التي يعمل بها تسمّي الحالة صراحةً الآن كذلك، فالأرجح بكثيرٍ ألّا يكتب المحرف أصلاً. أمّا الردّ الذي هو ترقيمٌ محضٌ لأنّك طلبته — فاصلٌ، أو صفٌّ من الشرطات — فيُترَك وشأنه.
- مقياس السياق ينتظر حتى يكون عنده ما يعرضه. كانت المحادثة الجديدة تُفتَح وعدّادٌ فارغ جالسٌ في صفّ حقل الإدخال، وتمريرُ المؤشّر فوقه يُنتج بطاقةً لا تقول إلّا «لا استهلاك بعد» — أداةُ تحكّمٍ وُجدت لتقول لك لا شيء، إلى جانب شريحتي السجلّات والملفات اللتين كانتا قد كفّتا عن ذلك بالضبط. وصار المقياس ينضمّ إلى الصفّ لحظةَ تكون عنده قراءة، عند أوّل إرسالٍ منك، ويبقى بعيداً قبل ذلك. وإلى جانبه، الزرُّ الذي يفتح محرّر المسوّدة كامل الارتفاع كان يلبس علامة الأسهم الأربعة التي يستعملها عارضو الملفات وPDF والفيديو لـ«اجعل هذا أكبر»، بينما يقرأ عنوانه هو «اكتب رسالتك» — وصار يلبس القلم الذي تستعمله بطاقات المشاريع والأتمتة والإجراءات لفتح محرّر، بالحجم نفسه الذي عليه كلُّ أيقونةٍ في تلك المجموعة.
v1.0.284
تحديثات
- حقل الإدخال يتوسّع كما يتوسّع كلُّ شيءٍ آخر. نقل الإصدارُ الماضي محرّرات الأتمتة والمشاريع والإجراءات إلى اللوحة كاملة الارتفاع حين تطلب لتعليمتها مزيداً من الفسحة. وكان زرّ التوسيع في حقل إدخال المحادثة نفسِه هو المتبقّي — ما زال يفتح صندوقاً يطفو في وسط شاشةٍ معتمة، فيعني الطلبُ نفسه شكلين مختلفين بحسب أيِّ نصٍّ صادف أن تكتبه. وصار يفتح اللوحة نفسها، على المسوّدة نفسها، فما تكتبه فيها هو ما يرسله حقل الإدخال لحظةَ تغلقها. وله أيضاً زرّ إغلاقٍ ويستجيب لـEscape، بينما كان السبيل الوحيد للخروج من قبل نقرةً على المنطقة المعتمة خلفه — وتلك النقرة ذهبت عن قصد، لأنّ شاردةً منها وأنت تكتب كانت تُغلق المحرّر في منتصف الجملة. والزرّ نفسه صار أخيراً يقول ما يفعله حين تمرّر فوقه، بدل أن يكون أيقونةً مجرّدة.
v1.0.283
تحديثات
- محرّر التعليمة الموسَّع ينضمّ إلى اللوحة. نقل الإصدارُ الماضي استمارات الأتمتة والمشاريع والإجراءات إلى لوحاتٍ كاملة الارتفاع تنزلق من الحافّة. أمّا الزرّ الذي يمنح تعليمتك فسحةً أكبر فكان ما يزال يفتح صندوقاً يطفو في وسط شاشةٍ معتمة — شكلاً ثانياً مكدَّساً على الأوّل، للفعل نفسِه: طلبِ الفسحة. وصار يفتح اللوحة نفسها كاملة الارتفاع، تلك التي يستعملها عارضا الملفات وPDF أصلاً، فكتابةُ تعليمةٍ طويلة توسّع السطح الذي أنت عليه بدل أن تغطّيه بآخر. وصار له أخيراً زرّ إغلاق: فقد كان السبيلان الوحيدان للخروج Escape أو نقرةً على الخلفية، وتلك النقرة ذهبت عن قصد — فشاردةٌ منها وأنت تكتب كانت تُغلق المحرّر من تحتك. وبالعربية على ماك، لم يعد عنوان العارض الموسَّع يقع تحت أزرار النافذة كذلك.
- التعليمة تأتي أوّلاً. في المحرّرات الثلاثة كانت التعليمة تقع تحت قائمة الملفات وقائمة المجلّدات، فيكون الحقلُ الوحيد الذي وُجدت الاستمارة كلُّها من أجله هو الذي عليك أن تمرّ بكلّ شيءٍ قبله لتبلغه — وكلّما طالت قائمتا الملفات والمجلّدات ازداد نزولاً. وصارت تقع مباشرةً تحت الاسم والمشروع، والملفات والمجلّدات تحتها. والمشاريع كانت تعمل هكذا أصلاً؛ والأتمتة والإجراءات صارت تطابقها.
- بطاقاتٌ تقول ما تحمله. بطاقةُ المشروع صارت تعرض كم ملفّاً ومجلّد عملٍ تحمل إلى كلّ محادثةٍ تبدأها، شريحتين صغيرتين بجوار الاسم — وتعرض لا شيء البتّة حيث لا شيء، بدل «0» فارغة. وعلى بطاقة الإجراء انتقل مفتاح الفرديّ/سير العمل إلى أعلى بجوار الأزرار، فنال الاسمُ سطراً كاملاً لنفسه. وصارت البطاقتان تُختَمان بـالسطر الأحاديّ المسافة الصغير نفسِه الذي تستعمله بطاقات الأتمتة — متى حُرّرت آخر مرّة، ومتى استُعملت آخر مرّة، وكم محادثة — فتُقرأ الصفحات الثلاث قراءةً واحدة.
v1.0.282
ميزات جديدة
- الروح والمستخدم والوكلاء تصير صفحةً واحدة. المستندات الثلاثة التي تصوغ الوكيل — شخصيّته، و**الحقائق عنك** التي ينبغي أن يعرفها دائماً، و**إجراءاتك أنت** — كانت خلف ثلاثة مداخل منفصلة في الشريط الجانبيّ تفتح ثلاثة محرِّراتٍ تكاد تتطابق، فصار ضبطُ سلوك الوكيل يبدأ بتذكّر أيِّ الثلاثة يحمل الفقرة التي تعنيها. وصارت صفحةَ تخصيصٍ واحدة بثلاثة تبويبات، الشكلَ الذي يستعمله هاتفك أصلاً. وكلُّ تبويبٍ يقول في سطرٍ ما الغرض الحقيقيّ من مستنده، فلم يعد الاختيار متّكئاً على كلمةٍ واحدة. والمسوّدة التي تتركها في تبويبٍ تبقى حين تعود إليه من آخر، وذلك التبويب يحمل نقطةً ما دام فيه تغييراتٌ غير محفوظة — وهي بالضبط المسوّدة التي لم تعد تراها. والتعديلات التي تُجرى على هاتفك أو في نافذةٍ أخرى ما زالت تصل من تلقائها، وصارت تحطّ على أيّ تبويبٍ نظيف لا على الذي تنظر إليه وحده.
تحديثات
- ورقةُ الملفات تسرد ما تملكه المحادثة فعلاً. كانت عرض الملفات تنجرف إلى قائمةٍ بأشياء ليست هناك. فالتشغيلةُ الطويلة تسمّي ملفاتٍ كثيرة ثم تنظّفها — فحصُ PDF يصيّر صفحات إثباتٍ وينظر إليها ويعيد التصيير ويحذف الدفعة — وكان كلُّ واحدٍ منها يبقى في الورقة شاهدةً تنقرها ولا تفتحها أبداً. والملفاتُ التي قرأها الوكيل للرجوع كانت تهبط هناك كذلك، فيملأ موجزُ صباحٍ استشار تقارير الأسبوع الماضي ورقةَ اليوم بـملفّات الأسبوع الماضي. وفي المقابل كان الملفّ الذي أرجحُ أنّك تنظر إليه — ميمٌ أو GIF صنعه الوكيل للتوّ وعرضه عليك داخل الخيط — هو الملفّ الوحيد الذي لم تسرده الورقةُ قطّ. وقد أُصلحت الثلاثة: فالورقة تفحص ما زال على القرص ولا تعدّ إلّا إيّاه، والملفّ المقروء للرجوع لم يعد يُحسَب من ملفّات هذه المحادثة، والوسائط المولَّدة تظهر لحظةَ تُولَد والجوابُ ما زال يُكتَب. وحين تكون صورةٌ قد ذهبت حقّاً، يملأ نائبُها عمودَها بدل أن يجلس فيه عقباً ضيّقاً.
- شريحتا السجلّات والملفات تستحقّان مكانهما. كانت الشريحتان بجوار حقل الإدخال مثبَّتتين دائماً ورماديّتين لا غير حين لا شيء عندهما، فتُفتَح المحادثة الجديدة حاملةً أداتي تحكّمٍ ميّتتين تُعلنان عن ورقتين فارغتين أصلاً. وصارت كلٌّ منهما تنضمّ إلى الصفّ حين يهبط أوّلُ حدثٍ أو ملفٍّ لها، كما ينتظر زرُّ التصدير حتى يكون هناك ما يُصدَّر. وصارتا تلبسان الإطار نفسه الذي يلبسه مقياس السياق الجالس بجوارهما، بدل أن تقفا عاريتين إلى جانب قرصٍ مؤطَّر.
v1.0.281
تحديثات
- التسرّب الذي كسر كلّ الأدوات دفعةً واحدة. اترك التطبيق مفتوحاً وقتاً كافياً فيبدأ كلُّ ما يشغّل برنامجاً بالإخفاق في اللحظة نفسها — Google Workspace يعلن أنّ gogcli «غير مثبَّت»، وتحويلُ الفيديو والصوت يتهاوى، وأمرُ طرفيّةٍ يموت بلا شيءٍ مفيدٍ يقوله. وكلٌّ منها كان يبلّغ عن الإخفاق مشكلةً محلّيّةً خاصّةً به، فلم يشر أيٌّ منها إلى قرب السبب: فمراقبُ الملفات الذي يُبقي مساحة عملك قابلةً للبحث كان يطالب بـمقبض نظامٍ واحد لكلّ ملفٍّ يراقبه، ومساحةُ العمل المعمورة عشراتُ آلاف الملفات. وحين ينفد من التطبيق المقابضُ لم يعد يستطيع بدء أيّ برنامجٍ البتّة، فسقطت الأدوات كلّها معاً. وصار المراقب يمسك مقبضاً واحداً لمساحة العمل كلّها — أحد عشر بدل ثلاثةٍ وعشرين ألفاً، وتبقى أحد عشر مهما اتّسعت مساحة عملك. وصار يلحظ المجلّدات التي تُنشَأ بعد إقلاع التطبيق، وهو ما كان المراقب القديم يفوته بصمتٍ على مساحة عملٍ جديدة.
- تثبيت Google Workspace يشرح نفسه. حين كان تثبيت Google Workspace أو تحديثه يخفق، لم تكن تنال إلّا إشعاراً يقرأ «أخفق التثبيت» — ثم يتلاشى حاملاً معه الروايةَ الوحيدة لما جرى. وصار السببُ الحقيقيّ يبقى على البطاقة بكلماتٍ صريحة: حدُّ GitHub الساعيّ، أو إصدارٌ انتقل، أو ملفٌّ لا يعمل، أو مسارٌ لا يستطيع التطبيق الكتابة إليه. والتثبيتُ نفسه قابلٌ للإصلاح الآن كذلك: يفكّ إلى مجلّدٍ مؤقّت ويبدّل الملفّ التنفيذيّ المنتهي إلى مكانه في حركةٍ واحدة، فالتنزيلُ الذي يموت في منتصفه يترك نسختك العاملة سليمة بدل أن يستبدلها بمبتورة — والحالةُ التي كانت تجعل التثبيت يخفق إلى الأبد مهما ضغطتَه تزول الآن من أوّل محاولة. والتحديثُ الذي يُنزل ملفّاً تنفيذيّاً لا يعمل فعلاً يبلّغ عن ذلك إخفاقاً، بدل أن يريك علامةً خضراء وكلُّ نداء Google يخفق بصمت.
- استمارات التحرير تنال النافذة كلّها. كانت محرّرات الأتمتة والمشاريع والإجراءات صناديق تطفو في وسط شاشةٍ معتمة — والحقيقيّةُ منها، بجدولٍ وقائمة ملفاتٍ وقائمة مجلّداتٍ وتعليمة، تنمو متجاوزةً أسفلَ النافذة ولا شيء يُمرَّر وزرُّ «تم» في مكانٍ خارج الشاشة. وصارت الثلاثةُ لوحاتٍ كاملة الارتفاع تنزلق من الحافّة، السطحَ نفسَه الذي تستعمله أوراق السجلّات والملفات والمحادثات: فتتمرّر الاستمارة بينما يثبت العنوان وشريط «تم». والصفحاتُ الثلاث نزلت كذلك من ثلاثة أعمدة إلى عمودين.
- كلُّ أتمتةٍ تقول متى تعمل تالياً. كانت بطاقة الأتمتة تعطيك جدولها في نصٍّ رماديٍّ صغير بين كلّ شيءٍ آخر على البطاقة — الحقيقةُ الوحيدة عن مهمّةٍ مجدولة التي تتغيّر من تلقائها، مدفونةً في السطر الوحيد الذي لا يتغيّر أبداً. وصارت كلُّ بطاقةٍ تتصدّر بـشريحة عدٍّ تنازليّ: التشغيل القادم بعد 3 ساعات، بالهيئة نفسها التي يلبسها حقل الإدخال لنموذجه. وفي الدقيقة الأخيرة تعدّ بالثانية، وحين تمضي اللحظة تتدحرج البطاقة إلى الموعد التالي بنفسها بدل أن تجلس على وقتٍ مضى. والأتمتةُ المطفأة تلبس الشريحة رماديّةً بدل أن تعد بتشغيلٍ لن يأتي. ووقتُ الساعة بالضبط وصيغةُ الجدول نفسها ومتى حرّرتَه آخر مرّة انتقلت إلى سطرٍ أحاديّ المسافة صغير في قدم البطاقة — والمحرّر صار يعاين الشريحةَ نفسَها التي ستلبسها البطاقة بعد الحفظ.
v1.0.280
ميزات جديدة
- دورٌ ينجو من انقطاع الكهرباء. حتى الآن كانت المحادثة تبلغ قرصك مرّةً واحدةً بالضبط — في النهاية تماماً. فتشغيلةٌ عملت أربعين دقيقة عبر عشرات استدعاءات الأدوات لم تكن موجودةً إلّا في ذاكرة التطبيق وهي تعمل، فيرمي انهيارٌ أو إغلاقٌ قسريّ أو تحديثٌ يثبّت نفسه أو إعادةُ تشغيل ويندوز ذلك كلَّه ويتركك بـسؤالك ولا شيء غيره. وصار كلُّ دورٍ داخل التطبيق يُكتَب إلى القرص وهو يجري: الجوابُ حتى اللحظة، وكلُّ بطاقة أداة، وخطُّ زمن المهامّ. فتهبط المطالبة قبل أن تصل أوّلُ كلمة، وتُحفَظ الأجزاء البطيئة الغالية — استدعاءُ أداة، ونتيجتُه، ومهمّةٌ تنقلب إلى منجَزة — في غضون ثانية، ويتبع النثرُ بعد ثوانٍ قليلة. أغلق التطبيق في منتصف تشغيلة، أو أعد تشغيل الجهاز، أو اسحب القابس: تعود المحادثة والعملُ فيها، معلَّمةً بأنّها التشغيلة التي لم تُتَح لها النهاية، ولا يتغيّر شيءٌ البتّة في الدور الذي ينتهي طبيعيّاً.
- صوتك، يتغيّر بالطلب. كان تغييرُ طريقةِ كلام الوكيل أو طريقةِ سماعه إيّاك يعني فتح الإعدادات والعثور على اللوحة الصحيحة. وصرت تقولها ببساطة. «استعمل صوتاً بريطانياً»، «أنت تتكلّم بسرعة»، «فرّغ بالعربية من الآن»، «استعمل نموذجاً أدقّ» — يقرأ الوكيل إعداداتك الحالية، ويغيّر ما عنيتَه، ويقول لك بكلماتٍ صريحة ما غيّره. ويستطيع كذلك تثبيت محرّكي الصوت والتفريغ عند الطلب، بشريط التقدّم نفسه الذي يعرضه زرّ اللوحة. ومهما غيّر، تتحدّث لوحةُ الإعدادات وهاتفك حيّاً، ولن يضبط إلّا صوتاً أو سرعةً أو نموذجاً أو لغةً تستطيع كلُّ شاشةٍ عرضها فعلاً.
تحديثات
- إعادة التشغيل تنتظر هبوط الجواب. كان طلبُ إعادة تشغيل جهازك من الوكيل يُنزله في تلك اللحظة — ومعه الدورُ الذي كان ما يزال يُحفَظ، فيسقط معه الجوابُ نفسُه الذي يخبرك بإعادة التشغيل. وصارت إعادةُ التشغيل أو الإطفاء تُجدوَل بعد نحو عشرين ثانية. ويخبرك الوكيل بما هو على وشك الحدوث وكيف توقفه (
shutdown /aعلى ويندوز)، ويمنح الجهاز وقتاً أطول حين يكون تنزيلٌ أو كتابةٌ طويلة ما تزال جارية، وما زال يستطيع النزول فوراً إن طلبتَ ذلك صراحةً. ولم يعد يستطيع تهريب إعادة تشغيلٍ عبر الطرفية كذلك — فذلك المسار كان يتخطّى بطاقةَ الموافقة والمهلةَ معاً. (واستبدل الإصدار 1.0.294 المهلةَ كلَّها بـبطاقة عدٍّ تنازليّ قابلةٍ للإحباط.) - لقطاتٌ بالحدّة التي تحتاجها المهمّة. كانت دقّةُ اللقطة وصيغتها إعدادين عليك أن تجدهما وتضبطهما بنفسك، وكانت كلُّ لقطةٍ تخرج واحدةً مهما كان الغرض منها. وصار الوكيل يختار كليهما لكلّ لقطة، وهو يعرف ما ينظر إليه: فالبحث العاديّ عن زرّ يبقى صغيراً سريعاً، أمّا قراءة صفحة شيفرة أو الحكم على التباعد واللون أو تسليمك لقطةً تحتفظ بها فترتفع إلى 2560 بكسلاً وPNG بلا فقدان. واطلب لقطةً أعلى دقّةً أو أحدّ في أيّ وقتٍ فيلتقطها ببساطة — فهي خيارٌ على اللقطة التالية لا تفضيلٌ مدفونٌ في لوحة. والإعدادان القديمان ذهبا من التطبيق والطرفية وهاتفك، لأنّه لم يعد شيءٌ يحتاج إلى كتابتهما.
- الأتمتة والإجراءات والمشاريع بلمحة. كانت الصفحات الثلاث تسرد مدخلاتها صفوفاً طويلة مكدَّسة، كلُّ واحدٍ يحمل تعليمته كاملةً وملفّاتِه المرفقة ومجلّداتِه — فتملأ أربعُ أتمتاتٍ النافذة ويصير العثور على واحدةٍ تمريراً على كلّ ما تحتويه. وصارت شبكاتِ بطاقاتٍ مضغوطة، مطابقةً لصفحة الخدمات: أيقونة، والاسم، والسطران المهمّان، وأدوات التحكّم. والأتمتة نالت أخيراً اسماً خاصّاً بها — «الموجز الصباحيّ» بدل «Daily (08:00)» — فتقول البطاقة ما تفعله المهمّة، وجدولُها يُقرَأ تحته.
- السجلّات والملفات على بُعد نقرة. كان زرّا السجلّات والملفات مطويّين داخل بطاقة تمرير مقياس السياق، فيعني بلوغُ أيٍّ منهما تمريرَ المؤشّر فوق شيءٍ لتنقر آخر. وصارا يجلسان في قدم حقل الإدخال مباشرةً شريحتين صغيرتين تحملان أعدادهما. والورقتان، ومعهما عارضا الملفات وPDF الموسَّعان، كفّتا كذلك عن أن تكونا صناديق تطفو في وسط شاشةٍ معتمة: صارت تنزلق من الحافّة لوحاتٍ كاملة الارتفاع، مرآةً لورقة المحادثات على الجانب الآخر.
- التفكير، مُظهَراً أو مخفيّاً. بطاقةُ استدلال النموذج رفيقٌ مرحَّبٌ به عند قومٍ وفوضى عند آخرين. وصار هناك مفتاح إظهار التفكير في التفضيلات — مشتعلٌ افتراضياً، ومشتركٌ بين هذا التطبيق وهاتفك فلا يختلفان أبداً. وإطفاؤه يخفي البطاقة ولا شيء غير ذلك: فالنموذج ما زال يفكّر كما كان تماماً، والتفكيرُ ما زال يُحفَظ مع المحادثة وما زال يُدرَج حين تصدّرها، فإعادةُ إشعاله تُعيد كلّ فكرةٍ معها. (وإصدار الهاتف 1.0.52 يحمل المفتاح نفسه، ويُسقط صفّي لقطات استخدام الحاسوب عنده.)
v1.0.279
تحديثات
- نموذجٌ واحد، شريحةٌ واحدة. كان حقل الإدخال يحمل عنوانين جنباً إلى جنب — محلّيّاً وسحابيّاً — كأنّ كليهما حيٌّ بشكلٍ ما، بينما لا يجيبك أبداً إلّا نموذجٌ واحد. وصار هناك شريحةٌ واحدة، تعرض النموذج الذي سيجيب: شعارُ مزوّدك واسمُه، أو شعارُ Ollama واسمُ نموذجك المحلّيّ. انقرها تجد البطاقة القابلة للبحث نفسها كما كانت. واختيارُ نموذجٍ هو المفتاح — اختر نموذج Ollama فأنت تعمل محلّيّاً، واختر نموذجاً سحابيّاً فأنت على ذلك المزوّد — فصارت علامة الصحّ في القائمة تعلّم النموذجَ الواحد الذي أنت عليه بدل واحدٍ لكلّ جانب. ونموذجك المحلّيّ يحتفظ دائماً بصفٍّ خاصّ به في تلك القائمة، فيبقى قابلاً للاختيار حتى حين لا يجيب Ollama.
- زرّ التصدير ينتظر حتى يكون هناك ما يُصدَّر. كان زرّ التنزيل كـPDF يجلس في ترويسة كلّ محادثة، رماديّاً غير قابلٍ للنقر حتى يكون في المحادثة ما يُطبَع. وصار في المحادثة الجديدة غيرَ موجودٍ ببساطة، ويظهر لحظةَ يكون هناك ما يستحقّ التصدير — فأداةُ تحكّمٍ ميّتة تقول أقلّ ممّا تقوله أداةٌ غير موجودة.
- كلُّ ضغطةٍ تردّ (الهاتف 1.0.51). اضغط صفّ إعدادات، أو زرّ أيقونة، أو بطاقة مشروع، أو شريحةً في منتقي النماذج — في أيّ مكانٍ من التطبيق — ويضيء السطح تحت إصبعك. لم يكن يفعل قطّ: فالإبرازُ كان يُطلَب بصورةٍ لا تستطيع أنماطُ التطبيق رسمها، فيُتخطّى بصمتٍ وتهبط قرابة أربعين أداةَ تحكّمٍ خاملةً تماماً. وحفنةٌ من الأسطح الصغيرة كانت ترسم بلا خلفيّةٍ البتّة — قرصُ الحالة على بطاقة مهمّة، وشريحةُ حالة أداة، وشارةُ نوع الملفّ، ومسارُ تقدّم التنزيل، وأرقامُ الأسطر وترويسات الجداول في عارض الملفات، وأشرطةُ مقياس السياق — وعادت كلُّها إلى صبغتها المقصودة، في الفاتح والداكن معاً.
v1.0.278
تحديثات
- قائمة النماذج تعود. قضت بطاقةُ النموذج في حقل الإدخال إصداراً تتكلّم بالشرائح — ثلاثةُ صفوفٍ تتمرّر جانبيّاً عليك أن تسحبها لتجد دماغاً. وصارت قائمةً من جديد: نماذج Ollama المثبَّتة عندك في الأعلى، ثم مجموعةٌ لكلّ مزوّدٍ موصول، وكلُّ نموذجٍ في سطره بـحجمه وشاراته ونافذة سياقه، وعلامةُ صحٍّ على الذي تستعمله. وتتمرّر نزولاً كما ينبغي لقائمة، لا جانبيّاً أبداً، وصندوق البحث عاد إلى أعلاها — اكتب حروفاً قليلة فيرشّح النماذجَ المحلّية وكلَّ مزوّدٍ دفعةً واحدة. وصفوفُ الشرائح تبقى حيث تنتمي، على منتقيات المشاريع وعلى الهاتف.
- أسماء النماذج الطويلة تتّسع لها. كان عنوانا المحلّيّ والسحابيّ تحت حقل الإدخال مقصوصين بضيقٍ شديد حتى إنّ أيّ اسمٍ يتجاوز نحو عشرين محرفاً يُقطَع في وسط كلمة. وصار السقف واسعاً لكلّ نموذجٍ في الفهرس.
v1.0.277
تحديثات
- التفكير في العلن. لم تعد بطاقة التفكير تطوي استدلالَ النموذج خلف نقرة. صارت كتلةَ تمريرٍ مفتوحة، بهيئة مخرجات أداة: يجلس التفكير هناك تحت رمز دماغٍ صغير، وينمو مع ما يحمله حتى ثمانية أسطر، ويتمرّر داخل صندوقه بعد ذلك — فالفكرةُ من سطرٍ تأخذ سطراً، والمداولةُ الطويلة لا تبتلع المحادثة أبداً. ومرِّر فوق الكتلة يظهر زرّ نسخ يضع التفكير كلّه على حافظتك. وحين يفتتح النموذج استدلاله بعنوان، يصير ذلك العنوانُ عنوانَ البطاقة بدل كلمة «التفكير» المجرّدة. وبينما ينساب الردّ تتبع الكتلةُ أحدثَ سطر يصل وتتوقّف عن التتبّع لحظةَ تمرِّر لأعلى لتقرأ — والمحادثة التي تعيد فتحها تعرض كلَّ بطاقةٍ من سطرها الأوّل. (وإصدار الهاتف 1.0.50 يشحن الكتلة نفسها، بشريحة نسخٍ في الترويسة وضغطةٍ مطوّلة للتحديد.)
v1.0.276
تحديثات
- التفكير يُفتَح من أوّله. كان النقر على بطاقة التفكير في دورٍ يُنزلك عند ذيل التفكير — سطرُه الأوّل مقذوفٌ بعيداً فوق الشاشة — وإغلاقُها قد يقذفك صعوداً إلى مطالبتك أنت. وصارت البطاقة تراعي موضعك في المحادثة: فالتوسيعُ يمرّر رأسَ التفكير إلى المشهد فتقرأ التفكير دائماً من سطره الأوّل، والطيُّ يحملك مباشرةً إلى أحدث رسالة في الأسفل. وإن كان التفكير قصيراً بما يكفي ليتّسع حيث أنت، لا يتحرّك شيءٌ البتّة — وفتحُ محادثةٍ ما زال يحطّ مثبَّتاً على النهاية، كما كان تماماً.
v1.0.275
تحديثات
- اكتب التعليمة حيث تقرؤها. كانت التعليمة في محرّري الأتمتة والإجراءات — وتعليماتُ المشروع — معاينةً عليك أن تنقرها لتحرّر، ونقرُها في أيّ موضعٍ يفتح ورقةً ملءَ الشاشة. وصارت تلك الكتلة محرِّراً حقيقيّاً، جالساً في الحوار نفسه: اكتب في مكانه، ومرِّر تعليمةً طويلة داخله، وكلُّ شيءٍ يُحفَظ تلقائياً كما كان. وتحتفظ بـارتفاعٍ واحدٍ ثابت، ممتلئةً أو فارغة، فلا يقفز الحوار أبداً كلّما نما النصّ، وتلبس المظهر الغائر نفسه الذي يلبسه كلُّ حقل إدخال. وزرّ تحرير تحتها صار هو الشيء الوحيد الذي يفتح المحرّر ملءَ الشاشة، فلا تفتح القراءةُ والتحديدُ والتمرير شيئاً على حين غرّة.
- المشاريع على بُعد نقرة. كان ربطُ أتمتةٍ أو إجراءٍ بمشروعٍ يعني فتح قائمةٍ منسدلة تخفي القائمة وتقصّ الاسم الذي تعرضه. وصار المنتقي صفّاً من الشرائح، القائمةُ كلُّها في سطر — كلُّ مشروعٍ يلبس رمزه التعبيريّ وعنوانه، وبلا مشروع أوّلاً — والصفُّ يتمرّر جانبيّاً مهما كثرت مشاريعك، والشريحةُ المختارة تُحمَل إلى المشهد حين يُفتَح المحرّر.
- التنزيلات تكمل من حيث توقّفت (الهاتف 1.0.49). كانت صورةٌ أو GIF تصل عبر وصلةٍ بطيئة قد تبدأ من الصفر مرّةً بعد مرّة: فمقطعٌ متعثّرٌ واحد يُخفق النقلَ كلَّه، والمحاولةُ التالية تدفع من جديد كلّ بايتٍ أنزلته سابقتُها. وصار النقل يصبر على مقطعٍ بطيء بدل أن يستسلم عند أوّل توقّفٍ طويل، وحين تنكسر محاولةٌ فعلاً تكمل التالية من البايت الذي توقّفت عنده بالضبط. أمّا الملفّ الذي تغيّر حقّاً على سطح مكتبك بين المحاولتين فيبدأ من جديد، لأنّ خياطة نسختين من ملفٍّ واحد ليست الجواب الصحيح أبداً.
v1.0.274
ميزات جديدة
- قطارُ الفكر كلّه، في موضعه. كان النموذج المستدلّ يترك بطاقة تفكيرٍ واحدة في نهاية الردّ تماماً، لا تحمل إلّا ما فكّر فيه قبل كلماته الأخيرة — وكلُّ ما وزنه قبل ذلك، قبل كلّ بحثٍ وكلّ خطوة، لم يكن يُعرَض قطّ. وصار كلُّ مقطعِ تفكيرٍ يحطّ بطاقةً مطويّةً خاصّةً به، في موضعه بالضبط، فوق الكلمات والأفعال التي أنتجها ذلك التفكير — ويظهر حيّاً والنموذجُ ما زال يفكّر، فالدقيقةُ الصامتة الطويلة في بداية سؤالٍ صعب تعرض بطاقةً تمتلئ بدل لا شيء البتّة. انقر لتقرأ؛ ونسخُ الردّ ما زال ينسخ الردّ وحده؛ والمحادثات القديمة تحتفظ بالبطاقة الواحدة التي حُفظت بها. والهاتف المقترن يتلقّى البطاقات نفسها، مبثوثةً في أثناء الدور كذلك (الهاتف 1.0.48).
- تنبيهٌ قبل أن تنشغل اليدان. صارت تعليمات الوكيل القائمة تفتتح كلّ دورِ عملٍ بـسطرٍ قصير عمّا هو على وشك الحدوث — قبل أوّل استدعاء أداة، بثقلٍ أكبر على أوّل ردٍّ في محادثة وعلى بداية مهمّةٍ كبيرة: وهما بالضبط اللحظتان اللتان يُقرَأ فيهما الدوّامُ الصامت تعليقاً. والمقاطعُ الأطول تواصل إسقاط سطرٍ كلّما دارت المراحل، فتبقى الكلماتُ شريطَ التقدّم طول الطريق.
تحديثات
- الدور المنتهي ينتهي صامتاً — لا بـ«(no output)». الدورُ الذي كانت رسالتُه الختامية قد خرجت أصلاً قد ينتهي بـ**«(no output)»** حرفيّاً مكتوبةً في المحادثة — الوكيلُ يطيع تعليمةً داخليّةً بحرفيّةٍ زائدة. وصارت كلُّ تلك التعليمات تنصّ على أنّ الصمت يعني صفر محارف، لا نائباً مكتوباً أبداً، فينتهي الدور المنتهي ببساطة.
- اقتباس علامة ملفٍّ لم يعد يستحضر الملفّ. مخرجاتُ أداةٍ تقتبس علامةَ التسليم الداخلية للتطبيق لا غير — بحثٌ في شيفرة، أو قراءةُ التوثيق الذي يصفها — كانت قد تسكّ بطاقةَ ملفٍّ لمسارٍ لم يُرسَل قطّ، وعلى تيليجرام أو واتساب قد تُطلق إرسالاً حقيقيّاً. وصارت العلامة تُحسَب فقط حين تقف في سطرها، كما تصدرها التسليماتُ الحقيقية؛ والقالبُ المقتبَس يُصيَّر النصَّ الصريح الذي هو. وعلى المنوال نفسه، الملفُّ الذي حُذف رفعُه بعدُ يعرض نائبه الهادئ في كلّ مكان بدل تسجيل أخطاءٍ خلف الكواليس.
- رسائل Ogg الصوتية تُشغَّل على iPhone (الهاتف 1.0.47). كانت الرسالة الصوتية بصيغة Ogg تقف عند بطاقة ملفٍّ على iPhone، لأنّ النظام لم يكن له مفكِّكٌ لها. ونسخُ iOS الحديثة تفكّ Ogg أصلاً، والتطبيق يتبعها: فعلى iPhone حديث تُفتَح رسالةُ Ogg الصوتية في المشغّل الداخليّ نفسه كأيّ رسالةٍ صوتية أخرى. والأجهزة الأقدم تحتفظ ببطاقة الملفّ. وزرّ إغلاق المشروع كفّ كذلك عن ارتداء الأحمر التدميريّ المحجوز للحذف.
v1.0.273
تحديثات
- الرسائل الصوتية على واتساب تُشغَّل فعلاً الآن. الردُّ المنطوق الذي أرسله الوكيل إلى واتساب رسالةً صوتية كان يصل — والنقرُ عليه لا يشغّل شيئاً: فواتساب لا يشغّل الرسائل الصوتية إلّا بصيغةٍ واحدة، OGG/Opus، وكان التطبيق يسلّمه ملفّ تحويل النصّ إلى كلام كما هو، وهو غالباً MP3. وصار الوكيل يعرف القاعدة. فالرسائل الصوتية المقصود سماعها على واتساب دائماً OGG/Opus؛ ويحوّلها الوكيل بـffmpeg المضمَّن في التطبيق لحظةَ يكون الصوت MP3 أو WAV، ولا يخرج MP3 دون مسٍّ إلّا حين تكون طلبت ملفّاً تحفظه أو تشاركه، لا رسالةً تُشغَّل.
- الوكيل يملك إدارة نفسه — ويمدّ يده إليها. ثلاثُ قدراتٍ تشغّل وولفيش نفسه: الأتمتة (نبض القلب)، و**المشاريع** (السياق المشترك)، و**الإجراءات** (الأوامر المحفوظة). وحتى الآن كان على الوكيل أن يسمع اسم القدرة نفسه؛ قل «غيّر اليوميّة» أو «أضف ملفّاتي» أو «احفظ ذلك باسم» فقد يفوته القصد كلّه، أو يجيب بتحرير الماركداون تحته بيده. وصارت هذه المهارات تُعلن ملكيّتها. فيتعرّف الوكيل على القصد في الطريقة التي تصوغ بها كلامك فعلاً — «اجعله يعمل تلقائياً»، «تلك المهمّة لم تعمل»، «في أيّ مشروعٍ أنا»، «تلك التي أستعملها لكذا» — ويمدّ يده إلى أدوات القدرة نفسها أوّلاً، ولا يمسّ الملفّات إلّا احتياطاً.
v1.0.272
تحديثات
- الإطار العائم يجد ارتفاعه على ويندوز. كان قرصا الدردشة الزجاجيّان — وشريطُ الصفحات أعلى ورقة المحادثات — يطفوان على ارتفاعٍ اختير لـmacOS، حيث يخفي التطبيق شريط عنوان النظام وعليه أن يتجاوز أزرار المرور. أمّا ويندوز ولينكس فيحتفظان بـشريط عنوانهما الأصليّ فوق التطبيق، فتركت الإزاحةُ نفسُها القرصين معلّقين في هواءٍ ميّت، أخفضَ بوضوحٍ من زرّ الرجوع الذي تضعه كلُّ صفحةٍ أخرى في موضعه الصحيح أصلاً. وصار الإطار العائم يجلس على ارتفاع كلّ منصّةٍ هي: فعلى ويندوز ولينكس يرتفع القرصان وصفحاتُ الورقة ليطابقا التخطيط الأضيق، ويأخذ القرصان مساحةَ تنفّسٍ أكبر قليلاً من حوافّ النافذة. وmacOS يحتفظ بهندسته كما كانت تماماً.
v1.0.271
تحديثات
- الهاتف لم يعد متأخّراً بدقائق أبداً. بينما يجري الدور، كان هذا التطبيق يرسل إلى الهاتف المقترن لقطةً كاملةً للردّ-حتى-الآن مرّتين في الثانية، مهما كبر الردّ — وعلى تشغيلة أتمتةٍ طويلة تلك مئاتُ الكيلوبايتات كلَّ نصف ثانية، في وصلةٍ واحدة. والهاتفُ على شبكةٍ أبطأ لم يكن ليلحق أبداً: فالمتراكمُ ينمو طوال التشغيلة، ويبقى الردّ «ينساب» هناك كلمةً كلمة، بعد دقائق من فراغ سطح المكتب. وصارت اللقطات تدفع ثمن حجمها — فالصغيرةُ تحتفظ بإيقاع نصف الثانية الذي كان لكلّ محادثةٍ عاديّة دائماً، والثقيلةُ تنتظر بالتناسب، والتشغيلاتُ المتداخلة تتقاسم ميزانيّةً واحدة بدل أن تتكدّس على السلك نفسه. ولا يضيع شيءٌ في الإيقاع: فكلُّ لقطةٍ تحمل الردّ كلّه حتى تلك اللحظة، وأحدثُها يخرج لحظةَ يتّسع السلك، والنصُّ الحيّ كلمةً كلمة يركب بجانبها بلا مسّ، والسؤالُ أو الموافقة المنتظرة منك ما زالت تهبط فوراً. فيبقى الهاتف متأخّراً بثوانٍ في أسوأ الأحوال — وكلُّ ما يفعله غير ذلك، من محادثاتٍ أخرى وإعداداتٍ وملفّات، يكفّ عن الاصطفاف خلف دورٍ وحش.
- اللحاق لم يعد يزحف (الهاتف 1.0.46). كان الهاتف العائد إلى محادثةٍ مزدحمة قد يقضي دقائق يعيد تشغيل ما فاته كلمةً كلمة. وصار ما يصل يتجمّع طرفةَ عينٍ ويحطّ معاً، فـيقفز المتراكمُ سريعاً إلى الحاضر بدل أن يعيد كتابة نفسه. والخيطُ صار يمسك النهاية كما ينبغي والردُّ ينمو: فـالنموّ المبثوث ملتصقٌ بالنهاية فوراً، وفتحُ محادثةٍ يحطّ على أحدث رسالة ويبقى عليها بينما تستقرّ وسائطها، والنقرةُ الشاردة نقرةٌ لا غير، وبلوغُ الأسفل يعيد إلى الخيط عمله بثبات.
v1.0.270
تحديثات
- الردود تُحفَظ فقراتٍ لا قصاصات. كان كلُّ ردٍّ منساب يُخزَّن جزءاً لكلّ لحظةٍ من لحظات الكتابة — بضعةُ محارفَ لكلّ جزء. وردُّ أتمتةٍ واحد قد يحمل آلافاً منها، فيلفّ ردّاً بعشرة كيلوبايتات في ربع ميجابايت من التغليف يدفع ثمنه كلُّ قارئٍ بعد ذلك: هذه النافذةُ تعيد رسمه، والهاتفُ المقترن ينزّله ويخزّنه، وكلُّ فتحةٍ لاحقة تعيد تحليله. وصار النثر ينطوي فقراتٍ كاملة وهو ينساب، عبر كلّ سطحٍ يكتب المحادثات — المحادثات هنا، وتيليجرام، وواتساب، والطرفية، والأتمتة التي تعمل من تلقائها. فتحمل السجلّاتُ الكلماتِ نفسَها بجزءٍ يسير من الوزن، ولا يتغيّر شيءٌ في قراءتها.
- سجلّات الأتمتة تكفّ عن الوزن الثقيل (الهاتف 1.0.45). كانت المحادثة التي تكتبها أتمتةٌ مشغولة قد تصل حاملةً آلافَ قصاصات النصّ الصغيرة، إضافةً إلى بطاقات تنزيلٍ لملفّاتٍ مؤقّتة لم توجد قطّ إلّا على جانب سطح المكتب من العمل — سجلٌّ أضعافَ حجمه الحقيقيّ، وتنزيلاتٌ لا يمكن أن تنتهي أبداً تدور بجانب الحقيقيّة. وصارت القصاصات تنطوي فقراتٍ لحظةَ تهبط المحادثة (فسجلّ تشغيلة الميمات نزل إلى نحو ربع حجمه المخزَّن)، والملفُّ الذي لا يستطيع سطح المكتب تقديمه يُكتَب نصّاً صريحاً بدل بطاقة.
v1.0.269
تحديثات
- هاتفك يسمع كلّ حفظ. كان الدور قد ينتهي هنا ويترك هاتفك يعرض المحادثة كما كانت قبل الجواب — فالتطبيق يعلن «تمّ» قبل لحظةٍ من بلوغ السجلّ القرصَ فعلاً، فيسحب استعلامُ الهاتف التالي النسخةَ القديمة ثم ينتظر إشارةً لا تأتي أبداً. فتُقرَأ محادثةً متجمّدةً في الماضي على الهاتف حتى تعيد فتحها. وصار سطح المكتب يعلن عن كلّ محادثةٍ لحظةَ يُحفَظ ملفُّها — أدوارٌ من أيّ قناة، وأتمتةٌ تكتب في الخلفية، كلُّها — ويستعمل الهاتفُ المقترن تلك الإشارةَ بعينها ليسحب السجلَّ المنتهي.
- الدور المنتهي يهبط دائماً (الهاتف 1.0.41). صار الهاتف يرفض أن يأخذ الصمت جواباً: فحين ينتهي دور، يظلّ يفحص حتى يكون الردُّ المنتهي في يده فعلاً. وفتحُ التطبيق بعد غيابٍ يجعل المحادثةَ التي تنظر إليها في مستوى سطح المكتب، لا القائمةَ حولها وحدها، ونقرةُ الإشعار تُعامَل بما هي دليل — فالمحادثة التي يسمّيها تتحدّث مهما ظنّ الهاتف أنّه يعرف، حتى من إقلاعٍ بارد. وأجزاءُ السجلّ صارت تسافر عدّةً في وقتٍ واحد بدل جولةٍ كاملة لكلّ جزء، فتُفتَح المحادثات الطويلة في جزءٍ يسير من الوقت.
- الملفّ «محذوف» حين يكون قد ذهب فعلاً (الهاتف 1.0.42). صارت تلك الرسالة تظهر فقط حين يجيب سطح مكتبك فعلاً بأنّ الملفّ لم يعد موجوداً. أمّا التنزيل الذي أخفق لا غير فيحتفظ ببطاقة تحميله ويعيد المحاولة بهدوء — مرّاتٍ قليلة خلال الثواني التالية، ومرّةً أخرى كلّما عاد الاتصال.
- المحادثة المفتوحة لم تعد تستطيع أن تفرغ (الهاتف 1.0.43–44). كانت المزامنةُ المزدحمة تنتج وهمين لحظيّين — جولةُ لحاقٍ تفوت محادثةً لمرورٍ واحد، أو استعلامٌ يمسك ملفَّ محادثةٍ جديدة قبل حفظ أوّل ردٍّ فيها — وكان الهاتف يأخذ أيّاً منهما حقيقةً. وصار يرفض كليهما: فالمحادثةُ التي تنظر إليها لا تُسقطها جولةٌ خلفيّة أبداً، والجوابُ الفارغ لا يكتب أبداً فوق رسائل في اليد. وإطارُ شاشة المحادثة الفارغ الوحيد ذهب كذلك: فالسجلّ الذي يختفي في أثناء العرض يعيد نوائب التحميل فوق الفجوة ويُعاد رسمه في مكانه.
- سهم إخفاء لوحة المفاتيح يبلغ كلّ حقل (الهاتف 1.0.40).
v1.0.268
تحديثات
- الخيط يُفتَح حيث تركته. كان فتحُ محادثةٍ في تاريخها بطاقةُ أسئلةٍ متعدّدة يُنزلك في موضعٍ غريب: فبدل أحدث رسالة، كان الخيط يجرّ نفسه صعوداً إلى تلك البطاقة، فيركن في وسط السجلّ على سؤالٍ أجبتَ عنه منذ زمن. فشرائحُ أسئلة البطاقة الصغيرة تتمرّر جانبيّاً في صفّها، والشيفرةُ التي تُبقي الشريحة الفعّالة في المشهد كانت تمدّ يدها وراء ذلك الصفّ فتمرّر السجلّ كلّه معه — منطلقةً لحظةَ ظهور البطاقة، ومنها لحظةُ تركيب تاريخ محادثةٍ قديمة. وصار تتبّعُ الشرائح يحرّك صفَّ الشرائح وحده، في الاتجاهين معاً، فتحطّ المحادثةُ المعادُ فتحُها حيث ينبغي دائماً: مثبَّتةً في الأسفل، على أحدث رسالة.
v1.0.267
تحديثات
- الدردشة كلّها لك الآن. زال الحاجزان اللذان كانا يؤطّران الدردشة — شريطُ الأيقونات على جانب، وقائمةُ المحادثات المثبّتة على الجانب الآخر — وصار النصّ يمتدّ الآن من حافةٍ إلى حافة، لا يؤطّره سوى قرصين زجاجيين صغيرين يطفوان فوقه، وهو الإطار نفسه الذي استقرّ عليه تطبيق الجوال. القرص الأمامي يفتح ورقةَ المحادثات: كلُّ الصفحات — الإعدادات ونبض القلب والمشاريع والإجراءات وسائرها — في شريطٍ ثابتٍ أعلاها، وتحته قائمةُ المحادثات الكاملة عبر كلّ القنوات، تتحدّث حيّةً كلّما بدأ دورٌ أو انتهى في أيّ مكان، وتنمو مع تمريرك بدل رسم مئات الصفوف دفعةً واحدة. وداخل مشروعٍ تعرض الورقة محادثاتِ ذلك المشروع تحت اسمه. والقرص الخلفي هو محادثة جديدة، ببطاقة اختصارات المشاريع نفسها التي كانت له على صندوق الكتابة — وفي وضع المشروع يصير رمزَ المشروع التعبيري، يفتح نافذة الإدارة كما كان تماماً. كلُّ زرٍّ احتفظ بسلوكه؛ الجدران وحدها هي التي سقطت.
- إعدادات تستطيع البحث فيها. استبدل لسانا النماذج والخدمات بقوائمهما الجانبية الطويلة شبكاتِ بطاقات: بطاقةٌ لكلّ مزوّدٍ أو خدمة، بأيقونتها ووصفٍ من سطرٍ واحد — ولمزوّدي السحابة الشارةُ الخضراء التي تقول إنّ مفتاحاً محفوظ. صندوقُ بحثٍ يرشّح الشبكة وأنت تكتب، وفتحُ بطاقةٍ يغوص إلى اللوحة المألوفة مع سهم رجوعٍ يعيدك، وصارت الإعدادات تُفتح على القنوات، حيث انتقلت إضافة المتصفّح — فهي مكانٌ يحادثك وولفيش منه، لا خدمةً مثبّتةً على الهامش. وقائمةُ إعدادات الطرفية تتبع الخريطةَ نفسها، فلا يختلف
wolffish settingsوسطحُ المكتب أبداً على موضع شيء.
v1.0.266
تحديثات
- بطاقة الأتمتة تكفّ عن قول «لا شيء». أتمتةٌ مربوطةٌ بمشروعٍ ربطاً بيّناً — علامةُ
project:قابعةٌ بحروفها في ملفّ الجدولة — كانت بطاقتُها في الطرفية تعرض «المشروع: لا شيء»، بلا أيقونةٍ في القائمة، وبصفرِ ملفاتٍ مرفقة، فتُقرأ تماماً كأنّ الربط سقط بصمت. الربطُ لم يَنكسر قط: التشغيلات كانت تعمل دوماً تحت مشروعها، بملفاته وطبقته. الخادمُ ببساطة كان يُسقط تلك الحقول ممّا يرسله — المهمّةُ الداخلية تحمل المشروعَ والأيقونةَ والملفات والمجلدات، وإسقاطُها على السلك نسي الأربعةَ كلَّها. كلُّ مستهلكٍ لقائمة المهامّ يتلقّى الآن المهمّةَ كاملةً، فعادت الأيقونات وأعدادُ المرفقات في كلّ مكان. والبطاقةُ صارت تجيب عن السؤال الحقيقي: بدل معرّفٍ خامٍ طويل تسمّي المشروعَ باسمه — «💉 Mentor Miller» — وإلى جانبه المعرّفُ المختصر، ولا تعود إلى المعرّف الخام إلا حين تتعذّر قراءةُ قائمة المشاريع، ولا تقول «لا شيء» إلا حين تكون المهمّةُ غيرَ مربوطةٍ حقاً.
v1.0.265
تحديثات
- الأتمتة تتّسع الآن لأيّ موجّه. موجّهُ أتمتةٍ مكتوبٌ بعناية، بعناوينه القِطاعية
##، كان يدمّر نفسه بصمتٍ عند الحفظ — ففي ملفّ الجدولة كلُّ سطرٍ يبدأ بـ##يَعلَمُ حيث تنتهي مهمّةٌ وتبدأ أخرى، فكان مخطّطُ الموجّه يحطّم الأتمتة إلى شظايا يتيمة: المهمّةُ تحتفظ بما قبل قسمها الأول فحسب، والباقي يقبع في الملف ركاماً، والمحاولةُ الثانية لا تزيد الفوضى إلا ضِعفاً. تُتُبِّع الخللُ على جهازٍ حقيقي وأُغلق بابُه في كلّ موضعٍ يمكن أن يقع فيه. لصقُ موجّهٍ الآن يخفض عناوينه##درجةً واحدة تلقائياً — فـ###تُقرأ بالمخطّط نفسه والمجدولُ لا يمسّها — مع ملاحظةٍ واضحة تقول كم عنواناً عُدِّل؛ وعلامةُ التعليق HTML، التي لا صيغةَ آمنة لها داخل مهمّة، تُرفَض رفضاً صريحاً بدل أن تُفسد الملف. ومسارُ التحرير عبر nano/vim نال الحمايةَ نفسها: حفظُ كتلةٍ اكتسبت صفوفَ##إضافيةً صار يسأل — أتُخفَض، أم يُبقى الانقسامُ عن عمد، أم يُلغى — بدل أن يشطر أتمتتك بصمت. - القائمة تكفّ عن إضاعة موضعها. كذبتان كانت شاشةُ الأتمتة في الطرفية تقولهما بعد الحفظ، وقد زالتا. حفظُ مهمّةٍ أو إعادةُ جدولتها كان يقذفك عائداً إلى القائمة: القائمةُ تبحث عن المهمّة باسمها القديم فتستنتج أنها اختفت وتنسحب — صارت الآن تتبع الجدولةَ المعادَ تسميتُها إلى عنوانها الجديد، وتُمهل الخادمَ إعادةَ تحميله بدل أن تصدّق أولَ قراءةٍ بعد الكتابة. وتلك اللحظةُ نفسها بعد الحفظ كانت قد ترسم «أتمتة (0)» فوق ملفٍّ يحمل مهامَّ حيّة. القائمةُ الفارغة لا تُصدَّق الآن إلا حين يوافق الملفُ على أنه فارغٌ فعلاً — وإذا كان الملفُ يحمل عناوينَ مهامَّ لم تعد تُقرأ كجدولات، تقول الشاشةُ ذلك بحروفه، وهو الفرق بين «لا أتمتة لديك» و«أتمتتك موجودةٌ لكنها معطوبة».
v1.0.264
ميزات جديدة
- الطرفية تتعلّم استقبال موجّهٍ حقيقي. كانت كتابةُ ما يتجاوز جملةً واحدة في الطرفية فخّاً: لصقُ موجّهٍ متعدّد الأسطر كان يُطلق سطرَه الأول إلى الوكيل في منتصف اللصق ويبعثر الباقي، وShift+Enter كان يرسل الرسالة ببساطة. صار صندوقُ الدردشة الآن محرِّرَ أسطرٍ متعدّدةٍ حقيقياً. اللصق آمن — الكتلة الملصوقة مهما كان حجمها تحطّ كاملةً، كلُّ سطرٍ ظاهرٌ في صفّه، ولا يُرسَل شيءٌ حتى تضغط Enter. وShift+Enter يبدأ سطراً جديداً على الطرفيات التي تتحدّث بروتوكول المفاتيح الحديث — iTerm2 وGhostty وkitty وWezTerm وأشباهها — وOption+Enter أو Ctrl+J يفعلان الشيءَ نفسه في كلّ مكان. غيّرتَ رأيك؟ Ctrl-C يُسقط المسوَّدة بدل أن يُنهي الجلسة. وعلى كونسول ويندوز، حيث لا سبيل إلى اعتراض ضغطات المفاتيح، تُخاط الكتلةُ الملصوقة من جديد في رسالةٍ واحدة بدل أن تُرسَل سطراً سطراً. والنصُّ الملصوق يُنظَّف من محارف التحكّم الشاردة، فلا يستطيع لصقٌ خبيثٌ برمجةَ طرفيتك أبداً.
- نسخٌ ولصقٌ لكلّ موجّه. المشاريعُ والإجراءاتُ والأتمتةُ ووثائقُ التخصيص الثلاث نالت كلُّها الزوجَ نفسه من الأوامر: نسخ يضع التعليمات أو الموجّه على حافظة نظامك — pbcopy على macOS، والحافظةُ الحقيقية على ويندوز ولينكس، وعبر SSH يملأ الحافظةَ على الجهاز الذي تجلس إليه — ولصق يفتح إدخالاً متعدّدَ الأسطر يأخذ البديلَ كاملاً دفعةً واحدة ويكتب فوق الحقل كلِّه، كما يقول تماماً. ولصقُ موجّهِ أتمتةٍ عمليةٌ جراحيةٌ دقيقة: عنوانُ الجدولة وعلاماتُ الملفات والمجلدات المرفقة تُحفَظ بايتاً بايتاً — الموجّهُ وحده يتغيّر. والسكربتات تنال كلَّ ذلك مجاناً أيضاً:
cat new-prompt.md | wolffish procedures paste <id>سطرٌ واحد.
تحديثات
- التحرير يفتح nano لا vim. كلُّ «تحرير» في الطرفية — تعليماتُ مشروع، موجّهُ إجراء، heartbeat.md — يفتح الآن nano افتراضياً على macOS ولينكس والمفكّرة على ويندوز، حتى لو قال
$EDITOR=vimمضبوطٌ من سنينَ خلت غيرَ ذلك: محرِّرٌ نمطيٌّ لا تعرف الخروجَ منه هو أسوأ مكانٍ يهبط فيه من أراد تعديلَ موجّهٍ فحسب. تريد vim رغم ذلك؟ اضبط$WOLFFISH_EDITORفيُحترَم حرفياً، بأعلامه وكلِّ شيء. ومفكّرةُ ويندوز 11 ذاتُ الألسنة — التي تسلّم الملفَّ إلى نافذةٍ مفتوحةٍ أصلاً وتعود فوراً فيضيع التعديلُ بصمت — صارت تُكشَف الآن ويُنتَظر صاحبُها بدل ذلك.
v1.0.263
تحديثات
- المحادثة التي لا يُطفأ نورها. تنظيفُ بريدٍ استغرق ستَّ عشرة دقيقة تلاشى في منتصف عمله — النثرُ وبطاقاتُ الأدوات، وحتى الأسئلة التي طرحها وولفيش — تاركاً الهاتفَ وسطحَ المكتب كليهما يحدّقان في وميض تفكيرٍ وحيد، إلى أن أُوقف التشغيل فعاد كلّ شيءٍ دفعةً واحدة. أُغلق بابُ هذا الاختفاء بأكمله. كان العرض الحيّ للدور الجاري يُحجَب بصمت لحظةَ يتجاوز حدَّه على السلك؛ صار الآن يُشذَّب ليتّسع ويصل دائماً — حمولاتُ الأدوات الأقدم تُقصَّر أوّلاً، والكلماتُ الجاري كتابتها تبقى كاملة، والنصُّ المحفوظ يستعيد كلَّ بايتٍ لحظةَ انتهاء الدور. والهاتف الذي يعود في منتصف التشغيل — واستردادُ iOS تطبيقاً في الخلفية هو الحال اليومي — لم يعد يرجع إلى شاشةٍ فارغة: بل يسأل سطحَ المكتب عن الدور حتى الآن فيعيد رسم النثر والبطاقات والموجّه وأيَّ سؤالٍ ما يزال ينتظر جوابك — وكان من قبل قد يضيع ضياعاً تامّاً حتى يظلّ التشغيل منتظراً إلى الأبد بطاقةً لا يراها أحد. وسطحُ المكتب صار أخيراً يشاهد التشغيلات المبدوءة من الهاتف حيّةً: الدور الذي يبدأ على هاتفك يتدفّق الآن إلى نافذة سطح المكتب لحظةَ حدوثه — والنافذة المفتوحة في منتصف التشغيل تلتقط القصّة بدل دوّارة انتظار.
- المحادثات الكبيرة تصل كاملة. كانت المحادثة الطويلة كثيفةُ الأدوات قد تنمو فتتجاوز ما يسمح به النفق الآمن في إطارٍ واحد — والجوابُ المتضخّم لا يصل متأخّراً بل يقطع الاتصال، ثم تعود كلُّ محاولةٍ لفتح تلك المحادثة فتقتل الوصلة من جديد. صارت النصوص أيّاً كان حجمها تسافر إلى هاتفك الآن مقطّعةً وتصل كاملة، بايتاً بايتاً. ونسخةُ الهاتف الأقدم التي لا تعرف التقطيع بعدُ تتلقّى النصَّ مشذَّباً ليتّسع بدل نفقٍ ميّت — تنازلٌ رشيق، لا عطب.
- أدوات جوجل، مُصلَحةً ومُثبَّتة. كانت أدوات جوجل قد انزلقت بصمتٍ عن سطر الأوامر الذي تحتها: إنشاءُ أحداث التقويم كان معطوباً بالكامل، وقوائمُ المهامّ وقراءةُ الجداول وكتابتُها تستعمل صيغاً بائدة، وسردُ تصنيفات جيميل يفشل بخطأ مُحيّر من المُحلِّل، وحذفُ ملفٍّ من درايف أو حدثٍ من التقويم أو مهمّة لم يكن لينجح أبداً — إذ كان سطر الأوامر يرفض بصمت كلَّ حذفٍ غير تفاعلي. أُصلح ذلك كلُّه وجرى التحقّق منه أمراً أمراً على الثنائية الحقيقية، على النسخة الموجودة أصلاً على الأجهزة وعلى أحدث إصدارٍ معاً. والمثبِّت لم يعد يجلب «الأحدث أيّاً كان»: بل ثُبِّت على النسخة المدقَّقة بعينها، فلا يستطيع سطرُ الأوامر بعد اليوم أن يغيّر صيغته من تحت إصدارٍ منشور — صارت الترقيات مقصودةً، والتدقيقُ أوّلاً. وإن اختلفت يوماً نسخةٌ عتيقة، فالخطأ الآن يسمّي العلاج — حدِّث من الإعدادات — بدل أن يرسل النموذج يخمّن أوامر صدفة.
- إضافة متصفّحٍ تداوي نفسها. تُبقي المتصفّحات شيفرةَ الإضافة القديمة تعمل طويلاً بعد وصول التحديث إلى القرص — وهي تُبلغ عن نسخةٍ تبدو حديثة، فلا شيء يأمرها بإعادة التحميل. صار وولفيش يعامل العَرَضَ الوحيد الموثوق — ردَّ «أمرٌ مجهول» — دليلاً على نسخةٍ بائتة: فيطلب من المتصفّح إعادة تحميل الإضافة تلقائياً، ونداءُ تسمية اللسان التجميلي الذي كان يُفشل المهمّة ثلاث مرّاتٍ متتالية صار يتخطّى بهدوءٍ مع ملاحظة. وتصحب هذا الإصدارَ الإضافةُ 0.1.58، وكلُّ متصفّحٍ متّصل يلتقي عليها عند المصافحة التالية.
v1.0.262
ميزات جديدة
- نقراتٌ لا تعرف الكذب. جلسة شاشةٍ أخطأت زرَّ إغلاقٍ عرضُه ستة عشر بكسلاً ثلاثَ مرّات — ثمّ أقنعت نفسها بأنّها أصابته — شُرِّحت إطاراً إطاراً، وسُدَّت كلّ ثغرةٍ تسلّلت منها في استخدام الحاسوب. التقريب يخبرك حين لا يقرّب فعلاً: كبِّر منطقةً أوسع من اللازم فيحذّرك الناتج أنّ المشهد بالكاد أوضح من لقطة الشاشة، ويسمّي لك بالضبط المنطقةَ الأضيق التي تمنحك تقريباً حقيقيّاً بثلاثة أضعاف. ولم يعد المؤشّر يُعلَّم بحلقةٍ وحدها: في كلّ مشهد تصويبٍ تمتدّ خيوطٌ رفيعة عبر الصورة كلّها مارّةً ببكسل المؤشّر بالضبط، فعبارة «العلامة على الهدف» صارت شيئاً يُرى لا شيئاً يتخيّله نموذج — وصارت الصورة المكبّرة بعد النقر بثلاثة أضعاف بدل اثنين. وفوق ذلك كلّه، كلّ نقرةٍ تعود الآن بتقرير تغييرٍ موضوعي: تُلتقط الشاشة قبل الضغطة وبعدها وتُقارَن البكسلات، فيقول الناتج بصراحة إن كان شيءٌ قد تغيّر فعلاً — والنقرة التي أصابت فراغاً تُسمّى خطأً بالأرقام، لا تُترك لقراءةٍ متمنّية. ولأنّ صفحةً بطيئة أو شاشةً ثانية قد تُخفيان أثراً حقيقيّاً، بات محظوراً على النموذج صراحةً إعادةُ نقر أزرار الإرسال ونحوها استناداً إلى التقرير وحده — تحقَّق أوّلاً ثمّ تصرَّف. ويمكن للنقرات الآن أن تحمل اسم هدفها («علامة ✕ على لسان جيت هاب»)، فيعود الاسم في التحقّق ليتأكّد النموذج من الشيء الصحيح.
تحديثات
- المؤشّر صار بيد النموذج. نال التوهّج الأزرق إعادةَ تصميمٍ ومالكاً جديداً. فهو الآن يلفّ الحوافّ الأربع كلّها للشاشة المُتحكَّم بها بثبات — كان الإطار السفلي الغائب غرابةً من غرائب ماك أو إس تدفع نافذة التراكب خارج الشاشة، عُثر عليها وأُصلحت — بشريطٍ أنحف وأكثر حياةً يتنفّس ما دام العمل جارياً ويومض مع كلّ التقاط. وفي منتصف الشاشة إشعارٌ شفّافٌ صغير — «وولفيش يلتقط شاشتك» بلغة تطبيقك، والعربيةُ منها — فلا يبقى شكٌّ فيما يجري. وانتقل المفتاح إلى حيث تسكن المسؤولية: وولفيش نفسه يُشعل المؤشّر قبل أوّل نظرةٍ إلى شاشتك ويطفئه فعلاً أخيراً — أنجز أم استسلم — بدل مؤقّتٍ يطفئه بصمت. مشتعلٌ تعني أنّك مُراقَب، ومطفأٌ تعني لا: صارت الإشارة تقول ما تعنيه بالضبط.
v1.0.261
ميزات جديدة
- ديب سيك يتعلّم الإبصار. أطلقت ديب سيك أوّل نماذجها المبصرة — DeepSeek-V4-Flash-Vision-Exp — ووولفيش يدعمه من يومه الأوّل. اختره دماغاً لك وسيغدو ديب سيك أخيراً يرى ما ترسله: الصور ولقطات الشاشة التي ترفقها برسالتك، و— وهذا بيت القصيد — لقطات الشاشة التي تلتقطها أدواته هو، ما يعني أنّ التحكّم بالحاسوب والمتصفّح صار يعمل حقّاً على ديب سيك بدل نموذجٍ أعمى ينقر بالخيال. وقد جرى التحقّق من كلّ مسارٍ حيّاً على الواجهة البرمجية الفعلية قبل الإصدار: يقرأ الصور المرفقة، ويقرأ لقطات أدواته، ويحتفظ بطبع V4-Flash كاملاً — سياق المليون رمزٍ نفسه، وأنماط التفكير نفسها، وبالسعر نفسه. ويظهر النموذج في الإعدادات حاملاً شارة الرؤية، ويزول تحذير انعدام البصر في لوحة التحكّم بالحاسوب من تلقاء نفسه لحظةَ اختياره.
تحديثات
- أسعار ديب سيك كما هي فعلاً. نقلت ديب سيك تشكيلتها كلّها إلى فوترة أوقات الذروة وخارجها — فساعات خارج الذروة تكلّف النصف تماماً — وكان جدول الأسعار في الإعدادات قد تخلّف بصمت. صار الآن يعرض النطاقات الحقيقية الحالية لكلّ نماذج ديب سيك، الطرف الأدنى أوّلاً، فما تقرؤه بجانب النموذج هو ما ستدفعه فعلاً.
v1.0.260
ميزات جديدة
- استخدامٌ للحاسوب يثبت تصويبه. كان التحكّم في الشاشة عملاً من أعمال الإيمان: لقطة شاشة، وتخمينُ بكسلات الزرّ، ونقرة، ورجاء. أُعيد بناء تلك الحلقة كلّها حول التحقّق بدل الرجاء. صارت كلُّ لقطة شاشةٍ تحمل علامة تصويبٍ متقاطعة تُظهر موضع المؤشّر بالضبط؛ والهدف الصغير أو المزدحم لم يعد يُحدَّق فيه — فثمّة تكبير (zoom) جديد يعيد التقاط تلك المنطقة وحدها بالدقّة الأصليّة، فيصير الزرّ الضئيل عشرات البكسلات عرضاً قبل أن يُنقَر أصلاً؛ وكلُّ نقرةٍ وتحريكٍ وتمريرٍ يعود ومعه صورةٌ مقرَّبة مكبَّرة تثبت أين حطّ بالضبط — فالخطأ يظهر فوراً ويُصحَّح داخل الصورة المقرَّبة نفسها، لا بتخمينٍ جديد على الإطار الكامل. وتحسّنت الأيدي مع الأعين: فعلُ سحبٍ (drag) جديد للسحب والإفلات والمنزلقات وتحديد النصّ، واختصاراتٌ تُكتَب كما تُقال (
cmd+shift+s)، والعربيّة والإيموجي والنصوص الطويلة تصل كما كُتبت تماماً بدل أن تُشوَّه حرفاً حرفاً. وتعدُّد الشاشات لم يعد يحتاج حساباً — فالإحداثيّات تعني دائماً الصورةَ المنظورَ إليها — والشاشات فائقة العرض تبقى مقروءة، والشاشة المقودة ترتدي توهّجاً أزرق ناعماً لتعلم دائماً أنّ وولفيش على المقود؛ والتوهّج غير مرئيٍّ في لقطاته هو، ويتلاشى وحده حين يتوقّف العمل. وتتقاعد لقطات الشاشة الأقدم من سياق النموذج كلّما وصلت الأحدث، فتؤسّس الجلسة الطويلة نقرتها التالية على الشاشة الحاليّة وتبقى ميسورة الكلفة — وإن كان دماغك المختار لا يرى الصور إطلاقاً، صارت لوحة استخدام الحاسوب تقولها صراحةً بدل أن تدع نموذجاً أعمى ينقر بالخيال. - المهارات التي يبنيها صارت تحمل برهانها. يستطيع وولفيش أن يؤلّف أدواتٍ جديدةً لنفسه — وصار اليوم يعرض ذلك بنفسه حين يلمحك تكرّر نمطاً، ويُحاسَب على معيارٍ حين يفعل. كلُّ مهارةٍ يصنعها تُختَم بأنّها من صنعه وترتدي شارة وولفيش في الإعدادات ← القدرات، مميَّزةً عن الرسميّة والمستورَدة — والمهارة المبنيّة حديثاً أو المحرَّرة حديثاً تظهر غير مختبَرة (Untested) حتى تنجح إحدى أدواتها في نداءٍ حقيقيّ. الشارة لا تُنتزَع بالكلام، بل تُكسَب كسباً — وتزول حيّةً لحظةَ يمرّ أوّل نداءٍ صادق.
- يعرف أنّك كنت غائباً. عُد إلى محادثةٍ بعد ثلاثة أسابيع وكان وولفيش يجيب كأنّك لم تغادر قطّ — متعاملاً مع «اليومِ» الذي في النصّ والأسعارِ والحال الجارية على أنّها ما زالت راهنة. صار استئناف محادثةٍ بعد فجوةٍ حقيقيّة يخبر النموذج كم مضى من الوقت — «منذ نحو 3 أسابيع»، مع الطابع الزمنيّ الدقيق — ويذكّره بأنّ الأدوار الأقدم تكلّمت من «آنٍ» أقدم، فيعيد التحقّق ممّا يهمّ بدل أن يقتبس الماضي بثقة.
تحديثات
- صندوق الكتابة صار بطاقةً واحدة. أُعيد رسم مدخل المحادثة بطاقةً واحدةً هادئة: صندوق الرسالة هو السطح، ومحادثة جديدة ومشروعُك على حافّته العليا، ومبدّل النموذج وعدّاد الاستهلاك في تذييله، والإرفاق والمجلّد والميكروفون وزرُّ إرسالٍ مستدير في آخره. لم ينتقل شيءٌ من مكانه خلف ظهرك — احتفظ كلُّ زرٍّ بسلوكه تماماً؛ الإطار وحده ذاب. ونال الهاتف الرسمة نفسها، ومعها ما لم تعرفه شاشته يوماً: النموذجُ الذي سيجيب، مرتدىً رقاقةً تقرؤها بلمحةٍ وتنقرها لتغيّرها، ومنتقيا المزوّد والنموذج انبسطا صفوفَ رقاقات — القائمة كلُّها على سطرٍ واحدٍ ينزلق — وعلى iPhone سهمٌ عائمٌ يُنزل لوحة المفاتيح أخيراً دون أن يكلّفك حرفاً من مسوّدتك.
- يتعلّم من كلماتك، لا من درجاتك. تقاعد تقييم الأدوار من 0 إلى 10 في كلّ مكان — الشريط فوق صندوق الكتابة، ودعوات «قيّم هذا الردّ» على تيليجرام وواتساب، والأرقام المجرّدة، وأمر
/rateفي الطرفيّة، والمفاتيح التي كانت تحكمها. كان تقييم كلّ إجابةٍ واجباً منزليّاً، والأرقام تخبر المراجعة الليليّة أقلَّ ممّا تقوله أنت أصلاً في الحديث بطبيعتك — فصارت المراجعة تقرأ ذلك بعينه، كلماتِك أنت في النصّ، حين تراجع كلَّ محادثةٍ استقرّت وتطوي دروسها في دليلها العمليّ. والرقم الذي تكتبه عاد رسالةً عاديّة، على كلّ سطح. - لا هراء تائهاً في الخاتمة بعد اليوم. بعض النماذج «تقول لا شيء» أحياناً بكتابة علامة نهاية التسلسل الداخليّة نصّاً مرئيّاً —
<|eos|>حرفيّةً جاثمةً في محادثتك أو ملتصقةً بعنوان محادثة. وولفيش لا يعيد كتابة ما يقوله نموذجٌ أبداً، فيصلح الأمر حيث ينبغي: يلحظ التسريب ويخبر النموذج، وصار إنهاء الدور بصمتٍ حقيقيٍّ معترفاً به صراحةً، فلا يُدفَع النموذج إلى الحشو أبداً. ونالت وصلة الهاتف المقترن صبراً معها — فالاتصال المشغول للحظةٍ يُسأل مرّتين قبل أن يُستبدَل، بما يُنهي صنفاً كاملاً من إعادات الاتصال العبثيّة في منتصف الاستعمال، وعلى المُرحِّل صارت عثرة مستوى التحكّم تكلّف الإشعارَ الذي كانت تحمله، لا النفقَ الذي يسير بجانبه.
v1.0.259
ميزات جديدة
- انظر ما يراه وولفيش. يعمل وولفيش داخل متصفّحك الحقيقيّ — يقرأ الصفحات ويملأ النماذج وينقر عبر مساراتٍ كاملة — وكانت كلُّ لقطة شاشةٍ يأخذها في الطريق لعينيه هو: فعلى هاتفك، وعلى تيليجرام أو واتساب، كانت مهمّة التصفّح الطويلة جدارَ صمتٍ في آخره جواب. صار اليوم يريك اللحظات التي تهمّ، لحظةَ وقوعها: صفحة النتائج التي كان يطاردها، والنموذج المملوء قبيل إرسالٍ مهمّ، والتأكيد بعده مباشرة، والحال الأخيرة التي تثبت أنّ العمل تمّ — تُرسَل إلى المحادثة التي أنت فيها فعلاً، صورةً في التطبيق وصورةً حقيقيّةً على تيليجرام وواتساب، تصل في منتصف المهمّة مع سطر شرحٍ واحد. والمفاجآت تُعامَل المعاملة نفسها — صفحة خطأ، جدار تسجيل دخول — فحين يبلغك بعائق، ترى العائق. وهو عن قصدٍ ليس سيلاً: فالتنقّل والتمرير الروتينيّان يبقيان في السرّ، فتكون الحفنة الواصلة هي اللقطات التي تروي الحكاية.
- وتشغيلات سير العمل تُري صفحاتها أيضاً. في تشغيل سير عمل، كثيراً ما يتولّى الوكلاءُ التصفّحَ — والرئيس وحده يكلّمك. صار الوكلاء يضعون لقطات معالمهم في السجلّ، معلَّمةً بأنّها جديرةٌ بالرؤية، والرئيس يُمرّر البليغَ منها إلى محادثتك مع تقدّم التشغيل. كانت البطاقة الحيّة تريك دائماً أنّ الأمور تتحرّك؛ صرتَ الآن ترى كيف تبدو أيضاً.
v1.0.258
تحديثات
- في الطابور خلف لا شيءٍ إطلاقاً. اضغط شغّل الآن على أتمتةٍ وقد يُقال لك إنّها في الطابور — بينما الصفحة أمامك لا تُظهر شيئاً يعمل البتّة. عطلان منفصلان كانا يحجزان خاناتٍ لا يشغلها عمل. كانت الأتمتة تُتعقَّب بموضعها في ملفّ نبض القلب لا باسمها، فتحرير الملفّ في منتصف تشغيلٍ قد يسلّم هويّةَ أتمتةٍ إلى أخرى — وكلُّ ضغطةٍ لاحقة تُطوى في تشغيلٍ لم يكن لها يوماً. صارت الأتمتة تُتعقَّب بعنوانها، الذي لا يحرّكه تحرير. والأخفى والأسوأ: إعلانُ تشغيلٍ عن نفسه لنافذةٍ في منتصف إغلاقها قد يخفق قبل أن تُحجَز الخانة للإفراج عنها، فتبقى الخانة محجوزةً عمرَ التطبيق كلَّه — ثلاثٌ من تلك، وكلُّ أتمتةٍ وإجراءٍ وضغطٍ ومراجعةٍ يقف في الطابور إلى الأبد خلف عملٍ انتهى منذ ساعات. صارت الخانة تُحرَّر كيفما جرى إعلانها.
- تُخبَر بما تنتظره فعلاً. كانت كلمة «في الطابور» تؤدّي عمل جوابين مختلفين تماماً. انتظارُ خانةٍ يعني أنّه سيعمل وحده، قريباً — والرسالة تقول كم تشغيلاً يمسك بالمجمّع، وهو رقمٌ يستحقّ أن يكون عندك، لأنّ تشغيلات الضغط والمراجعة والإجراءات تتقاسم الخانات نفسها ولا ترسم بطاقةً ما لم تطلبها. أمّا الطيُّ في تشغيلٍ جارٍ أصلاً فيعني ألّا تشغيل ثانيَ البتّة — الزرُّ لم يفعل شيئاً، عن قصد. صار وولفيش يقول أيَّهما، في التطبيق وعلى هاتفك وفي الطرفيّة سواء — والنموذجُ يُخبَر الأمر نفسه بالوضوح نفسه، فيكفّ عن إعادة إطلاق أتمتةٍ اصطفّت أصلاً أو التحقّق منها في حلقة.
- تعليمات المشروع التي جئت لتقرأها. كانت المحادثة الجديدة داخل مشروعٍ تستقبلك باسم المشروع وأوّل سطرين من تعليماته، منتهيةً بثلاث نقاط. تلك التعليمات هي السبب الكامل في سلوك المحادثة، وسطران نادراً ما يكفيان لتذكُّر ما قلته لها. صارت المحادثة الفارغة تعرض التعليمات كاملةً، في الكتلة القابلة للتمرير نفسها التي تستعملها صفحة المشاريع — حاضرةً لتُقرأ قبل أن تكتب.
v1.0.257
تحديثات
- الخطوة صفر من الاقتران. كان اقتران هاتفك يفترض دائماً الشيءَ الوحيد الذي لم تساعد فيه اللوحة قطّ: أن يكون التطبيق على الهاتف أصلاً. وولفيش موبايل يقيم على App Store وGoogle Play، وصارت لوحة الإعدادات ← القنوات ← الجوّال تحمل بطاقة «احصل على التطبيق» وفيها الرابطان نفساهما — App Store لهواتف iPhone وأجهزة iPad، وGoogle Play لأندرويد — فصار الطريق يُقرأ كما يُسلَك: ثبّت، افتح، امسح، بلا شيءٍ تبحث عنه في الوسط. وملفّ README الخاصّ بالمشروع على GitHub يوزّع الشارتين نفسيهما، لمن وصل من هناك أوّلاً.
v1.0.256
تحديثات
- أمرُ الطرفيّة الذي لم يقل شيئاً قطّ. كلُّ مستخدم ويندوز كتب
wolffishنال الجواب نفسه: لا شيء — لا خطأً، بل صمتاً. فوولفيش يُشحَن تطبيقاً نافذيّاً، وويندوز لا يمنح البرنامج النافذيّ أيَّ سبيلٍ للكتابة في الكونسول الذي شغّله — تفصيلةٌ لا يستطيع أيُّ غلافٍ سترها. صار الآن رفيقُ كونسولٍ صغير بجانب التطبيق، عملُه الوحيد أن يمسك طرفيّةً حقيقيّةً مفتوحةً ويسلّمها إلى وولفيش — فصار الأمر أخيراً يتصرّف تصرُّفَ الأوامر: يفتحwolffishجلسةً ويبقى مفتوحاً بدل أن يخرج قبل أن تبلغ لوحة المفاتيح، والأنابيب تعمل في الاتجاهين (type notes.txt | wolffish -p "what changed?"يرسل الملفّ حقّاً)، وتعود الألوان ورسوم الصناديق وعرضُ نافذتك الحقيقيّ، والسرُّ المكتوب عند المطالبة يُخفى من جديد بدل أن يبقى جاثماً في سجلّ شاشتك. وكفّت لوحة الإعدادات أيضاً عن اتّهام برنامجٍ آخر بأخذ الاسم — كانت تقرأ الجواب الخطأ من ويندوز، والأمرُ مثبَّتٌ صحيحاً طوال الوقت. - وGit Bash يجده أيضاً. يبحث Git Bash عن ملفٍّ اسمه
wolffishبالضبط، بينما تبحث أصداف ويندوز عنwolffish.cmd— كان المجلّد على المسار، لكنّ الأمر بالنسبة إلى bash غيرُ موجود. صار وولفيش يثبّت الاثنين، فيجد cmd وPowerShell وGit Bash كلٌّ ما يبحث عنه، وتنال الجلسة داخل Git Bash طرفيّةً حقيقيّةً موصولة — فتتصرّف الألوان والمطالبات والكتابة كما ينبغي — بينما تُترَك الأنابيب وإعادة التوجيه كما كانت تماماً.
v1.0.255
ميزات جديدة
- البطاقة التي كفّت عن الحضور بلا دعوة. يدير وولفيش أعمالاً في الخلفيّة نيابةً عنك — أتمتة، أو إجراءٌ بدأه النموذج، أو المراجعة الليليّة، أو جولتا الضغط اليوميّة والأسبوعيّة — وكان كلٌّ منها يُطفو بطاقةً حيّةً فوق محادثتك وهو يعمل، سواءٌ أعنيتَ بالمشاهدة أم لم تعنِ. صارت كلُّ تلك البطاقات مطفأةً افتراضيّاً، ولكلّ عائلةٍ مفتاحها: الأتمتة والإجراءات يتقاسمان واحداً في الإعدادات ← القنوات ← داخل التطبيق، وللضغط مفتاحه تحت المعرفة ← الضغط، وللمراجعة مفتاحها تحت المعرفة ← المراجعة. الإيقاف يغيّر شيئاً واحداً بالضبط — ظهورَ البطاقة. فالتشغيل يحدث كما هو، ويسجّل، ويبلّغ في صفحته، والتشغيل الفاشل ما زال يقولها. والمفاتيح تسري لحظةَ قلبها — على التشغيل الجاري لا التالي فحسب — وتتبعك عبر الأسطح: اقلب واحداً في نافذةٍ أخرى أو من هاتفك المقترن، يوافق هذا التطبيق فوراً. والأربعة كلُّها تُحرَّر من الهاتف والطرفيّة، بجانب الإعدادات التي تجاورها.
- وهاتفك ينال جوابه الخاصّ. البطاقة الجديرة بمكتبك ليست تلقائيّاً جديرةً بجيبك: فالهاتف المقترن يحمل مفاتيحه هو، منفصلةً عن مفاتيح سطح المكتب — فيستطيع تشغيلٌ خلفيٌّ أن يعلن نفسه على الجهاز الذي تجلس إليه ويلزم الصمت على الهاتف في جيبك، أو العكس. وهي مطفأةٌ افتراضيّاً هناك أيضاً. وصارت تشغيلات الإجراءات تُعرَض أصلاً: كانت تركب مجمّع الخلفيّة نفسه ثمّ تُرشَّح كلّيّاً — صارت تظهر كأيّ تشغيلٍ آخر، تحت مفتاح الأتمتة، لأنّ «هل شيءٌ يعمل لأجلي الآن» سؤالٌ واحد، لا سؤالان.
v1.0.254
ميزات جديدة
- قراءة الخطّ الدقيق. كان وولفيش يستطيع أن يُري النموذج صورةً، لكن صورةً واحدةً بحجمٍ واحد: الإطار الكامل، مقلَّصاً إلى 1024 بكسلاً — يكفي للتعرّف على غرفة، ولا ينفع في إيصالٍ أو لقطة شيفرةٍ أو تسميات محور مخطّطٍ أو رقمٍ تسلسليّ. صار النموذج يختار المشهد: تأخذ
image_viewمنطقة اقتصاصٍ ودقّةً وخيار PNG بلا فقدٍ لكلّ ما صُنع من نصّ، فيسحب الجزء المهمّ من صورة اثني عشر ميجابكسل ويقرؤه بحدّته الأصليّة. والاقتصاص ليس أوضح فحسب، بل أرخص — فالثمن يتبع البكسلات المرسَلة فعلاً، لا حجم الملفّ على القرص. ولا يحتاج شيءٌ من هذا انتباهك: اسأل عن تفصيلةٍ ويقرّر النموذج كم يقترب، والمشهد الأكبر من أن يُرسَل يُقلَّص تلقائيّاً بدل أن يتلاشى بصمتٍ في الطريق.
تحديثات
- ما الذي استلمه فعلاً. اسأل نموذجاً هل رأى صورتك حقّاً وكان يراوغ — لسببٍ وجيه: لا شيء أخبره قطّ. صارت الأداة تصرّح أنّ البكسلات مرفقة، وأنّها تدوم لهذا الدور وحده، فبدل أن يجيب الأسئلة اللاحقة من وصفٍ يتلاشى يفتح الصورة من جديد. والمزوّد الذي يرفض صورةً لسببٍ عرضيٍّ لم يعد يُعمي نموذجاً قادراً بقيّةَ الجلسة — يعاود وولفيش إرسال الصور بين حينٍ وآخر — وتقدير المساحة التي تشغلها الصور كان يبالغ فيها نحو خمسةٍ وعشرين ضعفاً، وهو ما قد يستدعي في محادثةٍ مثقلةٍ بالصور ترتيباً لا داعي له لسياقٍ لم يمتلئ قطّ.
v1.0.253
تحديثات
- لقطة الشاشة التي وصفها دون أن يراها. لقطة شاشة، أو صورةٌ فُتحت بـ
image_view، أو صفحةٌ التُقطت في المتصفّح — يأخذها وولفيش منذ زمن. ما لم يكن يفعله، على أكثر النماذج المبصرة، هو أن يريها الصورةَ: كان الشرح يخرج والبكسلات تبقى في البيت. كان Claude وChatGPT وكلُّ ما يمرّ عبر OpenRouter يستلم الصورة أصلاً؛ أمّا Grok وKimi وQwen وStepFun وGLM فكانت تعمل من التسمية وحدها، ومعها نسخُ الرؤية من MiniMax وMimo. صارت تستلم الصورة نفسها، في السطر — ونموذجا MiniMax وMimo الأساسيّان ما زالا يستلمان الشرح وحده، لأنّهما لا يبصران أصلاً. واللقطة الأكبر من أن تُرسَل تبقى على القرص ومسارُها في الشرح بدل أن تُدفَع إلى السلك لتفشل هناك، والمزوّد الذي يرفض الصور داخل نتيجة أداةٍ لم يعد يقتل الدور: يعيد وولفيش المحاولة دونها، ثمّ دون أيّ صور، ويتذكّر ما نجح بقيّةَ الجلسة. - اختيارُ مظهرك ينجو من تبديل اللغة. على الهاتف، كان تبديل لغة التطبيق قد يعيده بألوان هاتفك لا بألوانك — «فاتح» مختارٌ على هاتفٍ داكنٍ يعود تطبيقاً داكناً، والإعدادات ما زالت تُظهر «فاتح» مختاراً. صار التطبيق يتثبّت من أنّ النسق الذي طلبه هو الظاهر فعلاً قبل أن يظهر، فيعود اختيارُك مع لغتك.
v1.0.252
تحديثات
- إعادة الاتصال التي انتظرت نصف دقيقةٍ جواباً كان عندها. كان مسبار الاستيقاظ الذي جعل إعادة الاتصال فوريّةً قد يتركك أحياناً تشاهد النقيض: هاتفٌ عاد، وبلغ المُرحِّل، واستلم كلَّ ما يحتاج — ثمّ جلس ثلاثين ثانيةً كاملةً قبل أن يقرّ بأنّه متّصل. كلُّ مصافحةٍ تُشهر مهلة ثلاثين ثانية، وحين تُستبدَل محاولةٌ في منتصف طيرانها لم يكن شيءٌ يلغي مؤقّتَ المحاولة المهجورة: بعد نصف دقيقةٍ ينطلق ويُفرغ صندوقَ بريد خليفته — المصافحةِ التي حلّت محلّه وتنتظر في تلك اللحظة بعينها جواباً وصل أصلاً. صارت المصافحة لا تمسح الخانة إلّا ما دامت الخانة خانتَها — فتنتهي إعادة الاتصال لحظةَ يجيب المُرحِّل، وهو ما كان ينبغي أن تفعله من البداية.
v1.0.251
ميزات جديدة
- Grok 4.6، وقرصُ تفكيرٍ يدور أخيراً. ينضمّ Grok 4.6 إلى قائمة النماذج ويصير افتراضيَّ xAI — سياقُ 500K، ورؤية، وطرازٌ رياديّ، بسعر 4.5 الذي يخلفه. ويصل ومعه تصحيحٌ يبلغ كلَّ Grok تستعمله: كان وولفيش يظنّ مفتاح تفكير النموذج مفتاحَ وضعين، فانضغطت الإعدادات الثلاثة التي تختارها — تشغيل وعالٍ وأقصى — على درجتين وكان «أقصى» يرسل بالضبط ما يرسله «عالٍ». ومسحُ المُعامل على الواجهة الحيّة روى حكايةً أخرى: إنّه سلّمٌ من خمس درجات، وفوق «عالٍ» درجةٌ لم يستعملها وولفيش قطّ. صارت الإعدادات الثلاثة تحطّ حيث تنتمي — و«أقصى» يبلغ قمّة السلّم أخيراً، ويصير خياراً حقيقيّاً على 4.5 و4.3. وصُحّح رقمان في الكتالوج على جواب الواجهة نفسها: زوج 4.20 يحمل مليون توكن من السياق، لا 256K التي كنّا نعرضها.
- «أقصى» DeepSeek كان يكلّم لا أحد. العطل نفسه، أعمقُ وأخفى: كان جهد تفكير DeepSeek يُرسَل مستوىً أعمق ممّا ينبغي داخل الطلب، حيث لا يشكو شيءٌ ولا يصغي شيء — فلم يبلغ الإعدادُ النموذجَ قطّ. وكانت العلامة جاثمةً في ملاحظاتنا شهوراً: «عالٍ» و«أقصى» قاسا أقلَّ من ثلث بالمئة فرقاً، وذلك ليس إعدادين يتشابهان، بل إعدادان لم يُرسَلا. ومع الحقل في موضعه الصحيح والقياس حيّاً، الفرقُ هو المتوقَّع — «إيقاف» لا يفكّر البتّة، و«عالٍ» يفكّر بجدّ، و«أقصى» يفكّر نحو ضعف «عالٍ» زمناً في مسألةٍ تكافئه. ويأخذ DeepSeek V4 Pro مكانه الصحيح على رأس القائمة طرازَ الثنائيّ الرياديّ.
تحديثات
- هاتفك يعيد الاتصال لحظةَ تنظر إليه. أعد تطبيق الهاتف بعد غياب وقد تلقى عشر ثوانٍ من لا شيء — اتصالاً يُقرأ سليماً ولا يجيب شيئاً، فالهواتف تُعلَّق في منتصف نَفَسها والوصلة تموت ولا أحد صاحٍ ليلحظ. صارت العودة إلى التطبيق ترسل مسباراً وتُلزم الوصلة بجوابٍ في ثوانٍ؛ والوصلة التي لا تجيب تُستبدَل فوراً بلا تراجُعٍ تجلس تنتظره، والتطبيق يمدّ يده إلى سطح مكتبك وهو ما يزال يُقلع. والخروج من مدى Wi-Fi إلى بيانات الجوّال لم يعد يشلّه — فالتطبيق يراقب تحرّك الشبكة ويعيد الاتصال لحظةَ تحرّكها. وصارت نبضات البقاء تُلزَم بجوابٍ في عشر ثوانٍ بدل أن تُستنتَج من صمتٍ طويل، والاقتران الأوّل بالرمز إذا فقد اتصاله في المنتصف يعيد الطلب بصفته الاقترانَ الذي هو — لا أن يطلب منك إعادة اقتران جهازٍ لم يكن يحتاج إلّا إعادة اتصال.
v1.0.250
ميزات جديدة
- هاتفك يكفّ عن الصمت. كان وولفيش يستطيع دائماً أن يرنّ هاتفك، ولم يكد يفعل — فتعليماته هو كانت تقنّن الإشعارات، فينتهي العمل، وتجري الأتمتة، وتحطّ النتائج، وجيبُك صامت. انقلب ذلك الآن: كلُّ دورٍ ينتهي بإشعارٍ واحدٍ يحمل النتيجة الفعليّة — الرقم، والمحصّلة، وما التالي، ونقرةً تفتح المحادثة التي جاء منها بعينها — لأنّك بعد خمس دقائق في مكانٍ آخر، والإشعار يبلغ تطبيقاً مغلقاً أو في الخلفيّة أو هاتفاً بلا إشارةٍ يستلمه لحظةَ عودتها، وهو ما لا تستطيعه نافذةٌ مفتوحة. والعائق والإخفاق والنتيجة الجديرة بفعلٍ لم تعد تنتظر النهاية: تخرج لحظةَ وقوعها، في منتصف التشغيل، فيبلغك السؤال الذي أوقف العمل وهو ما يزال يهمّ. والعمل الطويل يعلن نفسه حين يبدأ، والموجز المجدول يختم بإشعاره، وارتفع معيار الكلمات مع العدد: «اكتملت المهمّة» ليست إشعاراً — أمّا «أُعيد بناء الجدول — 214 صفّاً، وأُصلحت 3 تواريخ مكسورة» فهي كذلك.
- أعلى صوتاً، لا أكثر ضجيجاً. كثرةُ الإشعارات لا تحسُن إلّا إذا لم يكن فيها مكرَّر. ردُّ تيليجرام أو واتساب لا ينال رنّةً ثانيةً أبداً — فتلك الرسالة وصلت الهاتفَ نفسه بإشعارها هي — فهناك يُدَّخر الدفع لما لا تقوله رسالة محادثة: عائق، أو إخفاق، أو نتيجة. والخبر نفسه لا يُرسَل مرّتين أبداً، والحالة الخطرة الوحيدة عولجت من جذرها: حين لا يؤكّد الهاتف، يكون التسليم مجهولاً لا فاشلاً — فالإشعار على شاشة قفلك على الأرجح — فصار يُحسَب مُرسَلاً بدل أن يُعاد، وتلك كانت الطريقة الوحيدة التي تصير بها رنّةٌ واحدة ثلاثاً. والكلام العابر والإقرارات المجرّدة ما زالت تمرّ في صمت، وأمرُك بالسكوت يعلو على كلّ ذلك.
تحديثات
- دفعاتٌ تصل فعلاً. كان انقلاب السياسة سيرنّ أجوفَ على هواتفَ لا تبلغها الدفعات. كانت نسخ أندرويد تفتقد التسجيلَ الذي يجعل التسليم البعيد ممكناً أصلاً — فلا يصل الإشعار إلّا والتطبيق مفتوحٌ متّصل — وصارت تحمله: التشغيل الذي ينتهي أو يخفق أو يحتاجك يبلغ شاشة القفل والتطبيق مغلقٌ أو في الخلفيّة أو الهاتف نائم. وتسجيل iPhone كان قد يتعطّل بلا نهايةٍ على سؤالٍ يحقّ لـiOS أن يتركه بلا جواب؛ صار يخرج في ثوانٍ، بعلامةٍ (token) أو من دونها، ويشتغل تسليم شاشة القفل وحده لحظةَ وصول العلامة. وعلى المُرحِّل تخرج دفعات أندرويد بأولويّة FCM العالية، فيعرضها الهاتف النائم الآن لا حين يصحو مصادفةً.
v1.0.249
تحديثات
- انسخ من المحادثة كما تتوقّع يداك. حدّد سطراً من ردٍّ وانقر عليه باليمين — فلا يأتي شيء: كانت قائمة النقر اليمينيّ في التطبيق كلّه تجيب حيث يمكن تحرير النصّ فحسب، بينما المحادثة نفسها، أجدر الأماكن بالاقتباس، بلا قائمةٍ البتّة. صار النقر اليمينيّ يتكلّم حيثما يجلس النصّ: فقّاعة الرسالة — رسالتك أو الردّ — تعرض تحديد الكلّ ونسخ، و«نسخ» يأخذ ما ظلّلته بالضبط (وبلا تظليل، الفقّاعةَ كلَّها)، ونصُّ الاستدلال المفرود يجيب الجواب نفسه، والتحديد الماسح عبر عدّة رسائل يُنسَخ كاملاً من حيثما نقرت. وتبقى أجزاء النافذة الفارغة صامتة، وكلُّ سطحٍ قابلٍ للتحرير يحتفظ بقائمته الأوفى، اقتراحاتِ الإملاء وكلَّ شيء.
v1.0.248
ميزات جديدة
- مُحدِّث سطح مكتبك، حيّاً على الهاتف. كانت شاشة تحديثات الهاتف تقول ما غيّره إصدارٌ جديد، أمّا الجهاز الذي يجلبه فعلاً — المحدِّث الذاتيّ لسطح المكتب — فيعمل خفيّاً في الطرف البعيد. صار يرآى إلى الهاتف حيّاً: يفحص، ينزّل بنسبة تقدّمٍ تتحرّك، يتحقّق، جاهز، يثبّت — كلُّ حركةٍ تُدفَع لحظةَ وقوعها، الحالُ نفسها التي ترسمها لوحة سطح المكتب، فلا تستطيع الشاشتان أن ترويا حكايتين. والهاتف الذي يتّصل في منتصف تنزيلٍ يُسلَّم الصورةَ الحاليّة فوراً، والهاتف الذي يلقى طوراً لا يعرفه — تطبيقٌ أقدم أمام سطح مكتبٍ أحدث — يختار أن يعرض لا بطاقةَ على بطاقةٍ خاطئة.
- افحص وثبّت من حيث كنت. الفعلان المهمّان صارا نقرتين. افحص من الهاتف وهو فحص سطح المكتب نفسه — المعالجُ بعينه الذي تستدعيه لوحته والطرفيّة، بحُرّاسه — والتحديث الموجود يبدأ التنزيل وحده، والتقدّم يدقّ على شاشتك. ثبّت من الهاتف ويجيب سطح المكتب قبل أن يفعل: يغادر التأكيدُ الخطَّ قبل أن يغلقه الإيقاف الرشيق بلحظة، فتشاهد الاتصال يسقط ويلتئم، ويقدّم الإصدار الجديد نفسه لحظةَ يعاود الاتصال. والأزرار تفي بوعدها: سطح المكتب العاجز عن تحديث نفسه أصلاً يقولها بصدقٍ والهاتف يخفي أزراراً كانت ستضطرّ إلى الكذب، وصفُّ الفحص يثبت في مكانه معتماً ما دام لا سطحَ مكتبٍ يجيب بدل أن يختفي مع كلّ سقطة وصلة، ونقرةُ تثبيتٍ تسابق تغيُّرَ حالٍ تُرفَض بهدوء بدل أن تُزهر بطاقات خطأٍ على شاشتين معاً.
v1.0.247
تحديثات
- الإخفاق الذي قُرئ ردّاً عاديّاً. الدور الذي مات في منتصفه — عطلُ مزوّد، مفتاحٌ منتهٍ — كان يعرض بطاقة خطئه على الهاتف والتشغيل حيّ؛ افتح المحادثة نفسها لاحقاً وقد تلاشى الإخفاق في نصٍّ نظيف، لأنّ النسخة المخزَّنة من الرسالة لم تكن تحمل قطّ كيف انتهى الدور. صارت كلُّ رسالةٍ تسافر ومعها سببُ توقّفها وخطؤها، فيبقى الدور الفاشل فاشلاً ظاهراً كيفما وصلتَ إليه. وكبرت البطاقة نفسها: يرسم الهاتف بطاقةَ خطأ المزوّد التي لسطح المكتب — شعارُ المزوّد، وقراءةٌ بسيطة لما جرى فعلاً، وطيَّةُ عرض التفاصيل وفيها أثر الفشل حرفيّاً — وزرُّ حاول مجدّداً لا يعيد الإرسال أعمى: يفتح دوراً جديداً يخبر النموذج بما انكسر، فيتحقّق ممّا انتهى أصلاً ويكمل بدل أن يعيده.
- على هاتفك من اللحظة الأولى. ابدأ تشغيلاً لم يبدأه الهاتف — أتمتةً تنطلق في موعدها، رسالةَ تيليجرام أو واتساب — وكانت قائمة محادثات الهاتف ترتجل صفّاً بديلاً بلا عنوانٍ حقيقيٍّ ولا أيقونةٍ ولا مصدر، لأنّ تفاصيل المحادثة كانت تُدفَع في كلّ أطوار التشغيل إلّا بدايته. صارت الهويّة تركب كلَّ طور تشغيلٍ، والبدايةَ منها، فتعرض القائمة العنوان والأيقونة والمصدر الحقيقيّة من لحظة انطلاق التشغيل — وسجلُّ المحادثات يضمّ الأدوار الجارية الآن، برقاقتها النابضة، بدل انتظار أوّل حفظ.
v1.0.246
تحديثات
- الصق أيَّ شيءٍ في أتمتة. تعليمات الأتمتة تقيم في ملفّ ماركداون له قواعده: سطرٌ يفتتح بـ
##يبدأ الأتمتةَ التالية، وفاصلُ---بنيةٌ، وعلامات تعليق HTML غلافُ المهمّة المطفأة. الصق طلباً يحمل أيّاً منها وكان كلُّ ما بعد أوّل عنوانٍ يتلاشى بصمت، عرضاً وتشغيلاً سواء. صار المحرّر يُحصّن تلك السطور لحظةَ الحفظ — كلٌّ منها يُعاد تهجئته بأقرب صورةٍ يقرؤها الملفّ نصّاً عاديّاً، والتهجئة مُثبَتةٌ على مُحلِّلات المحرّك نفسها، ولا تنمو مع إعادة الحفظ، ومطابقةٌ بايتاً بايتاً لما يكتبه محرّرُ الهاتف أصلاً. أمّا أدوات الأتمتة عند الوكيل فتسلك الطريق الآخر كما كانت دائماً: ترفض الطلب وتقول كيف يُعاد صوغه — وصار الحارس يغطّي الفاصل المشطوب أيضاً. - العمّال يحفظون؛ ووولفيش يسلّم. حين يستنهض تشغيلُ سير عملٍ عمّالاً خلفيّين، كان كلُّ عاملٍ يحمل أدوات التسليم — وقرأ أحدهم التعليمةَ القائمة المكتوبةَ لوولفيش نفسه، فأسقط ملفّاً على سطح المكتب بلا إعلان. صار التسليم فعلَ الرئيس وحده: العمّال بلا أدوات إرسالٍ إطلاقاً — سُحبت، لا نُهي عنها فحسب — وأوامرُهم تقول إنّ الملفّات تُحفَظ تحت مساحة العمل وتُبلَّغ بمسارها، ووولفيش يقرّر ما يصلك فعلاً.
- تقرير الفشل الذي أخطأ الفكرة. صدّر حزمة تشخيصٍ عن محادثةٍ أخفق عاملُها الخلفيّ وقد تقول الصفحة الأولى «FAILED: 0» — صحيحةٌ تقنيّاً عن النصّ، عديمةُ النفع تشخيصاً، لأنّ عثرات العامل تعيش في سجلّات المهامّ التي نسختها الحزمة ولم تقرأها قطّ. صارت الحزمة تقرأ كلَّ سجلّ مهمّةٍ خطوةً خطوة: سطرُ خطوات مهامَّ خاصٌّ في المقاييس (معدودٌ على حدة عمداً — فخطوات الدور نفسه تكرّر نداءات أدواته)، وكلُّ خطوةٍ فاشلة تحطّ في ملفّ الإخفاقات كاملةً بحُججها وخطئها غير المبتور، ورأيُ الذكاء الاصطناعيّ الراكب في الحزمة يُطلَع على الأدلّة نفسها. والعامل الذي تعثّر في المنتصف وتعافى ما زال يُنهي مهمّته SUCCEEDED — وهذا بالضبط سببُ فحص الحزمة الخطواتِ لا الحالات.
- الرقم الذي كتبته في قائمةٍ لم تكن جاهزة. في الطرفيّة، السطر المكتوب في الفجوة بين أسئلة قائمةٍ لا يجد سؤالاً ينتظر، فيسقط إلى طابور المحادثة ويُعاد تشغيله رسالةً إلى الوكيل الحيّ لحظةَ تُغلَق القائمة — ضغطتا Enter تعيدان طباعة القائمة، و«2» تائهةٌ تصير كلاماً لم يكتبه أحد. صارت السطور المكتوبة سلفاً تنتظر المسار الذي يملكها، وما بقي منها عند إغلاق القائمة يموت معها، والمطالبات المتداخلة تمسك المؤشّر خلف شريط إدخالٍ ظاهر بدل أن تتركه على سطرٍ عارٍ يشبه التجمّد تماماً.
- أزرارٌ تفي بكلمتها. اضغط «حفظ» وكان نصف أزرار التطبيق يبدّل تسميته في الطريق — «يحفظ…»، «يحذف…»، أو «…» مجرّدةً — الكلمةُ تقفز والزرُّ يتمدّد، لعملٍ ينتهي في غمضة. صار الزرُّ العامل يحتفظ بتسميته ويعتم حتى يحطّ العمل، على سطح المكتب والهاتف سواء؛ وحيث الانتظار طويلٌ حقّاً — نموذجٌ ينزّل، قناةٌ تتّصل — تبقى مؤشّرات التقدّم الحقيقيّة كما هي. وصارت غيوم صفحة النموذج تخضرّ للمزوّدين الحاملين مفتاحاً محفوظاً، فتقول نظرةٌ واحدة أيُّ السحب جاهز.
v1.0.245
تحديثات
- مفتاح الردّ الصوتيّ وجد بيته. بالأمس نبت لقاعدة الردّ المنطوق مفتاحٌ على بطاقة تحويل النصّ إلى كلام؛ واليوم يقيم حيث كان ينبغي من البداية — صفحة وولفيش، مع تفضيلات التطبيق العامّة — لأنّ استحقاق الرسالة الصوتيّة جواباً منطوقاً تفضيلٌ في كيف يجيبك وولفيش، لا حقيقةٌ عن محرّك الكلام. وقُطع السلك تحته إلى قاعدةٍ واحدةٍ صادقة: المفتاح يقرّر هل تعليمات الردّ الصوتيّ موجودةٌ أصلاً. مفعّلاً — وهو الافتراض — تحمل كلُّ محادثةٍ السياسةَ القائمة مع تذكيرها في كلّ خطوة؛ ومطفأً، تذهب التعليمات كلّيّاً — لا تنقلب فقرةً تشرح ما لن يحدث. اقلبه من سطح المكتب أو الطرفيّة أو هاتفك، وتتبع الأسطحُ الأخرى حيّةً.
- إعداداتٌ تقول ما تغيّره — وما لا تغيّره. كانت صفحة المظهر تُبقي خياريها خلف قائمتين منسدلتين بلا شرح. صار الاثنان عنصري التحكّم المقسّمين اللذين تتكلّمهما بقيّة الإعدادات — النظام / فاتح / داكن للسمة، English / العربيّة للّغة — وتحت كلٍّ منهما جملةٌ بسيطة تقول ما يغيّره، وبالقصد نفسه ما لا يغيّره: هذه إعدادات عرضٍ فحسب. فالسمة لا تمسّ النموذج أبداً، ولغةُ ردود الوكيل تتبع، كما كانت دائماً، اللغةَ التي تكتب له بها.
- بداية الأسبوع، من الهاتف الآن. كان التفضيل يُقرأ من الهاتف ولا يُغيَّر منه. صار يُغيَّر، والتحرير تحريرُ سطح المكتب نفسه: يحطّ في المعالج بعينه الذي يستدعيه زرُّ سطح المكتب، ويرفض ما ليس أحداً أو اثنين، ويعلن نفسه فتتبنّاه نافذةُ سطح مكتبٍ مفتوحة بلا إعادة جلب.
v1.0.244
ميزات جديدة
- الردّ الصوتيّ نبت له مفتاح — وأسنان. جعل الإصدارُ الماضي الرسالةَ المنطوقة تكسب ردّاً منطوقاً افتراضاً؛ صار ذلك الافتراض مفتاحاً تملكه — والقاعدة نفسها نبتت لها أسنان. كانت تعيش فقرةً مدفونةً في طلبٍ طويل جدّاً، والإخفاق هو الذي تخمّنه بالضبط: تُقرأ القاعدة، ويعود الردّ نصّاً صامتاً على كلّ حال. صارت التعليمة تُبنى من الإعداد الحيّ في كلّ دور — فما يُقال للوكيل لا يستطيع أن يناقض ما يقوله المفتاح — والدورُ المبدوء صوتاً يحمل تذكيراً في ذيل الطلب في كلّ خطوةٍ بعينها، الموضعِ الذي يُصغي إليه النموذج أشدَّ الإصغاء. والملفّات والجداول والشيفرة ما زالت تصل كما يسلّمها دورٌ مكتوب؛ والمذكّرة تنطق الجواب فوقها. وكلماتُك تغلب كلَّ شيء — قل «اكتبه» فيكون دوراً نصّيّاً.
- الناسخ كفّ عن تخمين لغتك. انطق جملةً قصيرة وقد يسيء الكشفُ التلقائيّ سماعَ المقطع كلّه — والإخفاق الذي فرض هذا كان رسالةً صوتيّةً إنجليزيّة عادت منسوخةً بحرفٍ عربيّ. صار النسخ مثبَّتاً على لغةٍ تختارها: إعدادُ لغةٍ على بطاقة تحويل الكلام إلى نصّ، وقائمةٌ من 100 لغة فيها بحث، و«الكشف التلقائيّ» نُزّل إلى اختيارٍ صريح لمن يعيشون بلسانين حقّاً. كلُّ رسالةٍ صوتيّة من كلّ سطحٍ تتبع التثبيت، وتسميةُ لغةٍ لملفٍّ بعينه ما زالت تغلب لذلك الملفّ، والنموذج الافتراضيّ صعد مقاساً — من base إلى small — لأنّ سمع الأصغر كان جزءاً من المشكلة. واللغات المئة نفسها تظهر حيثما ظهر الإعداد: سطح المكتب والطرفيّة والهاتف.
تحديثات
- خمس عشرة ثانيةً تعني خمس عشرة ثانية. اطلب «مقطعاً عموديّاً من 15 ثانية» وما عاد كان ستَّ ثوانٍ بالعرض: مولّد الفيديو لا يقرأ كلمات الصيغة من النثر — فالطول والجودة والاتّجاه مُعاملاتٌ لها مواضعها، والمواصفات المتروكة في الطلب كانت تُنتج الافتراضات بصمت. صار الوكيل يعامل مواصفاتك أوامرَ لا زينة — الطولُ المسمّى يذهب في مُعامل المدّة، والجودةُ في الدقّة، و«عموديّ» أو «لـReels» في نسبة الأبعاد — ويثبت هذا في وضعَي المخرج كليهما، لأنّ إعادة الصياغة السينمائيّة يجب ألّا تأكل مواصفة. والمطالب المستحيلة كفّت عن الصمت: بعد سقف الخمس عشرة ثانية يقولها الوكيل ويعرض مقطعاً واحداً بخمس عشرة ثانية أو سلسلةً تُخاط، وتأكيدُ المهمّة يردّد الإعدادات الطائرة فعلاً والإلغاءُ ما زال يوفّر الرصيد.
v1.0.243
ميزات جديدة
- كلّمه يكلّمك. انطق بدل أن تكتب — ميكروفون التطبيق، رسالة تيليجرام أو واتساب الصوتيّة، هاتفك — وصار وولفيش يجيب بصوتٍ عالٍ افتراضاً. الحوار العاديّ يعود مذكّرةً صوتيّةً واحدةً هي الردُّ كلُّه، لا مذكّرةً يجرّها جدارُ نصٍّ يعيدها؛ والدور الذي أنتج أشياءَ حقيقيّة — ملفّات وجداول وشيفرة ومخطّطات — ما زال يسلّمها كما يسلّمها دورٌ مكتوب، ثمّ يختم بمذكّرةٍ صوتيّةٍ واحدة تنطق الجواب فوقها. والردّ يصل باللغة التي نطقت بها: كلُّ رسالةٍ صوتيّة تحمل اللغةَ التي سمعها الناسخ، والوكيل يعدّها نهائيّة، فالسؤال الإنجليزيّ يكسب جواباً إنجليزيّاً وإن كانت بقيّة حياتك معه بالعربيّة. وكلماتُك تغلب دائماً — قل «اكتبه»، أو أبقِ تفضيلاً قائماً للنصّ، فيكون دوراً مكتوباً عاديّاً. ويرافقه إصلاح: يُقال للوكيل، بحزم، إنّ رسالتك الصوتيّة منسوخةٌ أصلاً — فلا يهدر دوراً في تشغيل تحويل كلامٍ إلى نصٍّ على الرسالة التي نطقتَها له للتوّ.
تحديثات
- طرفيّةٌ تشرح كلَّ إعداد. يمشي
wolffish settingsفي شجرة صفحة ← بطاقة ← صفٍّ نفسِها التي تمشيها شاشات سطح المكتب، لكنّ ثلثي صفوفه كانت تقف عند تسميةٍ عارية — تُجلَب عبر ملفّات الترجمة حيث البحثُ الخائب يطبع مفتاحاً خاماً مثلchat.modeمكانَ الاسم. صارت الكلمات مكتوبةً مباشرةً حيث تُعرَّف الإعدادات: كلُّ صفٍّ من الصفوف الثلاثة والخمسين يحمل تسميةً حقيقيّة وجملةً أو جملتين من الوصف — ما يفعله الإعداد، وما الافتراض، وما المقايضة. وتُعقَد مقايضةٌ واحدة عمداً وتستحقّ قولها صراحةً: الطرفيّة سطحٌ إنجليزيٌّ الآن. تطبيقُ سطح المكتب ما زال يتكلّم لغتَك، والعربيّةُ منها — الطرفيّة وحدها كفّت عن الترجمة، وفي المقابل لا يستطيع شيءٌ فيها أن يطبع مفتاحاً مكانَ كلمةٍ أبداً.
v1.0.242
ميزات جديدة
- كلُّ صفٍّ يعرضه هاتفك صار يقبل تحريراً. يستطيع الهاتف قراءة إعدادات سطح المكتب منذ حين؛ أمّا التحرير فحكايةٌ أخرى — كانت أكثر الصفوف نظرةً لا زرّاً. جانبُ الكتابة حاضرٌ الآن. شاشةُ النموذج تحرّر من الهاتف — وضعُ المحادثة، ورقاقة التفكير، والمحلّيُّ فقط، والنموذج المحلّيّ، ومزوّد السحابة ونموذجه، وحتى مفتاحُ مزوّدٍ يُكتَب جديداً — وكلٌّ منها يسلك إلى المعالج بعينه الذي يستدعيه زرُّ سطح المكتب: الحفظُ نفسه، والتحديث الحيُّ نفسه، والإعلان نفسه، فتتبنّى نافذةُ سطح مكتبٍ مفتوحة التغييرَ بلا إعادة جلب. والتفاصيل تحمل العناية نفسها: المفتاح يظهر معاينةً من اثني عشر محرفاً تدور مع كلّ تحرير، فلا تستطيع قيمةٌ مقنَّعة أن تكتب فوق الاعتماد الحقيقيّ الذي تختصره، واختيارُ النموذج المحلّيّ يُفحَص على المثبَّت فعلاً على سطح المكتب — فرفضُ صفٍّ بائتٍ خيرٌ من بدء تنزيلٍ بعدّة جيجابايتات في صمت. ومفاتيح MCP وجدول الضغط وإسهابُ خيط التطبيق تُقلَب من الهاتف أيضاً، وبطاقتا تيليجرام وواتساب صارتا قابلتين للتحرير من طرفٍ إلى طرف — قوائم السماح، والتحديث التلقائيّ، وساعات الركود، والإسهاب — عبر مسار الشيفرة نفسه الذي تسلكه إعدادات سطح المكتب، فلا تفترق القواعد: التغييرُ الماسُّ بالاتصال يعيد تشغيل جسرٍ عامل، والتغييرُ التفضيليُّ لا يفعل عمداً. وبقي مفتاحان في البيت عن قصد: مفتاحا تشغيل تيليجرام وواتساب، لأنّ بدء عمليّة جسرٍ فعلُ هذا الجهاز، والهاتف يعرضهما كما هما — حالةً.
تحديثات
- رمز QR الذي لم يستطع تثبيتٌ مُحزَّمٌ رسمه قطّ. ينتهي
wolffish pairبرمز QR — وفي كلّ تثبيتٍ محزَّم، على كلّ منصّة، كان ينتهي بعبارة «لا مصيّر QR متاحاً» وجدارٍ من نصٍّ خام. فعميل الطرفيّة يُشحَن ملفّاتٍ حرّةً بجانب أرشيف التطبيق بينما مكتبة QR تعيش داخله، فكان استيراد الطرفيّة يخفق في كلّ مكانٍ إلّا نسخة التطوير — حيث لن يلحظ أحد بالضبط. صار العفريت (daemon) يحسب المصفوفة والطرفيّة ترسمها فحسب، والطرفيّةُ المحدَّثة قبل عفريتها تتراجع إلى حمولة النصّ الخام القديمة بدل أن تموت، لأنّ مسار الاقتران يجب ألّا يبلغ طريقاً مسدوداً أبداً. - الخبر السيّئ بهيئةٍ واحدة. حين كان تنزيل تحديثٍ يخفق، كانت صفحة التحديثات تُنبت صندوقاً أحمر من تصميمها — عنوانٌ وفقرةُ سببٍ والخطأ الخام مُلقى بطوله. والمحادثة حلّت هذا أصلاً: بطاقةُ خطأ المزوّد، بملخّصها من سطر، وطيَّةِ عرض التفاصيل، وكتلة تفاصيل تُنسَخ بنقرة. صار إخفاق التحديث هو تلك البطاقة، و«أعد المحاولة» بجانبها زرّاً — تصميمٌ واحد لعبارة «حدث خطأ»، حيثما لقيتها.
- دليل الوكيل لحق بالركب. سطران من تعليمات الوكيل نفسها بليا في صمت: كانا ما يزالان يصفان إشعارات الهاتف محاصصةً — واحدٌ لكلّ طور، خمسةٌ لكلّ تشغيل — مع أنّ شيئاً لم يَعُدّ الإرسال أو يسقّفه منذ v1.0.239؛ فضبطُ النفس حكمٌ تعلّمه التعليمات، لا عدّادٌ ينفد، وصارت تقولها. وحيث يريد الإشعار لنقرته أن تحطّ على المحادثة التي أنتجته، لم يعد الوكيل يبحث عن المعرّف أوّلاً:
wolffish://chat?id=currentيسمّي محادثة هذا التشغيل نفسها والتطبيق يحلّها — بحثٌ أقلّ، وطريقٌ أقلّ لنقرةٍ تحطّ في المكان الخطأ.
v1.0.241
ميزات جديدة
- الأمر حاضرٌ لحظة انتهاء التثبيت. كان تثبيت وولفيش على خادم لينكس ينتهي بواجبٍ منزليّ: أضف مجلّداً إلى PATH عندك، وأعد تشغيل صدفتك، وشغّل التطبيق مرّةً ليكتب لنفسه مُطلِقاً — وعلى الخادم كانت الخطوة الوسطى دائريّةً، لأنّ الشيء الذي عليك تشغيله هو الشيء الذي تحاول بلوغه أصلاً. صارت حزمتا
.debو.rpmتشحنان أمرwolffishبنفسيهما، إلى جانب ملفّ التطبيق الثنائيّ: فهو موجودٌ لحظةَ ينتهي مدير الحزم — لا تشغيلَ أوّل، ولا سطرَ PATH، ولا صدفةَ جديدة، والأمر نفسه لكلّ حسابٍ على الجهاز، ويُزال نظيفاً حين تُزال الحزمة. أمّا AppImage فلا مدير حزمٍ له يفعل ذلك، فهناك يكتب المثبّت سطر PATH نيابةً عنك — مرّةً واحدة، لا مرّتين مهما أعدت التثبيت، و--no-modify-pathإن كنت تفضّل أن يُبقي يديه بعيدتين عن ملفّات تهيئتك. وحيث كانت الطرفيّة تُؤمَر بتشغيل الوكيل يدويّاً، برايةٍ وعلامةِ&كان عليها أن تشرحهما، صارت تقول الحقيقة الوحيدة الباقية: شغّلwolffish— فالوكيل يشغّل نفسه، في الخلفيّة، وكلُّ ما يحتاجه خادمٌ يعمل بحساب الجذر مطبَّقٌ سلفاً. - عدّاداتُ غير مقروءٍ تعرف ما قرأته. صار الإشعار عن محادثةٍ يغذّي شارة غير مقروءٍ لكلّ محادثةٍ على حدة على الهاتف: على صفوف المحادثات، ومجموعةً على زرّ القائمة العائم، ورقماً على أيقونة التطبيق — صحيحةً حتى قبل أن يستيقظ التطبيق، لأنّ المُرحِّل يختم عدَّه الجاري على كلّ إشعار منصّة. والمسحُ هو القراءة: افتح المحادثة يذهب عدّادها، ومعه إشعارات الدرج؛ واحذف محادثةً من أيّ مكانٍ يذهب عدّادها معها. ومجموع الهاتف نفسه هو الحجّة — فلحظةَ يعمل التطبيق يكتب فوق بديل المُرحِّل كتابةً مطلقة، فلا يفترق الاثنان أبداً.
تحديثات
- الانفصال لا يترك شيئاً وراءه. كان فكّ اقتران الهاتف دقيقاً في أمر الهاتف كثيرَ النسيان في أمر الوسط: فالمُرحِّل يحتفظ بتسجيل دفع الجهاز، والإشعار اللاحق يظلّ يُقذَف إلى هاتفٍ قد غادر. صار قطع الاتصال يجري بالترتيب الصحيح — تُمحى الشارات في كلّ مكان، ويُصفَّر عدُّ المُرحِّل، ثمّ يُؤمَر المُرحِّل بأن ينسى تسجيل الجهاز نسياناً تامّاً — وعندها فقط يُسقط الهاتف مفاتيحه ويمسح ما زامنه. وكلُّ إشعارٍ لاحقٍ موجَّهٍ إلى ذلك الهاتف يُجاب أُسقِط، بصدق، والاقتران من جديدٍ يبدأ من صفحةٍ نظيفة عند شارة الصفر.
v1.0.240
تحديثات
- تثبيتٌ كفّ عن ادّعاء أنّه نجح. كان
curl … | shعلى جهاز لينكس جديدٍ قد ينتهي بعبارة «ثُبِّت بنجاح!» على جهازٍ لا وولفيش عليه إطلاقاً — فطريقة مدير الحزم نفسِه في إصلاح اعتماديّةٍ لا سبيل إلى تلبيتها أن يزيل الحزمة التي فكّها للتوّ ويخرج مبلّغاً عن النجاح. صار المثبّت اليوم يسأل dpkg أو rpm هل الحزمة مثبَّتةٌ ومهيّأةٌ حقّاً، وهو السؤال الصادق الوحيد. وهو أيضاً يحدّث قوائم الحزم البائتة ويعيد المحاولة قبل أن يستنتج شيئاً (فصورة الخادم الافتراضيّ الطازجة كثيراً ما تفصلها عن العملapt-get updateواحدة)، ولا يدع مدير الحزم يزيل أشياء ليُنجح تثبيتاً، وينظّف أثره بدل أن يخلّف حزمةً نصفَ مفكوكةٍ تكسر كلَّ تشغيلaptلاحق، وحين يعجز حقّاً عن المضيّ يسمّي المكتبات المفقودة. - وكيلٌ يبدأ على خادم. عطلان خفيّان أبقيا وولفيش بعيداً عن الجهاز الوحيد الذي وُجدت الطرفيّة لأجله. فالحزمة لم تصرّح قطّ بـlibasound2 — إذ يربط Electron مكتبة ALSA عند التحميل سواءٌ أكانت للجهاز بطاقة صوتٍ أم لم تكن، فيموت التطبيق عند الإقلاع على الصورة الدنيا التي يبدأ منها الخادم؛ صارت اليوم مصرَّحاً بها، وبإصدارٍ محدَّد، وهو ما يجعلها تُحَلّ على Ubuntu 24.04 حيث أُعيدت تسمية الحزمة وصار الاسم القديم ملتبساً. وChromium يأبى أن يعمل بحساب الجذر ما لم تصله
--no-sandboxعلى سطر الأوامر — قبل أن يعمل سطرٌ واحد من شيفرة التطبيق، فإلحاقها عند بدء التشغيل لم يكن يُحتسب قطّ. صارت الراية اليوم على كلّ طريقٍ يشغّل التطبيق: مدخل القائمة، ووحدة systemd، ومدخل التشغيل التلقائيّ، والعمليّة الخلفيّة التي يولّدها سطر الأوامر. - AppImage يعيش بعد نقطة ضمّه. يعمل ملفّ AppImage من نقطة ضمٍّ مؤقّتة تحمل اسماً مختلفاً في كلّ إطلاق — وكلُّ ما كتبه وولفيش لما بعدُ (أمر
wolffish، ووحدة systemd، ومدخل التشغيل التلقائيّ) كان يسجّل ذلك المسار المحكوم عليه بالزوال. صارت الثلاثة اليوم تسجّل ملفّ.AppImageنفسه، ورُفع عميل سطر الأوامر خارج الصورة فيبقى موجوداً بعد أن يُغلَق التطبيق، والتثبيت كلُّه يقيم تحت~/.wolffishحتى يبقىrm -rf ~/.wolffishإزالةً كاملة، وعلى جهازٍ لا يستطيع ضمّ واحدٍ أصلاً — لا FUSE، أو حاويةٌ بلا/dev/fuse— يفكّ المُطلِق الصورةَ ويشغّلها بدلاً من ذلك، حاملاً ذلك القرار إلى الوسيط والخدمة فلا يخالف شيءٌ المثبّتَ الذي جعلها تعمل للتوّ.
v1.0.239
ميزات جديدة
- وولفيش في طرفيّة. احتاج وولفيش دائماً إلى نافذة، وهو ما عنى دائماً الحاجة إلى شاشة — فكان الجهاز الأرجح لتشغيل وكيلٍ على مدار الساعة، خادمٌ تبلغه عبر SSH، هو الجهاز الوحيد الذي لا يستطيع العمل عليه. صار ثمّة اليوم أمر
wolffish، وليس وولفيش ثانياً أصغر: فكلُّ أمرٍ فيه نداءٌ إلى الشيفرة نفسها التي تناديها نوافذ سطح المكتب، فالإعداد الذي يتغيّر هناك هو الإعداد هنا، حاملاً التسمية نفسها والوصف نفسه، بلغتك أنت، والعربيّة منها. اكتبwolffishلجلسةٍ تفاعليّة أوwolffish "…"لجوابٍ واحدٍ ينتهي بذاته؛ مرّر السياق إليه عبر أنبوب، وأرفق الملفّات بمسارها بـ-f، واستأنف المحادثات القديمة، واقرأ كلَّ إعدادٍ وغيّره — مفاتيح المزوّدين تُكتَب مخفيّةً ولا تحطّ في تاريخ الصدفة أبداً — وبدّل النموذج، وحرّر الروح والمستخدم والوكلاء، وشغّل الإجراءات والأتمتة، واقرن هاتفاً أو واتساب أو تيليجرام من الأمر نفسه. والمهمّ هو ما تكونه الطرفيّة: واجهة عرض، لا التطبيق. فوولفيش يعمل عمليّةً في الخلفيّة والأمر يتّصل بها — أغلق الطرفيّة أو اقطع وصلة SSH والدور ماضٍ في عمله؛ واستدعاء الأداة المنتظر موافقتك يقف منتظراً بدل أن يخفق، تجيبه حين تعود أو من هاتفك. والردود تصل ماركداون مُصيَّراً — عناوين وجداول وكتل شيفرةٍ بإطار — وwolffish settingsيمشي في الإعدادات مشيةَ التطبيق نفسها، صفحة ← بطاقة ← إعداد، والفراغ يعني الصعود دائماً. والتحرير يعمل حتى على جهازٍ لا شيء مثبَّتٌ عليه: محرّرك$EDITOR، وإلّا nano أو vi، وإلّا محرّرٌ مدمجٌ بلا اعتماديّاتٍ البتّة. - خدمةٌ لجهازٍ لا يسجّل الدخولَ إليه أحد. صار التشغيل التلقائيّ شأنَ التطبيق نفسه على كلّ منصّة — عنصرُ تسجيل دخولٍ أو وكيلُ launchd على macOS، وعنصرُ تسجيل دخولٍ أو مهمّةُ «مجدوِل المهامّ» على ويندوز، ومدخلُ XDG أو وحدة systemd للمستخدم على لينكس، حيث كان المفتاح لا يفعل شيئاً في صمت. واكتسب الوضعَ الذي يحتاجه الخادم: خدمة خلفيّة تبدأ مع الجهاز، بلا جلسةٍ ولا نافذةٍ البتّة — وهي ما يُبقي الأتمتة تنطلق والقنوات تجيب على جهازٍ لم يسجّل الدخول إليه أحد، وهي ما تتّصل به الطرفيّة. وعلى لينكس يُفعَّل البقاء (lingering) إلى جانب الوحدة، لأنّ خدمة مستخدمٍ من دونه تموت لحظةَ تنتهي جلسة SSH عندك؛ والوحدة التي يفوتها تُبلَّغ تحذيراً لا حالةً سليمة. والطريق كلُّه — من سكربت التثبيت إلى الإقلاع بلا شاشة إلى systemd إلى اتّصال سطر الأوامر — مُتحقَّقٌ منه من طرفٍ إلى طرفٍ على خادم Ubuntu 24.04 افتراضيٍّ نقيّ، ومع هاتفٍ مقترنٍ واجهةً يوميّة، لا يكون الخادم بلا شاشةٍ وولفيش منقوصاً بل تجربةَ سطح المكتب وقد نُزع المكتب.
- الأتمتة والإجراءات تجلب ملفّاتها معها. كان المشروع يحمل ملفّات؛ أمّا الأتمتة والإجراءات التي تؤدّي العمل غير المراقَب فلا — حيث يهمّ الأمر أكثر ما يهمّ، إذ لا أحد هناك ليرفق شيئاً حين تعمل. صار كلاهما اليوم يحمل ملفّاتٍ مرفقةً ومجلّدات عملٍ خاصّةً به، تُحرَّر من التطبيق أو الطرفيّة أو هاتفك. فالملفّ المرفق يُنسَخ إلى الداخل، فلا ينكسر تشغيلٌ أبداً لأنّك نقلت الأصل؛ ومجلّدات العمل لا تُنسَخ عن قصد — فكلُّ تشغيلٍ يأخذ سرداً طازجاً للمجلّد الحقيقيّ كما هو تلك اللحظة. وصارت مجلّدات المشروع تجري في كلّ ما يعمل داخله، ونال كلٌّ من الثلاثة محرّرَ طلبٍ بارتفاعٍ كامل يتمرّر بدل أن يُقطَع. وعلى الهاتف تركب الملفّات والمجلّدات نفسُها بطاقاتِ مساحة العمل — ورقاقة المجلّد ترتدي مسار سطح المكتب الكامل، تُكتَب كتابةً وتُتحقَّق على نظام ملفّات سطح المكتب نفسه.
- ذاكرةٌ تستطيع تصحيحها. كان كلُّ ما يعتقده وولفيش على المدى الطويل، من جهته هو، كتابةً لمرّةٍ واحدة: قولُك له «هذا خطأ، لقد انتقلت» يكسب موافقةً في الإنشاء ولا يغيّر شيئاً على القرص. صار اليوم يستطيع أن يضيف ويعدّل وينسى عبر الملفّات التسعة كلّها التي تحمل ذاته طويلة المدى — دليله العمليّ، وتعليماتك القائمة، وشخصيّته، وملفّك التعريفيّ، وملفّات المعرفة الخمسة. والقاعدة التي يعمل بها النسيان يغلب التناقض — فمدخلان يختلفان أسوأ من مدخلٍ مفقود — والتصحيح يحطّ في الدور نفسه الذي تقوله فيه، لا الليلة. وكلُّ كتابةٍ تحفظ النسخة السابقة، فأيُّ تغييرٍ على خطوةٍ واحدة من التراجع عنه، ولا يزيل إلّا ما اعترضتَ أنت عليه؛ أمّا التشذيب بحكمه هو فما زال شأن التنظيف الليليّ.
تحديثات
- القنوات التي يراها فعلاً. يقرّر الوكيل كيف يبلغك بقراءة قائمة قنواته هو، وكانت تلك القائمة تسمّي تيليجرام وواتساب والنافذة — لا هاتفك، ولا الطرفيّة. صار الاثنان عليها اليوم، ومعهما الفرقُ الذي يجعل صفّ الهاتف جديراً بمكانه: المقترن غير المتّصل، فالهاتف في الجيب يُقرأ منقطعاً مقترناً، لا غائباً أبداً. وأبلغ الثلاثة أثراً: على جهازٍ بلا شاشة كفّت محادثة التطبيق عن ادّعاء أنّها متاحة — كانت تقول للوكيل إنّ أحداً هناك يجيب في نافذةٍ لا وجود لها.
- إشعارٌ واحد، لا ثلاثة. كان الإشعار الذي لم يُجِب عنه المُرحِّل يُبلَّغ عنه فاشلاً، والفاشل يُعاد — فيصير القرار الواحد ثلاث رنّاتٍ على هاتفٍ في جيب صاحبه، لكلٍّ منها مُعرِّفٌ جديد لا يستطيع شيءٌ طيَّها معاً. صار الإرسال بلا جوابٍ يُبلَّغ عنه غير مؤكَّدٍ لا فاشلاً، والأداة تعلن أنّ إخفاقاتها هي غير قابلةٍ للإعادة، فلا يعيد شيءٌ إطلاق إرسالٍ من تلقاء نفسه. وذهبت في التغيير نفسه الحدودُ لكلّ تشغيلٍ التي كانت تنوب عن ضبط النفس: فهل تستحقّ المقاطعةُ الثانية ثمنها صار حكماً لا حصّة — على الوكيل أن يصدره، والأسباب مبسوطةٌ حيث يقرؤها.
- دورٌ من الطرفيّة، يُرى في كلّ مكان. صارت محادثات الطرفيّة ترتدي علامة مصدرها الخاصّة في سجلّ سطح المكتب وشريطه — وعلى هاتفك، حيث صار رمز المصدر يركب أوّل تحديثٍ حيٍّ بعينه، فالمحادثة التي لم يرها الهاتف إلّا وهي تعمل ما زالت تُظهر من أين جاءت. والهاتف الذي يقوم نفقه في منتصف تشغيلٍ صار أخيراً يعلم أنّ التشغيل قائم: يسأل سطحَ المكتب عمّا يعمل مع كلّ اتصال، فتعرض المحادثة المشغولة زرَّ إيقافها ونبضة بثّها بدل صندوق كتابةٍ ساكن، وينتظر شريط التقييم أن يقول سطح المكتب فعلاً إنّ الدور انتهى. وصار الردّ على محادثة أتمتةٍ من الطرفيّة يفكّ ختمها كسائر القنوات، ونالت محادثات الطرفيّة الطويلة العمر الملخّصَ المتدرّج الذي كان يفوتها — فمن دونه كان كلُّ ردٍّ يعيد تشغيل النصّ كاملاً ويكلّف أكثر مع كلّ دور، وعلى الجهاز بلا شاشةٍ بالذات حيث محادثات الطرفيّة هي الطويلة.
- ربط واتساب حيث لا يتّسع رمز QR. رمز QR في واتساب مصفوفة 49×49 — سبعةٌ وعشرون صفّاً مطبوعاً مقابل الأربعة والعشرين التي تمنحك إيّاها نافذة SSH، فلا يُمسَح مهما رُسم. صار واتساب يُربَط اليوم برقم الهاتف بدلاً من ذلك: أعطه الرقم فيطبع الرمز ذا المحارف الثمانية الذي يعرضه واتساب تحت «الربط برقم الهاتف بدلاً من ذلك» — الطريق الذي يعمل في نافذةٍ أضيق من أن تحمل مربّعاً.
- العربيّة، مكتملةٌ من جديد. ثماني عشرة عبارةً لم يكن لها مقابلٌ عربيٌّ فكانت ترتدّ في صمتٍ إلى الإنجليزيّة — بطاقة وضع المنقّح بأكملها، وكلُّ رسالةٍ يعرضها المحدِّث حين يخفق تحديث، وخمسة أفعال متصفّح. تُرجمت جميعاً، وعادت اللغتان إلى تطابقٍ تامّ. وحُسم الاسم أيضاً: كانت العربيّة تكتبه بطريقتين، وصار وولفيش في كلّ مكانٍ الآن — التطبيق والدرج وإضافة المتصفّح وسجلّات التغييرات الماضية سواءً بسواء.
v1.0.238
تحديثات
- شريط تقييمٍ يعرف متى انتهى. كان شريط 0–10 فوق صندوق الكتابة يسألك أن تقيّم الدور، ثمّ يمضي في السؤال — سؤالٌ مُجابٌ ما زال جاثماً فوق صندوق الكتابة. صار اليوم يتقاعد لحظةَ ينال الدور درجته: نقرةٌ واحدة، والصوت مسجَّل، والشريط ذهب. ولأنّ الدرجة حقيقةٌ عن الدور لا عن الجهاز الذي أدلى بها، يذهب الشريط أيّاً كان مصدر التصويت — النافذة، أو هاتفك، أو رقمٌ مجرّد كُتب في تيليجرام أو واتساب — دون انتظار إعادة تحميل شيء.
- نصٌّ تستطيع أخذه حقّاً. على الهاتف، اضغط مطوّلاً على أيّ فقّاعةٍ أو بطاقة أداة لتحدّد من الردّ المُصيَّر — في مكانه على أندرويد، وعلى iPhone في ورقةٍ مخصّصة تسحب فيها عبر النصّ المنسَّق وتنسخ الجزء الذي تريده بالضبط، بدل أن تصارع لقطة شاشة.
v1.0.237
ميزات جديدة
- إشعارٌ يفتح ما يتحدّث عنه. كان إشعار الهاتف قادراً دوماً على أن يأخذك إلى مكانٍ حين تنقره، غير أنّ على الوكيل أن يسمّي الوجهة بمُعرِّفها — والتشغيل لا يعرف على وجه اليقين مُعرِّف المحادثة التي يجيب فيها. فكان إمّا أن يمضي باحثاً عنه أو أن يخمّنه، والمُعرِّف المخمَّن يفتح نصّ محادثةٍ لغيرك على هاتفك؛ وإمّا أن يترك الوجهة فارغةً، فلا تفعل النقرة إلّا أن تفتح التطبيق حيث تركته. أمّا اليوم فيكفيه أن يطلب محادثة التشغيل نفسه (
wolffish://chat?id=current)، فيملأ سطح المكتب المُعرِّف من التشغيل ذاته — من الموضع نفسه الذي تأتي منه هويّته أصلاً، لا من تخمين النموذج. والرابط الذي يسمّي شاشةً لا يملكها التطبيق يُرفَض قبل أن يُرسَل شيء، ومعه قائمة الشاشات الموجودة فعلاً، بدل أن يسافر إلى الهاتف كلّ تلك المسافة ليُلقيك في صمتٍ على الشاشة الرئيسة. وصارت الوجهات تشمل كلّ شاشةٍ يملكها هاتفك حقّاً — ومنها المشاريع والأتمتة والإجراءات والتخصيص — تُقرأ من جدول مسارات التطبيق نفسه، فلم يعد ممكناً أن يفترق ما يُقال للوكيل عمّا يستطيع الهاتف فتحه. وعلى الهاتف، النقرةُ التي أطلقت التطبيق تُقرأ في أوّل تصييرٍ لشاشة الدخول، فتصير وجهتها وجهةَ الإقلاع بدل تنقّلٍ ثانٍ يسابق إعادة التوجيه.
تحديثات
- ملفّات PDF، تُقرأ حيث هي (أندرويد). كان ملفّ PDF في المحادثة صفَّ ملفٍّ في بناء أندرويد من تطبيق الهاتف — تنقره فيرحل المستند إلى أيّ عارضٍ صادف وجوده على الهاتف. صار اليوم يُفتح في البطاقة نفسها، يعرض صفحةً أولى حقيقيّة ويتوسّع إلى المستند كلّه، قابلاً للتمرير وللتكبير بالقرص، تماماً كما كان يفعل على iPhone. فالقارئ يسافر مع التطبيق بدل أن يعتمد على وجود قارئٍ مثبَّت، والصفحة التي ترسمه لا تبلغ ملفّاً غير الذي فتحته. أمّا ملفّات PDF الضخمة جدّاً فتذهب إلى عارض النظام كما كانت.
- عنوانُ مجموعة تبويباتٍ يستحقّ القراءة. كانت مجموعة تبويبات وولفيش مأمورةً بأن تعلن عن نفسها في كلّ شيء، حتّى في فتح صفحةٍ واحدة — حيث كان الاسم المجرّد Wolffish يقول كلّ ما ثمّة ليُقال. صار الوسم اليوم حُكماً لا طقساً: البحثة العابرة تُبقي الاسم على حاله، والمهمّة الحقيقيّة — خطواتٌ عدّة، أو أكثر من صفحة، أو أكثر من لحظة — تحمل رمزاً تعبيريّاً وكلماتٍ قليلة، تُحدَّث كلّما انتقل العمل من طورٍ إلى طور. فتظلّ ترى ما يفعله متصفّحك حين يهمّ ذلك، بلا وسمٍ على كلّ أمرٍ تافه.
- عربيّةٌ تُقرأ بخطٍّ واحد. بقيت أربع عباراتٍ عربيّة تكتب اسم العلامة بحروفٍ لاتينيّةٍ في وسط الجملة — بوّابة القدرة، ونافذة إعادة بناء الذاكرة، ونافذة جمع التشخيصات، والاسم الذي تحمله محادثةٌ بلا عنوانٍ إلى ملفّ PDF — فكانت العين تعبر من خطٍّ إلى خطٍّ وتعود داخل السطر الواحد. صارت اليوم تُقرأ وولفيش، فتجري العبارة على خطٍّ واحد. وفقد تلميحُ رمز الاقتران في شاشة الاقتران جملةً لم يكن بحاجةٍ إليها قطّ، في اللغتين معاً.
v1.0.236
ميزات جديدة
- الهاتف يلحق بسطح المكتب. حمل الاقتران محادثاتك إلى هاتفك، وبقي هنا كلُّ ما يصوغ تلك المحادثات. أمّا اليوم فيحمل هاتفك المشاريع والإجراءات والأتمتة — تنشئها وتحرّرها وتشغّلها وتحذفها من أيّ الجهازَين شئت، على الملفّات ذاتها لا على سواها، فيهبط التعديل الذي تصنعه على شاشةٍ في الشاشة الأخرى، لا في نسخةٍ ثانيةٍ تخالفها في صمت. والوثائق الثلاث التي تحدّد الوكيل — الروح والمستخدم والوكلاء — تُحرَّر هناك أيضاً، ومحرّر سطح المكتب يتبنّى ما حفظه الهاتف حيّاً، إلّا أن تكون في وسط مسوّدةٍ لم تحفظها بعد، فحينها يبقى نصّك على حاله ويفوز هو حين تحفظه. وتستطيع أن تقيّم دوراً من هاتفك فترى التقييم يحطّ على المحادثة المفتوحة أمامك هنا، وأن تُدرج محادثةً تحت مشروع، وأن تضيف ملفّاتٍ إلى مشروع، وأن تجمع حزمة تشخيص حين يسوء تشغيلٌ ما. وما يستولي على شاشة سطح المكتب بأكملها يعرضه الهاتف بطاقةً في رصّة — إعادة بناء الذاكرة، والمراجعة الليليّة، والضغط، وأتمتةٌ في أثناء عملها — فيبقى الهاتف صالحاً للاستعمال في أثنائها بدل أن يبدو معطّلاً. وأخيراً صار الدور الذي تتابعه من هاتفك يعرض السؤال فوق الجواب: فالطلب يسافر مع كلّ تحديثٍ حيّ، حتّى إنّ هاتفاً اقترن — أو فتح محادثةً — في منتصف الدور لم يعد يقرأ رداً على لا شيء.
- أتمتةٌ تفتحها وتشاهدها. كانت الأتمتة المجدولة أو الإجراء يعمل حيث لا تراه. لا تظهر محادثته في القائمة إلّا بعد انقضائه، وإن أُغلق التطبيق في منتصف الطريق ضاع كلُّ ما كتبه. أمّا اليوم فكلُّ تشغيلٍ ذاتيّ ينشئ محادثته قبل أن يبدأ: يأخذ مكانه في الشريط بالنبضة نفسها التي يأخذها دور تيليجرام، وتستطيع أن تفتحه وتشاهد الرد يصل حيّاً، وزرّ الإيقاف يعمل عليه — الزرّ نفسه، والحركة نفسها، لتشغيلٍ لم يكتبه أحد. ويُكتَب التقدّم على القرص في أثناء العمل، فالإغلاق أو الانهيار في منتصف الطريق يخلّف نصّاً حقيقيّاً لا طلباً عارياً، وفتحُ التطبيق من جديد في أثناء التشغيل يجده ماضياً في عمله بدل أن يجده ساكناً.
- الويب، يُقرأ في متصفّحك أنت. كان أمام وولفيش ثلاث طرقٍ إلى الويب فيمدّ يده عادةً إلى أضعفها. فالجلب المجرّد لا يرى إلّا ما يعطيه الخادم لطلبٍ عارٍ، فتعود الصفحة الحديثة فارغةً، وتهزمه جدرانُ الدفع وتسجيلُ الدخول وفحوصُ الروبوتات جميعاً — ومع ذلك كان الوكيل يقصده أوّلاً، فيخفق مرّتين قبل أن يفعل البديهيّ. صار اليوم يميل إلى متصفّحك الحقيقيّ، حيث تسجيلات دخولك قائمةٌ أصلاً والصفحات تُصيَّر كما تراها أنت، ويُبقي البحث لما يجيده البحث حقّاً: حسمُ معلومةٍ واحدة، أو معرفةُ أيّ رابطٍ يُفتَح. وإن لم يكن ثمّة متصفّحٌ يعمل شغّل واحداً بنفسه بالأداة الجديدة
ext_launch_browser. وهو يعمل في مجموعة تبويباتٍ خاصّةٍ به — مجموعةٌ زرقاء باسم Wolffish تُنشَأ أوّل مرّةٍ يحتاج فيها إلى صفحة — فلا يُنقَل تبويبك أنت عن مكانه في وسط عملك؛ ولا يقرأ التبويب الذي تقف عليه إلّا حين تطلب منه ذلك. وعنوان تلك المجموعة يقول ما الذي يفعله في هذه اللحظة، بكلماته هو:🔎 أقارن الرحلات،🛒 أُتمّ الشراء،✍️ أكتب ردّاً. - صفحات ويب تخرج مصمَّمة. اطلب دليلاً، أو كتيّباً، أو تقريراً في هيئة صفحة ويب، فيكون ما يعود إليك رهناً بمزاج النموذج ذلك اليوم. صار دليل تصميم الويب اليوم قدرةً أساسيّةً تُحمَّل قبل أن يكتب الوكيل سطر HTML واحداً، تماماً كما يعمل دليل تصميم المستندات مع ملفّات PDF. يحمل خطوة تخطيطٍ، وبنية عمودٍ وشريطٍ متجاوبة، وسمتَي فاتحٍ وداكن مع مفتاح تبديل، وطقم مكوّنات، وأشكالاً بيانيّة مرسومةً باليد بألوان الصفحة نفسها، وقواعد العربيّة والاتّجاه من اليمين إلى اليسار، وتمريرة تحقّقٍ إلزاميّة: يلتقط الوكيل صور الصفحة المنتهية في السمتَين معاً، بعرض سطح المكتب وعرض الهاتف، وينظر إليها قبل أن يسلّمها. وتأتي الصفحات ملفّاً واحداً قائماً بذاته يُقرأ كاملاً والنصوص البرمجيّة مطفأة. ولأنّ بطاقة المعاينة في المحادثة معزولةٌ عن عمد، صارت كلُّ بطاقة موقعٍ تحمل زرّ فتحٍ في المتصفّح — الصفحة الحيّة، من موضعها الحقيقيّ، ونصوصها البرمجيّة تعمل.
تحديثات
- مُنشئٌ كفَّ عن جمع الأزرار. كان المُنشئ يُنبت زرّاً لكلّ ميزة — التفكير، ووضع المحادثة، والمحلّي/السحابيّ، والسجلّات، والملفّات، والتصدير — حتّى صار الصفّ زخرفاً في معظمه. عاد اليوم إلى ثلاثة عناصر في كلّ جانب، ولم يُفقَد شيء. انتقل جهد التفكير ووضع المحادثة (مفرد/سير عمل) إلى داخل بطاقة النموذج، صفَّي رقاقاتٍ فوق حقل البحث، فصارت كلُّ مقابض النموذج في لوحةٍ واحدة. وتلك البطاقة تسرد الآن نماذج Ollama المثبَّتة عندك أيضاً، تُقرأ طازجةً كلّما فُتحت — اسحب نموذجاً من الطرفيّة تجده حاضراً بلا إعادة تشغيل — فصار «التحوّل إلى المحلّي» و«اختيار أيّ نموذجٍ محلّيّ» نقرةً واحدة بدل رحلةٍ إلى الإعدادات. وانتقلت السجلّات والملفّات إلى مقياس السياق، في أسفل البطاقة التي كانت أصلاً عن هذه المحادثة. وصار تصدير التشخيص يقيم في السجلّ وحده، حيث يعمل على المحادثة المفتوحة أمامك أيضاً ويقول «لم يُفهرَس بعد» بدل أن يخمد في صمت. واختيار نموذجٍ نزّلته من قبل لم يعد يتظاهر بتنزيله مرّةً أخرى. أمّا الملاحظة الصوتيّة التي تسجّلها فتعرض مشغّلها وحده: النصّ المفرَّغ محفوظٌ ومُرسَلٌ وقابلٌ للبحث كما كان — وطباعته تحته لم تكن إلّا تكراراً لما قلته بصوتك قبل لحظة.
v1.0.235
ميزات جديدة
- وولفيش، في هاتفك الآن. يعمل وولفيش على جهازك — وهو ما كان يعني دائماً أن تكون عند جهازك. صار الهاتف يقترن بسطح المكتب هذا ويحمل معه المحادثات نفسها والإعدادات نفسها والاستهلاك نفسه. والاقتران يحدث مرّةً واحدة: امسح رمز QR بكاميرتك، أو اكتب رمزاً قصيراً حين لا ترى الكاميرا الشاشة — فالسرّ يسافر من الشاشة إلى الكاميرا ولا يعبر الشبكة أبداً. ومن ثمّ يتخاطب الجهازان مشفَّرَين من طرفٍ إلى طرف (X25519 · ChaCha20-Poly1305)، مختومَين على أجهزتك قبل أن يُرسَل أيّ شيء. أمّا الذي يحمل البايتات فهو مُرحِّلٌ أعمى: يعين الجهازين على التلاقي ويمرّر الإطارات المختومة لا غير — لا يقرؤها ولا يبدّلها ولا يعيد إرسالها، ولا يخزّن شيئاً البتّة، لا قاعدة بيانات ولا سجلّات ولا حسابات ولا تاريخ رسائل. ويعرض الجهازان البصمات نفسها لتتأكّد بنظرةٍ أنّ لا شيء يقف بينهما، والمُرحِّل مفتوح المصدر وقابل للاستضافة الذاتية — وجّه سطح مكتبك إلى نشرتك أنت فيحمل الاقتران التالي ذلك العنوان إلى هاتفك. والوصلة تجري في الاتجاه الآخر أيضاً: فمع تشغيل إشعارات الهاتف يستطيع الوكيل أن يبلغك بأداته
notify_phoneحين ينتهي تشغيلٌ أو يخفق أو يحتاج إليك — لا تلقائياً أبداً، بل باستدعاءٍ متعمَّد، والإطفاء يجعل الأداة ترفض من أساسها. ومفتاح نتائج المهامّ يقرّر أينقل خيطُ هاتفك كلَّ استدعاء أداة أم يبقى نظيفاً بالردود والملفات والأخطاء وحدها. - توليد الفيديو، بإخراج نموذجك أنت. صار وولفيش يصنع الفيديو، والمثير أنّ السؤال هو: مَن يكتب الوصف؟ اطلب مقطعاً في أيّ محادثة فيخرجه نموذج محادثتك الحالي — يعيد صياغة طلبك وصفاً سينمائياً كاملاً (الموضوع، وحركة الكاميرا، والإضاءة، والمزاج) ويختار المدّة والدقّة ونسبة الأبعاد وأيَّ الصور تكون إطاراً أوّل أو أخيراً أو مرجعاً للأسلوب. ومن تلك الصياغة تأتي معظم الجودة، ولذلك يحصل نموذج محادثةٍ أقوى على فيديو أفضل من الطلب نفسه؛ وإذا جاء المقطع مخالفاً لما تخيّلته فإخبار نموذجك بما تريد تغييره أجدى غالباً من إعادة صياغة الطلب. أطفئ وضع الإخراج فتذهب كلماتك إلى نموذج الفيديو كما كتبتها بالضبط. وMiniMax H3 هو الذي يعالج — نصّ إلى فيديو، وصورة إلى فيديو، وانتقال بين إطارٍ أوّل وأخير، أو صور ومقاطع وأصوات مرجعية لاتّساق الموضوع والحركة والصوت، حتى اثني عشر عنصر وسائط في الطلب الواحد — منتجاً ملفّ mp4 بترميز H.264 مع موسيقى مولَّدة، 24 إطاراً في الثانية، بدقّة 768P أو 2K، ومدّة من أربع إلى خمس عشرة ثانية. ولأنّ المعالجة تأخذ دقائق لا لحظات، تظهر بطاقة مهمّة في المحادثة تحمل معرّف المهمّة والحالة الحيّة وتقدير التقدّم؛ تحدّث نفسها، وتستطيع الإلغاء منها، وملفّ mp4 الناتج يُنزَّل تلقائياً ويُعرض داخلها. وإن تجاوز التوليد عمر الدور — أعيد تشغيل التطبيق أو انتقل النموذج إلى عملٍ آخر — أكمل وولفيش المهمّة وحده: يواصل الاستعلام، ويحفظ الفيديو، ويحدّث البطاقة، ويسلّمه إلى القناة التي جاء منها الطلب، ضاغطاً المقاطع الكبيرة لتناسب تيليجرام أو واتساب مع بقاء الأصل هنا بجودته الكاملة. والوسائط المرفقة تُفحص وتُحسَّن نيابةً عنك، ونبت في مشبك صندوق الكتابة خيارُ إرفاق رابط وسائط يسلّم MiniMax رابطاً مباشرة — وهي الطريق حول حدّ الحجم للمراجع الكبيرة. والفيديوهات تُحفظ لكلّ محادثةٍ على حدة وتُحذف معها، والمفتاح يعيش في الإعدادات ← الخدمات ← توليد الفيديو، منفصلاً عمداً عن مزوّد محادثة MiniMax حتى لا يجرّ تدويرُ أحدهما الآخر.
- أرشيفات zip، تُعالَج حيث تحطّ. لم يكن وولفيش يفتح ملفّ zip. أرفِق واحداً فيعود نوعَ ملفٍّ غير معروف؛ واسأل عمّا في داخله فلا أداة تسأل بها. وقدرة الأرشيف الجديدة تُغلق الشقّين معاً: يستطيع الوكيل أن يسرد ما يحويه الأرشيف دون فكّ ضغطه، وأن يقرأ ملفاً واحداً من داخله مباشرة، وأن يفكّه كلّه أو الجزء الذي تريده، وأن يحزم ملفاتٍ ومجلدات في أرشيفٍ جديد. ولا يُفكّ شيء افتراضياً — فالأرشيف الذي يصل بلا تعليمات يُسرد ويُوصف في سطر، ثم تُسأل عمّا تريد فعله به. وصار صندوق الكتابة يقبل
.zipمرفقاً من الدرجة الأولى حتى 512 ميغابايت، فيصل الأرشيف إلى حيث تبلغه الأدوات فعلاً.
تحديثات
- لوحة إعداداتٍ تقول لماذا هي مطفأة. كانت كلّ صفحة خدمةٍ في الإعدادات تفترض أنّ قدرتها حاضرةٌ عاملة؛ فإذا لم تكن، جلست أدوات التحكّم لا تفعل شيئاً. صارت كلّ لوحةٍ تفحص نفسها، وحين تكون قدرتها مفقودة أو مطفأة أو أخفقت في التحميل تقول أيّ الثلاثة بالضبط — عارضةً الخطأ نفسه حين يوجد — وتعرض طريقاً مباشراً إلى صفحة القدرات. وأدوات التحكّم تحتها تصير خاملةً ظاهراً بدل أن تتظاهر بالعمل.
- مفاتيح تبقى بعيدة عن المحور. كان مفتاح الرسم البياني الطويل بما يكفي لينعطف إلى سطرٍ ثانٍ يفيض على تسميات المحور السيني تحته. صارت الأسطر المنعطفة يُحجَز ارتفاعها في شبكة الرسم، ويُعاد قياسه كلّما غُيّر حجم الرسم أو تبدّلت بياناته — فيكسب المفتاح مساحةً بدل أن يأخذ مساحة غيره.
- افتراضات أحدث من DeepSeek وQwen. التقط فهرس النماذج deepseek-v4-flash — بشارةٍ حدوديّة الآن ويُختار تلقائياً عند وصل DeepSeek، بثلث سعر Pro — وqwen3.8-max، رائد Qwen الجديد وأوّل طبقة Max بالرؤية، وأرخص من 3.7 Max الذي خلَفه. ويبقى deepseek-v4-pro مدرجاً إلى جانبه للعمل الاستدلالي الأثقل.
v1.0.234
ميزات جديدة
- كلُّ متصفّحاتك، بإضافةٍ واحدة. كانت إضافة المتصفّح تفترض متصفّحاً واحداً — تصلها من Chrome وتلك هي القصّة كلّها. أمّا اليوم فهي تخاطب عدّة متصفّحاتٍ في آنٍ واحد، بل إنّ الملفّين الشخصيّين للمتصفّح الواحد يُحسبان متصفّحَين، يُفرَّق بينهما بالبريد الإلكترونيّ المسجَّل في كلٍّ منهما، فلا يعود التمييز بين «كروم العمل» و«كروم الشخصيّ» تخميناً. كلّ متصفّحٍ يتّصل يقدّم نفسه لحظة وصوله — الاسم والإصدار ونظام التشغيل والملفّ الشخصيّ — ويأخذ صفّاً مستقلّاً في الإعدادات ← القنوات ← المتصفح، صفّاً يثبت في مكانه عبر إعادات تحميل الإضافة. والوكيل يرى القائمة نفسها: يستطيع أن يستعرض المتّصلَ منها وأن يختار أيَّ متصفّحٍ تقوده المحادثة — اختيارٌ يلزم تلك المحادثة حتّى يبدّله عمداً — ويسألك أوّلاً حين لا دليلَ يرجّح. ويبقى كلّ متصفّحٍ عالماً منفصلاً تماماً — تبويباته وجلساته وملفّات تعريف الارتباط خاصّته — والوكيل مُعلَّمٌ ألّا يخلط بينها أبداً.
- التفكير وراء الردّ، على بُعد نقرة. حين يفكّر النموذج قبل أن يجيب، لم يعد ذلك التفكير يتبخّر. فالردّ الذي يحمل تفكيراً يُختَم الآن ببطاقة التفكير الصغيرة المطويّة في خيط المحادثة — انقرها لينبسط أمامك نصّ التفكير الخام، وانقر ثانيةً لتنطوي. لا شيء يظهر حين لا تفكير هناك، والبطاقة مرآةٌ للبطاقة التي يعرضها تطبيق الهاتف أصلاً.
تحديثات
- تصويتُ هاتفك يحطّ على المحادثة المفتوحة. قيِّم ردّاً من واتساب أو تيليجرام — رقمٌ مجرّد من 0 إلى 10 — وكان تطبيق سطح المكتب يظلّ جالساً كأنّ شيئاً لم يحدث؛ بل أسوأ: المحادثة المُعاد فتحها لاحقاً كانت تظهر بلا تقييماتٍ البتّة رغم أنّ كلّ صوتٍ محفوظٌ على القرص. صارت التقييمات ترتحل: الصوت المُدلى به على أيّ واجهةٍ يظهر حيّاً على شريط التقييم في المحادثة المفتوحة أمامك، والمحادثات المُعاد فتحها تعرض كلّ ما نالته من درجات، وإذا قُيِّم الدورُ نفسه مرّتين فالغلبة لأحدث تصويت. أمّا النقرات داخل التطبيق فتُرسم فوراً وتتراجع من تلقاء نفسها إن أخفقت الكتابة النادرة.
v1.0.233
ميزات جديدة
- ينامُ على يومِه ويصبحُ أمهر. صار Wolffish يراجع كلَّ ليلةٍ محادثاتِه المنتهية — بما فيها المهامُّ المجدولة — مراجعةَ الزميلِ الحريصِ ليومِ عمله: ما الذي حاوله وكيف انتهى فعلاً، وما الذي نجح نجاحاً يستحقّ التكرار، وما الذي فشل ولماذا، وما الذي أريتَه إيّاه عن الطريقة التي تحبّ أن تُنجَز بها أمورُك. تتقطّر الدروسُ في دليلٍ عمليّ — افعل هذا، وتجنّب ذاك، ووصفاتٌ للمهامّ المتكرّرة — وهذا الدليل يركب في كلِّ محادثةٍ قادمة، فدرسُ ليلةِ الثلاثاء يصوغ أوّلَ ردٍّ يومَ الأربعاء. وهو وثيقةٌ حيّةٌ تُعاد كتابتُها في مكانها: أحدثُ الأدلّة يحسم التناقض، والتخميناتُ التي لا يعزّزها جديدٌ تذوي، وتعليمتُك الحاضرة تعلو على الدليل دائماً. ومرّةً كلَّ شهر تتّخذ المراجعةُ العميقة الموقفَ المعاكس فتهاجم ما راكمته الليالي — قواعدُ بلِيَت، وأحكامٌ عمّمت حادثةً واحدة — وهي الحارسُ البنيويُّ من عادةٍ سيّئةٍ علّمها لنفسه. وحاسوبٌ نائمٌ في الثالثة فجراً يُجري مراجعتَه ببساطة عند التشغيل التالي؛ والجدولُ ومدّةُ السكون وأزرارُ التشغيل الفوريّ وتقاريرُ آخر تشغيلٍ كلُّها في الإعدادات ← المعرفة ← المراجعة الذاتيّة.
- تقييمُك من 0 إلى 10 يصير مرجعَه الأوّل. أقوى إشارةٍ في تلك المراجعة الليليّة إشارتُك أنت. ففي التطبيق يظهر شريطُ تقييمٍ من 0 إلى 10 فوق مربّع الكتابة متى اكتمل الردّ — نقرةٌ واحدة تُسجّل التقييم، وأخرى تبدّل رأيك. وعلى واتساب وتيليجرام، الرسالةُ التي ليست إلا رقماً من 0 إلى 10 تُلتقَط بهدوءٍ تقييماً منك لآخر ردّ — يُقَرُّ بوصولها بتفاعُلِ ✍ صغيرٍ لا بفقّاعة محادثة — والأرقامُ المكتوبة بلوحة مفاتيحَ عربيّةٍ تُحتسَب سواءً بسواء. والسباكةُ تبقى دقيقة: «3» التي تجيب بطاقةَ سؤالٍ مرقّمة تظلّ تعني الخيارَ الثالث. والتقييم اختياريٌّ في كلّ مكان — لكلِّ واجهةٍ مفتاحُها الخاصّ في إعدادات المراجعة الذاتيّة نفسِها.
- رسومٌ بيانيّة — حيّةٌ في المحادثة، مرسومةٌ في الطباعة. صار بوسع Wolffish أن يُري البيانات بدل أن يسردها سرداً: بطاقاتُ رسومٍ بيانيّةٍ تفاعليّة في محادثة التطبيق — خطّيّة ومساحيّة وأعمدة وأشرطة ومكدَّسة ودائريّة وحلقيّة وانتثاريّة وخرائط حرارة ورادار وعدّادات وأقماع — منسّقةً على سمة التطبيق فاتحِها وداكنِها، مع تلميحاتٍ ووسائل إيضاح، وعرضٍ موسَّعٍ يملأ الشاشة، والبياناتُ الخام على بُعد نقرة، وحفظٍ كصورة للمشاركة. وداخل ملفّات PDF المولَّدة تُرسَم الرسومُ على النظام البصريّ نفسِه بهندسةٍ دقيقةٍ للطباعة ولوحةِ ألوانٍ مُتحقَّقٍ من أمانها لعمى الألوان. ودليلُ تصويرِ البيانات الأساسيُّ الجديد يعلّم الوكيلَ متى يستحقّ الرسمُ مكانَه (ومتى يكون الرقمُ أو الجدولُ هو الجوابَ الأمين)، وأيُّ رسمٍ يلائم أيَّ بيانات.
- مستنداتٌ يصمّمها دليلٌ، لا مِزاج. كانت ملفّات PDF التي يولّدها Wolffish تتأرجح بين الجيّد حقّاً والمعطوب ظاهراً — صفحاتٌ داكنة تشبه الشرائح، وأوراقٌ نصفُها فارغ، ومظهرٌ مختلفٌ في كلّ مرّة — لأنّ وصفة التصميم الكاملة كانت تقيم حيث نادراً ما يقرؤها النموذج. صارت تلك الوصفة دليلَ تصميمِ مستنداتٍ أساسيّاً يحمّله الوكيل قبل أن يؤلّف أيَّ شيءٍ ستقرؤه: خطوةُ تخطيطٍ للصفحات كي لا تخرج صفحةٌ نصفُها فارغ، وبنيةُ أوراقٍ ثابتة بتذييلٍ جارٍ ورقمِ صفحةٍ حقيقيّ، وسلّمُ خطوطٍ واحد، ولونُ تمييزٍ واحد مع صفحاتِ متنٍ فاتحةٍ دائماً، وعُدّةُ مكوّنات، وقواعدُ العربيّة والاتّجاه من اليمين إلى اليسار، وفحصُ تحقّقٍ إلزاميّ — إذ يُصيّر الوكيلُ صفحاتٍ عيّنةً صوراً وينظر إليها قبل أن يرسل إليك شيئاً. وتعليماتُك أنت تبقى هي الغالبة.
تحديثات
- ماركداونٌ خام لا يبلغ هاتفك بعد اليوم. واتساب وتيليجرام لا يعرضان الماركداون أصلاً — ومع ذلك كان الوكيل المنهمكُ في مهمّته يكتب أحياناً
**عريض**أو# عناوينأو| جداول |فتهبط الرموزُ الخام في محادثتك كما هي. هذا التسرّب أُغلق من طرفيه: فأدواتُ الإرسال صارت ترفض الماركداون رفضاً صريحاً — يعيد الوكيل كتابة الرسالة بتنسيق المحادثة نفسِه قبل أن يخرج منها شيء — وحواجزُ دقيقةٌ تُبقي النصَّ البريء سالكاً، فـx**2وf(**kwargs)تُقرأ رياضياتٍ وشيفرةً لا خطّاً عريضاً. أمّا السردُ الحيُّ بين خطوات الأدوات فيُراقَب بدل أن يُحجَب: حين يهبط سطرٌ يحمل رموزاً خاماً يُخبر Wolffish الوكيلَ بما وصلك بالضبط، وعلى تيليجرام يدلّه على الرسالة المسلَّمة نفسِها فيحرّرها بهدوء حتى تصفو. لا شيء يعيد كتابة كلمات الوكيل، ولا شيء يُحجَب. - ذاكرةٌ تُنقِّح لا تُكدِّس. كانت العمليّةُ الليليّة التي تحوّل محادثاتِ اليوم معرفةً طويلةَ المدى مستخرِجاً لا غير: لا ترى ما سبق أن كتبته، فتعيد استنتاجَ الحقائق نفسِها ليلةً بعد ليلة — رقمُ الهاتف نفسُه مدوَّنٌ اثنتي عشرة مرّة، وحقائقُ تنزلق إلى الشخص الخطأ. صارت اليوم منقِّحاً: تقرأ ملفّاتِ المعرفة الحاليّةَ إلى جوار سجلِّ اليوم وتعيد كتابتَها كاملةً — قسمٌ واحدٌ مرتَّبٌ لكلِّ شخصٍ ومشروعٍ وموضوع، وشبهُ المكرَّر يُدمَج في سطرٍ واحد، والتناقضاتُ تُحسَم لأحدث الأدلّة، والحشوُ يُحذَف فورَ رؤيته. وكلُّ إعادةِ كتابةٍ تحفظ النسخةَ السابقة نسخةً احتياطيّةً بجوار الأصل — فليلةٌ سيّئةٌ تبعُد نسخةً واحدةً عن الإلغاء — وتحريراتُك اليدويّةُ تنجو من التنقيح.
- المساراتُ النسبيّة تهتدي إلى مساحة العمل. اطلب من الوكيل ملفّاً بمسارٍ نسبيٍّ مجرّد —
files/report.pdfلا العنوانَ الكامل — وكان المسار يُحَلّ على المكان الذي صودف أن أُطلق التطبيقُ منه. صارت المساراتُ النسبيّة تُحَلّ على مساحة العمل، المجلّدِ الذي تعيش فيه الملفّاتُ المولَّدة فعلاً، فالملفُّ الذي يسمّيه الوكيل هو الملفُّ الذي يجده.
v1.0.232
تحديثات
- تبويبات الإعدادات تقول ما تحتويه. كان تبويبان في الإعدادات مسمَّيين بأجزاءٍ من الدماغ، لا بشيءٍ تذهب أنت باحثاً عنه. فـ**«المُخيخ»** — الصفحةُ التي تسرد كلَّ قدرةٍ يستطيع Wolffish أن يستعين بها — صار «القدرات»، و**«الحُصين»**، حيث يقيم جدولُ ضغط الذاكرة، صار «المعرفة». والصفحتان نفسُهما لم تتغيّرا حتى آخر مفتاحٍ فيهما؛ إنّما انتقلت الكلماتُ التي تتنقّل بها إلى لغةٍ صريحة. وصفحةُ «البيانات» تحذو حذوَهما — إذ صار تفصيلُ التخزين فيها يذكر ما تكلّفه الذاكرةُ تحت «المعرفة». أمّا أعماقُ Wolffish الداخليّة فتحتفظ بأسمائها التشريحيّة؛ الذي تغيّر هو التسمياتُ التي تنقر عليها فعلاً.
- متّسعٌ في أسفل قائمة المحادثات. مرِّرْ إلى آخر صفحة «المحادثات» فكان الصفُّ الأخير يقف ملتصقاً بحافّة النافذة، قريباً منها إلى حدٍّ يبدو معه مقطوعاً لا منتهياً. صارت القائمةُ تُبقي متّسعاً بعد صفِّها الأخير، فيُقرأ أسفلُ التمرير الطويل على أنّه أسفلُه فعلاً.
v1.0.231
تحديثات
- اعثر على محادثةٍ بزمن وقوعها. كانت كلُّ قائمة محادثاتٍ كوماً واحداً طويلاً مرتَّباً من الأحدث — ترتيبٌ يفي بالغرض حتى الصفّ العشرين تقريباً، ولا يفي به البتّة بعده. صارت القوائمُ الثلاث — الشريطُ الجانبيّ، وصفحةُ «المحادثات»، وقائمةُ محادثات المشروع — تقسّم نفسَها إلى مجموعاتٍ مؤرَّخة: اليوم، وأمس، وآخر 7 أيّام، وآخر 30 يوماً، ثمّ آخر 3 أشهر، وآخر 6 أشهر، وآخر سنة، وأقدم. والنوافذُ تتّسع كلّما ابتعدت، وذلك عن قصد — فالعملُ القريب يُطلَب بيومه بعينه، والبعيدُ بحقبته على وجه التقريب. ولا يظهر عنوانٌ إلا إن كان تحته شيء، والبطاقاتُ المرقَّمة تواصل عدَّها عبر تلك العناوين، والمجموعاتُ تُقطَع على الأيّام التقويميّة، فما كان في الحادية عشرة من ليل أمس يُقرأ «أمس» لا أن يقع داخل أربعٍ وعشرين ساعةً متدحرجة.
v1.0.230
ميزات جديدة
- كبِّر ما تنظر إليه. كانت الصورةُ في المحادثة تُفتَح كبيرةً وتقف عند ذلك. صار العرضُ الموسَّع يكبّر عند مؤشِّرك: مرِّر العجلةَ فتبقى النقطةُ تحت المؤشِّر في موضعها تماماً، حتى ثمانيةِ أضعاف، ثمّ اسحب لتتنقّل في ما كبَّرته. ويحمل شريطٌ صغير النسبةَ الحيّة؛ و
+و-و0تفعل الشيءَ نفسَه من لوحة المفاتيح، والنقرةُ المزدوجة تقتحم الصورةَ أو ترتدّ منها. ونالت مقاطعُ الفيديو السطحَ نفسَه — زرُّ توسيعٍ جديد يفتح المشغِّل بمقاس شكلِ الصورة الحقيقيّ لا بعرضٍ سينمائيٍّ مفترَض — وملفّاتُ PDF تتوسّع كذلك، إلى 80% من النافذة، حيث يُبقي العارضُ المدمج تمريرَه وتنقّلَه بين الصفحات لنفسه. - أبلِغ عن علّةٍ دون أن تفتح المحادثة أوّلاً. كان زرُّ العلّة الذي يحزم كلَّ ما يتعلّق بمحادثةٍ انحرفت عن مسارها لا يُبلَغ إلا من داخل تلك المحادثة. صار كلُّ صفٍّ في صفحة «السجلّ» يحمل زرَّ علّةٍ خاصّاً به، فتُسلِّم حزمةً عن محادثةٍ لستَ فيها. وقد صار التصديرُ نفسُه أثبتَ في ثلاثة مواضع: لم تعد شاشةُ الجمع تدور إلى الأبد فوق أرشيفٍ قد حطَّ فعلاً، وصارت العودةُ إلى عمليّةٍ جاريةٍ تلتحق بها بدل أن تُبلِّغ عن فشل، والخطوةُ الاختياريّة التي تسأل النموذجَ عمّا يظنّه قد أخطأ تستسلم بعد تسعين ثانية — فمزوِّدٌ متعثِّرٌ يكلّف الحزمةَ قسماً واحداً لا التصديرَ بأسره.
تحديثات
- محادثةٌ واحدة، وحكايةٌ واحدة، في أيِّ قائمةٍ قرأتَها. صار الشريطُ الجانبيّ وصفحةُ «السجلّ» وقائمةُ محادثات المشروع تتشارك تعريفاً واحداً، وكلٌّ منها يواكب الحدثَ بنفسه: ابدأ محادثةً في التطبيق، أو راسِلْ من واتساب أو تيليجرام، أو دَعْ أتمتةً أو إجراءً محفوظاً يفتح واحدةً — فيظهر الصفُّ لحظةَ يبدأ دورُه الأوّل، وعليه البطاقةُ النابضة والرمزُ التعبيريّ للمصدر، بدل أن يطلع بعد أن يكون العملُ قد انتهى أصلاً. وفي صفحة «المشاريع» صارت أعدادُ المحادثات وطوابعُ «آخر استخدام» تحدّث نفسَها حيّةً كذلك.
- أشِرْ إلى مجلّدٍ في وسط الإجابة. كان تسليمُ مجلّدِ عملٍ إلى Wolffish يُقفَل لحظةَ يبدأ بالإجابة. صارت الإضافةُ حيّةً الآن، تماماً كإرفاق ملفّ — فالمجلّد يركب رسالتَك التاليةَ في الطابور لا الجاريةَ. أمّا إزالةُ مجلّدٍ فتبقى مُمسَكةً ما دام الدورُ يعمل، وذلك عن قصد: فقد يكون الوكيلُ يقرأ ملفّاتٍ فيه هذه اللحظة.
- ويندوز: أدواتُ PDF وأوامرُ الطرفيّة، مُحرَّرةً. عِلّتان تخصّان ويندوز وحدَه. كانت كلُّ أدوات PDF — القراءةُ والبحثُ وتصييرُ صفحة — تفشل من أوّل نداءٍ لها، لأنّ مسارَ ملفٍّ كان يُركَّب بفاصل النظام نفسِه حيث يشترط محرِّكُ PDF حرفاً واحداً بعينه. وأمرُ طرفيّةٍ يطبع أيَّ شيءٍ في مجرى الأخطاء — وهي طريقةُ
npmوgitوpipوffmpegفي التبليغ عن تقدّمها المعتاد — كان قد يُبلَّغ عنه فاشلاً وهو ناجحٌ تماماً متى أُلحِق به2>&1بحكم العادة؛ صار ذلك التحويلُ يُحذَف قبل تنفيذ الأمر. - نافذةُ المشروع تكفّ عن الانزلاق تحتك. كانت إضافةُ ملفٍّ إلى مشروعٍ تحرّك كلَّ ما تحتها مرّتين. صار شريطُ التقدّم وقائمةُ الملفّات يتشاركان قالباً واحداً وارتفاعَ صفٍّ واحد، فتحجز الكتلةُ مكانها مرّةً وتحتفظ به — وزرُّ النسخ على تعليمات المشروع الثابتة صار يظهر عند المرور على الكتلة، كسائر كتل الشيفرة في التطبيق.
v1.0.229
ميزات جديدة
- زرّ واحد يحزم كلّ ما اعوجّ. كان شرحُ محادثةٍ منكسرة للمطوّر يعني تعقّبَ أيّ سجلّ وأيّ ملفّ مهمّة وأيّ لقطة موجِّه تخصّها فعلاً. صار زرُّ العلّة في كلّ محادثة يؤدّي المهمّة كاملة: ضغطةٌ واحدة تحزم تلك المحادثة وحدها لا غير — النصَّ الكامل، وسجلَّ الأحداث للأيّام التي تمتدّ عليها مع شريحةٍ مصفّاةٍ على أدوارها هي، وملفّاتِ المهامّ التي تفرّعت عنها، والذاكرةَ التي تقف خلفها، والموجِّهاتِ وعقودَ القدرات التي كان يعمل عليها، وإعداداتِك — في ملفٍّ مضغوطٍ واحدٍ تُحيله كما هو. وكلُّ بيانات الاعتماد محجوبة (مؤشّرُ طولٍ لا القيمة)، ووسائطُ المرفقات تبقى خارجه، فيكون تسليم الأرشيف آمناً. وعلى نموذجٍ سحابيّ يسأل كذلك النموذجَ نفسَه عمّا يظنّه قد اعوجّ ويدسّ ذلك في الحزمة. انظر التصدير التشخيصي.
- أرِني الشكل. اسأل عن مخطّطٍ أو رسمٍ بيانيّ أو خوارزميّةٍ أو جدولٍ داخل ملفّ PDF، فلم يكن بوسع وولفيش إلا أن يقرأ عليك الكلماتِ من حوله. والأداة الجديدة
pdf_render_pagesتصيّر الصفحةَ نفسَها صورةً — الشكلُ كما طُبِع بالضبط، وبأيّ تكبيرٍ يقتضيه الخطُّ الدقيق — وترسلها إلى المحادثة. وهذا علاجُ إخفاقٍ صامت: فشكلُ الكتاب المدرسيّ مرسومٌ لا مخزَّن في الغالب، فلا صورةَ داخل الملفّ تُنتزَع، وكانpdf_extract_imagesيعود بلا شيءٍ عن حقّ. وقد صار الاستخراجُ أحدَّ أيضاً — يعمل على الصفحات التي تسمّيها لا على الكتاب كلّه، ويتخطّى الشظايا دون 80 بكسل التي كانت تدفن الشكلَ الوحيد الذي أردتَه تحت آلاف الملفّات التي لا تُقرأ. انظر قدرة pdf.
تحديثات
- الملفّات الكبيرة تُخبِرك وهي تُنسَخ. أرفِق شيئاً كبيراً فكان صندوق الكتابة يبقى فارغاً ريثما يُنسَخ إلى وولفيش، حتى تظهر البطاقةُ فجأةً بعد ثوانٍ أو دقائق. صار كلُّ ملفٍّ تختاره أو تُسقِطه أو تلصقه يحجز بطاقته لحظةَ اختياره، بحلقةٍ تمتلئ ونسبةٍ حيّة تعدّ البايتات الحقيقيّة، ويُسلِّم مكانه للمرفق المكتمل حين تحطّ تلك البايتات. والإرسال ينتظرها — يستريح الزرّ، وتُلتقَط ضغطةُ Enter أيضاً، وتقول تلميحةٌ لماذا — لأنّ رسالةً تُرسَل في منتصف النسخ كانت لتمضي بهدوءٍ بلا ملفّها. أمّا إيقاف دورٍ جارٍ فلا يُحجَب أبداً. وإضافةُ ملفّاتٍ إلى مشروع نالت المعاملة نفسَها: شريطٌ واحد يمتدّ على الدفعة كلّها، ومعه أيُّ ملفٍّ من كم يتحرّك الآن.
- سجِّل وهو ما يزال يعمل. كان الميكروفون يخبو لحظةَ يبدأ وولفيش بالإجابة. صار التسجيل حيّاً على الدوام، تماماً كالإرفاق: التسجيلُ الذي تبدؤه في وسط الإجابة ينتظر في الصفّ فوق صندوق الكتابة — ومعه زرُّ تشغيلٍ ومدّتُه لتسمعه قبل أن يمضي — ويرسل نفسَه حين ينتهي الدور، فيُرفَع ويُفرَّغ نصّاً ويُجاب عنه في موضعه الصحيح من الطابور.
v1.0.228
ميزات جديدة
- القدرات الأساسية لا تُطفأ بالخطأ. تتيح الإعدادات تشغيل القدرات وإطفاءها فُرادى — لكنّ حفنةً منها ركائز لا غنى عنها: محرّك سير العمل، وأسرارك، وقدرة
skills، والمشاريع، والأتمتة، والإجراءات، والأدوات المشتركة التي يتّكئ عليها سائرها. صارت هذه تحمل شارة «أساسي»، وتستقرّ في أسفل القائمة، ولم يعد بالإمكان إطفاؤها — إذ يجلس مؤشّر «مُفعّل دائماً» مقفلاً حيث كان مفتاحها. وكلّ ما أضفته بنفسك يبقى قابلاً للتبديل تماماً كما كان؛ المحميّ هو الأساسيّات وحدها، فلا تقدر نقرةٌ طائشة أن تسحب الأرض من تحت ميزة تعتمد عليها.
تحديثات
- وضع سير العمل يعمل من جديد. في الإصدار 1.0.227، توقّف وضع سير العمل عن التفويض بصمت: الأدواتُ التي يستعملها لتخطيط المراحل وإطلاق الوكلاء وجمع نتائجهم أخفقت في التحميل، فارتدّ إلى العمل وحده دون أيّ إشارة إلى السبب. كان السبب زلّة تنسيق صغيرة في ملفّ داخليّ — وقد أُصلِح، فصار وضع سير العمل يخطّط ويفوّض ويجمع كما ينبغي من جديد.
v1.0.227
ميزات جديدة
- لا شيء ترسله يحتاج إعادة إرسال. راسِل وولفيش من تيليجرام أو واتساب وهو ما يزال يعمل، فتُوضع رسالتك الآن في طابور، لا تُرفض بـ«انتظر، أنا مشغول» — والملفات والرسائل الصوتية معها، تُنزَّل وتُفرَّغ نصّاً لحظةَ وصولها فلا يبلى شيء في الصفّ. ردٌّ يؤكّد موضعها، وتنطلق كلّ رسالة في دورها الخاص، بالترتيب، لحظةَ تنتهي المهمة الجارية. وأمران يُبقيان الزمام بيدك:
/cancelيُسقط كل ما ينتظر ويترك المهمة الجارية وشأنها، و**/stop** يوقف التشغيل ويدع الطابور يمضي. وبدءُ محادثةٍ أو تبديلُها (/newو/resumeو/deleteوتبديل المشروع) يُفرغ الطابور مع المحادثة التي كان لها. وعادةٌ عليك نسيانها: في تيليجرام لم يعد/cancelاسماً آخر لـ/stop. - محادثة هاتفك، حيّةً على مكتبك. المحادثة التي يجيب عنها تيليجرام أو واتساب أو أتمتة الآن كانت تُفتح في التطبيق ساكنةً منتهية، والردّ كلّه يهبط دفعةً واحدة في النهاية. صارت تُقرأ حيّة: الردّ ينساب في التغذية وهو يُكتَب، وزرّ الإيقاف يوقف التشغيل حقّاً أيّاً كان الجهاز الذي بدأه، والرسالةُ التي تكتبها في منتصفه تصطفّ وتنطلق من تلقاء نفسها حين يحطّ — ولو فتحتَ النافذة في منتصف تشغيل.
- وكيلٌ عالق يقول ذلك. في وضع سير العمل، كان الوكيل الموكَل إذا عَلِق — يعيد الاستدعاء نفسه بلا طائل — خفيّاً بينما يجلس القائد محبوساً بانتظار نتيجة لا تأتي. صار الطرفان يُخبَران: الوكيل الدائر يتلقّى ملاحظةً بأن يختم بما لديه، والقائد يُوقَظ من
agents_awaitباسم الوكيل والاستدعاء المتكرّر وعدد مرّاته — ثم يقرّر هو: ينتظر قليلاً لنتائج جزئية، أو يُلغيه ويغطّي تلك الشريحة بطريقة أخرى. لا سقفَ يُفرَض ولا إنهاءَ تلقائياً.
تحديثات
- ضغط الذاكرة يُظهر عمله. كانت بطاقة ضغط الذاكرة في الإعدادات تعرض التشغيل القادم فقط. صارت تعرض أيضاً آخر تشغيلٍ مكتمل لكل مهمة — متى جرى، وكم استغرق، والمخرَج الذي أنتجه، و(لمكالمة الملخّص اليومي) التوكن إدخالاً وإخراجاً — والتمريرات المتخطّاة أو الفاشلة لا تطمسها أبداً، فما تقرؤه هو دائماً آخر تمريرة صنعت شيئاً. وخفّت المكالمات الجانبية أيضاً: تسمية محادثةٍ وكتابة ملخّصٍ تجريان الآن بلا تفكير استدلالي على الدماغ المُعدّ لديك، أيّاً كان مستوى الاستدلال الذي اخترته للمحادثة.
v1.0.226
تحديثات
- المساحة منخفضة؟ تحذيرٌ لا جدار. كان التشغيل بأقلّ من 5 غيغابايت حرّة باباً موصَداً — شاشةُ المساحة المنخفضة لا مخرج منها إلا بحذف الملفات. صارت تحذيراً: زرُّ «المتابعة رغم ذلك» ينقلك مباشرةً إلى شاشتك المعتادة، مع ملاحظةٍ صريحة أنّ النماذج والحفظ والتنزيلات قد تفشل حتى تُفرِّغ مساحة. والقرار قرارك ومفعوله جلسةٌ واحدة — يظلّ التحذير يستقبلك مع كلّ تشغيل ما دام القرص ضيّقاً — وتعلّم زرُّ «إعادة الاحتساب» أن يجيب بصوتٍ مسموع، إذ ينتهي كلّ فحصٍ بإشعار: أخضرُ «كافية للمتابعة» ومعه المساحة الحرّة بدقّة متى تجاوزت الحدّ، والتحذير المألوف إن لم تتجاوزه.
- تسميةٌ عربيّة رُتِقَت. كان حرفٌ مشوَّه قد تسلّل إلى التسمية العربية لتسجيل رسالة صوتية. عادت تُقرأ «تسجيل رسالة صوتية» كما ينبغي.
v1.0.225
ميزات جديدة
- تشغيلات الخلفية تكفّ عن الاستيلاء. كانت الأتمتة المنطلقة تستبدل بالتطبيق كله غطاءً بملء الشاشة «المحادثة متوقفة». صارت تطفو بطاقةً حيّةً عائمة مثبَّتة أعلى الشاشة — أيقونة نابضة، واسم المهمة ووضعها، وبثّ حيّ لما تفعله — بينما يبقى سائر وولفيش صالحاً للاستعمال كله. انقر البطاقة تتّسع لوحةَ النشاط الكاملة (المؤقّت والتعليمة وسجل خطوة بخطوة)؛ وEscape أو نقرة خارجها تطويها راجعةً دون أن يضيع سطر من التاريخ. وتشغيلات الإجراءات لا تنال بطاقةً أصلاً وعن عمد — فالأمر المحفوظ يؤدي عمله بلا حاجة إلى مسرح — على أن التشغيل الفاشل ما زال يرفع إشعاراً يسمّي ما انكسر.
- ثلاثة معاً، والباقي في الطابور. كانت مهام الخلفية تجري واحدةً واحدةً بصرامة — فموجز ليلي بطيء يؤخّر الجدول كله. صار المحرّك يشغّل حتى ثلاث مهام جنباً إلى جنب، لكلٍّ بطاقتها، وما جاوز الثلاث ينتظر في طابور مرئي — صفّ تحت البطاقات يَعُدّ المنتظرين ويسمّيهم، ولا شيء يسقط أبداً: المهمة المنتظرة تنطلق لحظة تخلو خانة، والمهمة التي تنطلق وهي أصلاً تعمل أو تنتظر تُطوى في التشغيل المعلّق بدل أن تكدّس نسخاً. وعلى صفحة الأتمتة، المهمة الجارية أو المنتظرة تقول ذلك على بطاقتها ويستريح زرّ «تشغيل الآن» حتى ينقضي التشغيل.
تحديثات
- التعديل يُحسَب، كائناً من كان صاحبه. كان ختم «عُدّل» على بطاقة الأتمتة لا يلحظ إلا حفظات محرّر البطاقات نفسه. صارت الأختام تأتي من المحرّك الذي يراقب
heartbeat.mdنفسه: كل يدٍ تُحسَب — الحوار، ونظرة الماركداون، وأدواتautomation_*الخاصة بوولفيش، ومحرّر خارجي، بل تعديل جرى والتطبيق مغلق — في حين أن مجرّد تشغيل مهمة أو إيقافها لا يعيد ختمها، وهذا هو الصواب. وصفحات الأتمتة والإجراءات والمشاريع كلها تُنعش نفسها حيّةً حين يتغيّر شيء من تحتها — اطلب من وولفيش وسط محادثة إضافة أتمتة وراقب البطاقة تظهر — وبطاقات المشاريع تعرض الآن وقت «عُدّل» الخاص بها إلى جانب آخر استخدام. وكفّ حقل الجدولة في محرّر البطاقات عن الوميض بالأحمر في منتصف الكتابة: يُمهل وقفتك عن الكتابة قبل أن يحكم على جدول بالخطأ. - صلاحيات المدير تبلغ الوكلاء. يحتفظ وولفيش بجلسة مدير محفوظة واحدة لكل تشغيلة للتطبيق — تكتب كلمة سرّك في حوار نظامي مرة، وتتوثّق أوامر
sudoمن جهة التطبيق بعدها. صارت تلك الجلسة على مستوى التطبيق حقاً: وكلاء سير العمل والتشغيلات المجدولة — أتمتةً وإجراءات — يترقّون عبر الجلسة نفسها التي تخدم المحادثة، فالمهمة المفوَّضة التي تحتاج صلاحيات مدير تمضي وحسب بدل أن تعود بعبارة «هذا يحتاج ترقية».
v1.0.224
ميزات جديدة
- المشاريع. بعض العمل عشرات المحادثات تتقاسم سياقاً واحداً — المشاريع تمنحه بيتاً. المشروع اسم ورمز تعبيري وتعليمات دائمة ومجموعة ملفات؛ وكل محادثة بداخله تبدأ وقد أُطلِعت سلفاً: التعليمات تركب كل دور، والملفات معروفة بأسمائها تُقرأ عند الطلب بدل أن تُحشَر في السياق. أدِرها من صفحة المشاريع الجديدة؛ وابدأ واحدة بتمرير المؤشر على زر المحادثة الجديدة (تنكشف مشاريعك بطاقات)، ويجمع الشريط والسجل محادثات كل مشروع تحت اسمه وبشارته. ويمكن ربط الإجراءات والأتمتة بمشروع أيضاً، ويبدأ
/projectعلى واتساب وتيليجرام محادثات المشروع من هاتفك — مع بقاء/newعمداً داخل المشروع و/project closeمخرجاً. ويدير وولفيش المشاريع بنفسه عبر ثماني أدواتproject_*جديدة. - ملفات بحجم الكتب. محتوى المرفقات لم يعد يُحقَن في السياق أبداً — كل ملف يصير بطاقة تعريف موجزة (الاسم والمسار وحقائق حقيقية — عدد صفحات الـPDF يُسبَر بتؤدة من فهرسه نفسه)، ويقرأ وولفيش عند الطلب:
pdf_infoوpdf_searchالجديدتان معpdf_readكسولة مخزَّنة تمشي في وثائق الألف صفحة نطاق صفحات فنطاق، وfile_readيبثّ شرائح الملفات النصية العملاقة، ونماذج الرؤية تسحب بكسلات الصورة عبرimage_viewالجديدة حين تنظر فعلاً فقط. وزالت حدود الحجم الاعتباطية (100 ميجابايت للمستندات والجداول، 500 ميجابايت للصوت)، وصار وولفيش يروي القراءات الطويلة بدل أن يصمت. - الأتمتة، بوجوه الآن. أُعيد بناء صفحة الأتمتة حول البطاقات: كل مهمة تلبس رمزها التعبيري (📧 لجولة البريد، 📰 لموجز الأخبار)، مع حوار تحرير محترم — رقاقات جدولة لكل شكل حتى cron الكامل، ومُدخَل وقت حقيقي، ومعاينة «التشغيل القادم» حية، وحفظ تلقائي. والرمز يُختَم على كل محادثة تنشئها تشغيلات المهمة، فيخبرك الشريط بلمحة لأي أتمتة يعود تشغيل الليل. ونالت الإجراءات المعاملة نفسها — رمز لكل إجراء، مختوم على تشغيلاته.
- عدة أسئلة، بطاقة واحدة. صار
ask_userيأخذ قائمة أسئلة: تصل في التطبيق بطاقةً واحدة برقاقات تبويب — تقلّب بينها وتجيب عن الكل فتُحسَم دفعة واحدة — وعلى واتساب وتيليجرام يمشي بك الطلب نفسه عليها رسالةً رسالةً بترتيبها. والاختبارات القصيرة تجري عبره أيضاً: كل الأسئلة أولاً، ثم تصحيح وشرح بعدها.
تحديثات
- ردود تنطوي. صار بوسع الردود استعمال شريحة معقَّمة محسوبة من HTML الحقيقي: أقسام
<details>قابلة للطي بعنوان يُنقَر، ونص<mark>مُظلَّل، ومفاتيح لوحة، وحروف فوقية وتحتية. السكربتات والأنماط والإطارات ومعالجات الأحداث تُجرَّد فوراً؛ والوسم المجهول ينحدر إلى نصه. وتصدير PDF يعرض الشريحة نفسها بالضبط، فتُري المحادثة المصدَّرة ما أرته التغذية. - بطاقة تفتح المجلد. حين يكون المطلوب مكاناً لا ملفاً يُرفَق — مجلداً هيّأه وولفيش، دفعة مخرجات، ملفاً تُرك عمداً حيث طلبت — يدفع بطاقة موضع قابلة للفتح: فتح للمجلدات وإظهار للملفات. وحُذف تخمين المسارات القديم الذي كان يستخرج البطاقات من النثر — البطاقة توجد الآن بالضبط لأن وولفيش اختار أن يناولك المكان، عبر أداة حقيقية بمسار متحقَّق.
v1.0.223
ميزات جديدة
- واصل الكتابة ووولفيش يعمل. لم يعد صندوق الكتابة يُقفَل أثناء الدور. اكتب رسالتك التالية في منتصف التشغيل واضغط إدخال فتصطفّ في سطر فوق صندوق الكتابة — قابلة للإلغاء حتى لحظة انطلاقها — وتُرسَل من تلقاء نفسها حين ينتهي الدور الجاري؛ وصُفّ منها ما شئت فتخرج واحدة واحدة، بترتيبها. والمرفقات تجاري الركب: زر الإرفاق والسحب والإفلات واللصق كلها تبقى حية أثناء التشغيل، والملفات المجهَّزة تركب مع الرسالة المنتظرة بدل أن تقاطع التشغيل الجاري. وإيقاف التشغيل يُحسَب إنهاءً له، فزر الإيقاف يقدّم الطابور هو الآخر — فتمضي متابعتك المنتظرة مباشرة إلى المكان الذي أخلاه الإيقاف للتو.
- إنفاقك، مجموعاً لأجلك. كانت لوحة «الاستخدام» تعرف كلفة كل نداء — وتترك الجمع لك، بطاقة مزوّد بعد بطاقة. قسم «التكاليف» الجديد يتولى الحساب للنطاق الذي تعرضه: إجمالي الإنفاق، وأعلى إنفاق يومي مع تاريخ اليوم الذي وقع فيه، والمتوسط اليومي على الأيام التي استعملت فيها وولفيش فعلاً. والإجمالي يحسب رسوم بحث Brave أيضاً، فيساوي حقاً مجموع بطاقات المزوّدين تحته، والبطاقات الجديدة تُحمَّل بالهياكل نفسها كسائر اللوحة، فلا يقفز شيء حين تحطّ الأرقام.
تحديثات
- تكبير على مقاس الصورة. كان النقر على صورة لرؤيتها كبيرة يعوّمها في حوار عام الأغراض، مع شريطين فارغين حيثما اختلف شكلها وشكل الصندوق. صار التكبير عارضاً حقيقياً: غطاء نظيف يعانق نسب الصورة بدقتها، فيكبّرها حتى تبلغ 80% من النافذة على أيّ الحافتين وصلت أولاً — لا شريط عنوان، ولا أشرطة فراغ، الصورة وحدها. انقر في أي مكان خارجها، أو اضغط Esc، لصرفها. والعارض نفسه يخدم المحادثة وعارض ملفات مساحة العمل سواء.
v1.0.221
ميزات جديدة
- محادثات هاتفك، تُكمِلها على مكتبك. المحادثة التي بدأت على تيليجرام أو واتساب — أو التي أدارتها أتمتة في جوف الليل — كانت تُفتَح في التطبيق للقراءة فقط. الآن كل محادثة دردشة حية في كل مكان: أكمل خيط هاتفك بلوحة مفاتيح حقيقية، أو التقط تشغيلة أتمتة منتهية واسأل سؤال المتابعة — تُفَكّ أختامها وتنمو كأي محادثة أخرى. وإن حطّت رسالة على هاتفك بينما المحادثة نفسها مفتوحة على مكتبك، يظهر ذيلها الجديد في مكانه ببساطة، وتنجو الرسائل الصوتية من الرحلة كما هي. وصار شريط المحادثات وصفحة السجل يضعان على كل محادثة شارة مصدرها — تيليجرام، أو واتساب، أو أتمتة، أو إجراء — فتبقى القائمة المختلطة مقروءة.
- أمر
/resumeيبلغ كل محادثة. صارت قائمة الاختيار على القناتين تسرد كل ما لدى وولفيش — كل القنوات، الأحدث أولاً، خمس وعشرون في الصفحة معnext— وكل صف موسوم بمصدره والترقيم متّصل عبر الصفحات. والرقم الذي لم يُعرَض عليك قط لا يختار شيئاً، وهذا أهم ما يكون مع/delete— الذي تخدمه القائمة نفسها الآن — حيث الاختيار الخاطئ لا رجعة فيه. وتشغيلات الأتمتة المجدولة مستبعدة من/resumeافتراضياً — بمفتاح جديد في إعدادات القناتين — مع بقائها في/deleteوفي التطبيق. - الردود تحطّ حيث قصدت. حين يراسلك وولفيش من خارج السياق — أتمتة تبلّغ عن مهمة أنجزت، أو محادثة في التطبيق تترك لك ملاحظة — صارت الدردشة توجّه نفسها إلى المحادثة المُرسِلة، وساعة خمولها معادة كي لا يقذفك حارس القِدَم خارجاً. تردّ، وأنت أصلاً في المحادثة التي راسلتك.
- Kimi K3. رائد Moonshot الجديد، مدعوم بكامله من اليوم الأول: نافذة سياق بمليون رمز، وإخراج أقصى 128K، ورؤية، ومقياس استدلال بثلاث درجات — إيقاف / عالٍ / أقصى — على زر الاستدلال، وقد تحقّقنا من أن الإيقاف يعطّل التفكير فعلًا. صار K3 النموذج الافتراضي لمزوّد Kimi، مسعّرًا في تتبّع الاستهلاك حتى خصم الرموز المخزّنة، ومتاحًا عبر OpenRouter كذلك. وانفتح البصر على بقية الخط أيضًا: كل النماذج من k2.5 فصاعدًا متعددة الوسائط أصالةً، فصارت الصور تصل إلى k2.5 وk2.6 ونماذج k2.7 البرمجية بدل أن تُجرَّد بحجة أنها نصية فقط. وكفّ منتقي النماذج عن دفن الرائد — إذ تختم Moonshot فهرسها كله بتاريخ إصدار واحد مشترك، فصارت القائمة تُرتَّب الأحدث عائلةً أولًا.
- «أعد المحاولة» على الأدوار الفاشلة. حين يسقط المزوّد في منتصف الدور — مثقلًا أو متباطئًا أو معطوبًا — تحمل بطاقة الخطأ الآن زر «أعد المحاولة». نقرة واحدة تُكمل المحادثة مع تسمية ما فشل، فيتحقق وولفيش مما اكتمل فعلًا (ملفات كُتبت، نتائج أدوات في اليد) ويمضي من موضع الانقطاع بدل إعادة المهمة من الصفر.
- إنفاق كل وكيل في العدّاد. صارت بطاقة شريحة السياق تفصّل تشغيلات سير العمل: صف لكل وكيل — نقطة حالته الحية، ورموزه، وتكلفته، وشريط مُدرَّج على أكبر منفق في التشغيلة — مع مجاميع التشغيلة من استدعاءات الأدوات والرموز والتكلفة. ويعود القسم مع بقية العدّاد حين تعيد فتح محادثة كان آخر أدوارها تشغيلة سير عمل.
تحديثات
- المحادثات تندمج بدل أن تتصادم. صارت كل رسالة تحمل هوية دائمة، وتتصالح نسختا المحادثة الواحدة رسالةً رسالة بدل أن يفوز آخر من حفظ — فرسالة تيليجرام التي تحطّ بينما الخيط نفسه يدير دورًا في التطبيق تنجو إلى جانبه، ويبقى الملخص المتجدد مثبّتًا إلى الرسالة التي تنتهي تغطيته عندها بالضبط، ولم يعد بوسع نافذة تحمل نسخة قديمة أن تحفظها فوق دور اكتمل. وتلتقط المحادثات القائمة هوياتها عند أول إقلاع، دون أن تشعر.
- نهاية «بلا عنوان» الدائمة. كان نداء تسمية المحادثة يؤول بصمت إلى نداء استدلال كامل بجهد عالٍ — يُعمِل الفكر في خمس كلمات — فيتجاوز مهلته ولا يكتب شيئاً، تاركاً نحو واحدة من كل خمس محادثات تيليجرام (وواحدة من كل عشر على واتساب) عالقة «بلا عنوان» إلى الأبد. صارت التسمية تجري والتفكير مطفأ وتحطّ في نحو ثانية؛ والعنوان الذي يتأخر رغم ذلك يتنازل إلى شريحة مقروءة من رسالتك أنت بدل لا شيء؛ والصورة المرسَلة بلا تعليق تُسمّى من اسم ملفها؛ وما عَلِق سلفاً يُشفى عند الإقلاع، حتمياً، دون نداء نموذج واحد.
- عربية تُقرأ عربية. كل حجم يعرضه التطبيق — تنزيلات النماذج، واستخدام القرص، والمساحة الحرة، وسرعات النقل — كان إنجليزياً مثبّتاً في الشيفرة، «1.5 GB» جالسة في وسط جملة عربية. صار ذلك كله يُقرأ بالعربية أصالةً، وأُصلح عطب النص ثنائي الاتجاه الذي كان يمزّق الأرقام عن وحداتها، وفقدت مواصفات العتاد دقّتها الزائفة — «16 جيجا بايت»، ولا «0 جيجا بايت» عديمة المعنى لنموذج صغير أبداً.
- أرقام في الإعدادات تقول الحقيقة. كان مقياس المعالج في لوحة «البيانات» يقيس مسحه للقرص بنفسه — تطبيق خامل يبلّغ عن 93% والحقيقة 0.3% — ويعرض حصة نواة واحدة، فتُقرأ لحظة انشغال على جهاز باثنتي عشرة نواة على أنها 141%. صار يأخذ العيّنة بعد انتهاء المسح ويعرض استهلاك المعالج كله، مع أرضية «أقل من 0.1%» كي يُقرأ الحِمل الصغير الحقيقي على حقيقته. و«الاستخدام» يُرسَم لحظة فتحه، إذ تُهيَّأ كل نطاقاته عند الإقلاع — اختفى هيكل التحميل من اللوحة التي تتفقدها أكثر من غيرها.
- صقل صغير. صارت شاشة إعادة بناء فهرس الذاكرة — مرة واحدة بعد التحديث — تملك الشاشة كما ينبغي: تُرسَم مرة واحدة في مستوى التطبيق، ويتنحّى شريط المحادثات بدل أن يعوم فوقها، وصار تحذير «قاعدة البيانات تكبر» ينطلق عند 1 جيجا بايت بدل 50 ميجا بايت؛ ويُعرَض
/resumeو/deleteرقاقتَي أوامر تحفظان اتجاههما داخل النص العربي في الإعدادات؛ ولحق وصف مفتاح النتائج المفصّلة في القنوات الثلاث بما تسلّمه التغذية النظيفة فعلًا.
v1.0.206
ميزات جديدة
- محادثات متزامنة. لم يعد وولفيش نافذة محادثة واحدة تُفرَّغ حين تفتح غيرها. صارت كل محادثة تعمل في آنٍ واحد — لكلٍّ تغذيتها، وحقل إدخالها، وعدّاد سياقها، ودورها الجاري، وكلّها محمَّلة معًا. ابدأ محادثة ثانية بينما الأولى لا تزال تتدفّق، ثم عُد إليها، وتجد الاثنتين تمامًا حيث تركتهما؛ فالتنقّل بين المحادثات لا يوقف دورًا جاريًا ولا يعيد ضبطه ولا يُسقطه. ولا تتقدّم محادثةٌ إلا حين يتقدّم دورها هي.
- شريط المحادثات. شريطٌ جديد على الحافة اليمنى يسرد كل محادثاتك عبر كل قناة، الأحدث أولًا، تحمل كلٌّ شريحة حالة مرقّمة تنبض بينما الدور جارٍ وتستقرّ على لون حين ينتهي — أخضر للمنتهي، أحمر للفاشل، كهرماني للمتوقّف — تحفظه بقية الجلسة. مطويًا هو شرائح فحسب؛ ومفتوحًا تُظهر كلٌّ عنوانها. انقر أيًّا لتقفز إليها مباشرة، حتى محادثةً لا تزال في منتصف دورها ولم تُكتب على القرص بعد (يعيد الشريط فتحها من جلستها الحيّة بدل الاصطدام بملفٍّ غائب). وصفحة السجل تحمل شرائح الحالة الحيّة نفسها وتتشارك مع الشريط مسارًا واحدًا للفتح-أو-التنشيط.
- المحادثات تسمّي نفسها. لحظة بدء المحادثة، يقرأ وولفيش رسالتك الأولى ويكتب لها عنوانًا قصيرًا محدّدًا — فيصبح الشريط وصفحة السجل كفهرسٍ للمحتوى بدل جدارٍ من صفوف «محادثة جديدة» المتطابقة. تجري التسمية بهدوء في الخلفية على نموذجك المختار؛ وتُسجَّل تكلفتها على دفتر استهلاكك لكنها معزولة عن عدّاد سياق المحادثة نفسها، فتسمية محادثة لا تقضم من نافذتها. وإن تعذّر بلوغ النموذج يعود العنوان إلى مقتطفٍ مقتضب من سطرك الأول، ويحاول دورٌ لاحق من جديد.
تحديثات
- القنوات لم تعد تنتظر في الطابور. كانت الأدوار تُصفّ عالميًّا: رسالة Telegram تصل في منتصف دورٍ داخل التطبيق كان عليها انتظار انتهائه. صار ذلك الطابور لكل محادثة على حدة — المحادثة الواحدة لا تزال نصًّا واحدًا مرتّبًا، لكنّ المحادثات المختلفة تعمل بالتوازي، بأيّ مزيجٍ من داخل التطبيق وWhatsApp وTelegram. وكل دورٍ يبلّغ عن حالته الحيّة للتطبيق، وهذا ما يجعل شرائح الشريط تنبض لتشغيلات القنوات لا لتلك التي على شاشتك فقط. انظر نظرة عامة على القنوات.
- شريطان مضبوطان. أُعيد بناء الشريطين ليتطابقا: عرضان متناظران، وكلاهما مطويٌّ افتراضيًا، ويفتحان ويغلقان قفزًا بدل تحريك عرضٍ كان يجعل الأيقونات تقفز في منتصف الانزلاق. وينتهي كلٌّ عند قمّة شريط الإجراءات.
- لمسات صغيرة. تراكبات الإجراءات ونبض القلب الجارية باتت تحمل شارة فردي / سير عمل فترى بلمحة أيّ وضعٍ تنفّذه تشغيلة تلقائية (والمهمة بلا علامة تعرض الوضع العام الذي ترثه)؛ وفتح محادثة يُسخّن بطاقات ملفّاتها قبل رسمها فتصل المحادثة المستأنَفة مكتملةً بدل أن تُطلّ مرفقاتها واحدًا تلو الآخر؛ ولحقت الواجهة العربية بإشعار «مهمة تلقائية — للقراءة فقط» على تشغيلات نبض القلب.
v1.0.205
ميزات جديدة
- وضع سير العمل. اختفى وضع المنسّق، مُعاد بناؤه وضعَ سير عمل: الوكيل الذي تحادثه يصبح قائد تشغيلةٍ يصمّمها بنفسه — يعلن مراحلها (
workflow_plan)، ويُطلق وكلاء أحياء متوازين (agent_spawn)، ويستلم كل تقرير لحظة وصوله (agents_await)، ويرسل تعليمات المتابعة (agent_send)، ويلغي المسارات الميتة (agent_cancel). تقاعدت خانة «نموذج العامل» الثابتة: القائد يختار نموذج كل وكيل على حدة من كل مزوّد وصلته — يرى كتالوجًا بنماذجك مع نوافذ سياقها ودعم التفكير والرؤية، فيوجّه النماذج الطليعية إلى الشرائح الصعبة والرخيصة إلى المسح الميكانيكي. الوكلاء بطلقة واحدة (القائد يملك كل قرار إعادة محاولة)، لا يستطيعون الوصول إليك ولا إطلاق وكلاء خاصين بهم، وسياق كل واحد يُحسب على نافذة نموذجه هو. - بطاقة سير العمل. كل تشغيلة سير عمل تحصل على بطاقة واحدة قابلة للطي في المحادثة: خطة المراحل كشرائح تنتقل من الانتظار إلى التنفيذ إلى الإنجاز، وجدول حيّ بصفٍّ لكل وكيل (الاسم، المهمة، النموذج، المرحلة، الحالة، الوقت المنقضي، الرموز، استدعاءات الأدوات، التكلفة)، ومجاميع التشغيلة ومنها التكلفة الحقيقية للدور بأكمله. كل رقم من قياسات المنصة — لا مما يدّعيه النموذج أبدًا — فالبطاقة الحيّة والبطاقة المعاد فتحها هما البطاقة نفسها. وتصدير المحادثة إلى PDF يطبع التشغيلة المنتهية جدولًا ثابتًا.
- منتقيا النموذج والوضع في حقل الإدخال. اختفت صفحة إعدادات الدماغ ذات السحب والإفلات؛ وانتقل اختيار ما يدير محادثتك إلى حيث تحدث المحادثة. بجوار حقل الإدخال: مبدّل محلي/سحابي يفتح على كتالوج قابل للبحث بكل نماذج المزوّدين الموصولين (شارات القدرات، أحجام السياق، نقرة واحدة للتبديل)، وحبّة الوضع (فردي / سير عمل)، وزرّ تفكير معاد تصميمه — مرّر فوقه لبطاقة بكل مستويات الجهد التي يدعمها النموذج الحالي بدل التنقّل الأعمى. مفاتيح API تبقى في الإعدادات ← النماذج.
- كل مهمة تختار وضعها. مهام نبض القلب والإجراءات يحمل كلٌّ منها مفتاح فردي/سير عمل خاصًّا به — تحت الغطاء سطر أول اختياري
mode: workflowفي متن المهمة، يُحذف قبل وصول التعليمات إلى الوكيل.automation_create/automation_edit/procedure_create/procedure_editتقبلmodeاختياريًا، فيضبطه وولفيش بالمحادثة. والمهام بلا علامة تتبع الوضع العام.
تحديثات
- سير العمل على القنوات. تقاعد السرد القديم لكل عامل. Telegram وWhatsApp يستقبلان الآن تقدّمًا حتميًّا من تشغيلات سير العمل — خطة المراحل عند البدء، وسطر لكل مرحلة تكتمل، وملخّص ختامي بالمجاميع — ويضيف الوضع المطوّل سطر وصول لكل وكيل (الاسم، النموذج، المدة، استدعاءات الأدوات). وإيقاف الوضع المطوّل يبقي التغذية نظيفة: ردّ القائد، لا شيء غيره.
- الترحيل عند أول تشغيل. إن كنت تعمل بوضع المنسّق فستستيقظ على وضع سير العمل (نيّة تعدد الوكلاء محفوظة، لا تخفيض صامتًا إلى المفرد)؛ وتُحذف خانة نموذج العامل ومفتاحا الجهد الجشع والاستقلالية وقدرة المنسّق القديمة، وتُكنس مخلّفاتها من مساحات العمل المنشورة.
config.llm.modeيحلّ محلّorchestratorMode/workerModel/greedy/autonomousفي config.json. - اختبارات GitHub وNotion تفشل بصوت مسموع. الاختبار الفاشل في لوحة GitHub أو Notion يترك الآن تنبيهًا أحمر دائمًا بالسبب على بطاقة الاتصال — يُمحى حين تعدّل الرمز أو ينجح اختبار، ويُترجم حيًّا حين تبدّل لغة التطبيق.
- لمسات صغيرة. مرفقات
.txtتُفتح في عارض نصوص مرقّم الأسطر بدل بطاقة ملف صمّاء؛ وشبكة المرفقات نالت بلاطات أعرض ومسافات أرحب؛ وساعات التراكب على الإجراءات ومهام نبض القلب الجارية تتبع صيغة الوقت في لغة تطبيقك؛ وأسماء النماذج تظهر مختصرة في المنتقيات؛ ورسائل الخطأ صارت أقصر وأوضح.
v1.0.204
ميزات جديدة
- احفظ أي محادثة بصيغة PDF. زر تنزيل جديد في أسفل المحادثة يُصدِّر المحادثة التي تنظر إليها إلى ملف PDF يطابق التغذية تمامًا — رسائلك، وردود وولفيش، وبطاقات الأدوات، وكتل الشيفرة، والملفات المرفقة — منسَّقة للطباعة والقراءة دون اتصال.
- عداد الاستخدام، مُعاد بناؤه. اختفى شريط «إظهار تحليلات المحادثة» الاختياري (وإعداده
showChatAnalytics). في مكانه، صارت حبة السياق بجوار حقل الإدخال حاضرة دائمًا وتُفتَح الآن: مرّر المؤشر فوقها أو ثبّتها لترى الصورة كاملة — كم استُهلك من نافذة السياق وأين يُشغَّل الضغط التلقائي بالضبط (مرسومًا كعلامة، فتصبح النسبة المرئية ونقطة التشغيل أخيرًا الرقم نفسه)، وكم من ذلك السياق جاء دافئًا من الذاكرة المؤقتة مقابل ما ابتُلع طازجًا، وسجل جارٍ لهذا الدور والدور السابق ومنذ البداية لرموز الإدخال/الإخراج واستدعاءات الواجهة واستدعاءات الأدوات والتكلفة. وفي وضع المنسّق يحصل عمّاله وملخّصاته الخلفية على مجاميعهم الفرعية.
تحديثات
- أرسل صورة إلى أي نموذج. اختفت بوابة القدرة التي كانت ترفض الصور على النماذج غير البصرية. أرفق صورة إلى أي نموذج على أي سطح — داخل التطبيق، Telegram، WhatsApp — وستمرّ؛ والنموذج الذي لا يرى البكسلات يستقبل اسم الملف وموقعه والأدوات التي تستطيع قراءته، ويخبرك بوضوح بما يمكنه وما لا يمكنه فعله بدل أن يردّ الرفع.
- العمّال يروون على Telegram وWhatsApp. في وضع المنسّق مع تفعيل الوضع المطوَّل، صار العمّال الخلفيون يُظهرون خيطهم الموسوم على القنوات — نصوص وبطاقات أدوات، مجمَّعة لكل عامل كي لا يختلط العمّال المتزامنون ببعضهم — على غرار شريط العمّال الفرعيين في التطبيق. وإيقاف الوضع المطوَّل يُبقي على جواب المنسّق النهائي وحده.
- دون اتصال، معامَلًا كحالة. صار إشعار انقطاع الاتصال تحذيرًا ثابتًا مثبَّتًا أعلى النافذة بزر إغلاق خاص به، يُستبدَل في مكانه بإشعار «عاد الاتصال» موجز عند عودتك. ووولفيش نفسه صار يعرف حين يكون دون اتصال فيتّكئ على الأدوات التي تعمل دون شبكة (الذاكرة، الملفات، الصدفة) بدل إهدار الأدوار على ما يحتاج إنترنت. وكل إشعار صار يمكن إغلاقه بنقرة.
v1.0.203
ميزات جديدة
- نظام السياق الرشيق. أكبر إعادة بناء داخلية شهدها وولفيش على الإطلاق. الطلب الجديد يكلف الآن ~9.4 ألف رمز بدلاً من ~94 ألفًا — تخفيض بمقدار 10× — لأن الموجه لا يحمل سوى الأساسيات بالإضافة إلى فهرسين مُدمجين: فهرس القدرات لكل ما هو مُثبَّت وخريطة الذاكرة لكل ما يمكن استرجاعه. اختفت تفريغات الذاكرة وتفريغات الأحداث وكتالوج الأدوات بحجم 16 ألف رمز؛ وبادئة الموجه ثابتة البايتات، فيُخدَم ~99% منها من ذاكرة المزود المؤقتة. مقاسة فعليًا: انخفضت الأتمتة التي تعمل كل ساعة من 96,442 رمز إدخال (0.019).
- استدعاء كامل، عند الطلب. كل ما فعله وولفيش أو قاله أو أنتجه أو أنفقه على الإطلاق موجود الآن في مخزن مُفهرَس واحد يبحث فيه في أجزاء من الثانية — كل محادثة بما في ذلك كل استدعاء أداة ومخرجاته، والنشاط اليومي، والمعرفة طويلة الأمد، وتشغيلات المهام، والملفات المُولَّدة، والتكاليف، وحتى رسائل WhatsApp الواردة. طقم أدوات استرجاع جديد (
memory_search/memory_get/conversation_list/conversation_read/memory_save/usage_report) يصل إلى أيٍّ منها بدقة جراحية، وعقد التشغيل يُعلّم الاسترجاع دون طلب: «أرسل لي خطة الرحلة» تبحث في الماضي قبل فعل أي شيء آخر، سواء كان ذلك أمس أو قبل شهر. وسؤال «كم كلّف اليوم؟» صار له أخيرًا جواب. - أدوات تتوسع إلى الآلاف. بدلاً من شحن أكثر من 300 تعريف أداة مع كل طلب، تبقى ~30 أداة أساسية محمَّلة ويُحمِّل الباقي — بما في ذلك كل خادم MCP — نفسه في منتصف المهمة عبر
tool_search/tool_activate، قابلاً للاستخدام في الدور نفسه. التفعيل محصور بالمحادثة (أتمتة تُحمِّل أداةً لا تمسّ أبدًا ذاكرة محادثتك المؤقتة)، ومحدود بآلية LRU غير مرئية، وقابل للضبط عبرpinnedCapabilitiesفي config.json. - ملفات تُسلَّم يدًا بيد. تسليم الملفات صار الآن قرار الوكيل بالكامل: لا شيء يُرفَق تلقائيًا، وعقد التشغيل يُلزمه باستدعاء
send_fileلنتيجة أي مهمة تُنتج ملفًا فور اكتمال العمل — تُعرَض أصليًا داخل التطبيق وتُرفَع فعليًا على Telegram وWhatsApp. لا مزيد من الطرق المسدودة على شاكلة «حُفظ في ~/some/path»، ولا مزيد من المرفقات المفاجئة التي لم يختر إرسالها قط.
تحديثات
- محادثات بلا نهاية، ملخص واحد. المحادثة التي تتجاوز حد الإعادة الحرفية تطوي الآن أدوارها المبكرة في ملخص متدحرج واحد محفوظ بدلاً من إعادة دفع تكلفة استدعاء تلخيص خفي مع كل رسالة — والأدوار المطوية تبقى على القرص، مُفهرَسة، قابلة للاسترجاع حرفيًا عبر
conversation_read. لا يمكن للمحادثات أن تتجاوز نافذة السياق أبدًا، وعرض السجل يُظهر دائمًا النص الكامل كما هو دون مساس. - نظام واحد لكل نموذج. اختفى إعدادا «النماذج المحلية عديمة الحالة» و«تقييد النماذج المحلية». النماذج المحلية تعمل بنفس السياق الرشيق ومجموعة الأدوات الكاملة والذاكرة تمامًا كالنماذج السحابية — ستقول بصدق إن مهمةً ما تفوق قدرتها، لكن لا شيء يُحجب عنها. النماذج ذات نوافذ السياق الصغيرة جدًا تحصل تلقائيًا على مجموعة أدوات تمهيدية مُقلَّصة.
- فوري في كل مكان. فهرس الذاكرة لم يعد يُعاد بناؤه من الصفر عند كل إطلاق (تدريجي، ~22ms؛ إعادة البناء الكاملة لمساحة عمل بحجم 2GB تستغرق ~1.3s ولا تعمل إلا عند الترقيات). صفحة السجل تُحمَّل من الفهرس — فورية مهما كان الحجم. وعداد السياق يعرض نافذة نموذجك الكاملة ويقيس الرموز الحقيقية التي يحاسبك عليها المزود.
- نظافة الذاكرة. مدخلات الأحداث تُوسم بمصدرها (
[heartbeat]،[worker]، القنوات)، وترقية المعرفة تزيل التكرار، والمراجعة الأسبوعية تكتب خلاصة بدلاً من لصق سبعة أيام من السجلات الخام، وتشغيلات الأتمتة تُسجَّل بشكل دائم (run-history.md)، ولقطات تصحيح الموجه تتناوب عند 50 بدلاً من النمو إلى ما لا نهاية.
إصلاحات
- سجل المهام كان فارغًا بصمت — كل سجل مهمة مُفهرَس كان بحقول NULL بسبب عدم تطابق بين المُحلِّل والصيغة؛ جميع المهام — أكثر من 340 — صارت الآن قابلة للاستعلام.
- بحث الذاكرة كان يُرتِّب بالمقلوب — التطابقات الأقوى كانت تحصل على درجات أدنى؛ أُصلح الترتيب عبر الفهرس كله.
- خوادم MCP ذات الأسماء المشتقة من اسم المضيف لم تعد تُسجَّل كقدرات مضاعفة
mcp-mcp-*، وأوصاف الأدوات الواردة من الخوادم تُعقَّم وتُحدَّد بسقف أقصى كي لا يستطيع خادم حقن بنية زائفة في الموجه. - أداة شبح (
channel_status) كان الوكيل يُؤمر باستدعائها دون أن يستطيع الوصول إليها — صارت الآن قابلة للتوجيه بشكل صحيح. - ملفات PDF لدى المزودات السحابية لم تعد تُسطَّح بلا داعٍ إلى نص خام على عدة مزودات — تصل ككتل مستندات أصلية.
v1.0.202
ميزات جديدة
- خوادم MCP. اربط أي خادم يعمل ببروتوكول سياق النماذج من صفحة الإعدادات ← بروتوكول سياق النماذج الجديدة — الصق أمرًا لخادم محلي (
uvx tafsir-mcp) أو رابطhttp(s)://لخادم بعيد، فتصبح كل أداة يعرضها متاحة لوولفيش من رسالتك التالية، في المحادثة العادية ولعمّال المنسّق على حدّ سواء. بلا خطوة اتصال، بلا إعادة تشغيل. الخوادم البعيدة التي تتطلب تسجيل دخول تحصل على تدفق OAuth عبر المتصفح بنقرة واحدة (تُخزَّن الرموز، وتُجدَّد بصمت، وتُلغى لدى المزود عند الإزالة). الخوادم المنهارة أو غير المتصلة تُعيد الاتصال بصمت في الخلفية بينما تتنحى أدواتها بهدوء حتى تعود — ولا يمكن لخادم واحد يسيء التصرف أن يؤثر أبدًا على خادم آخر أو على التطبيق. - وولفيش يدير MCP بالمحادثة. قدرة
mcpجديدة (mcp_list/mcp_add/mcp_test/mcp_enable/mcp_disable/mcp_remove/mcp_authorize) تعكس صفحة الإعدادات تمامًا — «اربط خادم tafsir MCP»، «أي الخوادم مُفعَّلة؟»، «أزل ذاك» — مع انعكاس كل تغيير مباشرةً في الواجهة. - الوعي بالشبكة. إشعار هادئ حين ينقطع اتصالك وحين يعود — التحولات الحقيقية فقط، وصمت تام عند الإطلاق العادي. وإخفاقات التشغيل في الخلفية تذكر الآن السبب بكلمات واضحة («لا يوجد اتصال بالإنترنت»، «مُقيَّد بالمعدل»، «مفتاح API غير صالح») بدلاً من أخطاء الآلة الخام.
v1.0.201
ميزات جديدة
- الإجراءات. صفحة إجراءات جديدة تحفظ الأوامر التي تريد إعادة استخدامها — اكتب الأمر مرة واحدة، اضغط تشغيل، فيعمل في محادثة خلفية جديدة تحت غطاء حي مع مؤقّت وسجل نشاط، ثم يستقر في السجل موسومًا بأيقونة التشغيل. وولفيش يديرها بالمحادثة أيضًا — «احفظ هذا إجراءً»، «شغّل موجزي الصباحي» — عبر قدرة
proceduresجديدة (procedure_list/procedure_view/procedure_create/procedure_edit/procedure_delete/procedure_run). - حسابات GitHub وNotion متعددة. لوحتا GitHub وNotion تستوعبان الآن أي عدد من الاتصالات، لكل منها تسميته الخاصة («شخصي»، «عمل») وزر اختبار لكل اتصال يعرض الحساب الذي يُحلّ إليه. كل أداة تقبل معامل
connectionاختياريًا — يُختار تلقائيًا حين يكون هناك اتصال واحد فقط — وأداتاgithub_connections/notion_connectionsالجديدتان تسردان ما هو مُهيّأ. والإعدادات القائمة ذات الرمز الواحد تُرحَّل من تلقاء نفسها. - WhatsApp يقبل أي ملف. أرسل ملف PDF أو مستندًا أو صورة أو فيديو أو ملفًا صوتيًا أو ملصقًا عبر WhatsApp فيُنزّله وولفيش ويقرأه كمرفق داخل التطبيق — سابقًا لم تكن تمر سوى الرسائل الصوتية. الملفات بلا اسم أو امتداد يُستدل على نوعها من الوسائط نفسها؛ وTelegram حصل على نفس معالجة الملفات عديمة الاسم.
- ملفات المحادثة بلمحة. زر ملفات جديد في تذييل المحادثة يفتح كل ما تحويه المحادثة — مرفوعاتك وكل ملف أنتجه وولفيش — في شبكة بعرض كامل. والخط الزمني بجانبه يمتد الآن على المحادثة كلها، مع فاصل قابل للطي لكل أمر.
- مرفقات HTML. يمكن الآن إرفاق ملفات
.html، وتُعرض في عارض الشيفرة مع تبديل بنقرة واحدة بين معاينة الصفحة المعزولة والمصدر المُبرز.
تحديثات
- رسائل WhatsApp بتنسيق WhatsApp نفسه. الردود لم تعد تصل كـ Markdown خام — الوكيل يكتب بأسلوب WhatsApp الأصلي، وكل ما يُرسل يمر عبر محوِّل يترجم بقايا Markdown (العناوين، الروابط، الجداول، قوائم المهام) إلى نص WhatsApp نظيف.
- المحادثة تبقى حية عبر التنقل. زيارة الإعدادات أو الصفحات الأخرى لم تعد تعيد تحميل عداد السياق أو الخط الزمني؛ والوسائط قيد التشغيل تتوقف مؤقتًا عند الخروج.
- محادثات طويلة أسرع. صفوف التغذية لا يُعاد رسمها إلا عند تغيّر رسالتها، وإبراز الشيفرة لم يعد يُجري كشف اللغة على كل كتلة.
إصلاحات
- التشغيلات الخلفية معزولة. الإجراءات والأتمتات لم يعد بإمكانها تحريف عداد سياق المحادثة الحية، أو اختطاف زر الإيقاف فيها، أو الكتابة فوق محادثة أُنشئت في الثانية نفسها.
- لا تسليم مزدوج للملفات. الملف الذي سلّمته أداة بالفعل لا يُعاد إرساله في الدور نفسه — والوكيل يسلّمك الآن بموثوقية كل ملف ينتجه.
- لا نهايات صامتة. لم يعد بإمكان الدور أن ينتهي في منتصف مهمة بلا رسالة وبلا استدعاءات أدوات.
v1.0.196
ميزات جديدة
- وضع التنسيق. الوكيل الواحد الذي تتحدث إليه يمكنه الآن أن يصبح منسّقًا يُطلق جلسات عمّال متوازية حية على نموذج ثانٍ، يوجّهها ويقودها، ويراجع مخرجاتها مقابل الهدف، ويطوي كل شيء في رد واحد. إنه اختياري ويقرر في كل دور ما إذا كان سيفوّض — فلا يلجأ إلى العمّال إلا حين تنقسم المهمة فعلاً إلى أجزاء مستقلة. الوضع المفرد يبقى الافتراضي للعمل السريع المتسلسل.
- صفحة إعدادات «الأوضاع». انتقل إعداد النماذج إلى صفحة الأوضاع الخاصة به — أول ما تصل إليه في الإعدادات. اختر نموذجًا واحدًا (دماغك) بالسحب والإفلات أو بنقرة؛ وفعّل وضع التنسيق لإضافة نموذج عامل ثانٍ في خانة بجانبه.
- شفافية الوكلاء الفرعيين. مع تفعيل نتائج المهام المفصّلة، يُعرض نص كل عامل واستدعاءات أدواته داخل المحادثة موسومة بتسمية العامل، فترى بالضبط كيف قسّم المنسّق العمل. وإيقافه — وهو الافتراضي — يعرض الرد المركّب النهائي فقط.
- مفتاحا الجشع والاستقلالية. مفتاحا سلوك على صفحة الأوضاع يضبطان مدى اجتهاد الوكيل في كل دور بغضّ النظر عن الوضع — الجهد الجشع (مثابرة أشد: إعادات محاولة أكثر، عدة مقاربات، ومواصلة حتى تُنجَز المهمة فعلاً) والاستقلالية (العمل بمبادرة عالية وسؤالك أقل ما يمكن). كلاهما معطّل افتراضيًا.
- شغّل أتمتة الآن. زر تشغيل الآن على صفحة النبض يُطلق أي مهمة مجدولة نشطة فورًا، مع غطاء حي يتتبع استدعاءات أدواتها ونتائجها واكتمالها.
- احفظ ملفًا إلى حاسوبك. احفظ نسخة من أي ملف قرأه وولفيش أو كتبه — أينما كان على جهازك — إلى موقع تختاره عبر نافذة حفظ عادية.
تحديثات
- دماغ واحد، لا تعاقب مزودات. اختفى تعاقب ترتيب الاحتياط/الأولويات القديم. أنت الآن تختار نموذج الدماغ صراحةً — النموذج الذي تختاره هو الذي يعمل، وتعرف دائمًا أيّ نموذج هو. الإعدادات القائمة تُرحَّل تلقائيًا: مزودك الأعلى يصبح الدماغ وتُنظَّف الإعدادات الميتة. عند خطأ عابر يعيد النموذج نفسه المحاولة بتراجع تدريجي؛ ولا تبديل صامت إلى مزود آخر. انظر config.json لشكل
llmالمحدَّث. - نموذج افتراضي عند الربط. ربط مزود لأول مرة يختار تلقائيًا نموذجًا افتراضيًا معقولًا، فتكون جاهزًا فورًا — ولا يتجاوز أبدًا نموذجًا اخترته بالفعل.
- كتابات مأمونة من الانهيار. الإعدادات والمحادثات وحالة القنوات تُكتب الآن عبر مسار واحد مرتّب وذرّي — ملف مؤقت، يُدفَع إلى القرص، ثم يُبدَّل إلى مكانه — فلا يمكن لانهيار أو إغلاق قسري أن يترك ملفًا نصف مكتوب وتالفًا. تحصل دائمًا على النسخة القديمة كاملة أو النسخة الجديدة كاملة.
v1.0.193
ميزات جديدة
- الأتمتات. وولفيش يدير الآن مهامه المجدولة — نبضه — بالمحادثة بالكامل. قل «كل صباح أطلعني على تقويمي»، أو «بعد يومين ذكّرني بتجديد عقد الإيجار»، أو «افحص البناء كل ساعة» فيُنشئ الأتمتة؛ واطلب منه سرد أتمتة أو تغييرها أو حذفها أو اختبارها فيفعل. المهام لمرة واحدة تنطلق مرة وتزيل نفسها، والمتكررة تستمر، والمهام لا تتداخل أبدًا — التي يحين موعدها في منتصف تشغيل جارٍ تنتظر دورها بدلاً من أن تُسقَط. وأي شيء فات أثناء إغلاق التطبيق يعمل مرة واحدة، مُجمَّعًا، عند الإطلاق التالي.
- اقرأ محادثة WhatsApp. أداة
whatsapp_readجديدة تُطلع وولفيش على آخر الرسائل في أي جهة اتصال أو مجموعة على WhatsApp، تُعاد مُرتَّبة من الأقدم أولاً. تغطي الحركة المرئية أثناء اتصال وولفيش — لا التاريخ الأقدم من قبل تشغيله — وذلك المخزن يبقى الآن بعد إعادة التشغيل بدلاً من التصفير عند كل إطلاق.
v1.0.191
ميزات جديدة
- بطاقات السؤال. حين يكون القرار قرارك أنت فعلاً، يطرحه وولفيش على شكل بطاقة اختيار من متعدد تفاعلية — سؤال، و2–5 خيارات، وخانة نص حر «شيء آخر» — وينتظر اختيارك بدلاً من التخمين. على Telegram وWhatsApp تجيب برقم الخيار.
- مهارات ذاتية الإدارة. قدرة
skillsجديدة تتيح لوولفيش سرد قدراته والبحث فيها وتفعيلها وتعطيلها وحذفها بل وتأليفها بنفسه أثناء التشغيل — فيحوّل «افعل هذا في كل مرة» إلى مهارة قابلة لإعادة الاستخدام، أو «أطفئ المتصفح» إلى مهارة معطَّلة. - حالة القنوات. أداة
channel_statusجديدة تُبلغ أي قنوات المراسلة متصلة وكيفية إعادة ربط غير المتصل منها.
تحديثات
- القنوات ليست تطبيقات. حين يُطلب منه مراسلتك على Telegram أو WhatsApp، لم يعد وولفيش يحاول إطلاق تطبيق سطح مكتب وهمي لا وجود له — يصل إلى القنوات عبر أدوات الإرسال الخاصة بها فقط، ويفشل بلطف مع خطوات إعادة الربط حين تكون إحداها معطلة.
- بطاقات مسارات قابلة للفتح. مسارات الملفات والمجلدات التي يذكرها وولفيش في رد تُعرض الآن كبطاقة بزر «افتح في مدير الملفات» بنقرة واحدة — تظهر فقط للمسارات الموجودة فعلاً على القرص.
إصلاحات
- عدّ الأصفار في
grep -c. أمرgrep -cالذي لا يجد أي تطابق يخرج برمز الخروج 1 ويطبع «0» — يُقرأ ذلك الآن على أنه العدّ الصفري الصحيح الذي هو عليه، لا أمرًا فاشلًا، فلم يعد يُطلق إعادات محاولة لا داعي لها.
v1.0.186
ميزات جديدة
- صوت محلي بالكامل. تحويل النص إلى كلام يعمل الآن على Kokoro وتحويل الكلام إلى نص على faster-whisper — كلاهما على الجهاز بالكامل، بلا سحابة، وبلا مفاتيح API، وبلا خوادم Microsoft. المذكرات الصوتية تعمل دون اتصال تمامًا بعد إعداد لمرة واحدة. الصوت الافتراضي هو
af_bella(إنجليزية، الولايات المتحدة)؛ والأصوات إنجليزية فقط (أمريكيةaf_/am_، بريطانيةbf_/bm_). - ثبّت محركات الصوت عند الطلب. الإعدادات ← تحويل النص إلى كلام وتحويل الكلام إلى نص تعرضان الآن زر تثبيت مع شريط تقدم حي. منتقيا الصوت والنموذج يبقيان معطلين حتى يجهز المحرك، وزر معاينة يشغّل صوت Kokoro المحدد الفعلي — لا بديلًا من المتصفح.
- بيئة Python مُدارة. محركات الصوت تُجهَّز تلقائيًا داخل بيئة Python معزولة يديرها التطبيق — دون الحاجة إلى Python على مستوى النظام أو أدوات مطورين على الجهاز.
- دعم مزود Z.ai (GLM). يمكنك الآن تشغيل وولفيش على Z.ai — نماذج GLM من Zhipu مع تفكير قابل للتبديل ونموذج رائد بنافذة سياق بحجم مليون رمز (GLM-5.2). بث متوافق مع OpenAI واستدعاء أدوات بأسعار الفئة الاقتصادية؛ أحضر مفتاح API الخاص بك.
- مفتاح نتائج المهام المفصّلة. لكل قناة الآن مفتاح نتائج المهام المفصّلة — معطّل افتراضيًا — يتحكم في مقدار ما تراه من عمل الوكيل خطوة بخطوة. إيقافه يُبقي التغذية نظيفة (الردود والملفات والأخطاء فقط)؛ وتفعيله يُظهر كل استدعاء أداة ونتيجة وبطاقة نشاط أثناء سير الدور.
تحديثات
- تقدّم التثبيت يبقى بعد التنقل. بدء تثبيت — أو إعداد/تحديث Google Workspace — ثم تبديل التبويبات أو إعادة تحميل النافذة لم يعد يُصفّر التقدم؛ بل يستأنف تمامًا حيث يقف العمل الحقيقي.
- مذكرة صوتية واحدة لكل رد. إرسال رسالة صوتية يعيد الآن مذكرة صوتية واحدة بالضبط عبر سطح المكتب وTelegram وWhatsApp — بلا مذكرات مكررة وبلا صدى لتسجيلك أنت. الطلبات متعددة الخطوات تُنفَّذ عاديًا أولاً، ثم تُختم برد منطوق واحد.
- المفصّل يغيّر العرض فقط. تقليب مفتاح التفصيل يعيد رسم التغذية دون تغيير ما يفعله الوكيل — كل استدعاء أداة ونتيجته ما زالا يُحفظان في السجل والذاكرة كاملين، فلا يضيع شيء حين يكون معطلاً.
v1.0.126 – v1.0.129
ميزات جديدة
- إعادة تصميم ضغط السياق. أُعيد بناء نظام الضغط ليستخدم اقتطاعًا تناسبيًا فوريًا مع استدعاء تلخيص LLM واحد، بدلاً من النهج السابق لكل رسالة على حدة الذي كان يتطلب N استدعاء API منفصلًا. الضغط الذي كان يستغرق 6 دقائق يكتمل الآن في أقل من 30 ثانية، ودفعة استمرار مُنظَّمة تضمن أن يُكمل النموذج المهام متعددة الخطوات بعد الضغط بدلاً من معاملة السياق الأقصر على أنه «انتهى».
- مهارة التخطيط. مهارة مدمجة تحقن انضباط التخطيط في كل دور — على الوكيل أن يصرّح بفهمه، ويرسم المراحل مع معايير التحقق، ويؤكد كل تعريف للاكتمال بعد التنفيذ.
- الخط الزمني للمحادثة. المحادثات تتعقب الآن خطًا زمنيًا للأحداث الرئيسية (استدعاءات الأدوات، النتائج، الضغط، تبديلات النماذج) يبقى محفوظًا عبر الجلسات.
- سجل أدوات متعدد الأدوار. محادثات القنوات (Telegram وWhatsApp) تعيد الآن بناء سجل استدعاءات الأدوات الكامل من المقاطع المخزنة، فيرى النموذج تفاعلاته السابقة مع الأدوات عبر الأدوار.
تحديثات
- إنفاذ إكمال الدفعات. تعليمة تشغيل جديدة تضمن أن يُكمل الوكيل كل عنصر في العمليات الدفعية (مثل قراءة كل رسائل البريد، لا مجرد جزء منها).
- بطاقات أخطاء مزود مُنظَّمة. تفاصيل الأخطاء تعرض الآن دائمًا اسم المزود وحالة HTTP وسبب الخطأ وعدد إعادات المحاولة والمدة — حتى حين لا تعيد واجهة API أي متن خطأ.
- تتبع إخفاقات المزود. تفاصيل الإخفاق لكل مزود تُعرض الآن حين يفشل البث في منتصف الاستجابة، لا فقط عند استنفاد جميع المزودات.
- سجلات تفاصيل نصوص الأدوات. سجل تفاصيل منفصل يلتقط مخرجات الأدوات الخام كاملة إلى جانب معاينة النص المقتطعة.
v1.0.76 – v1.0.102
ميزات جديدة
- دعم مزود DeepSeek. يمكنك الآن تشغيل وولفيش على DeepSeek، الخيار الافتراضي الموصى به للمهام الوكيلية. أحضر مفتاح API الخاص بك وابدأ المحادثة في ثوانٍ.
- Ollama صار اختياريًا. لم تعد بحاجة إلى تثبيت Ollama محلي لاستخدام وولفيش — اختر أي توليفة من المزودات السحابية أو النماذج المحلية تناسب إعدادك.
- أذونات الميكروفون والصوت. يطلب وولفيش الآن الوصول إلى الميكروفون والصوت عند أول إطلاق، ممهدًا الطريق لتدفقات العمل الصوتية.
- عناوين محادثات فورية. المحادثات الجديدة تحصل على عنوان لحظة إرسالك رسالتك الأولى، فيبقى شريطك الجانبي منظمًا دون انتظار النموذج.
تحديثات
- عرض محادثة أذكى. البطاقات وكتل الشيفرة ومخرجات الأدوات تُعرض الآن بموثوقية أكبر في المحادثات الطويلة.
- شريط جانبي وتنقل محادثة مُحسَّنان. تخطيط أنظف، وتنقل أفضل بلوحة المفاتيح، ووصول أسرع إلى المحادثات السابقة.
- تحسينات قائمة شريط النظام. قائمة شريط النظام صارت أكثر استجابة وتعكس حالة التطبيق الحالية بشكل صحيح.
- عرض رموز أفضل. مؤشرات استهلاك الرموز صارت دقيقة وأسهل قراءةً بلمحة.
- أداء Windows. جرى تحسين تنفيذ أوامر الصدفة وبدء تشغيل التطبيق لمستخدمي Windows، بما في ذلك اسم مثبّت أنظف.
إصلاحات
- إصلاح فشل جلب الويب على روابط معينة.
- إصلاح أخطاء اتصال القنوات وإخفاقات API المتقطعة.
- إصلاح انهيار في تحليل JSON كان يمكن أن يقطع تشغيلات الوكيل الطويلة.
- إصلاح الوصول إلى الميكروفون على macOS.
- إصلاح حالات حدّية في بث DeepSeek واستدعاء الأدوات لديه.
- إصلاح معالجة المستندات بحيث تُعرض الملفات المرفقة بشكل صحيح في المحادثة.
- إصلاح عدم تفعيل وضع التجاوز في بعض الجلسات.
- إصلاح مهلات الطلبات الفارغة التي كان يمكن أن تُجمّد الوكيل.