From 360e5457dcf9a72a14916bfb4d49e7c06646b809 Mon Sep 17 00:00:00 2001 From: Jake Date: Thu, 7 May 2026 09:16:37 +0100 Subject: [PATCH] fix(copy): replace em-dashes in user-facing strings with commas/periods MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per the project's no-dashes feedback rule (see CORBEL-Main memory feedback_no_dashes.md), em-dashes in user-visible copy are the single biggest "AI wrote this" surface tell. Forty-two occurrences across ten files: ten in SettingsPage's group descriptions and option labels (audio device picker, vocabulary help, prompt placeholders, model descriptions), four in FirstRunPage's setup steps, three in DictationPage / FilesPage / Energy chip tooltips, plus the privacy bullets ("100% offline, no Python required, no cloud, no accounts, no telemetry"), the rejection toast, MicroSteps thumb labels, and the shutdown ritual prompts. Replacement rule: subordinate-clause em-dashes followed by lowercase become commas; sentence-break em-dashes followed by capitals become full stops. Code comments left intact. One non-em-dash regression caught while reviewing: TasksPage's energy filter "no selection" placeholder showed "—" as a literal label; the script changed it to a comma which read as a UI bug. Replaced with "Any" instead. --- src/lib/components/EnergyChip.svelte | 2 +- src/lib/components/HotkeyRecorder.svelte | 2 +- src/lib/components/MicroSteps.svelte | 10 +++--- src/lib/pages/DictationPage.svelte | 2 +- src/lib/pages/FilesPage.svelte | 2 +- src/lib/pages/FirstRunPage.svelte | 8 ++--- src/lib/pages/SettingsPage.svelte | 42 ++++++++++++------------ src/lib/pages/ShutdownRitualPage.svelte | 4 +-- src/lib/pages/TasksPage.svelte | 4 +-- src/routes/+layout.svelte | 2 +- 10 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/lib/components/EnergyChip.svelte b/src/lib/components/EnergyChip.svelte index 2bda1ad..d372ba7 100644 --- a/src/lib/components/EnergyChip.svelte +++ b/src/lib/components/EnergyChip.svelte @@ -54,7 +54,7 @@ let tooltip = $derived( energy === null ? "Tag energy (click to set)" - : `Energy: ${labelFor(energy)} — click to change` + : `Energy: ${labelFor(energy)}, click to change` ); // Icon dimensions. `md` is the one used on the Tasks-page main rows; diff --git a/src/lib/components/HotkeyRecorder.svelte b/src/lib/components/HotkeyRecorder.svelte index 271b487..24eec34 100644 --- a/src/lib/components/HotkeyRecorder.svelte +++ b/src/lib/components/HotkeyRecorder.svelte @@ -211,7 +211,7 @@ {#if rejectionReason} - Couldn't bind that combo — {rejectionReason}. + Couldn't bind that combo. {rejectionReason}. {/if} diff --git a/src/lib/components/MicroSteps.svelte b/src/lib/components/MicroSteps.svelte index 46b9954..35b106a 100644 --- a/src/lib/components/MicroSteps.svelte +++ b/src/lib/components/MicroSteps.svelte @@ -263,8 +263,8 @@ class="opacity-0 group-hover:opacity-100 p-0.5 text-text-tertiary hover:text-success {rating[step.id] === 1 ? '!opacity-100 text-success' : ''}" onclick={() => recordThumb(step, 1)} - aria-label={rating[step.id] === 1 ? 'Remove thumbs up' : 'Thumbs up — this is a good step'} - title="Thumbs up — train the model on this style" + aria-label={rating[step.id] === 1 ? 'Remove thumbs up' : 'Thumbs up, this is a good step'} + title="Thumbs up, train the model on this style" style={reduceMotion ? '' : 'transition: opacity var(--duration-ui), color var(--duration-ui)'} >