هل "تم" مشروع Fugu؟

كان أحد أهداف فريق Project Fugu هو إتاحة إمكانية تنفيذ المطوّرين لأي إجراء على الويب يمكن للتطبيقات المخصّصة للمنصة تنفيذه، لذلك كان الفريق مشغولاً بإضافة الميزات المفقودة التي يحتاجها مطوّرو الويب لسدّ الفجوة بين التطبيقات. إذا لم تصدقني، ما عليك سوى الاطّلاع على قسم "تم الشحن" في خدمة تتبُّع Fugu API. في ما يلي واجهات برمجة التطبيقات الـ 55 التي تم إرسالها، بترتيب من الأقل استخدامًا إلى الأكثر استخدامًا مؤخرًا:

اسم واجهة برمجة التطبيقات تم الشحن في
Web Bluetooth APIChrome 56
WebUSB API‏Chrome 61
Web Share TargetChrome 71
المستوى 2 من Web Share APIChrome 75
Async Clipboard: قراءة الصور وكتابتها‏Chrome 76
المستوى 2 لهدف مشاركة الويبالإصدار 76 من Chrome
إدخال تلميح المفتاح‏Chrome 77
توسيع مساحة التخزين المتوفّرة‫Chrome 78
Get Installed Related Apps API‫Chrome 80
المزامنة الدورية في الخلفية‫Chrome 80
desktop-pwas: إتاحة وضع العرض "minimal-ui"‫Chrome 80
برامج ترميز الضغط‫Chrome 80
Contacts API‫Chrome 80
Badging APIالإصدار 81 من Chrome
السماح باستخدام Badging API من مشغّل خدمة من خلال Pushالإصدار 81 من Chrome
Barcode Detection APIChrome 83
Content Indexing APIالإصدار 84 من Chrome
WebOTPالإصدار 84 من Chrome
Screen Wake Lock APIالإصدار 84 من Chrome
Streams API: أحداث البث القابلة للنقل‏Chrome 85
اختصارات التطبيقات‏Chrome 85
الوصول إلى نظام الملفاتالإصدار 86 من Chrome
إتاحة text/html لواجهة برمجة التطبيقات Async Clipboard API‏Chrome 86
إتاحة العرض الشامل/الإمالة للكاميراالإصدار 87 من Chrome
تنفيذ FUGU لتسجيل إخراج الصوت من النظام والتطبيقات على سماعات الرأس ومكبّرات الصوت الإصدار 88 من Chrome
PointerLock unadjustedMovementالإصدار 88 من Chrome
إنشاء أداة اختيار صور/فيديوهات مشابهة لأداة اختيار الصور على Androidالإصدار 88 من Chrome
دمج Web Share (navigator.share) مع نظام التشغيل Windows 10الإصدار 88 من Chrome
Web NFCالإصدار 89 من Chrome
WebHID (جهاز واجهة المستخدم)الإصدار 89 من Chrome
Web Serial APIالإصدار 89 من Chrome
مشاركة الويب على الكمبيوتر المكتبيالإصدار 89 من Chrome
Handwriting Recognition API‏Chrome 90
الإعداد المُدار لتطبيقات الويبالإصدار 91 من Chrome
تشغيل تطبيق الويب التقدّمي (PWA) على ميزة "تسجيل الدخول إلى نظام التشغيل"الإصدار 91 من Chrome
WebCodecsالإصدار 93 من Chrome
رصد الخمولالإصدار 94 من Chrome
EyeDropper API‏Chrome 95
قائمة اختصارات التطبيقات لتطبيقات الويب التقدّمية على نظامَي التشغيل macOS وLinuxالإصدار 96 من Chrome
تسجيل معالج بروتوكول عنوان URL لتطبيقات الويب التقدّمية (PWA) الإصدار 96 من Chrome
WebTransport‏Chrome 97
الحافظة: يؤدي لصق صور عالية الدقة إلى فقدان البيانات الوصفية لـ pHYs.Chrome 98
يجب أن يكون بإمكان المستخدم إلغاء تثبيت تطبيق الويب التقدّمي بالطريقة نفسها التي يمكنه بها إلغاء تثبيت "تطبيق حقيقي".‏Chrome 99
Web NFC: NDEFReader makeReadOnly()‎الإصدار 100 من Chrome
مواضع النوافذ في الشاشات المتعددةالإصدار 100 من Chrome
HIDDevice forget()‎الإصدار 100 من Chrome
USBDevice forget()‎أساسيات Chrome
سلوك Web USB sameObjectأساسيات Chrome
تداخل عناصر التحكّم في النوافذ لتطبيقات الويب المثبّتة على الكمبيوتر المكتبيالإصدار 102 من Chrome
معالجة الملفاتالإصدار 102 من Chrome
لم تعُد واجهة برمجة التطبيقات chrome.management API قادرة على التفاعل مع تطبيقات الويب التقدّميةالإصدار 102 من Chrome
SerialPort forget()‎الإصدار 103 من Chrome
إذن بالوصول إلى الخطوط المحليةالإصدار 103 من Chrome
طلب Fugu: اختصارات التطبيقات الديناميكية (الإصدار 2 من الاختصارات)الإصدار 104 من Chrome
التنسيقات المخصّصة للويب لواجهة Async Clipboard APIالإصدار 104 من Chrome
جميع واجهات برمجة تطبيقات Fugu التي تم شحنها حتى الآن

