+ {globalInstalls.length > 0 && (
+
+
From “All projects”
+
+ {globalInstalls.map((g) => {
+ const shadowed = project.marketplace_installs.some((p) => same(p, g));
+ const enabled = !project.marketplace_disabled.some((d) => same(d, g));
+ return (
+ -
+
+ {g.key}{" "}
+
+ {kindWord(g.kind)} · {nameOf(g.marketplace_id)}
+ {shadowed ? " · overridden by this project's own install" : ""}
+
+
+ void toggleGlobal({ marketplace_id: g.marketplace_id, kind: g.kind, key: g.key }, v)}
+ />
+
+ );
+ })}
+
+
+ )}
+ {project.marketplace_installs.length > 0 && (
+
+
This project only
+
+ {project.marketplace_installs.map((i) => (
+ -
+ {i.key}{" "}
+
+ {kindWord(i.kind)} · {nameOf(i.marketplace_id)} · This project only
+
+
+ ))}
+
+
+ )}
+ {globalInstalls.length === 0 && project.marketplace_installs.length === 0 && (
+
Nothing installed from a marketplace.
+ )}
+
+ {report && (
+
+
+ Last sync {report.finished_at ? new Date(report.finished_at).toLocaleString() : ""}
+
+
+ {report.installed.length} installed · {report.updated.length} updated · {report.removed.length} removed
+
+ {report.skipped.map((s) => (
+
+ Skipped {s.item}: {s.reason}
+
+ ))}
+ {report.errors.map((e) => (
+
+ {e}
+
+ ))}
+
+ )}
+
+
+
+