Fix L119/L151/L153: empty-state copy, range dashes, dismiss aria-labels
L119: Standardized empty-state copy on the "No X yet." pattern. Terminal
"Output will appear here." -> "No output yet."; Diagnostics
"No errors logged." -> "No errors yet."
L151: Range-dash convention is ASCII hyphen everywhere. Changed the lone
en-dash prose range ("2-3 is a good balance") to a hyphen, matching the
time-range placeholders (1:30-2:00).
L153: The three "Dismiss" close buttons now name what they dismiss --
"Dismiss suggested link" (DownloadBar + Library suggestion banners) and
"Dismiss duplicate warning" (DownloadBar dup row).
L95 left open: the Cookies-card "sign in"/"sign-in" usage is already correct
English (verb vs modifier); no change warranted.
typecheck + 242 tests + eslint green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+3
-3
@@ -607,7 +607,7 @@ token system + shared primitives (UI/SIMP — high value, larger effort) · i18n
|
||||
- [ ] **L117 — Terminal/error-log "empty" aren't centered blocks** like the other empty states (inline text instead).
|
||||
- [ ] **L118 — Cross-component focus via hardcoded id.** App focuses the URL field with
|
||||
`document.getElementById('aerofetch-url')` — brittle coupling into DownloadBar's markup.
|
||||
- [ ] **L119 — "No items" copy varies** — "No … yet" (most) vs "Output will appear here." (Terminal) vs "No errors logged." (Diagnostics).
|
||||
- [x] **L119 — "No items" copy varies** — "No … yet" (most) vs "Output will appear here." (Terminal) vs "No errors logged." (Diagnostics).
|
||||
- [ ] **L120 — Fluent `Card` vs hand-styled `div` cards.** Only Settings/Onboarding use `<Card>`; every
|
||||
other card surface is a bespoke styled `<div>`.
|
||||
- [ ] **L121 — Raw scrim literal.** CommandPalette backdrop is `rgba(0,0,0,0.32)` (the only raw rgba in
|
||||
@@ -677,11 +677,11 @@ token system + shared primitives (UI/SIMP — high value, larger effort) · i18n
|
||||
in the tray" is a three-sentence paragraph with a parenthetical. Normalize hint length/voice.
|
||||
- [x] **L150 — "PO token" capitalization varies** — `PO Token` (ipc.ts/ROADMAP) vs `PO token` /
|
||||
`Proof-of-Origin token` (SettingsView). Pick one.
|
||||
- [ ] **L151 — Mixed range dashes.** En-dash in prose ("2–3 is a good balance") vs hyphen in time-range
|
||||
- [x] **L151 — Mixed range dashes.** En-dash in prose ("2–3 is a good balance") vs hyphen in time-range
|
||||
placeholders ("1:30-2:00"). Choose one convention.
|
||||
- [ ] **L152 — Search-field sizing differs per screen.** History `minWidth 180 / maxWidth 320`, Settings
|
||||
inline `width: 100%`, DownloadBar `flexGrow`. No shared search-input width.
|
||||
- [ ] **L153 — Generic "Dismiss" aria-labels.** Three close buttons (DownloadBar suggestion + dup,
|
||||
- [x] **L153 — Generic "Dismiss" aria-labels.** Three close buttons (DownloadBar suggestion + dup,
|
||||
Library suggestion) all read just "Dismiss" — ambiguous to a screen reader. Name what's dismissed.
|
||||
- [x] **L154 — Instructional text in an aria-label.** Sidebar theme-cycle button is
|
||||
`aria-label="Theme: Dark. Click to change."` — "Click to change" is UI instruction, not a name.
|
||||
|
||||
@@ -588,7 +588,7 @@ export function DownloadBar(): React.JSX.Element {
|
||||
appearance="subtle"
|
||||
icon={<DismissRegular />}
|
||||
onClick={dismissSuggestion}
|
||||
aria-label="Dismiss"
|
||||
aria-label="Dismiss suggested link"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
@@ -605,7 +605,7 @@ export function DownloadBar(): React.JSX.Element {
|
||||
appearance="subtle"
|
||||
icon={<DismissRegular />}
|
||||
onClick={() => setDup(null)}
|
||||
aria-label="Dismiss"
|
||||
aria-label="Dismiss duplicate warning"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -541,7 +541,7 @@ export function LibraryView(): React.JSX.Element {
|
||||
appearance="subtle"
|
||||
icon={<DismissRegular />}
|
||||
onClick={clip.dismiss}
|
||||
aria-label="Dismiss"
|
||||
aria-label="Dismiss suggested link"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -536,7 +536,7 @@ export function SettingsView(): React.JSX.Element {
|
||||
|
||||
<Field
|
||||
label="Maximum simultaneous downloads"
|
||||
hint="How many downloads run at once. 2–3 is a good balance."
|
||||
hint="How many downloads run at once. 2-3 is a good balance."
|
||||
>
|
||||
<SpinButton
|
||||
value={maxConcurrent}
|
||||
@@ -1002,7 +1002,7 @@ export function SettingsView(): React.JSX.Element {
|
||||
</div>
|
||||
|
||||
{errorEntries.length === 0 ? (
|
||||
<Caption1 className={styles.hint}>No errors logged.</Caption1>
|
||||
<Caption1 className={styles.hint}>No errors yet.</Caption1>
|
||||
) : (
|
||||
<div className={styles.errorList}>
|
||||
{errorEntries.slice(0, 20).map((e) => (
|
||||
|
||||
@@ -205,7 +205,7 @@ export function TerminalView(): React.JSX.Element {
|
||||
|
||||
<pre className={styles.log} ref={logRef}>
|
||||
{lines.length === 0 ? (
|
||||
<span className={styles.empty}>Output will appear here.</span>
|
||||
<span className={styles.empty}>No output yet.</span>
|
||||
) : (
|
||||
lines.map((l) => (
|
||||
<div key={l.id} className={lineClass(l.kind)}>
|
||||
|
||||
Reference in New Issue
Block a user