هذه قائمة طويلة، وهناك المزيد من المهام التي نسعى إلى إنجازها. لا تزال هناك بعض واجهات برمجة التطبيقات والميزات التي يخضع استخدامها حاليًا للتجربة من قِبل المطوّرين (أي أنّها قيد التنفيذ، ولكنها غير متاحة إلا من خلال ميزة قيد الاختبار)، وبعض الميزات التي بدأنا في العمل عليها، والعديد من الميزات قيد المراجعة. كما يمكنك ملاحظة، لم يحن الوقت بعد للاسترخاء والقول بأنّنا انتهينا.

طرق الملفات المتزامنة لنظام الملفات الخاص الأصلي

على العكس تمامًا، بدلاً من الإعلان عن اكتمال جهودنا، نحن في الواقع في مرحلة البدء فقط. على سبيل المثال، راجِع الرسم البياني أدناه الذي يوضّح الزيادة النسبية الهائلة في معدّل الاستخدام لطريقة navigator.storage.getDirectory() ، والتي تُستخدَم كنقطة دخول إلى نظام الملفات الخاص الأصلي (OPFS). تُستخدَم هذه الطريقة، مثلاً، لتلبية احتياجات مساحة التخزين العالية الأداء في Photoshop، والتي يهتم بها المنتدى المعنيّ بمساحة التخزين منذ بدء إيقاف Web SQL نهائيًا وحتى قبل ذلك.

رسم بياني يعرض الارتفاع الكبير في الاستخدام النسبي لطريقة navigator.storage.getDirectory

والآن بعد أن بدأ المزيد من المستخدمين في استخدام ميزة "الإعلانات على شبكة البحث"، ظهرت متطلبات إضافية. على سبيل المثال، الحاجة إلى مجموعة متزامنة بالكامل من طرق الملفات في سياق عامل التشغيل (اطّلِع على whatwg/fs#7 للتعرّف على الخلفية). على الرغم من أنّ واجهات برمجة تطبيقات الويب الجديدة غير متزامنة بشكل عام، فإنّ توفُّر طُرق متزامنة سيجعل العمل مع OPFS أسهل بكثير في سياق Wasm، وبما أنّ ذلك يحدث في أحد عمال التشغيل، لا يمكن حظر سلسلة التعليمات الرئيسية.

تحسينات على الخصوصية في واجهات برمجة التطبيقات الخاصة بالأجهزة

ومن الأمثلة الأخرى واجهات برمجة التطبيقات للأجهزة التي تتيح لك الاتصال بأجهزة HID والتسلسلي وUSB و البلوتوث وNFC. على الرغم من أنّ بعض هذه واجهات برمجة التطبيقات متوفّرة منذ فترة، لم يكن بالإمكان حتى وقت قريب حذف بيانات جهاز سبق أن تم ربطه. والآن، بفضل طرق forget()، أصبح بإمكانك استخدام بعض واجهات برمجة التطبيقات. على سبيل المثال، إليك كيفية حذف جهاز تسلسلي سبق أن تم ربطه، ما يُحسِّن من خصوصية واجهة برمجة التطبيقات.

// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();

تحسينات على واجهة برمجة التطبيقات Multi-Screen Window Placement API

ومن الأمثلة الأخيرة على ذلك Multi-Screen Window Placement API، حيث تم استبدال تصنيفات الشاشات العامة السابقة، مثل "Internal Display 1"، بتسميات أكثر وضوحًا، مثل "Built-in Retina Display"، استنادًا إلى ملاحظات المطوّرين، لكي يتمكّن المستخدمون من ربط هذه التصنيفات بسهولة أكبر بشاشات الإعداد المتعدّد للشاشات.

الاستنتاجات

كما يمكنك أن ترى من خلال هذه الأمثلة الثلاثة فقط، لا يزال مشروع Fugu بعيدًا عن الاكتمال. مواصلة استخدام واجهات برمجة التطبيقات أو البدء باستخدامها وإرسال الملاحظات بما أنّ جميع مواصفات Fugu يتم تطويرها بشكل علني على GitHub، يمكنك الإبلاغ عن مشكلة في المواصفات على مستودع GitHub المقابل أو إضافة ملاحظاتك إلى مشكلة حالية. إذا عثرت على خطأ في عملية تنفيذ Chrome أو اكتشفت أنّ عملية التنفيذ تختلف عن المواصفات، يُرجى الإبلاغ عن الخطأ على new.crbug.com. احرص على تضمين أكبر عدد ممكن من التفاصيل وتقديم تعليمات بسيطة لإعادة إنتاج الخطأ.

وإذا كنت قلقًا بشأن توافق المتصفّح، توفّر العديد من واجهات برمجة تطبيقات Fugu تحسينات رائعة ومبرمَجة بشكل تدريجي. يمكنك الاطّلاع على مقالتي SVGcode: تطبيق متوافق مع الأجهزة الجوّالة للويب لتحويل الصور المخصّصة للطباعة إلى رسومات SVG موجّهة للحصول على الإلهام. ولن نعتبر أنّنا أكملنا مهمتنا إلا بعد أن تصبح واجهات برمجة التطبيقات هذه متوافقة مع بعضها، وسنواصل السعي إلى المزيد من عمليات القياس والتوحيد والاختبار والاعتماد من قِبل المتصفّحات الأخرى.