האם פרויקט פוגו "done"?

אחת מהמטרות של צוות Project Fugu היא לאפשר למפתחים לבצע באינטרנט כל פעולה שאפשר לבצע באפליקציות ספציפיות לפלטפורמה. לכן, הצוות עבד קשה כדי להוסיף תכונות חסרות שיעזרו למפתחי אינטרנט למלא את הפער הזה בין אפליקציות לאתרים. אם אתם לא מאמינים לי, פשוט עיינו בקטע 'נשלח' במעקב אחר Fugu API. אלה 55 ממשקי ה-API ששולחים, לפי הסדר מהממשק הישן ביותר לממשק החדש ביותר:

שם ה-API נשלחה ב-
Web Bluetooth APIChrome 56
WebUSB APIChrome 61
יעד 'שיתוף באינטרנט'Chrome 71
Web Share API ברמה 2Chrome 75
Async Clipboard: קריאה וכתיבה של תמונותChrome 76
יעד שיתוף באתר ברמה 2Chrome 76
הזנת רמז למפתחChrome 77
הרחבת מכסת האחסוןChrome 78
Get Installed Related Apps APIChrome 80
סנכרון תקופתי ברקעChrome 80
desktop-pwas: תמיכה במצב התצוגה 'minimal-ui'Chrome 80
רכיבי Codec לדחיסהChrome 80
Contacts APIChrome 80
Badging APIChrome 81
איך מאפשרים שימוש ב-Badging API מ-service worker דרך PushChrome 81
Barcode Detection APIChrome 83
Content Indexing APIChrome 84
WebOTPChrome 84
Screen Wake Lock APIChrome 84
Streams API: העברת שידוריםChrome 85
קיצורי דרך לאפליקציותChrome 85
גישה למערכת הקבציםChrome 86
תמיכה ב-text/html ב-Async Clipboard APIChrome 86
תמיכה בהזזה או בהטיה של המצלמהChrome 87
FUGU הטמעת הקלטה של פלט אודיו של מערכת ואפליקציה באוזניות וברמקולים Chrome 88
PointerLock unadjustedMovementChrome 88
יצירת כלי לבחירת תמונות/סרטונים שדומה לכלי לבחירת תמונות ב-AndroidChrome 88
שילוב של Web Share‏ (navigator.share) עם Windows 10Chrome 88
Web NFCChrome 89
WebHID (מכשיר לממשק אנושי)Chrome 89
Web Serial APIChrome 89
שיתוף באינטרנט במחשבChrome 89
Handwriting Recognition APIChrome 90
תצורה מנוהלת לאפליקציות אינטרנטChrome 91
הפעלת אפליקציות PWA ב-OS LoginChrome 91
WebCodecsChrome 93
זיהוי מצב חוסר פעילותChrome 94
EyeDropper APIChrome 95
תפריט קיצורי דרך לאפליקציות PWA ב-macOS וב-LinuxChrome 96
רישום handlers של פרוטוקול כתובת URL ל-PWA Chrome 96
WebTransportChrome 97
לוח העריכה: הדבקה של תמונות ברזולוציית Retina גורמת לאובדן של מטא-נתונים של pHYs.Chrome 98
צריך להיות אפשר להסיר אפליקציות PWA באותו אופן שבו מסירים 'אפליקציה אמיתית'Chrome 99
NFC באינטרנט: NDEFReader makeReadOnly()‎Chrome 100
מיקום מודעה בחלון במסכים מרוביםChrome 100
HIDDevice forget()‎Chrome 100
USBDevice forget()‎מדריך למתחילים ב-Chrome
התנהגות של sameObject ב-Web USBמדריך למתחילים ב-Chrome
שכבת-על של פקדי החלונות לאפליקציות אינטרנט מותקנות למחשבChrome 102
טיפול בקבציםChrome 102
לא ניתן יותר לבצע אינטראקציה עם אפליקציות PWA באמצעות chrome.management APIChrome 102
SerialPort forget()‎Chrome 103
גישה לגופנים מקומייםChrome 103
בקשה מ-Fugu: קיצורי דרך דינמיים לאפליקציות (קיצורי דרך גרסה 2)Chrome 104
פורמטים מותאמים אישית לאינטרנט עבור Async Clipboard APIChrome 104
כל ממשקי ה-API של Fugu ששולחנו עד כה.

