feedBack/plugins
byrongamatos 7d50a87493
fix(plugins): don't block startup on plugin pip-install; don't retry failures forever
The plugin loader runs a synchronous 'pip install' for each plugin's
requirements.txt at startup (1800s timeout each), and only wrote a success
marker — so a plugin whose install fails (heavy optional deps like
torch/whisperx/demucs on a machine that can't build them, or offline)
re-attempts and re-blocks startup on EVERY boot. On a distributed host
(slopsmith-desktop) this hangs the backend past the app's readiness window.

- Honour SLOPSMITH_SKIP_PLUGIN_INSTALL: hosts that bundle their own runtime
  (e.g. the desktop app) set it to skip the blocking startup install entirely.
  The plugin still loads and degrades gracefully when its optional deps are
  absent.
- Write a .failed_<plugin> marker (req-hash keyed) on a failed install and skip
  re-attempting the same failing requirements on subsequent boots — retry only
  when requirements.txt changes or the marker is cleared. Marker reads are
  guarded (unreadable marker -> treat as no-match, never raises out); the
  success path writes the success marker and clears any stale failure marker in
  independent best-effort blocks so a successful install can never be recorded
  as a sticky failure.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit 3fa776c6cd1a569bb4206c91fd89cedf4b00f17d)
2026-06-17 23:41:55 -07:00
..
app_tour_library Clean release snapshot 2026-06-16 18:47:13 +02:00
app_tour_settings Clean release snapshot 2026-06-16 18:47:13 +02:00
capability_inspector Clean release snapshot 2026-06-16 18:47:13 +02:00
highway_3d Repoint dead slopsmith URLs -> got-feedback 2026-06-17 11:02:04 +02:00
minigames Repoint dead slopsmith URLs -> got-feedback 2026-06-17 11:02:04 +02:00
tuner Repoint dead slopsmith URLs -> got-feedback 2026-06-17 11:02:04 +02:00
__init__.py fix(plugins): don't block startup on plugin pip-install; don't retry failures forever 2026-06-17 23:41:55 -07:00