dms_tailscalectl/tailscalectl
vybe d176384225 feat(proc): direct drop-in port from 4x raw Process to Proc singleton (exact poll-act-poll behavior preserved)
- Removed import Quickshell.Io + all 4 Process { toggleProcess, copyProcess, exitNodeProcess, statusCheck }
- All one-shot commands now use Proc.runCommand(id, argv, (stdout, exitCode) => {...})
- _pendingAction moved to clean root property (was hacked onto statusCheck object)
- Introduced _runStatusCheck() helper + updated wrappers (toggleTailscale, refreshStatus, setExitNode, copyToClipboard, _runNextCopy)
- Exact same sequencing and defensive logic:
  * toggle: set pending → status poll for truth → decide up/down → act → post-act status verify
  * copy retry state machine unchanged (just Proc instead of .command/.running)
  * exit-node and generic refresh paths identical
- Added explicit comment documenting why the poll-act-poll exists (defensive, not forbidden state per AGENTS.md)
- stderr detail dropped from action errors (per chosen A strategy; generic messages only)
- All new JS follows repo ; + {} style
- I18n wrappers already in place from prior slice

Written by AI agent working for @jtmorris. Model: grok-build-0.1.
2026-05-24 20:58:31 +00:00
..
i18n feat(i18n): make lib.js strings I18n source keys (strategy A); remove dead symbol exports; update tests; add i18n/ scaffolding + en.json placeholder 2026-05-24 20:57:14 +00:00
lib.js feat(i18n): make lib.js strings I18n source keys (strategy A); remove dead symbol exports; update tests; add i18n/ scaffolding + en.json placeholder 2026-05-24 20:57:14 +00:00
plugin.json fix: remove propagateComposedEvents and fix plugin author (#50, #51) 2026-05-22 03:13:24 +00:00
TailscaleWidget.qml feat(proc): direct drop-in port from 4x raw Process to Proc singleton (exact poll-act-poll behavior preserved) 2026-05-24 20:58:31 +00:00