זו רשימה ארוכה, ויש לנו עוד דברים על הפרק. עדיין יש כמה ממשקי API ותכונות שנמצאים כרגע בגרסת ניסיון למפתחים (כלומר, הם הוחלו אבל מוסתרים מאחורי דגל תכונה), חלקם התחלנו לעבוד עליהם ורבים בבדיקה. כפי שאפשר לראות, זה לא הזמן להירגע ולומר שסיימנו.

שיטות קבצים סינכרוניות למערכת הקבצים הפרטית של המקור

להפך, במקום להכריז על סיום המאמצים שלנו, אנחנו רק מתחילים. לדוגמה, בתרשים הבא מוצג עלייה חדה בשיעור השימוש היחסי בשיטה navigator.storage.getDirectory(), שמשמשת כנקודת כניסה למערכת הקבצים הפרטית של המקור (OPFS). השיטה הזו משמשת, למשל, לצורכי אחסון בעל ביצועים גבוהים ב-Photoshop, וקהילת האחסון מתעניינת מאוד בה מאז תחילת ההוצאה משימוש של Web SQL, ואפילו לפני כן.

תרשים שבו מוצג השימוש היחסי המטפס במהירות בשיטה navigator.storage.getDirectory.

עכשיו, כשיותר אנשים משתמשים ב-OPFS, נוספו דרישות. לדוגמה, הצורך בקבוצה של שיטות קובץ שתומכות בסנכרון מלא בהקשר של עובד (למידע נוסף, ראו whatwg/fs#7). בדרך כלל, ממשקי ה-API החדשים לא מבוססים על אירועים (asynchronous), אבל שימוש בשיטות אסינכרניות יעזור לכם לעבוד עם OPFS בצורה הרבה יותר פשוטה בהקשר של Wasm. מכיוון שהפעולה הזו מתבצעת ב-worker, לא ניתן לחסום את ה-thread הראשי.

שיפורים בפרטיות של ממשקי ה-API לחומרה

דוגמה נוספת היא ממשקי ה-API של החומרה שמאפשרים להתחבר למכשירי HID, טוריים, USB, Bluetooth ו-NFC. חלק מ-API האלה קיימים כבר זמן מה, אבל עד לאחרונה לא הייתה אפשרות למחוק מכשיר שהתחברתם אליו בעבר. עכשיו יש אפשרות לעשות זאת באמצעות השיטות forget() בחלק מממשקי ה-API. לדוגמה, כך מוחקים מכשיר טורית שהיה מחובר בעבר, כדי לשפר את הפרטיות של ה-API.

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

שיפורים בממשק ה-API להצגת מודעות בחלונות במסכים מרובים

דוגמה אחרונה היא Multi-Screen Window Placement API, שבו על סמך משוב מהמפתחים, תוויות המסך הכלליות הקודמות כמו "Internal Display 1" הוחלפו בתוויות בעלות משמעות רבה יותר כמו "Built-in Retina Display", כדי למשתמשים יהיה קל יותר לשייך את התוויות האלה למסכים של ההגדרה שלהם לריבוי מסכים.

מסקנות

כפי שאפשר לראות רק משלושת הדוגמאות האלה, פרויקט Fugu רחוק מלהסתיים. להמשיך להשתמש בממשקי ה-API שלנו או להתחיל להשתמש בהם ולשלוח משוב. מאחר שכל המפרטים של Fugu מפותחים באופן פתוח ב-GitHub, תוכלו לשלוח דיווח על בעיה במפרט במאגר GitHub המתאים או להוסיף את דעתכם לבעיה קיימת. אם מצאתם באג בהטמעה של Chrome, או אם גיליתם שההטמעה שונה מהמפרט, תוכלו לדווח על הבאג בכתובת new.crbug.com. חשוב לכלול כמה שיותר פרטים ולספק הוראות פשוטות לשחזור הבעיה.

אם אתם מודאגים לגבי תמיכה בדפדפנים, הרבה ממשקי API של Fugu מתאימים לשיפורים פרוגרסיביים. למקורות השראה, אפשר לעיין במאמר שלי SVGcode: אפליקציית PWA להמרת תמונות רסטר לגרפיקת וקטורים מסוג SVG. אנחנו גם לא מתייחסים למשימות שלנו כאל סיום עד שממשקי ה-API האלה יהיו ניתנים לפעולה הדדית, ונמשיך לדחוף לסטנדרטיזציה, לבדיקות ולהטמעה שלהם בדפדפנים אחרים.