detached d1a7786

feat(web): announce theme changes, refresh on bfcache restore, match theme-color by data-scheme

commit
d1a7786e4d6dfbfae3b6ee642f31e6971b6b1c97
author
brice · · 2026-10-22 10:14 UTC
parent
bb7efc8
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
checks
4/4
37 files · +136 -119
M internal/adapters/web/jstest/a11y.test.mjs +1 -1
@@ -44,7 +44,7 @@ El.prototype.focus = function (opts) {
4444 const doc = installDom({ parseHTML: (text) => parsed[text] });
4545 const parsed = {};
4646 Object.defineProperty(doc, 'activeElement', { get: () => active ?? dom.body });
47-doc.documentElement = { classList: { add() {} } };
47+doc.documentElement = { classList: { add() {} }, setAttribute() {}, removeAttribute() {} };
4848 const query = { all: doc.querySelectorAll, one: doc.querySelector };
4949 doc.querySelectorAll = () => []; // the page-wide queries of the top of ermite.js
5050 doc.querySelector = () => null;
@@ -44,7 +44,7 @@ El.prototype.focus = function (opts) {
44 const doc = installDom({ parseHTML: (text) => parsed[text] });44 const doc = installDom({ parseHTML: (text) => parsed[text] });
45 const parsed = {};45 const parsed = {};
46 Object.defineProperty(doc, 'activeElement', { get: () => active ?? dom.body });46 Object.defineProperty(doc, 'activeElement', { get: () => active ?? dom.body });
47-doc.documentElement = { classList: { add() {} } };47+doc.documentElement = { classList: { add() {} }, setAttribute() {}, removeAttribute() {} };
48 const query = { all: doc.querySelectorAll, one: doc.querySelector };48 const query = { all: doc.querySelectorAll, one: doc.querySelector };
49 doc.querySelectorAll = () => []; // the page-wide queries of the top of ermite.js49 doc.querySelectorAll = () => []; // the page-wide queries of the top of ermite.js
50 doc.querySelector = () => null;50 doc.querySelector = () => null;
M internal/adapters/web/jstest/theme.test.mjs +22 -10
@@ -41,8 +41,8 @@ function load({ stored, withSwitch = true } = {}) {
4141 doc.documentElement = root;
4242 scheme = el('meta', { attrs: { name: 'color-scheme', content: 'light dark' } });
4343 colors = [
44- el('meta', { attrs: { name: 'theme-color', media: '(prefers-color-scheme: light)', content: '#ffffff' } }),
45- el('meta', { attrs: { name: 'theme-color', media: '(prefers-color-scheme: dark)', content: '#0c0c0c' } }),
44+ el('meta', { attrs: { name: 'theme-color', 'data-scheme': 'light', media: '(prefers-color-scheme: light)', content: '#ffffff' } }),
45+ el('meta', { attrs: { name: 'theme-color', 'data-scheme': 'dark', media: '(prefers-color-scheme: dark)', content: '#0c0c0c' } }),
4646 ];
4747 icon = el('span', { cls: 'ico i-sun-moon', attrs: { 'aria-hidden': 'true' } });
4848 button = el('button', { cls: 'foot-theme', attrs: { type: 'button', 'data-js': '', 'data-theme-switch': '' } }, icon);
@@ -58,6 +58,7 @@ const state = () => ({
5858 colors: colors.map((m) => m.getAttribute('content')),
5959 });
6060 const click = (target) => listeners.click.forEach((f) => f({ target }));
61+const pageshow = (persisted) => listeners.pageshow.forEach((f) => f({ persisted }));
6162 const storageEvent = (newValue) => listeners.storage.forEach((f) => f({ key: 'theme', newValue, storageArea: localStorage }));
6263
6364 beforeEach(() => { delete globalThis.localStorage; });
@@ -81,20 +82,21 @@ test('a stored value that is not a theme falls back to auto', () => {
8182 assert.equal(root.getAttribute('data-theme'), null);
8283 });
8384
84-test('next cycles auto, light, dark', () => {
85- const T = load({ withSwitch: false });
86- assert.deepEqual(T.values.map(T.next), ['light', 'dark', 'auto']);
85+test('the switch shows the stored theme on load', () => {
86+ load({ stored: { theme: 'dark' } });
87+ assert.equal(icon.className, 'ico i-moon');
88+ assert.equal(button.getAttribute('aria-label'), 'theme: dark (switch to auto)');
8789 });
8890
8991 test('a click on the button (or its icon) cycles, stores and shows the theme', () => {
9092 load();
91- assert.equal(button.getAttribute('aria-label'), 'theme: auto (click for light)');
93+ assert.equal(button.getAttribute('aria-label'), 'theme: auto (switch to light)');
9294 click(icon);
9395 assert.equal(storage.get('theme'), 'light');
9496 assert.deepEqual(state(), { attr: 'light', scheme: 'light', colors: ['#ffffff', '#ffffff'] });
9597 assert.equal(icon.className, 'ico i-sun');
96- assert.equal(button.getAttribute('aria-label'), 'theme: light (click for dark)');
97- assert.equal(button.getAttribute('title'), 'theme: light (click for dark)');
98+ assert.equal(button.getAttribute('aria-label'), 'theme: light (switch to dark)');
99+ assert.equal(button.getAttribute('title'), 'theme: light (switch to dark)');
98100 click(button);
99101 assert.equal(storage.get('theme'), 'dark');
100102 assert.deepEqual(state(), { attr: 'dark', scheme: 'dark', colors: ['#0c0c0c', '#0c0c0c'] });
@@ -103,7 +105,17 @@ test('a click on the button (or its icon) cycles, stores and shows the theme', (
103105 assert.equal(storage.get('theme'), 'auto');
104106 assert.deepEqual(state(), { attr: null, scheme: 'light dark', colors: ['#ffffff', '#0c0c0c'] });
105107 assert.equal(icon.className, 'ico i-sun-moon');
106- assert.equal(button.getAttribute('aria-label'), 'theme: auto (click for light)');
108+ assert.equal(button.getAttribute('aria-label'), 'theme: auto (switch to light)');
109+});
110+
111+test('a page back from the back/forward cache shows the stored theme', () => {
112+ load();
113+ storage.set('theme', 'light');
114+ pageshow(false);
115+ assert.equal(root.getAttribute('data-theme'), null, 'a fresh load: store.js already applied it');
116+ pageshow(true);
117+ assert.deepEqual(state(), { attr: 'light', scheme: 'light', colors: ['#ffffff', '#ffffff'] });
118+ assert.equal(icon.className, 'ico i-sun');
107119 });
108120
109121 test('other clicks do nothing', () => {
@@ -123,7 +135,7 @@ test("another tab's change applies live", () => {
123135 storage.delete('theme');
124136 storageEvent(null);
125137 assert.equal(root.getAttribute('data-theme'), null, 'removed: back to auto');
126- assert.equal(button.getAttribute('aria-label'), 'theme: auto (click for light)');
138+ assert.equal(button.getAttribute('aria-label'), 'theme: auto (switch to light)');
127139 });
128140
129141 test('without usable storage the choice holds for the page', () => {
@@ -41,8 +41,8 @@ function load({ stored, withSwitch = true } = {}) {
41 doc.documentElement = root;41 doc.documentElement = root;
42 scheme = el('meta', { attrs: { name: 'color-scheme', content: 'light dark' } });42 scheme = el('meta', { attrs: { name: 'color-scheme', content: 'light dark' } });
43 colors = [43 colors = [
44- el('meta', { attrs: { name: 'theme-color', media: '(prefers-color-scheme: light)', content: '#ffffff' } }),44+ el('meta', { attrs: { name: 'theme-color', 'data-scheme': 'light', media: '(prefers-color-scheme: light)', content: '#ffffff' } }),
45- el('meta', { attrs: { name: 'theme-color', media: '(prefers-color-scheme: dark)', content: '#0c0c0c' } }),45+ el('meta', { attrs: { name: 'theme-color', 'data-scheme': 'dark', media: '(prefers-color-scheme: dark)', content: '#0c0c0c' } }),
46 ];46 ];
47 icon = el('span', { cls: 'ico i-sun-moon', attrs: { 'aria-hidden': 'true' } });47 icon = el('span', { cls: 'ico i-sun-moon', attrs: { 'aria-hidden': 'true' } });
48 button = el('button', { cls: 'foot-theme', attrs: { type: 'button', 'data-js': '', 'data-theme-switch': '' } }, icon);48 button = el('button', { cls: 'foot-theme', attrs: { type: 'button', 'data-js': '', 'data-theme-switch': '' } }, icon);
@@ -58,6 +58,7 @@ const state = () => ({
58 colors: colors.map((m) => m.getAttribute('content')),58 colors: colors.map((m) => m.getAttribute('content')),
59 });59 });
60 const click = (target) => listeners.click.forEach((f) => f({ target }));60 const click = (target) => listeners.click.forEach((f) => f({ target }));
61+const pageshow = (persisted) => listeners.pageshow.forEach((f) => f({ persisted }));
61 const storageEvent = (newValue) => listeners.storage.forEach((f) => f({ key: 'theme', newValue, storageArea: localStorage }));62 const storageEvent = (newValue) => listeners.storage.forEach((f) => f({ key: 'theme', newValue, storageArea: localStorage }));
62 63
63 beforeEach(() => { delete globalThis.localStorage; });64 beforeEach(() => { delete globalThis.localStorage; });
@@ -81,20 +82,21 @@ test('a stored value that is not a theme falls back to auto', () => {
81 assert.equal(root.getAttribute('data-theme'), null);82 assert.equal(root.getAttribute('data-theme'), null);
82 });83 });
83 84
84-test('next cycles auto, light, dark', () => {85+test('the switch shows the stored theme on load', () => {
85- const T = load({ withSwitch: false });86+ load({ stored: { theme: 'dark' } });
86- assert.deepEqual(T.values.map(T.next), ['light', 'dark', 'auto']);87+ assert.equal(icon.className, 'ico i-moon');
88+ assert.equal(button.getAttribute('aria-label'), 'theme: dark (switch to auto)');
87 });89 });
88 90
89 test('a click on the button (or its icon) cycles, stores and shows the theme', () => {91 test('a click on the button (or its icon) cycles, stores and shows the theme', () => {
90 load();92 load();
91- assert.equal(button.getAttribute('aria-label'), 'theme: auto (click for light)');93+ assert.equal(button.getAttribute('aria-label'), 'theme: auto (switch to light)');
92 click(icon);94 click(icon);
93 assert.equal(storage.get('theme'), 'light');95 assert.equal(storage.get('theme'), 'light');
94 assert.deepEqual(state(), { attr: 'light', scheme: 'light', colors: ['#ffffff', '#ffffff'] });96 assert.deepEqual(state(), { attr: 'light', scheme: 'light', colors: ['#ffffff', '#ffffff'] });
95 assert.equal(icon.className, 'ico i-sun');97 assert.equal(icon.className, 'ico i-sun');
96- assert.equal(button.getAttribute('aria-label'), 'theme: light (click for dark)');98+ assert.equal(button.getAttribute('aria-label'), 'theme: light (switch to dark)');
97- assert.equal(button.getAttribute('title'), 'theme: light (click for dark)');99+ assert.equal(button.getAttribute('title'), 'theme: light (switch to dark)');
98 click(button);100 click(button);
99 assert.equal(storage.get('theme'), 'dark');101 assert.equal(storage.get('theme'), 'dark');
100 assert.deepEqual(state(), { attr: 'dark', scheme: 'dark', colors: ['#0c0c0c', '#0c0c0c'] });102 assert.deepEqual(state(), { attr: 'dark', scheme: 'dark', colors: ['#0c0c0c', '#0c0c0c'] });
@@ -103,7 +105,17 @@ test('a click on the button (or its icon) cycles, stores and shows the theme', (
103 assert.equal(storage.get('theme'), 'auto');105 assert.equal(storage.get('theme'), 'auto');
104 assert.deepEqual(state(), { attr: null, scheme: 'light dark', colors: ['#ffffff', '#0c0c0c'] });106 assert.deepEqual(state(), { attr: null, scheme: 'light dark', colors: ['#ffffff', '#0c0c0c'] });
105 assert.equal(icon.className, 'ico i-sun-moon');107 assert.equal(icon.className, 'ico i-sun-moon');
106- assert.equal(button.getAttribute('aria-label'), 'theme: auto (click for light)');108+ assert.equal(button.getAttribute('aria-label'), 'theme: auto (switch to light)');
109+});
110+
111+test('a page back from the back/forward cache shows the stored theme', () => {
112+ load();
113+ storage.set('theme', 'light');
114+ pageshow(false);
115+ assert.equal(root.getAttribute('data-theme'), null, 'a fresh load: store.js already applied it');
116+ pageshow(true);
117+ assert.deepEqual(state(), { attr: 'light', scheme: 'light', colors: ['#ffffff', '#ffffff'] });
118+ assert.equal(icon.className, 'ico i-sun');
107 });119 });
108 120
109 test('other clicks do nothing', () => {121 test('other clicks do nothing', () => {
@@ -123,7 +135,7 @@ test("another tab's change applies live", () => {
123 storage.delete('theme');135 storage.delete('theme');
124 storageEvent(null);136 storageEvent(null);
125 assert.equal(root.getAttribute('data-theme'), null, 'removed: back to auto');137 assert.equal(root.getAttribute('data-theme'), null, 'removed: back to auto');
126- assert.equal(button.getAttribute('aria-label'), 'theme: auto (click for light)');138+ assert.equal(button.getAttribute('aria-label'), 'theme: auto (switch to light)');
127 });139 });
128 140
129 test('without usable storage the choice holds for the page', () => {141 test('without usable storage the choice holds for the page', () => {
M internal/adapters/web/shell.templ +3 -3
@@ -13,8 +13,8 @@ templ Shell(l Layout, rail templ.Component) {
1313 <meta name="viewport" content="width=device-width, initial-scale=1"/>
1414 <meta name="color-scheme" content="light dark"/>
1515 <title>{ l.Title }</title>
16- <meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff"/>
17- <meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c"/>
16+ <meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff"/>
17+ <meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c"/>
1818 <meta name="apple-mobile-web-app-title" content="ermite"/>
1919 <link rel="icon" type="image/svg+xml" href={ templ.SafeURL(l.Assets.Icon) }/>
2020 <link rel="apple-touch-icon" href={ templ.SafeURL(l.Assets.AppleIcon) }/>
@@ -200,7 +200,7 @@ templ Footer(l Layout) {
200200 <span>ermite { l.Version }</span>
201201 <a href={ templ.SafeURL(l.SourceURL) } rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
202202 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?"><kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
203- <button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)"><span class="ico i-sun-moon" aria-hidden="true"></span></button>
203+ <button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)"><span class="ico i-sun-moon" aria-hidden="true"></span></button>
204204 </footer>
205205 }
206206
@@ -13,8 +13,8 @@ templ Shell(l Layout, rail templ.Component) {
13 <meta name="viewport" content="width=device-width, initial-scale=1"/>13 <meta name="viewport" content="width=device-width, initial-scale=1"/>
14 <meta name="color-scheme" content="light dark"/>14 <meta name="color-scheme" content="light dark"/>
15 <title>{ l.Title }</title>15 <title>{ l.Title }</title>
16- <meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff"/>16+ <meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff"/>
17- <meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c"/>17+ <meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c"/>
18 <meta name="apple-mobile-web-app-title" content="ermite"/>18 <meta name="apple-mobile-web-app-title" content="ermite"/>
19 <link rel="icon" type="image/svg+xml" href={ templ.SafeURL(l.Assets.Icon) }/>19 <link rel="icon" type="image/svg+xml" href={ templ.SafeURL(l.Assets.Icon) }/>
20 <link rel="apple-touch-icon" href={ templ.SafeURL(l.Assets.AppleIcon) }/>20 <link rel="apple-touch-icon" href={ templ.SafeURL(l.Assets.AppleIcon) }/>
@@ -200,7 +200,7 @@ templ Footer(l Layout) {
200 <span>ermite { l.Version }</span>200 <span>ermite { l.Version }</span>
201 <a href={ templ.SafeURL(l.SourceURL) } rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>201 <a href={ templ.SafeURL(l.SourceURL) } rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
202 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?"><kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>202 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?"><kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
203- <button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)"><span class="ico i-sun-moon" aria-hidden="true"></span></button>203+ <button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)"><span class="ico i-sun-moon" aria-hidden="true"></span></button>
204 </footer>204 </footer>
205 }205 }
206 206
M internal/adapters/web/shell_templ.go +2 -2 generated file: collapsed
M internal/adapters/web/static/js/ermite.js +8 -3
@@ -604,14 +604,16 @@
604604 // The theme switch: the footer button [data-theme-switch] cycles the theme
605605 // of ermiteTheme (store.js, which applies it before the first paint):
606606 // auto → light → dark → auto. Its icon, label and title say the current
607- // mode and what a click does. Another tab's change applies here at once.
607+ // mode and the next one; a click flashes the new mode in the hint (a live
608+ // region). Another tab's change applies here at once, and on a page back
609+ // from the back/forward cache.
608610 // Self-contained with store.js: jstest/theme.test.mjs evaluates this block.
609611 window.ermiteThemeSwitch = (() => {
610612 const T = window.ermiteTheme;
611613 const icons = { auto: 'i-sun-moon', light: 'i-sun', dark: 'i-moon' };
612614 function apply() {
613615 const mode = T.apply();
614- const label = `theme: ${mode} (click for ${T.next(mode)})`;
616+ const label = `theme: ${mode} (switch to ${T.next(mode)})`;
615617 for (const b of document.querySelectorAll('[data-theme-switch]')) {
616618 b.setAttribute('aria-label', label);
617619 b.setAttribute('title', label);
@@ -620,12 +622,15 @@
620622 }
621623 }
622624 function cycle() {
623- T.set(T.next(T.get()));
625+ const mode = T.next(T.get());
626+ T.set(mode);
624627 apply();
628+ window.ermite?.flash('theme: ' + mode);
625629 }
626630 addEventListener('click', (e) => {
627631 if (e.target.closest?.('[data-theme-switch]')) cycle();
628632 });
633+ addEventListener('pageshow', (e) => { if (e.persisted) apply(); });
629634 T.watch(apply);
630635 apply();
631636 return { cycle, apply };
@@ -604,14 +604,16 @@
604 // The theme switch: the footer button [data-theme-switch] cycles the theme604 // The theme switch: the footer button [data-theme-switch] cycles the theme
605 // of ermiteTheme (store.js, which applies it before the first paint):605 // of ermiteTheme (store.js, which applies it before the first paint):
606 // auto → light → dark → auto. Its icon, label and title say the current606 // auto → light → dark → auto. Its icon, label and title say the current
607- // mode and what a click does. Another tab's change applies here at once.607+ // mode and the next one; a click flashes the new mode in the hint (a live
608+ // region). Another tab's change applies here at once, and on a page back
609+ // from the back/forward cache.
608 // Self-contained with store.js: jstest/theme.test.mjs evaluates this block.610 // Self-contained with store.js: jstest/theme.test.mjs evaluates this block.
609 window.ermiteThemeSwitch = (() => {611 window.ermiteThemeSwitch = (() => {
610 const T = window.ermiteTheme;612 const T = window.ermiteTheme;
611 const icons = { auto: 'i-sun-moon', light: 'i-sun', dark: 'i-moon' };613 const icons = { auto: 'i-sun-moon', light: 'i-sun', dark: 'i-moon' };
612 function apply() {614 function apply() {
613 const mode = T.apply();615 const mode = T.apply();
614- const label = `theme: ${mode} (click for ${T.next(mode)})`;616+ const label = `theme: ${mode} (switch to ${T.next(mode)})`;
615 for (const b of document.querySelectorAll('[data-theme-switch]')) {617 for (const b of document.querySelectorAll('[data-theme-switch]')) {
616 b.setAttribute('aria-label', label);618 b.setAttribute('aria-label', label);
617 b.setAttribute('title', label);619 b.setAttribute('title', label);
@@ -620,12 +622,15 @@
620 }622 }
621 }623 }
622 function cycle() {624 function cycle() {
623- T.set(T.next(T.get()));625+ const mode = T.next(T.get());
626+ T.set(mode);
624 apply();627 apply();
628+ window.ermite?.flash('theme: ' + mode);
625 }629 }
626 addEventListener('click', (e) => {630 addEventListener('click', (e) => {
627 if (e.target.closest?.('[data-theme-switch]')) cycle();631 if (e.target.closest?.('[data-theme-switch]')) cycle();
628 });632 });
633+ addEventListener('pageshow', (e) => { if (e.persisted) apply(); });
629 T.watch(apply);634 T.watch(apply);
630 apply();635 apply();
631 return { cycle, apply };636 return { cycle, apply };
M internal/adapters/web/static/js/store.js +7 -7
@@ -107,16 +107,16 @@ window.ermiteTheme = (() => {
107107 const doc = globalThis.document;
108108 const root = doc?.documentElement;
109109 if (!root) return mode;
110- if (mode === 'auto') root.removeAttribute?.('data-theme');
111- else root.setAttribute?.('data-theme', mode);
112- doc.querySelector?.('meta[name="color-scheme"]')
110+ if (mode === 'auto') root.removeAttribute('data-theme');
111+ else root.setAttribute('data-theme', mode);
112+ doc.querySelector('meta[name="color-scheme"]')
113113 ?.setAttribute('content', mode === 'auto' ? 'light dark' : mode);
114114 // Each theme-color meta keeps its rendered colour in data-auto. Forced,
115- // both metas take the colour of the meta of that scheme, whatever the
116- // system scheme their media matches.
117- const metas = [...(doc.querySelectorAll?.('meta[name="theme-color"]') ?? [])];
115+ // both metas take the colour of the meta of that scheme (data-scheme),
116+ // whatever the system scheme their media matches.
117+ const metas = [...doc.querySelectorAll('meta[name="theme-color"]')];
118118 for (const m of metas) if (!m.hasAttribute('data-auto')) m.setAttribute('data-auto', m.getAttribute('content') ?? '');
119- const forced = metas.find((m) => (m.getAttribute('media') ?? '').includes('prefers-color-scheme: ' + mode));
119+ const forced = metas.find((m) => m.getAttribute('data-scheme') === mode);
120120 for (const m of metas) {
121121 m.setAttribute('content', mode === 'auto' || !forced ? m.getAttribute('data-auto') : forced.getAttribute('data-auto'));
122122 }
@@ -107,16 +107,16 @@ window.ermiteTheme = (() => {
107 const doc = globalThis.document;107 const doc = globalThis.document;
108 const root = doc?.documentElement;108 const root = doc?.documentElement;
109 if (!root) return mode;109 if (!root) return mode;
110- if (mode === 'auto') root.removeAttribute?.('data-theme');110+ if (mode === 'auto') root.removeAttribute('data-theme');
111- else root.setAttribute?.('data-theme', mode);111+ else root.setAttribute('data-theme', mode);
112- doc.querySelector?.('meta[name="color-scheme"]')112+ doc.querySelector('meta[name="color-scheme"]')
113 ?.setAttribute('content', mode === 'auto' ? 'light dark' : mode);113 ?.setAttribute('content', mode === 'auto' ? 'light dark' : mode);
114 // Each theme-color meta keeps its rendered colour in data-auto. Forced,114 // Each theme-color meta keeps its rendered colour in data-auto. Forced,
115- // both metas take the colour of the meta of that scheme, whatever the115+ // both metas take the colour of the meta of that scheme (data-scheme),
116- // system scheme their media matches.116+ // whatever the system scheme their media matches.
117- const metas = [...(doc.querySelectorAll?.('meta[name="theme-color"]') ?? [])];117+ const metas = [...doc.querySelectorAll('meta[name="theme-color"]')];
118 for (const m of metas) if (!m.hasAttribute('data-auto')) m.setAttribute('data-auto', m.getAttribute('content') ?? '');118 for (const m of metas) if (!m.hasAttribute('data-auto')) m.setAttribute('data-auto', m.getAttribute('content') ?? '');
119- const forced = metas.find((m) => (m.getAttribute('media') ?? '').includes('prefers-color-scheme: ' + mode));119+ const forced = metas.find((m) => m.getAttribute('data-scheme') === mode);
120 for (const m of metas) {120 for (const m of metas) {
121 m.setAttribute('content', mode === 'auto' || !forced ? m.getAttribute('data-auto') : forced.getAttribute('data-auto'));121 m.setAttribute('content', mode === 'auto' || !forced ? m.getAttribute('data-auto') : forced.getAttribute('data-auto'));
122 }122 }
M internal/app/testdata/web/blob-binary.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>data.bin · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -140,7 +140,7 @@
140140 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
141141 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
142142 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
143-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
143+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
144144 <span class="ico i-sun-moon" aria-hidden="true">
145145 </span>
146146 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>data.bin · files · example.test</title>7 <title>data.bin · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -140,7 +140,7 @@
140 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>140 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
141 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">141 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
142 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>142 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
143-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">143+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
144 <span class="ico i-sun-moon" aria-hidden="true">144 <span class="ico i-sun-moon" aria-hidden="true">
145 </span>145 </span>
146 </button>146 </button>
M internal/app/testdata/web/blob-code.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>main.go · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -210,7 +210,7 @@
210210 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
211211 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
212212 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
213-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
213+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
214214 <span class="ico i-sun-moon" aria-hidden="true">
215215 </span>
216216 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>main.go · files · example.test</title>7 <title>main.go · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -210,7 +210,7 @@
210 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>210 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
211 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">211 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
212 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>212 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
213-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">213+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
214 <span class="ico i-sun-moon" aria-hidden="true">214 <span class="ico i-sun-moon" aria-hidden="true">
215 </span>215 </span>
216 </button>216 </button>
M internal/app/testdata/web/blob-empty.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>empty.txt · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -140,7 +140,7 @@
140140 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
141141 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
142142 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
143-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
143+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
144144 <span class="ico i-sun-moon" aria-hidden="true">
145145 </span>
146146 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>empty.txt · files · example.test</title>7 <title>empty.txt · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -140,7 +140,7 @@
140 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>140 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
141 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">141 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
142 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>142 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
143-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">143+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
144 <span class="ico i-sun-moon" aria-hidden="true">144 <span class="ico i-sun-moon" aria-hidden="true">
145 </span>145 </span>
146 </button>146 </button>
M internal/app/testdata/web/blob-image.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>pic.png · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -142,7 +142,7 @@
142142 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
143143 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
144144 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
145-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
145+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
146146 <span class="ico i-sun-moon" aria-hidden="true">
147147 </span>
148148 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>pic.png · files · example.test</title>7 <title>pic.png · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -142,7 +142,7 @@
142 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>142 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
143 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">143 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
144 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>144 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
145-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">145+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
146 <span class="ico i-sun-moon" aria-hidden="true">146 <span class="ico i-sun-moon" aria-hidden="true">
147 </span>147 </span>
148 </button>148 </button>
M internal/app/testdata/web/blob-markdown.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>docs/guide.md · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -207,7 +207,7 @@
207207 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
208208 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
209209 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
210-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
210+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
211211 <span class="ico i-sun-moon" aria-hidden="true">
212212 </span>
213213 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>docs/guide.md · files · example.test</title>7 <title>docs/guide.md · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -207,7 +207,7 @@
207 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>207 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
208 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">208 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
209 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>209 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
210-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">210+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
211 <span class="ico i-sun-moon" aria-hidden="true">211 <span class="ico i-sun-moon" aria-hidden="true">
212 </span>212 </span>
213 </button>213 </button>
M internal/app/testdata/web/blob-svg.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>logo.svg · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -165,7 +165,7 @@
165165 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
166166 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
167167 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
168-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
168+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
169169 <span class="ico i-sun-moon" aria-hidden="true">
170170 </span>
171171 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>logo.svg · files · example.test</title>7 <title>logo.svg · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -165,7 +165,7 @@
165 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>165 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
166 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">166 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
167 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>167 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
168-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">168+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
169 <span class="ico i-sun-moon" aria-hidden="true">169 <span class="ico i-sun-moon" aria-hidden="true">
170 </span>170 </span>
171 </button>171 </button>
M internal/app/testdata/web/blob-text.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>notes.txt · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -160,7 +160,7 @@
160160 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
161161 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
162162 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
163-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
163+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
164164 <span class="ico i-sun-moon" aria-hidden="true">
165165 </span>
166166 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>notes.txt · files · example.test</title>7 <title>notes.txt · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -160,7 +160,7 @@
160 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>160 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
161 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">161 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
162 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>162 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
163-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">163+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
164 <span class="ico i-sun-moon" aria-hidden="true">164 <span class="ico i-sun-moon" aria-hidden="true">
165 </span>165 </span>
166 </button>166 </button>
M internal/app/testdata/web/blob-too-large.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>big.txt · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -140,7 +140,7 @@
140140 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
141141 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
142142 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
143-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
143+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
144144 <span class="ico i-sun-moon" aria-hidden="true">
145145 </span>
146146 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>big.txt · files · example.test</title>7 <title>big.txt · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -140,7 +140,7 @@
140 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>140 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
141 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">141 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
142 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>142 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
143-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">143+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
144 <span class="ico i-sun-moon" aria-hidden="true">144 <span class="ico i-sun-moon" aria-hidden="true">
145 </span>145 </span>
146 </button>146 </button>
M internal/app/testdata/web/blob-trojan.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>evil.go · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -207,7 +207,7 @@
207207 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
208208 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
209209 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
210-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
210+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
211211 <span class="ico i-sun-moon" aria-hidden="true">
212212 </span>
213213 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>evil.go · files · example.test</title>7 <title>evil.go · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -207,7 +207,7 @@
207 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>207 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
208 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">208 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
209 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>209 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
210-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">210+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
211 <span class="ico i-sun-moon" aria-hidden="true">211 <span class="ico i-sun-moon" aria-hidden="true">
212 </span>212 </span>
213 </button>213 </button>
M internal/app/testdata/web/commit-big.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>SHA7 add a very large file · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -192,7 +192,7 @@
192192 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
193193 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
194194 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
195-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
195+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
196196 <span class="ico i-sun-moon" aria-hidden="true">
197197 </span>
198198 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>SHA7 add a very large file · diffs · example.test</title>7 <title>SHA7 add a very large file · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -192,7 +192,7 @@
192 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>192 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
193 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">193 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
194 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>194 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
195-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">195+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
196 <span class="ico i-sun-moon" aria-hidden="true">196 <span class="ico i-sun-moon" aria-hidden="true">
197 </span>197 </span>
198 </button>198 </button>
M internal/app/testdata/web/commit-binary.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>SHA7 change a binary file · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -183,7 +183,7 @@
183183 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
184184 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
185185 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
186-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
186+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
187187 <span class="ico i-sun-moon" aria-hidden="true">
188188 </span>
189189 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>SHA7 change a binary file · diffs · example.test</title>7 <title>SHA7 change a binary file · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -183,7 +183,7 @@
183 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>183 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
184 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">184 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
185 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>185 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
186-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">186+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
187 <span class="ico i-sun-moon" aria-hidden="true">187 <span class="ico i-sun-moon" aria-hidden="true">
188 </span>188 </span>
189 </button>189 </button>
M internal/app/testdata/web/commit-merge.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>SHA7 merge the side branch · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -225,7 +225,7 @@
225225 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
226226 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
227227 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
228-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
228+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
229229 <span class="ico i-sun-moon" aria-hidden="true">
230230 </span>
231231 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>SHA7 merge the side branch · diffs · example.test</title>7 <title>SHA7 merge the side branch · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -225,7 +225,7 @@
225 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>225 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
226 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">226 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
227 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>227 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
228-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">228+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
229 <span class="ico i-sun-moon" aria-hidden="true">229 <span class="ico i-sun-moon" aria-hidden="true">
230 </span>230 </span>
231 </button>231 </button>
M internal/app/testdata/web/commit-modify-split.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>SHA7 modify a file and make a script executable · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -348,7 +348,7 @@ And &lt;b&gt;html&lt;/b&gt; &amp; &#34;quotes&#34;.</pre>
348348 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
349349 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
350350 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
351-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
351+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
352352 <span class="ico i-sun-moon" aria-hidden="true">
353353 </span>
354354 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>SHA7 modify a file and make a script executable · diffs · example.test</title>7 <title>SHA7 modify a file and make a script executable · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -348,7 +348,7 @@ And &lt;b&gt;html&lt;/b&gt; &amp; &#34;quotes&#34;.</pre>
348 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>348 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
349 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">349 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
350 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>350 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
351-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">351+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
352 <span class="ico i-sun-moon" aria-hidden="true">352 <span class="ico i-sun-moon" aria-hidden="true">
353 </span>353 </span>
354 </button>354 </button>
M internal/app/testdata/web/commit-modify.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>SHA7 modify a file and make a script executable · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -348,7 +348,7 @@ And &lt;b&gt;html&lt;/b&gt; &amp; &#34;quotes&#34;.</pre>
348348 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
349349 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
350350 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
351-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
351+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
352352 <span class="ico i-sun-moon" aria-hidden="true">
353353 </span>
354354 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>SHA7 modify a file and make a script executable · diffs · example.test</title>7 <title>SHA7 modify a file and make a script executable · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -348,7 +348,7 @@ And &lt;b&gt;html&lt;/b&gt; &amp; &#34;quotes&#34;.</pre>
348 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>348 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
349 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">349 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
350 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>350 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
351-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">351+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
352 <span class="ico i-sun-moon" aria-hidden="true">352 <span class="ico i-sun-moon" aria-hidden="true">
353 </span>353 </span>
354 </button>354 </button>
M internal/app/testdata/web/commit-rename.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>SHA7 rename a file and delete another · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -252,7 +252,7 @@
252252 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
253253 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
254254 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
255-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
255+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
256256 <span class="ico i-sun-moon" aria-hidden="true">
257257 </span>
258258 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>SHA7 rename a file and delete another · diffs · example.test</title>7 <title>SHA7 rename a file and delete another · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -252,7 +252,7 @@
252 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>252 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
253 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">253 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
254 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>254 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
255-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">255+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
256 <span class="ico i-sun-moon" aria-hidden="true">256 <span class="ico i-sun-moon" aria-hidden="true">
257 </span>257 </span>
258 </button>258 </button>
M internal/app/testdata/web/commit-root.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>SHA7 root: the first files · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -571,7 +571,7 @@
571571 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
572572 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
573573 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
574-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
574+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
575575 <span class="ico i-sun-moon" aria-hidden="true">
576576 </span>
577577 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>SHA7 root: the first files · diffs · example.test</title>7 <title>SHA7 root: the first files · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -571,7 +571,7 @@
571 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>571 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
572 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">572 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
573 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>573 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
574-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">574+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
575 <span class="ico i-sun-moon" aria-hidden="true">575 <span class="ico i-sun-moon" aria-hidden="true">
576 </span>576 </span>
577 </button>577 </button>
M internal/app/testdata/web/commit-trojan.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>SHA7 add evil.go · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -400,7 +400,7 @@
400400 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
401401 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
402402 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
403-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
403+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
404404 <span class="ico i-sun-moon" aria-hidden="true">
405405 </span>
406406 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>SHA7 add evil.go · diffs · example.test</title>7 <title>SHA7 add evil.go · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -400,7 +400,7 @@
400 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>400 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
401 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">401 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
402 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>402 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
403-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">403+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
404 <span class="ico i-sun-moon" aria-hidden="true">404 <span class="ico i-sun-moon" aria-hidden="true">
405 </span>405 </span>
406 </button>406 </button>
M internal/app/testdata/web/commits-page2.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>commits · long · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -167,7 +167,7 @@
167167 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
168168 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
169169 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
170-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
170+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
171171 <span class="ico i-sun-moon" aria-hidden="true">
172172 </span>
173173 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>commits · long · example.test</title>7 <title>commits · long · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -167,7 +167,7 @@
167 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>167 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
168 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">168 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
169 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>169 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
170-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">170+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
171 <span class="ico i-sun-moon" aria-hidden="true">171 <span class="ico i-sun-moon" aria-hidden="true">
172 </span>172 </span>
173 </button>173 </button>
M internal/app/testdata/web/commits-path.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>history of a.txt · long · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -182,7 +182,7 @@
182182 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
183183 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
184184 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
185-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
185+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
186186 <span class="ico i-sun-moon" aria-hidden="true">
187187 </span>
188188 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>history of a.txt · long · example.test</title>7 <title>history of a.txt · long · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -182,7 +182,7 @@
182 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>182 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
183 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">183 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
184 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>184 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
185-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">185+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
186 <span class="ico i-sun-moon" aria-hidden="true">186 <span class="ico i-sun-moon" aria-hidden="true">
187 </span>187 </span>
188 </button>188 </button>
M internal/app/testdata/web/commits-root.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>commits · long · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -964,7 +964,7 @@
964964 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
965965 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
966966 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
967-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
967+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
968968 <span class="ico i-sun-moon" aria-hidden="true">
969969 </span>
970970 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>commits · long · example.test</title>7 <title>commits · long · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -964,7 +964,7 @@
964 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>964 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
965 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">965 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
966 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>966 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
967-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">967+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
968 <span class="ico i-sun-moon" aria-hidden="true">968 <span class="ico i-sun-moon" aria-hidden="true">
969 </span>969 </span>
970 </button>970 </button>
M internal/app/testdata/web/commits-small.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>commits · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -309,7 +309,7 @@
309309 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
310310 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
311311 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
312-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
312+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
313313 <span class="ico i-sun-moon" aria-hidden="true">
314314 </span>
315315 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>commits · diffs · example.test</title>7 <title>commits · diffs · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -309,7 +309,7 @@
309 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>309 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
310 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">310 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
311 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>311 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
312-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">312+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
313 <span class="ico i-sun-moon" aria-hidden="true">313 <span class="ico i-sun-moon" aria-hidden="true">
314 </span>314 </span>
315 </button>315 </button>
M internal/app/testdata/web/empty.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>quiet · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -85,7 +85,7 @@
8585 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
8686 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
8787 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
88-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
88+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
8989 <span class="ico i-sun-moon" aria-hidden="true">
9090 </span>
9191 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>quiet · example.test</title>7 <title>quiet · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -85,7 +85,7 @@
85 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>85 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
86 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">86 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
87 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>87 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
88-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">88+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
89 <span class="ico i-sun-moon" aria-hidden="true">89 <span class="ico i-sun-moon" aria-hidden="true">
90 </span>90 </span>
91 </button>91 </button>
M internal/app/testdata/web/home.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -181,7 +181,7 @@
181181 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
182182 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
183183 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
184-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
184+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
185185 <span class="ico i-sun-moon" aria-hidden="true">
186186 </span>
187187 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>example.test</title>7 <title>example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -181,7 +181,7 @@
181 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>181 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
182 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">182 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
183 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>183 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
184-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">184+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
185 <span class="ico i-sun-moon" aria-hidden="true">185 <span class="ico i-sun-moon" aria-hidden="true">
186 </span>186 </span>
187 </button>187 </button>
M internal/app/testdata/web/not-found-page.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>404 · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -74,7 +74,7 @@
7474 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
7575 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
7676 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
77-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
77+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
7878 <span class="ico i-sun-moon" aria-hidden="true">
7979 </span>
8080 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>404 · example.test</title>7 <title>404 · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -74,7 +74,7 @@
74 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>74 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
75 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">75 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
76 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>76 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
77-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">77+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
78 <span class="ico i-sun-moon" aria-hidden="true">78 <span class="ico i-sun-moon" aria-hidden="true">
79 </span>79 </span>
80 </button>80 </button>
M internal/app/testdata/web/not-found.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>404 · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -74,7 +74,7 @@
7474 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
7575 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
7676 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
77-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
77+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
7878 <span class="ico i-sun-moon" aria-hidden="true">
7979 </span>
8080 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>404 · example.test</title>7 <title>404 · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -74,7 +74,7 @@
74 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>74 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
75 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">75 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
76 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>76 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
77-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">77+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
78 <span class="ico i-sun-moon" aria-hidden="true">78 <span class="ico i-sun-moon" aria-hidden="true">
79 </span>79 </span>
80 </button>80 </button>
M internal/app/testdata/web/refs.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>refs · demo · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -191,7 +191,7 @@
191191 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
192192 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
193193 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
194-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
194+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
195195 <span class="ico i-sun-moon" aria-hidden="true">
196196 </span>
197197 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>refs · demo · example.test</title>7 <title>refs · demo · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -191,7 +191,7 @@
191 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>191 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
192 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">192 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
193 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>193 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
194-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">194+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
195 <span class="ico i-sun-moon" aria-hidden="true">195 <span class="ico i-sun-moon" aria-hidden="true">
196 </span>196 </span>
197 </button>197 </button>
M internal/app/testdata/web/summary.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>demo · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -217,7 +217,7 @@
217217 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
218218 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
219219 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
220-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
220+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
221221 <span class="ico i-sun-moon" aria-hidden="true">
222222 </span>
223223 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>demo · example.test</title>7 <title>demo · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -217,7 +217,7 @@
217 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>217 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
218 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">218 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
219 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>219 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
220-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">220+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
221 <span class="ico i-sun-moon" aria-hidden="true">221 <span class="ico i-sun-moon" aria-hidden="true">
222 </span>222 </span>
223 </button>223 </button>
M internal/app/testdata/web/tree-nested.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>src/lib · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -155,7 +155,7 @@
155155 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
156156 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
157157 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
158-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
158+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
159159 <span class="ico i-sun-moon" aria-hidden="true">
160160 </span>
161161 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>src/lib · files · example.test</title>7 <title>src/lib · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -155,7 +155,7 @@
155 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>155 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
156 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">156 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
157 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>157 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
158-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">158+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
159 <span class="ico i-sun-moon" aria-hidden="true">159 <span class="ico i-sun-moon" aria-hidden="true">
160 </span>160 </span>
161 </button>161 </button>
M internal/app/testdata/web/tree-root.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>tree · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -376,7 +376,7 @@
376376 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
377377 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
378378 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
379-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
379+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
380380 <span class="ico i-sun-moon" aria-hidden="true">
381381 </span>
382382 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>tree · files · example.test</title>7 <title>tree · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -376,7 +376,7 @@
376 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>376 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
377 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">377 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
378 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>378 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
379-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">379+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
380 <span class="ico i-sun-moon" aria-hidden="true">380 <span class="ico i-sun-moon" aria-hidden="true">
381 </span>381 </span>
382 </button>382 </button>
M internal/app/testdata/web/tree-slash-ref.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>x · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -152,7 +152,7 @@
152152 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
153153 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
154154 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
155-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
155+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
156156 <span class="ico i-sun-moon" aria-hidden="true">
157157 </span>
158158 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>x · files · example.test</title>7 <title>x · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -152,7 +152,7 @@
152 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>152 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
153 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">153 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
154 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>154 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
155-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">155+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
156 <span class="ico i-sun-moon" aria-hidden="true">156 <span class="ico i-sun-moon" aria-hidden="true">
157 </span>157 </span>
158 </button>158 </button>
M internal/app/testdata/web/tree-subdir.html +3 -3
@@ -5,8 +5,8 @@
55 <meta name="viewport" content="width=device-width, initial-scale=1">
66 <meta name="color-scheme" content="light dark">
77 <title>docs · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">
8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
1010 <meta name="apple-mobile-web-app-title" content="ermite">
1111 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
1212 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -168,7 +168,7 @@
168168 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
169169 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
170170 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
171-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">
171+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
172172 <span class="ico i-sun-moon" aria-hidden="true">
173173 </span>
174174 </button>
@@ -5,8 +5,8 @@
5 <meta name="viewport" content="width=device-width, initial-scale=1">5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="color-scheme" content="light dark">6 <meta name="color-scheme" content="light dark">
7 <title>docs · files · example.test</title>7 <title>docs · files · example.test</title>
8-<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">8+<meta name="theme-color" data-scheme="light" media="(prefers-color-scheme: light)" content="#ffffff">
9-<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0c0c0c">9+<meta name="theme-color" data-scheme="dark" media="(prefers-color-scheme: dark)" content="#0c0c0c">
10 <meta name="apple-mobile-web-app-title" content="ermite">10 <meta name="apple-mobile-web-app-title" content="ermite">
11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">11 <link rel="icon" type="image/svg+xml" href="/-/static/img/icon.HASH.svg">
12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">12 <link rel="apple-touch-icon" href="/-/static/app/apple-touch-icon.HASH.png">
@@ -168,7 +168,7 @@
168 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>168 <a href="http://example.test/ermite" rel="noopener" title="source of this version (AGPL-3.0-or-later)">source</a>
169 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">169 <button type="button" class="foot-keys" data-js data-fire="help" aria-haspopup="dialog" aria-controls="panel-help" aria-keyshortcuts="?">
170 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>170 <kbd aria-hidden="true">?</kbd> keyboard shortcuts</button>
171-<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (click for light)" title="theme: auto (click for light)">171+<button type="button" class="foot-theme" data-js data-theme-switch aria-label="theme: auto (switch to light)" title="theme: auto (switch to light)">
172 <span class="ico i-sun-moon" aria-hidden="true">172 <span class="ico i-sun-moon" aria-hidden="true">
173 </span>173 </span>
174 </button>174 </button>

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 2

Tags 42

↑↓ moveenter openesc close