惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
WordPress大学
WordPress大学
小众软件
小众软件
Cloudbric
Cloudbric
AWS News Blog
AWS News Blog
腾讯CDC
量子位
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Vulnerabilities – Threatpost
Scott Helme
Scott Helme
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
IT之家
IT之家
Jina AI
Jina AI
Attack and Defense Labs
Attack and Defense Labs
S
SegmentFault 最新的问题
Simon Willison's Weblog
Simon Willison's Weblog
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
Google Online Security Blog
Google Online Security Blog
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
罗磊的独立博客
L
LINUX DO - 最新话题
博客园 - Franky
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
The Last Watchdog
The Last Watchdog
J
Java Code Geeks
AI
AI
C
Cisco Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Cyber Attacks, Cyber Crime and Cyber Security
Cisco Talos Blog
Cisco Talos Blog
博客园 - 三生石上(FineUI控件)
雷峰网
雷峰网
Help Net Security
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
云风的 BLOG
云风的 BLOG
I
Intezer
S
Securelist

Stefan Judis Web Development

Web Weekly #193 Web Weekly #192 Web Weekly #190 Web Weekly #189 Web Weekly #188 Intl can localize units, too! The scope of type guards and assertion functions Web Weekly #187 Web Weekly #186 Web Weekly #185 New lines are removed from WHATWG URLs Web Weekly #184 Nobody owes you anything How to scale elements and their layout with CSS "zoom" Notes on relying on the ARIA Authoring Practices Guide Web Weekly #183 Web Weekly #182 How to style the found search / "find in page" substrings Web Weekly #181 Web Weekly #180 ARIA roles can remove their children’s semantics (#tilPost) Clean up your Mac with open source The Trust Equation (#note) Firefox DevTools hides unreferenced CSS variables
Web Weekly #191
2026-05-11 · via Stefan Judis Web Development

Guten Tag! Guten Tag! 👋 

Have you heard that the new Git version makes rewriting history easier? Did you ever combine multiple CSS keyframe animations? And have you played with the new HTML in canvas API yet?

Turn on the Web Weekly tune and find some answers below. Enjoy!

Paweł listens to Hird - Keep You Kimi and says:

No chance I remember how this one landed on my playlist, but this is a solid, mesmerising tune. This baseline halfway through the song gives me goosebumps.

Do you want to share your favorite song with the Web Weekly community? Hit reply; there are two more songs left in the queue.


The biggest news this week was that Chrome 148 shipped a new Prompt API. Which means that Chrome now includes Gemini Nano. And that's right; this model probably already sits on your computer right now.

And there've been strong reactions because we're talking web standards here. Here's Mat's take:

At present, this is a web standard designed around a single company’s product.

Now, I'm not involved in spec writing but this part also seems very strange to me:

Once a model is available on your device, per the specification, any website you visit will be able to send prompts to that model without requesting permission to do so, then do whatever it wants with the responses.

Think of Chrome's scale. Millions and millions of machines downloading a 4GB model they didn't ask for so that websites can "do LLM things". Wild!

If you want to dive deeper into this topic, here are some more links:

Let's see how all this unfolds!


If you enjoy Web Weekly, share it with your friends and family.

A quick "repost" really helps this indie newsletter out. Thank you! ❤️

Web Weekly housekeeping 

You might have noticed, I took a bit of a break because I traveled to Valencia to give a Playwright workshop and well, I was late. Very late. And freaking out, frankly. But things went well and now we're back on track!

First of all, I need to apologize for a mistake I made last time. Ahmad booked an ad for his course "The Layout Maestro" and I made a silly copy and paste mistake. The email's CTA said "Start practicing for free" and of course high-quality materials neither can nor should be free. I'm sorry for the confusion that I caused.

Then, I plugged image-set() as being widely available and Barry had a great comment.

It's nice, but hiding assets in secondary resources like CSS (including inline attributes) chains their download 😢 So for LCP images and other important images, HTML (<img> or <picture>) are often better. Alternatively, if using this, also add a preload with a media attribute to the HTML.

Let's avoid using CSS backgrounds for important images!

Something that made me smile this week 

The letter "O"

I've got no words for this URL. 😅 I mean, why?

Ooo?

No code 

I didn't read any great non-coding related articles. Have you? If so, I'd love to read them, too!

A quick 2min task... 

npm, pnpm and bun config for release gating

With AI enabling more and more security incidents, you better be safe and tell your package manager not to slurp in every fresh package. Here's how to do it with npm, bun and pnpm.

