feat(copy): PR 1.1 — research-grounded copy + prompt corrections
Add cue-anchored "When [cue], [action]" framing to the task-decomposition prompt where natural cues are present (Gollwitzer-style implementation intentions, d=0.65 effect size). Soften Bionic Reading and accessibility- font copy to honest preference framing per the v3 audit (Strukelj 2024; Doyon n=2,074). Update timer nudge from "Still on that timer?" (which read as judgmental) to "Timer's still running." Replace stale Tasks page header copy promising automatic extraction. Audio envelopes (focusTimer 20ms ramp, sounds.ts 10ms attack) verified correct per memo §B; no code change needed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,12 @@
|
||||
pub const DECOMPOSE_TASK_SYSTEM: &str = "\
|
||||
You are a task-decomposition assistant. Given a task description, produce \
|
||||
between 3 and 7 concrete, physical micro-steps. Each step must be a short \
|
||||
imperative sentence, actionable today, with no commentary. Output ONLY a \
|
||||
imperative sentence, actionable today, with no commentary. Where the task \
|
||||
description contains a natural cue (a place, a time, a preceding action, an \
|
||||
object the user will already be holding), phrase that step as \
|
||||
\"When [cue], [action]\" so the cue triggers the action. Use this framing \
|
||||
only where the cue is genuinely present in the input — do not invent cues. \
|
||||
Steps without a natural cue stay as plain imperatives. Output ONLY a \
|
||||
JSON array of strings.";
|
||||
|
||||
// Phase 9 content-tag extraction. The model emits a {topic, intent}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
- **Fonts:** Lexend or Atkinson Hyperlegible Next as defaults. Clean sans-serif with large x-height. OpenDyslexic available as a user option but NOT recommended as default — peer-reviewed evidence (Rello & Baeza-Yates 2016; Kuster et al. 2018) shows it does not outperform standard sans-serif fonts. **Spacing is the active typographic ingredient, not letterform** (see Appendix A3). Italic text must never be used for extended reading — it significantly impairs reading in neurodivergent populations.
|
||||
- **Minimum 16px size, 1.5x line spacing, left-aligned text.** Maximum 75-character line width to prevent line-skipping fatigue.
|
||||
- **Variable font support.** Where possible, implement adjustable typographic axes (spacing, weight, width) so users can dynamically adapt typography to their own fluctuating visual-perceptual thresholds — not just choose between static font options.
|
||||
- **Bionic Reading toggle.** Optional mode that bolds the first few letters of each word to create artificial fixation points. Helps ADHD brains maintain reading momentum and prevents eyes from skipping lines. Increasingly popular accessibility feature — low implementation cost, high perceived value. Should be a toggle in settings, not default.
|
||||
- **Bionic Reading toggle.** Optional mode that bolds the first few letters of each word. Independent studies (Strukelj 2024; *Attention, Perception & Psychophysics* 2025; Doyon n=2,074) find no comprehension benefit and small reading-speed *costs* on average — but individual experience varies, and some users genuinely find it more comfortable. Offer as an honest preference toggle ("some people find this helps; the evidence is mixed"), default off, never marketed as "proven for ADHD/dyslexia". See `research-grounded-design-principles.md` §7.
|
||||
- **Rationale:** Decoding text consumes high metabolic energy for dyslexic or ADHD brains. Visual crowding affects both peripheral AND central (foveal) vision in these populations. Every typographic decision should reduce that metabolic cost.
|
||||
|
||||
#### Colour system
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
</button>
|
||||
{/each}
|
||||
</div>
|
||||
<p class="text-[11px] text-text-tertiary leading-relaxed">Pick whichever feels easier to read. Evidence on dyslexia-specific fonts is contested — this is preference, not prescription.</p>
|
||||
</div>
|
||||
|
||||
<!-- Font size -->
|
||||
@@ -102,7 +103,7 @@
|
||||
</div>
|
||||
|
||||
<!-- Bionic reading -->
|
||||
<Toggle label="Bionic reading" description="Bold the first few characters of each word for faster scanning" bind:checked={bionicChecked} />
|
||||
<Toggle label="Bionic reading" description="Bolds the first few characters of each word. Some people find it helps; the evidence is mixed. Try it and keep it on if it feels better." bind:checked={bionicChecked} />
|
||||
|
||||
<!-- Reduce motion -->
|
||||
<div class="flex flex-col gap-2">
|
||||
|
||||
@@ -312,7 +312,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="text-[11px] text-text-tertiary mt-1">Add tasks manually. Automatic extraction from your transcripts is coming.</p>
|
||||
<p class="text-[11px] text-text-tertiary mt-1">Add tasks manually, or extract them from a transcript in Dictation.</p>
|
||||
</div>
|
||||
<div class="flex-1"></div>
|
||||
|
||||
|
||||
@@ -160,7 +160,7 @@ function checkInactivityWithActiveTimer(now: number) {
|
||||
if (now - blurredAt < INACTIVITY_TIMER_THRESHOLD_MS) return;
|
||||
timerNudgeFiredThisSession = true;
|
||||
void deliver(
|
||||
"Still on that timer?",
|
||||
"Timer's still running.",
|
||||
"It's been ticking while you've been away. Pick up where you left off, or stop it.",
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user