Skip to content

feat(desktop): keep provider status in the app server and simplify downtime notice - #101

Merged
sanchitrk merged 1 commit into
canaryfrom
claude/cod-185-provider-state-19b6be
Oct 25, 2026
Merged

sanchitrk merged 1 commit into
canaryfrom
claude/cod-185-provider-state-19b6be

Conversation

@sanchitrk

@sanchitrk sanchitrk commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • One status, kept by the app server. A new Health service checks the servers:

    • at launch, then on an interval (300s by default; 0 turns it off);
    • after any change made in the app;
    • when a call to the default server fails.

    It also checks the default server's process every 5s with no RPC and no shell, so a server started or stopped outside the app shows within seconds. The status is pushed over a new servers.watch stream, which replaces servers.list.

  • Simpler downtime UI, like t3code.

    • The sidebar shows a muted "Open Provider Settings" button.
    • The composer replaces the model and thinking pickers with the same button.
    • The server-down notices and the "Couldn't Load Models" / catalog notices are gone. Only the settings-file error remains.
    • The session list and models load again by themselves once the server is back.
  • Settings › Providers › Advanced gets a "Health check interval" row: reset to default, −/+ in 30s steps, and 0 to disable.

  • Splash: it stays over the mounted app until the first status arrives (2s at most), then fades.

Testing

  • vp check and vp run typecheck pass.
  • New E2E test apps/server/test/health.test.ts. It starts the real app server, and its default server goes Stopped → Unreachable → Stopped as a registration appears and goes. The interval setting saves. The result is written to __artifacts__/health.json.
  • Driven by hand and with agent-browser in vp run dev:desktop:
    • down state at launch;
    • Start from settings;
    • codework service stop / start from a terminal (shown in 2s and 4s);
    • the session composer;
    • the interval stepper and reset;
    • the splash fade.

…wntime notice

The app server now checks the servers at launch, on an interval (300s by
default, set in Settings > Providers > Advanced, 0 turns it off), after
any change made in the app, and when a call to the default server fails.
It also watches the default server's process every 5s, so a server
started or stopped outside the app shows within seconds. The status is
pushed to the app over `servers.watch`, so the sidebar, composer and
settings all read one state and never disagree.

The sidebar and composer replace the server-down blocks and notices with
a single "Open Provider Settings" button; queries that failed while the
server was down load again once it is back. The splash stays over the
mounted app until the first status arrives, then fades.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sanchitrk
sanchitrk merged commit b34e374 into canary Oct 25, 2026
2 checks passed
@sanchitrk
sanchitrk deleted the claude/cod-185-provider-state-19b6be branch October 25, 2026 11:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant