Luke's Avatar

Luke

@lukewarlow.dev

πŸ’» Web Platform Engineer at @igalia.com Participate in WhatWG, CSSWG, OpenUI CG πŸ¦† Nature lover 🏴󠁧󠁒󠁷󠁬󠁳󠁿 Cardiff

2,328
Followers
674
Following
1,688
Posts
26.08.2023
Joined
Posts Following

Latest posts by Luke @lukewarlow.dev

Video thumbnail

Initial prototype of a `<toolbar>` element is coming along. Largely piggybacks off the focusgroup code so it's actually quite simple to do.

Lots to discuss and tweak before it's finished but got to start somewhere.

06.03.2026 17:39 πŸ‘ 13 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I personally think that camera and microphone is an easier sell because of the kinds of UI you get for those permissions and how they are often necessary to the flow.

Geolocation specifically is often not a requirement and generally stays out of your way until you ask. I could be completely wrong.

06.03.2026 11:19 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Yeah exactly, we already have the geolocation JS API, which you can use with any button you want. Yeah there's some rough edges with the permissions BUT also it's the status quo.

There's a nice carrot but there's no real stick for this, and it looks weird as heck on your site. Why bother migrating?

06.03.2026 10:51 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

In my humble opinion this is an excercise in futility and pretty much no stick (that's web compatible anyway) is going to be strong enough for the carrot to be worth it...

You can hide the icon but not text which means this isn't going to work on most pages, maps all have small icon only buttons.

06.03.2026 10:41 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

If you make another element go too close to it (/"overlap" it) it also ceases to work too. Imo the whole element should just visibility:hidden in those cases to make it super obvious you've done something not supported by this element. Though that might show how potentially silly this whole thing is

06.03.2026 10:39 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Blink: Intent to Prototype: HTML toolbar element Blink: Intent to Prototype: HTML toolbar element

Blink: Intent to Prototype: HTML toolbar element

06.03.2026 00:06 πŸ‘ 28 πŸ” 7 πŸ’¬ 0 πŸ“Œ 0

Ah yeah, basically all origin trials will also be available under that flag (or rarely in a dedicated one). Origin trials are useful for testing with your real users who can't/shouldn't go and change flags.

05.03.2026 22:32 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

chromium.googlesource.com/chromium/src... it's this seems it is experimental though so should be under the general experimental web platform features flag.

05.03.2026 22:12 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I'm guessing it's maybe behind a separate flag so it's not exposed under experimental web platform features?

05.03.2026 22:06 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Nothing right now to my knowledge but it can definitely be proposed in OpenUI.

05.03.2026 21:43 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Isn't there some trick with CSS variables where you can use them as a state toggle?

05.03.2026 21:07 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Ahhh! Nice. Didn't realise that had been prototyped.

05.03.2026 20:53 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

See now I'm wondering how you've done this demo... Grid isn't supported yet so how do you move both directions?

Either way that's an amazing abuse of this πŸ˜‚

05.03.2026 18:57 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

I asked about, and it doesn't currently handle that it specifically works with "real" focus but it's definitely a use case with interest.

05.03.2026 18:08 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
GitHub - gfellerph/focusgroup-polyfill: An experiment around https://open-ui.org/components/focusgroup.explainer/ An experiment around https://open-ui.org/components/focusgroup.explainer/ - gfellerph/focusgroup-polyfill

There's two I'm aware of github.com/gfellerph/fo... and github.com/doeixd/scope...

I'm not sure how complete either of them are right now, I agree it would be good to get one that we rubber stamp from Open UI. We link to polyfills in other explainers so we could do the same for this one.

05.03.2026 17:08 πŸ‘ 5 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
Request for developer feedback: focusgroup Β |Β  Blog Β |Β  Chrome for Developers Try out focusgroup and comment on the proposal.

Open UI has been working on speccing out the focusgroup attribute: a declarative way to support roving focus & add keyboard nav to composite widgets like toolbars/menus

We'd love your feedback!

Learn more & see open questions: developer.chrome.com/blog/focusgr...

H/t to Edge folks for prototyping

05.03.2026 16:54 πŸ‘ 67 πŸ” 20 πŸ’¬ 6 πŸ“Œ 2
Accessibility and PDF documents Accessibility # When we think of accessibility, we tend to picture it as something designed for a small minority. The reality is much broader: 16% of the world’s population β€” 1.3 billion people β€” live...

just posted about our Tagged PDFs work here:
vignatti.com/posts/access...

04.03.2026 18:31 πŸ‘ 7 πŸ” 5 πŸ’¬ 0 πŸ“Œ 0

Yeah idk maybe winter TC isn't the right place, though I don't think it's just the minimum common API that is under the umbrella (might be wrong).

But more of the existing APIs implemented in node and deno would be nice. Rather than packages that work differently with different APIs.

05.03.2026 11:00 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Definitely like the idea of exposing more of these commonly used APIs on 'server'. I've always wondered why say web usb isn't implemented anywhere, you have to pull in a separate package to do it.

05.03.2026 10:01 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

My big concern would be the 8GB of RAM. Imo you're gonna be stretching that trying to do much more than just using the browser.

It feels like it's not cheap enough to justify itself to me, a Mac mini is more powerful and not much more expensive?

05.03.2026 09:05 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Ah install size okay. I'm so used to thinking about bundle size (though I appreciate not having MBs in my node modules!)

04.03.2026 22:33 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

When you say it's 6.7kb I'm assuming that's the node version and in the browser it's very small?

04.03.2026 22:27 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I wonder if GitHub might search transitive deps via package locks too and that's why your spot checks seemed to fail you? Just guessing as to why that might happen.

04.03.2026 21:41 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I know the npm data on dependents might not itself be super useful, I have a types package that I know is used by Microsoft for some VSCode thing but that obviously doesn't show in the dependents on npm. GitHub does find it though.

04.03.2026 21:40 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Maybe @npmx.dev should surface this kind of information?

04.03.2026 21:35 πŸ‘ 3 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
Prototype appearance base range input

Prototype appearance base range input

appearance:base will save us one day... I need to be careful I don't break something while trying to implement it though.

03.03.2026 21:47 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Today in form controls are cursed, a range input with appearance none renders a thumb but no fill or track in all 3 major engines.

03.03.2026 21:29 πŸ‘ 10 πŸ” 1 πŸ’¬ 2 πŸ“Œ 0
Preview
Igalia 2026 Coding Experience Open for Applications | Igalia Igalia is an open source consulting firm specialised in the development of innovative projects and solutions. Our engineers have expertise in a wide range of technological areas, including browsers an...

Igalia is proud to announce our Coding Experience program for 2026! Open to all new programmers, students and self-learners alike, applications are invited till the 3rd of April in one or more of five areas of Open Source development.

Apply now!

www.igalia.com/2026/02/27/I...

02.03.2026 15:30 πŸ‘ 16 πŸ” 13 πŸ’¬ 0 πŸ“Œ 0

Though worth being aware that in browsers without setHTML this will mean you can't set HTML at all.

03.03.2026 13:30 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

The CSP to disable unsafe sinks is `require-trusted-types-for 'script'; trusted-types 'none';`. This enables trusted types enforcement and that no policy names are allowed. So you're forced to use setHTML for setting HTML, it then also blocks eval and other forms of dynamic JavaScript execution.

03.03.2026 13:29 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0