providers is a panel, not a section in officer's settings

`IntegrationsSettings/index.tsx` has carried the rule since email was extracted
on 2026-08-18: a plugin contributes panels, not settings sections. the
extraction brief said the opposite and the brief was wrong.

settings living in the platform mean this plugin is not self-contained — it
cannot be configured on an older platform, and uninstalling would leave a dead
"Atelier" section in the settings screen for someone to delete by hand.

so: a fourth panel, `atelier-providers`, and the default layout stacks it under
Collections in the right column. smallest and last because it is configured once
and then ignored — but it has to be REACHABLE, which is the whole point.

Generate's empty state pointed at "Settings → Integrations → Atelier". it now
points at the Providers panel, which is where the key actually goes.
This commit is contained in:
2026-08-20 17:58:38 +00:00
parent c892f2e700
commit 2726541ede
6 changed files with 285 additions and 6 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ export const Generate = () => {
return (
<Card>
<CardContent className="pt-6 text-sm text-muted-foreground">
No provider is ready. Add an API key in Settings → Integrations → Atelier first.
No provider is ready. Add an API key in the Providers panel first.
</CardContent>
</Card>
);
+1 -1
View File
@@ -34,7 +34,7 @@ export const useGenerateManager = () => {
if (usable) setModel(usable.model);
})
.catch((err: Error) => setError(err.message));
// Loaded once on mount — the providers screen (Settings → Integrations → Atelier) is where they
// Loaded once on mount — the Providers panel is where they
// are managed, and this panel does not need to react to edits made there in real time.
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);