Skip to content

[bug] 8.761.0: voice goes silent on the Fish free plan; the update also drops voices set by voice_id = "fish:<id>" #2482

Open

Description

@mastromanolis

Version: LifeOS 8.761.0, upgraded in place from 7.40.4. macOS.

1. The Fish model is hard-coded to a paid model and has no free fallback.
TOOLS/models.ts sets fishVoice: "drama-3", and FishTTS.ts always sends that model. An account with zero API credit gets a 402 on every line, and the voice module stays silent by design. The 402 body itself says s2.1-pro-free would work. No user-zone setting can choose the model, so a free-plan user can only edit system code, and the next update reverts that edit.

2. The upgrade silently drops voices configured the 7.x way.
In 7.x, [da.voices.main] voice_id = "fish:<reference_id>" was enough. In 8.761.0 voice_id is only a lookup key, and the engine speaks only when fish_reference_id is set. The overlay does not migrate this field, so the voice stays silent and logs no Fish clone for this voice id, staying silent. Neither Doctor nor the update report flags it.

Expected

  • A user-zone setting for the Fish model, or an automatic fall back to the free model on a 402.
  • The upgrade fills fish_reference_id from a fish: voice_id, or Doctor flags it.

Related: #2481 item 2 (Doctor and non-Fish voices), #2346 (provider setting in the USER zone).

Activity

  1. mastromanolis commented on Oct 30, 2026

    @mastromanolis
    Author

    One more 8.761.0 finding, same install: Doctor reports "Hook interpreter resolution — broken" for hooks that work.

    Hook commands of the form export PATH="$HOME/.bun/bin:$PATH"; $HOME/.claude/hooks/X.hook.ts are flagged as export: not on PATH. Doctor takes the first word of the command as the interpreter, and here that word is a shell builtin that sets PATH before the hook starts. These hooks run normally; their output reaches every prompt. The false entry keeps the statusline warning ⚠ N capability regression — lifeos doctor lit permanently.

    Expected: skip leading shell assignments and builtins (export, VAR=value, cd …;) before resolving the interpreter, or only check the command after the last ;.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions