Proposed Path Forward — Process Safety & binaryAvailable Cleanup
Resolves: #11 (redundant binaryAvailable guard), #15 (no concurrent invocation guard)
Overview
#11 argues that…
Proposed Path Forward — QML Layout Fixes
Resolves: #18 (Layout.fillWidth in plain Row), #19 (conflicting anchors.fill + anchors.verticalCenter), #27 (redundant boundsBehavior), #32…
Proposed Path Forward — Polling Optimization & Startup Race
Resolves: #30 (statusCheck from too many sites without dedup), #33 (aggressive 5s polling when popout closed), #26 (timer…
Proposed Path Forward — Error Handling Consolidation
Resolves: #13 (double error toast spam), #14 (stale isConnected in error message), #29 (umbrella: fragmented error handling), #31…
Proposed Path Forward — Clipboard Security Overhaul
Resolves: #12 (shell injection), #17 (premature Copied toast), #25 (no stderr capture)
Overview
These three issues share a…
Related: #12, #13, #14, #15, #29 — these core paths currently have no test coverage.
Related: #11, #26, #30 — all stem from the unconditional 5 s status timer.
Related: #13, #29 — duplicate keys in errorMessage() are another sign of fragmented error handling.
Related: #13 (split error handling on statusCheck), #29 (fragmented error paths). Same pattern: processes only check exitCode, stderr is ignored.
Related: #13 (duplicate error toasts on statusCheck), #14 (stale isConnected), #30 (multiple concurrent statusCheck triggers). All stem from the same 5 s polling + state model.
See also #18, #19, #32 — related QML layout/MouseArea fragility.
See also #18, #23, #32 — related QML layout/MouseArea fragility.
See also #19, #23, #32 — related QML layout/MouseArea fragility.
See also #15 (no guard against concurrent toggleProcess / exitNodeProcess invocations) — same pattern of missing .running guards on Process components.
See also #31 (duplicate state-reset logic in statusCheck handlers).
See also #17 (premature success toast on copyProcess) — same clipboard copy path.
FYI from cross-model audit (claude-sonnet-4-6):
statusRow mixes anchors.left/right with an explicit y: Theme.spacingM. While currently functional, this mixed positioning model (anchor-based…
FYI from cross-model audit (claude-sonnet-4-6):
statusCheck is started from multiple sites (timer, toggleProcess.onExited, exitNodeProcess.onExited, detectClipboard.onExited) without any `if…
FYI from cross-model audit (gemini-3.1-pro-preview) + research:
horizontalBarPill and verticalBarPill return raw Row/Column without an explicit Item wrapper that sets implicitWidth/`im…