استخدام تطبيق الويب
تطبيق الويب متاح على washy-washy.ryankes.eu. يقرأ نفس ملفي المخطط والجهاز اللذين تقرأهما CLI، لكن يعرضهما كصفحة بدلاً من ملف PDF.
الإعداد المرفق مقابل الإعداد النشط
Section titled “الإعداد المرفق مقابل الإعداد النشط”تُشحن الصفحة الرئيسية (/) بمخطط وجهاز افتراضيين وهميين — نفس البيانات التجريبية التي يعرضها ملف README الخاص بـCLI. وهذا ما يراه الزائر لأول مرة، وما تعود إليه كل صفحة حين لا يكون هناك إعداد نشط آخر.
رفع إعداد يستبدل ذلك. زر “رفع إعداد” في الترويسة — الموجود في كل صفحة — وكذلك القسم الأشمل للرفع والتنزيل في /config، كلاهما يقبل ملف JSON بالشكل نفسه { machine, chart } (انظر ملفي المخطط والجهاز)، ويتحقق منه، ويخزّنه في localStorage الخاص بالمتصفح. ومن حينها، تقرأ كل صفحة هذا الإعداد بدلاً من الإعداد المرفق، إلى أن تمسحه.
التعديل في /config أو /config/machine يعمل بالطريقة نفسها: الحفظ يكتب الإعداد المعدَّل إلى التخزين نفسه. لا شيء هنا يُرسَل إلى خادم — فالإعداد لا يغادر متصفحك أبدًا، ومتصفح مختلف أو بيانات موقع تم مسحها يعيدانك إلى المثال المرفق.
تحتوي /config أيضًا على رابط تنزيل، يكتب الإعداد النشط حاليًا — سواء كان مرفقًا أو مخصّصًا — على هيئة ملف JSON بالشكل نفسه الذي كنت سترفعه. وهذه هي الرحلة الكاملة ذهابًا وإيابًا لتعديل نسخة في مكان آخر، أو لتسليم إعدادك لشخص آخر.
مبدّل المظهر
Section titled “مبدّل المظهر”تحتوي الترويسة أيضًا على مبدّل بين المظهرين الفاتح والداكن، بجانب زر “رفع إعداد” في كل صفحة. إن تُرك دون لمس، يتبع الموقع إعداد prefers-color-scheme الخاص بنظام تشغيلك أو متصفحك، تمامًا كما كان الحال قبل وجود هذه الميزة. أما النقر عليه فيضبط اختيارًا صريحًا بدلاً من ذلك، يُخزَّن في localStorage، ويتجاوز عندئذٍ إعداد نظام التشغيل ذاك في كل صفحة وفي كل زيارة قادمة — إلى أن تنقر عليه مجددًا. إنه مبدّل بحالتين، لا قائمة اختيار: فلا يوجد خيار منفصل “العودة إلى إعداد النظام”.
التنقّل بلوحة المفاتيح
Section titled “التنقّل بلوحة المفاتيح”يستجيب الموقع أيضًا لعدد من اختصارات لوحة المفاتيح على طراز vim، مُفعَّلة مرة واحدة في الترويسة بحيث تعمل في كل صفحة — بما فيها هذه المستندات نفسها:
jوkيُمرّران الصفحة إلى الأسفل وإلى الأعلى.gg(اضغطgمرتين) للقفز إلى الأعلى.G(shift-g) للقفز إلى الأسفل./يُركّز على حقل البحث الخاص بالصفحة — بحث الكومة في الصفحة الرئيسية، مثلاً — دون كتابة شرطة مائلة داخله.?(shift-?) يفتح طبقة مساعدة تسرد كل هذه الاختصارات؛ ويغلقهاEscأو نقرة خارجها.
تُفتح الطبقة نفسها أيضًا من زر ? في الترويسة، لمن يستخدم الفأرة أو قارئ شاشة بدلاً من لوحة المفاتيح. ولا يعمل أي من هذه الاختصارات أثناء الكتابة في حقل نصي، أو منطقة نص، أو قائمة اختيار، أو أي عنصر آخر قابل للتحرير — فالكتابة العادية تفوز دائمًا.
عوامل التصفية
Section titled “عوامل التصفية”تُصفّي الصفحة الرئيسية حسب الفئة التي تريدها (المخطط كاملاً، الغسيل فقط، الكي فقط) وحسب بحث نصي حر عن الكومة، إضافة إلى قسم “متقدّم” قابل للطي — مغلق افتراضيًا — للتصفية حسب برنامج أو درجة حرارة أو عصر محدد بدقة، وبحث عن المنظّف. تعمل جميعها على تضييق القائمة نفسها؛ ويجب أن تطابق الكومة كل عامل تصفية نشط لكي تظهر.
لا تعرض قوائم اختيار البرنامج ودرجة الحرارة والعصر إلا القيم التي ستُبقي كومة واحدة على الأقل ظاهرة، بالنظر إلى بحث الكومة وأي شيء اخترته مسبقًا في “متقدّم” — بحيث لا يمكنك اختيار توليفة تُوصلك إلى مخطط فارغ. تتحدّث هذه القوائم فوريًا كلما غيّرت عوامل تصفية أخرى، وإن لم يتبقَّ لحقل ما شيء يمكن أن يطابق، فإنه يُعطَّل تلقائيًا بدلاً من عرض خيارات فارغة.
تبقى عوامل التصفية محفوظة في localStorage بين الزيارات، بنفس طريقة الإعداد. كما يمكن مشاركة العرض المُصفَّى: يحمل شريط العنوان cut وpile وprogram وtemperature وspin وdetergent كمعاملات استعلام، وأي رابط يحمل أيًا منها يتغلّب تمامًا على ما كان محفوظًا من زيارة سابقة — انظر قسم “المشاركة” أدناه لمعرفة الزر الذي يُرسل هذا الرابط.
المشاركة
Section titled “المشاركة”بجانب أزرار تنزيل PDF يوجد زر مشاركة هذا العرض، الذي يرسل عنوان URL الحالي للصفحة كما هو — بعوامل التصفية كلها، لأن شريط العنوان يحملها بالفعل كمعاملات استعلام (انظر قسم عوامل التصفية أعلاه)، فلا يوجد شيء إضافي يلزم تجميعه.
إذا كان لديك جهاز أو مخطط مخصّص نشط (انظر الإعداد المرفق مقابل الإعداد النشط)، يحمل الرابط أيضًا هذا الإعداد كاملاً، مُلحقًا كجزء #config= مضغوط. فمن يفتح الرابط يحصل على جهازك ومخططك بالضبط، لا على عوامل تصفيتك فقط — حتى في متصفح لم يلمس localStorage الخاص بك من قبل. ولا شيء هنا يمرّ عبر خادم أيضًا: فالجزء لا يُرسَل عبر الشبكة أبدًا، لذا يظل الرابط نفسه هو النقل الكامل، تمامًا مثل ملف إعداد مرفوع. وبمجرد أن تقرأ الصفحة الجزء وتحفظه، تمسحه من شريط العنوان — وإعادة التحميل أو المشاركة مرة أخرى من هناك تعطيك رابط الموقع القصير المعتاد، لا الرابط أحادي الاستخدام. أما الرابط الذي تعرّض للتلف أو التعديل اليدوي فيُظهر خطأ محدَّدًا بالصف والعمود، تمامًا كما يفعل رفع إعداد غير صالح، وتعود الصفحة إلى ما كان نشطًا من قبل بدلاً من التعطّل. وحين لا يكون هناك شيء مخصّص نشط، يبقى الرابط دون تغيير عمّا كان عليه سابقًا — عوامل التصفية فقط.
يحاول الرابط أولاً استخدام قائمة المشاركة الأصلية في المتصفح (navigator.share — الرسائل، واتساب، AirDrop، أو أي وسيلة يوفرها نظام التشغيل)، ثم يعود إلى نسخ الرابط إلى الحافظة — ويعرض “تم النسخ!” بنفس الطريقة التي يعرضها زر نسخ الرابط الخاص بالبطاقة — فقط حين لا تتوفّر تلك الواجهة البرمجية، أو حين تتوفّر لكنها تفشل فعليًا. أما إلغاء قائمة المشاركة فليس أيًا من الحالتين: إنه مجرد رفض لتلك الوسيلة الواحدة، فلا يحدث شيء آخر ولا يُنسخ شيء من دون علمك.
تصدير PDF
Section titled “تصدير PDF”تحتوي الصفحة الرئيسية على زرَّي تنزيل، ينحصر كلاهما فيما هو مُصفّى حاليًا على الصفحة، ويُعرَضان من جهة المتصفح باستخدام نفس @washy-washy/pdf التي يستخدمها أمر bun run generate في CLI. لا يُنشئ أي منهما شيئًا إلى أن تنقر عليه — فتصفية الصفحة لا تُطلق أي إنشاء في الخلفية أبدًا.
- تنزيل لصيغة الهاتف يكتب نفس الصفحة الضيقة أحادية التمرير التي تنتجها CLI — مخصَّصة للقراءة من هاتفك بجانب الغسالة.
- تنزيل للطباعة يكتب بدلاً من ذلك ورقة بحجم A4: جدول مرجعي إضافة إلى بطاقة تفاصيل واحدة لكل كومة، مخصَّصة للطباعة والتعليق على الحائط.
تحتوي البطاقة الواحدة أيضًا على زر تنزيل خاص بها، لكومة واحدة في كل مرة. وهو بصيغة الهاتف فقط — إذ يرسم تخطيط الطباعة دائمًا الجدول المرجعي كاملاً إضافة إلى بطاقة كل كومة، فلا توجد طريقة لحصره في كومة واحدة فقط كما تفعل صيغة الهاتف.
نسخ الرابط، بجانب زر تنزيل البطاقة، يضع رابط ذلك العرض المُصفَّى في حافظتك — وهو نفس أسلوب النسخ الاحتياطي إلى الحافظة الذي يستخدمه زر المشاركة على مستوى الصفحة أعلاه، لكن مقتصرًا على بطاقة واحدة.