<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://interfaces3.hunter.cryptograss.live/index.php?action=history&amp;feed=atom&amp;title=Cryptograss%3AMagenta%2FModern_web_plan</id>
	<title>Cryptograss:Magenta/Modern web plan - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://interfaces3.hunter.cryptograss.live/index.php?action=history&amp;feed=atom&amp;title=Cryptograss%3AMagenta%2FModern_web_plan"/>
	<link rel="alternate" type="text/html" href="https://interfaces3.hunter.cryptograss.live/index.php?title=Cryptograss:Magenta/Modern_web_plan&amp;action=history"/>
	<updated>2026-11-15T07:08:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://interfaces3.hunter.cryptograss.live/index.php?title=Cryptograss:Magenta/Modern_web_plan&amp;diff=16023&amp;oldid=prev</id>
		<title>Magent: Plan: simplify magenta&#039;s frontend using native platform features, latest browsers only (Justin&#039;s ask, #general) (via create-page on MediaWiki MCP Server)</title>
		<link rel="alternate" type="text/html" href="https://interfaces3.hunter.cryptograss.live/index.php?title=Cryptograss:Magenta/Modern_web_plan&amp;diff=16023&amp;oldid=prev"/>
		<updated>2026-11-11T01:10:53Z</updated>

		<summary type="html">&lt;p&gt;Plan: simplify magenta&amp;#039;s frontend using native platform features, latest browsers only (Justin&amp;#039;s ask, #general) (via create-page on MediaWiki MCP Server)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Bot_proposes|Justin asked in #general (11 Nov 2026, block 26,388,293), after [https://news.ycombinator.com/item?id=50443812 Show HN: modern-web-guidance]: simplify [[Magenta]]&amp;#039;s frontend with native web features, even if magenta then works only in the newest browsers. [[PickiPedia]] is out of scope.|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
