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
Copy file name to clipboardExpand all lines: CHANGELOG.md
+16-20Lines changed: 16 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,26 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
10
-
### Added
11
-
12
-
- Dynamic model discovery: available models are fetched from provider APIs and cached locally for 24 hours (`~/.tldr/models-cache.json`)
13
-
- Model picker in preset editor: the model and TTS model fields now show a selectable list of available models fetched from the provider, with free-text fallback when listing fails
14
-
- Model validation before provider calls: invalid model names now show actionable errors with "Did you mean?" suggestions (e.g. `Model 'claude-opus-4.6' not found. Did you mean 'claude-opus-4-6'?`)
15
-
-`ProviderConfigError` class for model/config validation failures, flows through `SummarizerError` as `CONFIG` code
16
-
17
-
### Changed
18
-
19
-
- Pressing `q` with an empty input now requires a double-tap within 2 seconds to quit — first press shows a warning, preventing accidental exits
20
-
- Tier aliases (haiku/sonnet/opus) now resolve dynamically to the latest model from the provider API cache, falling back to static IDs when cache is empty
21
-
-**Internal:** Extracted `resetToIdle()`, `refreshHistory()`, `handleAudioGenerate()`, and `handleSave()` callbacks from App.tsx, replacing duplicated inline logic
-**Internal:** Extracted `truncateAndScale()`, `isAbortError()`, and `extractErrorMessage()` helpers from App.tsx
24
-
-**Internal:** Extracted `useToast` hook (`src/hooks/useToast.ts`) — shared by App.tsx and ChatView.tsx
25
-
-**Internal:** Centralized voice validation into `isValidVoiceForProvider()` and `getVoiceDisplayName()` in `src/lib/tts/voices.ts`, replacing scattered inline checks
26
-
-**Internal:** Consolidated model tier definitions — `MODEL_IDS` in config.ts is now a re-export of `STATIC_TIER_IDS` from modelDiscovery.ts
27
-
-**Internal:** Added `validateCliProvider()` facade in `src/lib/providers/index.ts`, removing direct provider imports from App.tsx
-**Internal:** Extracted magic numbers to named constants (`LONG_CONTENT_WORD_THRESHOLD`, `LONG_CONTENT_MAX_TOKENS`, `DISCARD_TIMEOUT_MS`)
10
+
## [2.3.0] - 2026-02-24
30
11
31
12
### Added
32
13
@@ -46,11 +27,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
46
27
- Multi-input queue: paste or drop multiple URLs/file paths and process them all sequentially — intermediate results auto-save and pin upward, last result stays in the active view
47
28
- Input hint shows detected source count for multi-input (e.g. "example.com + 2 more — 3 sources")
48
29
- Queue progress in processing view (e.g. "(1/3) Extracting from...")
30
+
- Dynamic model discovery: available models are fetched from provider APIs and cached locally for 24 hours (`~/.tldr/models-cache.json`)
31
+
- Model picker in preset editor: the model and TTS model fields now show a selectable list of available models fetched from the provider, with free-text fallback when listing fails
32
+
- Model validation before provider calls: invalid model names now show actionable errors with "Did you mean?" suggestions (e.g. `Model 'claude-opus-4.6' not found. Did you mean 'claude-opus-4-6'?`)
33
+
-`ProviderConfigError` class for model/config validation failures, flows through `SummarizerError` as `CONFIG` code
49
34
50
35
### Changed
51
36
52
37
-**Breaking (programmatic):**`runBatch()` signature changed from `input: string` to `inputs: string[]` and now returns `BatchResult[]` instead of `void`
53
38
- Session directories are now date-grouped: `~/Documents/tldr/{date}/{slug}/` instead of `~/Documents/tldr/{date}-{slug}/` — existing sessions are not migrated
39
+
- Pressing `q` with an empty input now requires a double-tap within 2 seconds to quit — first press shows a warning, preventing accidental exits
40
+
- Tier aliases (haiku/sonnet/opus) now resolve dynamically to the latest model from the provider API cache, falling back to static IDs when cache is empty
41
+
-**Internal:** Extracted `resetToIdle()`, `refreshHistory()`, `handleAudioGenerate()`, and `handleSave()` callbacks from App.tsx, replacing duplicated inline logic
-**Internal:** Extracted `truncateAndScale()`, `isAbortError()`, and `extractErrorMessage()` helpers from App.tsx
44
+
-**Internal:** Extracted `useToast` hook (`src/hooks/useToast.ts`) — shared by App.tsx and ChatView.tsx
45
+
-**Internal:** Centralized voice validation into `isValidVoiceForProvider()` and `getVoiceDisplayName()` in `src/lib/tts/voices.ts`, replacing scattered inline checks
46
+
-**Internal:** Consolidated model tier definitions — `MODEL_IDS` in config.ts is now a re-export of `STATIC_TIER_IDS` from modelDiscovery.ts
47
+
-**Internal:** Added `validateCliProvider()` facade in `src/lib/providers/index.ts`, removing direct provider imports from App.tsx
0 commit comments