2024-07-01 [00:52:09.0457] Kaiido: that's the result of partitioning: https://privacycg.github.io/storage-partitioning/ [00:53:03.0589] Kaiido: coupled with popups being an odd exception of sorts that we'll hopefully be able to address in some way [01:51:08.0564] annevk: Thanks. Would you have time to compose an answer there? While I could link to https://github.com/whatwg/html/issues/5803 I don't feel confident enough to explain in which case this partitioning happens. [08:25:43.0855] Noam Rosenthal: I'm not really sure what you're trying to say in https://github.com/WICG/scroll-to-text-fragment/issues/234#issuecomment-2200440415 [08:27:09.0243] annevk: I'm saying that if a site adds text fragment to a URL, it's not up to the web platform to hide it from scripts [08:27:35.0822] ... mainly because it's not feasible to do it in a non-leaky manner [08:28:16.0269] (the navigation timing bug is not the important bit here) [08:28:26.0418] Noam Rosenthal: how does it leak today? [08:28:43.0376] annevk: copy the link to another browser? [08:28:59.0461] Noam Rosenthal: how does that leak it to script? [08:29:09.0845] the other browsers don't hide it [08:29:38.0200] you have to assume all browsers implement the text fragment feature for this hiding property to work [08:31:30.0168] I don't think Gecko not implementing (which I don't think will remain true for long) is sufficient to just remove all privacy properties [08:32:15.0765] annevk: it's also that some scripts use this for good reasons like enhancing the UI [08:35:45.0333] annevk: since scroll position is anyway exposed, this is kind of a weird feature where the web page knows something about where it was scrolled to and can infer things about it but has to go about it in non-straightforward ways [08:38:39.0931] All of that was known when the feature was designed. Doesn't seem like there's enough here to revisit that. [08:40:07.0665] Did you discuss this with Google Search? Cause I'm pretty certain they care about these properties as well. [08:41:30.0434] annevk: agreed, I should get back to the internal conversation about this before proceeding the external one. [09:12:41.0270] annevk: context for this for me is that fixing the navigation timing bug was assigned to me a while back and we got a lot of push back about it breaking existing stuff that relies on that behavior... so I want to make sure we're doing the right thing by hiding the fragment in the first place. If it reaches consensus I think taking that backwards-compat hit would be fine. [12:23:33.0752] > <@annevk:matrix.org> ljharb: I think it only ends up impacting a couple of algorithms, nothing downstream put up https://github.com/whatwg/webidl/pull/1415 and https://github.com/whatwg/html/pull/10450, pls lmk what more i need to do :-) 2024-07-02 [22:18:04.0763] Noam Rosenthal: I double checked; WebKit would object to exposing that information as we think revealing the precise text an end user might be looking at too revealing [01:01:05.0476] > <@annevk:matrix.org> Noam Rosenthal: I double checked; WebKit would object to exposing that information as we think revealing the precise text an end user might be looking at too revealing Thanks for checking, let me discuss it internally [01:27:50.0783] annevk: that behavior in navigation timing also exists in Safari [01:28:21.0851] open https://www.gov.uk/passport-fees#:~:text=Fees%20for%20returning%20supporting%20documents and run `performance.getEntries()[0].name` [01:34:20.0074] Ouch, I should have double checked that. [01:35:48.0959] I guess this is not yet covered by WPT? [01:35:58.0032] annevk: all good, let's find a way where fixing the privacy issue doesn't create both a backwards compat issue *and* an interop issue [01:36:40.0527] annevk: no WPT yet. https://issues.chromium.org/issues/40136467 is the chromium bug [02:10:34.0847] annevk: About https://developer.mozilla.org/en-US/docs/Web/API/Request/cache#:~:text=If%20there%20is%20no%20match%2C%20the%20browser%20will%20respond%20with%20a%20504%20Gateway%20timeout%20status. > `only-if-cached` — The browser looks for a matching request in its HTTP cache. > - If there is a match, fresh or stale, it will be returned from the cache. > - **If there is no match, the browser will respond with a [504 Gateway timeout](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504) status.** Do UAs (any) actually do that? I’ve can’t recall the Fetch spec ever specifying that. Maybe it’s in some other spec? [02:14:03.0712] * annevk: About https://developer.mozilla.org/en-US/docs/Web/API/Request/cache#:~:text=If%20there%20is%20no%20match%2C%20the%20browser%20will%20respond%20with%20a%20504%20Gateway%20timeout%20status. > `only-if-cached` — The browser looks for a matching request in its HTTP cache. > > - If there is a match, fresh or stale, it will be returned from the cache. > - **If there is no match, the browser will respond with a [504 Gateway timeout](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504) status.** Do UAs (any) actually do that? I’ve can’t recall the Fetch spec ever specifying that. Maybe it’s in some other spec? Did the Fetch spec ever say it should return anything other than a network error? [02:14:22.0941] * annevk: About https://developer.mozilla.org/en-US/docs/Web/API/Request/cache#:~:text=If%20there%20is%20no%20match%2C%20the%20browser%20will%20respond%20with%20a%20504%20Gateway%20timeout%20status. > `only-if-cached` — The browser looks for a matching request in its HTTP cache. > > - If there is a match, fresh or stale, it will be returned from the cache. > - **If there is no match, the browser will respond with a [504 Gateway timeout](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504) status.** Do UAs (any) actually do that? I can’t recall the Fetch spec ever specifying that. Maybe it’s in some other spec? Did the Fetch spec ever say it should return anything other than a network error? [06:05:52.0715] What's happening with https://github.com/whatwg/html/pull/10022 ? [09:20:25.0331] TabAtkins: are you around? Should `` essentially require its value to be an "absolute color"? [09:28:07.0806] I'm not, I'm on a cruise ship right now. Ping Lea or Chris, or wait a week for me 2024-07-03 [03:58:21.0848] smaug: regarding https://github.com/whatwg/html/issues/9881 and your query on why we'd want to limit to custom elements, do you think having an API like `Element.prototype.connectedSignal()` would be a better fit? [05:16:17.0368] keithamus: that is what I first thought, but then realized that this might be just one part of some larger API. And I'm not sure what the scheduling should be here. Microtask? CEReaction? something else? [05:17:34.0304] There is also https://github.com/whatwg/dom/issues/533 [05:18:50.0915] I had prototyped out the elementinternals one as a CEReaction but microtask seems reasonable [05:21:30.0223] I'm quite strongly attached to the API being a signal as it's an ergonomic way to handle a lot of things like cancelling fetch/event listeners. The ideas in that issue seem to want to use the Observer pattern which to me feels "heavy handed" from an API ergonomics perspective. [05:25:34.0316] smaug: curious on how you see this as a larger API, what more do you think is needed? [05:27:33.0904] I could imagine at least also attribute removal triggering a signal [05:28:22.0597] It seems like there may be some appetite around a large API for learning when elements enter/leave a page, similar to MO but with more fine-grained filtering akin to something like SelectorObserver (e.g. https://github.com/whatwg/dom/issues/1225) But I think the two use cases seem orthogonal enough to explore options for both. [05:29:02.0547] but in general, this feels like a one of mutation event listener / mutation observer thingie [05:29:41.0738] So a suite of APIs for managing connectedness of already connected nodes? If it was on `Node` prototype then that could account for Attr nodes right? Is Attr still considered a useful API or should we steer away from it? [05:29:55.0904] no idea how it would work, but could it be something like node.signal("some filter") ? [05:30:21.0340] Where "some filter" is an enum of possible "reactions"? [05:30:30.0144] right [05:30:44.0377] I'd be happy with that. Fits my use case. [05:31:18.0246] However would something like `node.signal('connected')` returning an AbortSignal make sense? Perhaps no? Does it need another signal type? [05:36:22.0546] ("Abort" naming in the *Signal is unfortunate) [05:37:25.0711] I was thinking your case would be node.signal("disconnect") [05:38:02.0462] For sure, and that API definitely makes sense to me. It's the other reactions where returning an AbortSignal makes less sense. [05:39:19.0665] Not sure why disconnect would be special [05:39:32.0929] I agree it shouldn't be. [05:41:10.0292] It might make more sense for an API of this shape to return a Promise, but that's not tenable for my use case... unless we can have some way to turn a Promise into an AbortSignal [05:41:23.0374] It also binds us to a microtask over a CEReaction [05:41:25.0184] If mutation observer somehow supported disconnect/connect, could signal() take similar dictionary as observe(), but possibly without subtree? Hmm, no, that wouldn't be quite right. [05:44:13.0986] AbortPromise (extends Promise) from which you can get .signal() 🙂 That would be a bit weird [05:45:05.0635] I'd almost go so far as to suggest an event on the element itself but I know that enters into scary territory... [05:48:15.0884] Maybe it makes sense to keep each reaction a separate method in that case? You could have a `disconnectedSignal()` return `AbortSignal` then a `connectedSignal()` could return some future `HappySignal`. [15:43:10.0370] Bit of a long shot, but does anyone here have a direct line to Andreas Kling? He forgot to give us enough mod powers on the new ladybird discord and ... Well it's 1 am in Sweden. 2024-07-04 [20:50:27.0611] i'd love HTML people's thoughts on https://github.com/tc39/proposal-is-error/issues/9 [20:50:36.0970] * i'd love HTML people's thoughts on https://github.com/tc39/proposal-is-error/issues/9, in particular before the july plenary's agenda deadline [08:32:49.0457] Is WhatNot on this week? [08:51:00.0041] > <@lwarlow:igalia.com> Is WhatNot on this week? The meeting notes have an entry for today, so I think so :) [12:05:03.0164] annevk: I canceled this week's WHATNOT and I'm wondering what to do with the July 4 one. I'm inclined to skip since all of us US-based attendees won't be attending, but if enough European folks want to attend and you can facilitate, maybe it's worth keeping? [12:05:22.0734] Panos Astithas: I'll be around, let's keep it for now and I'll cancel/end early as needed [12:06:00.0996] Luke Warlow: See above ^^ [12:10:38.0399] (sorry thought the original message link/timestamp /and author/ would be included ~ these are from JUN 27, so worth checking again whether the plans are still in place.) 2024-07-05 [17:41:01.0747] > Elements are pushed onto the backup element queue during operations that affect the DOM without going through an API decorated with [CEReactions]. How can I find out what these APIs are that are not decorated with [CEReactions]? Could anyone provide some example of such an API? [17:41:11.0142] * > Elements are pushed onto the backup element queue during operations that affect the DOM without going through an API decorated with \[CEReactions\]. How can I find out what these APIs are that are not decorated with \[CEReactions\]? Could anyone provide some example of such an API? [17:42:36.0671] * > Elements are pushed onto the backup element queue during operations that affect the DOM without going through an API decorated with \[CEReactions\]. How can I find out what these APIs are that affect to the DOM and are not decorated with \[CEReactions\] ? Could anyone provide some example of such an API? [17:44:26.0861] * > Elements are pushed onto the backup element queue during operations that affect the DOM without going through an API decorated with \[CEReactions\]. How can I find out what these APIs are affect to the DOM and not decorated with \[CEReactions\] ? Could anyone provide some example of such an API? [01:01:49.0723] I think I did all the WHATNOT call follow-up stuff now. Panos Astithas if you notice something missing please let me know. [04:32:58.0092] Seems JSON has quite a few interop issues: https://www.mlsec.org/docs/2024b-asiaccs.pdf [04:57:51.0503] > our analysis shows that the effects of an imprecise specification can hardly be resolved at the implementation level [05:45:08.0935] Not entirely convinced by that part of the paper, but the interop issues seem real [05:46:25.0805] For instance, one of the references to back that up is https://seriot.ch/projects/parsing_json.html which doesn't consider the Ecma document and the main complaint is about it not defining things around limits, though I can see how for numbers that does present a bit of an ordeal [06:27:07.0265] I think it's quite telling that v8 and SpiderMonkey don't have interop issues according to their matrix (figure 6) [14:12:42.0074] dbaron: what is https://searchfox.org/mozilla-central/rev/4e0f4c612589c23344f22285520a44a3f45c9e6e/testing/web-platform/tests/html/semantics/interactive-elements/the-details-element/name-attribute.html#198-200 trying to test? [14:13:19.0952] That should, in theory, trigger more mutation events, since it is just calling setAttribute in another (mutation) event listener 2024-07-06 [02:34:00.0001] Hey everyone, I was searching for a website where I can learn some extra topics of JavaScript. Is there any website that has better and deeper content (from basics to advanced) in a sequential order? Your help is greatly appreciated 🙏🏻🙂 2024-07-07 [04:01:21.0055] Harsh Tiwari: I don't think you're in the right group :) This is where people who build web standards hang out to talk about specifics of doing that. You'd probably find much more comprehensive resources searching the web, podcasts, online courses, or relevant social network groups. [06:52:00.0678] > <@noamr:matrix.org> Harsh Tiwari: I don't think you're in the right group :) This is where people who build web standards hang out to talk about specifics of doing that. You'd probably find much more comprehensive resources searching the web, podcasts, online courses, or relevant social network groups. Got it 🙂 🙌🏻 2024-07-08 [04:23:44.0768] krosylight: how are push subscriptions scoped currently? An origin can in theory create infinite service workers. Would each of them be able to get a push subscription? Or is there some implementation-defined limit? [05:33:53.0216] > <@annevk:matrix.org> krosylight: how are push subscriptions scoped currently? An origin can in theory create infinite service workers. Would each of them be able to get a push subscription? Or is there some implementation-defined limit? I don't have an answer right now, I'll ask our push backend engineer. (I don't immediately see anything from the gecko side) [05:37:19.0219] krosylight: ta, will do the same [05:37:57.0731] krosylight: I plan on working on declarative web push again, so there will be some more activity until my vacation starts anyway [07:23:05.0937] Speaking of which, anyone here familiar with whether there's anything remotely like file signatures for JSON? Using a rather unique key is the best I've come up with thus far. [07:28:48.0474] for people using json-schema, they use `$schema` key to point to a URL of the accepted json-schema format [07:29:34.0135] maybe that's what you mean with a "rather unique key"? Even if a file has that special key, you'd still have to check that all keys and values are: present, not duplicate, of the right type etc. [07:32:06.0303] Hi, Push Engineer here. So, technically, a UserAgent could have as many subscriptions as there is numberspace in a UUID4. (Subscriptions are identified as "Channel IDs" or CHIDs). Push subscriptions are fairly cheap on the server side since at most they require adding a mostly empty row to a Bigtable database. The server then encrypts the UAID and CHID into the subscription URL and that's what you're getting back. Of course, having that many subscription updates will do frankly horrible things to the UA, which has to manage, decrypt, and process those subscriptions, so there's the very high likelihood that even if only a percentage of those subscriptions were active, you'd swamp the network and CPU for the UA. [07:33:05.0856] If you're interested, the code we use is [here](https://github.com/mozilla-services/autopush-rs/). It's in rust, with Python integration tests. [07:33:19.0384] It seems that only self-identifies schemas, but yeah, I guess something like that is what I mean. And yeah, it's clear all the validation still has to happen. [07:34:40.0752] But what about a website? A website can have many service workers (infinite, in fact) which means it could single-handedly DOS? That'd be bad, no? [07:36:53.0018] By DOS, what are you intending to DOS? Our push server? The UA? [07:38:55.0909] Not sure, maybe it doesn't really matter as it's all behind a permission anyway. But might be tricky for the end user to clean up if it goes bad and it's not anticipated. [07:39:24.0564] Push currently handles a ludicrous number of messages a minute. We are very free with 503 messages if we see a source generating a lot of messages, and even more generous with the backoff messages if we see some service ignoring the 503s. [07:39:41.0204] Ah, so you're thinking more on the UA side. [07:41:10.0618] Yeah, I guess so. Services already have to scale and deal with abuse so the additional angle of many registrations for a single origin prolly doesn't hurt them much. [07:47:30.0560] Ok, so here are a few odd scenarios that could happen: 1) Rogue site generates stupid number of ChannelIDs (push subscription endpoints). Each UA has to record the subscription info locally, so at some point there may be resource restrictions that it hits. Added bonus, if they're a mobile device, there's also a "daily check-in" that can occur which would make their device potentially useless while that happens. Eventually, they'd just reinstall the browser, I guess? 2) Rogue site generates small number of subscriptions that it then barrages the UA with (ala https://mozilla-services.github.io/WebPushDataTestPage/ ) Mind you, the user has to agree to at least setting things up, and each push message popup identifies the source. User then has to disable the notification permission using native controls. [07:49:46.0906] I mean, in a perfectly frictionless network filled with spherical cows, then I can see this as being a problem, but in reality, I think there will be a number of other factors at play. At most, the user uninstalls or resets their browser. Subscriptions are generally not synced by any of the browser publishers for A LOT of reasons, so the recovery will not cause the problem to happen, unless they do the same thing again. [07:50:38.0771] Yeah makes sense. I'm gonna ask around if we do anything, but I agree that things are prolly ok for the majority of cases. Thanks for the help! [07:50:54.0057] I also don't mean to dismiss your concern. It's very valid. FWIW, there are a few things I've seen in my monitoring that are sketchy as hell and I'd love to know more of what the heck those connections are doing. [07:51:43.0810] That said, PLEASE ask more questions like this. Poking at the protocol is really, really important and I absolutely welcome folk doing that. [07:53:15.0890] (Honestly? I'd be fine if the UA were to limit the number of push subscriptions to something, even if it were some arbitrary number like 256.) Like I said, the bulk of the work is more on the UA than the backend server. [09:13:54.0543] is this a reasonable place to talk about possible incongruency with web reality in webidl and/or dom? I asked a long-ish question to ms2ger, but he's out sick. It's entirely possible that my mental math is just wrong here [09:18:50.0122] Copying most of my question here, just in case it is an accurate read of the spec algorithms not reflecting the behaviour of most browsers Can you explain the logic in https://github.com/web-platform-tests/wpt/blob/master/dom/collections/HTMLCollection-supported-property-names.html#L114-L115 which results in this test being the expected behaviour? My read of this is: it's a Legacy platform object / https://webidl.spec.whatwg.org/#js-legacy-platform-objects with no unforgeables, so that simplifies things a lot. 114: define a property via https://webidl.spec.whatwg.org/#legacy-platform-object-defineownproperty P is a string and O supports named properties, we aren't a [Global] interface, P ("new-id2") is not unforgeable, thus we're in 2.1. creating is true (2.1) O does not implement [LegacyOverrideBuiltIns], so skip to 3. O does not implement [Global], so Desc.[[Configurable]] changes from false to true -- so we define an own configurable property with a value of 5 121: "new-id2" becomes a supported property name of O 124: LegacyPlatformObjectGetOwnProperty(O, P, false) --- 2.1. the result of the named property visibility algorithm is false (it's a supported property name, but we also have an own property) return OrdinaryGetOwnProperty(O, P) -- We get a descriptor with a [[Value]] of 5 and a [[Configurable]] of true, because of the stuff on 114 126: [[Delete]] of a legacy platform object (https://webidl.spec.whatwg.org/#legacy-platform-object-delete) The named property visibility algorithm is false again for the reasons lsited above O has an own property P 3.1 The property is configurable, becasue of the steps on line 114 3.2 deletion is successful, and the property is removed from O return true --- This is NOT what the test is expecting to happen (see line 133) 129: delete again, this time named property visibility returns true, and we have no named property deleter and thus return false -- Being in strict mode this time, we throw an exception (so this assertion would be successful) 133: We try to repeat the steps on line 124 --- However, because deletion was successful in line 126, this assertion fails (at least in my read through this) However, I think all the major browsers are passing the test. So does this mean the spec is wrong, or am I just misreading this in a dumb way? 2024-07-09 [20:36:34.0216] For text added with CSS `::after`/`::before`/`content` is there agreed-upon expected behavior for find-in-page? It’s not actually specified anywhere, right? Safari and Chrome find-in-page don’t match on it, but Firefox does. [01:07:41.0432] It's not specified. https://html.spec.whatwg.org/#find-in-page is all we have. [01:08:08.0310] Thanks for confirming [02:03:24.0133] So the opinion from backend: we don't have limit, and that's fine because adding a subscription is pretty cheap actually for backend and there has been no impactful abuse so far (there are other sketchy server behaviors that have more impact) [02:35:50.0064] keithamus: Thanks much for the merge [02:36:16.0186] * keithamus: Thanks much for [the merge](https://github.com/primer/css/pull/2624#event-13436505723) [02:36:31.0332] The journey isn’t over yet 😜. Still gotta integrate and hope it works well enough to not revert [02:36:56.0121] But thanks for pushing it! Would be a welcome improvement! [02:38:36.0026] cheers (and actually it had dropped off my radar a bit — until I got the bot message saying it’d been marked stale (after 60 days) and I only had 7 days to respond before it got closed…) [04:13:15.0973] When the parser spec has text like this, should insert link to something? [04:19:58.0534] Context is I'm trying to track down where the html parser calls the children changed steps of an element (I think it does but the more I look the more I'm not sure) [05:45:26.0974] > 121: "new-id2" becomes a supported property name of O This doesn't follow. Supported property names are predefined in some fashion. [05:47:45.0680] Luke Warlow: I don't think it currently does. And ideally we would link "insert" as well as "create" and "append" (and possibly more in that bit of text) [05:49:19.0447] (And this is definitely the right place to chat about this.) [05:51:01.0702] Yeah, makes sense for the server. See also the long thread with jrconlin above this one. Still need to figure out if we want to tie the Window entry point to origin though. But maybe that's good enough as a first step. [06:36:24.0388] my understanding is, in the case of HTMLCollection, the list of supported names maps to the list of nodes with a matching ID or name in the DOM, or subset of the DOM -- so adding the element to the DOM would alter that set, right? [07:03:00.0004] Oh, maybe I didn't look far enough ahead. That does sound correct, yes. [07:09:59.0870] Ah, I think you stumbled upon https://github.com/whatwg/webidl/issues/669 [07:11:24.0699] Do you want to fix it? You already did all the work justifying how it's tested in WPT today, but I'm also happy to take over I suppose as removing that step is fairly straightforward. 😅 [07:24:12.0915] Sure, I can find some time for that [10:57:05.0612] spam [10:57:19.0689] spam https://github.com/whatwg/webidl/issues/1417 [16:10:44.0848] > <@harshtiwari:matrix.org> Hey everyone, I was searching for a website where I can learn some extra topics of JavaScript. Is there any website that has better and deeper content (from basics to advanced) in a sequential order? Your help is greatly appreciated 🙏🏻🙂 The Mozilla Website is the authority for **everything** having to do with JavaScript. If you want something more tutorial I recommend downloading the O'Reilly "JavaScript: The Definitive Guide" by David Flanagan but that is not free. You can probably find a hard-copy of an earlier edition in your public library if you want to check it out. The 5th Edition does not cover the massive changes to the language since 2015. [16:35:28.0494] slightly random question: has anyone written down a retrospective of the evolution of web standards recently? [16:35:36.0561] e.g. WHATWG v W3C and how things resolved and evolved [16:35:44.0435] and how the cabal of browser vendors actually get stuff done these days? [16:36:12.0715] i'm trying to get the governance model right for Matrix and trying to debug how others have failed & succeeded. 2024-07-10 [17:37:21.0812] > <@matthew:matrix.org> slightly random question: has anyone written down a retrospective of the evolution of web standards recently? As far as the WHATWG evolution and core principles and history, I think the best thing is https://ln.hixie.ch/?start=1623051423, which Hixie wrote (retrospectively) just a few years back. That at least seems to be closest to what you’ve described you’re wanting to know about. [20:04:58.0599] That seems good for history, which is I think what you're asking. It has lots of "I'm not sure how things work these days", which if you're interested in you can fill in by browsing things like https://whatwg.org/working-mode and https://blog.whatwg.org/working-mode-changes [00:54:29.0578] perfect - thanks both [00:55:21.0133] that's even better than i could have hoped for in terms of docs :) [04:06:48.0110] > <@sideshowbarker:matrix.org> keithamus: Thanks much for [the merge](https://github.com/primer/css/pull/2624#event-13436505723) Should be in prod now sideshowbarker! [04:12:42.0118] > <@keithamus:matrix.org> Should be in prod now sideshowbarker! Beautiful — yup, can confirm that details auto-expand now works in Chrome for details in GH issues/PRs I’ll build from my WebKit PR branch to see the magic working there too [04:13:54.0569] jarhar: ⤴️ [08:34:32.0927] Oh, "create a fresh top-level traversable" nice. Though I wonder if this should have some more arguments so you can set userInvolvement? My use case is automatically opening a URL when an end user clicks a notification. What do you think Domenic? [08:35:03.0898] Anyway, really glad someone added that primitive (and exported it) as it seems to exactly match my use case. 2024-07-11 [19:59:29.0152] About Mutation Events: is Chrome going ahead with shipping this month with support completely removed, as planned? https://developer.chrome.com/blog/mutation-events-deprecation ← mfreed [20:55:06.0806] > <@annevk:matrix.org> Oh, "create a fresh top-level traversable" nice. Though I wonder if this should have some more arguments so you can set userInvolvement? > > My use case is automatically opening a URL when an end user clicks a notification. What do you think Domenic? In theory sounds reasonable, but in practice I'm not sure userInvolvement does anything when you're navigating from about:blank? [22:12:23.0733] Domenic: ah okay, I hadn't looked that far [22:13:07.0838] Domenic: although if this accurately represents an end user interaction perhaps it could be used by `Sec-Fetch-User` and text fragment navigations? [22:13:58.0574] If I have some data that’s in some encoding other than UTF8, but — under the mis-assumption that it _is_ UTF8-encode — I do some processing on it, to extract substrings as UTF-8: If the strings only have ASCII-range characters, then me assuming they are UTF8 will actually work for those ASCII-range characters in _some_ non-UT8 encodings, right? [22:14:26.0891] And if Yes, then for which other encodings _would_ that actually work? [22:14:45.0791] * If I have some data that’s in some encoding other than UTF8, but — under the mis-assumption that it _is_ UTF8-encoded — I do some processing on it, to extract substrings as UTF-8: If the strings only have ASCII-range characters, then me assuming they are UTF8 will actually work for those ASCII-range characters in _some_ non-UT8 encodings, right? [22:15:17.0314] sideshowbarker: only UTF-16 and iso-2022-jp are ASCII-incompatible, from the Encoding Standard [22:16:58.0932] > <@annevk:matrix.org> Domenic: although if this accurately represents an end user interaction perhaps it could be used by `Sec-Fetch-User` and text fragment navigations? True, that is an outstanding work item. https://github.com/w3c/webappsec-fetch-metadata/issues/71 https://github.com/whatwg/html/issues/5381 https://github.com/whatwg/html/issues/9133 [01:02:12.0387] I am sort of my way to the WHATNOT meeting but it seems Firefox Nightly + Google Meet do not get along with each other as of today? [01:04:07.0054] keithamus: are you joining? [01:09:57.0844] Yes! One minute [01:11:19.0446] User Error 🤐 [09:51:11.0275] I'm trying to untangle some XHTML/HTML5 heritage. I'm aware there's unresolved differences here, but wondering if there's an interop approach here that's recommended in the interim. In a nut shell, when using `document` to create elements for the current document, this creates Element instead of HTMLElement when executed in an XHTML document, despite the elements parsed from the server on the same document, being HTMLElement. The impact is that generic JavaScript code like `var dropDown = document.createElement('div'); dropDown.style.display` fails in XHTML context because Element.style is undefined. This works in Firefox but fails in Chrome/Safari. Even after attaching to the body, it remains an Element. [09:53:53.0814] I found a couple related issues like https://github.com/whatwg/dom/issues/643 , and https://github.com/whatwg/dom/issues/217, and open ones about un-merging HTMLDocument, but this seems to be something else. [09:55:19.0242] It seems like step 5 here appears to require this, but I imagine this would have been fixed already if there isn't some other interop issue here that I'm missing. https://dom.spec.whatwg.org/#dom-document-createelement [10:03:18.0154] are you able to verify in the network tab that the file is being served with `application/xhtml+xml` ? [12:54:30.0956] Hm.. well it was, but it isn't now. That might be it. So does this mean there is some kind of in-between mode where if the doctype/xml tag does XHTML, that informs JavaScript, but then the parser/DOM ignores that and just does HTML5 based on content type? [12:55:37.0391] Interesting, yeah, I have two different static file servers. One basic nodejs, and one python3 and the latter supports correct mime types for .xhtml out of the box. It all works correctly there. [12:56:27.0000] Meghan Denny: Thanks! That solves my mystery for now. It is an odd quirk for sure, but I can work around this for now. [14:44:57.0026] > <@sideshowbarker:matrix.org> About Mutation Events: is Chrome going ahead with shipping this month with support completely removed, as planned? https://developer.chrome.com/blog/mutation-events-deprecation ← mfreed Yes! It is set to be disabled at 100% starting with Chrome 127, which goes to stable around July 23. Pending, of course, any compat issues that pop up. 2024-07-12 [00:20:19.0113] Timo Tijhof: you can also use `document.createElementNS()` always [15:41:52.0764] is getting a bunch of +1s that should prolly be minimized [15:43:13.0504] I went ahead and locked it for now [15:44:33.0513] …and also Hide-ed all the comments as “off-topic” 2024-07-13 [00:32:37.0924] https://github.com/whatwg/encoding/issues/332 spam? [00:34:47.0197] Yeah, looks like — closed it [05:22:04.0608] i dont understand [05:24:40.0157] hi [05:25:25.0606] i dont understnd repo [08:32:18.0642] I am sure this isn't the right place, but if I wanted to propose an addition to CSS / +1 it if it already exists what would be the space for that? (the addition in question is a way to pause animated images without canvas hacks) [08:41:49.0732] easrng: https://github.com/w3c/csswg-drafts/issues [08:51:34.0219] Thanks! Looks like there is in fact a proposal for what I want (two actually, there's a dupe already) [15:23:13.0528] Is this a spec bug? https://github.com/LadybirdBrowser/ladybird/pull/616#pullrequestreview-2176509612 > The [XML serializing an Element node](https://w3c.github.io/DOM-Parsing/#xml-serializing-an-element-node) algorithm is (almost) directly [called](https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#the-innerhtml-property:fragment-serializing-algorithm-steps) from the innerHTML getter even though it serializes the outer XML... 2024-07-15 [17:30:39.0826] Is there any appetite to revisit what origins are supposed to be exposed via `document.ancestorOrigins` ? We've got an open PR to implement it in Ladybird, but I'm not sure whether there was any consensus as to what it should be doing from https://github.com/whatwg/html/issues/1918. Chrome and Safar seem to implement it, while Firefox does not [17:31:19.0076] er.. location.ancestorOrigins [17:36:21.0421] akaster: One thing to consider is: Somebody from the Ladybird project who’s familiar with that Ladybird PR could get it on the agenda for the next WHATNOT meeting/call by adding a comment to https://github.com/whatwg/html/issues/10471. That next call is on July 18th at 9am US/West. But if nobody else from Ladybird can be on the call, I can read up on the PR and could be on the call to talk about it. [17:36:56.0298] * akaster: One thing to consider is: Somebody from the Ladybird project who’s familiar with that Ladybird PR could get it on the agenda for the next WHATNOT meeting/call by adding a comment to https://github.com/whatwg/html/issues/10471. That next call is on July 18th at 9am US/West. But if nobody else from Ladybird can be on the call, I can read up on the PR and could be on myself to talk about it. [17:41:07.0225] Hmm. Sure. I've been meaning to figure out how to get us more involved in the standards processes anyway. I think we have quite a few open WhatWG-related issues laying around that might be worth aggregating into a list in our own issue tracker as well. [18:35:00.0082] akaster: If you want, I can make time to help with either or both of those (figuring out how to get more involved in standards processes, and aggregating the relevant issues). And I’d be happy to do it. I’m anyway looking for more ways I could contribute to the project — and it’d be a good fit for me, since I’m already pretty involved in the WHATWG. (And would also give me another reason to procrastinate further on debugging https://github.com/LadybirdBrowser/ladybird/issues/75 😆) [18:35:14.0736] * akaster: If you want, I can make time to help with either or both of those (figuring out how to get more involved in standards processes, and aggregating the relevant issues). And I’d be happy to do it. I’m anyway looking for more ways I could contribute to the project — and it’d be a good fit for me, since I’m already pretty involved in the WHATWG. (And would also give me another reason to procrastinate on debugging https://github.com/LadybirdBrowser/ladybird/issues/75 😆) [00:10:29.0251] akaster: I don't think there's an update on `ancestorOrigins`, but I think bz's concern around it exposing too much information still holds. There's talk about a header-based version of that feature that does a lot better in terms of information exposure: https://github.com/w3c/webappsec-fetch-metadata/issues/56 [01:10:50.0193] Hi, I was contemplating HTML entities and I realized that there are two entities, ≪⃒ and ≫⃒, whose UTF-8 expansions are longer than their ASCII representations (six bytes versus five bytes). Only these entities have this property. I realized this while writing an HTML parser in C, using constant string views to parse a document with no allocations and no copies. It seems to me that, in UTF-8, these entities and the mandate to replace U+0000 with U+FFFD are the only things preventing me from decoding inline HTML text in-place by mutating the buffer. I punt the replacement of nul bytes to the user, but because of ≪⃒ and ≫⃒, inline text is 20% longer in the worst case after expansion. Am I crazy, or is this a serious limitation? HTML is so close to being parseable in-place. I don't want to jump to the conclusion that these entities should be deprecated, but there would be a benefit. I'm tempted to ignore ≪⃒ and ≫⃒ just for this reason! [01:34:03.0702] Domenic: if you have a couple minutes could you look at https://github.com/whatwg/mimesniff/pull/192? I'd like to land it [01:36:06.0734] lynko: don't you have the same problem with decoding bytes to text? E.g., 0xFF has to become U+FFFD too. [01:39:36.0992] > <@annevk:matrix.org> lynko: don't you have the same problem with decoding bytes to text? E.g., 0xFF has to become U+FFFD too. Sure, but that's malformed input, and I pass it on just like a nul byte (it's up to the user to decide if conversion is necessary). ≪⃒ and ≫⃒ make it a problem for correct input too. [01:42:22.0434] How do you avoid allocations for creating nodes and such? [01:45:01.0020] There's one flat inout array for nodes, if the parser runs out of room it stops writing but still returns the number of nodes that were parsed. If your buffer was already big enough then it happens in one pass and doesn't trigger a reallocation, and even if it does, you know exactly how much room you need. The parser also always produces a valid hierarchy even if it gets cut off partway through [01:49:45.0505] I see, but that also means you have to keep the entire input file in memory as well, right? For a markup-heavy document I wonder if that's still going to be beneficial. But it's interesting for sure. [01:50:49.0829] If anyone hsivonen might have some thoughts about this, but not sure if he's around. [01:52:11.0054] It's kind of a specific use case, but I personally don't anticipate the need to parse files larger than I can store in memory. I do have some ideas about extending the API for streaming purposes with similar in-place properties... but it's beside the point [01:52:36.0201] I haven't previously noticed this property of the entity names, but I have noticed that replacing U+0000 with U+FFFD is rather unfortunate from the UTF-8 perspective. [01:52:58.0781] The answer is wilful violation :) [01:54:37.0050] lynko: Does modifying the buffer in place really help? That is, don't you need an API that can report the content of a text nodes as multiple API chunks anyway? Once you have that, referring to static memory that contains the entity expansion is workable. [01:55:47.0855] lynko: Can your tree builder side usefully hold onto text nodes that point to source data? Won't that mean retaining the buffer space for all the tags at presumably high cost? [01:57:35.0563] lynko: also, when entities resolve to shorter output, won't you have quadratic memmoves that defeat the benefit of avoiding copies? [01:59:01.0412] > <@hsivonen:mozilla.org> lynko: Does modifying the buffer in place really help? That is, don't you need an API that can report the content of a text nodes as multiple API chunks anyway? Once you have that, referring to static memory that contains the entity expansion is workable. If all I really want is decoded inline text, then I just want to compute that text. It's always a bonus not to have to find a new place to put it. [02:02:08.0493] > <@hsivonen:mozilla.org> lynko: Can your tree builder side usefully hold onto text nodes that point to source data? Won't that mean retaining the buffer space for all the tags at presumably high cost? Tags are 75% of a document in the worst case. I'll always have to store a tag's type (and attributes) somehow, so I just use a single string view and don't decode attributes, except for parsing validation. I'm not sure exactly how the tradeoff works out, but tag content is usually a much smaller portion... I'm guessing 10%. Another benefit besides memory locality is that this approach preserves tags' case, although I don't store views of the closing tag [02:03:41.0483] > <@hsivonen:mozilla.org> lynko: also, when entities resolve to shorter output, won't you have quadratic memmoves that defeat the benefit of avoiding copies? This can be done in O(n) where n is the length of the text, and it was already O(n). Also it only matters for documents with extreme amounts of entity references [02:05:13.0697] I see. I'm looking forward to seeing the results with the willful violation. I don't expect us to un-spec the two entities that have been there for a long time, despite them being niche, though. At least not without a use counter. [02:07:43.0189] > <@hsivonen:mozilla.org> I see. I'm looking forward to seeing the results with the willful violation. I don't expect us to un-spec the two entities that have been there for a long time, despite them being niche, though. At least not without a use counter. No no, I'm not suggesting U+FFFD should be changed. Too much momentum. And I wouldn't transmit HTML with nul bytes in it. This is for internal use, where I can optimize for correct input and retain control codes. [02:08:09.0958] Also note that parsers in browser engines store local names (of most elements and attributes) as atomized strings. It'd be interesting to see the memory and performance differences though. [02:14:07.0831] > <@annevk:matrix.org> Also note that parsers in browser engines store local names (of most elements and attributes) as atomized strings. It'd be interesting to see the memory and performance differences though. I doubt I could make a fair comparison. Browser engines have a lot more concerns than me, so they must have to make compromises of some sort. But you've given me a lot to think about. Short-string optimization and generating a new text storage buffer alongside the node array seems worth exploring. [02:15:57.0607] Domenic: thanks, follow-up request: https://github.com/web-platform-tests/wpt/pull/47002 [02:29:18.0973] One thing to notice is that if the input isn't held in memory, all significant text has to be copied no matter what. Hopefully a document is at least 90% significant. Standard tags only have to be scanned once to get their type. In place parsing is zero-copy, entity expansion is low-copy (guaranteed to be fewer copies than just copying all the significant text all the time), and entity expansion could be in-place except for the aforementioned entities. I think this is a legitimate use case for HTML that could broaden its applicability. [02:43:01.0319] ...Another thing to notice, which is a point against me, is that real-world documents are often heavily indented, easily over 50% insignificant whitespace... [02:47:37.0854] Hey, I'm going to propose some changes to how indirect `eval` and `new Function` work (https://github.com/tc39/ecma262/issues/3160, https://github.com/tc39/ecma262/pull/3374), so their behaviour only depends on their arguments and not on where their caller. Re-align `setTimeout`'s behaviour to `eval`'s behaviour will then need some changes to step 8.4.7 of https://html.spec.whatwg.org/#timer-initialisation-steps, aligning the HTML spec to what Chrome (and I _think_ Safari) did when I tested it. If anybody has opinions about it, please leave a comment on that GitHub issue :) [02:47:51.0516] * Hey, I'm going to propose some changes to how indirect `eval` and `new Function` work (https://github.com/tc39/ecma262/issues/3160, https://github.com/tc39/ecma262/pull/3374), so their behaviour only depends on their arguments and not on their caller. Re-align `setTimeout`'s behaviour to `eval`'s behaviour will then need some changes to step 8.4.7 of https://html.spec.whatwg.org/#timer-initialisation-steps, aligning the HTML spec to what Chrome (and I _think_ Safari) did when I tested it. If anybody has opinions about it, please leave a comment on that GitHub issue :) [04:01:42.0805] > <@annevk:matrix.org> akaster: I don't think there's an update on `ancestorOrigins`, but I think bz's concern around it exposing too much information still holds. There's talk about a header-based version of that feature that does a lot better in terms of information exposure: https://github.com/w3c/webappsec-fetch-metadata/issues/56 Hm. In that case, should I retract the request to discuss it at WHATNOT this Thursday? It sounds like not implementing it as Firefox does is probably the 'best' for user privacy until the other issues are worked out [04:08:33.0789] akaster: seems fine to bring up to see if anyone is interested in working on it [04:13:12.0401] nicolo-ribaudo: you don't actually say what Safari does [04:25:45.0902] I think safari uses the base URL of the entrypoint of the module graph. It's the only way I can explain the behaviour I see in https://github.com/nicolo-ribaudo/function-dynamic-scoping?tab=readme-ov-file#notes [04:38:40.0879] * I think safari uses the base URL of the entrypoint of the module graph for `eval`/`new Function`, and the base URL of the realm/document for `setTimeout`. It's the only way I can explain the behaviour I see in https://github.com/nicolo-ribaudo/function-dynamic-scoping?tab=readme-ov-file#notes [04:39:27.0719] Oh wow. [09:12:23.0782] Seems to be tracked in https://github.com/whatwg/html/issues/10478 btw [13:50:29.0060] Der weltweit führende Dating- Assistent https://www1.afego.life/v8L8OE 2024-07-16 [00:07:01.0891] Anyone familiar with the phonetic alphabet and wants to review this: https://github.com/whatwg/whatwg.org/pull/448? [00:07:32.0913] I'll merge it tomorrow if there's no further feedback [00:28:24.0719] They have "what" as rhyming with "lot" in both the UK and US pronunciations – I think at least in the US it's a lot more common to rhyme it with "cut" [00:28:34.0683] but other than that, it looks fine [00:34:31.0849] yeah those US transcriptions are not what I would expect [09:45:46.0420] I speak American English (midwestern dialect) and for me it's /wʌˀ/ [09:46:50.0306] /wʌt/ would probably be the best transcription but there are a few available here. https://en.wiktionary.org/wiki/what#Pronunciation [11:59:53.0295] somewhat related to https://github.com/whatwg/html/issues/10483 is there any interest in using function names for abstract operations like in ES as opposed to the current sentence ones (eg https://html.spec.whatwg.org/#convert-to-premultiplied) [12:00:34.0908] oh the fragment name is good for that one [12:03:38.0686] does the css property :has work for ::slotted? Any alternative for it? [13:51:00.0687] > <@annevk:matrix.org> Anyone familiar with the phonetic alphabet and wants to review this: https://github.com/whatwg/whatwg.org/pull/448? IPA is for people who don't know how these words are pronounced, i.e. non-English speakers. The purpose of a phonetic transcription would be for someone who can't see the obvious pronunciation because they haven't complete mastery. The most important part of the transcription is probably the A and T in "what", since anyone speaking English even as a second language is going to have a personal sense of the "wh" digraph. I think the [ɑ] vowel would be distracting to native speakers. Consider the "Dirty Hungarian Phrasebook" sketch from Monty Python. The Hungarian national says "Do you /wænt/ -- /wɑnt/ to come back to my place?" He corrects his pronunciation to something obviously wrong, and it's exactly the same pattern being used in this PR. https://www.youtube.com/watch?v=G6D1YI-41ao [16:22:13.0986] (also questions of phonemes v. allophones, especially with dialectical variation. in widely spoken English varieties, dialects largely don't affect phonemes.) [16:23:39.0400] https://en.wikipedia.org/wiki/Wine–whine_merger also makes "what" somewhat dialectical, and gets into question as to what "standard" en-GB or en-US even is, though for the majority of speakers the merger has occurred. [16:25:31.0670] I think my biggest question is whether the length markers are meaningful; I don't think there's any difference in vowel length between common en-gb and en-us within "what"? 2024-07-17 [17:01:34.0431] > <@gsnedders:mozilla.org> I think my biggest question is whether the length markers are meaningful; I don't think there's any difference in vowel length between common en-gb and en-us within "what"? Do you mean e.g. the /ɑː/ in /wɑːt/? [17:09:42.0125] You must be right since there's only one vowel sound in . If there could possibly be a meaning to vowel stress in a single-syllable word, it would have to be about its role in the cadence of a larger utterance. [17:15:19.0080] In Pink Floyd's "Us and Them" https://www.youtube.com/watch?v=HoLhKJuGhK0 David sings "And who'll deny it's what the fighting's all about?" You can hear the distinctive British [t] throughout the song, but in fact at 7:10 you can hear him sing "what" as /wɑɾ/, which isn't listed at all on Wiktionary! Oh well... There are more dialects in the British Isles than there are grains of sand on the beach. [18:02:26.0942] > <@meghanbun:matrix.org> somewhat related to https://github.com/whatwg/html/issues/10483 is there any interest in using function names for abstract operations like in ES as opposed to the current sentence ones (eg https://html.spec.whatwg.org/#convert-to-premultiplied) No, I think the function names are unnecessarily hard to read. [18:17:19.0315] in what way, arent they describing algorithms? [18:18:38.0153] https://dom.spec.whatwg.org/#concept-create-element is a better example of one [18:18:48.0478] I guess it’s more that they’re _naming_ the algorithms rather than _describing_ the algorithms. [18:19:23.0938] With the current prose style, the prose describes the algorithms in natural language. [18:20:14.0085] Replacing the prose description with just a name seems like a regression in expressiveness. [18:20:43.0377] At least it seems like a regression in readability. [18:22:16.0990] But I can understand that some would find the prose descriptions the algorithms are labeled with the be more unwieldy than having them labeled with short names. [18:24:50.0692] I guess it’s definitely more *idiosyncratic* for a spec to have callable prose-description labels for algorithms. I don’t actually know any other specs which do that, in places outside web-platform specs. [18:27:23.0715] But then, as far as that goes, there’s a lot of stuff the HTML spec does differently than most other specs. And I think there was a time when it really was _the_ only spec that did this callable-prose-description-label thing. But since that time, other web-platform specs have adopted the same style. (At least I _think_ HTML was the first to do it, in our world at least) [18:28:26.0695] * With the current callable prose-description-label style, the prose labels describe the algorithms in natural language. [18:28:52.0049] * Replacing the prose-description label with just a name seems like a regression in expressiveness. [18:29:04.0691] * But I can understand that some would find the prose descriptions the algorithms are labeled with to be more unwieldy than having them labeled with short names. [18:30:34.0309] > <@meghanbun:matrix.org> https://dom.spec.whatwg.org/#concept-create-element is a better example of one So how would that specific sentence then read if the callable part were replaced with a function-name style? [18:31:57.0653] `dom.CreateElement( document, localName, namespace, prefix?, is?, synchronousCustomElementsFlag? )` [18:33:55.0316] I see — but I mean also, how would the prose around it read. What would be the rest of the wording that precedes the algorithm below is that says what to do with the parameters? [18:36:51.0931] the algorithm itself would remain largely unchanged except for like step 4 would be something like > Let *definition* be the result of `html.LookupCustomElementDefinition( document, namespace, localName, is )` [18:37:33.0615] I see [18:37:41.0916] * the algorithm itself would remain largely unchanged except for step 4 would be something like > Let _definition_ be the result of `html.LookupCustomElementDefinition( document, namespace, localName, is )` [18:40:01.0937] https://webidl.spec.whatwg.org/#construct-a-callback-function does this for interaction with the ES spec [18:40:08.0060] But as far as the first sentence, I guess it would need to be something like the following? > The `dom.CreateElement( document, localName, namespace, prefix?, is?, synchronousCustomElementsFlag? )` algorithm must run the following steps: [18:40:12.0517] * https://webidl.spec.whatwg.org/#construct-a-callback-function does this style for interaction with the ES spec [18:40:36.0152] Or: > When `dom.CreateElement( document, localName, namespace, prefix?, is?, synchronousCustomElementsFlag? )` is called, the UA must run the following steps: [18:42:51.0888] yeah or > # `dom.CreateElement( document, localName, namespace, prefix?, is?, synchronousCustomElementsFlag? )` > When dom.CreateElement is called, the UA must run the following steps: [18:42:58.0919] * yeah or > #### `dom.CreateElement( document, localName, namespace, prefix?, is?, synchronousCustomElementsFlag? )` > > When dom.CreateElement is called, the UA must run the following steps: [18:43:05.0038] * yeah or > #### `dom.CreateElement( document, localName, namespace, prefix?, is?, synchronousCustomElementsFlag? )` > When dom.CreateElement is called, the UA must run the following steps: [18:43:39.0365] > <@meghanbun:matrix.org> https://webidl.spec.whatwg.org/#construct-a-callback-function does this style for interaction with the ES spec Yeah, I know. I personally don’t like that — and as a _reader_ of the ES spec (in contrast to being and implementor for it), I personally find the ES spec to be relatively much harder to read because of its uses of that style. [18:45:20.0152] I had my ES-spec-style fanboy stage. You can still see remnants of it in streams. And I unfortunately infected a lot of people with the usage of [[InternalSlots]]. [18:46:06.0351] If I’m instead implementing something (from the HTML spec), I guess I might find that function style somewhat easier to implement from. But not by much, really. And I wouldn’t find it to be a good tradeoff to make it slightly easier for implementors at the cost of making more-than-slightly harder for non-implementors to read. [18:48:00.0969] And IMHO, the ES spec style really does make it more-than-slightly harder for non-implementors to read. But that said, the ES spec is a _runtime language_ spec, and most runtime-language specs are written that way, and that’s what language-runtime implementors are more used to. But the HTML spec is not a runtime-language spec in that sense. [18:48:20.0100] > <@meghanbun:matrix.org> https://webidl.spec.whatwg.org/#construct-a-callback-function does this style for interaction with the ES spec * Yeah, I know. I personally don’t like that — and as a _reader_ of the ES spec (in contrast to being and implementor for it), I personally find the ES spec to be relatively much harder to read because of its use of that style. [18:52:56.0674] makes sense, thanks :) [07:30:54.0142] Can someone help me understand the difference between `fetchClient` and `settingsObject` in `fetch a single module script`? Is `fetchClient` the "inner" context for cases like worker scripts that create a new global and `settingsObject` is the "outer" context that initiated the load? https://html.spec.whatwg.org/multipage/webappapis.html#fetch-a-single-module-script [07:31:23.0615] * Can someone help me understand the difference between `fetchClient` and `settingsObject` in `fetch a single module script`? Is `fetchClient` the "inner" context for cases like worker scripts that create a new global and `settingsObject` is the "outer" context that initiated the load? Just having trouble tracing it. Thanks. https://html.spec.whatwg.org/multipage/webappapis.html#fetch-a-single-module-script [07:43:48.0005] https://html.spec.whatwg.org/multipage/workers.html#worker-processing-model:fetch-a-module-worker-script-tree [07:44:50.0227] so it's the opposite [07:45:47.0320] For workers/worklets, `fetchClient` is the "outer" context because you fetch the worker/worklet in the context of the thing that called it (usually a document), and `settingsObjects` is the inner thing that runs in the worker/worklet [07:46:06.0468] (more or less) [08:37:58.0356] thanks! [08:38:00.0818] > <@lynko:matrix.org> Do you mean e.g. the /ɑː/ in /wɑːt/? yes [08:39:52.0013] > <@lynko:matrix.org> In Pink Floyd's "Us and Them" https://www.youtube.com/watch?v=HoLhKJuGhK0 David sings "And who'll deny it's what the fighting's all about?" You can hear the distinctive British [t] throughout the song, but in fact at 7:10 you can hear him sing "what" as /wɑɾ/, which isn't listed at all on Wiktionary! Oh well... There are more dialects in the British Isles than there are grains of sand on the beach. that seems more like some sort of elision or assimilation given adjacent phoneme than anything else? [08:40:10.0776] wow, its like I got to use irc today... 🎉 2024-07-18 [21:25:05.0442] could use some rapid spam hiding/deleting on https://github.com/whatwg/webidl/pull/1421#pullrequestreview-2184595148 (warning, there's a graphic image) [21:28:18.0777] Jeez [00:20:04.0585] More than 10 years after the progress promises discussions and we still don't have a *great* pattern for progress signals... My choices seem to be either: `createX()` returns a promise for a not-yet-initialized `X` object, which fires `progress` events and has a `ready` promise for when it's fully usable. Or, `createX({ progressCallback })`, which only fulfills once the `X` is fully ready. The latter is a bit nicer but I can find zero precedent for it on the web platform... [00:29:29.0726] Domenic: this in light of some of the chatter about people returning to XHR? I thought we had some kind of plan for that, though a general solution for promises also sounds interesting. [00:31:07.0552] It's actually reflecting on some feedback on the former pattern which I've used in https://github.com/WICG/translation-api#downloading-new-languages . A general solution for promises is probably not really possible. Or if it is, it'll be like AbortController and be something separate that just often integrates with promises. What plan do you think we have? I vaguely remember some sort of FetchController or FetchSignal or something? [00:32:18.0576] https://github.com/whatwg/fetch/issues/607 isn't very enlightening [01:01:06.0256] I guess https://github.com/whatwg/fetch/issues/447#issuecomment-281731850 proposes a callback that gives you an object that fires events, that's even more complex, hmm. [01:08:54.0882] Seems like this should be on the `Response` rather than the fetch? [01:09:04.0864] Domenic: yeah, I think that's the plan of record. A callback that reveals a FetchObserver object upon which you can listen for progress, and can potentially monitor things like 1xx responses. [01:09:10.0337] Noam Rosenthal: no, that would not work for 1xx. [01:10:03.0549] Might have to be careful about when it starts sending progress though to not give additional timing channels. [01:10:33.0936] Hmm, for my case that's more complexity than needed, but maybe for future extensibility it's worth it?? [01:11:08.0955] What would be simpler that gives both download and upload progress? One callback for each? [01:17:52.0256] What's the meaning download/upload progress for a 1xx response? didn't see that in the issue [01:21:19.0097] * What's the meaning of download/upload progress for a 1xx response? didn't see that in the issue [01:35:39.0387] > <@annevk:matrix.org> What would be simpler that gives both download and upload progress? One callback for each? My case only needs download progress. [01:36:39.0788] Wouldn't `request.onprogress` and `response.onprogress` be simpler? Sure it doesn't support 1xx responses but isn't this good for the use cases authors care about? (Apologies if I'm missing something basic about this) [03:46:06.0856] Neither of those objects is stateful today, I'd kinda like to keep it that way [03:59:47.0893] `FetchObserver` is still the best idea I've seen for 1xx responses, upload progress, download progress, priority changes (although maybe this one can be covered by signal?), and future esoteric HTTP features (e.g., trailers that appear mid-stream has been suggested as a feature at one point). But it is somewhat clunky and I can already see people complaining about it when compared to XHR. [04:07:32.0555] That's very probably a spec bug. The Dom parsing spec has a number of open issues on it which need reviewing and migrating to html or closing. [04:07:43.0802] ``` fetch("test", { method: "POST", observer => { observer.onprogress = () => { console.log("finally"); } } }); const client = new XMLHttpRequest(); client.open("POST", "test"); client.onprogress = () => { console.log("been doing this for a long time"); } ``` [04:10:00.0205] Maybe interesting to run a Twitter/Mastodon poll on at some point. [04:10:56.0257] Am I missing something or is that fetch one not quite valid JS? [04:11:25.0437] Luke Warlow: I might well have fumbled it. 😅 [04:11:49.0831] * Am I missing something or is that fetch one not quite valid JS? Should be 'observer: observer => ...' I think [04:12:49.0568] I guess it has to be `observer(x) => x.on...` or some such? [04:12:55.0267] Fwiw that fetch call seems like a pretty nice API? [04:13:43.0928] * Fwiw that fetch call seems like a pretty nice API? Though I feel like most developers won't mind the API too much at this point they just want a non XHR way to do it. [04:14:58.0100] * Fwiw that fetch call seems like a pretty nice API? Though I feel like most developers won't mind the API too much at this point they just want a non XHR way to do it. As in, do what's best from a spec and implementation point of view over purely the "best" API design especially if it allows more use cases [04:15:16.0208] It's not terrible, I think what people might prefer is an overloaded return promise. But subclassing promises is very much uncharted territory and prolly has its own issues. [04:16:43.0637] * It's not terrible, I think what people might prefer is an overloaded return promise. But subclassing promises is very much uncharted territory and prolly has its own issues. As in, naively I would expect this: ``` const observer = fetch("test", { method: "POST" }); observer.onprogress = () => { console.log("finally"); } ``` [04:18:47.0937] I wonder if Domenic still recalls the thinking around promise subclasses. [04:29:49.0318] > <@lwarlow:igalia.com> Fwiw that fetch call seems like a pretty nice API? Though I feel like most developers won't mind the API too much at this point they just want a non XHR way to do it. > > As in, do what's best from a spec and implementation point of view over purely the "best" API design especially if it allows more use cases I vote for whatever we could agree on that gets something in the hands sooner rather than later. It seems like we have plenty of evidence that this remains a major pain point for developers, and addressing it will save developers from a lot of frustration, and save them a lot of time. [04:30:00.0990] * I vote for whatever we could agree on that gets something in the hands of developers sooner rather than later. It seems like we have plenty of evidence that this remains a major pain point for developers, and addressing it will save developers from a lot of frustration, and save them a lot of time. [04:43:52.0188] I'll be out for a couple of weeks. If you need me, check back mid-August. [07:11:42.0923] * I'll be out for a couple of weeks. If you need me, check back mid-August. (Though I'll show up at WHATNOT today.) [09:57:29.0710] Luke Warlow: FWIW, Gecko's innerHTML serializer is also like GetMarkup(bool aIncludeSelf, nsAString& aMarkup). I was expecting to see something similar in the spec [09:57:41.0334] Oh, outerHTML indeed has this weird "fictional node" https://html.spec.whatwg.org/#dom-element-outerhtml [10:02:24.0468] In that case I think all *5* engines pass a flag through to the fragment serializing steps [10:02:34.0295] * In that case I think all __5__ engines pass a flag through to the fragment serializing steps [10:03:39.0973] So it seems like a no brainer for the spec to match. And then we can do away with finctional nodes. [13:54:24.0764] Is https://html.spec.whatwg.org/multipage/xhtml.html#xml-fragment-serialisation-algorithm actually used? [14:00:27.0788] * Is https://html.spec.whatwg.org/multipage/xhtml.html#xml-fragment-serialisation-algorithm actually used? Only reference I can find is https://www.w3.org/TR/DOM-Parsing/#:~:text=XML%20fragment%20serialization%20algorithm which (incorrectly) links to it. [14:07:22.0048] Yeah, seems so — https://github.com/search?q=repo%3Aw3c%2Fwebref%20xml-fragment-serialization-algorithm&type=code [14:07:55.0928] only result is `tr/links/DOM-Parsing.json` file [14:08:52.0992] (I thought there was some actual web frontend for doing searches for references in specs — but if so, I can’t remember where) [14:10:58.0569] I guess just doing https://github.com/search?q=%22xml-fragment-serialization-algorithm%22&type=code works OK — since all the spec sources are in GitHub anyway [14:13:19.0815] oh, from that I just now found a reference in the XHR spec too [14:13:40.0006] in https://xhr.spec.whatwg.org/#dom-xmlhttprequest-send [14:14:09.0890] > If body is a [Document](https://dom.spec.whatwg.org/#document), then set [this](https://webidl.spec.whatwg.org/#this)’s [request body](https://xhr.spec.whatwg.org/#request-body) to body, [serialized](https://w3c.github.io/DOM-Parsing/#dfn-fragment-serializing-algorithm), [converted](https://infra.spec.whatwg.org/#javascript-string-convert), and [UTF-8 encoded](https://encoding.spec.whatwg.org/#utf-8-encode). [14:14:45.0362] ah, sorry not that [14:15:26.0940] scratch all that — it was from the old W3C XHR spec, I think [14:16:04.0695] So that references DOM-Parsing, which now moved to HTML which calls back into DOM-Parsing for the XML Serialization concept. 😅 So probably needs a PR to update the linking to the new place. [14:16:21.0573] yeah… [14:16:41.0335] I'll chuck that up now while I'm poking around this stuff 2024-07-19 [05:06:10.0925] Hello! I came here to ask about [HTML 5 spec by WHATWG, 8.6 Timers](https://html.spec.whatwg.org/#timers) says: > If nesting level is greater than 5, and timeout is less than 4, then set timeout to 4. I have to ask, why is exactly 5 and why we even have to increase timeout to a value, that is bigger than 4 or just 4 itself? P.S. - I know about motivation of certain hosts like Chromium, but I am curious about the reasons of having such restrictions in HTML5 Spec. [05:43:04.0912] To achieve interoperability between those browsers [05:44:38.0998] @ms2ger:igalia.com Could you provide more details, please? [05:45:36.0333] I'm not sure what else you're asking? The point of a web standard is to make sure different browsers handle the same code in the same way [06:00:08.0103] > <@ms2ger:igalia.com> I'm not sure what else you're asking? The point of a web standard is to make sure different browsers handle the same code in the same way I am asking about certain restrictions of implementation of HTML5 Spec. Spec says "If nesting level is greater than 5, and timeout is less than 4, then set timeout to 4." and I want to know why is exactly 5 and why we even have to increase timeout to a value, that is bigger than 4 or just 4 itself? [06:03:50.0830] You're saying you understand why browsers do that, right? [06:05:01.0732] > <@ms2ger:igalia.com> You're saying you understand why browsers do that, right? Yes. Why? [06:06:09.0506] If browsers do it, it should be in the standard. Otherwise the standard is just extremely boring science fiction [06:08:08.0466] So browsers are writing the HTML 5 Spec and not WHATWG? [06:09:18.0902] What do you think WHATWG is? [06:31:20.0397] Hixie wrote about this recently, by coincidence. http://ln.hixie.ch/?start=1721260117&count=1 [09:28:23.0415] > <@domenicdenicola:matrix.org> Hixie wrote about this recently, by coincidence. http://ln.hixie.ch/?start=1721260117&count=1 Ty 2024-07-20 [02:19:21.0022] Hi. I think there is an issue with the html form. I'm uisng const element = document.getElementById("qms-stepper-submit"); document.getElementById("qms-audit-add-edit-form").requestSubmit(); but in the form's onSubmit, the event parameter has submitter=null [02:20:00.0476] latest Chrome [02:29:35.0691] Actually it seems to work in codesandbox (must be React issue then :| ) https://codesandbox.io/p/sandbox/requestsubmit-issue-852c26?file=%2Fsrc%2Findex.js%3A3%2C26 [02:30:17.0337] I just don't know why does it log twice in the console, on single click. [02:30:23.0950] * I just don't know why does it log twice in the console, on single click? [03:06:44.0687] hmm, SVG and content attributes for event handlers [03:06:55.0074] are those defined somewhere? [03:15:30.0782] Aha, https://svgwg.org/svg2-draft/interact.html#RelationshipWithUIEVENTS and https://svgwg.org/svg2-draft/interact.html#TermEventAttribute [03:18:19.0213] I wonder how consistently browsers support those content attributes in svg elements [03:53:30.0330] * https://codesandbox.io/p/sandbox/requestsubmit-issue-852c26?file=%2Fsrc%2Findex.js%3A3%2C26 [03:53:44.0216] * Anyone knows why does it log twice in the console, on single click? [03:54:37.0295] * Anyone knows why does it submit the form twice, on single button click? [09:30:02.0998] Ms2ger: I came here to ask a question and get an answer, gentleman. Not to play farce. [09:30:17.0618] Sorry if I ask something wrong. [15:15:58.0003] Luke Warlow: https://dontcallmedom.github.io/webdex/ is the is tool I had been trying to remember the other day — in regard to finding which other specs reference the “XML fragment serialization algorithm” term [15:16:39.0831] and “XML fragment serialization algorithm ” is not in that index — which I think confirms that no other specs normatively reference it [15:17:31.0398] yeah, even the DOM Parsing reference isn’t in there — because that one is in a non-normative Note. I guess the tool’s smart enough to know the difference 2024-07-22 [01:12:07.0175] Where in the spec are session history entries added to a navigable? [01:22:20.0970] Context: It seems per https://html.spec.whatwg.org/multipage/browsing-the-web.html#low-level-operations-on-session-history that per-spec, a docState can never have zero nested histories. So in an implementation, if a docState does have zero nested histories, then there’s a bug somewhere in whatever code it is that adds the nested histories [01:22:42.0115] * Context: It seems per , a docState can never have zero nested histories. So in an implementation, if a docState does have zero nested histories, then there’s a bug somewhere in whatever code it is that adds the nested histories [01:22:55.0007] * Context: It seems per https://html.spec.whatwg.org/multipage/browsing-the-web.html#low-level-operations-on-session-history that per-spec, a docState can never have zero nested histories. So in an implementation, if a docState does have zero nested histories, then there’s a bug somewhere in whatever code it is that adds the nested histories [01:55:28.0427] nevermind, found it at https://html.spec.whatwg.org/multipage/document-sequences.html#create-a-new-child-navigable, step 12.6 [03:12:00.0116] Does anyone here have merge rights on the SVGWG repo? The spec as published isn't up to date because there's a mismatch between main and master, I've got a PR to merge main back into master to fix it. https://github.com/w3c/svgwg/pull/943 [03:36:24.0451] > <@lwarlow:igalia.com> Does anyone here have merge rights on the SVGWG repo? The spec as published isn't up to date because there's a mismatch between main and master, I've got a PR to merge main back into master to fix it. https://github.com/w3c/svgwg/pull/943 Merged it 2024-07-23 [20:56:19.0859] My calendar shows a WHATNOT meeting scheduled for July 25 this week. Is that real? [20:57:08.0242] ah yeah I see https://github.com/whatwg/html/issues/10496 [22:24:08.0548] 😜 [22:34:41.0496] 👀👀❤️ 2024-07-24 [14:14:55.0328] The AsyncContext proposal is considering its semantics for integration with the web platform. A draft is out for review at https://github.com/tc39/proposal-async-context/pull/100 . We'd really appreciate any input that you have. The tl;dr is, WebIDL would bind all (or most?) callbacks passed in to the AsyncContext snapshot which was active when the API is called ("registration time semantics"). 2024-07-25 [00:52:05.0142] Domenic: I have a calendar entry for an “HTML spec triage” meeting starting 10 minutes from now. I guess that’s some ghost entry leftover? [00:52:57.0561] > <@sideshowbarker:matrix.org> Domenic: I have a calendar entry for an “HTML spec triage” meeting starting 10 minutes from now. I guess that’s some ghost entry leftover? Hmm I think so, I don't have one myself. [09:03:34.0840] keithamus: related to the hint/tooltip discussion, I wonder if github would have used context menu if it had been supported everywhere (It was removed in https://github.com/whatwg/html/pull/2742) [09:06:41.0139] I can’t say for sure but we’ve definitely tried to provide our own context menus in places before but due to the missing expected experience we saw user pushback. It would be helpful to have a similar concept or revive that spec 😛 [12:23:57.0019] Hey folks. I have a basic question for my understanding. Can someone help me understand why don't tags have the ability to support request headers for urls that have such requirements for e.g. authorization token? [12:24:06.0918] * Hey folks! I have a basic question for my understanding. Can someone help me understand why don't \ tags have the ability to support request headers for urls that have such requirements for e.g. authorization token? [12:24:54.0883] You can use javascript for that. [12:25:27.0887] try `URL.createObjectURL(await(await fetch(/* whatever */)).blob())` [12:25:34.0716] * try setting src to `URL.createObjectURL(await(await fetch(/* whatever */)).blob())` [13:30:50.0219] Yes, that is the option I am implementing but it comes with its own set of challenges like creating in-memory blobs that need to be released from memory. Current recommendation is to release the memory when component unmounts but when the application is huge and performance is crucial, the intention is to have this more centralized as we don't cannot rely on all components doing this. [13:31:25.0346] try adding the headers in a service worker perhaps [13:38:11.0244] There are concerns with this approach as well since service works are not expected to always be available. For now blob url is still the most favorable option only. [13:38:59.0151] could feature detect and switch to whichever is available [13:41:51.0273] Possibly, but right now we are trying to figure out ways to handle the memory problem. It would be preferable to just have one path without adding too much complexity. [13:43:05.0619] I was majorly curious why tag cannot support this. It seems like a common enough concern which would make things a lot easier. [13:43:45.0407] because img tags are significantly older than the ability to make any kind of request with custom headers on the web [13:44:54.0598] Okay I see. [13:46:28.0674] Thanks for the information and the help! Appreciate it! [16:00:04.0836] Some other unsolicited thoughts: * you could make a web component for this, so that at least the fetch is papered over and you just make a etc. The fetch itself will potentially be cached (if crafted correctly, right headers from the server), can use a map from original urls to object urls to provide your own caching, and web component lifecycle to revoke the object urls (so that as long as at least one image is attached to the dom, the object url won’t be revoked and can be loaded without hitting fetch at all). * img tags can, by dint of being as old as html (…ish), send cookies already, and have some protection against the app loading it being able to see contents. Additionally, cookies can be set to not permit being sent when a different site tries to load an image from the domain that originally set the cookie. On the other hand, authorization (sic) headers are not sent for image resources. Changing either rule could make it possible for an external site (evil.com) to craft img tags and load urls (that might not even be images) from servers that were previously secure from such attacks 2024-07-26 [18:43:05.0831] In WHATNOT today sideshowbarker shared https://sideshowbarker.github.io/w3c-faq/#how-can-i-make-a-living-standard-from-my-spec . Good to have that documented. [18:45:43.0455] Overall the FAQ is pretty nifty... it resonates with me more than a lot of other W3C process stuff I've read [18:50:08.0312] Thanks yeah — that’s my hope for it at least. I actually put it together because the WebAssembly WG chairs had asked me some questions I didn’t actually know the answers to, but rightly should have. So I went back and read through the W3C Process to try to understand enough that I could answers their questions. And then even for just myself, to be able to understand it, I kind of _had_ to write it all down. And then I figured, well, this ought to be useful to other people too — so I reframed it all in the way it is now. [18:51:08.0909] So, feedback about stuff in it that remains unclear is very much welcome. I actually just now pushed https://github.com/sideshowbarker/w3c-faq/commit/34493e5605 based on some more questions today from the WebAssembly WG chairs. [18:53:16.0480] All that said, I 100% agree that the whole process is incredibly baroque — IMHO unnecessarily so — but hope this doc can help a lot to mitigate some of that for everybody who’s confused and baffled by it all, and just wants to be able to publish their specs. [19:20:30.0907] https://sideshowbarker.github.io/w3c-faq/#editors-draft is great too :D [19:44:06.0842] > <@domenicdenicola:matrix.org> https://sideshowbarker.github.io/w3c-faq/#editors-draft is great too :D `⺡̟֯ ˄⎠̧` Yeah there’s a reason this is published in my personal space rather than anywhere official. Definitely not written for insiders [19:45:32.0224] Titling it _“An objectively accurate and correct guide to the W3C”_ probably would have been taking it a bit far [19:49:56.0748] But anyway, “An Outsider’s Guide” really does reflect the intent. Not intentionally trying to be obnoxious and piss anyone off (though I know some will be anyway) — instead just trying to accurately state things in terms that will make things as clear as possible to people who are just hoping to get something done through the W3C (the vast majority of whom aren’t insiders) [05:30:14.0120] keithamus: do you understand how ESC should work with close watchers? [05:31:34.0021] The spec talks first about picking up keydown and checking its canceled flag, but then later an example talks about keyup [05:31:47.0401] (and there can be multiple keydowns and only one keyup) [05:32:23.0146] /me files some spec issues [05:57:59.0521] I remember the spec was wrong somewhere originally. It's possible that it was wrong somewhere else [06:06:02.0274] > <@smaug:mozilla.org> The spec talks first about picking up keydown and checking its canceled flag, but then later an example talks about keyup I read it as these steps should run for the first keydown event for an escape key press that's not cancelled? Which is what modal dialogs already do afaik. And is what I've done in my WebKit PR, the code that used to run dialog and popover close directly would now invoke the close watcher code (which would in turn close the dialog or popover) [06:28:17.0094] Luke Warlow: right, but there is the example below talking about keydown/up sequence [06:28:30.0777] and those events happen often in different tasks [06:28:42.0475] and the example talks about keyup being cancelled [06:29:27.0278] Ah yeah I suspect that's wrong. It said keyup before soemwhere else and it was changed so this might be the same [06:32:37.0476] * Ah yeah I suspect that's wrong. It said keyup before soemwhere else and it was changed so this might be the same. See https://github.com/whatwg/html/pull/10043 2024-07-27 [23:51:29.0818] Hello, I'm not sure if this is the correct place to ask but somehow I ended up here 🤣 Question: In MDN .showModal() is defined to be "Interaction outside the dialog is blocked and the content outside it is rendered inert." but when I am using with .showModal(), this is not true. Should I file a new issue in Github for this or am I just misusing it? [23:53:22.0283] * Hello, I'm not sure if this is the correct place to ask but somehow I ended up here 🤣 Question: In MDN .showModal() is defined to be "Interaction outside the dialog is blocked and the content outside it is rendered inert." but when I am using inside an Iframe with .showModal(), this is not true. Should I file a new issue in Github for this or am I just misusing it? [00:04:03.0614] It seems like what the doc defines as "outside" is nearest , or something similar, so dialog triggered from iframe does not inert content outside of the iframe which gives unexpected focus experience to the user. [00:09:59.0797] Tabbing on a page with iframe jumps in and out of the iframe so having partial content(iframe) be inert for a dialog experience seems odd to me. Hopefully, I'm just using it wrong or misunderstanding. [00:10:32.0623] * Tabbing on a page with iframe jumps in and out of the iframe so having partial content(iframe) be inert for a dialog experience seems odd to me. Hopefully, I'm just misunderstanding or using it wrong :D [00:20:34.0219] Maybe we need an option in .showModal() to select how far "outside" it should inert? [01:51:45.0932] It sounds like MDN is not very accurate in documenting that method, indeed. We don't allow iframes to interfere with their parent documents in a way such as you're describing, so such an option would not be allowed. [02:45:51.0245] What would be a correct way to trigger a dialog from the iframe(that is not a window to another domain) [02:45:56.0153] * What would be a correct way to trigger a dialog from the iframe(that is not a window to another domain)? [02:46:17.0052] * What would be a correct way to trigger a dialog from the iframe(that is not a window to another domain)? Example of this would be Storybook-like situation [06:43:27.0719] Sending a message to the top-level frame and asking it to trigger the dialog. [06:43:33.0011] (I don't know what Storybook is.) [10:53:14.0905] (Storybook is a component / design system library engine, IIRC react-based, with examples of the actual components described shown as iframes, with their own page context with just the library being demonstrated loaded in the document, not the tool's styling/behav…) [10:57:26.0467] > "dialog triggered from iframe does not inert content outside of the iframe which gives unexpected focus experience" YMMV but this sounds actually like a very good experience, wrt to isolation — if only the iframe is expected to be "an example", an isolated view, "window to how it would look like", having the modal not interfere with the rest of the Storybook UI, keeping it limited just to the example iframe, that feels like a rather good pattern…? (But yeah, that's just this specific case.) [11:03:58.0102] Ben Ho: Definitely do open an issue at MDN/content GH and explain your expectations — and that it should clearly state it applies only to the same document. Someone might be able to draft a change hinting at alternatives or linking to places helpful with info about document messaging etc. 2024-07-28 [17:38:29.0538] Ben Ho: Or even write up a patch to the docs — and feel free to Cc me on it, and I’ll review it. https://github.com/sideshowbarker https://github.com/mdn/content/blob/main/CONTRIBUTING.md. Or if you prefer to just raise an issue, please Cc me on it, and I can write up a patch 2024-07-29 [17:42:36.0183] sideshowbarker: Will add you to the issue I made earlier, thank you! [05:21:43.0229] Hey folks! I'm playing around with module scripts and I see that a module script struct is being passed to EcmaScript and back through ParseModule.[[HostDefined]] item. I'm wondering if that is done by value or by reference. More explicitly, if I later change the module script struct, would that change be reflected when grabbing that ParseModule.[[HostDefined]]? [05:22:10.0130] * Hey folks! I'm playing around with module scripts and I see that a module script struct is being passed to EcmaScript and back through a ParseModule.\[\[HostDefined\]\] item. I'm wondering if that is done by value or by reference. More explicitly, if I later change the module script struct, would that change be reflected when grabbing that ParseModule.\[\[HostDefined\]\]? [06:29:48.0791] Hello, I have a question regarding the HTML Standard: Here, on step 4.13.6 of the "adoption agency algorithm" (https://html.spec.whatwg.org/multipage/parsing.html#adoption-agency-algorithm), it is stated that a new element must be created with X settings [...] and the entry for *node* must be replaced in the list of active formatting elements. However, by step 4.13.4, it is by now possible that *node* is **not** in the list anymore, yet the statement was not covered with a "continue" like 4.13.5; In this instance, what should the implementation do if node isn't in the list of active formatting elements? [06:32:01.0881] * Hello, I have a question regarding the HTML Standard: Here, on step 4.13.6 of the "adoption agency algorithm" (https://html.spec.whatwg.org/multipage/parsing.html#adoption-agency-algorithm), it is stated that a new element must be created with X settings \[...\] and the entry for _node_ must be replaced in the _list of active formatting elements_. However, by step 4.13.4, it is by now possible that _node_ is **not** in the list anymore, yet the statement was not covered with a "continue" like 4.13.5; In this instance, what should the implementation do if _node_ isn't in the _list of active formatting elements_? [06:32:34.0857] * Hello, I have a question regarding the HTML Standard: Here, on step **4.13.6** of the "adoption agency algorithm" (https://html.spec.whatwg.org/multipage/parsing.html#adoption-agency-algorithm), it is stated that a new element must be created with X settings \[...\] and the entry for _node_ must be replaced in the _list of active formatting elements_. However, by step **4.13.4**, it is by now possible that _node_ is **not** in the list anymore, yet the statement was not covered with a "continue" like **4.13.5**; In this instance, what should the implementation do if _node_ isn't in the _list of active formatting elements_? [08:25:30.0842] rshadr: file a spec issue please 2024-07-30 [18:26:47.0203] > <@yoavweiss:matrix.org> Hey folks! I'm playing around with module scripts and I see that a module script struct is being passed to EcmaScript and back through a ParseModule.\[\[HostDefined\]\] item. I'm wondering if that is done by value or by reference. More explicitly, if I later change the module script struct, would that change be reflected when grabbing that ParseModule.\[\[HostDefined\]\]? We generally treat these things as "by reference". On the other hand, I'm not sure what fields of module scripts are meant to be mutable... [21:26:11.0473] Domenic: I'm adding a new item that contains the resolved URL. I'll upload a draft for early review soonish [01:22:09.0326] Is there a way to run conformance checks locally? I'm seeing them failing on the bots.. https://github.com/whatwg/html/actions/runs/10158385321/job/28090331154?pr=10528 [01:23:06.0750] I tried to run `java -Xmx1g -jar ./vnu.jar --skip-non-html "$HTML_OUTPUT"` directly but that fails due to lack of Java installed.. I guess I can get it running through the docker build? [01:26:22.0151] https://github.com/validator/validator/releases has standalone binaries you can download that don’t require a Java environment [01:26:55.0317] but you can also use `curl` to send the document to the web-based checker [01:28:05.0851] https://github.com/validator/validator/wiki/Service-»-Input-»-POST-body#examples [01:28:31.0889] ``` curl -H "Content-Type: text/html; charset=utf-8" \ --data-binary @FILE.html \ https://validator.w3.org/nu/?out=gnu ``` [01:33:33.0619] I'm getting a 502.. [01:33:58.0774] for `curl -v -H "Content-Type: text/html; charset=utf-8" --data-binary "@output/index.html" "https://validator.w3.org/nu/?out=gnu` [01:36:41.0812] hmm, it’s working for me [01:37:00.0521] maybe open https://validator.w3.org/nu/ in a browser first? [01:37:46.0549] W3C has some Cloudflare abuse-mitigation thing in place [01:38:28.0985] if you have your source committed to a PR branch, I can try checking that out [01:38:36.0254] In the browser I'm getting a "HTTP ERROR 400 Resource size exceeds limit." [01:39:01.0283] https://github.com/whatwg/html/pull/10528/files [01:39:21.0810] /me tries now [01:40:33.0605] building from your patch now [01:42:55.0723] I already found a few issues based on the CI messages, just wanted to iterate over fixing them locally, rather than on the bots [01:44:51.0597] It may be that I need to bump the size limit [01:45:34.0542] lord, what is all this stuff? ``` Compiling proc-macro2 v1.0.60 Compiling quote v1.0.28 Compiling libc v0.2.146 Compiling parking_lot_core v0.9.8 Compiling lock_api v0.4.10 Compiling serde v1.0.164 Compiling syn v1.0.109 Compiling memchr v2.5.0 Compiling tokio v1.28.2 ``` What part of the build needs to be compiling binaries? [01:47:26.0488] Due to whatever that stuff is, my local spec build is failing: ``` = note: ld: library 'System' not found cc: error: linker command failed with exit code 1 (use -v to see invocation) ``` So, trying a remote spec build now [01:48:48.0438] Uploading a few fixes soonish.. [01:49:23.0655] What’s the size of your local `output/index.html` file? [01:50:40.0596] I currently have the maximum file size for the web-based checker set to 12MB [01:52:10.0636] 13.7MB [01:52:23.0157] aha [01:52:28.0813] yeah.. [01:52:28.0970] OK, gimme a minute [01:59:35.0017] Yoav Weiss: please try with curl again now [02:01:32.0089] Yay! (I'm still getting conformance errors, now to fix them) [02:02:01.0316] Might be worthwhile to document that curl command in the html-build instructions [02:07:47.0343] OK, the remaining conformance issues seem to be non-blocking and aren't related to my change, but to "
01234
top/t-a/t-a#foo/t-b
frames[0]/i-0-a/i-0-b
frames[1]/i-1-a/i-1-b
" [02:08:45.0479] One of the rows has 5 columns rather than 6 [02:13:14.0574] That's potentially WAI: https://html.spec.whatwg.org/multipage/document-sequences.html#jake-diagrams [02:13:43.0060] but maybe you can tell a table that a certain cell is empty. Dunno tables well enough [02:23:57.0497] Well, even if it’s in WAI, it’s also a requirement in the HTML spec itself — I think [02:24:23.0415] if not, it should just a warning at best, rather than an error [02:25:35.0004] Are redirects cachable? [02:26:12.0665] Or more specifically, do Firefox/Safari/Chrome cache them? [02:26:53.0497] * Are redirects cacheable? [03:10:32.0023] sideshowbarker: I think so, at least 301/308 [03:20:14.0514] Ah yeah, makes sense for those at least, of course [03:30:40.0898] > <@sideshowbarker:matrix.org> if not, it should just a warning at best, rather than an error It's an info-level output, which we've been ignoring, because it's WAI. [03:31:32.0112] > <@sideshowbarker:matrix.org> lord, what is all this stuff? > ``` > Compiling proc-macro2 v1.0.60 > Compiling quote v1.0.28 > Compiling libc v0.2.146 > Compiling parking_lot_core v0.9.8 > Compiling lock_api v0.4.10 > Compiling serde v1.0.164 > Compiling syn v1.0.109 > Compiling memchr v2.5.0 > Compiling tokio v1.28.2 > ``` > What part of the build needs to be compiling binaries? It's rust :). It compiles it the first time. [04:25:08.0441] sideshowbarker: https://github.com/whatwg/html/pull/10530 to fix the diagram conformance issues [07:41:14.0283] annevk or Domenic : is something blocking https://github.com/whatwg/html/pull/5841 from landing? It seems there's interest to implement in Gecko [11:54:26.0000] About the requirements in the Fetch spec for caching responses, it seems that what the spec requires when the UA gets a 30x redirect is that the 30x response itself gets cached, prior to the UA following the redirect. [12:13:09.0036] That is what seems to follow from https://fetch.spec.whatwg.org/#ref-for-concept-http-network-or-cache-fetch, where this part comes first: > _Set response and internalResponse to the result of running [HTTP-network-or-cache fetch](https://fetch.spec.whatwg.org/#concept-http-network-or-cache-fetch) given fetchParams._ …which is what calls into https://fetch.spec.whatwg.org/#ref-for-response.cacheability, which says this: > _Store httpRequest and forwardResponse in httpCache, as per the "[Storing Responses in Caches](https://httpwg.org/specs/rfc9111.html#response.cacheability)" chapter of HTTP Caching. [[HTTP-CACHING]](https://fetch.spec.whatwg.org/#biblio-http-caching)_ _But_, all that happens _before_ https://fetch.spec.whatwg.org/#ref-for-redirect-status②, which is this: > If internalResponse’s [status](https://fetch.spec.whatwg.org/#concept-response-status) is a [redirect status](https://fetch.spec.whatwg.org/#redirect-status): … Set response to the result of running [HTTP-redirect fetch](https://fetch.spec.whatwg.org/#concept-http-redirect-fetch) given fetchParams and response. [12:14:01.0636] * That is what seems to follow from https://fetch.spec.whatwg.org/#ref-for-concept-http-network-or-cache-fetch, where this part comes first: > _Set response and internalResponse to the result of running [HTTP-network-or-cache fetch](https://fetch.spec.whatwg.org/#concept-http-network-or-cache-fetch) given fetchParams._ …which is what calls into https://fetch.spec.whatwg.org/#ref-for-response.cacheability, which says this: > _Store httpRequest and forwardResponse in httpCache, as per the "[Storing Responses in Caches](https://httpwg.org/specs/rfc9111.html#response.cacheability)" chapter of HTTP Caching. [\[HTTP-CACHING\]](https://fetch.spec.whatwg.org/#biblio-http-caching)_ _But_, all that happens _before_ https://fetch.spec.whatwg.org/#ref-for-redirect-status②, which is this: > If internalResponse’s [status](https://fetch.spec.whatwg.org/#concept-response-status) is a [redirect status](https://fetch.spec.whatwg.org/#redirect-status): … Set response to the result of running [HTTP-redirect fetch](https://fetch.spec.whatwg.org/#concept-http-redirect-fetch) given fetchParams and response. [12:14:12.0203] So… that seems wrong. It doesn’t seem to be what any existing UAs actually implement. [12:18:07.0949] Specifically, UAs don’t cache the 301, 302, 303, 307, and 308 responses themselves — instead they follow the redirects and then cache the response _after_ following the redirect (at least in the case of the 301 and 308 responses) [12:20:22.0470] In other words, faithfully/conformantly implementing the spec requirements for this would not seem to result in the behavior anyone would expect, nor match what existing UAs actually do [12:20:29.0431] …as far as I can see 2024-07-31 [20:03:23.0446] > <@zcorpan:mozilla.org> annevk or Domenic : is something blocking https://github.com/whatwg/html/pull/5841 from landing? It seems there's interest to implement in Gecko Not sure. Looks like there were some unresolved discussions? [21:43:43.0989] I run into an issue using the Stream API that I describe on stack overflow. It was solved, but the behavior of a ReadableStream when read with a BYOD reader is rather surprising. Curious if this is by design? https://stackoverflow.com/questions/78804588/why-does-read-not-return-in-byob-mode-when-stream-is-closed [21:46:31.0711] This confused me too, and I'm an editor of the spec. It's so we can return the buffer to the caller so they can reuse it. [21:49:19.0948] Why can't that happen when close() is called? It seem to require a close() followed by controller.byobRequest.respond(0)