summaryrefslogtreecommitdiff
path: root/apps/web/app/reader/settings/_components
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-02-07 05:45:41 -0800
committerFuwn <[email protected]>2026-02-07 05:45:41 -0800
commit6368c74432ced80e0ac6ad2c5fe9c2495d1bc6ae (patch)
treec8b583a21bd489170b8f664e8c028fbbd9d95d49 /apps/web/app/reader/settings/_components
parentfix: resolve 6 pre-ship audit bugs (diff)
downloadasa.news-6368c74432ced80e0ac6ad2c5fe9c2495d1bc6ae.tar.xz
asa.news-6368c74432ced80e0ac6ad2c5fe9c2495d1bc6ae.zip
feat: resolve 7 pre-ship QoL items
- Space/Shift+Space: page down/up in detail panel (80% scroll) - Content font: sans-serif/serif/monospace selector in appearance settings, applied to article content in detail panel - Accessibility: entry-list-item uses button instead of div, folder toggles have aria-expanded, shortcut keys have aria-labels - Share notes: replaced window.prompt with proper modal dialog matching existing UI patterns - Worker .env.example: template with all 10 environment variables - Worker poisoned messages: archive unprocessable queue messages instead of leaving them stuck forever - Worker pool Submit: check return value, reschedule dropped feeds 30s into the future, log warnings for rejected submissions
Diffstat (limited to 'apps/web/app/reader/settings/_components')
-rw-r--r--apps/web/app/reader/settings/_components/appearance-settings.tsx23
1 files changed, 23 insertions, 0 deletions
diff --git a/apps/web/app/reader/settings/_components/appearance-settings.tsx b/apps/web/app/reader/settings/_components/appearance-settings.tsx
index 6c04f00..508051f 100644
--- a/apps/web/app/reader/settings/_components/appearance-settings.tsx
+++ b/apps/web/app/reader/settings/_components/appearance-settings.tsx
@@ -31,6 +31,10 @@ export function AppearanceSettings() {
)
const fontSize = useUserInterfaceStore((state) => state.fontSize)
const setFontSize = useUserInterfaceStore((state) => state.setFontSize)
+ const contentFont = useUserInterfaceStore((state) => state.contentFont)
+ const setContentFont = useUserInterfaceStore(
+ (state) => state.setContentFont
+ )
const timeDisplayFormat = useUserInterfaceStore(
(state) => state.timeDisplayFormat
)
@@ -155,6 +159,25 @@ export function AppearanceSettings() {
</select>
</div>
<div className="mb-6">
+ <h3 className="mb-2 text-text-primary">content font</h3>
+ <p className="mb-3 text-text-dim">
+ controls the typeface used for article content
+ </p>
+ <select
+ value={contentFont}
+ onChange={(event) =>
+ setContentFont(
+ event.target.value as "sans-serif" | "serif" | "monospace"
+ )
+ }
+ className="border border-border bg-background-primary px-3 py-2 text-text-primary outline-none focus:border-text-dim"
+ >
+ <option value="sans-serif">sans-serif</option>
+ <option value="serif">serif</option>
+ <option value="monospace">monospace</option>
+ </select>
+ </div>
+ <div className="mb-6">
<h3 className="mb-2 text-text-primary">time display</h3>
<p className="mb-3 text-text-dim">
choose between relative timestamps (e.g. &ldquo;2h ago&rdquo;) or