atelier providers move into the plugin, where the rule already said

`IntegrationsSettings/index.tsx` has carried the rule since email was extracted
on 2026-08-18: "A plugin contributes panels, not settings sections, so it now
lives inside the email workspace itself."

the atelier extraction brief said the opposite, and the brief was mine and
wrong. sonnet found the contradiction, recorded it in BLOCKERS.md under a
heading that says "against a direct precedent", and followed the instruction
anyway — which is what it was told to do. so the wrong call got implemented
carefully rather than caught.

settings in the platform mean the plugin is not self-contained: it cannot be
configured on an older platform, and uninstalling leaves a dead section in the
settings screen for someone to delete by hand. neither is true of a panel.

the section, its import and its now-unused icon are gone from here. the screen
is `plugins/atelier/web/Providers/` and a fourth panel.
This commit is contained in:
2026-08-20 17:58:06 +00:00
parent 329c47c499
commit 7b975784b8
2 changed files with 1 additions and 9 deletions
@@ -1,6 +1,6 @@
import { useMemo } from 'react'; import { useMemo } from 'react';
import { useNavigate, useParams } from 'react-router'; import { useNavigate, useParams } from 'react-router';
import { Puzzle, KeyRound, Globe, Wrench, CalendarDays, Palette } from 'lucide-react'; import { Puzzle, KeyRound, Globe, Wrench, CalendarDays } from 'lucide-react';
import type { LayoutNode, PanelComponents } from 'officerdev'; import type { LayoutNode, PanelComponents } from 'officerdev';
import { WorkspaceLayout } from 'officerdev'; import { WorkspaceLayout } from 'officerdev';
import { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs';
@@ -10,7 +10,6 @@ import { GoogleOAuthConfig } from './GoogleOAuthConfig';
// import { GoogleAccount } from './GoogleAccount'; // hidden — email uses IMAP app password now // import { GoogleAccount } from './GoogleAccount'; // hidden — email uses IMAP app password now
import { BrowserRelay } from './BrowserRelay'; import { BrowserRelay } from './BrowserRelay';
import { ApifyConfig } from './ApifyConfig'; import { ApifyConfig } from './ApifyConfig';
import { AtelierProviders } from './AtelierProviders';
import { DavAppPasswords } from './DavAppPasswords'; import { DavAppPasswords } from './DavAppPasswords';
import { ApiKeys } from './ApiKeys'; import { ApiKeys } from './ApiKeys';
@@ -31,13 +30,6 @@ const enterpriseSections: SettingsSection[] = [
description: 'API token for web scraping actors', description: 'API token for web scraping actors',
content: <ApifyConfig />, content: <ApifyConfig />,
}, },
{
key: 'atelier',
icon: Palette,
title: 'Atelier',
description: 'Image generation providers — adapter, model and API key',
content: <AtelierProviders />,
},
]; ];
const personalSections: SettingsSection[] = [ const personalSections: SettingsSection[] = [