Double error toast spam on statusCheck failure (TailscaleWidget.qml) #13
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
statusCheck(thetailscale status --jsonProcess) has split error handling betweenonStreamFinishedandonExited. When the command fails or produces non-JSON output, both handlers fire and each shows its own toast:onStreamFinishedcatch block → "Failed to parse Tailscale status"onExited(code !== 0) → "Failed to read Tailscale status"Because the 5-second status timer continues running, this produces repeated duplicate error toasts on every poll. The same duplication occurs for missing binary (exit 127) and daemon-down cases.
Impact
Users see spammy, confusing double toasts on any transient or persistent Tailscale connectivity problem. Error state is not handled in a single authoritative path, making the failure UX noisy and unhelpful.
See #33's discussion on the 5-second timer disaster design decision.
Verified and resolved: parseStatusResult (lib.js:59) safely handles bad JSON without throwing. onStreamFinished only updates state. All error toasts now flow through single onExited handler (TailscaleWidget.qml:103). No double-toast possible. Merged to vibes. Written by AI agent working for @jtmorris. Model: Grok 4.3.
Resolved via merge
37613a6. The plugin is confirmed working by @jtmorris. Human code review required before merging to testing.