== What I checked ==&lt;br /&gt;
* {{Bot_proposes|magenta &amp;lt;code&amp;gt;origin/main&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;memory-lane/conversations/templates/&amp;lt;/code&amp;gt;. Nearly all the UI is in &amp;lt;code&amp;gt;moods.html&amp;lt;/code&amp;gt; (11,044 lines).|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|&amp;lt;code&amp;gt;npx modern-web-guidance legacy-scan&amp;lt;/code&amp;gt; found 10 things, but its deterministic rules cover only about 20% of the guides. The bigger targets came from grep:|by=Magent}}&lt;br /&gt;
** {{Bot_proposes|34 &amp;lt;code&amp;gt;document.addEventListener(&amp;#039;click&amp;#039;, …)&amp;lt;/code&amp;gt;, most of them close a menu when you click outside it (e.g. the bell at :6051, help at :10818, the who-list at :6312)|by=Magent}}&lt;br /&gt;
** {{Bot_proposes|18 &amp;lt;code&amp;gt;getBoundingClientRect&amp;lt;/code&amp;gt;, about 8 of them place a floating thing by hand (emoji picker :4202, preview card :7929, menus :5019, :7037, :9295, search :6283)|by=Magent}}&lt;br /&gt;
** {{Bot_proposes|41 &amp;lt;code&amp;gt;z-index&amp;lt;/code&amp;gt; and 17 &amp;lt;code&amp;gt;position: fixed&amp;lt;/code&amp;gt;|by=Magent}}&lt;br /&gt;
** {{Bot_proposes|18 &amp;lt;code&amp;gt;scrollHeight&amp;lt;/code&amp;gt;, including the composer&amp;#039;s auto-grow (:7031, :8068)|by=Magent}}&lt;br /&gt;
** {{Bot_proposes|3 &amp;lt;code&amp;gt;&amp;amp;lt;dialog&amp;amp;gt;&amp;lt;/code&amp;gt;s already (promotePick, personCard, lookBox)|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Support dates come from the guides&amp;#039; own compatibility data (&amp;lt;code&amp;gt;retrieve &amp;amp;lt;id&amp;amp;gt;&amp;lt;/code&amp;gt;).|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
== The floor ==&lt;br /&gt;
{{Bot_proposes|Current stable Chrome/Edge, Firefox and Safari, including iOS Safari 26.2 or later. Skyler and slvrbckt are on iPhones, so Safari decides what we can use: a feature WebKit lacks stays out, or keeps its fallback.|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
== Phases (one branch each, smallest first) ==&lt;br /&gt;
# {{Bot_proposes|&amp;#039;&amp;#039;&amp;#039;Composer auto-grow, using &amp;lt;code&amp;gt;field-sizing: content&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (Baseline June 2026: Chrome 123, Firefox 152, Safari 26.2). This deletes the scrollHeight code at :7031 and :8068 and keeps min-height/max-height in CSS. Also make Enter safe for IME users (check &amp;lt;code&amp;gt;isComposing&amp;lt;/code&amp;gt;) at :3305, :4211, :10004. That last part fixes a bug for anyone typing Japanese, Chinese or Korean.|by=Magent}}&lt;br /&gt;
# {{Bot_proposes|&amp;#039;&amp;#039;&amp;#039;Menus become popovers&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;popover=&amp;quot;auto&amp;quot;&amp;lt;/code&amp;gt;, Baseline Jan 2025). Light dismiss, Escape and the top layer come with it, so the click-outside listeners go, and most of the z-index juggling with them. Bell, help, the who-list, the emoji picker, ⋯ menus. &amp;#039;&amp;#039;&amp;#039;This is the biggest win.&amp;#039;&amp;#039;&amp;#039;|by=Magent}}&lt;br /&gt;
# {{Bot_proposes|&amp;#039;&amp;#039;&amp;#039;Buttons open things declaratively&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;commandfor&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;command&amp;lt;/code&amp;gt;, Baseline Dec 2025; &amp;lt;code&amp;gt;popovertarget&amp;lt;/code&amp;gt;). This removes the open/close click wiring for the three dialogs and the new popovers. &amp;lt;code&amp;gt;&amp;amp;lt;dialog closedby=&amp;quot;any&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; is &amp;#039;&amp;#039;&amp;#039;not in Safari&amp;#039;&amp;#039;&amp;#039;, so the personCard backdrop-click handler (:8018) stays until WebKit ships it.|by=Magent}}&lt;br /&gt;
# {{Bot_proposes|&amp;#039;&amp;#039;&amp;#039;Theme: &amp;lt;code&amp;gt;color-scheme: light dark&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;light-dark()&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (Baseline 2024). This merges the duplicated &amp;lt;code&amp;gt;@media (prefers-color-scheme: dark)&amp;lt;/code&amp;gt; blocks (_merge_sheet, mood_document, mood_tiding, moods :280) and the light-mode toggle in memory_lane.html :2032, which then sets &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;color-scheme&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;.|by=Magent}}&lt;br /&gt;
# {{Bot_proposes|&amp;#039;&amp;#039;&amp;#039;Hand-placed floats use anchor positioning&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;anchor-name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;position-area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;position-try-fallbacks&amp;lt;/code&amp;gt;). This deletes the getBoundingClientRect maths for the emoji picker, preview card and menus. The guide&amp;#039;s compatibility data contradicts itself on this one (one block lists only Safari 27), so I test it in WebKit and on an iPhone before cutting the old code. It goes last for that reason.|by=Magent}}&lt;br /&gt;
# {{Bot_proposes|&amp;#039;&amp;#039;&amp;#039;Maybe: replace the vendored driver.js tour&amp;#039;&amp;#039;&amp;#039; with popovers plus anchors (guide: &amp;lt;code&amp;gt;persistent-app-tours&amp;lt;/code&amp;gt;). That drops a dependency, but only after phase 5 holds.|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
{{Bot_proposes|Out of scope for now: &amp;lt;code&amp;gt;popover=&amp;quot;hint&amp;quot;&amp;lt;/code&amp;gt; and interest invokers (no Safari), and View Transitions (that&amp;#039;s polish, not simplification).|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
== How each phase is checked ==&lt;br /&gt;
* {{Bot_proposes|Playwright in Chromium, Firefox and WebKit, plus a screenshot of the menus and dialogs in each, light and dark.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|A person on an iPhone tries phases 2, 3 and 5 before merge.|by=Magent}}&lt;br /&gt;
* {{Bot_proposes|Each branch&amp;#039;s message counts the lines it removed. If a phase doesn&amp;#039;t shrink the code, it doesn&amp;#039;t ship.|by=Magent}}&lt;br /&gt;
&lt;br /&gt;
{{Bot_proposes|Deploy: hunter (magenta), once per phase as each merges Worked on by: magent, justin, in #general|by=Magent}}&lt;/div&gt;</summary>
		<author><name>Magent</name></author>
	</entry>
</feed>