No-Vary-Search (again) 

No-Vary-Search: key-order, params, except=("colour" "size")

Disclaimer: the No-Vary-Search header is currently Chromium-only, but if you want to serve cached HTML to URLs with lots and lots of random query (aka tracking) parameters, you should check it out!

Cache it!

Combined CSS animations 

box { animation: rotate 5s linear infinite, rotate 5s linear infinite paused; animation-composition: add; } box:hover { animation-play-state: running; }

Changing and tweaking infinite CSS animations is harder than you think. Temani explained how to do it using the animation-composition property and of course there's plenty of other CSS nerdery included.

Combine

Accessibility myths debunked 

Accessibility myths debunked

Oldie but goldie: Sergei shares and debunks common misconceptions about accessibility.

Build good stuff

And if that's not enough: here's Stephanie giving even more arguments for building an accessible web.

The wonderful weird web – Cursor camp 

A comic style waterfall with cursors swimming in a lake.

If you haven't gone hunting for all the goofy details in cursor camp, you're missing out!

Enjoy the camp

On readable code 

// Is this good code? const data = await fetchUsers()     .then(res => res.json())   .then(users => users.filter(u => u.active))   .then(users => users.map(u => u.name));

There's nothing more to say other than I agree with the points Matt makes about chaining too many methods.

Keep code readable

HTML in canvas 

A form that squishes and bounces when you drag a point on the form.

Are you ready for something very wild? There's a new experimental HTML in Canvas API and you can play around with it in Chromium browsers after enabling a flag. After you've done that, you can put a layoutsubtree attribute on a canvas element and it'll render HTML in the canvas element. And because it's in the canvas, you can apply all sorts of funky effects. Absolutely wild!

Customize HTML rendering

And if you're looking for a more practical example: here's Eric explaining how this feature solves a long overdue tooling problem.

More on the history of the sizes attribute 

&lt;img loading=&quot;lazy&quot; src=&quot; img-650.jpg&quot; srcset=&quot;img-650.jpg 650w, img-960.jpg 960w, img-1400.jpg 1400w&quot; sizes=&quot;auto, (min-width: 1040px) 650px, calc(94.44vw - 15px)" alt="...">

I already shared my excitement about sizes=auto in WW 190 and WW 189, but because it's such a fundamental change to how we load optimized images, I think it's more than warranted.

And there's news. Chromium was first to implement it, and now Firefox has followed. Only Safari is missing! If you want to learn more about the history of the attribute and how to apply sizes=auto progressively today, Mat shared his love-hate relationship with sizes.

Load the right images

Why you should update Git 

$ git history reword 470eb6

Git 2.54 comes with a feature that I bet you've been waiting for. At least I have. git history reword <commit> lets you reword commit messages without the interactive rebase dance. Finally!

Reword

Random MDN – RegExp.escape() 

const url = "https://webweekly.email"; const unsafe = new RegExp(url); console.log(unsafe.test("https://webweeklyXemail")); // true const safe = new RegExp(RegExp.escape(url)); console.log(safe.test("https://webweeklyXemail")); // false

From the unlimited MDN knowledge archive...

If you're dealing with regular expressions based on dynamic input, escape can help you out!

Escape!

TIL recap – Global Git message templates 

.gitconfig [commit]   template = ~/.gitmessage

Speaking of Git, did you know that you can set up global commit message templates?

Align your messages

New on the baseline 

Baseline Newly Available: contrast-color / Baseline widely available :user-invalid

Short'n'sweet: contrast-color is now Baseline newly available and :user-invalid entered widely available. 🎉

Three valuable projects to have a look at 

A new Tiny Helper 

Turn your handwriting into a real font — free

Disclaimer: I haven't tried this, but if you've ever wanted to turn your handwriting into a font, FontCrafter might be exactly what you're looking for.

Fontify yourself

Thought of the week 

This quote hits home big time, doesn't it?

Nobody gets promoted for the complexity they avoided.

Did you learn something from this issue? 

❤️ If so, join 40 other Web Weekly supporters and give back with a small monthly donation on Patreon or GitHub Sponsors.

This is all, friends! 

Loved this email? Hated this email? I want to hear about it!

If you think something needs improvement or something sparked some joy, reply to this email because I want to know more!


And with that, take care of yourself - mentally, physically, and emotionally.

I'll see you next week! 👋

Join 6.5k+ developers and