2025-08-01 [17:42:54.0185] That would be super old, but it was indeed discussed back when was proposed: https://lists.w3.org/Archives/Public/www-svg/2003May/0005.html [22:28:59.0048] Lea Verou: not sure, but HTML should probably define some of it eventually. [07:40:20.0822] Meghan Denny: thanks for dealing with the spam! [07:43:20.0752] Luke Warlow: did you consider giving ReflectEnum all the values needed instead? `ReflectEnum=(enumToUse, "anonymous", "anonymous", null)` or some such (probably incorrect example). [07:48:01.0105] Hmm I hadn't actually, would require slightly funky grammar but that's not insurmountable. Could also just have multiple extended attributes but still put those on the idl attribute. Problem then is you duplicate the values between usages of the same enum (fetch priority, cross origin) [07:49:18.0247] Oh yeah, hmm. [07:50:04.0977] Okay, so turning an enum into not-quite-an-enum still looks like the best course of action. [07:57:33.0952] The grammar to annotate the enum values is a trivial change (updated my parser easily enough), so provided we can work the prose out I think that design is probably best [08:06:30.0498] Luke Warlow: I thought you determined that didn't make much sense? Or is the idea that we either annotate a value or annotate the enum? And when we annotate the enum it signifies null or some such? [08:09:13.0405] > <@annevk:matrix.org> Luke Warlow: I thought you determined that didn't make much sense? Or is the idea that we either annotate a value or annotate the enum? And when we annotate the enum it signifies null or some such? Yeah either that or there might be a way to just make it fallback to the null / "" case in the event one isn't defined at all [08:11:04.0791] Perhaps my current syntax is what ends up being optimal but if we want the other one it is doable [08:20:48.0365] Looking at this again "no state" seems weird. I wonder if we can get rid of that eventually. But ignoring that, putting it always on the enum is probably the least confusing, even if it's a tad more verbose. [08:22:21.0917] And I guess they can always take a string that is either one of the enum values or a new state that cannot be expressed as keyword. [08:23:31.0970] Lol, we also have an actual "No state" (it's different). [08:24:06.0458] The as attribute does indeed use the "no state", but could also have used a "Default state" or some such and branched on that. [08:24:40.0085] And the as attribute might be the only attribute that builds on that oddity? Seems ripe for removal. [12:56:56.0990] np! happy to help out where i can :) 2025-08-04 [06:18:35.0173] Are the WHATNOT minutes (specifically last week's) published in somewhere shareable? cwilso annevk ? [09:19:55.0542] Noam Rosenthal: thanks for the reminder, sorted. [10:35:18.0068] Hi all, just a friendly reminder to post any discussion topics for this Thursday's joint CSSWG/WHATWG/OpenUI task force meeting to the meeting agenda issue: https://github.com/whatwg/html/issues/11483 2025-08-05 [01:24:24.0058] Are there any pending changes/proposals to do with the way streams work? [01:30:29.0134] I don't think this is what you mean, but https://github.com/whatwg/streams/pull/1283 added transformer.cancel, which hasn't been shipped in any major browser. [01:33:34.0250] Not what I was hoping for [01:39:14.0074] Being more specific would help people answer your question better. there are probably all kinds of stream-related proposals/issues on github that you could search or propose new ones [01:39:50.0908] Is there a structure guide somewhere on proposing new ones? [01:40:13.0623] What I'd like to change is to allow transform streams to be byob [01:45:56.0153] https://github.com/whatwg/streams/issues "New Issue" has a few templates [01:46:18.0047] ... and you can search the existing list in that URL [07:26:04.0169] Hi, I am told to ping [Domenic](https://matrix.to/#/@domenicdenicola:matrix.org) about this in the Ladybird chat, so I hope that’s ok. Does this in the WebIDL spec essentially mean that extended attributes are allowed on both sides of the `required` keyword for dictionary members? To me it seems the linked spec below can be expanded to `ExtendedAttributeList required TypeWithExtendedAttributes identifier ;` https://webidl.spec.whatwg.org/#prod-DictionaryMember [08:05:36.0312] Aron het Lam: that seems correct, but I suspect it also means you could have `[X] [X] Type ident;` in theory, which is also a bit weird. [08:08:38.0736] * Aron het Lam: that seems correct, but I suspect it also means you could have `[X] [X] Type ident;` in theory, which is also a bit weird. Hmm no it doesn't as that wouldn't match the production. [08:09:15.0327] * Aron het Lam: that seems correct, but I suspect it also means you could have `[X] [X] Type ident;` in theory, which is also a bit weird. Hmm no it doesn't as that wouldn't match the production. I suspect this came to be as part of making extended attributes associable with types, but that left a couple of weird corner cases. [10:47:08.0320] Hi [12:45:03.0670] In a byob readable, you may be given a buffer that that has an offset greater than zero and a length less than the remainder of the buffer. Aka a subsection of the underlying buffer. When transferring this buffer and/or responding with a new buffer, should one make sure the contents before and after your section of the buffer aren't mutated/missing? [12:46:00.0494] For example, if I `.respondWithNewView`, should I guarantee that any content that was before my offset in the buffer given matches that with the buffer I'm now passing back? 2025-08-06 [18:06:43.0950] iframes should be an empty element [20:49:36.0339] annevk: (or anybody else familiar with the Fetch API who might have a few minutes), about the part of the diff at https://github.com/mdn/content/pull/40643/files which adds an additional `cache.put`: Is that additional caching step at that point actually necessary or useful in practice? [20:51:14.0206] Or to put it more simply, is that actually the recommended way to use the API? (The way that MDN should be showing developers to use it) [21:22:35.0984] no like seriously, there's in todays era there's essentially no chance iframes don't run on a browser, and since the only purpose of iframes being full elements was to display an error message, nowadays they should be empty [21:22:46.0679] * no like seriously, in todays era there's essentially no chance iframes don't run on a browser, and since the only purpose of iframes being full elements was to display an error message, nowadays they should be empty [23:53:18.0197] sideshowbarker: I'm not sure. Jake Archibald would know. Or you could look at the service worker WHATWG uses. Hopefully that follows best practice somewhat. [03:23:13.0876] sideshowbarker: [I've replied](https://github.com/mdn/content/pull/40643#issuecomment-3159234101) [03:23:47.0914] Excellent — thanks much [03:25:59.0084] Garv: that's ideally true for a lot of elements. I mean, ideally, `/>` would have been meaningful outside of foreign content. The problem is, it's not something that can be changed about the platform now without severe breakages. Here's some history https://jakearchibald.com/2023/against-self-closing-tags-in-html/ [03:27:39.0756] keithamus: I could be wrong, but I think [this](https://html.spec.whatwg.org/multipage/form-elements.html#the-button-element:popover-target-attribute-activation-behavior:~:text=Otherwise%2C%20run%20the%20popover%20target%20attribute%20activation%20behavior%20given%20element%20and%20event's%20target.) doesn't work if the relevant nodes are in shadow DOM [03:28:05.0183] * keithamus: I could be wrong, but I think [this](https://html.spec.whatwg.org/multipage/form-elements.html#the-button-element:popover-target-attribute-activation-behavior:~:text=Otherwise%2C%20run%20the%20popover%20target%20attribute%20activation%20behavior%20given%20element%20and%20event's%20target.) doesn't work if the relevant nodes are in shadow DOM (related to popovers inside buttons) [03:28:23.0278] because of https://dom.spec.whatwg.org/#dispatching-events:~:text=true%3A-,Set,event%2E [03:28:41.0018] Garv: Specifically, what would you do with the examples of `` in the wild? According to your suggestion, the "fallback" would be rendered. Eg see [this example](https://jsbin.com/yacedit/edit?html,output) [03:28:55.0985] Prove me wrong 🙂 [03:29:26.0757] hmm [03:29:28.0965] * Garv: Specifically, what would you do with the examples of `` in the wild? According to your suggestion, the "fallback" would be rendered. Eg see [this example](https://jsbin.com/yacedit/edit?html,output). You see "Fallback" on the page there as a direct consequence of `` being an empty element. [03:29:58.0738] I couldn't immediately see tests using shadow DOM [03:30:01.0815] for this stuff [03:30:10.0038] * Garv: Specifically, what would you do with the examples of `` in the wild? According to your suggestion, the "fallback" would be rendered. Eg see [this example](https://jsbin.com/yacedit/edit?html,output). You see "Fallback" on the page there as a direct consequence of `` being an empty element - it can't have insides, so the "Fallback" is outside of it. Essentially, the `` is ignored. [03:30:14.0552] * I couldn't immediately find tests using shadow DOM [03:32:26.0658] how does one have a popover inside of a shadowroot referenced through the button though? [03:33:38.0417] As in: ``` data:text/html, ``` Doesn't work because `popoverTargetElement` will not accept that element as it is not a flat tree ancestor, right? [03:34:46.0717] keithamus: I was thinking the case when both button and popover are inside shadow dom [03:35:33.0682] under the same shadow root [03:41:55.0143] Okay so `data:text/html,
` works in Chrome but not with this patch, so they must do something different to the spec I suppose? [03:44:07.0769] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/html/forms/html_form_control_element.cc;l=440-446?q=html_form_control_element.c 🤔 [03:54:27.0272] I wonder what rawtarget is [03:54:38.0914] is that something which isn't cleared? [03:57:43.0165] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/dom/events/event.h;l=150-152?q=event.h indee [03:57:44.0951] * https://source.chromium.org/chromium/chromium/src/+/main:third\_party/blink/renderer/core/dom/events/event.h;l=150-152?q=event.h indeed [03:59:19.0997] I'm confused though, it's the exact same code as `target()`, and `SetTarget()` doesn't look to do anything particularly special [04:01:02.0880] hmm [04:08:26.0144] seems like a simpler way to resolve this might be to mark the default handled for an element that is a popover, so that by the time it propagates to the button click it would just ignore the click [04:08:58.0573] but I suppose the button might do something other than popovertarget... though I'm not sure that's warranted even [04:09:12.0893] For example if you had a popover in a submit button, should clicking the popover submit the form? [04:20:33.0232] Jake Archibald: are you planning to join WHATNOT tomorrow morning? I thought we could put patching on the table including some of the issues you've already raised around it [04:20:54.0230] (it was discussed a few weeks back but attendance was low) [04:21:34.0936] Noam Rosenthal: yeah, I'm up for that. I've not attended WHATNOT before. What's the best way to track it? [04:22:00.0605] (it might clash with my onboarding stuff, but I'll take a look) [04:22:21.0156] To be added to meeting invites? I'm not actually sure... cwilso ? [04:23:09.0246] Ah, I'll respond to https://github.com/whatwg/html/issues/11527 [04:25:18.0452] Oh wait, actually morning. Hah, I'm so used to that meaning 'afternoon' for me. Yeah I can make that [04:28:26.0987] Yup, I think we live at around ~25 minutes distance so timezone adjustments are less necessary :) [04:29:42.0469] https://github.com/whatwg/html/issues/11537 [04:44:54.0233] keithamus: does it work for Gecko if you use mOriginalTarget ? [05:14:11.0590] ...since I guess we don't end up clearing the target in this case, given that the final target is in light DOM [07:07:18.0333] smaug: it does indeed work. Fixed and added the requisite test case. 2025-08-07 [19:50:37.0194] I did a bit of testing myself and the answer seems to be yes. One shouldn't make sure that they mess with or lose the data outside of their subjection of their buffer. [23:16:06.0610] Domenic: is it intentional that `error` dispatches more often than `load` here: https://html.spec.whatwg.org/#execute-the-script-element [01:07:41.0684] annevk: I don't suppose you're about for whatnot [02:07:17.0354] Sorry for being late. I'm really bad at early meetings because they so rarely happen I'm usually fully absorbed by some other engineering task. [02:09:02.0254] We also need to figure out the chairing situation as initially these meetings were pitched with the idea of not putting additional burden on editors and while it's not that much work, I do feel it (and occasionally forget). Panos Astithas cwilso any ideas? [02:12:02.0054] If we had a rotation for chairing I'm happy to take part [02:23:50.0940] Sounds good. Apart from managing the discussion, the main thing is organizing the minutes, making sure the minutes are posted to this week's issue, and opening the issue for the following week. [02:36:03.0412] zcorpan: keithamus: for https://github.com/whatwg/html/pull/11413 should we also change the `hn` selectors in the UA style sheet to use `:heading(n)`? [02:37:19.0416] Oh wait, we already discussed that it seems back in June. Okay. I'll approve. But let's not forget that change when adding the attributes as it's important. [02:37:48.0224] It's equivalent now but would make a difference with `headingstart` or what it's called [02:38:41.0755] I think so, especially if we ship headingoffset [02:39:11.0308] Maybe after this lands, keithamus can rebase the attribute PR(s?) to include that. [02:41:47.0363] For those that are interested in the MoU we have with the W3C: https://github.com/w3c/whatwg-coord/issues/22 [03:05:12.0666] opened this for patching: https://github.com/whatwg/html/issues/11542 [03:09:49.0563] ... the other one has been open for 9 years (https://github.com/whatwg/html/issues/2142) so I posted on it some of the discussion from today :) [03:15:17.0510] annevk: given the WHATNOT discussion perhaps https://github.com/WICG/sanitizer-api/issues/190 needs to be reopened? [03:28:34.0714] Noam Rosenthal: that seems reasonable. Though it's very much out-of-scope for the work currently ongoing it does seem good to keep it in mind. [03:47:38.0024] > <@noamr:matrix.org> ... the other one has been open for 9 years (https://github.com/whatwg/html/issues/2142) so I posted on it some of the discussion from today :) Perhaps worth raising an issue on the trusted types spec too, for some discussion on a new createHTMLAsync poly method or some such [03:48:02.0956] * Perhaps worth raising an issue on the trusted types spec too, for some discussion on a new createHTMLAsync policy method or some such [03:48:31.0351] Yea absolutely, didn't get to it yet. Thanks! [04:16:53.0653] https://github.com/w3c/trusted-types/issues/594 2025-08-08 [22:07:41.0053] Are there any other popular matrix servers worth joining? Being in only one for a platform seems lonely. [02:05:55.0617] Is there any reason why WebIDL allows a return type for setters? https://webidl.spec.whatwg.org/#idl-indexed-properties https://drafts.css-houdini.org/css-typed-om-1/#csstransformvalue [02:06:43.0458] We are discussing this in https://bugzilla.mozilla.org/show_bug.cgi?id=1981764 [02:13:05.0121] /me filed https://github.com/whatwg/webidl/issues/1516 [02:13:31.0242] janvarga: I think emilio is correct and we should either enforce undefined or forbid a type declaration altogether if possible [02:14:36.0047] Sounds good. [02:16:55.0178] Interesting how this started spreading. I mean, allowed in WebIDL, then CSS Typed OM used that, then chrome and webkit copied that :) [02:18:04.0464] Well if it wasn't for that compiler warning about unused results we wouldn't have noticed either probably [02:18:24.0796] Yeah :) [02:18:54.0932] Sent https://github.com/w3c/css-houdini-drafts/pull/1143 to the typedom spec [02:19:00.0903] Even CSSUnparsedValue was ok, because the generated code used an out param ... [02:19:20.0709] Hah, so mostly by chance... [02:20:28.0089] So I guess, the way to go now, should be changing the WebIDL in Gecko to return undefined and maybe also provide a simple patch for WebIDL.py to assert that ? [02:21:22.0059] That sounds good to me. That way we hopefully identify other cases as well. [02:22:17.0638] I don't think WebKit has shipped CSS Typed OM btw, there were too many issues with that. [02:22:24.0579] * I don't think WebKit has shipped CSS Typed OM btw, there were too many issues with that specification. [02:22:30.0823] Hm [02:23:22.0170] annevk: epiphany does support it at least, can't check Safari r/n tho... [02:23:54.0426] `let t = new CSSTransformValue([new CSSTranslate(CSS.px(10), CSS.px(20))]); t.lenth` returns 1 [02:23:59.0849] in Safari on mac [02:24:17.0153] * `let t = new CSSTransformValue([new CSSTranslate(CSS.px(10), CSS.px(20))]); t.length` returns 1 [02:31:26.0876] janvarga: emilio: I misremembered. It's only CSSTypedOMColorEnabled that's disabled. [02:32:57.0156] I wanted to use that for ``, but alas. [02:33:39.0585] FWIW I only find one instance of named setters in Gecko (`Storage.setItem`, which does return `undefined`) [02:37:07.0682] Same on WebKit and Blink [02:37:25.0461] There's also `DOMStringMap`, `HTMLSelectElement`, and `HTMLOptionsCollection` per HTML, but they're all correct. [02:37:39.0868] Right but those are not named right? [02:38:07.0927] I was just thinking that, syntax wise, it might make sense to remove the return type for setters/deleters altogether [02:38:50.0491] But at that point may as well remove the name [02:39:01.0212] It seems only Storage would need to change? [02:39:08.0781] I wonder if that creates an ambiguity as then for a named setter it might look like it returns a setter type. [02:39:28.0093] (As in, add a `undefined setItem(...);` on top of the setter [02:39:38.0422] * (As in, add a `undefined setItem(...);` on top of the setter) [02:48:37.0483] I see, if that's really the only setter we have that might be reasonable, but it will make it inconsistent with getters, where I don't think we'd want to make such a change. So hmm. [02:50:11.0363] Right, my point is we'd remove named setters altogether [02:51:09.0708] Ok... It was just an idea, I don't have very strong opinions either way. It's just that restricting it in prose tends to not be super effective in my experience :) [02:52:31.0922] Yeah I guess named getters are used pretty often [04:22:16.0933] Interesting, Gecko has a WebIDL parser tests containing: ```interface SpecialMethodsCombination { getter deleter boolean (DOMString name); };``` [04:24:33.0256] Obviously changing boolean to undefined doesn't work because getters must have non-undefined return type, maybe this was the reason for having return type for setters and deleters [04:24:57.0305] * Interesting, Gecko has a WebIDL parser test containing: `interface SpecialMethodsCombination { getter deleter boolean (DOMString name); };` [10:50:56.0041] Yeah, the fact that setting *does* return a value, and WebIDL allows it, caused me to add that type to the setter. It made sense, at least to me. 2025-08-10 [23:10:49.0831] Anyone want to review https://github.com/speced/bikeshed/pull/3152? Is using the South Korean name for Korean okay? 2025-08-11 [17:56:50.0375] It is correct, as far as I (a non-native) and my partner (a native) can tell. [02:27:41.0580] <Štefan Balog (AI Worldwide Brain)> Hi [02:29:20.0870] <Štefan Balog (AI Worldwide Brain)> Life cycle and digital world databaze ipfs for IoT and AI Brain IT infrastrukture and World AI Brain softwear [06:18:11.0914] Noam Rosenthal: interested in reviewing https://github.com/web-platform-tests/wpt/pull/54227 and https://github.com/whatwg/fetch/pull/1847? [06:56:01.0140] Happy to take a look [06:57:56.0985] WebIDL q for the room: is there a specified precedence when the same key exists both in an interface and in "named properties"? [06:58:45.0690] (A web developer was noticing that the behavior of `localStorage.setItem = 'foo'; console.log(localStorage.setItem)` is not interoperable, and trying to decipher what's the spec-compliant one) [07:04:22.0761] Yes, there is [07:04:47.0811] I don't have time right now to work through the algorithm though :) [07:06:10.0948] webstorage/storage_functions_not_overwritten.window.js may be of interest [07:06:13.0664] in wpt [07:17:39.0640] Ha interesting. this is relevant indeed but does the opposite thing (it uses `localStorage.setItem("setItem", value)` rather than `localStorage.setItem = value)` [07:22:11.0991] If you write a test for the other case, I'll try to review 😇 [07:23:20.0639] I think I still need to find the spec bit to reason for what the right result is :) Will investigate. Thanks! [07:46:46.0603] Noam Rosenthal: https://webidl.spec.whatwg.org/#LegacyOverrideBuiltIns can be used to change the order, so `Storage` will behave as if that is not applied; couldn't find a change related to that [07:48:13.0962] Ha ok so for `Storage`, the following should apply: "the usual behavior, which is for named properties to be exposed only if there is no property with the same name on the object itself or somewhere on its prototype chain." [07:48:22.0620] I think so, yes [07:49:20.0925] I vaguely remember a former Googler making a point about this on the WHATWG mailing list, so surprising to see that Chrome has a bug here [07:50:11.0720] I think actually chrome does the right thing here and Gecko/WebKit are in the wrong [07:50:55.0869] `localStorage.setItem = 1234; console.log(localStorage.getItem("setItem"))` should return null according to this IIUC. It returns null on chrome but 1234 on FF/Safari [07:52:16.0847] but I guess in this case it's slightly vague in the spec whether a named property that wasn't set yet is "exposed" [07:54:20.0261] I think in that case https://webidl.spec.whatwg.org/#legacy-platform-object-set applies since it implements setter? Not a 100% sure though. [08:01:23.0540] Ah yes. Storage would fall under the definition of a "legacy platform object" because it's a non-global with named properties. So "setting" `setItem` on it would invoke that algorithm and the result would be 1234 and not `null`. Thanks! [10:12:10.0351] Hey gang. I'm out on leave for the next four weeks. I'm going to need someone to chair the WHATNOT meetings. Any takers? [10:35:11.0643] Happy to chair with the * of sometimes having unexpected family commitments at 5PM. [11:54:11.0083] (would be good to have backup, also I'm OOO on Sep. 4th) [14:45:55.0562] Perhaps we should cancel the form controls meeting on the 21st? It comes right as three all-day meetings end for CSS, so our participants will likely be entirely zonked out. 2025-08-12 [02:56:33.0554] When people make custom streams, do they actually make use of the queuing strategy? [08:24:27.0212] For people who were there at WHATNOT or interested in partial streaming updates/patching, I've updated the patching explainer and moved it out of the main README following the feedback: https://github.com/WICG/declarative-partial-updates/blob/main/patching-explainer.md 2025-08-13 [19:46:03.0424] is there any way to search through Web API specs for the reference to certain definition? I'm looking into the consumers of [incumbent](https://html.spec.whatwg.org/#incumbent) to see when and how it's used in what kind of situations, and now I'm wondering if it's also used from other specs. So far I find some references in the WebIDL spec [21:25:12.0478] there's webdex: https://dontcallmedom.github.io/webdex/i.html#incumbent%20global%20object%40%40html%25%25dfn [21:25:45.0703] great! thank you! [21:28:17.0337] hm, i wonder if bikeshed/wattsi's dfn panels should link to it as well [22:49:46.0138] TabAtkins Domenic ^^ seems like a pretty good idea [22:50:27.0650] That does sound good. File an issue on me to look at it later? [23:07:26.0102] The docs here say: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader/read > The promise will fulfill with a `value: undefined` if the stream has been cancelled. In this case the backing memory region of view is discarded and not returned to the caller (all previously read data in the view's buffer is lost). [23:07:51.0628] But for the life of me, I can't seem to produce any code that will actually get the returned value to be undefined. [23:09:17.0602] Doctor: usage questions are best asked on StackOverflow. [23:09:29.0014] Okay [04:01:05.0936] zcorpan: is there a strong reason for `:heading` to take `#` rather than `` as the equivalent pseudo-classes take? [04:10:07.0682] The tests also don't cover the parsing aspect too much. [04:17:01.0866] keithamus: do you know? [04:19:14.0530] It allows for simpler expressions like `:heading(1, 2, 3)` which otherwise might require authors to figure out the right an+b expression for (which otomh I can't do). [04:19:36.0258] I guess it would be `3n-2`? [04:21:10.0481] I spotted it myself, but my initial implementation would have supported `odd of *` as argument for instance. [04:21:22.0417] Oh, `-n+3`. Hopefully this serves as suitable demonstration as to why 😆 [04:22:12.0288] I think we should ensure that ` of ` expressions are parse errors. Thanks for calling that out. [04:23:34.0578] But you also get weird situations like `:heading(odd, even)` and we lived with `` just fine for the other pseudo-classes... [04:24:15.0152] `odd, even` doesn't seem too weird. It's effectively "all", no? [04:24:25.0277] It's an odd way to write `:heading` for sure. [04:49:10.0458] Maybe because the number of heading levels are not unbounded (like number of children), it's clearer to just list the numbers you want [04:54:59.0518] It adds quite a bit of complexity for not that much benefit. It seems we also lack serialization tests. [05:06:41.0648] As in, you could also write `:heading(1), :heading(2), :heading(3)` if you can't be bothered to write `-n+3`. [05:12:12.0422] Filed https://github.com/w3c/csswg-drafts/issues/12599 [08:37:51.0866] The "of *" stuff isn't part of an+b, that's a separate grammar term that the :nth-*() pseudos have [08:38:05.0201] * The "of\_" stuff isn't part of an+b, that's a separate grammar term that the :nth-_() pseudos have [08:38:10.0434] * The "of \_" stuff isn't part of an+b, that's a separate grammar term that the :nth-\_() pseudos have [08:39:51.0464] I don't think anyone said it was part of it. [09:12:32.0903] Ah, keithamus said "we should ensure that `of` expressions are parse errors"; I read that as being a comment about the spec. If it's just a comment about the test suite, then sure. 2025-08-14 [00:30:22.0669] Hi, I'm working on the WebDriver BiDi implementation in Firefox, and I'm looking at the `WebDriver BiDi download started` triggered from the HTML spec (step 5.4.4 of https://html.spec.whatwg.org/#attempt-to-populate-the-history-entry's-document). I have a couple of questions around this (spawned from https://github.com/w3c/webdriver-bidi/issues/980). First, do I understand correctly that this is not triggered when users click on a link with a `download` attribute? (which goes through https://html.spec.whatwg.org/#downloading-hyperlinks). Then if that's correct, I would like to change this so that we also trigger the BiDi hook in case of a `download` attribute. But then I'm not sure there would be a navigation id relevant to send to BiDi in this case? (I can also file an issue on GitHub if preferable to discuss about this) [00:35:24.0047] Julian Descottes: there's an existing issue of the `download` attribute not being described in terms of the navigate algorithm. That would fix your issue. Are there other WebDriver callbacks that happen before or after this is called that also require the navigation ID? Because if not I suppose we could just generate a synthetic one in the `download` attribute algorithm as a workaround for now, but it's not great overall. [00:37:37.0948] annevk: ok, great. And no the navigation id from this particular event is not really meant to be reused or shared with other events, it's more for completeness. So the workaround would be fine, but we could also make it optional on the BiDi side and omit the info until the HTML spec is fixed. [00:38:02.0243] do you have a link to the issue about the download attribute? [00:44:03.0030] Julian Descottes: https://github.com/whatwg/html/issues/5548 might be the most canonical one, but there's several. 😅 [02:39:16.0020] annevk: OK if I resurrect https://github.com/whatwg/html/pull/2480 ? [02:42:24.0580] zcorpan: [02:42:32.0590] * zcorpan: please! [02:43:59.0986] annevk: do you remember details of this comment? https://github.com/mozilla/standards-positions/issues/466#issuecomment-745120322 Is the no-referrer-based redaction not sufficient? [02:50:33.0661] zcorpan: I think if the redaction is based on the policies of the embedding elements (with their node document policies as fallback) it's probably good. (Modulo the debate as to whether an HTTP-level policy needs to override, but that can probably be kept as its own issue that might impact the behavior here down the line.) [02:57:26.0685] zcorpan: ah > This is even further complicated when an embedded site is navigated as the site being navigated to would never know about its parent (other than that one exists). is a case where we start exposing more information and also more strongly conveys that referrer policy now has this dual purpose. I think that's probably all okay though and it's relatively straightforward to follow. [02:59:31.0925] zcorpan: my PR seems wrong in that it stores the referrer rather than some computed version of the referrer policy. [03:00:22.0399] annevk: OK thanks. I'll start with rebasing [06:08:52.0304] Hmm, no spec preview in https://github.com/whatwg/html/pull/11560 [13:44:45.0166] zcorpan: I wrote a draft blog post about repeating `sizes` within `picture` (and the `sizes=auto` special case, and why it should be extended). Any thoughts/feedback before I polish & publish? https://gist.github.com/eeeps/1ed57ba4c16c61e5ec6e9400d242da28 2025-08-15 [00:21:02.0399] Eric Portis (he/him): LGTM [00:24:48.0032] I guess we should revive https://github.com/whatwg/html/pull/6695 cc Jake Archibald [01:18:04.0125] Hmm, why does locking an issue restrict it to people with write access. That's kinda prohibitive. Would be nice if there was a "has engaged with this organization prior to this issue" variant. [01:44:06.0658] Well, the XSLT issue is locked to people with write access unfortunately. Can't be reading that all day. [03:58:25.0207] Hah, yeah. I'll get that PR up to date. [05:03:05.0167] Filing my yearly complaint about the HTML spec's wrapping making it hard to search [05:03:12.0180] * Filing my yearly-ish complaint about the HTML spec's wrapping making it hard to search [05:04:58.0007] (I make myself a version without so many linebreaks, just for ease of searching.) [05:19:47.0811] annevk: writing tests now for styling of `:heading(n)`, I'm confronted with: should the default styles for `:heading(7..9)` also be tweaked? We could simply set them to the same has `:heading(6)` or something? [05:20:07.0848] Feels weird that `:heading(7)` is now larger than `:heading(6)` [05:22:17.0492] keithamus: ah, good point. Matching 6 seems reasonable, but not sure if that would violate some guidelines. [05:22:40.0326] keithamus: maybe as part of adding `headingoffset` [05:22:53.0543] zcorpan: indeed [05:23:09.0681] (Adding that attribute is what we're discussing.) [05:25:45.0271] AFAIK there aren't guidelines on the visual size of a heading, only that they are in order. Anything close to looking like a guideline for each heading only mentions h1-h6... so I think we may be in slightly uncharted territory [05:32:10.0369] Making the text even smaller seems bad, it would be unreadable. Bold italic could work, but only gets us another level. Maybe alternating bold / bold+italic? Another thing for authors to "reset" though [05:51:53.0771] keithamus: I suggest we keep them bold, but give them all the same margins and font-size as `p`. [05:52:44.0469] keithamus: I guess this does raise the question as to whether we spell it `:heading(7, 8, 9)` or `:heading(7), ...`. Meh. [05:53:48.0581] n+7 [05:53:48.0657] I was going to hedge and spell it `:heading(7), ...` 😆 [05:54:39.0059] `:heading(7)` is valid whether settle on `` or `#` so it skirts the whole discussion/conclusion [05:54:55.0919] :nod: [05:57:36.0755] Same as `p` matches no other heading style, but same font-size as :heading(4). Not sure that's better than matching :heading(6) [06:04:24.0897] Oh, I didn't realize. Wow. None of those defaults are great then. [06:13:22.0959] zcorpan: https://html.spec.whatwg.org/multipage/images.html#sizes-attributes - if I say "if element has a sizes attribute", would that be false if the element had a `sizes` attribute but the value was invalid? [06:13:52.0904] Jake Archibald: no [06:14:04.0310] I'm concerned about the "A sizes attribute is an attribute with requirements defined in this section." followed by "If present, the value must be a valid source size list." [06:14:40.0426] So I was worried that it wouldn't 'have' one if it didn't meet the requirements [06:15:22.0506] It's the DOM definition of attribute being present [06:30:23.0426] annevk: I think we also want `headingReset` to be `true` when the Dialog is in the modal state. Whether or not the IDL reflects that I am unsure of, but I am sure we don't want to expect developers to manually add it so.... Do I add headingReset getter steps or do I add additional steps in the computed level steps? [06:47:00.0770] It feels like it shouldn't be getter steps, else `el.headingReset = el.headingReset` becomes weird [06:48:15.0732] I wonder if it's a bit too magic in general. [06:48:19.0393] Not sure that's a property we generally care about though. Hmm. [06:49:16.0602] I'm perfectly happy just adding something akin to `or inclsuiveAncestor is a dialog whose is modal is true` [06:49:24.0184] * I'm perfectly happy just adding something akin to `or inclusiveAncestor is a dialog whose is modal is true` [06:49:28.0536] I think we generally make the getter compute the actual state if we can. [06:50:13.0243] That does create weirdness for the case Jake mentions, but I think that's generally weird because we compute quite a bit. [06:52:24.0676] Interesting. Which other cases of this exist? I know stuff like `input.type = input.type` can set the attribute to "text" even if it was absent or invalid, but that seems fine (the default isn't contextual). `input.value = input.value` has side-effects, but… is that a good thing? `document.cookie` is a mess of course. [06:53:09.0686] Eh, I guess you're right, you can't assume `obj.prop = obj.prop` is 'safe' on the web [06:53:16.0714] probably `button.type` which is contextual [06:53:31.0969] `dialog.closedby` also [06:54:25.0001] Good points. Yeah, I formally retract my concern :D [06:54:34.0224] * Good points. Yeah, I formally retract my concern 😁 [06:55:14.0528] Given `button.type`, `headingReset` should be computed [07:06:27.0568] Here's with implicit font size of `1em` for 7-9 [07:06:47.0759] html.css: ``` :heading(7), :heading(8), :heading(9) { margin-block: 1em; } ``` [07:10:48.0881] keithamus: that certainly has meme potential. Matching h6 is probably better then? (Or we don't support >6 in HTML, but I suspect that will also make people upset even though some (one?) screen readers reportedly treat >6 as 1.) [07:15:23.0931] yes I think so [07:44:20.0746] This all begs the question... `` when?? [07:47:37.0486] zcorpan: what do you think in terms of `source.sizes` if it has no `sizes` attr, but the related `img` does? [07:52:16.0022] so if `dialog` doesn't have a content attribute of `headingreset`, it can return true if `is modal` is true? [07:52:26.0853] But if it has a content attribute it must respect it? [07:53:07.0471] This is effectively the same though, as it's a boolean attribute - so the presence of it dictates is truthiness. I don't think you can set it to a value which would represent false? [07:57:47.0683] Correct [07:58:50.0778] In terms of spec, I'd write it as if modals force heading resetting [10:42:35.0922] keithamus: it seems weird if it only resets while it's in the modal state because that means if you open it another way the headings would have a different level. [10:42:54.0015] keithamus: that makes it effectively depend on an API call. I don't think that's good. [10:43:41.0479] > <@annevk:matrix.org> keithamus: it seems weird if it only resets while it's in the modal state because that means if you open it another way the headings would have a different level. I think that’s right though. A dialog which is not modal should have the document heading structure. A modal dialog should have its own discrete heading structure. [10:44:52.0168] I think we even have examples where calling both showModel and show are okay. It would be extremely confusing I think to have those end up with different heading levels. [10:53:58.0935] We can discuss it, but I think it would be better if we don't add special heading reset semantics anywhere. Just make people request it explicitly as an expert feature. (Maybe if some element down the line clearly calls for it we can reconsider, but dialog in its current form isn't quite it I think.) [10:56:54.0081] > <@annevk:matrix.org> We can discuss it, but I think it would be better if we don't add special heading reset semantics anywhere. Just make people request it explicitly as an expert feature. (Maybe if some element down the line clearly calls for it we can reconsider, but dialog in its current form isn't quite it I think.) I disagree. The headingreset attribute was precisely carved out for modals, which need to have an h1 title - I think this is actually a wcag recommendation IIRC. I think if there was ever an element that would have implicit headingreset, it would be a modal dialog. [10:57:23.0206] But we don't have such an element. [10:57:33.0005] And you can already use `

