15:39:53 RRSAgent has joined #css 15:39:57 logging to https://www.w3.org/2026/03/31-css-irc 15:39:57 RRSAgent, make logs Public 15:39:58 Meeting: Cascading Style Sheets (CSS) Working Group Teleconference 15:49:00 liminzhu has joined #css 15:50:27 astearns has changed the topic to: agenda: https://github.com/orgs/w3c/projects/232/views/1 15:51:34 hoch has joined #css 15:52:49 flackr has joined #css 15:55:52 dshin-moz has joined #css 15:56:31 dshin-moz has left #css 15:56:46 dshin has joined #css 16:00:33 Kurt has joined #css 16:00:37 we’ll likely start in 10-15 mins. Still seeing some local folks parking and coming in 16:01:12 present+ 16:02:46 present+ 16:03:21 present+ 16:03:23 I can hear the room and see the room (weird angle) 16:03:26 Present+ 16:03:47 present+ 16:04:00 dbaron: could you say something so we can see if remote folks are audible? 16:04:08 present+ 16:04:16 Rossen has joined #css 16:04:35 astearns, done, did you hear? 16:04:53 (and flackr heard me and answered, too) 16:05:01 iank_ has joined #css 16:05:08 my bad, i'm remote, i thought you were someone in the room asking 16:05:32 no, it's useful confirmation that the video call works -- just seems like the room can't hear the call yet, perhaps 16:06:21 present+ 16:06:30 present+ 16:06:32 present+ 16:07:02 present+ 16:07:10 present+ 16:07:42 present+ 16:07:47 present+ 16:07:52 astearns, can you hear the remote folks? 16:08:18 yes (at least you) 16:08:34 oriol has joined #css 16:08:47

Meeting Start!

