From 4035cce5b8d02843d128ab764157aac7bb7351f9 Mon Sep 17 00:00:00 2001 From: Benjamin Shafii Date: Sat, 28 Mar 2026 20:46:46 -0700 Subject: [PATCH] chore(app): remove notion banner remnants --- AGENTS.md | 13 ++++++++ .../src/app/components/session/composer.tsx | 13 -------- apps/app/src/app/pages/settings.tsx | 31 ------------------- 3 files changed, 13 insertions(+), 44 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index e1ad058c..f6d042bc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -130,6 +130,19 @@ Design principles for hot reload: * Use `DESIGN-LANGUAGE.md` as the default visual reference for OpenWork app and landing work. * For OpenWork session-surface details, also reference `packages/docs/orbita-layout-style.mdx`. +## App Architecture (CUPID) + +For `apps/app/src/app/**`, use CUPID: small public surfaces, intention-revealing names, minimal dependencies, predictable ownership, and domain-based structure. + +* Organize app code by product domain and app behavior, not generic buckets like `pages`, `hooks`, `utils`, or app-wide props. +* Prefer a thin shell, domain modules, and tiny shared primitives. +* Colocate state, UI, helpers, and server/client adapters with the domain that owns the workflow. +* Treat shared utilities as a last resort; promote only after multiple real consumers exist. +* Cross-domain imports should go through a small public API, not another domain's internals. +* Keep global shell code thin and use it for routing, top-level layout, runtime wiring, and shared reload/update surfaces only. +* Domain map: shell, workspace, session, connections, automations, cloud, app-settings, and kernel. +* When changing app architecture, moving ownership, or editing hot spots like `app.tsx`, `pages/dashboard.tsx`, `pages/session.tsx`, or `pages/settings.tsx`, consult the workspace-root skill at `../../.opencode/skills/cupid-app-architecture/SKILL.md` first. + ## Dev Debugging * If you change `apps/server/src`, rebuild the OpenWork server binary (`pnpm --filter openwork-server build:bin`) because `openwork` (openwork-orchestrator) runs the compiled server, not the TS sources. diff --git a/apps/app/src/app/components/session/composer.tsx b/apps/app/src/app/components/session/composer.tsx index 75e5c934..3c667c68 100644 --- a/apps/app/src/app/components/session/composer.tsx +++ b/apps/app/src/app/components/session/composer.tsx @@ -45,8 +45,6 @@ type ComposerProps = { onToggleAgentPicker: () => void; onSelectAgent: (agent: string | null) => void; setAgentPickerRef: (el: HTMLDivElement) => void; - showNotionBanner: boolean; - onNotionBannerClick: () => void; toast: string | null; onToast: (message: string) => void; listAgents: () => Promise; @@ -1623,17 +1621,6 @@ export default function Composer(props: ComposerProps) {
- - - -
diff --git a/apps/app/src/app/pages/settings.tsx b/apps/app/src/app/pages/settings.tsx index 9ba5e285..849e56c5 100644 --- a/apps/app/src/app/pages/settings.tsx +++ b/apps/app/src/app/pages/settings.tsx @@ -210,11 +210,6 @@ export type SettingsViewProps = { pickAuthorizedFolder: () => Promise; removeAuthorizedFolder: (folder: string) => Promise; resetAppConfigDefaults: () => Promise<{ ok: boolean; message: string }>; - notionStatus: "disconnected" | "connecting" | "connected" | "error"; - notionStatusDetail: string | null; - notionError: string | null; - notionBusy: boolean; - connectNotion: () => void; engineDoctorVersion: string | null; openDebugDeepLink: ( rawUrl: string, @@ -494,32 +489,6 @@ export default function SettingsView(props: SettingsViewProps) { props.checkForUpdates(); }; - const notionStatusLabel = () => { - switch (props.notionStatus) { - case "connected": - return "Connected"; - case "connecting": - return "Reload required"; - case "error": - return "Connection failed"; - default: - return "Not connected"; - } - }; - - const notionStatusStyle = () => { - if (props.notionStatus === "connected") { - return "bg-green-7/10 text-green-11 border-green-7/20"; - } - if (props.notionStatus === "error") { - return "bg-red-7/10 text-red-11 border-red-7/20"; - } - if (props.notionStatus === "connecting") { - return "bg-amber-7/10 text-amber-11 border-amber-7/20"; - } - return "bg-gray-4/60 text-gray-11 border-gray-7/50"; - }; - const [providerConnectError, setProviderConnectError] = createSignal< string | null >(null);