` there if you need it. [10:57:58.0593] This is the point, you won’t be able to. You’d have to manually add headingreset to your dialogs. [10:59:24.0804] I could see adding it to dialog elements, period, but having heading levels change depend on the state seems bad. [10:59:39.0363] * I could see adding it to dialog elements, period, but having heading levels depend on the state seems bad. [11:00:12.0397] I agree it’s not nice but I don’t think either adding it to all dialogs, or not adding it to any, result in a better situation for users. [11:01:13.0223] If developers have to opt in to headingreset on modals then it becomes another thing that - if missed - becomes detrimental to users. If developers have to opt out by adding hesdinglevel=N it might negate the benefit of the feature (because they’d have to figure out the N which is sometimes not possible). [11:03:18.0878] I think it's also bad for users if the outline of the document ends up shifting when they open a dialog. [11:03:37.0601] It does anyway. The entire page becomes inert. [11:04:39.0772] That's an interaction thing. I'm talking about the semantics on which you might build new UIs and such. [11:04:44.0362] I think none of the options are great but IMO adding to just modals is confusing for developers but the best option for users. Adding to all dialogs by default is the worst option because it’s wrong for users and difficult to workaround for users. If we really must then I suppose leaving it for the developer to add headingreset is better than forcing it all the time but it is a distant second imo. [11:06:02.0649] I don’t understand your point about semantics for new UIs. [11:08:59.0405] I don't think the semantics of the document should change based on the state of a control. What :heading(x) matches should stay consistent throughout. [13:32:59.0995] If you have the same element that can be in both modal and non-modal state in the context of the same document, would you expect it to have different heading styles/behavior based on that modal state, or would the author put headingreset on that particular so that both cases appear the same? [13:33:27.0523] keithamus: ^ [13:37:03.0212] > <@noamr:matrix.org> If you have the same element that can be in both modal and non-modal state in the context of the same document, would you expect it to have different heading styles/behavior based on that modal state, or would the author put headingreset on that particular so that both cases appear the same? I struggle to imagine a case where a dialog might become modal. It seems to me it is a single element that expresses two concepts. [13:37:22.0165] If you have an example I’d love to see it. Not trying to skirt the question. [13:38:46.0270] But I suppose I would expect the heading structure to change. When modal it’s effectively its own page so having a heading structure that starts at 1 so a user can “reach back” to the root heading could be useful. [13:40:44.0703] hmm let's say you have a design system component for error notifications based on dialogs, with a `` element. Whether that dialog is shown in a modal way or not depends on which error it is and the context [13:45:01.0958] I would find it surprising that showModal() changes things not to do with interactivity... but perhaps we can make this behavior feel a bit more explicit by having headingreset="when-modal" or "auto" or some such that hints that headingreset is a product of state [14:00:42.0540] if this use case is not interesting and I *always* intend to use a particular element as a modal, perhaps putting a headingreset on it is not a bad way to express in an explicit intent of using it as a modal [14:01:03.0111] * if this use case is not interesting and I _always_ intend to use a particular \ element as a modal, perhaps putting a headingreset on it is not a bad way to express an explicit intent of using it as a modal in the future 2025-08-17 [09:35:42.0091] hi [09:38:36.0758] is it valid for `text-decoration: underline` to be broken into different hights? [10:27:05.0835] ok i noticed that it's not valid by the spec