<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-08-20T06:29:59Z</updated>
  <generator>https://nostr.now</generator>

  <title>Nostr notes by Web Standards</title>
  <author>
    <name>Web Standards</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.now/npub1n3cynqvfwm5ysnhllmkhp22pynulpat6rgds6q7dl348fmrhdwwsvt0vg8.rss" />
  <link href="https://nostr.now/npub1n3cynqvfwm5ysnhllmkhp22pynulpat6rgds6q7dl348fmrhdwwsvt0vg8" />
  <id>https://nostr.now/npub1n3cynqvfwm5ysnhllmkhp22pynulpat6rgds6q7dl348fmrhdwwsvt0vg8</id>
  <icon>https://files.mastodon.social/accounts/avatars/115/452/321/018/560/572/original/44308ff818f796d7.png</icon>
  <logo>https://files.mastodon.social/accounts/avatars/115/452/321/018/560/572/original/44308ff818f796d7.png</logo>




  <entry>
    <id>https://nostr.now/nevent1qqsy87dy8zzv8segcrgarua66a9pkujr6lfzlyu0ktc9xkxzzk7dvnszyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e62sqhcf</id>
    
      <title type="html">Intent to ship: JPEG XL. @npub1dpj…e0jl explains that Firefox ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsy87dy8zzv8segcrgarua66a9pkujr6lfzlyu0ktc9xkxzzk7dvnszyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e62sqhcf" />
    <content type="html">
      Intent to ship: JPEG XL. &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1dpjjsyh6ag5p0anhrpzp8d73var3v5l06t4aktylcgslef40ff2q08e0jl&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Jake Archibald&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1dpj…e0jl&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; explains that Firefox is shipping JPEG XL support built on jxl-rs, the Rust decoder from Google Research that avoids the security surface of the 100,000-line C&#43;&#43; implementation. AVIF still wins on photos at lossy quality, but JPEG XL is better at lossless, recompressing JPEGs, and at progressive rendering, so large images appear as they download. Test both with a representative set of your own images. #image #firefox&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://hacks.mozilla.org/2026/08/intent-to-ship-jpeg-xl/&#34;&gt;https://hacks.mozilla.org/2026/08/intent-to-ship-jpeg-xl/&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/117/156/033/863/695/773/original/dde3cd41428cf5f7.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-25T12:00:09Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs0h98xskaa8n2m3j5u25h7s2vgq3zyn36wnkl8j6s444gp8algraczyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e60xg4u6</id>
    
      <title type="html">The case for tri-state dark mode toggles. @npub159n…rz7e ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs0h98xskaa8n2m3j5u25h7s2vgq3zyn36wnkl8j6s444gp8algraczyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e60xg4u6" />
    <content type="html">
      The case for tri-state dark mode toggles. &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub159nrmm8peyzxyh6aj39hxfrrl34yv3zfwk2xvxytuasmh9rmkukst0rz7e&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Bramus&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub159n…rz7e&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; replies to &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1al72g7fmyugvn5u372hjg078y295gephuy7xqkewaycaqvcexdhsw2kh5q&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Lea Verou, PhD&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1al7…kh5q&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; with the case two states can’t cover: an OS that switches themes by time of day. Pick light during the day, and a toggle that maps one value back to system goes dark at night, against an explicit choice. Two states work only if the automatic value is labelled, or if real values are stored, which then needs a reset. His poll ran 43 to 7 for three states. #design #color&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.bram.us/2026/08/18/the-case-for-tri-state-dark-mode-toggles/&#34;&gt;https://www.bram.us/2026/08/18/the-case-for-tri-state-dark-mode-toggles/&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/117/121/591/395/323/451/original/5236b6813f518531.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-19T10:00:58Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs0pm2j9kh0wlresf9sndleyuk8s8c28mgfx8ver734nwjcd2lkhdqzyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e609ym7w</id>
    
      <title type="html">Introducing Baseline Alerts. Jeremy Wagner presents a new ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs0pm2j9kh0wlresf9sndleyuk8s8c28mgfx8ver734nwjcd2lkhdqzyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e609ym7w" />
    <content type="html">
      Introducing Baseline Alerts. Jeremy Wagner presents a new notification system in the Web Platform Status dashboard that keeps you informed when web features change their interoperability status. Sign in with GitHub to track features and get alerts by email, RSS, or Slack when they reach Newly or Widely available. Set the frequency, save searches as personalized newsletters, and share results via URL or QR code. #baseline #interop&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://web.dev/blog/baseline-alerts&#34;&gt;https://web.dev/blog/baseline-alerts&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/116/883/773/199/447/252/original/b72514cd646f2669.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-07-08T10:00:40Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsru4c2vq8zwf5dmrvkhkf33f039049jzvp32sy9aw9xs9tn0p0nlqzyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6w6sdx3</id>
    
      <title type="html">Introducing the field guide to grid lanes. @npub130l…n5e6 ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsru4c2vq8zwf5dmrvkhkf33f039049jzvp32sy9aw9xs9tn0p0nlqzyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6w6sdx3" />
    <content type="html">
      Introducing the field guide to grid lanes. &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub130l4a0flfpzvlfdzecxuakyyl272vasdv352l33ez2q4rukjawpqddn5e6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Jen Simmons&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub130l…n5e6&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; announces a new interactive learning resource for CSS grid lanes. Tweak the playground with Waterfall and Brick modes, learn track sizing with fr, minmax(), and repeat(), and explore six real-world demos: photos, recipes, newspapers, menus, timelines, and pinboards. Best in Safari 26.4&#43;. #css #layout&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://webkit.org/blog/18098/introducing-the-field-guide-to-grid-lanes/&#34;&gt;https://webkit.org/blog/18098/introducing-the-field-guide-to-grid-lanes/&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/116/759/199/830/006/883/original/8d1f008e68db97ae.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-06-16T10:00:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsy5dqh8xkf9u7y3kj6369wta4je47ee9mzxrqn3v0dq48ldpqphrqzyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6dkvrsn</id>
    
      <title type="html">CSS is filling the gaps with rules. @npub16zz…2ugy explores new ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsy5dqh8xkf9u7y3kj6369wta4je47ee9mzxrqn3v0dq48ldpqphrqzyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6dkvrsn" />
    <content type="html">
      CSS is filling the gaps with rules. &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub16zza38phu295dzfztk4le3fs0vc3vzgs55gn6772em9qpwevvqfscq2ugy&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Brecht&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub16zz…2ugy&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; explores new CSS gap decorations that let you style spacing in grid and flex layouts without workarounds. The column-rule and row-rule properties draw lines in gaps, while rule-break, rule-inset, rule-overlap, and rule-visibility-items fine-tune intersections, extension, and conditional display. The rules are animatable too. #css #layout&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://utilitybend.com/blog/css-is-filling-the-gaps-with-rules-a-way-to-style-gaps-in-grid-and-flex&#34;&gt;https://utilitybend.com/blog/css-is-filling-the-gaps-with-rules-a-way-to-style-gaps-in-grid-and-flex&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/116/685/591/167/890/271/original/3ca5de590c90623e.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-06-03T10:00:23Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqspjs7glakyazfeasxfzuq26htfzldmfn0wrpcjsmak0u4ap4eejqszyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6ygplwj</id>
    
      <title type="html">Replacements​.fyi. A tool from the @npub1658…xgzg collective ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqspjs7glakyazfeasxfzuq26htfzldmfn0wrpcjsmak0u4ap4eejqszyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6ygplwj" />
    <content type="html">
      Replacements​.fyi. A tool from the &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1658a35m33quc3rzyfyrmerd32e4g52nmegwm0wqh4xk0tky3r9eqnyxgzg&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;e18e&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1658…xgzg&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; collective that helps you find more performant and safer replacements for outdated or unnecessary npm packages. Type a package name like is-number, left-pad, or is-odd, and get drop-in alternatives or short code snippets you can paste instead. You can filter by runtime: Node, Bun, Deno, Cloudflare, or browser. Also browse all packages or scan a package.json to spot dependencies worth dropping. #npm #tools&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://replacements.fyi/&#34;&gt;https://replacements.fyi/&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/116/657/279/053/997/136/original/e7adf2056d1d643a.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-05-29T10:00:14Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqstead0qtevl9d8p6pjnxk9xn94rf5zgly5m7n6pwns5cn7l695jsczyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e67zcr4j</id>
    
      <title type="html">600&#43; million people write right-to-left: two fixes your app ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqstead0qtevl9d8p6pjnxk9xn94rf5zgly5m7n6pwns5cn7l695jsczyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e67zcr4j" />
    <content type="html">
      600&#43; million people write right-to-left: two fixes your app needs. Nina Torgunakova from &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1rj0dxpzpnjy4ddgcpuswfjyccy6v5qd8uu00lsm3ckgy9su3m85s2v8tgq&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Evil Martians&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1rj0…8tgq&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; covers two scenarios. For English apps with free-form inputs, set dir=&amp;#34;auto&amp;#34; so the browser picks direction from the first character, no JavaScript needed. For fully localized UIs, set dir=&amp;#34;rtl&amp;#34; on &amp;lt;html&amp;gt; and swap physical CSS properties for logical ones like margin-inline-start, padding-inline-end, and text-align: start. #css #a11y&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://evilmartians.com/chronicles/600-million-people-write-right-to-left-2-fixes-your-app-needs&#34;&gt;https://evilmartians.com/chronicles/600-million-people-write-right-to-left-2-fixes-your-app-needs&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/116/634/628/964/725/109/original/a1d07fad7d3669db.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-05-25T10:00:01Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs0tjhvpnt3empa770zwjpn0z496hsy222t8jslulygj8v8a4kshcczyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6f5q8us</id>
    
      <title type="html">Media queries range syntax. @npub18q5…ah6v shows how the ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs0tjhvpnt3empa770zwjpn0z496hsy222t8jslulygj8v8a4kshcczyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6f5q8us" />
    <content type="html">
      Media queries range syntax. &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub18q57u2v3xwnu3tlfq3hhkltrfwp5ap0j5phdg9pa0lvwpq0p3tpqqgah6v&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Ahmad Shadeed&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub18q5…ah6v&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; shows how the classic min-width and max-width syntax creates overlap bugs at identical breakpoints, like two elements hiding at the same 300px. The fix: CSS range syntax with comparison operators like &amp;lt;=, &amp;gt;=, and &amp;gt;, supported in all browsers since March 2023. Clearer code, no 1px offsets, and the same logic works for container queries. #css #layout&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://ishadeed.com/article/range-syntax/&#34;&gt;https://ishadeed.com/article/range-syntax/&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/116/521/383/082/775/849/original/e2038f808de8141d.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-05-05T10:00:09Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsvjz0pl4azjctdssdd8sxzfcpca40zhltwnguyz2lm0lvp5undj0czyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6ffja82</id>
    
      <title type="html">Your options for preloading images with JavaScript. Alex ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsvjz0pl4azjctdssdd8sxzfcpca40zhltwnguyz2lm0lvp5undj0czyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6ffja82" />
    <content type="html">
      Your options for preloading images with JavaScript. Alex MacArthur compares five approaches to preloading images: new Image(), &amp;lt;link rel=&amp;#34;preload&amp;#34;&amp;gt;, a hidden &amp;lt;div&amp;gt; with a CSS background, the Cache API, and fetch(). Each method has different trade-offs around browser caching, CORS handling, and flexibility. The article breaks down when to use each technique to prevent lag when displaying images that haven’t been loaded yet. #js #performance&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://macarthur.me/posts/preloading-images/&#34;&gt;https://macarthur.me/posts/preloading-images/&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/116/459/098/547/752/873/original/d41452785646798e.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-04-24T10:00:20Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsr83zuxgychvzsysqjenaahx2kjrudrthayv5ymhljft2maheaz7qzyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6q9m8lv</id>
    
      <title type="html">Native JSON modules are finally real. Matt Smith explains how ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsr83zuxgychvzsysqjenaahx2kjrudrthayv5ymhljft2maheaz7qzyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6q9m8lv" />
    <content type="html">
      Native JSON modules are finally real. Matt Smith explains how import attributes let you load JSON files directly with import data from &amp;#39;data.json&amp;#39; with { type: &amp;#39;json&amp;#39; }, no bundler required. Browsers and runtimes handle JSON modules natively with explicit type declarations, eliminating build-time transformations and establishing a foundation for future structured module types. #json #js&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://allthingssmitty.com/2026/03/16/native-json-modules-are-finally-real/&#34;&gt;https://allthingssmitty.com/2026/03/16/native-json-modules-are-finally-real/&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/116/328/865/006/523/137/original/f1059fdd30e38477.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-04-01T10:00:13Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsfy8r6v93k236l69q9ltnnrceeatdp5gcmcv9qldh82zt6wp5qddqzyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6mef9ct</id>
    
      <title type="html">Searchable, collapsible sections with hidden=until-found. Nathan ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsfy8r6v93k236l69q9ltnnrceeatdp5gcmcv9qldh82zt6wp5qddqzyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6mef9ct" />
    <content type="html">
      Searchable, collapsible sections with hidden=until-found. Nathan Knowler demonstrates how to enhance the classic collapsible pattern by making its hidden content searchable with the new hidden=until-found attribute. The article covers progressive enhancement, accessibility, and browser support (Chrome, Firefox, Safari TP), showing how to combine it with the beforematch event for better UX. #html #a11y&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://knowler.dev/blog/searchable-collapsible-sections-with-hidden-until-found&#34;&gt;https://knowler.dev/blog/searchable-collapsible-sections-with-hidden-until-found&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/115/507/561/345/820/171/original/4d60b44626aaa08e.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-11-07T08:53:34Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsgkaqa9wz8ckhppf62fefggzlcnaffs33ef7jrv88jmlgvm7mkkpczyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6t87t8y</id>
    
      <title type="html">Harmonizer, an accessible color palette generator. A Figma plugin ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsgkaqa9wz8ckhppf62fefggzlcnaffs33ef7jrv88jmlgvm7mkkpczyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6t87t8y" />
    <content type="html">
      Harmonizer, an accessible color palette generator. A Figma plugin and a web app by Evil Martians for generating consistent color palettes that work reliably in both light and dark themes. It uses the OKLCH color model and WCAG or APCA contrast formula to keep lightness and contrast perceptually uniform across hues and lightness levels. #design #a11y&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://harmonizer.evilmartians.com/&#34;&gt;https://harmonizer.evilmartians.com/&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/115/496/573/299/925/516/original/935e764aae8ec4ef.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-11-05T10:18:50Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqszgklgh3zs3j9pwqrf5wvn5fz3nqh8wjwqkthvntea4gqtnmde9tqzyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6gyg70g</id>
    
      <title type="html">setHTML(), Trusted Types and the Sanitizer API. Ollie Williams ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqszgklgh3zs3j9pwqrf5wvn5fz3nqh8wjwqkthvntea4gqtnmde9tqzyzw8qjvp39mwsjzwlllw6u9fgyj0nu840gdpkrgreh7x5a8vwa4e6gyg70g" />
    <content type="html">
      setHTML(), Trusted Types and the Sanitizer API. Ollie Williams explains how the new setHTML() method and Sanitizer API help prevent XSS by safely inserting HTML into the DOM. Combined with the Trusted Types API, they provide a modern, configurable way to control what elements and attributes are allowed, eventually replacing libraries like DOMPurify. Supported in Firefox Nightly and Chrome Canary. #security #html&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://olliewilliams.xyz/blog/sanitizer/&#34;&gt;https://olliewilliams.xyz/blog/sanitizer/&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.mastodon.social/media_attachments/files/115/485/897/039/672/396/original/dc4ef8b1a9d46e5d.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-11-03T13:02:40Z</updated>
  </entry>

</feed>