You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add 6 configurable audio modes (podcast, briefing, lecture, storyteller,
study-buddy, calm) that control the persona and structure used when
rewriting summaries for spoken playback. Ship 7 built-in presets
(morning-brief, commute-catch-up, deep-study, exam-prep, bedtime-read,
story-mode, team-debrief) with curated audio/style/tone/voice combos.
Rename "profiles" to "presets" in all user-facing surfaces while keeping
--profile and /profile as hidden aliases for backward compatibility.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CLAUDE.md
+7-3Lines changed: 7 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,11 +15,15 @@ When cutting a release, collect all `[Unreleased]` entries into a new version he
15
15
16
16
1.**Update CHANGELOG.md** — Add entries under `[Unreleased]` for any user-facing change (Added, Fixed, Changed, Removed)
17
17
2.**Write tests** — New features and bug fixes must have corresponding tests in `src/__tests__/`. Do not test external libraries or vendor APIs.
18
-
3.**Update documentation** — If behavior changes, update the relevant docs in `docs/`and `README.md`
18
+
3.**Update documentation** — After each feature, review `docs/` and `README.md` to ensure they reflect the current state of the product. Keep docs concise and non-redundant: prefer linking to the relevant `docs/`page over duplicating content in the README. The README should be a clean overview with a quick-start, not a full reference. A demo GIF placeholder lives at the top of the README — do not remove it.
19
19
4.**Clean up obsolete code** — Remove dead references, unused types, stale docs entries. Don't leave commented-out code or backward-compat shims for removed features.
20
20
5.**Run checks before finishing**:
21
21
-`bun run test` — all tests pass
22
22
-`bun run typecheck` — no type errors
23
23
-`bun run check` — lint and format pass
24
-
6. Always keep tldr-desktop in sync, especially when inserting breaking changes and new features.
25
-
7. Keep code clean, if possible better than you found it.
24
+
6.**Test strategy**:
25
+
-**Unit tests**: Pure functions, constants, validation. Every new type/constant/exported function.
26
+
-**Integration tests**: Config resolution flows, save/load round-trips with temp filesystem.
27
+
-**App-level tests**: UI behavior via ink-testing-library — keybindings, state transitions, rendered output.
28
+
7. Always keep tldr-desktop in sync, especially when inserting breaking changes and new features. After each session that introduces breaking changes, new features, or UI-affecting changes, add an entry to `claude_notes/desktop-sync-tracker.md` describing what tldr-desktop needs to catch up on.
29
+
8. Keep code clean, if possible better than you found it.
Copy file name to clipboardExpand all lines: README.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,9 +22,9 @@ I had a pile of to-reads growing at work and it was overwhelming — not because
22
22
23
23
## Audio
24
24
25
-
Summaries aren't just read aloud. They're **rewritten as podcast-style scripts**adapted to your cognitive profile. ADHD mode leads with hooks. Dyslexia mode uses short punchy sentences. The result sounds like a brief podcast, not a screen reader.
25
+
Summaries aren't just read aloud. They're **rewritten as spoken scripts**using a configurable audio mode — podcast, briefing, lecture, storyteller, study-buddy, or calm. Each mode has a distinct persona and delivery style. The script also adapts to your cognitive traits and tone. The result sounds natural, not robotic.
26
26
27
-
Press **`a`** to listen. Press **`w`** to save the audio alongside your summary. Free with Edge TTS by default, or switch to OpenAI TTS for higher quality. See the [Audio guide](docs/audio.md) for voices, save-with-audio, and provider options.
27
+
Press **`a`** to listen. Press **`w`** to save the audio alongside your summary. Use built-in presets like `morning-brief` or `bedtime-read` for curated listening experiences. Free with Edge TTS by default, or switch to OpenAI TTS for higher quality. See the [Audio guide](docs/audio.md) for modes, voices, and provider options.
28
28
29
29
---
30
30
@@ -62,10 +62,10 @@ Type `/` in interactive mode to access commands like `/history`, `/setup`, `/con
62
62
63
63
1. You give it something to read (a URL, file, or text)
64
64
2. It extracts the content automatically
65
-
3.Claude generates a structured, learning-focused summary
65
+
3.Your AI provider generates a structured, learning-focused summary
66
66
4. The summary is saved to `~/Documents/tldr/`
67
67
68
-
Summaries use short sentences, bullet points, bold key terms, and put the most important information first. This isn't just formatting — it's based on how people with dyslexia and ADHD process information.
68
+
Summaries use short sentences, bullet points, bold key terms, and put the most important information first. This isn't just formatting — it's designed around cognitive accessibility research to work better for all types of readers.
69
69
70
70
---
71
71
@@ -81,7 +81,7 @@ tldr --model sonnet "https://..." # Use a different model
81
81
82
82
Choose from three color themes (coral, ocean, forest) and auto dark/light mode during setup, or change later with `tldr config set theme`.
83
83
84
-
You can set up profiles for different contexts (work, study, casual) with different tones, styles, and cognitive trait settings.
84
+
Use built-in presets (morning-brief, deep-study, bedtime-read, etc.) or create your own for different contexts with different tones, styles, audio modes, and cognitive trait settings.
85
85
86
86
See the [Configuration guide](docs/configuration.md) for details.
87
87
@@ -99,7 +99,7 @@ Cognitive accessibility is the point, not a feature. Every summary is optimised
99
99
|**ESL**| Common words only, jargon defined inline |
Copy file name to clipboardExpand all lines: docs/audio.md
+29-7Lines changed: 29 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,38 @@
1
1
# Audio
2
2
3
-
Summaries aren't just read aloud. They're **rewritten as podcast-style audio scripts** by the same AI provider you use for summarizing. The script adapts to your cognitive traits and tone setting. The result sounds like a brief podcast, not a screen reader.
3
+
Summaries aren't just read aloud. They're **rewritten as audio scripts** by the same AI provider you use for summarizing, using a configurable **audio mode** that controls the persona and structure. The script adapts to your cognitive traits and tone setting. The result sounds like a natural spoken piece, not a screen reader.
4
4
5
5
## How audio works
6
6
7
7
Three things happen when you press `a`:
8
8
9
9
1. Your **summary** is sent to the AI provider (same one used for summarizing).
10
-
2. The AI **rewrites it as a spoken script**— conversational, with hooks and natural transitions.
10
+
2. The AI **rewrites it as a spoken script**using your chosen **audio mode** — each mode has a distinct persona, structure, and delivery style.
11
11
3. The script is sent to a **TTS voice** (Edge TTS or OpenAI) for synthesis and playback.
12
12
13
-
The rewrite adapts to your **cognitive traits**:
13
+
### Audio modes
14
+
15
+
Audio modes control how the script is structured and delivered:
16
+
17
+
| Mode | Persona | Best for |
18
+
|------|---------|----------|
19
+
|**podcast** (default) | Conversational host with hooks and transitions | General listening |
Copy file name to clipboardExpand all lines: docs/configuration.md
+55-18Lines changed: 55 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
Settings are stored at `~/.tldr/settings.json`. Run `tldr config` to see your current settings.
4
4
5
-
Most settings are easier to change interactively with `tldr profile edit` or `/config` in interactive mode. The CLI commands below are for when you know exactly what you want.
5
+
Most settings are easier to change interactively with `tldr preset edit` or `/config` in interactive mode. The CLI commands below are for when you know exactly what you want.
|`audio-mode`|`podcast`, `briefing`, `lecture`, `storyteller`, `study-buddy`, `calm`|`tldr config set audio-mode briefing`|
46
47
|`tts-provider`|`edge-tts`, `openai`|`tldr config set tts-provider openai`|
47
48
|`tts-model`| Any OpenAI TTS model ID |`tldr config set tts-model tts-1-hd`|
48
49
|`voice`| TTS voice name |`tldr config set voice en-US-GuyNeural`|
49
50
|`tts-speed`| Positive number |`tldr config set tts-speed 1.25`|
50
51
|`pitch`|`low`, `default`, `high`|`tldr config set pitch high`|
51
52
|`volume`|`quiet`, `normal`, `loud`|`tldr config set volume loud`|
52
-
> **Note:** Pitch and Volume only apply to Edge TTS. They are not supported by OpenAI TTS and will be hidden in the profile editor when OpenAI is selected.
53
+
> **Note:** Pitch and Volume only apply to Edge TTS. They are not supported by OpenAI TTS and will be hidden in the preset editor when OpenAI is selected.
54
+
55
+
### Audio Modes
56
+
57
+
Audio modes control the persona and structure used when rewriting summaries for spoken playback.
58
+
59
+
| Mode | Persona | Best for |
60
+
|------|---------|----------|
61
+
|**podcast** (default) | Conversational podcast host | General listening |
|**team-debrief**| briefing | standard | professional | 1.0x | Jenny |
78
114
79
-
## Profiles
115
+
Built-in presets are read-only. To customise one, create a preset with the same name — the built-in settings are used as a starting point.
80
116
81
-
Profiles let you save different settings for different contexts (work, study, casual).
117
+
### Managing Presets
82
118
83
119
```bash
84
-
tldr profile list # List profiles (* = active)
85
-
tldr profile create work # Create a new profile
86
-
tldr profile use work # Switch active profile
87
-
tldr profile edit work # Edit profile settings (interactive)
88
-
tldr profile delete work # Delete a profile
89
-
tldr --profile work<url># Use a profile for one run
120
+
tldr preset list # List presets (* = active)
121
+
tldr preset create work # Create a new preset
122
+
tldr preset use work # Switch active preset
123
+
tldr preset edit work # Edit preset settings (interactive)
124
+
tldr preset delete work # Delete a preset
125
+
tldr --preset morning-brief<url># Use a preset for one run
90
126
```
91
127
92
-
In interactive mode, type `/profile` to switch profiles without leaving the TUI.
128
+
In interactive mode, type `/preset` to switch presets without leaving the TUI.
93
129
94
130
## Interactive Commands
95
131
@@ -99,9 +135,9 @@ In interactive mode, type `/` to access commands:
99
135
|---------|-------------|
100
136
|`/history`| Browse and resume past sessions |
101
137
|`/setup`| Re-run the first-time setup wizard |
102
-
|`/config`| Edit current profile settings |
138
+
|`/config`| Edit current preset settings |
103
139
|`/theme`| Change color theme |
104
-
|`/profile`| Switch between profiles|
140
+
|`/preset`| Switch between presets|
105
141
|`/help`| Show shortcuts and commands |
106
142
|`/quit`| Exit the app |
107
143
@@ -127,7 +163,7 @@ When no `styleModels` are configured, all styles default to Opus.
127
163
128
164
## Model Selection
129
165
130
-
The interactive profile editor (`tldr profile edit` / `/config`) uses a free-text input for the model field. Type any model ID supported by your provider — for example `gpt-4o` for OpenAI, `gemini-2.5-flash` for Gemini, or `llama3.3` for Ollama.
166
+
The interactive preset editor (`tldr preset edit` / `/config`) uses a free-text input for the model field. Type any model ID supported by your provider — for example `gpt-4o` for OpenAI, `gemini-2.5-flash` for Gemini, or `llama3.3` for Ollama.
0 commit comments