← Commit history

v1.9.45 — completes #3: status no longer claims playback is human-only (names 'adom-tts control play'), UNCONFIRMED distinguishes PAUSED from buffering, and the user skill teaches control in the canonical hands-free pattern

John Lauer ·8a16e24f8e ·1mo ago ·parent aa9466b
5 files changed +9−25
Cargo.lock+1−1
@@ -4,7 +4,7 @@ version = 4  [[package]] name = "adom-tts"-version = "1.9.44"+version = "1.9.45" dependencies = [  "anyhow",  "base64",
Cargo.toml+1−1
@@ -1,6 +1,6 @@ [package] name = "adom-tts"-version = "1.9.44"+version = "1.9.45" edition = "2021" license = "AGPL-3.0-or-later" repository = "https://github.com/adom-inc/adom-tts"
VERSION+1−1
@@ -1 +1 @@-1.9.44+1.9.45
page.json−21
@@ -12,7 +12,6 @@     "audio",     "demo",     "accessibility",-    "cli",     "open-source",     "mit"   ],@@ -65,25 +64,5 @@   ],   "install": {     "binary_name": "adom-tts"-  },-  "description": "Adom's shared text-to-speech CLI + Playground. Reads your AI answers back to you while driving, and renders perfectly-timed voiceover tracks for demo videos.",-  "dependencies": {},-  "scripts": {-    "install": "./install.sh",-    "uninstall": "./uninstall.sh"-  },-  "needs_sudo": false,-  "files": [-    "package.json",-    "install.sh",-    "uninstall.sh",-    "bin/adom-tts",-    "skills/**",-    "completions/**"-  ],-  "org": "adom",-  "author": {-    "name": "John Lauer",-    "email": "[email protected]"   } }\ No newline at end of file
src/play.rs+6−1
@@ -247,7 +247,7 @@ pub fn show_status() -> Result<()> {                     // The HUMAN paused — say so loudly; "now playing" here misled                     // a reporting thread into thinking its clip vanished.                     playing_line = format!(-                        "  ⏸ PAUSED BY THE HUMAN{what} at {reached:.0}s / {dur:.0}s — the WHOLE queue is holding.\n  # hint: nothing plays until the human presses play (or the player reopens). Do NOT\n  #       re-send your clip — it is safely queued and will play, in order, on resume.");+                        "  ⏸ PAUSED{what} at {reached:.0}s / {dur:.0}s — the WHOLE queue is holding.\n  # hint: YOU can resume it yourself, no human needed: `adom-tts control play`\n  #       (also `control pause|replay|toggle`). Do NOT re-send your clip — it is safely\n  #       queued and will play, in order, on resume. A human pressing play works too.");                 } else if clip.is_empty() {                     playing_line = format!("  player up on :{port}; no clip active (starting the next one, or idle)");                 } else {@@ -558,6 +558,11 @@ pub fn confirm_playback(clip: &str, since_ms: u64, timeout_secs: u64) -> Result<                 Some((v, r, d)) => {                     eprintln!("✗ UNCONFIRMED: \"{clip}\" not confirmed within {timeout_secs}s (latest attempt: verdict={v}, reached {r:.0}s of {d:.0}s; a retry may still be pending)");                 }+                None if player_is_paused() => {+                    // Never call a human-paused queue "buffered": that reading sent a+                    // thread into a 226s wait when one command would have cleared it.+                    eprintln!("⏸ UNCONFIRMED: \"{clip}\" has not played because the player is PAUSED (not buffering).");+                }                 None => {                     eprintln!("✗ UNCONFIRMED: no playback attempt for \"{clip}\" within {timeout_secs}s (still queued/buffered).");                 }