16:08:51 present+ 16:08:55 ScribeNick: TabAtkins 16:09:18 present+ 16:09:53 present+ 16:10:03 Oriol Brufau, Igalia 16:10:07 present+ 16:10:47 present+ 16:10:47 Emilio Cobos, Mozilla 16:10:49 audio was pretty weak until reaching florian, but seems good from florian through about alison maher, and then faded a little at the end 16:10:49 present+ 16:10:52 Elika Etemad aka fantasai, Apple 16:11:18 Ian Kilpatrick, Google Chrome 16:11:29 Rachel Andrew, Google Chrome 16:11:55 Vladimir Levin, Google Chrome 16:12:06 Alan Stearns, Adobe 16:12:16 github-bot, take up https://github.com/w3c/csswg-drafts/issues/13728 16:12:17 Topic: Proposal: Declarative Web Haptics 16:12:17 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/13728 16:12:45 present+ 16:13:28 liminzhu: wanna talk about the new Web Haptics proposal 16:13:36 Yehonatan Daniv, Wix 16:13:40 liminzhu: gonna go thru the explainer, and ask som eopen questions i want feedback on 16:13:45 liminzhu: free free to ask questions 16:13:51 explainer link: https://github.com/w3c/csswg-drafts/issues/13728 16:13:55 liminzhu: to set the stage, folks are somewaht familiar with haptics 16:13:59 Chris Lilley, W3C 16:14:00 liminzhu: every os has it to an extent 16:14:03 present+ 16:14:10 liminzhu: scrolling thru date-time picker, docking windows, etc 16:14:18 liminzhu: haptics adds grounding and interest to the user epxerience 16:14:23 liminzhu: and more haptics-capable devices 16:14:38 liminzhu: right now we only have navigator.vibrate() 16:14:43 liminzhu: barely supported anywhere 16:14:49 liminzhu: so not something webdevs can rely on 16:14:58 liminzhu: it also takes a raw pattern array, as a webdev i have to handwrite the pattern 16:15:01 liminzhu: a hassle 16:15:16 liminzhu: it's also just JS, can't do it declaratively to get easier authoring and lower latency 16:15:24 liminzhu: so i'm proposing a new haptics ui that's sematnics-based 16:15:35 liminzhu: instead of expressing a pattern, you say th eintended effect. a tick, etc 16:15:45 liminzhu: UA maps intent to what the hardware wants to express it as 16:15:54 liminzhu: have a declarative form, css, and an imperative in JS 16:15:58 Rossen has joined #css 16:16:04 smfr has joined #css 16:16:08 liminzhu: covers all the places where css doesn't cover well 16:16:17 liminzhu: gonna focus on the css side today but i'll intro the js one too 16:16:22 antonp has joined #css 16:16:30 lea has joined #css 16:16:37 liminzhu: in goals, wanna get a standard cross-platform haptics capability, low latencywithout js 16:16:53 liminzhu: non-goal, not guarantee haptics are identical across platforms. UAs can decide the best native3 way to epxress intents 16:16:55 present+ 16:17:22 liminzhu: we're also scopign to *reactive* haptics, direct response to user actions rather than long-term notification-style haptics to *gian* attention 16:17:32 liminzhu: also not targetting specialized hardware, too complex right now 16:17:45 liminzhu: talking thru the two parameters, an effect and an optional intensity 16:17:56 liminzhu: effect is a predefined list of effects that the UA will map to hardware 16:18:03 liminzhu: 'hint' is a light subtle cue 16:18:10 liminzhu: 'edge' is a stronger boudnary signal 16:18:23 liminzhu: 'tick' is a firm pulse like when scrolling a date-time picker 16:18:23 q? 16:18:29 liminzhu: 'align' when snapping shapes, etc 16:18:34 q? 16:18:36 liminzhu: crisp confirmation two things are locking together 16:18:59 liminzhu: this table shows some guidelines for how various OSes can map the hints to existing effects 16:19:13 liminzhu: Intensity is a 0-1 values. it compounds with system-level intensity. 16:19:24 SebastianZ has joined #css 16:19:36 liminzhu: imperative API is is `navigator.playHaptics(effect, intensity)` 16:19:53 liminzhu: note that it doesn't return a signal on whether it played or not. shoudl alleviate some fingerprinting 16:20:02 liminzhu: and it's intended to be an optional upgrade, not something you depend on 16:20:20 liminzhu: 'haptic-feedback' property: effect intensity? 16:20:38 liminzhu: can do `button:active { haptic-feedback: align; }` etc 16:21:02 liminzhu: i don't think there's any existing css mechanism where something fires for some pseudoclass changes but not all 16:21:18 liminzhu: but for haptics it probably only makes sense to fire for user-behavior ones 16:21:20 q+ 16:21:23 liminzhu: not meaningful for :first-child or whatever 16:21:26 liminzhu: i'll get to that later 16:21:27 q+ 16:21:32 sgill_ has joined #css 16:21:40 liminzhu: there's another alt form we're thinking about mapping haptics to transitions, etc 16:21:42 Probably just fire it when we fire a transition...? 16:21:45 liminzhu: so q about which appraoch 16:21:47 is this analogous to animations firing on pseudo-class activation? 16:21:47 (yes) 16:22:03 liminzhu: also, `scroll-snap-haptic: effect intensity?` 16:22:09 liminzhu: triggers each time a snap happens 16:22:27 liminzhu: getting a tick when scrolling past stories on insta, for example 16:22:28 q+ 16:22:37 liminzhu: property is on snap container, not child 16:22:46 liminzhu: kbabbitt also told me about :snapped pseudoclass in the works 16:23:05 liminzhu: so we might want to just use that instead, another open q 16:24:00 liminzhu: [technical difficulties] 16:24:11 q+ 16:24:46 yanling has joined #css 16:26:30 emilio: the use of pseudo-classes... i'd like to get a better sense of hwo this integrates with transitions 16:26:49 emilio: the current appraoch of, presumably when the element gets this property it triggers the feedback 16:27:06 emilio: i think that's fine, but it raises the question - if you apply this prop to a thousand elements at once, what happens 16:27:39 emilio: so it feels like that needs a little more fleshing out. you toggle a class, suddenly multiple elements get this property with opposing values 16:27:50 emilio: i suppose youd' limit to what's under the pointer... but multiple coudl be there too 16:28:32 liminzhu: [is back] 16:28:47 koji has joined #css 16:29:04 liminzhu has joined #css 16:29:40 liminzhu: so the q about pseudoclasses 16:29:45 liminzhu: it's a bit of a novel appraoch 16:29:51 liminzhu: an alternative is a transition-based haptics 16:30:01 liminzhu: you tie the haptics to a transition 16:30:14 liminzhu: fairly clean if you alreayd have a transition set up 16:30:14 arronei has joined #css 16:30:42 liminzhu: but this is also tying a haptic to a transition. if all i care about is a bit of a haptic on a button click, artificially i need to add a transition to the element. maybe not what i want 16:31:08 mjackson has joined #css 16:31:10 liminzhu: i'm open to either doing transitions as a replacement or a future extension, both are okay 16:31:22 liminzhu: the rest of the alternative 16:31:43 q+ 16:31:48 Zakim: html attributes, `