15:59:48 RRSAgent has joined #css 15:59:52 logging to https://www.w3.org/2023/01/25-css-irc 16:00:16 RRSAgent, make logs Public 16:00:17 Meeting: Cascading Style Sheets (CSS) Working Group Teleconference 16:00:59 lea has joined #css 16:01:49 emeyer has joined #css 16:02:55 fremy has joined #css 16:03:10 present+ 16:03:15 present+ 16:03:30 present+ 16:03:41 present+ 16:04:16 present+ 16:04:25 scribenick: fantasai 16:05:38 patrickangle_ has joined #css 16:05:58 Topic: CSS Nesting 16:06:02 oriol has joined #css 16:06:02 Subtopic: Admin 16:06:03 present+ 16:06:07 swapping order of 2 & 3 on agenda 16:06:12 adding republication as a topic 16:06:22 Subtopic: Clearer definition of "nest-containing" 16:06:29 github: https://github.com/w3c/csswg-drafts/issues/7972 16:06:30 present+ 16:06:31 Zoom for web is not working for me... I've tried multiple browsers at this point. 16:06:44 (doesn't work in either Chrome or Firefox) 16:06:56 TabAtkins: If a selector starts with a combinator, we assume relative selector 16:07:05 TabAtkins: insert & and interpret accordingly 16:07:20 TabAtkins: If no such combinator, we need to check if this should be relative selector or if there's an & deeper in 16:07:43 TabAtkins: Could have something like "foo &" or ":not(&) ..>" 16:07:52 TabAtkins: But spec is not super clear what it means by "contain" an & 16:08:08 :is(&:unknown, .foo) 16:08:09 TabAtkins: e.g. what happens if & is inside :is() within branch that's ignored by invalidity? 16:08:18 TabAtkins: is that &-containing or not? 16:08:25 TabAtkins: Depending on our answer, how does it affect serialization 16:08:29 TabAtkins: Listed a few options 16:08:37 TabAtkins: 1. Only look at top-level, not inside parens 16:08:47 TabAtkins: 2. Look everywhere except inside forgiving parsing list 16:09:01 davidleininger has joined #css 16:09:29 TabAtkins: 3. Get deeper into parsing guts, say something about & inside even forgiving selector lists that might be invalid, and preserve that info across serialization even though normally drop such branches during reserialization 16:09:42 TabAtkins: fantasai and I thought #3 would be weird, because [missed] 16:09:53 TabAtkins: so initial suggestion was #1, simple suggestion 16:09:55 chris has joined #css 16:10:01 present+ 16:10:15 TabAtkins: after discussion with Natalie and Miriam, there were too many use cases for & deeper than top-level 16:10:29 TabAtkins: and having selector only in one branch and not others is weird and unusual, so not that important if behavior differs in branches 16:10:31 OK, given that the meeting link doesn't work for me in (a) Chrome/Mac (b) Firefox/Mac, and (c) Firefox/Linux, I'm going to give up for technical difficulties... see you at the regular call in 50 minutes. 16:10:41 TabAtkins: so suggestion is to look for & in every branch, invalid or not 16:10:52 TabAtkins: needs authors to be a little more careful 16:11:01 TabAtkins: but simple: if there's an & anywhere, it's got one 16:11:02 q+ 16:11:17 TabAtkins: Might need to tighten up parsing by having known-invalid selectors serialize as something particular 16:11:34 TabAtkins: So definition proposed is that it's containing an & if it contains an & anywhere 16:11:54 fremy: Tab mentioned that it's weird to have branches where some contain & but some do not 16:12:02 fremy: I agree, if you're doing that it's probably a mistake 16:12:09 fremy: But then why can't we make this a rule? 16:12:16 Present+ 16:12:17 fremy: if you have a branching selector, have to have & in every branch 16:12:25 (ok, zoom started working when I clicked on the grayed-out "More ..." button at the bottom) 16:12:29 fremy: otherwise invalid 16:12:47 TabAtkins: Valid question, we could, but probably doesn't matter because unusual case 16:13:01 TabAtkins: so I don't think it's necessary 16:13:07 TabAtkins: but I could do either way 16:13:23 ack fremy 16:13:46 fantasai asks for an example 16:14:10 TabAtkins: Consider the previous example, where only one branch of :is() has an &. Difference is we'd make that illegal 16:14:17 so `:is(&:unknown, .foo)` would be an invalid selector 16:14:41 TabAtkins: Also weird, it would be the only way for :is() to invalidate a selector 16:14:43 in case it helps, as an author, I'd expect .foo { :is(&, .bar) {} } to be interpreted as .foo, .foo .bar , not .foo, .bar 16:15:01 TabAtkins: another little bit of complexity that we could avoid for a corner case 16:15:20 fremy: Yes, I think I agree. It might not make much sense, but you might want it 16:15:57 TabAtkins: Lea posts a different suggestion, which is that you take different paths in deciding relative selector or not 16:16:14 TabAtkins: Problem is that doesn't map directly to :is() notation, so suspect it would complexify implementations 16:16:56 leaverou there was a question for you 16:17:14 fantasai: Do we have any comments from implementers on lea's question? 16:17:27 chris: what was it? I'm looking at the minutes but can't find it. I'm not on the call, as I'm on the TAG plenary 16:17:36 TabAtkins: I can't say for sure, but I think our implementation would find it difficult 16:17:47 s/sure/sure because our implementers aren't on the call/ 16:18:00 emilio: Doing what Lea suggests would be fairly annoying 16:18:06 @ lea, the question was whether TabAtkins's reply to you addressed your concern or not 16:18:10 emilio: and could have problems with selectors growing exponentially, which is not great 16:18:24 emilio: I think this is a problem Blink had when they initially implemented this 16:18:42 TabAtkins: When trying to do naive impleementation of :is(), it was a problem 16:18:43 @ lea, and (I guess) whether this was something you felt strongly about 16:19:21 fremy: no, this is not something I feel strongly about 16:19:32 Rossen_: Current proposal is simply option 3 without any further modification (and by option 3 we mean option 3 in IRC, which is option 2 in the issue) 16:19:44 proposed resolution: Relative-ness is decided based on & appearing *anywhere* in the selector, including in (potentially-invalid) branches of a forgiving-selector-list 16:20:08 plinss: I presume it's only legal for one & in selector? 16:20:11 TabAtkins: no can have multiple 16:20:17 plinss: so I can say &.foo &.bar? 16:20:29 though I do find it fairly weird if you can "break" out of the nest by doing `:is(&, .bar)`. and if :is(.bar) matches different things than the .bar in :is(&, .bar) 16:20:31 TabAtkins: & represents elements matched by the parent selector 16:20:49 TabAtkins: would be two different elements that both happen to match the same parent 16:20:52 plinss: fair enough 16:21:07 ack fantasai 16:21:35 fantasai: suggest we clarify that if I have any kind of selector garbage inside :is(), including an & nested deep inside of the garbage, that & is considered to be an & for these purposes? 16:21:40 TabAtkins: correct 16:21:47 :is(:unknown(&)) 16:22:01 :is([something (&something else { } ) ]) 16:22:10 :is([{(&)}]) has an ampersand in it, per the suggested resolution 16:22:42 TabAtkins: If during selector parsing you see an & delim token, mark the selector as having an & and continue normal parsing 16:23:11 Rossen_: any other feedback? 16:24:05 RESOLVED: Relative-ness is decided based on & appearing *anywhere* in the selector, even nested inside anything else 16:24:16 TabAtkins: Question is what to do about serialization 16:24:37 TabAtkins: Option 1: do nothing special. This might mean that an invalid branch is dropped, which changes selector interpretation 16:24:58 TabAtkins: Option 2: serialize any :is() branch that contains an & as-is 16:25:35 TabAtkins: Option 3: serialize any :is() branch that contains & as something guaranteed to be invalid, e.g. "&:not(&)" (which is guaranteed to not match but definitely contains an &) 16:25:39 q+ 16:25:44 emilio: Only doing ???? 16:26:09 TabAtkins: Option 4: do 2 or 3 if that's the only branch that contains an & (and thus the selector interpretation is dependent on that branch existing) 16:26:18 ack emeyer 16:26:31 emeyer: wrt option 1, what are the concerns? 16:26:55 emilio: It's bad if something serializes and then whe you re-parse it it's interpreted differenly than the original 16:27:16 TabAtkins: So you can have a selector that's relative in new browsers and non-relative in older browesers, which is significant change 16:27:33 emilio: You lose the forgiveness ... which is annoying 16:27:42 [missed] 16:28:00 My preferences: definitely not option 1, weakly prefer option 3 (without the option 4 variant). 16:28:14 emilio: Implementationwise, it feels like it would be nice not to account for & in invalid branches, so you can compute the relativeness of a selector independently of the parsing process 16:28:30 +1 dbaron 16:28:38 emilio: ... but all the options are weird in their own way 16:28:54 q? 16:28:55 @ TabAtkins, for option 3 `&:not(&)` might be costly to compute, how about something truly invalid like `::-invalid-(&)` 16:29:04 present+ 16:29:04 [Tabatkins summarizes dbaron's comment into audio] 16:29:24 present+ 16:29:28 plinss: [asks about option 2] 16:29:48 emeyer: option 2 is consistent with media queries, where we preserve the CSS string for general enclosed 16:29:51 TabAtkins: fair 16:29:55 s/emeyer/emilio 16:30:09 [Leaning towards 2 or 3] 16:30:16 I'm also fine with 2. 16:30:17 Straw Poll: Option 2 vs Option 3 16:30:28 abstain 16:30:33 abstain (defer to implementers) 16:30:38 either wfm 16:30:42 2 16:30:46 2 (based on the descriptions in the comment primarily, as I've missed a lot of the discussion due to being on another call) 16:30:46 3, 2 16:30:52 abstain 16:30:59 abstain 16:31:01 abstain 16:31:01 2 16:31:03 abstain 16:31:05 abstain 16:31:17 abstain 16:31:20 emilio: other issue of option 2 is that it changes behavior from today 16:31:40 TabAtkins: in theory, yes, if someone is putting & inside their invalid :is() selector, it will change serialization 16:32:04 emilio: We probalby want to do it for all invalid selectors, so that :unknown is reserialized as-is, regardless of & 16:32:13 TabAtkins: I suggest taking up separately 16:32:43 Proposed to go with option 2 16:33:03 and emilio to open issue about switching serialization for all selectors 16:33:17 plinss: In my mind, would want to be consistent for all selectors 16:33:22 TabAtkins: I agree in theory, don't care too much 16:33:46 RESOLVED: Option 2 16:34:19 TabAtkins: open separate issue for the rest, because it may have a compat risk 16:34:34 plinss: If the other one goes the other way, might want to revert this one 16:34:54 TabAtkins: currently don't have compat either way for & stuff 16:35:02 plinss: Yes, but I want us to note in the other issue to reconsider this one 16:35:19 I can open the issue 16:35:27 ACTION: emilio to open new issue 16:35:45 Subtopic: CSSOM for nested media query rules 16:35:52 github: CSSOM for nested media query rules 16:36:03 github: https://github.com/w3c/csswg-drafts/issues/7850 16:36:18 TabAtkins: Spec as currently defined alllows you to nest conditional rules and other rules directly inside a style rule 16:36:22 https://github.com/w3c/csswg-drafts/issues/8356 16:36:24 TabAtkins: in that context, they can have properties directly in them 16:36:40 TabAtkins: so e.g. div { ... @media something { color: blue; } } 16:36:48 TabAtkins: question is, how do we reflect this in the OM 16:36:54 TabAtkins: CSSMediaRule doesn't have .style 16:37:01 TabAtkins: One possibility is to add .style 16:37:28 TabAtkins: other possibility is treat such properties as wrapped in & { .. } 16:37:37 TabAtkins: They would be exposed in their current OM 16:37:39 -> 16:37:52 -> https://github.com/w3c/csswg-drafts/issues/7850 16:38:13 TabAtkins: I suggest going with #2, because then we don't need to change the OM for any of these rules 16:38:39 q? 16:38:43 TabAtkins: And also, if you're clearing out an at-rule, currently you can just replace .cssRules but if we add .style then you have to remember to clear out .style also 16:38:48 TabAtkins: So that's my proposal 16:38:57 +1 to the second option 16:39:00 TabAtkins: wrap directly-contained properties with `& { ... }` 16:39:20 q? 16:39:26 q+ 16:39:33 dbaron: Is there a way to distinguish these rules from real ones written that way? 16:39:49 TabAtkins: No, and they would reserialize out with the & { ... } wrapper 16:39:54 ack lea 16:39:55 TabAtkins: other than that no author-visible difference 16:40:11 s/they would reserialize/we have a followup issue to discuss whether the reserialize/ 16:40:19 lea: I think option 2 is find for reading code, but could we author a shortcot for this sort of thing, e.g. adding .style to the OM 16:40:28 lea: to provide a shortcut for creating this rule if it doesn't exist 16:40:41 lea: if you read back .cssRules, it's fine to have the extra rule 16:40:54 TabAtkins: setting .style sometimes creating a new rule is a bit magic 16:40:55 ntim has joined #css 16:41:15 +1 tab 16:41:15 TabAtkins: for any other case would have to manually construct the rule anyway? So I don't think it's worthwhile to have the additional magic for this case 16:41:29 Rossen_: Lea, what you're suggesting can be added later 16:41:42 lea: yes, that's why I don't feel too strongly about it 16:41:53 dbaron: When I asked if they were distinguishable, I felt they should be distinguishable somehow 16:42:19 dbaron: Seems nice if can reserialize in original form 16:42:26 dbaron: also nice to distinguish 16:42:37 TabAtkins: other than serialization, why distinguish? 16:42:41 dbaron: can't think of anything 16:42:55 dbaron: if there was an accessor on the container for this kind of thing ... 16:43:08 dbaron: then you could compare to see if it's different 16:43:22 dbaron: though maybe that's a bad idea 16:43:29 q+ 16:43:29 Rossen_: sounds like you talked yourself out of it 16:43:30 q+ 16:43:41 ack emilio 16:43:43 emilio: Is this rule always need to be the first one? 16:43:50 TabAtkins: that's a great question, I don't have a strong opinion on it 16:44:03 TabAtkins: e.g. do properties outside rules all glom together ? 16:44:18 TabAtkins: I don't have a strong opinion 16:44:18 s/though maybe that's a bad idea/it would also let you do what lea was asking with a single additional access, if the access implicitly created it, though maybe that's a bad idea/ 16:44:24 ack patrickangle_ 16:44:45 patrickangle_: Going back 1 step, we'll need to be able to distinguish for developer tools anyway, so will have to support in the engine even if not Web-exposed 16:44:55 ack fantasai 16:44:55 fantasai, you wanted to point out cascade issues 16:45:08 fantasai: question of whether these glom together or not is pretty important bc it chagnes the cascade implications 16:45:33 mathtieud has joined #css 16:45:35 fantasai: can have a selector that has the same specificity as the &, so if you have interleaved decls and they all have the same specificity, where they occur in order is gonna make a difference as to the output of the cascade 16:45:49 +1 - I don't think declarations should get merged like that 16:45:50 fantasai: so if decls get glommed together and shifted to the top is something that needs to be definitely decided 16:46:00 fantasai: because that impacts the cascade 16:46:07 I would not support "moving to the top" the declarations 16:46:12 fantasai: I think we should do whatever we do outside of conditional rules 16:46:13 matthieud has joined #css 16:46:30 fantasai: so if outside this context we glom them all together and handle them as occuring before all other rules, then we should do the same thing insdie of conditional rules 16:46:37 fantasai: And if it's not, we shouldn't 16:46:46 q? 16:47:06 TabAtkins: We do indeed effectively glom all the un-nested declarations together outside of conditional rules, so I suggest we glom them together 16:47:18 fremy: I don't like that. I prefer in both cases we create an & rule 16:47:27 today, in `.foo { color: red; & { ... } width: 100px; }`, we treat it as equivalent to `.foo { color: red; width: 100px; & {...}}` 16:47:57 TabAtkins: First proposed resolution, properties in a default style rule get auto-wrapped in `& { ... }` 16:48:01 Rossen_: objections? 16:48:29 RESOLVED: properties in a conditional rule get auto-wrapped in `& { ... }` 16:48:59 TabAtkins: For declarations which are not at the top, do we do the same thing as style rules or do we wrap each bunch independently or move them all to the top? 16:49:06 fremy: another option is to make them invalid 16:49:13 fremy: idk if worth considering 16:49:13 1. Similar to style-rules-in-style-rules, treat all nested props as if they occurred together at the top, before any other rules? 16:49:39 fremy: I find it pretty confusing that you can write something after something else, and it's treated as coming before 16:49:48 2. Wrap properties in the default-style-rule where they stand, letting them interleave. 16:50:03 ??: If serialize with .cssText, then [missed, could be confusing] 16:50:04 3. Treat this as invalid (presumably dropping properties that occur after rules?) 16:50:13 s/??/matthieudubet/ 16:50:31 TabAtkins: for .cssText, I woudl serialize in canonical form 16:50:55 TabAtkins: assuming we glom together, then if first rule in your .cssRules is & by itself, then we serialize that as naked properties 16:51:05 matthieud: That's what we assume, but then ppl write declarations and then [missed] 16:51:10 matthieud: but maybe it's not an issue? 16:51:47 TabAtkins: My proposed resolution is that we treat interleaved declarations the same way in style rules, i.e. they are all sorted to the top 16:52:05 fremy: Can we resolve to do exactly as for style rules, but then discuss if that's what we actually want for style rules? 16:52:10 TabAtkins: works for me 16:52:17 +1 16:52:36 Proposed resolution: do exactly as for style rules wrt sorting of declarations interleaved with style rules 16:52:45 ack fantasai 16:52:55 fantasai: the reason we didn't do it for style rules is we don't have OM ability to support that for style rules 16:53:11 fantasai: the expectation is that all decls would be in a .style property, and to do that we can't carea bout their order wrt .cssRules 16:54:01 fantasai: So worth pointing out that a .cssRules in a style rule will not contain the naked properties 16:54:01 fantasai: So that's different from in conditional rules, which is a little inconsistent. 16:54:12 fantasai: So do we really want that inconsistency, or do we want to do something like Lea's proposed magic, or...? 16:54:20 fantasai: but it is inconsistent 16:54:55 TabAtkins: I would have preferred something like this resolution for style rules as well, but for clear legacy reasons we can't do that for style rules -- authors need to be able to manipulate in .style 16:55:11 TabAtkins: but we need to make sure that the cascade is consistently handled 16:55:57 fantasai: one thing we could do to keep it consistent is to have .style represent the first &-selector'd rule inside of .cssRules 16:56:03 fantasai: and then do that for both style and conditional rules 16:56:13 ack fantasai 16:56:21 fantasai: And all subsequent groups of declarations would each get their own &-rule that would *not* be accessible via .style 16:56:33 fantasai: And that would give the same interface for both. It would keep the interleaved order of decls. 16:56:36 (what fantasai just described is my preference) 16:56:51 fantasai: Not sure if that's what we want, but it would give consistent OM & cascading. 16:57:01 flackr has joined #css 16:57:11 s/cascading/cascading while allowing preserving interleaved order/ 16:57:20 plinss: [something] 16:57:24 TabAtkins: Yes 16:58:21 plinss: An alternative is, inside conditional rules all properties are wrapped in an &-rule, but in a regular style rule the *first* group of properties is not, but later ones do 16:58:53 plinss: so in `.foo { color: red; &{...} color: blue; }`, it's equivalent to `.foo { color: red; &{...} &{color: blue;}}` 16:59:03 emilio: perf-wise that seems slightly problematic 16:59:07 q? 16:59:17 emilio: not quite clear how it would work with shorthands 16:59:22 emilio: I think coalescing them makes sense 16:59:34 emilio: otherwise using shorthands becomes different inside a conditional rule vs in a style rule 17:00:02 emilio: I'm not a fan of wrapping everything inside of different rules - it means now you have to selector-match more times 17:00:07 I am not sure I understood that, but we are out of time, so we should clarify on thread 17:00:09 jfkthame has joined #css 17:01:16 Rossen_: Objections? 17:01:32 fantasai: Seems like there ar emore things to consider than we thought at the start, wouldn't be good to resolve yet 17:01:33 Rossen_: Okay, take the rest to the thread 17:01:58 github-bot: end topic 17:03:02 Zakim, end meeting 17:03:02 As of this point the attendees have been Rossen_, fremy, dholbert, jensimmons, miriam, plinss, oriol, chris, dbaron, lea, emeyer 17:03:02 RRSAgent, please draft minutes v2 17:03:03 I have made the request to generate https://www.w3.org/2023/01/25-css-minutes.html Zakim 17:03:10 I am happy to have been of service, Rossen_; please remember to excuse RRSAgent. Goodbye 17:03:10 Zakim has left #css 17:03:11 Rossen_ has changed the topic to: Agenda for Jan 25: https://lists.w3.org/Archives/Public/www-style/2023Jan/0010.html 17:03:52 Zakim has joined #css 17:03:52 Zakim, start meeting 17:03:52 RRSAgent, make logs Public 17:03:53 Meeting: Cascading Style Sheets (CSS) Working Group Teleconference 17:03:53 alisonmaher has joined #css 17:03:53 present+ 17:03:53 present+ 17:03:53 present+ 17:03:53 present+ 17:03:53 present+ 17:03:53 present+ 17:04:03 present+ 17:04:03 present+ 17:05:25 smfr has joined #css 17:05:42 brb, making another coffee (happy to minute when i'm back 17:05:51 wait my dang phone just dropped the call 17:06:01 present+ 17:06:01 present+ 17:06:11 present+ 17:06:44 Present+ 17:07:19 present+ 17:07:45 sribenick: emeyer 17:08:16 present+ 17:08:25 Rossen_: Any changes to the agenda? 17:08:45 argyle has joined #css 17:08:45 flackr: Propose breakout session for scroll animations? 17:08:53 Rossen_: Let’s do that on the mailing list 17:08:58 present+ 17:09:21 fantasai: We should publish updated WD of CSS Nesting, it was last updated 2021 17:10:35 plinss: Want to revert a previous resolution before republishing, but it’s not a big deal since it is a WD 17:10:42 fantasai: Agreed 17:10:43 present+ 17:10:54 s/Agreed/Yes, we can add an issue about lookahead/ 17:10:56 RESOLVED: Publish updated WD of CSS Nesting with plinss change 17:11:23 s/plinss change/an added issue about lookahead/ 17:11:38 Topic: hyphenate-character doesn't just put hyphen at end of line 17:11:44 github: https://github.com/w3c/csswg-drafts/issues/2975 17:12:06 fantasai: Last two comments on issue clarify that single-string value changes what is inserted, but not where 17:12:20 +1 17:12:24 Rossen_: Any opinions? 17:12:42 florian: I think it’s the right thing to do for now 17:13:09 …When we look into expansions, we’ll need to think harder about whether this is a novelty thing or about symbols in other languages 17:13:34 RESOLVED: A single-string value changes what is inserted, but not where 17:13:35 s/symbols in other languages/manually defining hyphenation in unsupported languages/ 17:13:53 Topic: Hyphenation styling should apply to the wbr element 17:13:54 s/a novelty thing/novelty hyphens/ 17:13:58 -> https://github.com/w3c/csswg-drafts/issues/5972#issuecomment-826582035 17:14:00 github: https://github.com/w3c/csswg-drafts/issues/5972 17:14:31 fantasai: We propose to close WONTFIX becase is a soft-wrap but not a hyphenation opportunity 17:14:52 …HTML could extend itself to do more, but current spec is written that if that ever happens, this will all apply to that correctly 17:15:30 +1 to wontfix 17:15:30 RESOLVED: Close WONTFIX 17:15:49 Topic: Better describe the likely outcomes of hyphenation (editorial) 17:15:54 github: https://github.com/w3c/csswg-drafts/issues/5973 17:15:56 -> https://github.com/w3c/csswg-drafts/issues/5973#issuecomment-1366321015 17:16:37 fantasai: We added examples 17:17:10 …and made a normative change to say a hyphenation character property app;lis to soft hyphenation opportunities 17:17:27 s/app;lis/applies/ 17:18:03 …if there’s supposed to be a spelling change in a hyphenated word, you should apply that 17:18:17 …we want the UA to make a best effort but it may or may not match up 17:18:31 normative changes -> https://github.com/w3c/csswg-drafts/commit/03935eae48ead18beed74ff665f8724c532b49a9 17:18:44 florian: Examples were added to show these sorts of situations 17:19:24 Rossen_: Anything else? 17:19:28 (silence) 17:19:53 Any objection to these changes, or do we need more time? 17:20:18 florian: We did get a heart emoji on the issue, so there’s that 17:20:31 RESOLVED: Accept changes 17:21:05 Topic: Republishing Tasks Permathread Administrative Tracker For external review / publication tracking issues 17:21:15 github: https://github.com/w3c/csswg-drafts/issues/6900 17:21:41 fantasai: We compiled a changes list and disposition of comments 17:21:52 …There’s a minor change we made as a followup to one of the issues 17:22:05 …Assuming that’s good, we’d like to request an updated CR snapshot 17:22:05 https://github.com/w3c/csswg-drafts/commit/d3ed39e04fb2a3087aa745dce57abd59c93412c5 17:23:07 `text-justify: distribute` addition 17:23:38 fantasai: spec was updated to allow Firefox treatment 17:24:10 florian: About testing, all normative changes since last CR do have tests 17:24:21 …Spec itself has pretty extensive test coverage 17:24:32 …Not complete, but pretty exhaustive 17:24:49 Rossen_: All the more reasons to republish 17:24:57 RESOLVED: Republish! 17:25:05 s/Republish CR/ 17:26:04 Topic: Multi-line ::first-letter 17:26:07 github: https://github.com/w3c/csswg-drafts/issues/2254 17:26:16 -> https://github.com/w3c/csswg-drafts/issues/2254#issuecomment-1367476156 17:26:33 oriol: We discussed in the past what happens if first-letter container is very narrow 17:26:41 …And then would span multiple lines 17:26:52 …We resolved to clamp to match characters in the first line 17:27:09 …Focus of the previous proposal was not addressing this question 17:27:29 …Better to discuss this and clarify 17:27:44 …So: what to do if the first-letter container only contains punctuation? 17:28:06 …Spec currently selects punctuation if there’s another letter character that appears later in the container 17:28:34 …This seems strange; if the letter character is in another line and you remove it, this suddenly makes the first-letter able to match punctuation characters 17:28:44 s/able/unable/ 17:29:07 …first-letter should only be allowed to match punctuation 17:29:38 …I think Gecko’s behavior makes more sense 17:29:58 …Some prefer the specification as it is now 17:30:32 Rossen_: Opinions? 17:30:41 (silence) 17:31:16 Rossen_: Any objections to resolving on the option to use Gecko’s behavior? 17:31:57 iank_: Basically logic UAs use to skip punctuation characters would have that logic removed? 17:32:24 oriol: Yes, since the only one affected would be Blink, it would need to start matching punctuation-only containers 17:32:44 Rossen_: I believe the answer is yes, Blink can stop skipping punctuation-only 17:33:12 RESOLVED: Restriuction will be relaxed to allow punctuation-only matching 17:33:25 s/Restriuction/Restriction/ 17:33:35 Topic: Clarification: do ::placeholder/:placeholder-shown apply to