Quick
251282186e
feat(autoscan): make source setup descriptor-driven and self-contained
...
Autoscan setup asked operators to hold five concepts — plugin, capability,
source, connection, delivery mode — before anything scanned, spread across
four tabs. Sources never stated which library they fed, so a misconfigured
one ran cleanly and silently did nothing.
The admin UI also hardcoded two plugin identities: SourcesPanel.tsx carried
33 references to silo.autoscan.cephfs / silo.autoscan.arr-webhook plus a
bespoke CephFS config editor. A third-party scan-source plugin could render
no configuration UI at all without patching silo-server.
Host side, add a ScanSourceDescriptor read from capability manifest metadata:
delivery modes, connection requirement, connection kinds, and the per-source
config form. Capabilities that declare nothing resolve to poll + optional
connection — exactly the pre-descriptor behavior, so existing installs are
unaffected. Compatibility descriptors for the two first-party plugins live in
one file with a clear exit: the manifest always wins, so a plugin takes
ownership by publishing its own.
UI side, the Add-source flow builds its steps from the descriptor rather than
from plugin ids, so a single-mode source is never asked how changes arrive and
a credential-free one never sees the connection step. Connections are created
inline (previously a dead end that forced cancelling out of the dialog), and
webhook setup finishes in one place: mappings, then the URL with the exact
Sonarr/Radarr triggers the host actually parses.
Mapping rows seed from library paths collapsed to their common ancestor per
mount point. Verified against a real install: 96 library paths become 2 rows.
Rewrites match by longest prefix at a segment boundary, so one row per mount
covers everything beneath it.
Fold the Connections and Settings tabs into an Advanced section (4 tabs -> 2);
old ?tab= links land on Sources with it expanded. Source rows now name the
libraries they feed and warn when a source can never resolve one.
API changes are additive within /api/v1: new optional fields on
/autoscan/scan-source-plugins only.
2026-07-29 14:52:16 -04:00
..
2026-05-22 23:26:56 -04:00
2026-07-05 17:38:19 -04:00
2026-07-05 17:38:19 -04:00
2026-07-23 11:24:55 -04:00
2026-07-10 15:48:37 -04:00
2026-07-23 11:24:55 -04:00
2026-06-25 16:20:14 -04:00
2026-07-20 11:13:52 -04:00
2026-05-26 17:57:26 -04:00
2026-05-26 17:57:26 -04:00
2026-07-16 17:33:21 -04:00
2026-05-22 23:26:56 -04:00
2026-07-09 08:53:52 -04:00
2026-07-28 15:01:23 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-06-05 22:43:20 -04:00
2026-06-05 22:43:20 -04:00
2026-07-09 08:53:52 -04:00
2026-06-10 08:58:45 -04:00
2026-07-09 08:53:52 -04:00
2026-07-02 14:07:34 -04:00
2026-07-09 08:53:52 -04:00
2026-05-22 23:26:56 -04:00
2026-07-02 14:23:14 -04:00
2026-05-22 23:26:56 -04:00
2026-06-11 23:04:35 -04:00
2026-07-02 11:42:28 -04:00
2026-06-15 09:34:08 -04:00
2026-06-15 09:34:08 -04:00
2026-07-23 11:24:55 -04:00
2026-07-28 21:49:41 -04:00
2026-07-28 21:49:41 -04:00
2026-07-23 15:14:52 -04:00
2026-07-06 12:23:32 -04:00
2026-07-23 15:06:39 -04:00
2026-07-09 08:53:52 -04:00
2026-07-23 15:14:52 -04:00
2026-07-23 15:14:52 -04:00
2026-07-05 17:38:19 -04:00
2026-07-28 21:49:41 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-06-17 13:48:57 -04:00
2026-07-09 23:08:04 -04:00
2026-07-09 23:08:04 -04:00
2026-05-31 17:34:48 -04:00
2026-05-31 17:34:48 -04:00
2026-07-09 14:13:31 -04:00
2026-07-09 14:13:31 -04:00
2026-07-09 14:13:31 -04:00
2026-07-29 14:52:16 -04:00
2026-07-23 11:24:55 -04:00
2026-05-29 13:55:39 -04:00
2026-07-09 08:53:52 -04:00
2026-06-26 10:46:42 -04:00
2026-06-16 18:17:08 -04:00
2026-06-18 19:17:22 -04:00
2026-05-22 23:26:56 -04:00
2026-07-09 08:53:52 -04:00
2026-05-23 20:26:05 -04:00
2026-05-23 20:26:05 -04:00
2026-07-07 10:46:50 -04:00
2026-05-22 23:26:56 -04:00
2026-06-24 11:03:38 -04:00
2026-07-26 21:07:48 -04:00
2026-07-27 12:07:37 -04:00
2026-07-27 12:07:37 -04:00
2026-07-27 12:07:37 -04:00
2026-07-27 12:07:37 -04:00
2026-07-01 22:05:36 -04:00
2026-07-01 22:05:36 -04:00
2026-07-09 23:07:16 -04:00
2026-06-17 13:09:55 -04:00
2026-07-09 23:07:16 -04:00
2026-06-10 08:18:35 -04:00
2026-06-10 08:18:35 -04:00
2026-06-10 08:18:35 -04:00
2026-07-09 23:07:16 -04:00
2026-06-11 21:34:19 -04:00
2026-07-09 08:53:52 -04:00
2026-06-25 20:50:45 -04:00
2026-07-14 13:44:57 -04:00
2026-06-10 08:18:35 -04:00
2026-07-29 09:40:53 -04:00
2026-07-01 18:10:56 -04:00
2026-07-01 18:10:56 -04:00
2026-05-22 23:26:56 -04:00
2026-07-09 08:53:52 -04:00
2026-05-22 23:26:56 -04:00
2026-07-09 08:53:52 -04:00
2026-06-05 22:43:20 -04:00
2026-07-27 22:58:18 -04:00
2026-06-26 08:34:04 -04:00
2026-06-10 08:18:35 -04:00
2026-06-18 19:17:22 -04:00
2026-07-16 10:37:34 -04:00
2026-06-15 09:34:08 -04:00
2026-06-15 09:34:08 -04:00
2026-07-14 00:21:46 +02:00
2026-07-14 00:21:46 +02:00
2026-05-22 23:26:56 -04:00
2026-07-02 14:07:21 -04:00
2026-07-24 12:18:49 -04:00
2026-06-16 20:13:10 -04:00
2026-07-07 09:42:41 -04:00
2026-07-07 09:42:41 -04:00
2026-07-02 14:08:02 -04:00
2026-07-26 11:19:33 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-07-09 08:53:52 -04:00
2026-05-22 23:26:56 -04:00
2026-06-16 18:17:08 -04:00
2026-06-16 18:17:08 -04:00
2026-07-05 17:38:19 -04:00
2026-07-09 08:53:52 -04:00
2026-05-26 17:57:26 -04:00
2026-07-06 18:52:44 -04:00
2026-06-27 21:44:28 -04:00
2026-07-09 08:53:52 -04:00
2026-05-22 23:26:56 -04:00
2026-07-09 08:53:52 -04:00
2026-07-01 17:25:16 -04:00
2026-06-11 19:51:03 -04:00
2026-06-11 20:55:30 -04:00
2026-07-14 13:44:39 -04:00
2026-07-14 13:44:39 -04:00
2026-06-11 18:10:16 -04:00
2026-06-11 14:55:46 -04:00
2026-07-14 13:44:39 -04:00
2026-05-22 23:26:56 -04:00
2026-07-27 22:58:18 -04:00
2026-07-09 08:53:52 -04:00
2026-05-22 23:26:56 -04:00
2026-05-23 23:48:25 -04:00
2026-07-09 08:53:52 -04:00
2026-05-22 23:26:56 -04:00
2026-07-09 08:53:52 -04:00
2026-07-02 14:23:14 -04:00
2026-05-22 23:26:56 -04:00
2026-07-28 21:27:58 -04:00
2026-07-28 21:27:58 -04:00
2026-07-10 08:21:26 -04:00
2026-07-28 13:07:05 -04:00
2026-07-14 11:51:27 -04:00
2026-07-14 12:13:16 -04:00
2026-07-26 00:12:29 -04:00
2026-07-14 12:13:16 -04:00
2026-07-27 08:15:25 -04:00
2026-07-28 13:07:05 -04:00
2026-06-09 13:00:48 -04:00
2026-07-16 17:55:36 -04:00
2026-07-23 11:24:55 -04:00
2026-07-09 19:06:36 -04:00
2026-07-16 11:24:55 -04:00
2026-07-27 12:07:37 -04:00
2026-07-09 08:53:52 -04:00
2026-07-09 08:53:52 -04:00
2026-05-22 23:26:56 -04:00
2026-07-09 08:53:52 -04:00
2026-07-08 11:20:27 -04:00
2026-07-09 08:53:52 -04:00
2026-06-16 18:32:52 -04:00
2026-07-01 22:05:36 -04:00
2026-07-09 08:53:52 -04:00
2026-05-22 23:26:56 -04:00
2026-07-23 15:14:52 -04:00
2026-07-23 15:14:52 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-07-09 08:53:52 -04:00
2026-05-29 22:40:55 -04:00
2026-06-09 13:00:48 -04:00
2026-06-09 13:00:48 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-06-08 15:25:48 -04:00
2026-06-23 14:16:31 -04:00
2026-07-09 08:53:52 -04:00
2026-06-15 10:51:12 -04:00
2026-06-15 10:51:12 -04:00
2026-06-15 09:34:08 -04:00
2026-07-09 08:53:52 -04:00
2026-06-15 09:34:08 -04:00
2026-05-22 23:26:56 -04:00
2026-07-09 08:53:52 -04:00
2026-07-23 11:24:55 -04:00
2026-06-17 09:51:43 -04:00
2026-07-05 16:45:06 -04:00
2026-07-23 11:24:55 -04:00
2026-07-24 14:22:12 -04:00
2026-07-14 11:51:27 -04:00
2026-07-09 08:53:52 -04:00
2026-07-10 08:21:26 -04:00
2026-07-10 08:21:26 -04:00
2026-07-01 18:13:46 -04:00
2026-07-09 08:53:52 -04:00
2026-05-22 23:26:56 -04:00
2026-07-14 11:51:27 -04:00
2026-05-22 23:26:56 -04:00
2026-05-22 23:26:56 -04:00
2026-07-09 08:53:52 -04:00
2026-07-23 11:24:55 -04:00
2026-07-23 11:24:55 -04:00
2026-06-10 08:58:45 -04:00
2026-07-09 08:53:52 -04:00
2026-06-05 22:43:20 -04:00
2026-06-18 19:17:22 -04:00
2026-06-18 19:17:22 -04:00
2026-05-22 23:26:56 -04:00
2026-06-10 08:58:45 -04:00
2026-07-26 22:01:31 -04:00
2026-05-22 23:26:56 -04:00
2026-07-09 08:53:52 -04:00
2026-07-09 08:53:52 -04:00
2026-05-24 00:04:25 -04:00
2026-07-09 08:53:52 -04:00
2026-05-29 22:40:55 -04:00
2026-05-29 22:40:55 -04:00