diff --git a/src/components/CommandPalette.astro b/src/components/CommandPalette.astro
index 889e6a0..4e3a91a 100644
--- a/src/components/CommandPalette.astro
+++ b/src/components/CommandPalette.astro
@@ -39,6 +39,10 @@ const navItems = [
{t('cmd_group_actions', locale)}
+ -
+ {t('cmd_reader', locale)}
+ r
+
-
{t('cmd_toggle_theme', locale)}
t
@@ -134,6 +138,12 @@ const navItems = [
}
switch (item.dataset.cmd) {
// 复用 Header 主题钮的现成切换(同一 localStorage key),不另起第二套实现
+ case 'reader': {
+ const root = document.documentElement;
+ root.classList.toggle('reader');
+ localStorage.setItem('reader', root.classList.contains('reader') ? '1' : '0');
+ break;
+ }
case 'theme': {
const btn = document.querySelector('[data-theme-toggle]') as HTMLElement | null;
if (btn) {
diff --git a/src/components/ThemeScript.astro b/src/components/ThemeScript.astro
index 6d2d56f..7493ac2 100644
--- a/src/components/ThemeScript.astro
+++ b/src/components/ThemeScript.astro
@@ -13,5 +13,7 @@
? saved
: (matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
document.documentElement.dataset.theme = theme;
- })();
+ })();
+ // reader 模式预绘(5f T4):与主题同点位读取,避免可交互前闪装饰
+ if (localStorage.getItem('reader') === '1') document.documentElement.classList.add('reader');
diff --git a/src/components/geek/Keyboard.astro b/src/components/geek/Keyboard.astro
index 9b92194..f0d8b91 100644
--- a/src/components/geek/Keyboard.astro
+++ b/src/components/geek/Keyboard.astro
@@ -65,6 +65,13 @@ const routes: Record = {
if (inField() || e.metaKey || e.ctrlKey || e.altKey) return;
if (e.key === 't') { toggleTheme(); return; }
+ if (e.key === 'r') {
+ // reader 纯文本模式(5f T4):与命令面板/持久化同源
+ const root = document.documentElement;
+ root.classList.toggle('reader');
+ localStorage.setItem('reader', root.classList.contains('reader') ? '1' : '0');
+ return;
+ }
if (e.key === '?') {
(document.getElementById('kbd-help') as HTMLDialogElement | null)?.showModal();
return;
diff --git a/src/components/pages/GalleryPage.astro b/src/components/pages/GalleryPage.astro
index 076381c..ed6940c 100644
--- a/src/components/pages/GalleryPage.astro
+++ b/src/components/pages/GalleryPage.astro
@@ -429,3 +429,12 @@ const first = cards[0];
.lb-meta { order: 3; flex-basis: 100%; }
}
+
+
diff --git a/src/i18n/ui.ts b/src/i18n/ui.ts
index 909adb2..5f9ba2a 100644
--- a/src/i18n/ui.ts
+++ b/src/i18n/ui.ts
@@ -10,6 +10,7 @@ const dict = {
nav_posts: { zh: '文章', en: 'Posts' },
nav_gallery: { zh: '图库', en: 'Gallery' },
nav_about: { zh: '关于', en: 'About' },
+ cmd_reader: { zh: '阅读模式(纯文本)', en: 'Reader mode (plain text)' },
nav_opensource: { zh: '开源', en: 'Projects' }, // en 用短词:390-430px 尾部主题钮免内滚(用户拍板)
nav_books: { zh: '书架', en: 'Books' },
kbd_gs_books: { zh: '书架', en: 'Books' },
diff --git a/src/pages/index.astro b/src/pages/index.astro
index a1167ca..b506092 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -19,7 +19,8 @@ const heartbeat = await fetchHeartbeat();
-
+
写作者 · 读者 · 快门按压者,拥抱开源。
+