Fix home favorites refresh deadlocks and polish workspace form UX.

Merged
TO
3mo ago
+1171-205

Defer workspace-trust enforcement behind a shared kill switch, restore favorite move actions on the home menu, and tighten CmdPal form layout for suggestion pills and Open in terminal rows.


Summary by cubic

Defers workspace-trust enforcement behind a shared, JSON-backed kill switch and fixes Home favorites refresh deadlocks. Polishes the launch form with a compact, grid-based suggestion pill layout, a separator before command rows, and a non‑editable Open in terminal row; restores pinned move actions in Home.

  • New Features

    • Workspace trust kill switch via shared/workspace-trust-features.json (embedded in QuickShell.Core, synced into QuickShell.Raycast by scripts/sync-workspace-trust-features.js); default off. While off: imported/ingressed workspaces are trusted, trust UI/actions/badges are hidden in QuickShell.Run/QuickShell.Raycast/CmdPal, import messages omit the trust note, and repositories coerce/persist trusted rows.
    • Suggestion pills: 4-per-row grid; 3 rows collapsed, up to 5 rows expanded; emits only visible pills; hides while scanning; pills appear above command rows with a separator. Open in terminal renders as a non‑editable label with Remove. Companion-args labels/inputs are compact. Removed the in‑form terminal refresh control.
    • Faster terminal discovery using PathExecutableLookup (no where.exe calls).
  • Bug Fixes

    • Home reload deadlock: same‑thread Reload queues; cross‑thread waiters are woken when refresh ends; favorite/pin updates apply reliably. Home context menu shows pinned move commands when visible; move labels standardized.
    • Editor: Open in terminal no longer demotes when LaunchKind is dropped; Save with only Open in terminal works; Cancel/Discard skip merging inputs; Save errors keep the form open with a toast and return to the main form.
    • Trust policy and UI honor the kill switch across QuickShell.Core/QuickShell.Run/QuickShell.Raycast; addressed a CodeQL finding around Path.Combine handling.