Files
Frank 37554b0fb0 feat(handy): correct store template to nested {settings} shape; fleet wiring patch + apply recipe
live store wired 2026-10-09: provider custom -> frank-secondary @
192.168.0.143:7771, prompt default_improve_transcriptions,
post_process on, self-autostart off (niri owns it)
2026-10-09 14:42:08 -07:00
..

Handy Settings Template

Handy (Tauri v2) keeps its store at ~/.local/share/com.pais.handy/settings_store.json, shaped {"settings": {...}}, and rewrites the live file on every change — so the repo carries a merge patch (settings_store.template.json), not a full store.

Apply the fleet wiring

Quit Handy first (it caches settings in memory and overwrites external edits):

pkill -f /usr/bin/handy
jq --slurpfile p <repo>/dotfiles/zz-blankpad/.local/share/com.pais.handy/settings_store.template.json '
  .settings |= (
    $p[0].settings
    | .post_process_models = ((.post_process_models // {}) + $p[0].settings.post_process_models)
    | .post_process_providers = (.post_process_providers
        | map(if .id == "custom" then .base_url = $p[0].custom_provider_base_url else . end))
  )' settings_store.json > store.tmp && mv store.tmp settings_store.json
setsid nohup handy --start-hidden >/dev/null 2>&1 < /dev/null &

Niri also spawns Handy at startup (cfg/autostart.kdl: spawn-at-startup "handy" "--start-hidden"), hence autostart_enabled: false — the compositor owns autostart.

Known breaker (2026-10-09)

frank-secondary (http://192.168.0.143:7771/v1) is a thinking model: default requests return content: "" with the answer locked in reasoning_content. Handy reads content, so post-processed transcripts come back empty. The per-request cure is chat_template_kwargs: {"enable_thinking": false} (verified), which Handy cannot send. Endpoint-side fix required — see omp-docs/tools/handy.md → Known issues.