From 8040acd26f5567b29e6bad906b649d3aa3620600 Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Fri, 23 Aug 2024 14:33:43 +0200 Subject: [PATCH 01/21] add description, change status --- features/draft/spec/notifications.yml | 38 ---- features/draft/spec/notifications.yml.dist | 216 -------------------- features/notifications.yml | 88 ++++++--- features/notifications.yml.dist | 219 ++++++++++++++++++++- 4 files changed, 274 insertions(+), 287 deletions(-) delete mode 100644 features/draft/spec/notifications.yml delete mode 100644 features/draft/spec/notifications.yml.dist diff --git a/features/draft/spec/notifications.yml b/features/draft/spec/notifications.yml deleted file mode 100644 index 8e7b664b012..00000000000 --- a/features/draft/spec/notifications.yml +++ /dev/null @@ -1,38 +0,0 @@ -draft_date: 2024-08-19 -name: Notifications API Standard -description: TODO -spec: https://notifications.spec.whatwg.org/ -compat_features: - - api.Notification - - api.Notification.Notification - - api.Notification.actions - - api.Notification.badge - - api.Notification.body - - api.Notification.click_event - - api.Notification.close - - api.Notification.close_event - - api.Notification.data - - api.Notification.dir - - api.Notification.error_event - - api.Notification.icon - - api.Notification.image - - api.Notification.lang - - api.Notification.maxActions_static - - api.Notification.permission_static - - api.Notification.renotify - - api.Notification.requestPermission_static - - api.Notification.requireInteraction - - api.Notification.show_event - - api.Notification.silent - - api.Notification.tag - - api.Notification.timestamp - - api.Notification.title - - api.Notification.vibrate - - api.NotificationEvent - - api.NotificationEvent.NotificationEvent - - api.NotificationEvent.action - - api.NotificationEvent.notification - - api.ServiceWorkerGlobalScope.notificationclick_event - - api.ServiceWorkerGlobalScope.notificationclose_event - - api.ServiceWorkerRegistration.getNotifications - - api.ServiceWorkerRegistration.showNotification diff --git a/features/draft/spec/notifications.yml.dist b/features/draft/spec/notifications.yml.dist deleted file mode 100644 index 95f5d0a9f87..00000000000 --- a/features/draft/spec/notifications.yml.dist +++ /dev/null @@ -1,216 +0,0 @@ -# Generated from: notifications.yml -# Do not edit this file by hand. Edit the source file instead! - -status: - baseline: false - support: - chrome: "56" - edge: "79" -compat_features: - # baseline: low - # baseline_low_date: 2023-03-27 - # support: - # chrome: "40" - # chrome_android: "40" - # edge: "17" - # firefox: "44" - # firefox_android: "44" - # safari: "16" - # safari_ios: "16.4" - - api.ServiceWorkerRegistration.getNotifications - - # baseline: low - # baseline_low_date: 2023-03-27 - # support: - # chrome: "42" - # chrome_android: "42" - # edge: "17" - # firefox: "44" - # firefox_android: "44" - # safari: "16" - # safari_ios: "16.4" - - api.NotificationEvent - - api.NotificationEvent.NotificationEvent - - api.ServiceWorkerRegistration.showNotification - - # baseline: false - # support: - # chrome: "20" - # edge: "14" - # firefox: "22" - # firefox_android: "22" - # safari: "7" - # safari_ios: "16.4" - - api.Notification - - api.Notification.Notification - - api.Notification.close - - # baseline: false - # support: - # chrome: "20" - # edge: "14" - # firefox: "22" - # firefox_android: "22" - # safari: "15" - # safari_ios: "16.4" - - api.Notification.requestPermission_static - - # baseline: false - # support: - # chrome: "20" - # edge: "14" - # firefox: "26" - # firefox_android: "26" - # safari: "7" - # safari_ios: "16.4" - - api.Notification.dir - - # baseline: false - # support: - # chrome: "32" - # edge: "14" - # firefox: "22" - # firefox_android: "22" - # safari: "7" - # safari_ios: "16.4" - - api.Notification.permission_static - - # baseline: false - # support: - # chrome: "33" - # edge: "14" - # firefox: "26" - # firefox_android: "26" - # safari: "11" - # safari_ios: "16.4" - - api.Notification.body - - api.Notification.icon - - api.Notification.lang - - api.Notification.title - - # baseline: false - # support: - # chrome: "40" - # chrome_android: "40" - # edge: "17" - # firefox: "44" - # firefox_android: "44" - # safari: "16" - - api.ServiceWorkerGlobalScope.notificationclick_event - - # baseline: false - # support: - # chrome: "44" - # edge: "16" - # firefox: "34" - # firefox_android: "34" - # safari: "16" - # safari_ios: "16.4" - - api.Notification.data - - # baseline: false - # support: - # chrome: "50" - # chrome_android: "50" - # edge: "17" - # firefox: "44" - # firefox_android: "44" - # safari: "16" - - api.ServiceWorkerGlobalScope.notificationclose_event - - # baseline: false - # support: - # chrome: "20" - # edge: "14" - # firefox: "22" - # firefox_android: "22" - # safari: "7" - - api.Notification.click_event - - api.Notification.close_event - - api.Notification.error_event - - api.Notification.show_event - - # baseline: false - # support: - # chrome: "20" - # edge: "14" - # firefox: "26" - # firefox_android: "26" - # safari: "7" - - api.Notification.tag - - # baseline: false - # support: - # chrome: "42" - # chrome_android: "42" - # edge: "17" - # firefox: "44" - # firefox_android: "44" - - api.NotificationEvent.notification - - # baseline: false - # support: - # chrome: "48" - # chrome_android: "48" - # edge: "17" - # firefox: "44" - # firefox_android: "44" - - api.NotificationEvent.action - - # baseline: false - # support: - # chrome: "43" - # edge: "17" - # safari: "16.6" - # safari_ios: "16.6" - - api.Notification.silent - - # baseline: false - # support: - # chrome: "53" - # edge: "18" - # safari: "17" - # safari_ios: "16.4" - - api.Notification.badge - - # baseline: false - # support: - # chrome: "47" - # edge: "17" - - api.Notification.requireInteraction - - # baseline: false - # support: - # chrome: "48" - # edge: "18" - - api.Notification.maxActions_static - - # baseline: false - # support: - # chrome: "50" - # edge: "17" - - api.Notification.timestamp - - # baseline: false - # support: - # chrome: "50" - # edge: "79" - - api.Notification.renotify - - # baseline: false - # support: - # chrome: "53" - # edge: "18" - - api.Notification.actions - - # baseline: false - # support: - # chrome: "53" - # edge: "79" - - api.Notification.vibrate - - # baseline: false - # support: - # chrome: "56" - # edge: "18" - - api.Notification.image diff --git a/features/notifications.yml b/features/notifications.yml index 2ffe98fc08e..031f43156c1 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -1,38 +1,62 @@ -name: Notifications -description: The notifications API sends system notifications to the user, often even when the page or browser is not the foreground application. -spec: https://notifications.spec.whatwg.org/ -caniuse: notifications -# Notifications support is complicated and this entry is unusual. It represents -# some kind of notification support available to web pages. More fine-grained -# features could be added to represent specific things that work. -# -# https://caniuse.com/notifications marks iOS support as partial with this note: -# "Requires website to first be added to the Home Screen." +# Feature name reasoning +# +# - "web notifications": very common, but searches also show Web Push +# - "notifications api": ditto +# - "web notifications": ditto, but even more general # -# BCD doesn't use partial_implementation for safari_ios, but has this note: -# "Notifications are supported in web apps saved to the home screen." +# Going with the generally preferred pattern of not including "web". +name: Notifications API + +# Description reasoning # -# We do not have the concept of partial support or notes: -# https://github.com/web-platform-dx/web-features/issues/915 +# Spec: The Notifications API defines an API to display notifications to the end user, typically outside the top-level browsing context’s viewport. It is designed to be compatible with existing notification systems, while remaining platform-independent. +# +# Caniuse: Method of alerting the user outside of a web page by displaying notifications (that do not require interaction by the user). # -# Another complication is the two entry points to this API: -# - new Notification() for non-persistent notifications. -# - showNotification() in service workers for persistent notifications. +# MDN: The Notification interface of the Notifications API is used to configure and display desktop notifications to the user. These notifications' appearance and specific functionality vary across platforms but generally they provide a way to asynchronously provide information to the user. # -# Finally, BCD and caniuse.com disagree about whether it was Safari 6 or 7 that -# first supported notifications, and BCD originally agreed with caniuse.com: -# https://github.com/mdn/browser-compat-data/pull/7949 +# common pieces: +# - display information to the user +# - shown outside the viewport +# - asynchronous (not user-interactive) +# - often platform integrated/compatible # -# Due to this complexity, manually combine these 3 data points: -# https://developer.mozilla.org/en-US/docs/Web/API/Notification/Notification#browser_compatibility -# https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification#browser_compatibility -# https://caniuse.com/notifications (excluding partial support on iOS) +description: The Notifications API displays alerts to the user outside of the viewport, often using the notification system of the host operating system. +spec: https://notifications.spec.whatwg.org/ +caniuse: notifications status: - baseline: false - support: - chrome: "20" - chrome_android: "42" - edge: "14" - firefox: "22" - firefox_android: "22" - safari: "6" + compute_from: api.Notification +compat_features: + - api.Notification + - api.Notification.Notification + - api.Notification.actions + - api.Notification.badge + - api.Notification.body + - api.Notification.click_event + - api.Notification.close + - api.Notification.close_event + - api.Notification.data + - api.Notification.dir + - api.Notification.error_event + - api.Notification.icon + - api.Notification.image + - api.Notification.lang + - api.Notification.maxActions_static + - api.Notification.permission_static + - api.Notification.renotify + - api.Notification.requestPermission_static + - api.Notification.requireInteraction + - api.Notification.show_event + - api.Notification.silent + - api.Notification.tag + - api.Notification.timestamp + - api.Notification.title + - api.Notification.vibrate + - api.NotificationEvent + - api.NotificationEvent.NotificationEvent + - api.NotificationEvent.action + - api.NotificationEvent.notification + - api.ServiceWorkerGlobalScope.notificationclick_event + - api.ServiceWorkerGlobalScope.notificationclose_event + - api.ServiceWorkerRegistration.getNotifications + - api.ServiceWorkerRegistration.showNotification diff --git a/features/notifications.yml.dist b/features/notifications.yml.dist index 2d681c71f53..fcaf18098e9 100644 --- a/features/notifications.yml.dist +++ b/features/notifications.yml.dist @@ -1,4 +1,221 @@ # Generated from: notifications.yml # Do not edit this file by hand. Edit the source file instead! -{} +status: + baseline: false + support: + chrome: "20" + edge: "14" + firefox: "22" + firefox_android: "22" + safari: "7" + safari_ios: "16.4" +compat_features: + # baseline: low + # baseline_low_date: 2023-03-27 + # support: + # chrome: "40" + # chrome_android: "40" + # edge: "17" + # firefox: "44" + # firefox_android: "44" + # safari: "16" + # safari_ios: "16.4" + - api.ServiceWorkerRegistration.getNotifications + + # baseline: low + # baseline_low_date: 2023-03-27 + # support: + # chrome: "42" + # chrome_android: "42" + # edge: "17" + # firefox: "44" + # firefox_android: "44" + # safari: "16" + # safari_ios: "16.4" + - api.NotificationEvent + - api.NotificationEvent.NotificationEvent + - api.ServiceWorkerRegistration.showNotification + + # ⬇️ Same status as overall feature ⬇️ + # baseline: false + # support: + # chrome: "20" + # edge: "14" + # firefox: "22" + # firefox_android: "22" + # safari: "7" + # safari_ios: "16.4" + - api.Notification + - api.Notification.Notification + - api.Notification.close + + # baseline: false + # support: + # chrome: "20" + # edge: "14" + # firefox: "22" + # firefox_android: "22" + # safari: "15" + # safari_ios: "16.4" + - api.Notification.requestPermission_static + + # baseline: false + # support: + # chrome: "20" + # edge: "14" + # firefox: "26" + # firefox_android: "26" + # safari: "7" + # safari_ios: "16.4" + - api.Notification.dir + + # baseline: false + # support: + # chrome: "32" + # edge: "14" + # firefox: "22" + # firefox_android: "22" + # safari: "7" + # safari_ios: "16.4" + - api.Notification.permission_static + + # baseline: false + # support: + # chrome: "33" + # edge: "14" + # firefox: "26" + # firefox_android: "26" + # safari: "11" + # safari_ios: "16.4" + - api.Notification.body + - api.Notification.icon + - api.Notification.lang + - api.Notification.title + + # baseline: false + # support: + # chrome: "40" + # chrome_android: "40" + # edge: "17" + # firefox: "44" + # firefox_android: "44" + # safari: "16" + - api.ServiceWorkerGlobalScope.notificationclick_event + + # baseline: false + # support: + # chrome: "44" + # edge: "16" + # firefox: "34" + # firefox_android: "34" + # safari: "16" + # safari_ios: "16.4" + - api.Notification.data + + # baseline: false + # support: + # chrome: "50" + # chrome_android: "50" + # edge: "17" + # firefox: "44" + # firefox_android: "44" + # safari: "16" + - api.ServiceWorkerGlobalScope.notificationclose_event + + # baseline: false + # support: + # chrome: "20" + # edge: "14" + # firefox: "22" + # firefox_android: "22" + # safari: "7" + - api.Notification.click_event + - api.Notification.close_event + - api.Notification.error_event + - api.Notification.show_event + + # baseline: false + # support: + # chrome: "20" + # edge: "14" + # firefox: "26" + # firefox_android: "26" + # safari: "7" + - api.Notification.tag + + # baseline: false + # support: + # chrome: "42" + # chrome_android: "42" + # edge: "17" + # firefox: "44" + # firefox_android: "44" + - api.NotificationEvent.notification + + # baseline: false + # support: + # chrome: "48" + # chrome_android: "48" + # edge: "17" + # firefox: "44" + # firefox_android: "44" + - api.NotificationEvent.action + + # baseline: false + # support: + # chrome: "43" + # edge: "17" + # safari: "16.6" + # safari_ios: "16.6" + - api.Notification.silent + + # baseline: false + # support: + # chrome: "53" + # edge: "18" + # safari: "17" + # safari_ios: "16.4" + - api.Notification.badge + + # baseline: false + # support: + # chrome: "47" + # edge: "17" + - api.Notification.requireInteraction + + # baseline: false + # support: + # chrome: "48" + # edge: "18" + - api.Notification.maxActions_static + + # baseline: false + # support: + # chrome: "50" + # edge: "17" + - api.Notification.timestamp + + # baseline: false + # support: + # chrome: "50" + # edge: "79" + - api.Notification.renotify + + # baseline: false + # support: + # chrome: "53" + # edge: "18" + - api.Notification.actions + + # baseline: false + # support: + # chrome: "53" + # edge: "79" + - api.Notification.vibrate + + # baseline: false + # support: + # chrome: "56" + # edge: "18" + - api.Notification.image From 543f8a7cff793a070794f9366e7571ab5f0655e0 Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Fri, 23 Aug 2024 15:37:24 +0200 Subject: [PATCH 02/21] remove spaces --- features/notifications.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/notifications.yml b/features/notifications.yml index 031f43156c1..77ece9017fb 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -1,5 +1,5 @@ # Feature name reasoning -# +# # - "web notifications": very common, but searches also show Web Push # - "notifications api": ditto # - "web notifications": ditto, but even more general @@ -10,7 +10,7 @@ name: Notifications API # Description reasoning # # Spec: The Notifications API defines an API to display notifications to the end user, typically outside the top-level browsing context’s viewport. It is designed to be compatible with existing notification systems, while remaining platform-independent. -# +# # Caniuse: Method of alerting the user outside of a web page by displaying notifications (that do not require interaction by the user). # # MDN: The Notification interface of the Notifications API is used to configure and display desktop notifications to the user. These notifications' appearance and specific functionality vary across platforms but generally they provide a way to asynchronously provide information to the user. From 10cf69d8b253d5477379668d96d008eaf5c33b24 Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Fri, 6 Sep 2024 16:30:29 +0200 Subject: [PATCH 03/21] update desc --- features/notifications.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/notifications.yml b/features/notifications.yml index 77ece9017fb..b9ce44a1398 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -2,7 +2,7 @@ # # - "web notifications": very common, but searches also show Web Push # - "notifications api": ditto -# - "web notifications": ditto, but even more general +# - "notifications": ditto, but even more general # # Going with the generally preferred pattern of not including "web". name: Notifications API @@ -21,7 +21,7 @@ name: Notifications API # - asynchronous (not user-interactive) # - often platform integrated/compatible # -description: The Notifications API displays alerts to the user outside of the viewport, often using the notification system of the host operating system. +description: The Notifications API displays alerts to the user outside of the viewport, typically using the notification system of the host operating system. spec: https://notifications.spec.whatwg.org/ caniuse: notifications status: From a79953da228625f5105fcfcb8675958218b068bc Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Thu, 19 Sep 2024 11:45:21 +0200 Subject: [PATCH 04/21] compute from sw to get a baseline that makese sense --- features/notifications.yml | 15 +++++++++++++-- features/notifications.yml.dist | 16 +++++++++------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/features/notifications.yml b/features/notifications.yml index b9ce44a1398..201723fef42 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -21,11 +21,22 @@ name: Notifications API # - asynchronous (not user-interactive) # - often platform integrated/compatible # -description: The Notifications API displays alerts to the user outside of the viewport, typically using the notification system of the host operating system. +description: The Notifications API displays messages to the user outside of the viewport, typically using the notification system of the host operating system. spec: https://notifications.spec.whatwg.org/ caniuse: notifications + +# Computing from the ServiceWorker feature since that gets us a baseline +# which matches the general availability of the feature given platform +# constraints. +# +# This matches Caniuse: https://caniuse.com/?search=notifications +# +# BCD notes: +# +# https://github.com/mdn/browser-compat-data/blob/0398a9fa847b3a616fa7968f79aadfc6cba4718f/api/Notification.json#L18 +# status: - compute_from: api.Notification + compute_from: api.ServiceWorkerRegistration.showNotification compat_features: - api.Notification - api.Notification.Notification diff --git a/features/notifications.yml.dist b/features/notifications.yml.dist index fcaf18098e9..ab073d6b9fe 100644 --- a/features/notifications.yml.dist +++ b/features/notifications.yml.dist @@ -2,13 +2,15 @@ # Do not edit this file by hand. Edit the source file instead! status: - baseline: false + baseline: low + baseline_low_date: 2023-03-27 support: - chrome: "20" - edge: "14" - firefox: "22" - firefox_android: "22" - safari: "7" + chrome: "42" + chrome_android: "42" + edge: "17" + firefox: "44" + firefox_android: "44" + safari: "16" safari_ios: "16.4" compat_features: # baseline: low @@ -23,6 +25,7 @@ compat_features: # safari_ios: "16.4" - api.ServiceWorkerRegistration.getNotifications + # ⬇️ Same status as overall feature ⬇️ # baseline: low # baseline_low_date: 2023-03-27 # support: @@ -37,7 +40,6 @@ compat_features: - api.NotificationEvent.NotificationEvent - api.ServiceWorkerRegistration.showNotification - # ⬇️ Same status as overall feature ⬇️ # baseline: false # support: # chrome: "20" From 2c05f09eb8d945e5ab0215e171d45af900bf25bc Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Thu, 19 Sep 2024 11:47:32 +0200 Subject: [PATCH 05/21] commentary --- features/notifications.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/features/notifications.yml b/features/notifications.yml index 201723fef42..9b828cf7a63 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -4,7 +4,11 @@ # - "notifications api": ditto # - "notifications": ditto, but even more general # +# MDN: Notifications API +# CIU: Web Notifications +# # Going with the generally preferred pattern of not including "web". +# name: Notifications API # Description reasoning From 8033537cf10499fd09c19cb9b6695519bb7fd72b Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Thu, 19 Sep 2024 12:12:23 +0200 Subject: [PATCH 06/21] add feature composition discussion --- features/notifications.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/features/notifications.yml b/features/notifications.yml index 9b828cf7a63..859857e54e9 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -1,3 +1,12 @@ +# Feature composition notes +# +# Discussion and reasoning here: +# +# https://github.com/web-platform-dx/web-features/issues/973 +# +# Disambiguations: +# - Push (aka Web Push / Push API / Push Notifications) + # Feature name reasoning # # - "web notifications": very common, but searches also show Web Push From 76ab596491b3f155ea183e94019895eb5c939005 Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Wed, 9 Oct 2024 14:02:53 +0700 Subject: [PATCH 07/21] change name --- features/notifications.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/notifications.yml b/features/notifications.yml index 859857e54e9..742a583f324 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -16,9 +16,9 @@ # MDN: Notifications API # CIU: Web Notifications # -# Going with the generally preferred pattern of not including "web". +# Going with the generally preferred pattern of not including "web" nor "API". # -name: Notifications API +name: Notifications # Description reasoning # From 9f9c70e6bd2655450a8375f59a0db3472a207577 Mon Sep 17 00:00:00 2001 From: Dietrich Ayala <50103+autonome@users.noreply.github.com> Date: Wed, 9 Oct 2024 14:03:16 +0700 Subject: [PATCH 08/21] Update features/notifications.yml Co-authored-by: Patrick Brosset --- features/notifications.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/notifications.yml b/features/notifications.yml index 859857e54e9..5556596b434 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -34,7 +34,7 @@ name: Notifications API # - asynchronous (not user-interactive) # - often platform integrated/compatible # -description: The Notifications API displays messages to the user outside of the viewport, typically using the notification system of the host operating system. +description: The Notifications API displays messages to the user outside of the browser, typically using the notification system of the host operating system. spec: https://notifications.spec.whatwg.org/ caniuse: notifications From 7f0391e145f9d9485e4dd785452170087f97598c Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Wed, 9 Oct 2024 14:05:26 +0700 Subject: [PATCH 09/21] update desc --- features/notifications.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/notifications.yml b/features/notifications.yml index c5cb9652319..60bc9d5873e 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -34,7 +34,7 @@ name: Notifications # - asynchronous (not user-interactive) # - often platform integrated/compatible # -description: The Notifications API displays messages to the user outside of the browser, typically using the notification system of the host operating system. +description: The Notifications API displays messages to the user outside of the browser, typically using the notification system of the host operating system. This feature is solely client-side, and does not integrate with server-originating notifications. spec: https://notifications.spec.whatwg.org/ caniuse: notifications From a15fe7878761e9ddd91e8153964d7706dcfdb0cb Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Wed, 9 Oct 2024 14:17:44 +0700 Subject: [PATCH 10/21] remove drafty stuff, re-dist --- features/notifications.yml | 36 --------------------------------- features/notifications.yml.dist | 26 +++++++++++++++--------- 2 files changed, 16 insertions(+), 46 deletions(-) diff --git a/features/notifications.yml b/features/notifications.yml index 60bc9d5873e..65932543988 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -1,43 +1,7 @@ -# Feature composition notes -# -# Discussion and reasoning here: -# -# https://github.com/web-platform-dx/web-features/issues/973 -# -# Disambiguations: -# - Push (aka Web Push / Push API / Push Notifications) - -# Feature name reasoning -# -# - "web notifications": very common, but searches also show Web Push -# - "notifications api": ditto -# - "notifications": ditto, but even more general -# -# MDN: Notifications API -# CIU: Web Notifications -# -# Going with the generally preferred pattern of not including "web" nor "API". -# name: Notifications - -# Description reasoning -# -# Spec: The Notifications API defines an API to display notifications to the end user, typically outside the top-level browsing context’s viewport. It is designed to be compatible with existing notification systems, while remaining platform-independent. -# -# Caniuse: Method of alerting the user outside of a web page by displaying notifications (that do not require interaction by the user). -# -# MDN: The Notification interface of the Notifications API is used to configure and display desktop notifications to the user. These notifications' appearance and specific functionality vary across platforms but generally they provide a way to asynchronously provide information to the user. -# -# common pieces: -# - display information to the user -# - shown outside the viewport -# - asynchronous (not user-interactive) -# - often platform integrated/compatible -# description: The Notifications API displays messages to the user outside of the browser, typically using the notification system of the host operating system. This feature is solely client-side, and does not integrate with server-originating notifications. spec: https://notifications.spec.whatwg.org/ caniuse: notifications - # Computing from the ServiceWorker feature since that gets us a baseline # which matches the general availability of the feature given platform # constraints. diff --git a/features/notifications.yml.dist b/features/notifications.yml.dist index ab073d6b9fe..1ae02a79fc1 100644 --- a/features/notifications.yml.dist +++ b/features/notifications.yml.dist @@ -91,7 +91,6 @@ compat_features: # safari: "11" # safari_ios: "16.4" - api.Notification.body - - api.Notification.icon - api.Notification.lang - api.Notification.title @@ -137,15 +136,6 @@ compat_features: - api.Notification.error_event - api.Notification.show_event - # baseline: false - # support: - # chrome: "20" - # edge: "14" - # firefox: "26" - # firefox_android: "26" - # safari: "7" - - api.Notification.tag - # baseline: false # support: # chrome: "42" @@ -164,6 +154,22 @@ compat_features: # firefox_android: "44" - api.NotificationEvent.action + # baseline: false + # support: + # chrome: "20" + # edge: "14" + # firefox: "26" + # firefox_android: "26" + - api.Notification.tag + + # baseline: false + # support: + # chrome: "33" + # edge: "14" + # firefox: "26" + # firefox_android: "26" + - api.Notification.icon + # baseline: false # support: # chrome: "43" From 9de09b9a6781c15ed5d91cca58ff7e00bfefeaf8 Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Tue, 15 Oct 2024 11:31:12 +0700 Subject: [PATCH 11/21] first stab at separated notifications features --- features/notifications-apps.yml | 19 +++++++++++++++++++ features/notifications-apps.yml.dist | 4 ++++ features/notifications.yml | 8 +++++--- features/notifications.yml.dist | 13 +++---------- 4 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 features/notifications-apps.yml create mode 100644 features/notifications-apps.yml.dist diff --git a/features/notifications-apps.yml b/features/notifications-apps.yml new file mode 100644 index 00000000000..a61926f68e3 --- /dev/null +++ b/features/notifications-apps.yml @@ -0,0 +1,19 @@ +name: Notifications from service workers and installed apps +# This feature is for the platform-specific nature of notifications support +# in Chrome Android and Safari iOS, and anchors to the Caniuse feature. +# +# See `features/notifications.yml` for the full Notifications feature, which +# does not align with Caniuse. +description: "The Notifications API displays messages to the user, with platform-specific requirements in some cases. Chrome Android supports notifications from installed service workers, and Safari iOS supports notifications from websites that have been bookmarked on the homescreen." +spec: https://notifications.spec.whatwg.org/ +caniuse: notifications +status: + baseline: low + support: + chrome: 20 + chrome_android: 42 + edge: 14 + firefox: 22 + firefox_android: 22 + safari: 7 + safari_ios: 16.4 diff --git a/features/notifications-apps.yml.dist b/features/notifications-apps.yml.dist new file mode 100644 index 00000000000..455a7c3b93b --- /dev/null +++ b/features/notifications-apps.yml.dist @@ -0,0 +1,4 @@ +# Generated from: notifications-apps.yml +# Do not edit this file by hand. Edit the source file instead! + +{} diff --git a/features/notifications.yml b/features/notifications.yml index 65932543988..e6fa2ce1fe6 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -1,7 +1,11 @@ name: Notifications +# This feature is the general Notifications API, and does not anchor to the +# Caniuse feature. +# +# See `features/notifications-pwa.yml` for the Notifications feature for mobile +# browsers that have platform-specific requirements and aligns with Caniuse. description: The Notifications API displays messages to the user outside of the browser, typically using the notification system of the host operating system. This feature is solely client-side, and does not integrate with server-originating notifications. spec: https://notifications.spec.whatwg.org/ -caniuse: notifications # Computing from the ServiceWorker feature since that gets us a baseline # which matches the general availability of the feature given platform # constraints. @@ -12,8 +16,6 @@ caniuse: notifications # # https://github.com/mdn/browser-compat-data/blob/0398a9fa847b3a616fa7968f79aadfc6cba4718f/api/Notification.json#L18 # -status: - compute_from: api.ServiceWorkerRegistration.showNotification compat_features: - api.Notification - api.Notification.Notification diff --git a/features/notifications.yml.dist b/features/notifications.yml.dist index 1ae02a79fc1..57f20de8bb5 100644 --- a/features/notifications.yml.dist +++ b/features/notifications.yml.dist @@ -2,16 +2,10 @@ # Do not edit this file by hand. Edit the source file instead! status: - baseline: low - baseline_low_date: 2023-03-27 + baseline: false support: - chrome: "42" - chrome_android: "42" - edge: "17" - firefox: "44" - firefox_android: "44" - safari: "16" - safari_ios: "16.4" + chrome: "56" + edge: "79" compat_features: # baseline: low # baseline_low_date: 2023-03-27 @@ -25,7 +19,6 @@ compat_features: # safari_ios: "16.4" - api.ServiceWorkerRegistration.getNotifications - # ⬇️ Same status as overall feature ⬇️ # baseline: low # baseline_low_date: 2023-03-27 # support: From 5d7f4eed4859cd70b34e85e08523c3f272591b92 Mon Sep 17 00:00:00 2001 From: Dietrich Ayala <50103+autonome@users.noreply.github.com> Date: Tue, 15 Oct 2024 08:07:16 -0400 Subject: [PATCH 12/21] Update features/notifications.yml Co-authored-by: Patrick Brosset --- features/notifications.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/notifications.yml b/features/notifications.yml index e6fa2ce1fe6..d6268ad6647 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -2,7 +2,7 @@ name: Notifications # This feature is the general Notifications API, and does not anchor to the # Caniuse feature. # -# See `features/notifications-pwa.yml` for the Notifications feature for mobile +# See `features/notifications-apps.yml` for the Notifications feature for mobile # browsers that have platform-specific requirements and aligns with Caniuse. description: The Notifications API displays messages to the user outside of the browser, typically using the notification system of the host operating system. This feature is solely client-side, and does not integrate with server-originating notifications. spec: https://notifications.spec.whatwg.org/ From 776aee08c0504a687222618c8ea5bd45f5bdc878 Mon Sep 17 00:00:00 2001 From: Dietrich Ayala <50103+autonome@users.noreply.github.com> Date: Tue, 15 Oct 2024 08:07:38 -0400 Subject: [PATCH 13/21] Update features/notifications.yml Co-authored-by: Patrick Brosset --- features/notifications.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/notifications.yml b/features/notifications.yml index d6268ad6647..66c09a2e0b5 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -4,7 +4,7 @@ name: Notifications # # See `features/notifications-apps.yml` for the Notifications feature for mobile # browsers that have platform-specific requirements and aligns with Caniuse. -description: The Notifications API displays messages to the user outside of the browser, typically using the notification system of the host operating system. This feature is solely client-side, and does not integrate with server-originating notifications. +description: The Notifications API displays messages to the user, typically using the notification system of the host operating system. spec: https://notifications.spec.whatwg.org/ # Computing from the ServiceWorker feature since that gets us a baseline # which matches the general availability of the feature given platform From b8cd10c1144026d891c39d13155799fa05e31d83 Mon Sep 17 00:00:00 2001 From: Dietrich Ayala <50103+autonome@users.noreply.github.com> Date: Tue, 15 Oct 2024 08:09:02 -0400 Subject: [PATCH 14/21] Update features/notifications-apps.yml Co-authored-by: Patrick Brosset --- features/notifications-apps.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/notifications-apps.yml b/features/notifications-apps.yml index a61926f68e3..a823cd3dddc 100644 --- a/features/notifications-apps.yml +++ b/features/notifications-apps.yml @@ -4,7 +4,7 @@ name: Notifications from service workers and installed apps # # See `features/notifications.yml` for the full Notifications feature, which # does not align with Caniuse. -description: "The Notifications API displays messages to the user, with platform-specific requirements in some cases. Chrome Android supports notifications from installed service workers, and Safari iOS supports notifications from websites that have been bookmarked on the homescreen." +description: The Notifications API, when used from a service worker or home screen app, displays messages to the user, typically using the notification system of the host operating system. Chrome Android supports notifications from installed service workers, and Safari iOS supports notifications from websites that have been added to the home screen." spec: https://notifications.spec.whatwg.org/ caniuse: notifications status: From ee9432e31c859d9588356bbd52624054f306cf3c Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Tue, 15 Oct 2024 19:19:07 +0700 Subject: [PATCH 15/21] remove old comments --- features/notifications.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/features/notifications.yml b/features/notifications.yml index e6fa2ce1fe6..c72ac84ad00 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -6,16 +6,6 @@ name: Notifications # browsers that have platform-specific requirements and aligns with Caniuse. description: The Notifications API displays messages to the user outside of the browser, typically using the notification system of the host operating system. This feature is solely client-side, and does not integrate with server-originating notifications. spec: https://notifications.spec.whatwg.org/ -# Computing from the ServiceWorker feature since that gets us a baseline -# which matches the general availability of the feature given platform -# constraints. -# -# This matches Caniuse: https://caniuse.com/?search=notifications -# -# BCD notes: -# -# https://github.com/mdn/browser-compat-data/blob/0398a9fa847b3a616fa7968f79aadfc6cba4718f/api/Notification.json#L18 -# compat_features: - api.Notification - api.Notification.Notification From 80f841bd9fc843d8a2816eda81465ade406452d1 Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Tue, 15 Oct 2024 19:37:02 +0700 Subject: [PATCH 16/21] truncate desc --- features/notifications-apps.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/notifications-apps.yml b/features/notifications-apps.yml index a823cd3dddc..3d61dad6891 100644 --- a/features/notifications-apps.yml +++ b/features/notifications-apps.yml @@ -4,7 +4,7 @@ name: Notifications from service workers and installed apps # # See `features/notifications.yml` for the full Notifications feature, which # does not align with Caniuse. -description: The Notifications API, when used from a service worker or home screen app, displays messages to the user, typically using the notification system of the host operating system. Chrome Android supports notifications from installed service workers, and Safari iOS supports notifications from websites that have been added to the home screen." +description: The Notifications API, when used from a service worker for Chrome Android or home screen app for Safari iOS, displays messages to the user, typically using the notification system of the host operating system. spec: https://notifications.spec.whatwg.org/ caniuse: notifications status: From 0b2acb2a10a068dcf4f2345fb9aa1d6e8b7ca974 Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Fri, 29 Nov 2024 11:07:04 +0100 Subject: [PATCH 17/21] regen --- features/notifications.yml.dist | 86 ++++++++++++++------------------- 1 file changed, 36 insertions(+), 50 deletions(-) diff --git a/features/notifications.yml.dist b/features/notifications.yml.dist index 57f20de8bb5..e1f9755598f 100644 --- a/features/notifications.yml.dist +++ b/features/notifications.yml.dist @@ -33,6 +33,26 @@ compat_features: - api.NotificationEvent.NotificationEvent - api.ServiceWorkerRegistration.showNotification + # baseline: false + # support: + # chrome: "40" + # chrome_android: "40" + # edge: "17" + # firefox: "44" + # firefox_android: "44" + # safari: "16" + - api.ServiceWorkerGlobalScope.notificationclick_event + + # baseline: false + # support: + # chrome: "50" + # chrome_android: "50" + # edge: "17" + # firefox: "44" + # firefox_android: "44" + # safari: "16" + - api.ServiceWorkerGlobalScope.notificationclose_event + # baseline: false # support: # chrome: "20" @@ -40,10 +60,13 @@ compat_features: # firefox: "22" # firefox_android: "22" # safari: "7" - # safari_ios: "16.4" - api.Notification - api.Notification.Notification + - api.Notification.click_event - api.Notification.close + - api.Notification.close_event + - api.Notification.error_event + - api.Notification.show_event # baseline: false # support: @@ -52,7 +75,6 @@ compat_features: # firefox: "22" # firefox_android: "22" # safari: "15" - # safari_ios: "16.4" - api.Notification.requestPermission_static # baseline: false @@ -62,7 +84,6 @@ compat_features: # firefox: "26" # firefox_android: "26" # safari: "7" - # safari_ios: "16.4" - api.Notification.dir # baseline: false @@ -72,7 +93,6 @@ compat_features: # firefox: "22" # firefox_android: "22" # safari: "7" - # safari_ios: "16.4" - api.Notification.permission_static # baseline: false @@ -82,20 +102,27 @@ compat_features: # firefox: "26" # firefox_android: "26" # safari: "11" - # safari_ios: "16.4" - api.Notification.body - api.Notification.lang - api.Notification.title # baseline: false # support: - # chrome: "40" - # chrome_android: "40" + # chrome: "42" + # chrome_android: "42" # edge: "17" # firefox: "44" # firefox_android: "44" - # safari: "16" - - api.ServiceWorkerGlobalScope.notificationclick_event + - api.NotificationEvent.notification + + # baseline: false + # support: + # chrome: "43" + # edge: "17" + # firefox: "132" + # firefox_android: "132" + # safari: "16.6" + - api.Notification.silent # baseline: false # support: @@ -104,40 +131,8 @@ compat_features: # firefox: "34" # firefox_android: "34" # safari: "16" - # safari_ios: "16.4" - api.Notification.data - # baseline: false - # support: - # chrome: "50" - # chrome_android: "50" - # edge: "17" - # firefox: "44" - # firefox_android: "44" - # safari: "16" - - api.ServiceWorkerGlobalScope.notificationclose_event - - # baseline: false - # support: - # chrome: "20" - # edge: "14" - # firefox: "22" - # firefox_android: "22" - # safari: "7" - - api.Notification.click_event - - api.Notification.close_event - - api.Notification.error_event - - api.Notification.show_event - - # baseline: false - # support: - # chrome: "42" - # chrome_android: "42" - # edge: "17" - # firefox: "44" - # firefox_android: "44" - - api.NotificationEvent.notification - # baseline: false # support: # chrome: "48" @@ -163,20 +158,11 @@ compat_features: # firefox_android: "26" - api.Notification.icon - # baseline: false - # support: - # chrome: "43" - # edge: "17" - # safari: "16.6" - # safari_ios: "16.6" - - api.Notification.silent - # baseline: false # support: # chrome: "53" # edge: "18" # safari: "17" - # safari_ios: "16.4" - api.Notification.badge # baseline: false From ad61981873931d702b5bacf0691e12d0c7625fbf Mon Sep 17 00:00:00 2001 From: Dietrich Ayala <50103+autonome@users.noreply.github.com> Date: Mon, 16 Dec 2024 23:22:27 +0700 Subject: [PATCH 18/21] Update features/notifications-apps.yml Co-authored-by: Daniel D. Beck --- features/notifications-apps.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/notifications-apps.yml b/features/notifications-apps.yml index 3d61dad6891..2d9ee4d75c9 100644 --- a/features/notifications-apps.yml +++ b/features/notifications-apps.yml @@ -4,7 +4,7 @@ name: Notifications from service workers and installed apps # # See `features/notifications.yml` for the full Notifications feature, which # does not align with Caniuse. -description: The Notifications API, when used from a service worker for Chrome Android or home screen app for Safari iOS, displays messages to the user, typically using the notification system of the host operating system. +description: Notifications via service worker registration's `showNotification()` method, sent from installed web applications (for example, saved to the Home Screen on Safari for iOS), show a message to the user, typically using the notification system of the host operating system. spec: https://notifications.spec.whatwg.org/ caniuse: notifications status: From 00f3308a8320c75e18ec707bf048b68f64edc300 Mon Sep 17 00:00:00 2001 From: Dietrich Ayala <50103+autonome@users.noreply.github.com> Date: Mon, 16 Dec 2024 23:23:37 +0700 Subject: [PATCH 19/21] Update features/notifications.yml Co-authored-by: Daniel D. Beck --- features/notifications.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/features/notifications.yml b/features/notifications.yml index 79c7bffa139..99a12375130 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -6,6 +6,8 @@ name: Notifications # browsers that have platform-specific requirements and aligns with Caniuse. description: The Notifications API displays messages to the user, typically using the notification system of the host operating system. spec: https://notifications.spec.whatwg.org/ +status: + compute_from: api.Notification.Notification compat_features: - api.Notification - api.Notification.Notification From 9298034c09c9dafb184c9a34c20b96bac8cecbb2 Mon Sep 17 00:00:00 2001 From: Dietrich Ayala <50103+autonome@users.noreply.github.com> Date: Mon, 16 Dec 2024 23:23:51 +0700 Subject: [PATCH 20/21] Update features/notifications.yml Co-authored-by: Daniel D. Beck --- features/notifications.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/notifications.yml b/features/notifications.yml index 99a12375130..353f67041d1 100644 --- a/features/notifications.yml +++ b/features/notifications.yml @@ -4,7 +4,7 @@ name: Notifications # # See `features/notifications-apps.yml` for the Notifications feature for mobile # browsers that have platform-specific requirements and aligns with Caniuse. -description: The Notifications API displays messages to the user, typically using the notification system of the host operating system. +description: The `Notification()` constructor shows a message to the user, typically using the notification system of the host operating system. spec: https://notifications.spec.whatwg.org/ status: compute_from: api.Notification.Notification From ccf308d660f615ec331c6120622fa648156edc6b Mon Sep 17 00:00:00 2001 From: dietrich ayala Date: Mon, 16 Dec 2024 17:28:47 +0100 Subject: [PATCH 21/21] review fix, update baseline low date --- features/notifications-apps.yml | 15 ++++++++------- features/notifications.yml.dist | 8 ++++++-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/features/notifications-apps.yml b/features/notifications-apps.yml index 2d9ee4d75c9..edaa5ad6349 100644 --- a/features/notifications-apps.yml +++ b/features/notifications-apps.yml @@ -9,11 +9,12 @@ spec: https://notifications.spec.whatwg.org/ caniuse: notifications status: baseline: low + baseline_low_date: 2023-03-27 support: - chrome: 20 - chrome_android: 42 - edge: 14 - firefox: 22 - firefox_android: 22 - safari: 7 - safari_ios: 16.4 + chrome: "20" + chrome_android: "42" + edge: "14" + firefox: "22" + firefox_android: "22" + safari: "7" + safari_ios: "16.4" diff --git a/features/notifications.yml.dist b/features/notifications.yml.dist index e1f9755598f..9f3a8157c2d 100644 --- a/features/notifications.yml.dist +++ b/features/notifications.yml.dist @@ -4,8 +4,11 @@ status: baseline: false support: - chrome: "56" - edge: "79" + chrome: "20" + edge: "14" + firefox: "22" + firefox_android: "22" + safari: "7" compat_features: # baseline: low # baseline_low_date: 2023-03-27 @@ -53,6 +56,7 @@ compat_features: # safari: "16" - api.ServiceWorkerGlobalScope.notificationclose_event + # ⬇️ Same status as overall feature ⬇️ # baseline: false # support: # chrome: "20"