Skip to content

Upcoming WHATNOT meeting on 2025-04-17 #11192

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
past opened this issue Apr 4, 2025 · 1 comment
Closed

Upcoming WHATNOT meeting on 2025-04-17 #11192

past opened this issue Apr 4, 2025 · 1 comment
Labels
agenda+ To be discussed at a triage meeting

Comments

@past
Copy link

past commented Apr 4, 2025

What is the issue with the HTML Standard?

We skipped our last weekly triage call (#11170) and I will also cancel the one on April 10, as discussed on Matrix. The next one is scheduled for April 17, 1am PDT. Note that this is 2 weeks later in an APAC + Europe friendly time.

People interested in attending the next call please respond here or reach out privately to @past, @cwilso, or the editors. We will be tagging issues for the next call again using agenda+ in all WHATWG repositories across issues and pull requests and we would like to invite anyone that can contribute to join us.

@past past added the agenda+ To be discussed at a triage meeting label Apr 4, 2025
@past
Copy link
Author

past commented Apr 17, 2025

Thank you all for attending the meeting today and a special thank you to Domenic for taking meeting notes! Here are the notes from this meeting (the next one is at #11233):

Agenda

Attendees: Luke Warlow, Keith Cirkel, Emilio Cobos Álvarez, Domenic Denicola, Olli Pettay, Noam Rosenthal, Kagami Rosylight, Anne van Kesteren
Scribe: Domenic

  1. Review past action items
    1. Luke will create a PR for file upload control rendering should specify the button element to use to specify that it is a button.
      1. Not done yet, carry over
    2. Mason will ping Chris for his opinion on clarify correct behavior for requestAnimationFrame for hidden iframes (display: none).
      1. Stefan provided a Chromium perspective.
      2. Carry over until Emilio is here.
    3. Simon will write a spec PR to formalize exception throwing for History API: PushState can silently fail in Chromium while Gecko/Webkit raises exception.
      1. Done.
  2. Carryovers from last time
    1. None.
  3. New topics
    1. [Joey] Popover does not know what triggered it
      1. Discussing without Joey so probably we should carry this over, but see notes.
    2. [Dan/Kurt] Support fragment references in the <link> tag's href attribute
      1. Discussing without Dan/Kurt so probably we should carry this over, but see notes.
    3. [Emilio] CSS content-visibility content relevancy section should be in the HTML spec
      1. Emilio will send PR
    4. [Emilio] Should focus fixup be its own "update the rendering" phase
      1. Noam will find Chromium people
    5. [Keith] Dialog requestClose causes several issues with regard to interplay of CloseWatcher
      1. Good discussion, let's carry it over and keep discussing async

Action Items

  1. @lukewarlow to bring his thoughts on popover source to the issue/PR Done
  2. @emilio will send a PR for content-visibility monkeypatch
  3. @noamr will discuss internally about focus fixup timing (Done)

Minutes

Popover does not know what triggered it

Luke: need to be careful about exposing things, e.g. cross-tree, because currently invokers are not exposed
Olli: I think the PR deals with that
Luke: Element or HTMLElement? Currently can only be HTMLElement.
Luke: I guess this is mostly needed for the imperative API? The command event already has the source on the event.
Luke: What is the source for the details element? Details or summary?
Luke: should we allow passing a source to dialog.show() and dialog.showModal()?
Domenic: any thoughts on implementer interest?
Olli: probably fine once we get the PR reviewed.
Keith: I'll help.
Domenic: editors will also, eventually, but your first pass is appreciated.

Support fragment references in the <link> tag's href attribute

Noam: I feel like this space needs some incubation and holistic thinking. A joint CSS-WHATWG session (or more than one session) would be helpful. I'm happy to work with Microsoft on preparing that after I'm back from holiday in two weeks. I feel like as an issue it's too broad and is getting bogged.

Domenic: I remember steering them in this direction, and suggesting a solution like this, so I feel bad that the issue ended up being very controversial…

Noam: it's an intrinsically tough issue.

Domenic: any feedback this room can give to the issue before such a joint meeting?

Anne: feels like this is a piecemeal solution for declarative custom elements. If you use declarative shadow DOM this helps you deduplicate CSS, but not your actual DOM tree. Should we solve the larger problem?

Luke: for what it's worth, I agree, reusable declarative shadow DOM is important and the current repetitive version is less useful. But there are probably use cases with shared stylesheets across multiple components, so CSS reuse without markup reuse has a use case.

Keith: It's related to the bundling case for CSS.

Noam: JS modules have the same problem, you can only reuse things that are external.

Domenic: that was my original feedback, either solve this for all scripts (or at least module scripts), or do something CSS specific. Not their original solution of CSS module scripts only.

Anne: scripts being special has always been dissatisfying…

Domenic: it seems like you can either do web bundles, which we seem to be failing to do, or everyone can do bespoke per-type things, like TC39 is doing for modules and @sheet for CSS.

CSS content-visibility content relevancy section should be in the HTML spec
Should focus fixup be its own "update the rendering" phase

Domenic: I agree we should move monkeypatches into the main spec! No opinion on the actual fix.

Olli: asking for feedback from browser vendors on the correct fix.

Noam: I'll ping Vlad/find the right people

Anne: generally not clear on the principle for coalescing for loops over documents

Noam: I think that's mostly about the focus fixup?

Anne: probably applies to both

Noam: I think the difference is about whether iframes affect their parents.

Anne: Also note that it can only be observable for same-origin documents.

Noam: the event loop processing algorithm is already scoped to one agent, so that's taken care of.

Emilio: (has just joined) it makes more sense to me to incorporate focus fixup into the loop. It felt odd to do a whole document walk again for the same sort of "run script and layout" loop that ResizeObservers do.

Noam: in Blink we try to put the least possible amount of things inside that loop, since it's potentially infinite and capped with resize observer depth.

Emilio: We could put it right outside the loop but the same step.

Noam: feels cleaner to do phase-by-phase instead of document-by-document. Matches other steps.

Emilio: feels naturally part of this loop to me, but I don't feel super strongly.

Noam: I think part of the loop strategy could be buggy with two frames changing display: none… (didn't catch the whole details)

Emilio: the same issue can occur with the phase-by-phase strategy

Noam: a bit more constrained by just having the blur event

Emilio: To me, arbitrary script is arbitrary script. But I don't feel super strongly.

Domenic: back to content-visibility specifically?

Emilio: that one seems more clearly like it should be part of the loop, the loop already deals with content-visibility. Once at the beginning of the loop. (Or in a step right before the loop.) On the other hand maybe it doesn't matter since it doesn't run script. After the loop doesn't make sense: that would change the layout that ResizeObservers have observed. Not sure how I feel about inside the loop.

Anne: Do we have tests?

Emilio: no, but I can write some! I'd be curious what browsers do; there are some existing differences around content-visibility.

Anne: if we can get some perf with better iteration strategy that'd be good.

Emilio: there usually aren't that many documents in an agent so it's not so bad.

Domenic: number of operations are the same with any iteration strategy, right?

Anne/Emilio: layout-updating disrupts that, which is why we try to keep stuff in that inner loop step.

Noam: would the content visibility thing fire contentvisibilitychange?

Emilio: no, they get posted as a task.

Noam: I wonder if we could do a similar thing with blur events…

Domenic: probably we could? We already moved from sync blur events to update the rendering timing. One extra task on top of a potential 16 ms delay is probably fine.

Noam: after user-visible rendering updates is riskier

Domenic: conclusion for content-visibility: Emilio will write the PR to put it before the loop. And tests.

… trying to conclude on focus fixup …

Emilio: I have a slight preference to do it after the inner loop is over

Noam: I feel like patching things is not ideal unless we go all the way, it's simpler to just say if you do weird things in the blur event then your site might get confused. Going all the way to putting it inside the inner loop might work, but not sure we have enough motivation to do that.

Emilio: even with that case another document can mess with your state.

Noam: we'd do like resize observers, continually checking until it's settled…

Emilio: doesn't work, the loop is per-document.

Emilio: So my suggestion is to move it up to keep all the layout updates in one step. It won't ensure that web developer code always sees up-to-date state. I'm willing to try putting it in the loop if you think it's better, but I'm not convinced it helps that much.

Noam: Let me discuss internally.

Dialog requestClose causes several issues with regard to interplay of CloseWatcher

Keith: there are several things within requestClose which make the interaction with close watchers redundant. Seems like it's just for code cleanliness. But the bypasses increase complexity and cause lots of little issues. I proposed 3 solutions.

Luke: We need (3) from your list regardless.

Keith: light dismiss request close could also skip close watcher by calling into request close

Luke: the closedby attribute in theory created close watchers for all dialogs, possibly in a disabled state.

Luke: We could definitely simplify this by stopping using the close watcher machinery.

Keith: there is another strategy for closedby=none.

Domenic: I don't think requestClose() should work in disconnected states at all!

Keith: not congruent with the rest of the API, which dispatches events while disconnected. E.g. close().

Anne: might make sense to throw like showModal() does.

Keith: Anyway, there's still complexity around close watcher with light dismiss.

Luke: IMO not too big a deal with light dismiss, because you can only light dismiss visible dialogs.

Keith: more an implementation issue, e.g. the requestClose return value.

Luke: I think that's more the nature of the flow of data

Keith: but if you interleave close() and requestClose(), things can get messed up

Luke: I don't think so because it's synchronous

Keith: but nested event listeners

Domenic: (big speech on how this is complex, he's sorry, and still thinks close watcher is in theory a good architecture, but maybe we'll need to fix stuff or abandon it in parts.)

@past past closed this as completed Apr 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
agenda+ To be discussed at a triage meeting
Development

No branches or pull requests

1 participant