<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl" media="all"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Roastidio.us in webspace https://github.com/</title>
<link>https://roastidio.us/webspace/3798</link>
<atom:link href="https://roastidio.us/webspace?url=https%3A%2F%2Fgithub.com%2F" rel="self" type="application/rss+xml"></atom:link>
<description>Roastidio.us in webspace https://github.com/</description>
<item>
<title>Mathematical manuscripts and supporting proof artifacts produced by OpenAI</title>
<link>https://github.com/openai/math</link>
<guid isPermaLink="false">TwT4uuGxmGY1r3gzc_V_pH9e1WMSNIV4w_hoAw==</guid>
<pubDate>Tue, 06 Oct 2026 23:04:02 +0000</pubDate>
<description>Article URL: https://github.com/openai/math Comments URL: https://news.ycombinator.com/item?id=49984976 Points: 38 # Comments: 0</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/openai/math&quot;&gt;https://github.com/openai/math&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49984976&quot;&gt;https://news.ycombinator.com/item?id=49984976&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 38&lt;/p&gt;&lt;p&gt;# Comments: 0&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Pared - remove unwanted Apple Intelligence models without disabling SIP</title>
<link>https://github.com/4evy/pared</link>
<guid isPermaLink="false">zsnNCsbhkx1fcxtVP7ODgFcOlceLNSWeHe8lJw==</guid>
<pubDate>Tue, 06 Oct 2026 22:42:59 +0000</pubDate>
<description>Comments</description>
<content:encoded>&lt;p&gt;&lt;a href=&quot;https://lobste.rs/s/tcmpcw/pared_remove_unwanted_apple&quot;&gt;Comments&lt;/a&gt;&lt;/p&gt;</content:encoded>
</item>
<item>
<title>AI is now capable of developing its own inference hardware</title>
<link>https://github.com/FeSens/openTPU</link>
<guid isPermaLink="false">OcZE_wxFTX4ImQhg5OFBh1oJ8jGEbq3cM_II7A==</guid>
<pubDate>Tue, 06 Oct 2026 16:54:31 +0000</pubDate>
<description>Article URL: https://github.com/FeSens/openTPU Comments URL: https://news.ycombinator.com/item?id=49980715 Points: 30 # Comments: 5</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/FeSens/openTPU&quot;&gt;https://github.com/FeSens/openTPU&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49980715&quot;&gt;https://news.ycombinator.com/item?id=49980715&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 30&lt;/p&gt;&lt;p&gt;# Comments: 5&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Show HN: OpenChart – OSS TradingView alternative with your own AI agent</title>
<link>https://github.com/longsurf-ai/openchart</link>
<guid isPermaLink="false">-cpQ9OAiT3txIaMlAZB2t0SUAWUwPnyXKGtksg==</guid>
<pubDate>Tue, 06 Oct 2026 16:54:31 +0000</pubDate>
<description>Hi HN, I&#39;m Weilun, cofounder of OpenChart.We built OpenChart because we wanted Claude and Codex to interface with the markets, like most of humans do, through charts rather than through CLIs.With your existing AI plans, your agent can work directly with your charts: annotate a setup, write an indicator, investigate a market move, or create an alert. The chart, conversation, and research live in the same workspace.OpenChart alerts on any market move: draw any shape on a chart and attach an ale...</description>
<content:encoded>&lt;p&gt;Hi HN, I&amp;#39;m Weilun, cofounder of OpenChart.&lt;p&gt;We built OpenChart because we wanted Claude and Codex to interface with the markets, like most of humans do, through charts rather than through CLIs.&lt;p&gt;With your existing AI plans, your agent can work directly with your charts: annotate a setup, write an indicator, investigate a market move, or create an alert. The chart, conversation, and research live in the same workspace.&lt;p&gt;OpenChart alerts on any market move: draw any shape on a chart and attach an alert. When price crosses it, the alert triggers your agent to investigate the move and save the research in your workspace. The agents can work with charts, indicators, and alerts. Custom indicators and alert conditions are written in [Tea](&lt;a href=&quot;https://github.com/longsurf-ai/tea&quot;&gt;https://github.com/longsurf-ai/tea&lt;/a&gt;), a programming language we built for the markets.&lt;p&gt;We believe software shouldn’t impose artificial friction on your workflow. OpenChart is built on that belief with no software cap. The source code is publicly available, and you can use free market data from day one. We also offer optional paid cloud market data for lower latency.&lt;p&gt;Everything is private. Your charts, research, and indicator code are stored on your own computer, with the app&amp;#39;s backend running locally too.&lt;p&gt;We currently support only macOS on Apple Silicon, but we&amp;#39;re expanding to more platforms.&lt;p&gt;Website: &lt;a href=&quot;https://openchart.co/&quot;&gt;https://openchart.co/&lt;/a&gt;&lt;p&gt;Download: &lt;a href=&quot;https://downloads.longsurf.ai/openchart/darwin/arm64/OpenChart.dmg&quot;&gt;https://downloads.longsurf.ai/openchart/darwin/arm64/OpenCha...&lt;/a&gt;&lt;p&gt;We built OpenChart because we want to explore how assets can be co-manages by agents and humans. I&amp;#39;d especially like to hear how you are using agents to help with your investment journey.&lt;p&gt;If you like what we&amp;#39;re building, a star on GitHub would mean a lot to us: &lt;a href=&quot;https://github.com/longsurf-ai/openchart&quot;&gt;https://github.com/longsurf-ai/openchart&lt;/a&gt;&lt;/p&gt;&lt;hr/&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49979793&quot;&gt;https://news.ycombinator.com/item?id=49979793&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 22&lt;/p&gt;&lt;p&gt;# Comments: 1&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Montray - a tray icon for systemd service health</title>
<link>https://github.com/dimonomid/montray/</link>
<guid isPermaLink="false">jR_xawaPQzYl1TIJCxPNxFdlLzajButoSkW__A==</guid>
<pubDate>Tue, 06 Oct 2026 16:33:05 +0000</pubDate>
<description>Comments</description>
<content:encoded>&lt;p&gt;&lt;a href=&quot;https://lobste.rs/s/gveu0c/montray_tray_icon_for_systemd_service&quot;&gt;Comments&lt;/a&gt;&lt;/p&gt;</content:encoded>
</item>
<item>
<title>kahawai - an open source, modular media system</title>
<link>https://github.com/iksteen/kahawai</link>
<guid isPermaLink="false">nXo44-alr0-UhOxj6Hrakw7eTmBIC0q6ChHccg==</guid>
<pubDate>Tue, 06 Oct 2026 16:33:05 +0000</pubDate>
<description>Comments</description>
<content:encoded>&lt;p&gt;&lt;a href=&quot;https://lobste.rs/s/bgwtgy/kahawai_open_source_modular_media_system&quot;&gt;Comments&lt;/a&gt;&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Photopea creator weighs in on Photosuite project</title>
<link>https://github.com/eolix/photosuite/issues/77</link>
<guid isPermaLink="false">YkmQ7zutavRfpZnXOR_3nor5Vl27kgDFx2-fJg==</guid>
<pubDate>Tue, 06 Oct 2026 07:47:36 +0000</pubDate>
<description>Article URL: https://github.com/eolix/photosuite/issues/77 Comments URL: https://news.ycombinator.com/item?id=49972730 Points: 109 # Comments: 66</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/eolix/photosuite/issues/77&quot;&gt;https://github.com/eolix/photosuite/issues/77&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49972730&quot;&gt;https://news.ycombinator.com/item?id=49972730&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 109&lt;/p&gt;&lt;p&gt;# Comments: 66&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Show HN: AI search for every photo and every frame of video on macOS</title>
<link>https://github.com/allenv0/SCM</link>
<guid isPermaLink="false">sBmxo3ZA2mAMVLgqt1ZKz9rZbVDHzWaznwMIAg==</guid>
<pubDate>Tue, 06 Oct 2026 07:26:56 +0000</pubDate>
<description>Article URL: https://github.com/allenv0/SCM Comments URL: https://news.ycombinator.com/item?id=49952111 Points: 165 # Comments: 73</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/allenv0/SCM&quot;&gt;https://github.com/allenv0/SCM&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49952111&quot;&gt;https://news.ycombinator.com/item?id=49952111&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 165&lt;/p&gt;&lt;p&gt;# Comments: 73&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Release mold 3.0.0 · rui314/mold · GitHub</title>
<link>https://github.com/rui314/mold/releases/tag/v3.0.0</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/7659ccb6795b17238e8855883fc309052cecaa79c55327aa08ae0c544bcfcf39/rui314/mold/releases/tag/v3.0.0"></enclosure>
<guid isPermaLink="false">RoT5EeAX9WD8aA-1RTqvVGSJJIEH1ebQFTDy8w==</guid>
<pubDate>Mon, 05 Oct 2026 16:33:07 +0000</pubDate>
<description>mold 3.0.0 is a new major release of the high-speed linker. As we announced in the 2.42.1 release notes, we have rewritten mold from C++ to Rust, and this is the first release of the Rust version. ...</description>
<content:encoded>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Fixed a crash when creating a statically-linked executable with a version script or &lt;code&gt;--default-symver&lt;/code&gt;. (&lt;a href=&quot;https://github.com/rui314/mold/commit/f10b0c40c8635605459b8586ce49ed1cad1c26c3&quot;&gt;&lt;tt&gt;f10b0c4&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed a crash or a corrupted output when the output file is also an input file, as in &lt;code&gt;mold -r -o foo.o foo.o bar.o&lt;/code&gt;. (&lt;a href=&quot;https://github.com/rui314/mold/commit/d2b88ab395b6628fb8e3070dace599eaa399257c&quot;&gt;&lt;tt&gt;d2b88ab&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--gc-sections&lt;/code&gt; no longer removes the functions given by &lt;code&gt;--init&lt;/code&gt; and &lt;code&gt;--fini&lt;/code&gt;. (&lt;a href=&quot;https://github.com/rui314/mold/commit/c9e4cc4b6ef308a101de43773e613ccaa93dffa6&quot;&gt;&lt;tt&gt;c9e4cc4&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Common symbols of the same name with different sizes now get the largest size and the strictest alignment, as in GNU ld and lld. (&lt;a href=&quot;https://github.com/rui314/mold/commit/d5781d582c94bc74af84dd4af9ce9f66763993d4&quot;&gt;&lt;tt&gt;d5781d5&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--icf=safe&lt;/code&gt; no longer folds functions exported from a shared library, and &lt;code&gt;--icf=all&lt;/code&gt; no longer crashes with &lt;code&gt;--emit-relocs&lt;/code&gt;. (&lt;a href=&quot;https://github.com/rui314/mold/commit/ceab12c56b0d9d4aab0e8ed6a0adf59aa9a11692&quot;&gt;&lt;tt&gt;ceab12c&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/3dcd1df3826e4cc7b9fab91351d2d41972a7e2c8&quot;&gt;&lt;tt&gt;3dcd1df&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A versioned reference such as &lt;code&gt;foo@VER&lt;/code&gt; in a shared library no longer pulls in an archive member that defines an unversioned &lt;code&gt;foo&lt;/code&gt;. (&lt;a href=&quot;https://github.com/rui314/mold/issues/1657&quot;&gt;#1657&lt;/a&gt;) (&lt;a href=&quot;https://github.com/rui314/mold/commit/44bfa2a9b227729ecd6de1261c462b98ef709ed0&quot;&gt;&lt;tt&gt;44bfa2a&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed several cases of nondeterministic output, in &lt;code&gt;--dependency-file&lt;/code&gt;, &lt;code&gt;--repro&lt;/code&gt;, &lt;code&gt;-r&lt;/code&gt; with many COMDAT groups of the same name, and some dynamic relocations. (&lt;a href=&quot;https://github.com/rui314/mold/commit/516456132edf40bdd96b035be1365d97683c8127&quot;&gt;&lt;tt&gt;5164561&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/6d33903650b2b4e49594d12aacb8b83a4440c879&quot;&gt;&lt;tt&gt;6d33903&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/51e23d44d7b3badd06dc1254e4ef4833de6f79f6&quot;&gt;&lt;tt&gt;51e23d4&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/696ed717894a456910b42c7f062f663ebb01a762&quot;&gt;&lt;tt&gt;696ed71&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed several &lt;code&gt;-r&lt;/code&gt; bugs: C++ exceptions broke in code from the second and later input files; &lt;code&gt;-x&lt;/code&gt;, &lt;code&gt;-X&lt;/code&gt; and &lt;code&gt;-s&lt;/code&gt; removed symbols that relocations referred to; &lt;code&gt;--gc-sections&lt;/code&gt; dropped data that relocations referred to; &lt;code&gt;sh_link&lt;/code&gt; of &lt;code&gt;SHF_LINK_ORDER&lt;/code&gt; sections such as &lt;code&gt;.ARM.exidx&lt;/code&gt; was not set; and mold crashed with &lt;code&gt;--strip-debug&lt;/code&gt; and DWARF type units. (&lt;a href=&quot;https://github.com/rui314/mold/commit/0e41bb98e4f4a2caa9d50ec7f26fb976583e3822&quot;&gt;&lt;tt&gt;0e41bb9&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/37174600279b0e371f857b4ef79873d4bebc3ec5&quot;&gt;&lt;tt&gt;3717460&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/b2c3d1dc67d8e38e9a49ec30e383fe686c6dfc45&quot;&gt;&lt;tt&gt;b2c3d1d&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/9aacb62c03ad2ac04823482b0bed8c5cb1d50c78&quot;&gt;&lt;tt&gt;9aacb62&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/a247ca27d33c90a6b246a7bd107c31835f1a1dc6&quot;&gt;&lt;tt&gt;a247ca2&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/e41ed90846f1aa675ea6b1ec0168a3ead21221ac&quot;&gt;&lt;tt&gt;e41ed90&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GOT-relative relocations such as &lt;code&gt;R_X86_64_GOTOFF64&lt;/code&gt;, and &lt;code&gt;R_ARM_REL32&lt;/code&gt;, against symbols defined in shared libraries silently got wrong addresses. They are now handled correctly or reported as errors. (&lt;a href=&quot;https://github.com/rui314/mold/issues/1668&quot;&gt;#1668&lt;/a&gt;) (&lt;a href=&quot;https://github.com/rui314/mold/commit/659780e6c4275348cd8c34cd9f8a7411662c4a47&quot;&gt;&lt;tt&gt;659780e&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/7fe68bf1092bf280c043201e922b5d93a2776434&quot;&gt;&lt;tt&gt;7fe68bf&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Errors for PC-relative relocations that can&amp;#39;t be used in position-independent output now explain the cause and how to fix it. (&lt;a href=&quot;https://github.com/rui314/mold/commit/39e6a01e2565c437044cc87e6723667ac46c1dd9&quot;&gt;&lt;tt&gt;39e6a01&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/17b7b85a88df74d5a2b91b3f744cd325d1c8afa1&quot;&gt;&lt;tt&gt;17b7b85&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The following now cause errors instead of a broken output or a crash: &lt;code&gt;--defsym&lt;/code&gt; aliasing a symbol defined in a shared library, an undefined non-weak hidden symbol in a shared library or with &lt;code&gt;--unresolved-symbols=ignore-all&lt;/code&gt;, a &lt;code&gt;--defsym&lt;/code&gt; value that doesn&amp;#39;t fit in 64 bits, an allocated section that is also compressed, and &lt;code&gt;--strip-all&lt;/code&gt; with &lt;code&gt;--emit-relocs&lt;/code&gt;. (&lt;a href=&quot;https://github.com/rui314/mold/commit/56b862b23c4eac4dc6f19437f0bd37e78636d81d&quot;&gt;&lt;tt&gt;56b862b&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/b3566fac1ad60a6738afb96e6dd6ac223c6faba9&quot;&gt;&lt;tt&gt;b3566fa&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/e3a89f222d5ecd7a44d03f7f2a3806ec28ecbce1&quot;&gt;&lt;tt&gt;e3a89f2&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/a9800541d0e8956282c9e55a2fb4d4c4ae1b8c34&quot;&gt;&lt;tt&gt;a980054&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/8233a75df11a161f6373fbdff9b592c3bc68d6a1&quot;&gt;&lt;tt&gt;8233a75&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--noinhibit-exec&lt;/code&gt; no longer crashes on references to symbols in discarded COMDAT groups. (&lt;a href=&quot;https://github.com/rui314/mold/commit/8f1716629741b423d401ae2e3b262af255af7d15&quot;&gt;&lt;tt&gt;8f17166&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/80baa5dbacbf2514e71a2b2734f51f27f978aa6a&quot;&gt;&lt;tt&gt;80baa5d&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Options starting with a single dash are now read as GNU ld reads them. For example, &lt;code&gt;-entry=main&lt;/code&gt; was read as &lt;code&gt;-e ntry=main&lt;/code&gt;. (&lt;a href=&quot;https://github.com/rui314/mold/issues/1671&quot;&gt;#1671&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/pull/1670&quot;&gt;#1670&lt;/a&gt;) (&lt;a href=&quot;https://github.com/rui314/mold/commit/830a8609aae795029b792391271fb0a8641a8a6c&quot;&gt;&lt;tt&gt;830a860&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--dynamic-list-data&lt;/code&gt;, &lt;code&gt;--lto-pseudo-probe-for-profiling&lt;/code&gt; and &lt;code&gt;--thinlto-index-only&lt;/code&gt; no longer consume the next argument, and &lt;code&gt;--no-color-diagnostics&lt;/code&gt; is now accepted. (&lt;a href=&quot;https://github.com/rui314/mold/commit/2ca893e9abc8cffb131fc81c1871bac96aed8b93&quot;&gt;&lt;tt&gt;2ca893e&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/04b493edf18bc62782e44730db7ecbb54610d407&quot;&gt;&lt;tt&gt;04b493e&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If a version script lists a symbol in more than one version node, the first one now takes precedence, as in GNU ld and lld. (&lt;a href=&quot;https://github.com/rui314/mold/commit/b7048f555ad8c21d1f443b000938064f4357a5b4&quot;&gt;&lt;tt&gt;b7048f5&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed relative paths with &lt;code&gt;-C&lt;/code&gt;, &lt;code&gt;--chroot&lt;/code&gt; and &lt;code&gt;--repro&lt;/code&gt;. (&lt;a href=&quot;https://github.com/rui314/mold/commit/e3bc3490b72df8d3e4c2821ab66a56ca389d7e9b&quot;&gt;&lt;tt&gt;e3bc349&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/04e7dd8f701a2071cf41c7be801028452f492da2&quot;&gt;&lt;tt&gt;04e7dd8&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/a368d2233d38ff7f423e17cab88a014451b679c9&quot;&gt;&lt;tt&gt;a368d22&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mold no longer reserves 8 GiB of virtual address space at startup, so it works under &lt;code&gt;ulimit -v&lt;/code&gt;. (&lt;a href=&quot;https://github.com/rui314/mold/commit/cc6939014404509d092c577969c3ba4264803f9d&quot;&gt;&lt;tt&gt;cc69390&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/b18be913d56a88ca5d2c7ab7ed0ca450074f5b7d&quot;&gt;&lt;tt&gt;b18be91&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;MOLD_JOBS&lt;/code&gt; now works if &lt;code&gt;XDG_RUNTIME_DIR&lt;/code&gt; is an empty string. (&lt;a href=&quot;https://github.com/rui314/mold/commit/8a360ff453c06f1de5c042ab3530c4bd82955ec1&quot;&gt;&lt;tt&gt;8a360ff&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Files created by &lt;code&gt;--separate-debug-file&lt;/code&gt; no longer contain a &lt;code&gt;.gnu_debuglink&lt;/code&gt; section. (&lt;a href=&quot;https://github.com/rui314/mold/issues/1656&quot;&gt;#1656&lt;/a&gt;) (&lt;a href=&quot;https://github.com/rui314/mold/commit/b56649e972821ef84e001d2b6f05a16451687b06&quot;&gt;&lt;tt&gt;b56649e&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mold no longer creates the meaningless &lt;code&gt;__start_EHDR&lt;/code&gt;, &lt;code&gt;__stop_EHDR&lt;/code&gt;, &lt;code&gt;__start_PHDR&lt;/code&gt; and &lt;code&gt;__stop_PHDR&lt;/code&gt; symbols. (&lt;a href=&quot;https://github.com/rui314/mold/commit/0ee71d395c0cf1fd62a749f2d5a71f5e3f594733&quot;&gt;&lt;tt&gt;0ee71d3&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[AArch64][PPC32][ARM32] Fixed calls to static functions in other sections through range extension thunks, which jumped to wrong addresses in large programs such as the ARM64 debug build of Chromium. (&lt;a href=&quot;https://github.com/rui314/mold/commit/4165d0e82e8a4bb581d7ca7e83f61a712038fe87&quot;&gt;&lt;tt&gt;4165d0e&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/9b91621465530ceb146dde7dad7bf15fd22a1be2&quot;&gt;&lt;tt&gt;9b91621&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[AArch64] Added support for more relocation types, such as &lt;code&gt;R_AARCH64_TSTBR14&lt;/code&gt; and &lt;code&gt;R_AARCH64_GOT_LD_PREL19&lt;/code&gt;. (&lt;a href=&quot;https://github.com/rui314/mold/commit/96d02824eed0df3390e9430abd9358e92313a54f&quot;&gt;&lt;tt&gt;96d0282&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/a4b64d86b49869361a1d57c03d36ad098d479eff&quot;&gt;&lt;tt&gt;a4b64d8&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[ARM32] Added support for more relocation types, such as &lt;code&gt;R_ARM_ALU_PC_G0&lt;/code&gt; and &lt;code&gt;R_ARM_THM_PC12&lt;/code&gt;, and fixed &lt;code&gt;-r&lt;/code&gt; output for big-endian ARM. (&lt;a href=&quot;https://github.com/rui314/mold/commit/c0f9cd66654b0a56ca8448b8700768363387ce44&quot;&gt;&lt;tt&gt;c0f9cd6&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/4c9aad3726cb7f18d81efd14558bf43d674143de&quot;&gt;&lt;tt&gt;4c9aad3&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/4c26f1649befa3c4d5c3f059ed09b92f15c1ccdd&quot;&gt;&lt;tt&gt;4c26f16&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[ARM32][i386] &lt;code&gt;-r&lt;/code&gt; no longer corrupts instructions referred to by some branch and TLS relocations. (&lt;a href=&quot;https://github.com/rui314/mold/commit/1b17bdf0d28e4ce2bd6dd9761f0c86e6aed0fa17&quot;&gt;&lt;tt&gt;1b17bdf&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[RISC-V][LoongArch] Fixed calls to functions folded by &lt;code&gt;--icf=all&lt;/code&gt; when relaxation shrinks them, and &lt;code&gt;R_RISCV_64&lt;/code&gt; and &lt;code&gt;R_LARCH_64&lt;/code&gt; relocations in 32-bit objects. (&lt;a href=&quot;https://github.com/rui314/mold/commit/52febe9faeba71c5f2cf7fdc38f6fd81ebc80231&quot;&gt;&lt;tt&gt;52febe9&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/5b2223301787a20d1e10922c28c01927bc74d265&quot;&gt;&lt;tt&gt;5b22233&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[RISC-V] Fixed TLSDESC with object files created by Clang 18, &lt;code&gt;--emit-relocs&lt;/code&gt; with TLSDESC relaxation, the &lt;code&gt;EF_RISCV_TSO&lt;/code&gt; flag, &lt;code&gt;R_RISCV_ALIGN&lt;/code&gt; in &lt;code&gt;-r&lt;/code&gt; output, and overflow checks for 32-bit PC-relative relocations. (&lt;a href=&quot;https://github.com/rui314/mold/commit/fdf84222d852028b0c02fcd4cbceefcc110fe5b2&quot;&gt;&lt;tt&gt;fdf8422&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/7c8b80520ac945b11b8e512b11422979f381d32e&quot;&gt;&lt;tt&gt;7c8b805&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/6b60f7582146112d9f7fd344ce7aa7b9db6c97ce&quot;&gt;&lt;tt&gt;6b60f75&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/4ba7792e43d1a186b4124dfbd4a6e6bc75c0257c&quot;&gt;&lt;tt&gt;4ba7792&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/85d55f3fa4d8246ddb07ac880ef8c6384734dcf1&quot;&gt;&lt;tt&gt;85d55f3&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[LoongArch] Added support for TLSDESC in the extreme code model, and fixed wrong values of &lt;code&gt;*64_PC_HI12&lt;/code&gt; relocations and spurious overflow errors for TLS relocations. (&lt;a href=&quot;https://github.com/rui314/mold/commit/a36a1611e6aa2238dd3e1115c20d21d53d7a48d7&quot;&gt;&lt;tt&gt;a36a161&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/81339386c92c714bdeaa8448da6f3dd8294de112&quot;&gt;&lt;tt&gt;8133938&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/13e6cc0d597734d334362c7f391c326062ba391d&quot;&gt;&lt;tt&gt;13e6cc0&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[PPC32][m68k] A GOT too large for the 16-bit offsets that &lt;code&gt;-fpic&lt;/code&gt; code uses is now reported as an error instead of being silently truncated. (&lt;a href=&quot;https://github.com/rui314/mold/commit/acc8854e931f44034d3270f41b3f098b0e56a518&quot;&gt;&lt;tt&gt;acc8854&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/614e2a032614caffe5e98667b4b4b96742ec51f5&quot;&gt;&lt;tt&gt;614e2a0&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[PPC64] Fixed IFUNC calls in statically-linked executables and &lt;code&gt;@got&lt;/code&gt; references in hand-written assembly, and mold now synthesizes the &lt;code&gt;_savegpr0_*&lt;/code&gt; family of functions for PPC64V1 as well. (&lt;a href=&quot;https://github.com/rui314/mold/commit/d3b2a74fa0222463b5dfedef59fb2bd4970db20b&quot;&gt;&lt;tt&gt;d3b2a74&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/b34a3082e19b5b3ba8f519f21ef57ee8ec7a61c6&quot;&gt;&lt;tt&gt;b34a308&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/efda2fc1490dbf39efd396dbb8080a567da25dae&quot;&gt;&lt;tt&gt;efda2fc&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[SH4] Fixed a crash when calling a function that returns a structure through the PLT, and C++ exceptions in programs linked from &lt;code&gt;-r&lt;/code&gt; output. (&lt;a href=&quot;https://github.com/rui314/mold/commit/d9cf1f099e8468da6700f119f65e0088553d67da&quot;&gt;&lt;tt&gt;d9cf1f0&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/92161ddf08243cc5ecbccb7ebfebd5dcef02ddf4&quot;&gt;&lt;tt&gt;92161dd&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[SPARC64] Fixed branch instructions using &lt;code&gt;R_SPARC_WDISP16&lt;/code&gt;, and &lt;code&gt;R_SPARC_OLO10&lt;/code&gt; in &lt;code&gt;-r&lt;/code&gt; output. (&lt;a href=&quot;https://github.com/rui314/mold/commit/6df3fd23bb0bcde345144d12b098d81e839cc32b&quot;&gt;&lt;tt&gt;6df3fd2&lt;/tt&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rui314/mold/commit/269fbb959ca6023338a8c0b3f2547c861a79cd1e&quot;&gt;&lt;tt&gt;269fbb9&lt;/tt&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
</item>
<item>
<title>ncdu: NCurses Disk Usage (an updated fork)</title>
<link>https://github.com/rcalixte/ncdu</link>
<guid isPermaLink="false">tKm6HO5H2kwkWpMDPl1oChU1qIBXN3E3TgaKZg==</guid>
<pubDate>Mon, 05 Oct 2026 00:38:44 +0000</pubDate>
<description>Comments</description>
<content:encoded>&lt;p&gt;&lt;a href=&quot;https://lobste.rs/s/dsoh2w/ncdu_ncurses_disk_usage_updated_fork&quot;&gt;Comments&lt;/a&gt;&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Turn off Apple Intelligence on macOS 27 and get its disk space back</title>
<link>https://github.com/omlahore/RemoveMacAI</link>
<guid isPermaLink="false">vePuGDtzMYGrs9XiLhC7dTWkGGXRYicRErYZ7Q==</guid>
<pubDate>Mon, 05 Oct 2026 00:28:14 +0000</pubDate>
<description>Article URL: https://github.com/omlahore/RemoveMacAI Comments URL: https://news.ycombinator.com/item?id=49957116 Points: 292 # Comments: 176</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/omlahore/RemoveMacAI&quot;&gt;https://github.com/omlahore/RemoveMacAI&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49957116&quot;&gt;https://news.ycombinator.com/item?id=49957116&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 292&lt;/p&gt;&lt;p&gt;# Comments: 176&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Run Qwen 3.8 Flash Next (125B) on consumer hardware (RTX 4090) at 100T/s</title>
<link>https://github.com/Niko1221/Strata</link>
<guid isPermaLink="false">6wxZurzYhwo38Ei-LQ2fc7iIK7T351G05y6VEg==</guid>
<pubDate>Sun, 04 Oct 2026 16:56:57 +0000</pubDate>
<description>Article URL: https://github.com/Niko1221/Strata Comments URL: https://news.ycombinator.com/item?id=49953495 Points: 265 # Comments: 134</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/Niko1221/Strata&quot;&gt;https://github.com/Niko1221/Strata&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49953495&quot;&gt;https://news.ycombinator.com/item?id=49953495&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 265&lt;/p&gt;&lt;p&gt;# Comments: 134&lt;/p&gt;</content:encoded>
</item>
<item>
<title>GitHub - Twotoz/C5VRX: Ultra-minimal, zero-CPU 5.8 GHz analog FPV video receiver using ESP32-C5 Wi-Fi 6 PHY MODEM_DIAG, BitScrambler WBFM demodulation &amp; resi...</title>
<link>https://github.com/Twotoz/C5VRX</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/6b6800d49e2f385ce4870560fdb094b170d8ff926afe42a2d49819f902c7b5bb/Twotoz/C5VRX"></enclosure>
<guid isPermaLink="false">iZdhWrgJMax6DahCkikT9HAuPdOOXbiMp2bnEQ==</guid>
<pubDate>Sat, 03 Oct 2026 01:12:57 +0000</pubDate>
<description>Ultra-minimal, zero-CPU 5.8 GHz analog FPV video receiver using ESP32-C5 Wi-Fi 6 PHY MODEM_DIAG, BitScrambler WBFM demodulation &amp; resistor DAC CVBS - Twotoz/C5VRX</description>
<content:encoded>&lt;hr/&gt;&lt;div&gt;&lt;h2&gt;Current firmware&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;main&lt;/code&gt; build defaults to the live adjacent Phase8 demodulator and
&lt;strong&gt;Direct Gain V5&lt;/strong&gt; (Direct Gain V4 below plus a 200 us observer and anti-hunt damping), the default and recommended gain controller. Phase8 maps
the full signed adjacent phase delta (-128 through +127) to the 6-bit DAC. A
transition across the +/-180 degree phase boundary can still alias.&lt;/p&gt;&lt;p&gt;Direct Gain V4 is the Direct Gain V3 core (centered Q4 amplitude and Phase8
coherence, physical RF/BB/Fine tuples, zero-write hold while healthy) with two
changes: it acts on the first 1 ms window that leaves the healthy band and
jumps straight to the predicted gain (about 1-2 ms instead of tens to hundreds
of ms), and without a carrier it listens at the gain table&amp;#39;s maximum instead of
parking at G62, so weak carriers at the range edge are found.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Native hardware AGC&lt;/strong&gt; remains selectable (RF page, hold BOOT 2 s through the
profile cycle, or serial &lt;code&gt;N&lt;/code&gt;; applied with a reboot) but is not the default.
Measurements on PR #122 (&lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/docs/native-agc-v2.md&quot;&gt;native-agc-v2.md&lt;/a&gt;) show the
ESP32-C5 packet AGC re-acquiring on a continuous carrier every ~21 us, one to
two times per video line, landing on a different gain each time (Q4 radius
41-266 codes for a static VTX). That is the source of the thin black/rainbow
lines and the grain seen with native AGC; finer IQ lanes, register tuning and
paced (timer-gated) native tracking did not remove it. A firmware controller
that holds one gain is the better fit for continuous analog FM.&lt;/p&gt;&lt;p&gt;Bench status: Direct Gain V4 gave a clean picture and very fast response on the
XIAO ESP32-C5 with the VTX static and moving. Range-edge recovery, near-VTX
overload and long sessions still need dedicated tests.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Demodulator and gain notes&lt;/h2&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/docs/direct-gain-v3-core.md&quot;&gt;Direct Gain V3 design&lt;/a&gt; describes the Q4
observer, gain model, settle logic, and known hardware tuning limits that
Direct Gain V4 builds on.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/docs/native-agc-v2.md&quot;&gt;Native AGC findings&lt;/a&gt; (PR #122): per-sample AGC state
from the RF dump, the ~21 us re-acquisition cycle, register sweep, DAC
self-noise, level-offset and paced-native trials, and why none became the
default. &lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/docs/native-agc-paced.md&quot;&gt;Paced native AGC&lt;/a&gt; and the
&lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/docs/pre-native-noise-audit.md&quot;&gt;pre-native noise audit&lt;/a&gt; complete it.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/docs/direct-gain-v3-oracle.md&quot;&gt;Direct Gain V3 measurement oracle&lt;/a&gt; documents
the guarded USB measurements and their interpretation.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/docs/range-demod-quality-v2.md&quot;&gt;Range and demod quality&lt;/a&gt; records the
measurement model and validation limits for CVBS sync and demod quality.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/docs/range-v2.md&quot;&gt;Range v2&lt;/a&gt;, &lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/docs/range-v2-knowledge.md&quot;&gt;range notes&lt;/a&gt;,
and &lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/docs/trajectory-v2.md&quot;&gt;trajectory v2&lt;/a&gt; are research references; their
experimental ideas are not all part of the default live path.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/docs/pre-q4-lab.md&quot;&gt;Pre-Q4 lab&lt;/a&gt; documents explicit RF/DAC noise checks and
vendor gain-table characterization. Those lab actions are not run as part of
normal video reception.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h2&gt;Web Flasher (Zero-Install Browser Flashing)&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Flash your Seeed Studio XIAO ESP32-C5 directly from your browser (Google Chrome, Microsoft Edge, Brave, Opera) with zero installation required:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://twotoz.github.io/C5VRX/&quot;&gt;Open the C5VRX Web Flasher&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The production web flasher is hosted entirely by &lt;strong&gt;GitHub Pages&lt;/strong&gt; at
&lt;a href=&quot;https://twotoz.github.io/C5VRX/&quot;&gt;twotoz.github.io/C5VRX&lt;/a&gt;. There is no VPS,
application server, or separate production web host in the current deployment.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automatic Latest Firmware&lt;/strong&gt;: Automatically selects the newest immutable semantic-version release.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One-Click Flashing&lt;/strong&gt;: Flashes the universal merged production image (&lt;code&gt;bootloader + partitions + app&lt;/code&gt; at &lt;code&gt;0x0&lt;/code&gt;) over Web Serial. Firmware is mirrored into the GitHub Pages artifact and fetched same-origin, so browser CORS redirects are not part of the production flash path.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selectable Releases&lt;/strong&gt;: The &lt;strong&gt;Releases&lt;/strong&gt; tab contains only semantic-version releases such as &lt;code&gt;v3.0.0&lt;/code&gt;, &lt;code&gt;v3.0.1&lt;/code&gt;, and newer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Separate PR Builds Tab&lt;/strong&gt;: Same-repository pull requests publish a temporary &lt;code&gt;pr-&amp;lt;number&amp;gt;&lt;/code&gt; GitHub prerelease. Experimental builds appear only under &lt;strong&gt;PR Builds&lt;/strong&gt;, never in the normal Releases list, and require an explicit warning confirmation before flashing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offline / Local Execution&lt;/strong&gt;: You can also run the web flasher locally:
&lt;div&gt;&lt;pre&gt;python tools/open_webflasher.py&lt;/pre&gt;&lt;/div&gt;
&lt;em&gt;(Starts a local HTTP server at &lt;code&gt;http://localhost:8080/web/index.html&lt;/code&gt; and opens your browser.)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Automatic releases and versioning&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;Every push or merged PR to &lt;code&gt;main&lt;/code&gt; builds the production firmware and publishes a new immutable GitHub release with a semantic version tag.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;BREAKING CHANGE&lt;/code&gt; or a conventional-commit &lt;code&gt;!&lt;/code&gt; creates a &lt;strong&gt;major&lt;/strong&gt; bump.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;feat:&lt;/code&gt; / &lt;code&gt;feat(scope):&lt;/code&gt; creates a &lt;strong&gt;minor&lt;/strong&gt; bump.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fix:&lt;/code&gt;, &lt;code&gt;chore:&lt;/code&gt;, &lt;code&gt;docs:&lt;/code&gt;, and other changes create a &lt;strong&gt;patch&lt;/strong&gt; bump.&lt;/li&gt;
&lt;li&gt;If no stable release exists yet, the current &lt;code&gt;v3.0.0-rc1&lt;/code&gt; line is promoted to &lt;code&gt;v3.0.0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The resolved version is written to &lt;code&gt;version.txt&lt;/code&gt; before the ESP-IDF build, so the firmware metadata and GitHub release use the same version.&lt;/li&gt;
&lt;li&gt;Release assets remain attached to their immutable version tag; the old mutable &lt;code&gt;main&lt;/code&gt; release/tag is retired automatically after the first versioned release succeeds.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Website deployment&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;Firmware releases and website deployment are intentionally separate:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.github/workflows/build.yml&lt;/code&gt; validates and builds firmware, then publishes a versioned release after a successful push to &lt;code&gt;main&lt;/code&gt;. For same-repository PRs it also maintains a clearly marked temporary prerelease (&lt;code&gt;pr-&amp;lt;number&amp;gt;&lt;/code&gt;) and removes it when the PR closes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.github/workflows/deploy-web.yml&lt;/code&gt; is the &lt;strong&gt;only production website deployment&lt;/strong&gt;. It always checks out trusted &lt;code&gt;main&lt;/code&gt;, then packages the web flasher plus a generated firmware mirror into one GitHub Pages artifact.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tools/prepare_pages_site.sh&lt;/code&gt; mirrors the newest semantic firmware releases and all active &lt;code&gt;pr-&amp;lt;number&amp;gt;&lt;/code&gt; prereleases under &lt;code&gt;firmware/&amp;lt;tag&amp;gt;/&lt;/code&gt;, and generates &lt;code&gt;firmware/releases.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The browser reads that Pages manifest and downloads binaries from the same &lt;code&gt;twotoz.github.io&lt;/code&gt; origin. This avoids GitHub Release storage CORS redirects entirely.&lt;/li&gt;
&lt;li&gt;Successful Production CI triggers a Pages mirror refresh, so newly published/updated PR builds and releases become available without deploying unmerged PR web code.&lt;/li&gt;
&lt;li&gt;When a PR closes or merges, CI deletes its temporary prerelease/tag; the next successful cleanup-triggered Pages refresh removes it from the mirror.&lt;/li&gt;
&lt;/ul&gt;&lt;hr/&gt;&lt;div&gt;&lt;h2&gt;Community&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Questions, build photos, feedback, or development discussion? &lt;strong&gt;&lt;a href=&quot;https://discord.gg/3YNgJRHmzD&quot;&gt;Join the C5VRX Discord&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;hr/&gt;&lt;div&gt;&lt;h2&gt;What is C5VRX?&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;C5VRX-3&lt;/strong&gt; turns the &lt;strong&gt;Seeed Studio XIAO ESP32-C5&lt;/strong&gt; (ESP32-C5 RISC-V SoC) into a standalone 5.8 GHz analog video (FPV) receiver.&lt;/p&gt;&lt;p&gt;It captures raw Wi-Fi PHY I/Q samples from the 5 GHz RF front-end at 40 MS/s, demodulates wideband FM in the ESP32-C5 &lt;strong&gt;BitScrambler&lt;/strong&gt;, and outputs analog CVBS through &lt;strong&gt;PARLIO TX&lt;/strong&gt; and a 6-bit passive resistor DAC ladder. The video-standard detector supports PAL and NTSC timing.&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;5.8 GHz Analog FPV (48 Channels)
        │
        ▼
ESP32-C5 RF / MODEM_DIAG Bus (40 MS/s Q4/I4)
        │
        ▼
PARLIO RX @ 40 MS/s (POS sample edge, pure continuous hardware GDMA)
        │
        ▼
Circular GDMA Ring (32 KiB in HP SRAM, Zero-EOF patched)
        │
        ▼
Phase8 adjacent-demod BitScrambler (fm_phase8_hr_live.bsasm: full signed delta, 20 MS/s [D,D])
        │
        ▼
PARLIO TX @ 40 MHz ([D,D] mode -&amp;gt; 20 MS/s unique CVBS output)
        │
        ▼
6-bit Resistor DAC Ladder + 470 pF Filter -&amp;gt; 75-ohm Goggles&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The continuous pixel path runs in AHB GDMA, BitScrambler, and PARLIO TX. A background CPU task observes completed IQ buffers and controls receiver settings; it does not move individual video pixels.&lt;/p&gt;&lt;hr/&gt;&lt;div&gt;&lt;h2&gt;Key Innovations &amp;amp; Architectural Highlights&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;1. The Breakthrough: Zero-EOF Circular GDMA&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The Problem&lt;/strong&gt;: In continuous loop mode, the stock ESP-IDF PARLIO TX driver injected a GDMA EOF (&lt;code&gt;suc_eof = 1&lt;/code&gt;) on every cyclic ring wrap (confirmed in &lt;a href=&quot;https://github.com/espressif/esp-idf/issues/19091&quot;&gt;espressif/esp-idf#19091&lt;/a&gt;). This triggered periodic hardware stalls, causing a 1-second vertical sync drop and jagged horizontal line jitter (&amp;quot;kartels&amp;quot;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Solution&lt;/strong&gt;: C5VRX-3 patches &lt;code&gt;dw0.suc_eof = 0&lt;/code&gt; across the descriptor ring in SRAM after driver initialization, paired with 64-byte aligned cache synchronization (&lt;code&gt;sync_dma_c2m&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Result&lt;/strong&gt;: Removing the cyclic EOF markers eliminated the observed wrap seams, periodic vertical drops and horizontal jitter in the tested live pipeline. This addresses transport boundaries; RF noise and demodulation artifacts remain separate quality limits.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Public report and Espressif confirmation:&lt;/strong&gt; Leon Beekveldt (Twotoz) reported the continuous-stream problem in &lt;a href=&quot;https://github.com/espressif/esp-idf/issues/19091&quot;&gt;espressif/esp-idf#19091&lt;/a&gt; on &lt;strong&gt;16 September 2026&lt;/strong&gt;, with a live-hardware A/B comparison. On &lt;strong&gt;17 September&lt;/strong&gt;, Espressif&amp;#39;s maintainer &lt;a href=&quot;https://github.com/espressif/esp-idf/issues/19091#issuecomment-5712811733&quot;&gt;confirmed: “Your analysis is correct.”&lt;/a&gt; and supplied a driver patch. The maintainer explained that BitScrambler interprets cyclic &lt;code&gt;suc_eof&lt;/code&gt; as a real stream boundary: a steady-state loop should have no EOF, while buffer switching still needs a one-time EOF notification.&lt;/p&gt;&lt;p&gt;This records C5VRX&amp;#39;s concrete contribution to a continuous ESP32-C5 RF → IQ → hardware WBFM → CVBS pipeline. The issue concerns &lt;strong&gt;PARLIO/GDMA/BitScrambler stream continuity&lt;/strong&gt;, not finite &lt;code&gt;adctrig&lt;/code&gt; capture or proof that every RF acquisition path is gapless. The earlier autonomous RF-writer and live NTSC milestones are recorded separately in &lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/docs/continuous-iq-findings.md&quot;&gt;continuous IQ hardware findings&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;2. Direct Gain V5 default gain controller&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;V5 = V4 plus a 200 us observer cadence (timer-driven, each completed RX descriptor measured at most once) and anti-hunt damping: two direction reversals of consecutive writes within 20 ms make out-of-band decisions need 8 windows (~1.6 ms) for 200 ms. Saturation is never damped.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Range lanes:&lt;/strong&gt; once the analog gain is at the table maximum and the envelope is still starved, V5 switches the MODEM_DIAG taps to finer ADC bit sets: fine {9,7,6,5} (+6 dB) and ultrafine {9,6,5,4} (+12 dB). Inside their window these are an exact 2x/4x rescale of the coarse nibble (same angle, same Phase8 LUT, no calibration), and the analog gain trims between the 6 dB steps, so total gain is continuous. Without a carrier it listens on ultrafine. Rail codes or incoherent wide junk on a finer lane (the pre-fold warning / a folded strong carrier) return to coarse at once, and lanes are always the first gain removed.&lt;/li&gt;
&lt;li&gt;The fast observer measures centered Q4 P50/P90/P95, phase coherence, clipping, and origin occupancy from completed RX buffers.&lt;/li&gt;
&lt;li&gt;V4 is the sole automatic gain writer in the default profile. It chooses physical RF/BB/Fine gain tuples and verifies each write after its measured settle time.&lt;/li&gt;
&lt;li&gt;Direct: the first window with P50 below 13 or above 32 triggers the full predicted correction in one step; saturation takes an immediate emergency drop.&lt;/li&gt;
&lt;li&gt;Healthy measurements (P50 13-32) produce a zero-write hold, so a steady carrier gets no gain writes.&lt;/li&gt;
&lt;li&gt;Without a carrier it listens at the table maximum rather than the G62 survival gain, so a quantizer-starved weak carrier is not mistaken for no carrier.&lt;/li&gt;
&lt;li&gt;Native hardware AGC is an opt-in alternative (see above).&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;3. Default RF settings&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;The default Direct Gain V4 profile uses BW40 and AFC off. This keeps gain as the changing RF control during normal operation.&lt;/li&gt;
&lt;li&gt;Other receiver profiles and lab modes remain selectable over the serial console. Some experimental profiles can use automatic bandwidth or AFC while acquiring a carrier.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;4. Phase8 adjacent demodulator&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fm_phase8_hr_live.bsasm&lt;/code&gt; uses adjacent I/Q samples at 20 MS/s and maps the full signed phase-delta range (-128 through +127 bins) across the 64 DAC levels.&lt;/li&gt;
&lt;li&gt;The mapping preserves direction across the signed range. A phase step that crosses the +/-180 degree representation boundary remains ambiguous and can alias.&lt;/li&gt;
&lt;li&gt;Phase8 is selected by default in the current build and was viewed live with Direct Gain V4.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Known limits&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;A signed adjacent-phase estimate cannot distinguish an actual step beyond 180 degrees from its wrapped equivalent.&lt;/li&gt;
&lt;li&gt;The hardware observation documented above covers a working live picture at the tested VTX and receiver setup. It does not establish performance at all distances, channels, antenna orientations, or gain transitions.&lt;/li&gt;
&lt;/ul&gt;&lt;hr/&gt;&lt;div&gt;&lt;h2&gt;Hardware Pinout (Seeed Studio XIAO ESP32-C5)&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Connect a 6-bit binary-weighted resistor DAC ladder to the XIAO pins, meeting at the &lt;code&gt;VIDEO&lt;/code&gt; node:&lt;/p&gt;&lt;div&gt;&lt;h3&gt;Output network and controls&lt;/h3&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Video level&lt;/strong&gt;: The reference circuit uses a 200 ohm shunt at &lt;code&gt;VIDEO&lt;/code&gt;; the connected display or goggles may add their own 75 ohm termination. Check the resulting level with the load you use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output filter&lt;/strong&gt;: The reference circuit uses a 470 pF ceramic capacitor from &lt;code&gt;VIDEO&lt;/code&gt; to &lt;code&gt;GND&lt;/code&gt;. Check image sharpness with your display and termination.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BOOT button&lt;/strong&gt;: A short click switches channel. A long press opens the menu when enabled; short clicks move through menu choices and a long press applies one. On the CHANNEL page, a long press scans the available channels and selects the strongest coherent carrier. If Safe Flight mode blocks the menu, hold BOOT for three seconds to restore the default Phase8/6BIT@40/Direct Gain profile and open the recovery menu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Persistent settings&lt;/strong&gt;: Channel, RF bandwidth, AFC, video-standard/output, AGC/gain, and the BOOT-menu preference are saved and restored after restart.&lt;/li&gt;
&lt;/ol&gt;&lt;hr/&gt;&lt;div&gt;&lt;h2&gt;Interactive Serial Console Hotkeys&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Connecting to the USB serial console (115200 baud) provides live telemetry and single-key controls:&lt;/p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;c&lt;/code&gt; / &lt;code&gt;C&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cycle FPV channel / band (48 standard channels: RaceBand, Boscam A/B/E, FatShark, LowBand)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;+&lt;/code&gt; / &lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Manual RF gain step (±2 index)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;a&lt;/code&gt; / &lt;code&gt;s&lt;/code&gt; / &lt;code&gt;m&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Switch AGC mode: &lt;strong&gt;Active&lt;/strong&gt; (auto-adapting) / &lt;strong&gt;Shadow&lt;/strong&gt; (dry-run) / &lt;strong&gt;Manual&lt;/strong&gt; (fixed)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;f&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cycle AFC Mode: &lt;strong&gt;Auto Centering&lt;/strong&gt; (±1.5 MHz) / &lt;strong&gt;Hold&lt;/strong&gt; / &lt;strong&gt;Off&lt;/strong&gt; (0 kHz)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;,&lt;/code&gt; / &lt;code&gt;.&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Fine-tune carrier frequency offset in ±50 kHz steps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reset frequency offset to 0 kHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;e&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Toggle RX sample clock edge (POS / NEG)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Print the live diagnostics summary and available console commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;R&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Run the guarded RSSI and centered-Q4 measurement probe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;D&lt;/code&gt; / &lt;code&gt;I&lt;/code&gt; / &lt;code&gt;Y&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Select Direct Gain V4 / Direct Gain V1 / ARC V3 profiles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;N&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Toggle native hardware AGC (opt-in) / Direct Gain V4 and reboot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;E&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Print one P8ENV row (Q4 envelope, native AGC state, transport)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Q&lt;/code&gt; / &lt;code&gt;T&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Raw Q4/I4 dump (4 x 64 consecutive samples) / read-only AGC register dump&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;hr/&gt;&lt;div&gt;&lt;h2&gt;Build &amp;amp; Flash Guide&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Prerequisites&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Option A (Docker - Recommended)&lt;/strong&gt;: Docker Desktop or Docker engine installed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Option B (Native ESP-IDF)&lt;/strong&gt;: &lt;a href=&quot;https://docs.espressif.com/projects/esp-idf/en/v6.0/esp32c5/get-started/&quot;&gt;ESP-IDF v6.0.x&lt;/a&gt; installed with Python 3.10+.&lt;/li&gt;
&lt;/ul&gt;&lt;hr/&gt;&lt;div&gt;&lt;h3&gt;Step 1: Build the Firmware&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;h4&gt;Option A: Build via Docker (Zero-Install Toolchain)&lt;/h4&gt;&lt;/div&gt;&lt;p&gt;No ESP-IDF installation required on your host machine. Run from the repository root:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Linux / macOS / Git Bash:&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;pre&gt;docker run --rm -v &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;${PWD}&lt;/span&gt;:/workspace&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; -w /workspace espressif/idf:v6.0.2 idf.py build&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Windows PowerShell:&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;h4&gt;Option B: Build with Native ESP-IDF v6.0+&lt;/h4&gt;&lt;/div&gt;&lt;p&gt;If you have ESP-IDF installed locally:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Linux / macOS:&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;.&lt;/span&gt; &lt;span&gt;$IDF_PATH&lt;/span&gt;/export.sh
idf.py build&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Windows (ESP-IDF PowerShell Environment):&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;pre&gt;export.ps1
idf.py build&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The build produces three critical binaries in &lt;code&gt;build/&lt;/code&gt;:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;build/bootloader/bootloader.bin&lt;/code&gt; (at flash offset &lt;code&gt;0x2000&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;build/partition_table/partition-table.bin&lt;/code&gt; (at flash offset &lt;code&gt;0x8000&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;build/c5vrx3.bin&lt;/code&gt; (at flash offset &lt;code&gt;0x10000&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;&lt;hr/&gt;&lt;div&gt;&lt;h3&gt;Step 2: Validate the firmware sources&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;CI runs the architectural validator and host demodulation checks. To run the repository validator locally:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;python tools/validate_build.py&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;(All architectural checks must pass.)&lt;/em&gt;&lt;/p&gt;&lt;hr/&gt;&lt;div&gt;&lt;h3&gt;Step 3: Flash to ESP32-C5&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;h4&gt;Option A: Web Flasher (Zero-Install In-Browser Flasher)&lt;/h4&gt;&lt;/div&gt;&lt;p&gt;Launch the web flasher directly in your browser (Google Chrome, Microsoft Edge, Brave):
&lt;strong&gt;&lt;a href=&quot;https://twotoz.github.io/C5VRX/&quot;&gt;Open C5VRX Web Flasher on GitHub Pages&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;h4&gt;Option B: Zero-Friction Auto-Flash (Python Watcher)&lt;/h4&gt;&lt;/div&gt;&lt;p&gt;Run the auto-flash watcher:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;python tools/auto_flash.py&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Plug in or reset your Seeed Studio XIAO ESP32-C5 into download mode (hold BOOT while tapping RESET), and the watcher will detect the COM port, flash the firmware, and automatically trigger a watchdog reset into the application!&lt;/em&gt;&lt;/p&gt;&lt;div&gt;&lt;h4&gt;Option C: Direct Flash Script&lt;/h4&gt;&lt;/div&gt;&lt;p&gt;Specify your COM port (or omit to auto-detect):&lt;/p&gt;&lt;div&gt;&lt;pre&gt;python tools/flash.py COM10&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;h4&gt;Option D: Native ESP-IDF Flasher&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;idf.py -p COM10 flash&lt;/pre&gt;&lt;/div&gt;&lt;hr/&gt;&lt;div&gt;&lt;h3&gt;Step 4: Interactive Serial Monitor &amp;amp; Diagnostics&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;Launch the dedicated low-latency serial monitor:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;python tools/monitor.py COM10&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Use the interactive hotkeys (&lt;code&gt;c&lt;/code&gt; to cycle channels, &lt;code&gt;+&lt;/code&gt;/&lt;code&gt;-&lt;/code&gt; for manual gain, &lt;code&gt;a&lt;/code&gt; for active AGC, &lt;code&gt;d&lt;/code&gt; for hardware diagnostics).&lt;/p&gt;&lt;hr/&gt;&lt;div&gt;&lt;h2&gt;Repository Structure&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;C5VRX/
+-- main/
|   +-- video.c, video.h             # Video pipeline, gain controller, menu, console
|   +-- fm_phase8_hr_live.bsasm      # Default live Phase8 demodulator
|   +-- direct_gain_v3.c, .h         # Default automatic gain controller
|   +-- phase8_gain_lut.h            # Generated Phase8 coherence/gain lookup
|   +-- rf.c, rf.h                   # ESP32-C5 RF and PHY controls
+-- assets/                          # Project branding
+-- docs/                            # Design notes and hardware measurements
+-- tools/                           # Build checks, generators, and flash utilities
+-- web/                             # Browser Web Serial flasher
+-- sdkconfig.defaults               # ESP-IDF defaults
+-- partitions.csv                   # Flash partition table&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr/&gt;&lt;div&gt;&lt;h2&gt;License&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;C5VRX is open-source software licensed under the &lt;strong&gt;GNU General Public License v3.0 only&lt;/strong&gt; (&lt;code&gt;GPL-3.0-only&lt;/code&gt;).&lt;/p&gt;&lt;p&gt;See &lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt; for full licensing terms. The C5VRX name and logos have separate terms; see &lt;a href=&quot;https://github.com/Twotoz/C5VRX/blob/main/assets/BRANDING.md&quot;&gt;assets/BRANDING.md&lt;/a&gt;.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>&quot;accessibility descendant&quot; in presentational role inheritance and other concerns · Issue #2832 · w3c/aria · GitHub</title>
<link>https://github.com/w3c/aria/issues/2832</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/4130ff71360ed10b2e7467a06a1580f09f2694e6635c5b9ef0018b740acdb000/w3c/aria/issues/2832"></enclosure>
<guid isPermaLink="false">wpEkKG6dDpLIbpszI-JYMno9QBpSdhlC84CM1Q==</guid>
<pubDate>Sat, 03 Oct 2026 01:12:01 +0000</pubDate>
<description>From https://w3c.github.io/aria/#presentational-role-inheritance When an explicit or inherited role of none/presentation is applied to an element with the implicit semantic of a WAI-ARIA role that ...</description>
<content:encoded>&lt;div&gt;
      Skip to content

      &lt;span&gt;
    
&lt;/span&gt;      
      




  
  
  






      

          




  
  
  



          

                












  
  
  &lt;div&gt;&lt;div&gt;&lt;header&gt;&lt;h2&gt;Navigation Menu&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/&quot;&gt;&lt;/a&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fw3c%2Faria%2Fissues%2F2832&quot;&gt;&lt;span&gt;&lt;span&gt;Sign in&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;Appearance settings&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fw3c%2Faria%2Fissues%2F2832&quot;&gt;&lt;span&gt;&lt;span&gt;Sign in&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;https://github.com/signup?ref_cta=Sign+up&amp;amp;ref_loc=header+logged+out&amp;amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&amp;amp;source=header-repo&amp;amp;source_repo=w3c%2Faria&quot;&gt;&lt;span&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;Appearance settings&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/header&gt;&lt;/div&gt;&lt;/div&gt;




      &lt;div&gt;
  
        
        &lt;span&gt;You signed in with another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You signed out in another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You switched accounts on another tab or window. Reload to refresh your session.&lt;/span&gt;

    Dismiss alert


  
&lt;/div&gt;
    &lt;/div&gt;&lt;div&gt;
        &lt;div&gt;
    &lt;main&gt;
      
      
    


    








  

    &lt;div&gt;

        &lt;div&gt;

          &lt;div&gt;
              
  &lt;div&gt;
      
    
    &lt;span&gt;
      &lt;a href=&quot;https://github.com/w3c&quot;&gt;
        w3c
&lt;/a&gt;    &lt;/span&gt;
    &lt;span&gt;/&lt;/span&gt;
    &lt;strong&gt;
      &lt;a href=&quot;https://github.com/w3c/aria&quot;&gt;aria&lt;/a&gt;
    &lt;/strong&gt;

    &lt;span&gt;Public&lt;/span&gt;
  &lt;/div&gt;


          &lt;/div&gt;

          &lt;div&gt;
              &lt;ul&gt;
    
      

  &lt;li&gt;
            &lt;a href=&quot;https://github.com/login?return_to=%2Fw3c%2Faria&quot;&gt;    Notifications
&lt;/a&gt;    You must be signed in to change notification settings

  &lt;/li&gt;

  &lt;li&gt;
          &lt;a href=&quot;https://github.com/login?return_to=%2Fw3c%2Faria&quot;&gt;    Fork
    &lt;span&gt;160&lt;/span&gt;
&lt;/a&gt;
  &lt;/li&gt;

  &lt;li&gt;
        &lt;div&gt;
        &lt;a href=&quot;https://github.com/login?return_to=%2Fw3c%2Faria&quot;&gt;    &lt;span&gt;
          Star
&lt;/span&gt;          &lt;span&gt;755&lt;/span&gt;
&lt;/a&gt;&lt;/div&gt;
  &lt;/li&gt;

&lt;/ul&gt;

          &lt;/div&gt;
        &lt;/div&gt;

          &lt;div&gt;
&lt;/div&gt;


            

    &lt;/div&gt;
  




    &lt;div&gt;
    



    
      
    









  



  
  
  &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h1&gt;&lt;bdi&gt;&amp;quot;accessibility descendant&amp;quot; in presentational role inheritance and other concerns&lt;/bdi&gt;&lt;span&gt;&lt;span&gt; #2832&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Copy link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Copy link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Open&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Open&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/w3c/aria/issues/2832#top&quot;&gt;&lt;bdi&gt;&amp;quot;accessibility descendant&amp;quot; in presentational role inheritance and other concerns&lt;/bdi&gt;&lt;/a&gt;&lt;span&gt;#2832&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Copy link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;Assignees&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;div&gt; &lt;a href=&quot;https://github.com/pkra&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/426686?s=64&amp;amp;u=068a1637a57bc46a6b4ead48c9eb13f52b67368a&amp;amp;v=4&quot; alt=&quot;pkra&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Labels&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/w3c/aria/issues?q=state%3Aopen%20label%3A%22F2FCandidate%22&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;F2FCandidate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Candidate topics for F2F (or Virtual F2F) meeting&lt;/span&gt;&lt;/a&gt;&lt;span&gt;Candidate topics for F2F (or Virtual F2F) meeting&lt;/span&gt;&lt;a href=&quot;https://github.com/w3c/aria/issues?q=state%3Aopen%20label%3A%22clarification%22&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;clarification&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;clarifying or correcting language that is either confusing, misleading or under-specified&lt;/span&gt;&lt;/a&gt;&lt;span&gt;clarifying or correcting language that is either confusing, misleading or under-specified&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Description&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/pkra&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/426686?u=068a1637a57bc46a6b4ead48c9eb13f52b67368a&amp;amp;v=4&amp;amp;size=48&quot; alt=&quot;@pkra&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/pkra&quot;&gt;pkra&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;opened &lt;/span&gt;&lt;a href=&quot;https://github.com/w3c/aria/issues/2832#issue-4768884373&quot;&gt;on Jun 29, 2026&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Issue body actions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;From &lt;a href=&quot;https://w3c.github.io/aria/#presentational-role-inheritance&quot;&gt;https://w3c.github.io/aria/#presentational-role-inheritance&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When an explicit or inherited role of none/presentation is applied to an element with the implicit semantic of a WAI-ARIA role that has Allowed Accessibility Child Roles, in addition to the element with the explicit role of none/presentation, the user agent MUST apply an inherited role of none to any accessibility descendants that do not have an explicit role defined.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &amp;quot;accessibility descendants&amp;quot; phrasing was introduced in &lt;a href=&quot;https://github.com/w3c/aria/commit/bb6baf146e227498a503825a30cbc5d8cc6844d5#diff-0eb547304658805aad788d320f10bf1f292797b5e6d745a3bf617584da017051R506&quot;&gt;&lt;tt&gt;bb6baf1&lt;/tt&gt;#diff-0eb547304658805aad788d320f10bf1f292797b5e6d745a3bf617584da017051R506&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I think here we mean not just child (instead of descendant) but specifically &amp;quot;host-language-required child element without explicit role&amp;quot;. (This requirement would still work recursively, e.g. for table markup.)&lt;/p&gt;
&lt;p&gt;(Via &lt;a href=&quot;https://github.com/dequelabs/axe-core/pull/5171#discussion_r3435303382&quot;&gt;dequelabs/axe-core#5171 (comment)&lt;/a&gt;)&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Reactions are currently unavailable&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Activity&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/signup?return_to=https://github.com/w3c/aria/issues/2832&quot;&gt;&lt;span&gt;&lt;span&gt;Sign up for free&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;strong&gt; to join this conversation on GitHub.&lt;/strong&gt; Already have an account? &lt;/span&gt;&lt;a href=&quot;https://github.com/login?return_to=https://github.com/w3c/aria/issues/2832&quot;&gt;Sign in to comment&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Metadata&lt;/h2&gt;&lt;h2&gt;Metadata&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Assignees&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/pkra&quot;&gt;&lt;span&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/426686?s=64&amp;amp;u=068a1637a57bc46a6b4ead48c9eb13f52b67368a&amp;amp;v=4&quot; alt=&quot;@pkra&quot; title=&quot;&quot;/&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;div&gt;pkra&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Labels&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/w3c/aria/issues?q=state%3Aopen%20label%3A%22F2FCandidate%22&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;F2FCandidate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Candidate topics for F2F (or Virtual F2F) meeting&lt;/span&gt;&lt;/a&gt;&lt;span&gt;Candidate topics for F2F (or Virtual F2F) meeting&lt;/span&gt;&lt;a href=&quot;https://github.com/w3c/aria/issues?q=state%3Aopen%20label%3A%22clarification%22&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;clarification&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;clarifying or correcting language that is either confusing, misleading or under-specified&lt;/span&gt;&lt;/a&gt;&lt;span&gt;clarifying or correcting language that is either confusing, misleading or under-specified&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Type&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No type&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Projects&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No projects&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Milestone&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No milestone&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Relationships&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;None yet&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Development&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No branches or pull requests&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;Issue actions&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;






  &lt;/div&gt;



    &lt;/main&gt;
  &lt;/div&gt;

  &lt;/div&gt;&lt;div&gt;
    
    
    You can’t perform that action at this time.
  &lt;/div&gt;&lt;div&gt;
  &lt;div&gt;
  &lt;/div&gt;
&lt;/div&gt;</content:encoded>
</item>
<item>
<title>html-in-canvas feedback · Issue #2758 · w3c/aria · GitHub</title>
<link>https://github.com/w3c/aria/issues/2758</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/fdd9b2d50bc8094ff9b2938fae431a7291921200685f62b5427a42ca7127a6b4/w3c/aria/issues/2758"></enclosure>
<guid isPermaLink="false">z1kYN24SHMGHXX7e7T_d_L_w9JCIZ-iyBuEQLw==</guid>
<pubDate>Sat, 03 Oct 2026 01:12:00 +0000</pubDate>
<description>html-in-canvas is a new proposal for customizing the rendering of html content using canvas. The high-level design is to allow children of  to be drawn into the canvas while ensuring that t...</description>
<content:encoded>&lt;body&gt;
    &lt;div&gt;
      
      

    &lt;div&gt;
      Skip to content

      &lt;span&gt;
    
&lt;/span&gt;      
      




  
  
  






      

          




  
  
  



          

                












  
  
  &lt;div&gt;&lt;div&gt;&lt;header&gt;&lt;h2&gt;Navigation Menu&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/&quot;&gt;&lt;/a&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fw3c%2Faria%2Fissues%2F2758&quot;&gt;&lt;span&gt;&lt;span&gt;Sign in&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;Appearance settings&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fw3c%2Faria%2Fissues%2F2758&quot;&gt;&lt;span&gt;&lt;span&gt;Sign in&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;https://github.com/signup?ref_cta=Sign+up&amp;amp;ref_loc=header+logged+out&amp;amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&amp;amp;source=header-repo&amp;amp;source_repo=w3c%2Faria&quot;&gt;&lt;span&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;Appearance settings&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/header&gt;&lt;/div&gt;&lt;/div&gt;




      &lt;div&gt;
  
        
        &lt;span&gt;You signed in with another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You signed out in another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You switched accounts on another tab or window. Reload to refresh your session.&lt;/span&gt;

    Dismiss alert


  
&lt;/div&gt;
    &lt;/div&gt;

  








    &lt;div&gt;






  
&lt;/div&gt;


    






  &lt;div&gt;
        &lt;div&gt;
    &lt;main&gt;
      
      
    


    








  

    &lt;div&gt;

        &lt;div&gt;

          &lt;div&gt;
              
  &lt;div&gt;
      
    
    &lt;span&gt;
      &lt;a href=&quot;https://github.com/w3c&quot;&gt;
        w3c
&lt;/a&gt;    &lt;/span&gt;
    &lt;span&gt;/&lt;/span&gt;
    &lt;strong&gt;
      &lt;a href=&quot;https://github.com/w3c/aria&quot;&gt;aria&lt;/a&gt;
    &lt;/strong&gt;

    &lt;span&gt;Public&lt;/span&gt;
  &lt;/div&gt;


          &lt;/div&gt;

          &lt;div&gt;
              &lt;ul&gt;
    
      

  &lt;li&gt;
            &lt;a href=&quot;https://github.com/login?return_to=%2Fw3c%2Faria&quot;&gt;    Notifications
&lt;/a&gt;    You must be signed in to change notification settings

  &lt;/li&gt;

  &lt;li&gt;
          &lt;a href=&quot;https://github.com/login?return_to=%2Fw3c%2Faria&quot;&gt;    Fork
    &lt;span&gt;160&lt;/span&gt;
&lt;/a&gt;
  &lt;/li&gt;

  &lt;li&gt;
        &lt;div&gt;
        &lt;a href=&quot;https://github.com/login?return_to=%2Fw3c%2Faria&quot;&gt;    &lt;span&gt;
          Star
&lt;/span&gt;          &lt;span&gt;755&lt;/span&gt;
&lt;/a&gt;&lt;/div&gt;
  &lt;/li&gt;

&lt;/ul&gt;

          &lt;/div&gt;
        &lt;/div&gt;

          &lt;div&gt;
&lt;/div&gt;


            

    &lt;/div&gt;
  




    &lt;div&gt;
    



    
      
    









  



  
  
  &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h1&gt;&lt;bdi&gt;html-in-canvas feedback&lt;/bdi&gt;&lt;span&gt;&lt;span&gt; #2758&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Copy link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Copy link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Open&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Open&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/w3c/aria/issues/2758#top&quot;&gt;&lt;bdi&gt;html-in-canvas feedback&lt;/bdi&gt;&lt;/a&gt;&lt;span&gt;#2758&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Copy link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Description&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/progers&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/569214?u=5b3182d2e0f0c6b23e20d5c935b6bbef533d49a0&amp;amp;v=4&amp;amp;size=48&quot; alt=&quot;@progers&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/progers&quot;&gt;progers&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;opened &lt;/span&gt;&lt;a href=&quot;https://github.com/w3c/aria/issues/2758#issue-4156140033&quot;&gt;on Mar 27, 2026&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Issue body actions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/WICG/html-in-canvas&quot;&gt;html-in-canvas&lt;/a&gt; is a new proposal for customizing the rendering of html content using canvas. The high-level design is to allow children of &lt;code class=&quot;notranslate&quot;&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; to be drawn into the canvas while ensuring that the DOM position is kept in-sync with the drawn position. A goal of this approach is for browser features like accessibility to &amp;quot;just work&amp;quot; by default.&lt;/p&gt;
&lt;p&gt;Here is a minimal example of html-in-canvas:&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;canvas&lt;/span&gt; &lt;span&gt;id&lt;/span&gt;=&amp;quot;&lt;span&gt;canvas&lt;/span&gt;&amp;quot; &lt;span&gt;style&lt;/span&gt;=&amp;quot;&lt;span&gt;width: 200px; height: 200px;&lt;/span&gt;&amp;quot; &lt;span&gt;layoutsubtree&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
  &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;form&lt;/span&gt; &lt;span&gt;id&lt;/span&gt;=&amp;quot;&lt;span&gt;form_element&lt;/span&gt;&amp;quot;&lt;span&gt;&amp;gt;&lt;/span&gt;
    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;label&lt;/span&gt; &lt;span&gt;for&lt;/span&gt;=&amp;quot;&lt;span&gt;name&lt;/span&gt;&amp;quot;&lt;span&gt;&amp;gt;&lt;/span&gt;name:&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt; &lt;span&gt;id&lt;/span&gt;=&amp;quot;&lt;span&gt;name&lt;/span&gt;&amp;quot;&lt;span&gt;&amp;gt;&lt;/span&gt;
  &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;form&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;canvas&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;

&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
  &lt;span&gt;const&lt;/span&gt; &lt;span&gt;ctx&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;document&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getElementById&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;#39;canvas&amp;#39;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getContext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;#39;2d&amp;#39;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;

  &lt;span&gt;canvas&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;onpaint&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt; &lt;span&gt;=&amp;gt;&lt;/span&gt; &lt;span&gt;{&lt;/span&gt;
    &lt;span&gt;ctx&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;reset&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
    &lt;span&gt;let&lt;/span&gt; &lt;span&gt;transform&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;ctx&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;drawElementImage&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;form_element&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;100&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
    &lt;span&gt;// Synchronize the DOM position to match the drawn position.&lt;/span&gt;
    &lt;span&gt;form_element&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;transform&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;transform&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;toString&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
  &lt;span&gt;}&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This would produce the following result:&lt;br/&gt;
&lt;a href=&quot;https://private-user-images.githubusercontent.com/569214/570703772-c39937ff-fe08-4cfe-a110-5f8e9bf375ea.gif?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTA5OTAxNjksIm5iZiI6MTc5MDk4OTg2OSwicGF0aCI6Ii81NjkyMTQvNTcwNzAzNzcyLWMzOTkzN2ZmLWZlMDgtNGNmZS1hMTEwLTVmOGU5YmYzNzVlYS5naWY_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYxMDAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MTAwM1QwMTExMDlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mZTJjZWIwNjVjNjg3ZWIzMDA4NWIyZTYzMzQ1MDAzYWU3ZjY4Y2IyOWVlMzQ4NWJjZTE3YjZjZmU5MDE3YTQwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZnaWYifQ.pKCR_i7dUB9C3URpnUHEa2msKXOHvA9O27fSswyPIjk&quot;&gt;&lt;img src=&quot;https://private-user-images.githubusercontent.com/569214/570703772-c39937ff-fe08-4cfe-a110-5f8e9bf375ea.gif?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTA5OTAxNjksIm5iZiI6MTc5MDk4OTg2OSwicGF0aCI6Ii81NjkyMTQvNTcwNzAzNzcyLWMzOTkzN2ZmLWZlMDgtNGNmZS1hMTEwLTVmOGU5YmYzNzVlYS5naWY_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYxMDAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MTAwM1QwMTExMDlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mZTJjZWIwNjVjNjg3ZWIzMDA4NWIyZTYzMzQ1MDAzYWU3ZjY4Y2IyOWVlMzQ4NWJjZTE3YjZjZmU5MDE3YTQwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZnaWYifQ.pKCR_i7dUB9C3URpnUHEa2msKXOHvA9O27fSswyPIjk&quot; alt=&quot;a screenshot showing a form element with a blinking cursor&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Please see our &lt;a href=&quot;https://github.com/WICG/html-in-canvas&quot;&gt;explainer&lt;/a&gt; for more information. We would appreciate any feedback you have about this, such as any potential issues with how this interacts with Assistive Technologies.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Reactions are currently unavailable&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Activity&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/signup?return_to=https://github.com/w3c/aria/issues/2758&quot;&gt;&lt;span&gt;&lt;span&gt;Sign up for free&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;strong&gt; to join this conversation on GitHub.&lt;/strong&gt; Already have an account? &lt;/span&gt;&lt;a href=&quot;https://github.com/login?return_to=https://github.com/w3c/aria/issues/2758&quot;&gt;Sign in to comment&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Metadata&lt;/h2&gt;&lt;h2&gt;Metadata&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Assignees&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No one assigned&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Labels&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No labels&lt;/span&gt;&lt;div&gt;&lt;div&gt;No labels&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Type&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No type&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Projects&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No projects&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Milestone&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No milestone&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Relationships&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;None yet&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Development&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No branches or pull requests&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;Issue actions&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;






  &lt;/div&gt;



    &lt;/main&gt;
  &lt;/div&gt;

  &lt;/div&gt;

          &lt;footer&gt;
  &lt;h2&gt;Footer&lt;/h2&gt;

  


  &lt;div&gt;
    &lt;div&gt;
      &lt;a href=&quot;https://github.com&quot;&gt;
        
&lt;/a&gt;
      &lt;span&gt;
        © 2026 GitHub, Inc.
      &lt;/span&gt;
    &lt;/div&gt;

    
  &lt;/div&gt;
&lt;/footer&gt;



    




  &lt;div&gt;
    
    
    You can’t perform that action at this time.
  &lt;/div&gt;

    

    &lt;div&gt;
  &lt;div&gt;
  &lt;/div&gt;
&lt;/div&gt;

    





    &lt;/div&gt;
    
    
  


&lt;/body&gt;</content:encoded>
</item>
<item>
<title>Editorial: In favor of &quot;owned element&quot; and &quot;owning element&quot;, uses &quot;ac… · w3c/aria@bb6baf1 · GitHub</title>
<link>https://github.com/w3c/aria/commit/bb6baf146e227498a503825a30cbc5d8cc6844d5</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/3b74be6f541ea036127ab84c895efd408a2021e04aefcf4d9039c1ae9dc49b29/w3c/aria/commit/bb6baf146e227498a503825a30cbc5d8cc6844d5"></enclosure>
<guid isPermaLink="false">n8gKGJxw_bFmPl7mAUzq6Ye1_pi_TVkAk0kydQ==</guid>
<pubDate>Sat, 03 Oct 2026 01:12:00 +0000</pubDate>
<description>…cessibility parent&quot;, &quot;accessibility child&quot; and &quot;accessibility descendant&quot; (#2010) Closes #1150 As discussed in the F2F, &quot;owned&quot; elements refers to either des...</description>
<content:encoded>&lt;body&gt;
    &lt;div&gt;
      
      

    &lt;div&gt;
      Skip to content

      &lt;span&gt;
    
&lt;/span&gt;      
      





  
  
  






      

          





  
  
  



          

                













  
  
  &lt;div&gt;&lt;div&gt;&lt;header&gt;&lt;h2&gt;Navigation Menu&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/&quot;&gt;&lt;/a&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fw3c%2Faria%2Fcommit%2Fbb6baf146e227498a503825a30cbc5d8cc6844d5&quot;&gt;&lt;span&gt;&lt;span&gt;Sign in&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;Appearance settings&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fw3c%2Faria%2Fcommit%2Fbb6baf146e227498a503825a30cbc5d8cc6844d5&quot;&gt;&lt;span&gt;&lt;span&gt;Sign in&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;https://github.com/signup?ref_cta=Sign+up&amp;amp;ref_loc=header+logged+out&amp;amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fcommit%2Fshow&amp;amp;source=header-repo&amp;amp;source_repo=w3c%2Faria&quot;&gt;&lt;span&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;Appearance settings&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/header&gt;&lt;/div&gt;&lt;/div&gt;




      &lt;div&gt;
  
        
        &lt;span&gt;You signed in with another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You signed out in another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You switched accounts on another tab or window. Reload to refresh your session.&lt;/span&gt;

    Dismiss alert


  
&lt;/div&gt;
    &lt;/div&gt;

  








    &lt;div&gt;






  
&lt;/div&gt;


    






  &lt;div&gt;
        &lt;div&gt;
    &lt;main&gt;
      
      
    


    








  

    &lt;div&gt;

        &lt;div&gt;

          &lt;div&gt;
              
  &lt;div&gt;
      
    
    &lt;span&gt;
      &lt;a href=&quot;https://github.com/w3c&quot;&gt;
        w3c
&lt;/a&gt;    &lt;/span&gt;
    &lt;span&gt;/&lt;/span&gt;
    &lt;strong&gt;
      &lt;a href=&quot;https://github.com/w3c/aria&quot;&gt;aria&lt;/a&gt;
    &lt;/strong&gt;

    &lt;span&gt;Public&lt;/span&gt;
  &lt;/div&gt;


          &lt;/div&gt;

          &lt;div&gt;
              &lt;ul&gt;
    
      

  &lt;li&gt;
            &lt;a href=&quot;https://github.com/login?return_to=%2Fw3c%2Faria&quot;&gt;    Notifications
&lt;/a&gt;    You must be signed in to change notification settings

  &lt;/li&gt;

  &lt;li&gt;
          &lt;a href=&quot;https://github.com/login?return_to=%2Fw3c%2Faria&quot;&gt;    Fork
    &lt;span&gt;160&lt;/span&gt;
&lt;/a&gt;
  &lt;/li&gt;

  &lt;li&gt;
        &lt;div&gt;
        &lt;a href=&quot;https://github.com/login?return_to=%2Fw3c%2Faria&quot;&gt;    &lt;span&gt;
          Star
&lt;/span&gt;          &lt;span&gt;755&lt;/span&gt;
&lt;/a&gt;&lt;/div&gt;
  &lt;/li&gt;

&lt;/ul&gt;

          &lt;/div&gt;
        &lt;/div&gt;

          &lt;div&gt;
&lt;/div&gt;


            

    &lt;/div&gt;
  




    &lt;div&gt;
    



    
      
    









  
  
  &lt;div&gt;&lt;a href=&quot;https://github.com/w3c/aria&quot;&gt;&lt;/a&gt;  &lt;div&gt;&lt;div&gt;&lt;header&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h1&gt;Commit &lt;span&gt;bb6baf1&lt;/span&gt;&lt;/h1&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/w3c/aria/tree/bb6baf146e227498a503825a30cbc5d8cc6844d5&quot;&gt;&lt;span&gt;&lt;span&gt;Browse files&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;Browse the repository at this point in the history&lt;/span&gt;&lt;a href=&quot;https://github.com/w3c/aria/tree/bb6baf146e227498a503825a30cbc5d8cc6844d5&quot;&gt;&lt;/a&gt;&lt;span&gt;Browse files&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;div&gt; &lt;img src=&quot;https://avatars.githubusercontent.com/u/583831?v=4&amp;amp;size=40&quot; alt=&quot;spectranaut&quot; title=&quot;&quot;/&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/106394951?v=4&amp;amp;size=40&quot; alt=&quot;giacomo-petri&quot; title=&quot;&quot;/&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/426686?v=4&amp;amp;size=40&quot; alt=&quot;pkra&quot; title=&quot;&quot;/&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/75867?v=4&amp;amp;size=40&quot; alt=&quot;cookiecrook&quot; title=&quot;&quot;/&gt;&lt;/div&gt;&lt;/span&gt;&lt;span&gt;authored&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;div&gt;Editorial: In favor of &amp;quot;owned element&amp;quot; and &amp;quot;owning element&amp;quot;, uses &amp;quot;accessibility parent&amp;quot;, &amp;quot;accessibility child&amp;quot; and &amp;quot;accessibility descendant&amp;quot; (&lt;a href=&quot;https://github.com/w3c/aria/pull/2010&quot;&gt;#2010&lt;/a&gt;)&lt;/div&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;Closes&lt;/span&gt; &lt;a href=&quot;https://github.com/w3c/aria/issues/1150&quot;&gt;#1150&lt;/a&gt;

As discussed in the F2F, &amp;quot;owned&amp;quot; elements refers to either descendant or the direct accessibility child. Also, using &amp;quot;owned&amp;quot; in this way is confusing, because it is not exactly the same as &amp;quot;aria-owns&amp;quot;.

Co-authored-by: giacomo-petri &amp;lt;106394951+giacomo-petri@users.noreply.github.com&amp;gt;
Co-authored-by: Peter Krautzberger &amp;lt;p.krautzberger@gmail.com&amp;gt;
Co-authored-by: James Craig &amp;lt;cookiecrook@users.noreply.github.com&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;1 parent &lt;a href=&quot;https://github.com/w3c/aria/commit/0486a98f7dc62d7d88ff1b910067800b6e69d9fe&quot;&gt;0486a98&lt;/a&gt; commit &lt;span&gt;bb6baf1&lt;/span&gt;&lt;div&gt;&lt;span&gt;Copy full SHA for bb6baf1&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;1 file changed&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;+64&lt;/span&gt;&lt;span&gt;-74&lt;/span&gt;&lt;span&gt;Lines changed: 64 additions &amp;amp; 74 deletions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/header&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;File tree&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Expand file tree&lt;/span&gt;&lt;span&gt;Collapse file tree&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Open diff view settings&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Filter options&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;index.html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Expand file tree&lt;/span&gt;&lt;span&gt;Collapse file tree&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Open diff view settings&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;0 commit comments&lt;/h2&gt;&lt;div&gt;&lt;div&gt;Comments&lt;/div&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; (0)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;/div&gt;





  &lt;/div&gt;



    &lt;/main&gt;
  &lt;/div&gt;

  &lt;/div&gt;

          &lt;footer&gt;
  &lt;h2&gt;Footer&lt;/h2&gt;

  


  &lt;div&gt;
    &lt;div&gt;
      &lt;a href=&quot;https://github.com&quot;&gt;
        
&lt;/a&gt;
      &lt;span&gt;
        © 2026 GitHub, Inc.
      &lt;/span&gt;
    &lt;/div&gt;

    
  &lt;/div&gt;
&lt;/footer&gt;



    




  &lt;div&gt;
    
    
    You can’t perform that action at this time.
  &lt;/div&gt;

    

    &lt;div&gt;
  &lt;div&gt;
  &lt;/div&gt;
&lt;/div&gt;

    





    &lt;/div&gt;
    
    
  


&lt;/body&gt;</content:encoded>
</item>
<item>
<title>feat(commons/aria): support ARIA element internals properties by straker · Pull Request #5171 · dequelabs/axe-core · GitHub</title>
<link>https://github.com/dequelabs/axe-core/pull/5171</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/a9a6e2bc74a67ce6dc3594975aa15174f5c77a5cee8ea86e8d14334327b68b22/dequelabs/axe-core/pull/5171"></enclosure>
<guid isPermaLink="false">n7Cbki4CdVH4vqJWiBR5XKFq9BEARMrbzXYAHw==</guid>
<pubDate>Sat, 03 Oct 2026 01:11:59 +0000</pubDate>
<description>Updates the commons/aria directory to use the new getAriaValue, hasAriaValue, and getResolvedRefs functions where it makes sense. Here&#39;s a report of the full directory: commons/aria/arialabel-...</description>
<content:encoded>&lt;div&gt;
        &lt;div&gt;
  &lt;h3&gt;
    &lt;div&gt;
      &lt;span&gt;
          &lt;img src=&quot;https://avatars.githubusercontent.com/u/530687?s=48&amp;amp;v=4&quot; alt=&quot;@WilcoFiers&quot; title=&quot;&quot;/&gt;
      &lt;/span&gt;

      &lt;strong&gt;
            &lt;a href=&quot;https://github.com/WilcoFiers&quot;&gt;WilcoFiers&lt;/a&gt;
    

      &lt;/strong&gt;

      

      


        Jun 18, 2026



      
    &lt;/div&gt;

  &lt;/h3&gt;

  &lt;div&gt;
    &lt;div&gt;
      &lt;details&gt;
        &lt;summary&gt;  &lt;span&gt;
    
  &lt;/span&gt;
&lt;/summary&gt;

        
            &lt;span&gt;
  
      
              Copy link

  
&lt;/span&gt;            &lt;span&gt;
  
      
              Copy Markdown

  
&lt;/span&gt;        
      &lt;/details&gt;
    &lt;/div&gt;

    &lt;div&gt;
        

  &lt;span&gt;
    &lt;span&gt;Contributor&lt;/span&gt;
&lt;/span&gt;

        

    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

        &lt;div&gt;
      &lt;div&gt;
  &lt;div&gt;
  &lt;div&gt;
  
    

    &lt;p&gt;There was a problem hiding this comment.&lt;/p&gt;


  
&lt;/div&gt;
 &lt;div&gt;
  
    

    &lt;h3&gt;Choose a reason for hiding this comment&lt;/h3&gt;

    &lt;p&gt;
      The reason will be displayed to describe this comment to others. &lt;a href=&quot;https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment&quot;&gt;Learn more&lt;/a&gt;.
    &lt;/p&gt;

    
      
      


  
&lt;/div&gt;&lt;/div&gt;

  
    &lt;div&gt;
      &lt;p&gt;There&amp;#39;s another interesting scenario here we didn&amp;#39;t talk about:&lt;/p&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
        Suggested change
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;table&gt;
          &lt;tbody&gt;&lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;  &lt;span&gt;it&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;#39;handles presentation role inheritance on an ElementInternal role&amp;#39;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt; &lt;span&gt;=&amp;gt;&lt;/span&gt; &lt;span&gt;{&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;    &lt;span&gt;fixture&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;innerHTML&lt;/span&gt; &lt;span&gt;=&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;      &lt;span&gt;&amp;#39;&amp;lt;ul role=&amp;quot;none&amp;quot;&amp;gt;&amp;lt;testutils-element with-role=&amp;quot;listitem&amp;quot; id=&amp;quot;target&amp;quot;&amp;gt;&amp;lt;/testutils-element&amp;gt;&amp;lt;/ul&amp;gt;&amp;#39;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;    &lt;span&gt;flatTreeSetup&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;fixture&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;    &lt;span&gt;const&lt;/span&gt; &lt;span&gt;node&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;fixture&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;querySelector&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;#39;#target&amp;#39;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;    &lt;span&gt;assert&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;equal&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;aria&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getRole&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;#39;presentation&amp;#39;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;  &lt;span&gt;}&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;  &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;  &lt;span&gt;it&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;#39;does not set presentation role when ElementInternals isn\&amp;#39;t an allowed child&amp;#39;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt; &lt;span&gt;=&amp;gt;&lt;/span&gt; &lt;span&gt;{&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;    &lt;span&gt;fixture&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;innerHTML&lt;/span&gt; &lt;span&gt;=&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;      &lt;span&gt;&amp;#39;&amp;lt;ul role=&amp;quot;none&amp;quot;&amp;gt;&amp;lt;testutils-element with-role=&amp;quot;button&amp;quot; id=&amp;quot;target&amp;quot;&amp;gt;&amp;lt;/testutils-element&amp;gt;&amp;lt;/ul&amp;gt;&amp;#39;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;    &lt;span&gt;flatTreeSetup&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;fixture&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;    &lt;span&gt;const&lt;/span&gt; &lt;span&gt;node&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;fixture&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;querySelector&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;#39;#target&amp;#39;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;    &lt;span&gt;assert&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;equal&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;aria&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getRole&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;&amp;#39;button&amp;#39;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;td&gt;  &lt;span&gt;}&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;&lt;/table&gt;
    &lt;/div&gt;
    
  &lt;/div&gt;

&lt;p&gt;I&amp;#39;m not actually sure this is how it works in practice. But role=none on ul SHOULD set its child listitems to presentational as well. We should test this I think, and maybe raise a case for in WPT if they don&amp;#39;t already have one.&lt;/p&gt;
    &lt;/div&gt;
  
  

&lt;/div&gt;

    &lt;/div&gt;

        
      
  
  &lt;p&gt;
    &lt;span&gt;
  &lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    
    Sorry, something went wrong.
  &lt;/p&gt;

  &lt;div&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
      

      &lt;h3&gt;        Uh oh!
&lt;/h3&gt;
      &lt;p&gt;        &lt;/p&gt;&lt;p&gt;There was an error while loading. Please reload this page.&lt;/p&gt;


&lt;/div&gt;  &lt;/div&gt;
&lt;/div&gt;  &lt;/div&gt;


          &lt;div&gt;
              &lt;div&gt;
  
    
    &lt;div&gt;
      &lt;div&gt;
        &lt;details&gt;
          &lt;summary&gt;  &lt;span&gt;
    &lt;span&gt;All reactions&lt;/span&gt;
  &lt;/span&gt;
&lt;/summary&gt;

          &lt;ul&gt;
          &lt;/ul&gt;
        &lt;/details&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

      &lt;/div&gt;

&lt;/div&gt;&lt;div&gt;
        &lt;div&gt;
  &lt;h3&gt;
    &lt;div&gt;
      &lt;span&gt;
          &lt;img src=&quot;https://avatars.githubusercontent.com/u/240515854?s=48&amp;amp;v=4&quot; alt=&quot;@chutchins25&quot; title=&quot;&quot;/&gt;
      &lt;/span&gt;

      &lt;strong&gt;
            &lt;a href=&quot;https://github.com/chutchins25&quot;&gt;chutchins25&lt;/a&gt;
    

      &lt;/strong&gt;

      

      


        Jun 18, 2026



      &lt;span&gt;
  &lt;span&gt;•&lt;/span&gt;

  &lt;details&gt;
    &lt;summary&gt;
      &lt;div&gt;
        &lt;span&gt;
          edited
          
        &lt;/span&gt;
        
      &lt;/div&gt;
    &lt;/summary&gt;
    
      
  
        &lt;span&gt;
      &lt;span&gt;Loading&lt;/span&gt;
&lt;/span&gt;

  &lt;div&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
      

      &lt;h3&gt;        Uh oh!
&lt;/h3&gt;
      &lt;p&gt;        &lt;/p&gt;&lt;p&gt;There was an error while loading. Please reload this page.&lt;/p&gt;


&lt;/div&gt;  &lt;/div&gt;
&lt;/div&gt;  &lt;/div&gt;
    
  &lt;/details&gt;
&lt;/span&gt;

    &lt;/div&gt;

  &lt;/h3&gt;

  &lt;div&gt;
    &lt;div&gt;
      &lt;details&gt;
        &lt;summary&gt;  &lt;span&gt;
    
  &lt;/span&gt;
&lt;/summary&gt;

        
            &lt;span&gt;
  
      
              Copy link

  
&lt;/span&gt;            &lt;span&gt;
  
      
              Copy Markdown

  
&lt;/span&gt;        
      &lt;/details&gt;
    &lt;/div&gt;

    &lt;div&gt;
        

  &lt;span&gt;
    &lt;span&gt;Contributor&lt;/span&gt;
&lt;/span&gt;

        

    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

        &lt;div&gt;
      &lt;div&gt;
  &lt;div&gt;
  &lt;div&gt;
  
    

    &lt;p&gt;There was a problem hiding this comment.&lt;/p&gt;


  
&lt;/div&gt;
 &lt;div&gt;
  
    

    &lt;h3&gt;Choose a reason for hiding this comment&lt;/h3&gt;

    &lt;p&gt;
      The reason will be displayed to describe this comment to others. &lt;a href=&quot;https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment&quot;&gt;Learn more&lt;/a&gt;.
    &lt;/p&gt;

    
      
      


  
&lt;/div&gt;&lt;/div&gt;

  
    &lt;div&gt;
      &lt;p&gt;Tried to verify the actual behavior:&lt;br/&gt;
&lt;code class=&quot;notranslate&quot;&gt;getRole&lt;/code&gt; returns &lt;code class=&quot;notranslate&quot;&gt;listitem&lt;/code&gt; (and &lt;code class=&quot;notranslate&quot;&gt;button&lt;/code&gt; stays &lt;code class=&quot;notranslate&quot;&gt;button&lt;/code&gt;).&lt;br/&gt;
Presentational inheritance is keyed off the HTML tag name (&lt;code class=&quot;notranslate&quot;&gt;li&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;td&lt;/code&gt;, …) in &lt;code class=&quot;notranslate&quot;&gt;inheritsPresentationChain&lt;/code&gt;, not the computed role, so a &lt;code class=&quot;notranslate&quot;&gt;testutils-element&lt;/code&gt; never matches.&lt;/p&gt;
&lt;p&gt;Added two tests documenting this current behavior. Re-keying inheritance off computed role is a broader change (also affects &lt;code class=&quot;notranslate&quot;&gt;&amp;lt;div role=&amp;quot;listitem&amp;quot;&amp;gt;&lt;/code&gt; etc.) and a genuine spec/WPT question, so I&amp;#39;ve split it into a follow-up: &lt;a href=&quot;https://github.com/dequelabs/axe-core/issues/5181&quot;&gt;#5181&lt;/a&gt;.&lt;/p&gt;
    &lt;/div&gt;
  
  

&lt;/div&gt;

    &lt;/div&gt;

        
      
  
  &lt;p&gt;
    &lt;span&gt;
  &lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    
    Sorry, something went wrong.
  &lt;/p&gt;

  &lt;div&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
      

      &lt;h3&gt;        Uh oh!
&lt;/h3&gt;
      &lt;p&gt;        &lt;/p&gt;&lt;p&gt;There was an error while loading. Please reload this page.&lt;/p&gt;


&lt;/div&gt;  &lt;/div&gt;
&lt;/div&gt;  &lt;/div&gt;


          &lt;div&gt;
              &lt;div&gt;
  
    
    &lt;div&gt;
      &lt;div&gt;
        &lt;details&gt;
          &lt;summary&gt;  &lt;span&gt;
    &lt;span&gt;All reactions&lt;/span&gt;
  &lt;/span&gt;
&lt;/summary&gt;

          &lt;ul&gt;
          &lt;/ul&gt;
        &lt;/details&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

      &lt;/div&gt;

&lt;/div&gt;&lt;div&gt;
        &lt;div&gt;
  &lt;h3&gt;
    &lt;div&gt;
      &lt;span&gt;
          &lt;img src=&quot;https://avatars.githubusercontent.com/u/240515854?s=48&amp;amp;v=4&quot; alt=&quot;@chutchins25&quot; title=&quot;&quot;/&gt;
      &lt;/span&gt;

      &lt;strong&gt;
            &lt;a href=&quot;https://github.com/chutchins25&quot;&gt;chutchins25&lt;/a&gt;
    

      &lt;/strong&gt;

      

      


        Jun 29, 2026



      
    &lt;/div&gt;

  &lt;/h3&gt;

  &lt;div&gt;
    &lt;div&gt;
      &lt;details&gt;
        &lt;summary&gt;  &lt;span&gt;
    
  &lt;/span&gt;
&lt;/summary&gt;

        
            &lt;span&gt;
  
      
              Copy link

  
&lt;/span&gt;            &lt;span&gt;
  
      
              Copy Markdown

  
&lt;/span&gt;        
      &lt;/details&gt;
    &lt;/div&gt;

    &lt;div&gt;
        

  &lt;span&gt;
    &lt;span&gt;Contributor&lt;/span&gt;
&lt;/span&gt;

        

    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

        &lt;div&gt;
      &lt;div&gt;
  &lt;div&gt;
  &lt;div&gt;
  
    

    &lt;p&gt;There was a problem hiding this comment.&lt;/p&gt;


  
&lt;/div&gt;
 &lt;div&gt;
  
    

    &lt;h3&gt;Choose a reason for hiding this comment&lt;/h3&gt;

    &lt;p&gt;
      The reason will be displayed to describe this comment to others. &lt;a href=&quot;https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment&quot;&gt;Learn more&lt;/a&gt;.
    &lt;/p&gt;

    
      
      


  
&lt;/div&gt;&lt;/div&gt;

  
    &lt;div&gt;
      &lt;p&gt;Verified actual browser behavior for this exact case. Both Chrome and Firefox leave the custom element as &lt;code class=&quot;notranslate&quot;&gt;listitem&lt;/code&gt; — neither applies presentational inheritance to an internal role (Chrome strips a native &lt;code class=&quot;notranslate&quot;&gt;&amp;lt;li&amp;gt;&lt;/code&gt; to &lt;code class=&quot;notranslate&quot;&gt;none&lt;/code&gt;, Firefox to &lt;code class=&quot;notranslate&quot;&gt;generic&lt;/code&gt;, but both keep the custom element as &lt;code class=&quot;notranslate&quot;&gt;listitem&lt;/code&gt;). So the current tests document the behavior that matches browsers.&lt;/p&gt;
&lt;p&gt;This is the same spec-ahead-of-browsers gap as &lt;a href=&quot;https://github.com/dequelabs/axe-core/issues/5162&quot;&gt;#5162&lt;/a&gt; (internal-role conflict resolution — Chrome/Firefox/Safari/WPT bugs already filed there), so I&amp;#39;ve folded the follow-up into &lt;a href=&quot;https://github.com/dequelabs/axe-core/issues/5162&quot;&gt;#5162&lt;/a&gt; and closed &lt;a href=&quot;https://github.com/dequelabs/axe-core/issues/5181&quot;&gt;#5181&lt;/a&gt; rather than tracking it separately. Let me know if you&amp;#39;re good with matching browsers here.&lt;/p&gt;
    &lt;/div&gt;
  
  

&lt;/div&gt;

    &lt;/div&gt;

        
      
  
  &lt;p&gt;
    &lt;span&gt;
  &lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    
    Sorry, something went wrong.
  &lt;/p&gt;

  &lt;div&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
      

      &lt;h3&gt;        Uh oh!
&lt;/h3&gt;
      &lt;p&gt;        &lt;/p&gt;&lt;p&gt;There was an error while loading. Please reload this page.&lt;/p&gt;


&lt;/div&gt;  &lt;/div&gt;
&lt;/div&gt;  &lt;/div&gt;


          &lt;div&gt;
              &lt;div&gt;
  
    
    &lt;div&gt;
      &lt;div&gt;
        &lt;details&gt;
          &lt;summary&gt;  &lt;span&gt;
    &lt;span&gt;All reactions&lt;/span&gt;
  &lt;/span&gt;
&lt;/summary&gt;

          &lt;ul&gt;
          &lt;/ul&gt;
        &lt;/details&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

      &lt;/div&gt;

&lt;/div&gt;&lt;div&gt;
        &lt;div&gt;
  &lt;h3&gt;
    &lt;div&gt;
      &lt;span&gt;
          &lt;img src=&quot;https://avatars.githubusercontent.com/u/426686?s=48&amp;amp;v=4&quot; alt=&quot;@pkra&quot; title=&quot;&quot;/&gt;
      &lt;/span&gt;

      &lt;strong&gt;
            &lt;a href=&quot;https://github.com/pkra&quot;&gt;pkra&lt;/a&gt;
    

      &lt;/strong&gt;

      

      


        Jun 29, 2026



      &lt;span&gt;
  &lt;span&gt;•&lt;/span&gt;

  &lt;details&gt;
    &lt;summary&gt;
      &lt;div&gt;
        &lt;span&gt;
          edited
          
        &lt;/span&gt;
        
      &lt;/div&gt;
    &lt;/summary&gt;
    
      
  
        &lt;span&gt;
      &lt;span&gt;Loading&lt;/span&gt;
&lt;/span&gt;

  &lt;div&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
      

      &lt;h3&gt;        Uh oh!
&lt;/h3&gt;
      &lt;p&gt;        &lt;/p&gt;&lt;p&gt;There was an error while loading. Please reload this page.&lt;/p&gt;


&lt;/div&gt;  &lt;/div&gt;
&lt;/div&gt;  &lt;/div&gt;
    
  &lt;/details&gt;
&lt;/span&gt;

    &lt;/div&gt;

  &lt;/h3&gt;

  &lt;div&gt;
    &lt;div&gt;
      &lt;details&gt;
        &lt;summary&gt;  &lt;span&gt;
    
  &lt;/span&gt;
&lt;/summary&gt;

        
            &lt;span&gt;
  
      
              Copy link

  
&lt;/span&gt;            &lt;span&gt;
  
      
              Copy Markdown

  
&lt;/span&gt;        
      &lt;/details&gt;
    &lt;/div&gt;

    &lt;div&gt;
        



        

    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

        &lt;div&gt;
      &lt;div&gt;
  &lt;div&gt;
  &lt;div&gt;
  
    

    &lt;p&gt;There was a problem hiding this comment.&lt;/p&gt;


  
&lt;/div&gt;
 &lt;div&gt;
  
    

    &lt;h3&gt;Choose a reason for hiding this comment&lt;/h3&gt;

    &lt;p&gt;
      The reason will be displayed to describe this comment to others. &lt;a href=&quot;https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment&quot;&gt;Learn more&lt;/a&gt;.
    &lt;/p&gt;

    
      
      


  
&lt;/div&gt;&lt;/div&gt;

  
    &lt;div&gt;
      &lt;p&gt;&lt;a href=&quot;https://github.com/WilcoFiers&quot;&gt;@WilcoFiers&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;But role=none on ul SHOULD set its child listitems to presentational as well.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I think ARIA only requires inheritance for (host-language-)required child elements that do not have explicit roles. (Though I spotted some odd phrasing that seems to have been introduced accidentally - I&amp;#39;ve filed &lt;a href=&quot;https://github.com/w3c/aria/issues/2832&quot;&gt;w3c/aria#2832&lt;/a&gt; to clarify.)&lt;/p&gt;
&lt;p&gt;(Then again &lt;code class=&quot;notranslate&quot;&gt;ul &amp;gt; test-element&lt;/code&gt; is invalid HTML and its repair is not specified anywhere, I think.)&lt;/p&gt;
    &lt;/div&gt;
  
  

&lt;/div&gt;

    &lt;/div&gt;

        
      
  
  &lt;p&gt;
    &lt;span&gt;
  &lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    
    Sorry, something went wrong.
  &lt;/p&gt;

  &lt;div&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
      

      &lt;h3&gt;        Uh oh!
&lt;/h3&gt;
      &lt;p&gt;        &lt;/p&gt;&lt;p&gt;There was an error while loading. Please reload this page.&lt;/p&gt;


&lt;/div&gt;  &lt;/div&gt;
&lt;/div&gt;  &lt;/div&gt;


          &lt;div&gt;
              &lt;div&gt;
  
    
    &lt;div&gt;
      &lt;div&gt;
        &lt;details&gt;
          &lt;summary&gt;  &lt;span&gt;
    &lt;span&gt;All reactions&lt;/span&gt;
  &lt;/span&gt;
&lt;/summary&gt;

          &lt;ul&gt;
          &lt;/ul&gt;
        &lt;/details&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

      &lt;/div&gt;

&lt;/div&gt;</content:encoded>
</item>
<item>
<title>web-features and Baseline - We&#39;re feature complete! What&#39;s next? (W3C Breakouts Day)</title>
<link>https://github.com/w3c/breakouts-day-2025/issues/8</link>
<guid isPermaLink="false">Y_cMgmn5voHqe1AVYEcgm-YOF68tu44HGlDwtw==</guid>
<pubDate>Tue, 29 Sep 2026 20:27:46 +0000</pubDate>
<description>The WebDX Community Group has done a lot of work in 2024 to increase the coverage of its web-features data. Now that the data roughly covers the entire web platform feature set, let&#39;s review the work done so far, the use cases that web-features, and Baseline, have unlocked, and let&#39;s open it up for discussion on the next important questions to tackle.</description>
<content:encoded>&lt;p&gt;The &lt;a href=&quot;https: //www.w3.org/community/webdx/&quot;&gt;WebDX Community Group&lt;/a&gt; has done a lot of work in 2024 to increase the coverage of its &lt;a href=&quot;https://github.com/web-platform-dx/web-features/&quot;&gt;web-features data&lt;/a&gt;. Now that the data roughly &lt;a href=&quot;https://github.com/web-platform-dx/web-features/issues/788#issuecomment-2687732794&quot;&gt;covers the entire web platform feature set&lt;/a&gt;, let&amp;#39;s review the work done so far, the use cases that web-features, and &lt;a href=&quot;https://web-platform-dx.github.io/web-features/&quot;&gt;Baseline&lt;/a&gt;, have unlocked, and let&amp;#39;s open it up for discussion on the next important questions to tackle.&lt;br/&gt;&lt;a href=&quot;https://patrickbrosset.com/slides/breakouts-day-2025/&quot;&gt;Slides&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/w3c/breakouts-day-2025/issues/8&quot;&gt;&lt;img src=&quot;https://patrickbrosset.com/assets/breakouts-day-2025.png&quot; alt=&quot;W3C Breakouts Day 2025 logo.&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded>
</item>
<item>
<title>silverstripe-purge-cloudfront/docs/tags.md at 3ef30fcdfdf7ff152832483f3ddbfae3a35a6e4b · blueo/silverstripe-purge-cloudfront · GitHub</title>
<link>https://github.com/blueo/silverstripe-purge-cloudfront/blob/3ef30fcdfdf7ff152832483f3ddbfae3a35a6e4b/docs/tags.md</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/5b6e44d2071d5982e9b78ad0c1815dad1eb3d59fc45537576414f195bc05baee/blueo/silverstripe-purge-cloudfront"></enclosure>
<guid isPermaLink="false">78-irLpD3XOS9mu6UIBFr8E79nDZuY6Yu7Spig==</guid>
<pubDate>Sun, 27 Sep 2026 01:38:42 +0000</pubDate>
<description>Amazon CloudFront provider for blueo/silverstripe-purge - blueo/silverstripe-purge-cloudfront</description>
<content:encoded>&lt;div&gt;&lt;h1&gt;Tags, and why this provider refuses them&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Blueo\Purge\Service\PurgeCapability::PurgeTags&lt;/code&gt; is declared false by this
provider. &lt;code&gt;purgeTags()&lt;/code&gt; throws &lt;code&gt;UnsupportedOperationException&lt;/code&gt;.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;What CloudFront offers&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;CloudFront can invalidate by cache tag. It works like this:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;The distribution carries a &lt;code&gt;CacheTagConfig&lt;/code&gt; naming an HTTP header, for
example &lt;code&gt;x-amz-meta-cache-tag&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Every origin response that should carry tags includes that header, with the
tags comma separated. CloudFront stores up to 50 tags for each object.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CreateInvalidation&lt;/code&gt; is called with a path that starts with &lt;code&gt;#&lt;/code&gt;, for
example &lt;code&gt;#news&lt;/code&gt;. Every cached object that carries the tag is invalidated,
whatever its path.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Tag paths and URL paths can be mixed in one request. A tag counts as one path
against the free monthly allowance of 1,000, the same as &lt;code&gt;/*&lt;/code&gt;.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Why this provider does not declare the capability&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Three of the three preconditions live outside the site:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CacheTagConfig&lt;/code&gt; is set on the distribution. The site cannot read it without
&lt;code&gt;cloudfront:GetDistributionConfig&lt;/code&gt;, which the task role does not have.&lt;/li&gt;
&lt;li&gt;The origin must send a cache tag header on every response to be tagged. A
Silverstripe site does not send one, and adding one is a decision about the
response headers of every page.&lt;/li&gt;
&lt;li&gt;The tags must mean something. A tag is only useful if the site decided what
it tags with, and that is site design and not module behaviour.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;And the failure mode is the one this design exists to prevent. CloudFront
accepts &lt;code&gt;#news&lt;/code&gt; on a distribution with no &lt;code&gt;CacheTagConfig&lt;/code&gt;. It returns an
invalidation id and a status. Nothing is removed, because nothing was ever
tagged. A provider that declared the capability would hand back a successful
&lt;code&gt;PurgeResult&lt;/code&gt; with an invalidation id, and the site would record a purge that
did not happen.&lt;/p&gt;&lt;p&gt;A capability is a claim about what the code does. &lt;code&gt;CacheTagConfig&lt;/code&gt; is a fact
about a distribution. Declaring one as the other is how a site ends up
believing it purged.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;What to do instead&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Purge the URLs.&lt;/strong&gt; Where a site knows which pages carry a term, collect them
and purge by URL. Replace &lt;code&gt;Blueo\Purge\Service\UrlCollector&lt;/code&gt; and return the
pages a change affects. This is exact, and it costs one path for each page.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Purge a prefix.&lt;/strong&gt; Where a section shares a path, pass a wildcard as a URL:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;PurgeService::&lt;span&gt;singleton&lt;/span&gt;()-&amp;gt;&lt;span&gt;purgeUrls&lt;/span&gt;([&lt;span&gt;&amp;#39;&lt;span&gt;/news/*&lt;/span&gt;&amp;#39;&lt;/span&gt;]);&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;One path against the allowance, whatever it removes. The &lt;code&gt;*&lt;/code&gt; is a wildcard for
CloudFront only as the last character of the path, and CloudFront allows 1
wildcard invalidation per second.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Purge everything.&lt;/strong&gt; After a deployment that changed a template, &lt;code&gt;/*&lt;/code&gt; is one
path and removes everything.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;If you want tag invalidation&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;It is a subclass and a config block, not a change to this module:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Add &lt;code&gt;CacheTagConfig&lt;/code&gt; to the distribution, naming a header.&lt;/li&gt;
&lt;li&gt;Make the site send that header. A response header policy or a Lambda@Edge
origin response function can add it, or the site can send it from a
Silverstripe &lt;code&gt;HTTPMiddleware&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Subclass &lt;code&gt;CloudFrontPurgeAdaptor&lt;/code&gt;. Return true from &lt;code&gt;supports()&lt;/code&gt; for
&lt;code&gt;PurgeCapability::PurgeTags&lt;/code&gt;, and send each tag as &lt;code&gt;#&lt;/code&gt; plus the tag through
the same &lt;code&gt;CreateInvalidation&lt;/code&gt; call.&lt;/li&gt;
&lt;li&gt;Bind the subclass over &lt;code&gt;Blueo\Purge\Service\PurgeAdaptor&lt;/code&gt; in your project
config, after the module&amp;#39;s block.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;The capability is then declared by the code that knows the distribution is
configured for it, which is your project and not this module.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>silverstripe-purge-cloudfront/docs/aws-setup.md at 3ef30fcdfdf7ff152832483f3ddbfae3a35a6e4b · blueo/silverstripe-purge-cloudfront · GitHub</title>
<link>https://github.com/blueo/silverstripe-purge-cloudfront/blob/3ef30fcdfdf7ff152832483f3ddbfae3a35a6e4b/docs/aws-setup.md</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/5b6e44d2071d5982e9b78ad0c1815dad1eb3d59fc45537576414f195bc05baee/blueo/silverstripe-purge-cloudfront"></enclosure>
<guid isPermaLink="false">ofYpDtjQybCR3oA_ioBwfobjzm2U_-nj3oRIvw==</guid>
<pubDate>Sun, 27 Sep 2026 01:38:42 +0000</pubDate>
<description>Amazon CloudFront provider for blueo/silverstripe-purge - blueo/silverstripe-purge-cloudfront</description>
<content:encoded>&lt;div&gt;&lt;h1&gt;AWS setup&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;What the AWS side needs, and how to check it.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Credentials&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;The module passes no credentials to the SDK. The AWS SDK for PHP then walks
its default provider chain, in this order:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;The environment variables &lt;code&gt;AWS_ACCESS_KEY_ID&lt;/code&gt; and &lt;code&gt;AWS_SECRET_ACCESS_KEY&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;An assumed role from the shared config file, where &lt;code&gt;AWS_PROFILE&lt;/code&gt; names one.&lt;/li&gt;
&lt;li&gt;The shared credentials file at &lt;code&gt;~/.aws/credentials&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The ECS container credentials endpoint, read from
&lt;code&gt;AWS_CONTAINER_CREDENTIALS_RELATIVE_URI&lt;/code&gt;. &lt;strong&gt;This is the step that serves a
Fargate task role.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;The EC2 instance metadata service.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;The deployment this module targets runs on Fargate. The ECS agent sets
&lt;code&gt;AWS_CONTAINER_CREDENTIALS_RELATIVE_URI&lt;/code&gt; in the task, the SDK reads it, and
the credentials rotate without anyone handling them. A key in config would
have to be rotated by hand and would sit in the environment of every process
in the task.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;The task role&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;The task role needs one action. Attach this policy to the role named in the
task definition&amp;#39;s &lt;code&gt;taskRoleArn&lt;/code&gt;, not to the execution role:&lt;/p&gt;&lt;p&gt;A CloudFront distribution ARN carries the account id and no region, because
CloudFront is global.&lt;/p&gt;&lt;p&gt;Add &lt;code&gt;cloudfront:GetInvalidation&lt;/code&gt; if an operator will read invalidation status
from the task. The module does not call it.&lt;/p&gt;&lt;p&gt;The execution role is what pulls the image and writes the logs. Putting this
statement there gives the permission to the wrong identity, and the symptom is
&lt;code&gt;AccessDenied&lt;/code&gt; at the first publish.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;In CloudFormation&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;TaskRole&lt;/span&gt;:
  &lt;span&gt;Type&lt;/span&gt;: &lt;span&gt;AWS::IAM::Role&lt;/span&gt;
  &lt;span&gt;Properties&lt;/span&gt;:
    &lt;span&gt;AssumeRolePolicyDocument&lt;/span&gt;:
      &lt;span&gt;Version&lt;/span&gt;: &lt;span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;2012-10-17&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;
      &lt;span&gt;Statement&lt;/span&gt;:
        - &lt;span&gt;Effect&lt;/span&gt;: &lt;span&gt;Allow&lt;/span&gt;
          &lt;span&gt;Principal&lt;/span&gt;:
            &lt;span&gt;Service&lt;/span&gt;: &lt;span&gt;ecs-tasks.amazonaws.com&lt;/span&gt;
          &lt;span&gt;Action&lt;/span&gt;: &lt;span&gt;sts:AssumeRole&lt;/span&gt;
    &lt;span&gt;Policies&lt;/span&gt;:
      - &lt;span&gt;PolicyName&lt;/span&gt;: &lt;span&gt;purge-cloudfront&lt;/span&gt;
        &lt;span&gt;PolicyDocument&lt;/span&gt;:
          &lt;span&gt;Version&lt;/span&gt;: &lt;span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;2012-10-17&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;
          &lt;span&gt;Statement&lt;/span&gt;:
            - &lt;span&gt;Effect&lt;/span&gt;: &lt;span&gt;Allow&lt;/span&gt;
              &lt;span&gt;Action&lt;/span&gt;: &lt;span&gt;cloudfront:CreateInvalidation&lt;/span&gt;
              &lt;span&gt;Resource&lt;/span&gt;: &lt;span&gt;!Sub &amp;#39;arn:aws:cloudfront::${AWS::AccountId}:distribution/${Distribution}&amp;#39;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;The environment variables&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;PURGE_CLOUDFRONT_DISTRIBUTION_ID=&amp;quot;E1A2B3C4D5E6F7&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Set it in the task definition beside the other site variables. It is not a
secret, so it does not need Secrets Manager.&lt;/p&gt;&lt;p&gt;&lt;code&gt;PURGE_CLOUDFRONT_REGION&lt;/code&gt; is optional and defaults to &lt;code&gt;us-east-1&lt;/code&gt;. Set it only
to point the SDK at a local stub.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Checking it&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;sake tasks:blueo-purge --capabilities&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Reads:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;Provider: Blueo\Purge\CloudFront\Service\CloudFrontPurgeAdaptor
  Purge by URL: yes
  Purge everything: yes
  Purge by tag: no
Queue: queuedjobs&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Provider: Blueo\Purge\Service\NullPurgeAdaptor&lt;/code&gt; means
&lt;code&gt;PURGE_CLOUDFRONT_DISTRIBUTION_ID&lt;/code&gt; is not set in that environment, because the
Injector block is gated on it.&lt;/p&gt;&lt;p&gt;Then send one:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;sake tasks:blueo-purge --url=/&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A success prints the invalidation id. Look it up in the CloudFront console
under the distribution, on the Invalidations tab.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Local development&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Leave &lt;code&gt;PURGE_CLOUDFRONT_DISTRIBUTION_ID&lt;/code&gt; out of &lt;code&gt;.env&lt;/code&gt; on a developer machine.
The provider then binds nothing, and a publish logs that no provider is
installed rather than invalidating the production distribution from a laptop.&lt;/p&gt;&lt;p&gt;To test against a real distribution from a machine, set &lt;code&gt;AWS_PROFILE&lt;/code&gt; to a
profile that can assume a role with &lt;code&gt;cloudfront:CreateInvalidation&lt;/code&gt;, and set
the distribution id to a distribution built for the purpose.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Errors you will see&lt;/h2&gt;&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Message&lt;/th&gt;
&lt;th&gt;Cause&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;AccessDenied: User ... is not authorized to perform: cloudfront:CreateInvalidation&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The policy is on the execution role, or the resource ARN names a different distribution.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;NoSuchDistribution&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;PURGE_CLOUDFRONT_DISTRIBUTION_ID&lt;/code&gt; holds the domain name, &lt;code&gt;d111111abcdef8.cloudfront.net&lt;/code&gt;, and not the id.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;TooManyInvalidationsInProgress&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;More invalidations are open on the distribution than CloudFront will hold. Raise &lt;code&gt;paths_per_invalidation&lt;/code&gt; so fewer requests carry the same paths, or purge less often.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Unable to locate credentials&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The container credentials endpoint is not reachable. On Fargate, check that the task definition names a &lt;code&gt;taskRoleArn&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PURGE_CLOUDFRONT_DISTRIBUTION_ID is not set&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The variable is missing in an environment where the module was expected to be active.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</content:encoded>
</item>
<item>
<title>GitHub - blueo/silverstripe-purge: Purge a CDN cache from Silverstripe, with pluggable providers · GitHub</title>
<link>https://github.com/blueo/silverstripe-purge</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/4dd344fcc50da27bd3903b55c13ff15039befd982b73c5e81b4be503dacab22e/blueo/silverstripe-purge"></enclosure>
<guid isPermaLink="false">OGGw7TNA0ltSQhp17ByPUGVpqdMpWESpK7m8xQ==</guid>
<pubDate>Sun, 27 Sep 2026 01:38:41 +0000</pubDate>
<description>Purge a CDN cache from Silverstripe, with pluggable providers - blueo/silverstripe-purge</description>
<content:encoded>&lt;div&gt;&lt;h1&gt;blueo/silverstripe-purge&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;Purging of a cache in front of a Silverstripe CMS 6 site, through interfaces
that do not change when the CDN changes.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;This module purges nothing on its own.&lt;/strong&gt; It holds the interfaces, the
triggers and the timing. A provider module binds an implementation over the
adaptor interface. Without one, every purge call throws and names the missing
provider.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Purpose&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;A site in front of a CDN has to tell the CDN when a page changed. The API that
does this differs between CloudFront, Fastly, Akamai and Cloudflare, and a site
that calls one of them by name is tied to it.&lt;/p&gt;&lt;p&gt;This module gives a site three calls that stay the same across providers:
purge these URLs, purge everything, purge these tags. A change of CDN is a
change of provider module and an environment variable.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Installation&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;composer require blueo/silverstripe-purge
composer require blueo/silverstripe-purge-cloudfront
sake dev/build flush=1&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Install a provider at the same time. See
available provider modules.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Feature support&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;What &lt;strong&gt;this module&lt;/strong&gt; supports, against what a CDN might offer. A provider
declares which of these it performs, and this module refuses the rest. See
capabilities.&lt;/p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Module support&lt;/th&gt;
&lt;th&gt;Rationale&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Purge by URL&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Every CDN has it. It is the operation a publish uses.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Purge everything&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Every CDN has it. It is what a template change needs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Purge by tag (surrogate key)&lt;/td&gt;
&lt;td&gt;Yes, where the provider has it&lt;/td&gt;
&lt;td&gt;A tag purge removes every page that carries a key, without listing the pages. The CloudFront provider declares this capability false and a call throws, because a CloudFront tag invalidation is accepted by a distribution that is not configured for tags and removes nothing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Purge on publish, unpublish and delete&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Applied to &lt;code&gt;SiteTree&lt;/code&gt; when silverstripe/cms is installed.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Purge from a queue&lt;/td&gt;
&lt;td&gt;Yes, where silverstripe/queuedjobs is installed&lt;/td&gt;
&lt;td&gt;A publish must not wait on a CDN round trip.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Soft purge, stale while revalidate&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Fastly and Cloudflare express it, CloudFront does not. A capability that two of four providers offer moves a site&amp;#39;s behaviour when the CDN changes.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Purge by prefix or by wildcard&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Pass a provider&amp;#39;s own wildcard as a URL where the provider accepts one, for example &lt;code&gt;/news/*&lt;/code&gt; on CloudFront. The syntax is the provider&amp;#39;s, so this module does not name it as a feature.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Read the status of a purge&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;The result carries the provider reference. Look the purge up with it in the provider&amp;#39;s console.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div&gt;&lt;h2&gt;Capabilities&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;No CDN performs every operation. The interface carries all three, so a site
calls the same method whichever provider is bound, and each provider declares
what it does:&lt;/p&gt;&lt;p&gt;Three rules hold:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;The answer is available before the call. &lt;code&gt;supports()&lt;/code&gt; and
&lt;code&gt;getCapabilities()&lt;/code&gt; take no network call and do no work.&lt;/li&gt;
&lt;li&gt;An undeclared operation throws &lt;code&gt;UnsupportedOperationException&lt;/code&gt;. It does not
return a result, and it does not return quietly. A site that reads a
success for work nobody did believes its pages are fresh.&lt;/li&gt;
&lt;li&gt;The refusal is in &lt;code&gt;PurgeService&lt;/code&gt;, not in the provider. A provider that
forgets to check still cannot run an operation it did not declare.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;code&gt;PurgeCapability&lt;/code&gt; is an enum rather than one interface for each operation. The
cases can be listed, so &lt;code&gt;sake tasks:blueo-purge --capabilities&lt;/code&gt; prints the
support matrix of the installed provider on the running site. Separate
interfaces would need an &lt;code&gt;instanceof&lt;/code&gt; at every call site and could not be
printed.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;What gets purged, and when&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;A publish changes more than the page. The listing above it shows the page
title and the page order. The home page often shows the latest of something.
Neither is republished, so nothing else purges them.&lt;/p&gt;&lt;p&gt;&lt;code&gt;UrlCollector&lt;/code&gt; returns these for a changed page:&lt;/p&gt;&lt;p&gt;&lt;code&gt;PurgeOnPublishExtension&lt;/code&gt; collects them on &lt;code&gt;onAfterPublish&lt;/code&gt;,
&lt;code&gt;onAfterUnpublish&lt;/code&gt; and &lt;code&gt;onAfterDelete&lt;/code&gt;, and hands them to &lt;code&gt;PurgeDispatcher&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;This is three rules and a list, and not a rules engine. A site whose staleness
does not follow the tree replaces &lt;code&gt;UrlCollector&lt;/code&gt; through Injector, and gets one
class to write rather than a configuration language to learn. See
&lt;a href=&quot;https://github.com/blueo/silverstripe-purge/blob/main/docs/triggers.md&quot;&gt;triggers in detail&lt;/a&gt;, which also lists what these rules do
not cover.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Timing&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;A purge is an HTTP call to a CDN, and an author who publishes a page waits for
the response.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;With silverstripe/queuedjobs installed, the purge goes to &lt;code&gt;PurgeJob&lt;/code&gt; and the
publish returns.&lt;/li&gt;
&lt;li&gt;Without it, the purge is sent in the same request.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;queuedjobs is a suggestion in &lt;code&gt;composer.json&lt;/code&gt; and never a requirement. The
class is reached by name and never imported, and &lt;code&gt;src/Job/&lt;/code&gt; carries a
&lt;code&gt;_manifest_exclude&lt;/code&gt; file so a site without queuedjobs never loads the job.&lt;/p&gt;&lt;p&gt;&lt;code&gt;PurgeDispatcher::canQueue()&lt;/code&gt; reports which of the two is in use.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;The task&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;sake tasks:blueo-purge --capabilities
sake tasks:blueo-purge --url=/about-us/ --url=/news/
sake tasks:blueo-purge --all
sake tasks:blueo-purge --url=/news/ --queue&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;--capabilities&lt;/code&gt; prints the bound provider, what it supports and whether
purges are queued, and purges nothing. Run it first on a new environment.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Logging&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;A failed purge writes an error through &lt;code&gt;Psr\Log\LoggerInterface&lt;/code&gt;, which on a
Silverstripe site reaches the error handler and whatever it is configured to
send to. Three paths lead there:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;A provider returns a failed result. &lt;code&gt;PurgeService&lt;/code&gt; logs the message.&lt;/li&gt;
&lt;li&gt;A provider throws. &lt;code&gt;PurgeService&lt;/code&gt; logs the exception and returns a failed
result, so one CDN outage does not stop authors publishing.&lt;/li&gt;
&lt;li&gt;A trigger fails. &lt;code&gt;PurgeOnPublishExtension&lt;/code&gt; logs the class and the ID of the
page, so the log line names the page that is now stale.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;An operation the provider does not support is not logged. It throws, because
it is a mistake in the calling code and not a fault at run time.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Configuration&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;Blueo\Purge\Service\UrlCollector&lt;/span&gt;:
  &lt;span&gt;include_parent&lt;/span&gt;: &lt;span&gt;true&lt;/span&gt;
  &lt;span&gt;include_home&lt;/span&gt;: &lt;span&gt;true&lt;/span&gt;
  &lt;span&gt;extra_urls&lt;/span&gt;:
    - &lt;span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;/sitemap.xml&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;

&lt;span&gt;Blueo\Purge\Service\PurgeDispatcher&lt;/span&gt;:
  &lt;span&gt;&lt;span&gt;#&lt;/span&gt; Send every purge inline, including on a site that has queuedjobs.&lt;/span&gt;
  &lt;span&gt;use_queue&lt;/span&gt;: &lt;span&gt;true&lt;/span&gt;

&lt;span&gt;Blueo\Purge\Extension\PurgeOnPublishExtension&lt;/span&gt;:
  &lt;span&gt;&lt;span&gt;#&lt;/span&gt; Turn the publish triggers off and purge from the task or your own code.&lt;/span&gt;
  &lt;span&gt;purge_on_change&lt;/span&gt;: &lt;span&gt;true&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;Available provider modules&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;Tests&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;composer install
vendor/bin/phpunit&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The tests run from the module directory against SQLite. There is no site to
stand up first.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>freedomofpress/dangerzone · Discussions · GitHub</title>
<link>https://github.com/freedomofpress/dangerzone/discussions</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/b7c1f7b36e35b20827032c31247050a78076d0d15a75513439b6b236c6119388/freedomofpress/dangerzone"></enclosure>
<guid isPermaLink="false">4LD2Ext3J6nurTwPaIZnp17uy4bgOUAW9v0MNg==</guid>
<pubDate>Sun, 27 Sep 2026 01:37:57 +0000</pubDate>
<description>Explore the GitHub Discussions forum for freedomofpress dangerzone. Discuss code, ask questions &amp; collaborate with the developer community.</description>
<content:encoded>&lt;h1&gt;freedomofpress dangerzone Discussions&lt;/h1&gt;&lt;div&gt;
  
  &lt;div&gt;      &lt;div&gt;
    &lt;h2&gt;Categories, most helpful, and community links&lt;/h2&gt;

  &lt;div&gt;
  &lt;div&gt;
    &lt;h3&gt;Categories&lt;/h3&gt;

  &lt;/div&gt;


  
  &lt;/div&gt;


    &lt;div&gt;
      
  
        &lt;span&gt;
      &lt;span&gt;Loading&lt;/span&gt;
&lt;/span&gt;

  &lt;div&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
      

      &lt;h3&gt;        Uh oh!
&lt;/h3&gt;
      &lt;p&gt;        &lt;/p&gt;&lt;p&gt;There was an error while loading. Please reload this page.&lt;/p&gt;


&lt;/div&gt;  &lt;/div&gt;
&lt;/div&gt;  &lt;/div&gt;
    &lt;/div&gt;

  &lt;h3&gt;Community links&lt;/h3&gt;
  &lt;ul&gt;
    &lt;li&gt;
  &lt;a href=&quot;https://github.com/freedomofpress/.github/blob/8efa509009ab7887b24f0d7a0eed5d49a1217a1c/CODE_OF_CONDUCT.md&quot;&gt;
    &lt;span&gt;
      
    &lt;/span&gt;
    &lt;span&gt;Code of conduct&lt;/span&gt;
&lt;/a&gt;&lt;/li&gt;


    &lt;li&gt;
  &lt;a href=&quot;https://dangerzone.rocks&quot;&gt;
    &lt;span&gt;
      
    &lt;/span&gt;
    &lt;span&gt;dangerzone.rocks&lt;/span&gt;
&lt;/a&gt;&lt;/li&gt;


&lt;/ul&gt;

&lt;/div&gt;

&lt;/div&gt;
  &lt;div&gt;        &lt;h2&gt;Discussions&lt;/h2&gt;

  &lt;div&gt;
    &lt;ul&gt;
        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            💡
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1142&quot;&gt;Optinally Preserve Original Document Inside Sanitized (but neutralized)&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/deeplow&quot;&gt;deeplow&lt;/a&gt;
            
            started
            Apr 23, 2025
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/ideas?discussions_q=is%3Aopen+category%3AIdeas&quot;&gt;Ideas&lt;/a&gt;
            &lt;span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/deeplow&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/47065258?s=60&amp;amp;v=4&quot; alt=&quot;@deeplow&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/almet&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/67073?s=60&amp;amp;v=4&quot; alt=&quot;@almet&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
        
      &lt;a href=&quot;https://github.com/jw409&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/218849921?s=60&amp;amp;v=4&quot; alt=&quot;@jw409&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/deeplow&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/47065258?s=60&amp;amp;v=4&quot; alt=&quot;@deeplow&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/almet&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/67073?s=60&amp;amp;v=4&quot; alt=&quot;@almet&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
        
      &lt;a href=&quot;https://github.com/jw409&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/218849921?s=60&amp;amp;v=4&quot; alt=&quot;@jw409&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1142&quot;&gt;
              9&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            🙏
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1433&quot;&gt;Any instructions for running on UNRAID?&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/garfnodie&quot;&gt;garfnodie&lt;/a&gt;
            
            asked
            Mar 8, 2026
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/q-a?discussions_q=is%3Aopen+category%3AQ%26A&quot;&gt;Q&amp;amp;A&lt;/a&gt;
            &lt;span&gt;
                &lt;span&gt;
                  · Answered
                &lt;/span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/garfnodie&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/16637780?s=60&amp;amp;v=4&quot; alt=&quot;@garfnodie&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/almet&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/67073?s=60&amp;amp;v=4&quot; alt=&quot;@almet&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/garfnodie&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/16637780?s=60&amp;amp;v=4&quot; alt=&quot;@garfnodie&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/almet&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/67073?s=60&amp;amp;v=4&quot; alt=&quot;@almet&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1433&quot;&gt;
              5&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            💬
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1409&quot;&gt;What about password-protected pdf files?&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;DeltaEpsilon19498&lt;/a&gt;
            
            started
            Jan 26, 2026
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/general?discussions_q=is%3Aopen+category%3AGeneral&quot;&gt;General&lt;/a&gt;
            &lt;span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/almet&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/67073?s=60&amp;amp;v=4&quot; alt=&quot;@almet&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/almet&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/67073?s=60&amp;amp;v=4&quot; alt=&quot;@almet&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1409&quot;&gt;
              2&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            💬
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1410&quot;&gt;Small questions about Dangerzone 0.10.0&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;DeltaEpsilon19498&lt;/a&gt;
            
            started
            Jan 26, 2026
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/general?discussions_q=is%3Aopen+category%3AGeneral&quot;&gt;General&lt;/a&gt;
            &lt;span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/almet&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/67073?s=60&amp;amp;v=4&quot; alt=&quot;@almet&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/almet&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/67073?s=60&amp;amp;v=4&quot; alt=&quot;@almet&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1410&quot;&gt;
              3&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            💡
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1296&quot;&gt;Use Dangerzone directly in a docker compose setup&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/dheldt&quot;&gt;dheldt&lt;/a&gt;
            
            started
            Oct 24, 2025
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/ideas?discussions_q=is%3Aopen+category%3AIdeas&quot;&gt;Ideas&lt;/a&gt;
            &lt;span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/dheldt&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/4169443?s=60&amp;amp;v=4&quot; alt=&quot;@dheldt&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/almet&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/67073?s=60&amp;amp;v=4&quot; alt=&quot;@almet&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
        
      &lt;a href=&quot;https://github.com/levonk&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/277861?s=60&amp;amp;v=4&quot; alt=&quot;@levonk&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/dheldt&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/4169443?s=60&amp;amp;v=4&quot; alt=&quot;@dheldt&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/almet&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/67073?s=60&amp;amp;v=4&quot; alt=&quot;@almet&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
        
      &lt;a href=&quot;https://github.com/levonk&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/277861?s=60&amp;amp;v=4&quot; alt=&quot;@levonk&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1296&quot;&gt;
              6&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            💬
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1411&quot;&gt;Feedback on Dangezone 0.10.0 in Windows 11&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;DeltaEpsilon19498&lt;/a&gt;
            
            started
            Jan 26, 2026
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/general?discussions_q=is%3Aopen+category%3AGeneral&quot;&gt;General&lt;/a&gt;
            &lt;span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1411&quot;&gt;
              0&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            💬
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1260&quot;&gt;How can people be made more aware of the existence of dangerzone, beyond journalists?&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;DeltaEpsilon19498&lt;/a&gt;
            
            started
            Oct 2, 2025
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/general?discussions_q=is%3Aopen+category%3AGeneral&quot;&gt;General&lt;/a&gt;
            &lt;span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/apyrgio&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/2507626?s=60&amp;amp;v=4&quot; alt=&quot;@apyrgio&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/apyrgio&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/2507626?s=60&amp;amp;v=4&quot; alt=&quot;@apyrgio&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1260&quot;&gt;
              3&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            🙏
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1283&quot;&gt;What tools can be used in conjunction with dangerzone to get rid of watermarks?&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;DeltaEpsilon19498&lt;/a&gt;
            
            asked
            Oct 15, 2025
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/q-a?discussions_q=is%3Aopen+category%3AQ%26A&quot;&gt;Q&amp;amp;A&lt;/a&gt;
            &lt;span&gt;
                &lt;span&gt;
                  · Unanswered
                &lt;/span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/apyrgio&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/2507626?s=60&amp;amp;v=4&quot; alt=&quot;@apyrgio&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/apyrgio&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/2507626?s=60&amp;amp;v=4&quot; alt=&quot;@apyrgio&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1283&quot;&gt;
              1&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            🙏
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1258&quot;&gt;Question on when dangerzone is or is not necessary&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;DeltaEpsilon19498&lt;/a&gt;
            
            asked
            Oct 2, 2025
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/q-a?discussions_q=is%3Aopen+category%3AQ%26A&quot;&gt;Q&amp;amp;A&lt;/a&gt;
            &lt;span&gt;
                &lt;span&gt;
                  · Unanswered
                &lt;/span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/apyrgio&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/2507626?s=60&amp;amp;v=4&quot; alt=&quot;@apyrgio&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/apyrgio&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/2507626?s=60&amp;amp;v=4&quot; alt=&quot;@apyrgio&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1258&quot;&gt;
              2&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            💬
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1259&quot;&gt;Will there ever be something equivalent to a VPN killswitch when opening pdfs?&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;DeltaEpsilon19498&lt;/a&gt;
            
            started
            Oct 2, 2025
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/general?discussions_q=is%3Aopen+category%3AGeneral&quot;&gt;General&lt;/a&gt;
            &lt;span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/apyrgio&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/2507626?s=60&amp;amp;v=4&quot; alt=&quot;@apyrgio&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/DeltaEpsilon19498&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/135649988?s=60&amp;amp;v=4&quot; alt=&quot;@DeltaEpsilon19498&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/apyrgio&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/2507626?s=60&amp;amp;v=4&quot; alt=&quot;@apyrgio&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/1259&quot;&gt;
              1&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            💡
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/539&quot;&gt;Roadmap to 1.0.0&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/eloquence&quot;&gt;eloquence&lt;/a&gt;
            
            started
            Aug 31, 2023
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/ideas?discussions_q=is%3Aopen+category%3AIdeas&quot;&gt;Ideas&lt;/a&gt;
            &lt;span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/eloquence&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/213636?s=60&amp;amp;v=4&quot; alt=&quot;@eloquence&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/harrislapiroff&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/296631?s=60&amp;amp;v=4&quot; alt=&quot;@harrislapiroff&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
        
      &lt;a href=&quot;https://github.com/apyrgio&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/2507626?s=60&amp;amp;v=4&quot; alt=&quot;@apyrgio&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/eloquence&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/213636?s=60&amp;amp;v=4&quot; alt=&quot;@eloquence&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/harrislapiroff&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/296631?s=60&amp;amp;v=4&quot; alt=&quot;@harrislapiroff&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
        
      &lt;a href=&quot;https://github.com/apyrgio&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/2507626?s=60&amp;amp;v=4&quot; alt=&quot;@apyrgio&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/539&quot;&gt;
              5&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            🙏
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/828&quot;&gt;dangerzone as a docker on the server?&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/r-gorajski&quot;&gt;r-gorajski&lt;/a&gt;
            
            asked
            Jun 4, 2024
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/q-a?discussions_q=is%3Aopen+category%3AQ%26A&quot;&gt;Q&amp;amp;A&lt;/a&gt;
            &lt;span&gt;
                &lt;span&gt;
                  · Unanswered
                &lt;/span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/r-gorajski&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/39853306?s=60&amp;amp;v=4&quot; alt=&quot;@r-gorajski&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/almet&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/67073?s=60&amp;amp;v=4&quot; alt=&quot;@almet&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
        
      &lt;a href=&quot;https://github.com/EtiennePerot&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/1330673?s=60&amp;amp;v=4&quot; alt=&quot;@EtiennePerot&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/r-gorajski&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/39853306?s=60&amp;amp;v=4&quot; alt=&quot;@r-gorajski&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
      &lt;a href=&quot;https://github.com/almet&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/67073?s=60&amp;amp;v=4&quot; alt=&quot;@almet&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
        
      &lt;a href=&quot;https://github.com/EtiennePerot&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/1330673?s=60&amp;amp;v=4&quot; alt=&quot;@EtiennePerot&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/828&quot;&gt;
              12&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            💬
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/536&quot;&gt;Qubes OS Integration General Feedback&lt;/a&gt;&lt;/h3&gt;
            &lt;span&gt;
                &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions?discussions_q=is%3Aopen+label%3AP%3AQubes&quot;&gt;
                  P:Qubes
&lt;/a&gt;
  QubesOS integration
            &lt;/span&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/deeplow&quot;&gt;deeplow&lt;/a&gt;
            
            started
            Aug 29, 2023
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/general?discussions_q=is%3Aopen+category%3AGeneral&quot;&gt;General&lt;/a&gt;
            &lt;span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/deeplow&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/47065258?s=60&amp;amp;v=4&quot; alt=&quot;@deeplow&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/deeplow&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/47065258?s=60&amp;amp;v=4&quot; alt=&quot;@deeplow&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/536&quot;&gt;
              0&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

        &lt;li&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
          &lt;div&gt;
            


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


          &lt;/div&gt;
        &lt;div&gt;
          &lt;span&gt;
            📣
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;h3&gt;
              &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/478&quot;&gt;Welcome to the Dangerzone forum&lt;/a&gt;&lt;/h3&gt;

          &lt;div&gt;
              &lt;a href=&quot;https://github.com/eloquence&quot;&gt;eloquence&lt;/a&gt;
            
            announced
            Jul 19, 2023
            &lt;span&gt; in &lt;/span&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/categories/announcements?discussions_q=is%3Aopen+category%3AAnnouncements&quot;&gt;Announcements&lt;/a&gt;
            &lt;span&gt;
            &lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/eloquence&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/213636?s=60&amp;amp;v=4&quot; alt=&quot;@eloquence&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/eloquence&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/213636?s=60&amp;amp;v=4&quot; alt=&quot;@eloquence&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;          &lt;/div&gt;
          &lt;div&gt;
            &lt;a href=&quot;https://github.com/freedomofpress/dangerzone/discussions/478&quot;&gt;
              0&lt;/a&gt;          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/li&gt;

    &lt;/ul&gt;
  &lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;</content:encoded>
</item>
<item>
<title>GitHub - ZingerLittleBee/Heeler: Native iOS agent console for herdr — watch and drive the coding agents on your machines over SSH, with a real libghostty t...</title>
<link>https://github.com/ZingerLittleBee/Heeler</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/21aa999bf5ba9d70a974ba52c55ed33f503faed1a25ccded9a45e014640b9b95/ZingerLittleBee/Heeler"></enclosure>
<guid isPermaLink="false">zDMJpt2vGQbA29hifjnbsXTGyuMjBcmHqAEzLg==</guid>
<pubDate>Sun, 27 Sep 2026 01:16:54 +0000</pubDate>
<description>Native iOS agent console for herdr — watch and drive the coding agents on your machines over SSH, with a real libghostty terminal, QR pairing, and push notifications when an agent needs you - Zinge...</description>
<content:encoded>&lt;hr/&gt;&lt;p&gt;Heeler is an &lt;strong&gt;agent console&lt;/strong&gt;: a native dashboard of every coding agent running on your machines, sorted by who needs you. Open an Agent to read and steer its live terminal, draft with the full iOS keyboard in a native Composer, and Send the complete message once — all over plain SSH.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Screenshots&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/ZingerLittleBee/Heeler/blob/main/docs/ipad-screenshots.md&quot;&gt;&lt;img src=&quot;https://github.com/ZingerLittleBee/Heeler/raw/main/output/app-store/ipad-13/sources/05-windowed-console.png&quot; alt=&quot;Heeler in a floating iPad window&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/ZingerLittleBee/Heeler/blob/main/docs/ipad-screenshots.md&quot;&gt;View iPad screenshots&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Features&lt;/h2&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Console&lt;/strong&gt; — every Agent on every machine in one status-sorted list
(Blocked first), filterable by Host, updated live.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Attach&lt;/strong&gt; — the Agent&amp;#39;s real terminal rendered by libghostty: native
scrollback, momentum touch scrolling that also drives full-screen TUIs,
long-press selection, takeover of a stale terminal owner, and quietly
collected web links to open later.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Composer&lt;/strong&gt; — draft locally with the full iOS keyboard (autocorrect, IME,
dictation), then Send once; the tools keyboard adds Agent control keys,
Agent Skills, reusable Snippets, and terminal appearance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terminal&lt;/strong&gt; — open a plain shell in the Agent&amp;#39;s directory, with Text and
Keys modes and one reused tab per Workspace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Attachments&lt;/strong&gt; — stage a photo or a file up to 64 MiB onto the Host over
SFTP and insert its path into the draft.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QR pairing&lt;/strong&gt; — scan a Pairing Code to add a machine; keys are generated
on device, private keys stay in the Keychain, and the code pins the host
key fingerprint.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notifications + Live Activities&lt;/strong&gt; — end-to-end encrypted pushes when an
Agent goes Blocked or Done, and a lock-screen / Dynamic Island banner
tracking Agents in real time; the relay can never read the content
(&lt;a href=&quot;https://github.com/ZingerLittleBee/Heeler/blob/main/PRIVACY.md&quot;&gt;PRIVACY.md&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Worktrees&lt;/strong&gt; — start an Agent on a clean checkout of the workspace&amp;#39;s repo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Appearance&lt;/strong&gt; — System, Light, or Dark; 30 terminal themes with separate
Light and Dark slots; bundled JetBrains Mono and IBM Plex Mono; pinch to
zoom.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jump Host&lt;/strong&gt; — reach unroutable machines through an SSH jump, with keys
verified at both hops.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h2&gt;How it connects&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Heeler speaks herdr&amp;#39;s JSON API over SSH: each request opens a
direct-streamlocal channel onto &lt;code&gt;herdr.sock&lt;/code&gt;, one long-lived channel carries
the event stream, and interactive terminals run &lt;code&gt;herdr agent attach --takeover&lt;/code&gt; on an SSH PTY. The only prerequisites are SSH access and a
running herdr — no server changes, no extra packages. The SSH server must
allow stream-local forwarding (the OpenSSH default); onboarding calls it out
when it&amp;#39;s disabled.&lt;/p&gt;&lt;p&gt;Unroutable machines can sit behind an SSH Jump Host:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ZingerLittleBee/Heeler/blob/main/docs/guides/vps-jump-host-setup.md&quot;&gt;Set up remote access step by step&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ZingerLittleBee/Heeler/blob/main/docs/guides/vps-jump-host.md&quot;&gt;Architecture, security boundaries, and the VPS runbook&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h2&gt;Adding a machine&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;On the machine running herdr (Node &amp;gt;= 20, herdr &amp;gt;= 0.7.5, OpenSSH server on —
macOS: &lt;strong&gt;System Settings &amp;gt; General &amp;gt; Sharing &amp;gt; Remote Login&lt;/strong&gt;):&lt;/p&gt;&lt;div&gt;&lt;pre&gt;herdr plugin install ZingerLittleBee/Heeler/plugin --ref main --yes
herdr plugin action invoke heeler.pair&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Scan the Pairing Code QR it shows and the machine is added as a Host — the
code carries the addresses, the host key fingerprint, and SSH key enrollment.
The same &lt;a href=&quot;https://github.com/ZingerLittleBee/Heeler/blob/main/plugin/README.md&quot;&gt;plugin&lt;/a&gt; delivers the encrypted notifications once
you enable them for the Host in the app.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Stack&lt;/h2&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;SwiftUI, iOS 18+, iPhone and iPad. iPad support is restored in 0.1.8 with Magic Keyboard shortcuts, multiwindow, and drag and drop.&lt;/li&gt;
&lt;li&gt;The repository-local &lt;code&gt;Packages/HeelerSSH&lt;/code&gt; (libssh2 + OpenSSL) for SSH&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/lakr233/libghostty-spm&quot;&gt;libghostty-spm&lt;/a&gt; for terminal emulation and Metal rendering&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;See &lt;code&gt;docs/adr/&lt;/code&gt; for why — the transport story in particular is not obvious.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Contributing&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Issues and PRs are welcome — see &lt;a href=&quot;https://github.com/ZingerLittleBee/Heeler/blob/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for
layout, build/test, and conventions.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Status&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Released on the &lt;a href=&quot;https://apps.apple.com/us/app/heeler-for-herdr/id6797263135&quot;&gt;App Store&lt;/a&gt;.
It is not yet available in every country or region; where it is missing, the
&lt;a href=&quot;https://testflight.apple.com/join/aXSxRn4r&quot;&gt;TestFlight&lt;/a&gt; build stays available.
Built for personal use first and shaped by daily driving, so expect rough edges and
fast iteration. Not affiliated with the herdr project.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Bounties [Supported work] · Issue #8120 · MonoGame/MonoGame · GitHub</title>
<link>https://github.com/MonoGame/MonoGame/issues/8120</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/a6bd2913aa7aab44113a002ceced1b43f0b2246e69dd917ff032fa6131291c8d/MonoGame/MonoGame/issues/8120"></enclosure>
<guid isPermaLink="false">jrZO_u2KcVtWsur2WEYwB2-DlMxZOhoPg9XXUw==</guid>
<pubDate>Sun, 27 Sep 2026 00:34:28 +0000</pubDate>
<description>This issue is reserved for listing ongoing and open bounties. ImportantPlease note, new bounties are currently on hold while we revise the process to be fairer and attempt to curb the intrusion of ...</description>
<content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Description&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/ThomasFOG&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/3427451?u=a9837f4d32cf79aba04bf82bd5aa24204b7d94b8&amp;amp;v=4&amp;amp;size=48&quot; alt=&quot;@ThomasFOG&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/ThomasFOG&quot;&gt;ThomasFOG&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;opened &lt;/span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8120#issue-2076592522&quot;&gt;on Jan 11, 2024&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Issue body actions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;This issue is reserved for listing ongoing and open bounties.&lt;/p&gt;
&lt;div&gt;&lt;p&gt;Important&lt;/p&gt;&lt;p&gt;Please note, new bounties are currently on hold while we revise the process to be fairer and attempt to curb the intrusion of AI bounty hunters.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;🟢 Currently &lt;strong&gt;open&lt;/strong&gt; bounties:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;None at present 😊&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;p&gt;Note&lt;/p&gt;&lt;p&gt;Full details for the process to apply for bounties can be found on the &lt;a href=&quot;https://monogame.net/bounties/&quot;&gt;MonoGame Bounties page&lt;/a&gt; on the main website.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;A list of potential bounties is also being written up based on a discussion in the latest MonoGame Foundation meeting and several community requests.  Writing up the bounties and having their reviewed takes a significant investment in time, so please bear with us.&lt;/p&gt;
&lt;p&gt;🔒 Currently &lt;strong&gt;reserved and being worked on&lt;/strong&gt; bounties:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8194&quot;&gt;[PAID BOUNTY] [LOCKED] Switch the console runtime from BRUTE to NativeAOT&lt;span&gt; #8194&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8318&quot;&gt;[PAID BOUNTY][LOCKED] A better 3D onboarding tutorial&lt;span&gt; #8318&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8820&quot;&gt;[PAID BOUNTY][LOCKED] MonoGame 2D advanced series - Mobile targeting&lt;span&gt; #8820&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8821&quot;&gt;[PAID BOUNTY][LOCKED] MonoGame 2D advanced series - Networking&lt;span&gt; #8821&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🚀 Completed bounties:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8641&quot;&gt;[PAID BOUNTY][LOCKED] Create native backend for Content Pipeline&lt;span&gt; #8641&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8241&quot;&gt;[PAID BOUNTY] [LOCKED] Package up ffmpeg and ffprobe&lt;span&gt; #8241&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8317&quot;&gt;[PAID BOUNTY][LOCKED] A better 2D onboarding tutorial&lt;span&gt; #8317&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8419&quot;&gt;[PAID BOUNTY] Upgrade MonoGame to use BasisUniversal for cross platform Texture Compression&lt;span&gt; #8419&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8242&quot;&gt;[PAID BOUNTY][LOCKED] A shared base for public and console repos&lt;span&gt; #8242&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8195&quot;&gt;[PAID BOUNTY] [LOCKED] Implement the Direct3D 12 / GDK/GDKX backend&lt;span&gt; #8195&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8661&quot;&gt;[PAID BOUNTY] Fix Rendering of Ship Models for ShipGame sample&lt;span&gt; #8661&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8642&quot;&gt;[PAID BOUNTY][LOCKED] Finish off MacOS and Linux Vulkan Native Backend Support&lt;span&gt; #8642&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues/8819&quot;&gt;[PAID BOUNTY][LOCKED] MonoGame 2D advanced series - Shaders&lt;span&gt; #8819&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;p&gt;Note&lt;/p&gt;&lt;p&gt;Values removed from bounties due to the rise of AI bots seeking work.  If you wish to enquire about bounties, then please ask.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Reactions are currently unavailable&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Activity&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/signup?return_to=https://github.com/MonoGame/MonoGame/issues/8120&quot;&gt;&lt;span&gt;&lt;span&gt;Sign up for free&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;strong&gt; to join this conversation on GitHub.&lt;/strong&gt; Already have an account? &lt;/span&gt;&lt;a href=&quot;https://github.com/login?return_to=https://github.com/MonoGame/MonoGame/issues/8120&quot;&gt;Sign in to comment&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Metadata&lt;/h2&gt;&lt;h2&gt;Metadata&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Assignees&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No one assigned&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Labels&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues?q=state%3Aopen%20label%3A%22Bounty%22&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Bounty&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues?q=state%3Aopen%20label%3A%22docs%22&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;docs&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Documentation-only work.&lt;/span&gt;&lt;/a&gt;&lt;span&gt;Documentation-only work.&lt;/span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues?q=state%3Aopen%20label%3A%22maintenance%22&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;maintenance&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Housekeeping: cleanup, consistency fixes, repo hygiene, minor infrastructure upkeep.&lt;/span&gt;&lt;/a&gt;&lt;span&gt;Housekeeping: cleanup, consistency fixes, repo hygiene, minor infrastructure upkeep.&lt;/span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues?q=state%3Aopen%20label%3A%22priority%3A%20low%22&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;priority: low&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Nice to have; backlog item with no near-term urgency.&lt;/span&gt;&lt;/a&gt;&lt;span&gt;Nice to have; backlog item with no near-term urgency.&lt;/span&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues?q=state%3Aopen%20label%3A%22scope%3A%20docs%22&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;scope: docs&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Documentation structure, guides, contributor docs, and API documentation work.&lt;/span&gt;&lt;/a&gt;&lt;span&gt;Documentation structure, guides, contributor docs, and API documentation work.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Type&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/MonoGame/MonoGame/issues?q=type:&amp;quot;Task&amp;quot;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Task&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Projects&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No projects&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Milestone&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No milestone&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Relationships&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;None yet&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h3&gt;Development&lt;/h3&gt;&lt;/div&gt;&lt;span&gt;No branches or pull requests&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;Issue actions&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded>
</item>
<item>
<title>Issues with testing the templates? · MonoGame/MonoGame.EmptyGame.CSharp · Discussion #3 · GitHub</title>
<link>https://github.com/MonoGame/MonoGame.EmptyGame.CSharp/discussions/3</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/abbe4568204dcdee50b67890d27670b004d92edbad354134009e3fb909a0f953/MonoGame/MonoGame.EmptyGame.CSharp/discussions/3"></enclosure>
<guid isPermaLink="false">33PPMnYW1vwvkBFLswg30s1CE1gmr4gXo4c7xg==</guid>
<pubDate>Sun, 27 Sep 2026 00:34:27 +0000</pubDate>
<description>Each template in its folder contains detailed information about the template, including how to safely install the template for testing Note.NET requires you to install the template in order to use ...</description>
<content:encoded>&lt;body&gt;
    &lt;div&gt;
      
      

    &lt;div&gt;
      Skip to content

      &lt;span&gt;
    
&lt;/span&gt;      
      





  
  
  






      

          





  
  
  



          

                













  
  
  &lt;div&gt;&lt;div&gt;&lt;header&gt;&lt;h2&gt;Navigation Menu&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/&quot;&gt;&lt;/a&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FMonoGame%2FMonoGame.EmptyGame.CSharp%2Fdiscussions%2F3&quot;&gt;&lt;span&gt;&lt;span&gt;Sign in&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;Appearance settings&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FMonoGame%2FMonoGame.EmptyGame.CSharp%2Fdiscussions%2F3&quot;&gt;&lt;span&gt;&lt;span&gt;Sign in&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;https://github.com/signup?ref_cta=Sign+up&amp;amp;ref_loc=header+logged+out&amp;amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fdiscussions_fragments%2Fdiscussion_layout&amp;amp;source=header-repo&amp;amp;source_repo=MonoGame%2FMonoGame.EmptyGame.CSharp&quot;&gt;&lt;span&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;Appearance settings&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/header&gt;&lt;/div&gt;&lt;/div&gt;




      &lt;div&gt;
  
        
        &lt;span&gt;You signed in with another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You signed out in another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You switched accounts on another tab or window. Reload to refresh your session.&lt;/span&gt;

    Dismiss alert


  
&lt;/div&gt;
    &lt;/div&gt;

  








    &lt;div&gt;





  
&lt;/div&gt;


    






  &lt;div&gt;
        &lt;div&gt;
    &lt;main&gt;
      
  




    

      
    


    








  

    &lt;div&gt;

        &lt;div&gt;

          &lt;div&gt;
              
  &lt;div&gt;
      
    
    &lt;span&gt;
      &lt;a href=&quot;https://github.com/MonoGame&quot;&gt;
        MonoGame
&lt;/a&gt;    &lt;/span&gt;
    &lt;span&gt;/&lt;/span&gt;
    &lt;strong&gt;
      &lt;a href=&quot;https://github.com/MonoGame/MonoGame.EmptyGame.CSharp&quot;&gt;MonoGame.EmptyGame.CSharp&lt;/a&gt;
    &lt;/strong&gt;

    &lt;span&gt;Public&lt;/span&gt;
  &lt;/div&gt;


          &lt;/div&gt;

          &lt;div&gt;
              &lt;ul&gt;
    
      

  &lt;li&gt;
            &lt;a href=&quot;https://github.com/login?return_to=%2FMonoGame%2FMonoGame.EmptyGame.CSharp&quot;&gt;    Notifications
&lt;/a&gt;    You must be signed in to change notification settings

  &lt;/li&gt;

  &lt;li&gt;
          &lt;a href=&quot;https://github.com/login?return_to=%2FMonoGame%2FMonoGame.EmptyGame.CSharp&quot;&gt;    Fork
    &lt;span&gt;0&lt;/span&gt;
&lt;/a&gt;
  &lt;/li&gt;

  &lt;li&gt;
        &lt;div&gt;
        &lt;a href=&quot;https://github.com/login?return_to=%2FMonoGame%2FMonoGame.EmptyGame.CSharp&quot;&gt;    &lt;span&gt;
          Star
&lt;/span&gt;          &lt;span&gt;1&lt;/span&gt;
&lt;/a&gt;&lt;/div&gt;
  &lt;/li&gt;

&lt;/ul&gt;

          &lt;/div&gt;
        &lt;/div&gt;

          &lt;div&gt;
&lt;/div&gt;


            

    &lt;/div&gt;
  




    &lt;div&gt;
    



    
      
          

    &lt;div&gt;
      
    
        &lt;div&gt;

        
  &lt;div&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;

      &lt;div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;h1&gt;
              &lt;span&gt;
                Issues with testing the templates?
              &lt;/span&gt;
              &lt;span&gt;#3&lt;/span&gt;
            &lt;/h1&gt;
            &lt;div&gt;
              

              &lt;div&gt;
                  &lt;a href=&quot;https://github.com/SimonDarksideJ&quot;&gt;
                    &lt;span&gt;
                      SimonDarksideJ
                    &lt;/span&gt;
                  &lt;/a&gt;
                
                  started this conversation in
                &lt;a href=&quot;https://github.com/MonoGame/MonoGame.EmptyGame.CSharp/discussions/categories/general&quot;&gt;General&lt;/a&gt;
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;

          &lt;div&gt;
          &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

  &lt;/div&gt;

  

  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;div&gt;
            
              Issues with testing the templates?
            
            &lt;span&gt;#3&lt;/span&gt;
          &lt;/div&gt;
          &lt;div&gt;
            &lt;div&gt;
  &lt;div&gt;
      &lt;a href=&quot;https://github.com/SimonDarksideJ&quot;&gt;
        &lt;img src=&quot;https://avatars.githubusercontent.com/u/1793042?s=40&amp;amp;v=4&quot; alt=&quot;@SimonDarksideJ&quot; title=&quot;&quot;/&gt;
        &lt;span&gt;
          SimonDarksideJ
        &lt;/span&gt;
      &lt;/a&gt;
      
  &lt;/div&gt;

  &lt;div&gt;
    Sep 16, 2026
    &lt;span&gt;·&lt;/span&gt;
    0 comments
  &lt;/div&gt;
&lt;/div&gt;

          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;
        Return to top
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

  &lt;/div&gt;

&lt;div&gt;
  &lt;div&gt;

    &lt;div&gt;
        &lt;div&gt;
  &lt;div&gt;
  &lt;div&gt;

      &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
        
&lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
        
  
  Discussion options

  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;ul&gt;
            
  
              &lt;li&gt;
                &lt;span&gt;
  &lt;/span&gt;
              &lt;/li&gt;

  &lt;div&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
      

      &lt;h3&gt;        Uh oh!
&lt;/h3&gt;
      &lt;p&gt;        &lt;/p&gt;&lt;p&gt;There was an error while loading. Please reload this page.&lt;/p&gt;


&lt;/div&gt;  &lt;/div&gt;
&lt;/div&gt;  &lt;/div&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  

  

  &lt;div&gt;
    

  &lt;/div&gt;


      &lt;/div&gt;
    &lt;/div&gt;

     &lt;div&gt;
        &lt;span&gt;
          
        &lt;/span&gt;
    &lt;/div&gt;

    &lt;h2&gt;

      &lt;div&gt;
            &lt;a href=&quot;https://github.com/SimonDarksideJ&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/1793042?s=64&amp;amp;v=4&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;
  &lt;div&gt;
    &lt;span&gt;SimonDarksideJ&lt;/span&gt;
    
  &lt;/div&gt;&lt;/a&gt;

        
          Sep 16, 2026
        

          &lt;div&gt;
  
  &lt;span&gt;
  Maintainer
&lt;/span&gt;


  
&lt;/div&gt;

      &lt;/div&gt;
&lt;/h2&gt;  &lt;/div&gt;
&lt;/div&gt;


      &lt;div&gt;
        &lt;div&gt;
            
  &lt;table&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
    &lt;td&gt;
        &lt;p&gt;Each template in its folder contains detailed information about the template, including how to safely install the template for testing&lt;/p&gt;
&lt;div&gt;&lt;p&gt;Note&lt;/p&gt;&lt;p&gt;.NET requires you to install the template in order to use it to create a new project from it.  This can be done safely using a hive (temp deployment).&lt;/p&gt;
&lt;p&gt;Just remember to &amp;quot;uninstall&amp;quot; them later!&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;If you have issues testing or using the templates, list them here.&lt;/p&gt;
    &lt;/td&gt;
  &lt;/tr&gt;

    &lt;/tbody&gt;
  &lt;/table&gt;


          &lt;div&gt;

            &lt;div&gt;
              &lt;div&gt;
                  &lt;div&gt;
                      


    &lt;div&gt;
    &lt;div&gt;
                You must be logged in to vote
    &lt;/div&gt;
  &lt;/div&gt;


                  &lt;/div&gt;

                    
    &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
      &lt;/div&gt;

      &lt;details&gt;
        &lt;summary&gt;  &lt;span&gt;
    &lt;span&gt;All reactions&lt;/span&gt;
  &lt;/span&gt;
&lt;/summary&gt;

        &lt;ul&gt;
        &lt;/ul&gt;
      &lt;/details&gt;
    &lt;/div&gt;

  &lt;/div&gt;


              &lt;/div&gt;

            &lt;/div&gt;
          &lt;/div&gt;

        &lt;/div&gt;

      &lt;/div&gt;

        
    &lt;/div&gt;
    
&lt;/div&gt;&lt;/div&gt;

  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


        
&lt;div&gt;
  
    &lt;div&gt;
  &lt;div&gt;
  &lt;h2&gt;
    &lt;span&gt;Replies: &lt;/span&gt;
    &lt;span&gt;
      0 comments
    &lt;/span&gt;

&lt;/h2&gt;&lt;/div&gt;

&lt;/div&gt;

    

    

    &lt;div&gt;
  &lt;/div&gt;

  
    
&lt;/div&gt;

    &lt;/div&gt;


    

    &lt;div&gt;
      &lt;div&gt;
  
    &lt;a href=&quot;https://github.com/join?source=comment-repo&quot;&gt;Sign up for free&lt;/a&gt;
    &lt;strong&gt;to join this conversation on GitHub&lt;/strong&gt;.
    Already have an account?
    &lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FMonoGame%2FMonoGame.EmptyGame.CSharp%2Fdiscussions%2F3&quot;&gt;Sign in to comment&lt;/a&gt;


  
&lt;/div&gt;

        
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

         &lt;div&gt;

  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
    &lt;div&gt;
      Category
    &lt;/div&gt;
    &lt;a href=&quot;https://github.com/MonoGame/MonoGame.EmptyGame.CSharp/discussions/categories/general&quot;&gt;
      &lt;div&gt;
        💬
      &lt;/div&gt;
      General
    &lt;/a&gt;
&lt;/div&gt;

    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div&gt;

          &lt;div&gt;
        Labels
      &lt;/div&gt;

    &lt;div&gt;
        None yet
    &lt;/div&gt;

&lt;/div&gt;


  &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
      1 participant
    &lt;/div&gt;
    &lt;div&gt;
      &lt;a href=&quot;https://github.com/SimonDarksideJ&quot;&gt;
      &lt;img src=&quot;https://avatars.githubusercontent.com/u/1793042?s=48&amp;amp;v=4&quot; alt=&quot;@SimonDarksideJ&quot; title=&quot;&quot;/&gt; 
&lt;/a&gt;    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



  

  
  
&lt;/div&gt;







  

  

  

  

  

  

  

  


    &lt;/div&gt;



    &lt;/div&gt;


  &lt;/div&gt;




    &lt;/main&gt;
  &lt;/div&gt;

  &lt;/div&gt;

          &lt;footer&gt;
  &lt;h2&gt;Footer&lt;/h2&gt;

  


  &lt;div&gt;
    &lt;div&gt;
      &lt;a href=&quot;https://github.com&quot;&gt;
        
&lt;/a&gt;
      &lt;span&gt;
        © 2026 GitHub, Inc.
      &lt;/span&gt;
    &lt;/div&gt;

    
  &lt;/div&gt;
&lt;/footer&gt;



    




  &lt;div&gt;
    
    
    You can’t perform that action at this time.
  &lt;/div&gt;

    

    &lt;div&gt;
  &lt;div&gt;
  &lt;/div&gt;
&lt;/div&gt;

    





    &lt;/div&gt;
    
    
  


&lt;/body&gt;</content:encoded>
</item>
</channel>
</rss>
