From 8fa4f3fdbb8b6453a099b4bfc9bc077f1022b7d5 Mon Sep 17 00:00:00 2001 From: Siddharth Ganesan <33737564+Sg312@users.noreply.github.com> Date: Tue, 17 Mar 2026 07:55:50 -0700 Subject: [PATCH] fix(mothership): thinking and subagent text (#3613) * Thinking v0 * Change * Fix * improvement(ui/ux): mothership chat experience * user input animation * improvement(landing): desktop complete * auth and 404 * mobile friendliness and home templates * improvement(home): templates * fix: feature flags * address comments --------- Co-authored-by: Emir Karabeg --- apps/docs/app/layout.tsx | 28 +- apps/docs/public/favicon/site.webmanifest | 33 +- apps/docs/public/icon.svg | 14 + .../app/(auth)/components/branded-button.tsx | 2 +- .../(auth)/components/status-page-layout.tsx | 8 +- apps/sim/app/(auth)/login/login-form.tsx | 8 +- apps/sim/app/(auth)/oauth/consent/page.tsx | 16 +- .../reset-password/reset-password-content.tsx | 6 +- apps/sim/app/(auth)/signup/signup-form.tsx | 8 +- apps/sim/app/(auth)/verify/verify-content.tsx | 4 +- .../collaboration/collaboration.tsx | 57 +- .../features/components/features-preview.tsx | 1110 ++++++++++++++++- .../(home)/components/features/features.tsx | 62 +- .../(home)/components/footer/footer-cta.tsx | 100 ++ .../app/(home)/components/footer/footer.tsx | 303 +++-- apps/sim/app/(home)/components/hero/hero.tsx | 6 +- .../preview-block-node.tsx | 4 + .../landing-preview-workflow/workflow-data.ts | 6 +- .../landing-preview/landing-preview.tsx | 2 +- .../navbar/components/blog-dropdown.tsx | 101 ++ .../navbar/components/docs-dropdown.tsx | 92 ++ .../app/(home)/components/navbar/navbar.tsx | 335 ++++- .../app/(home)/components/pricing/pricing.tsx | 4 +- .../(home)/components/templates/templates.tsx | 211 ++-- .../{studio => blog}/[slug]/back-link.tsx | 4 +- .../{studio => blog}/[slug]/page.tsx | 8 +- .../{studio => blog}/[slug]/share-button.tsx | 0 .../{studio => blog}/authors/[id]/page.tsx | 4 +- .../app/(landing)/{studio => blog}/layout.tsx | 0 .../app/(landing)/{studio => blog}/page.tsx | 24 +- .../(landing)/{studio => blog}/post-grid.tsx | 2 +- .../{studio => blog}/rss.xml/route.ts | 2 +- .../sitemap-images.xml/route.ts | 0 .../(landing)/{studio => blog}/tags/page.tsx | 4 +- .../(landing)/components/footer/footer.tsx | 4 +- .../app/(landing)/components/legal-layout.tsx | 2 +- .../app/_shell/providers/theme-provider.tsx | 2 +- apps/sim/app/changelog/layout.tsx | 2 +- apps/sim/app/llms.txt/route.ts | 2 +- apps/sim/app/not-found.tsx | 35 +- apps/sim/app/sitemap.ts | 4 +- .../components/agent-group/agent-group.tsx | 11 +- .../components/agent-group/tool-call-item.tsx | 127 +- .../components/chat-content/chat-content.tsx | 4 +- .../components/special-tags/special-tags.tsx | 21 +- .../message-content/message-content.tsx | 46 +- .../home/components/message-content/utils.ts | 4 +- .../mothership-view/mothership-view.tsx | 2 +- .../queued-messages/queued-messages.tsx | 16 +- .../components/template-prompts/consts.ts | 5 +- .../template-prompts/template-prompts.tsx | 361 +++++- .../home/components/user-input/user-input.tsx | 4 +- .../user-message-content.tsx | 2 +- .../app/workspace/[workspaceId]/home/home.tsx | 57 +- .../[workspaceId]/home/hooks/use-chat.ts | 5 +- .../app/workspace/[workspaceId]/home/types.ts | 9 + .../create-schedule-modal/schedule-modal.tsx | 2 +- .../settings-sidebar/settings-sidebar.tsx | 8 +- .../workspace-header/workspace-header.tsx | 2 +- .../w/components/sidebar/sidebar.tsx | 384 +++--- .../emcn/icons/animate/pills-ring.module.css | 22 + apps/sim/components/emcn/icons/index.ts | 1 + apps/sim/components/emcn/icons/pills-ring.tsx | 52 + apps/sim/components/icons.tsx | 2 +- apps/sim/content/authors/adam.json | 7 - apps/sim/content/authors/emir.json | 2 +- apps/sim/content/authors/sid.json | 2 +- apps/sim/content/authors/vik.json | 2 +- apps/sim/content/authors/waleed.json | 2 +- apps/sim/content/blog/copilot/index.mdx | 4 +- apps/sim/content/blog/emcn/index.mdx | 6 +- apps/sim/content/blog/enterprise/index.mdx | 20 +- apps/sim/content/blog/executor/index.mdx | 10 +- apps/sim/content/blog/multiplayer/index.mdx | 4 +- .../blog/openai-vs-n8n-vs-sim/index.mdx | 18 +- apps/sim/content/blog/series-a/index.mdx | 6 +- apps/sim/content/blog/v0-5/index.mdx | 18 +- apps/sim/lib/blog/seo.ts | 6 +- apps/sim/next.config.ts | 14 +- .../public/{studio => blog}/authors/emir.jpg | Bin .../public/{studio => blog}/authors/sid.jpg | Bin .../public/{studio => blog}/authors/vik.jpg | Bin .../{studio => blog}/authors/waleed.jpg | Bin .../public/{studio => blog}/copilot/cover.png | Bin .../public/{studio => blog}/emcn/cover.png | Bin .../enterprise/access-control.png | Bin .../{studio => blog}/enterprise/byok.png | Bin .../enterprise/compliance.png | Bin .../{studio => blog}/enterprise/cover.png | Bin .../enterprise/integration-controls.png | Bin .../enterprise/model-providers.png | Bin .../enterprise/platform-controls.png | Bin .../enterprise/self-hosted.png | Bin .../{studio => blog}/enterprise/sso.png | Bin .../{studio => blog}/executor/cover.png | Bin .../executor/edge-pruning.png | Bin .../{studio => blog}/executor/hitl-loop.png | Bin .../executor/loop-sentinels.png | Bin .../{studio => blog}/multiplayer/cover.png | Bin .../openai-vs-n8n-vs-sim/copilot.png | Bin .../openai-vs-n8n-vs-sim/logs.png | Bin .../openai-vs-n8n-vs-sim/n8n.png | Bin .../openai-vs-n8n-vs-sim/openai.png | Bin .../openai-vs-n8n-vs-sim/sim.png | Bin .../openai-vs-n8n-vs-sim/templates.png | Bin .../openai-vs-n8n-vs-sim/widgets.png | Bin .../openai-vs-n8n-vs-sim/workflow.png | Bin .../{studio => blog}/series-a/cover.png | Bin .../public/{studio => blog}/series-a/team.jpg | Bin apps/sim/public/blog/thumbnails/copilot.webp | Bin 0 -> 6774 bytes .../public/blog/thumbnails/enterprise.webp | Bin 0 -> 10156 bytes apps/sim/public/blog/thumbnails/executor.webp | Bin 0 -> 3256 bytes .../public/blog/thumbnails/multiplayer.webp | Bin 0 -> 946 bytes apps/sim/public/blog/thumbnails/series-a.webp | Bin 0 -> 4612 bytes apps/sim/public/blog/thumbnails/v0-5.webp | Bin 0 -> 3548 bytes .../{studio => blog}/v0-5/collaboration.jpg | Bin .../{studio => blog}/v0-5/collaboration.png | Bin .../public/{studio => blog}/v0-5/copilot.jpg | Bin .../public/{studio => blog}/v0-5/cover.png | Bin .../{studio => blog}/v0-5/dashboard.jpg | Bin .../{studio => blog}/v0-5/integrations.png | Bin apps/sim/public/{studio => blog}/v0-5/kb.png | Bin apps/sim/public/{studio => blog}/v0-5/mcp.png | Bin .../{studio => blog}/v0-5/versioning.png | Bin .../public/landing/docs-getting-started.svg | 21 + apps/sim/public/landing/docs-intro.svg | 16 + apps/sim/tailwind.config.ts | 6 + 127 files changed, 3106 insertions(+), 824 deletions(-) create mode 100644 apps/docs/public/icon.svg create mode 100644 apps/sim/app/(home)/components/footer/footer-cta.tsx create mode 100644 apps/sim/app/(home)/components/navbar/components/blog-dropdown.tsx create mode 100644 apps/sim/app/(home)/components/navbar/components/docs-dropdown.tsx rename apps/sim/app/(landing)/{studio => blog}/[slug]/back-link.tsx (94%) rename apps/sim/app/(landing)/{studio => blog}/[slug]/page.tsx (95%) rename apps/sim/app/(landing)/{studio => blog}/[slug]/share-button.tsx (100%) rename apps/sim/app/(landing)/{studio => blog}/authors/[id]/page.tsx (95%) rename apps/sim/app/(landing)/{studio => blog}/layout.tsx (100%) rename apps/sim/app/(landing)/{studio => blog}/page.tsx (75%) rename apps/sim/app/(landing)/{studio => blog}/post-grid.tsx (97%) rename apps/sim/app/(landing)/{studio => blog}/rss.xml/route.ts (97%) rename apps/sim/app/(landing)/{studio => blog}/sitemap-images.xml/route.ts (100%) rename apps/sim/app/(landing)/{studio => blog}/tags/page.tsx (91%) create mode 100644 apps/sim/components/emcn/icons/animate/pills-ring.module.css create mode 100644 apps/sim/components/emcn/icons/pills-ring.tsx delete mode 100644 apps/sim/content/authors/adam.json rename apps/sim/public/{studio => blog}/authors/emir.jpg (100%) rename apps/sim/public/{studio => blog}/authors/sid.jpg (100%) rename apps/sim/public/{studio => blog}/authors/vik.jpg (100%) rename apps/sim/public/{studio => blog}/authors/waleed.jpg (100%) rename apps/sim/public/{studio => blog}/copilot/cover.png (100%) rename apps/sim/public/{studio => blog}/emcn/cover.png (100%) rename apps/sim/public/{studio => blog}/enterprise/access-control.png (100%) rename apps/sim/public/{studio => blog}/enterprise/byok.png (100%) rename apps/sim/public/{studio => blog}/enterprise/compliance.png (100%) rename apps/sim/public/{studio => blog}/enterprise/cover.png (100%) rename apps/sim/public/{studio => blog}/enterprise/integration-controls.png (100%) rename apps/sim/public/{studio => blog}/enterprise/model-providers.png (100%) rename apps/sim/public/{studio => blog}/enterprise/platform-controls.png (100%) rename apps/sim/public/{studio => blog}/enterprise/self-hosted.png (100%) rename apps/sim/public/{studio => blog}/enterprise/sso.png (100%) rename apps/sim/public/{studio => blog}/executor/cover.png (100%) rename apps/sim/public/{studio => blog}/executor/edge-pruning.png (100%) rename apps/sim/public/{studio => blog}/executor/hitl-loop.png (100%) rename apps/sim/public/{studio => blog}/executor/loop-sentinels.png (100%) rename apps/sim/public/{studio => blog}/multiplayer/cover.png (100%) rename apps/sim/public/{studio => blog}/openai-vs-n8n-vs-sim/copilot.png (100%) rename apps/sim/public/{studio => blog}/openai-vs-n8n-vs-sim/logs.png (100%) rename apps/sim/public/{studio => blog}/openai-vs-n8n-vs-sim/n8n.png (100%) rename apps/sim/public/{studio => blog}/openai-vs-n8n-vs-sim/openai.png (100%) rename apps/sim/public/{studio => blog}/openai-vs-n8n-vs-sim/sim.png (100%) rename apps/sim/public/{studio => blog}/openai-vs-n8n-vs-sim/templates.png (100%) rename apps/sim/public/{studio => blog}/openai-vs-n8n-vs-sim/widgets.png (100%) rename apps/sim/public/{studio => blog}/openai-vs-n8n-vs-sim/workflow.png (100%) rename apps/sim/public/{studio => blog}/series-a/cover.png (100%) rename apps/sim/public/{studio => blog}/series-a/team.jpg (100%) create mode 100644 apps/sim/public/blog/thumbnails/copilot.webp create mode 100644 apps/sim/public/blog/thumbnails/enterprise.webp create mode 100644 apps/sim/public/blog/thumbnails/executor.webp create mode 100644 apps/sim/public/blog/thumbnails/multiplayer.webp create mode 100644 apps/sim/public/blog/thumbnails/series-a.webp create mode 100644 apps/sim/public/blog/thumbnails/v0-5.webp rename apps/sim/public/{studio => blog}/v0-5/collaboration.jpg (100%) rename apps/sim/public/{studio => blog}/v0-5/collaboration.png (100%) rename apps/sim/public/{studio => blog}/v0-5/copilot.jpg (100%) rename apps/sim/public/{studio => blog}/v0-5/cover.png (100%) rename apps/sim/public/{studio => blog}/v0-5/dashboard.jpg (100%) rename apps/sim/public/{studio => blog}/v0-5/integrations.png (100%) rename apps/sim/public/{studio => blog}/v0-5/kb.png (100%) rename apps/sim/public/{studio => blog}/v0-5/mcp.png (100%) rename apps/sim/public/{studio => blog}/v0-5/versioning.png (100%) create mode 100644 apps/sim/public/landing/docs-getting-started.svg create mode 100644 apps/sim/public/landing/docs-intro.svg diff --git a/apps/docs/app/layout.tsx b/apps/docs/app/layout.tsx index 5548fd7e74..06e06b83ea 100644 --- a/apps/docs/app/layout.tsx +++ b/apps/docs/app/layout.tsx @@ -1,9 +1,21 @@ import type { ReactNode } from 'react' +import type { Viewport } from 'next' export default function RootLayout({ children }: { children: ReactNode }) { return children } +export const viewport: Viewport = { + width: 'device-width', + initialScale: 1, + maximumScale: 1, + userScalable: false, + themeColor: [ + { media: '(prefers-color-scheme: light)', color: '#ffffff' }, + { media: '(prefers-color-scheme: dark)', color: '#0c0c0c' }, + ], +} + export const metadata = { metadataBase: new URL('https://docs.sim.ai'), title: { @@ -12,6 +24,9 @@ export const metadata = { }, description: 'Documentation for Sim — the open-source platform to build AI agents and run your agentic workforce. Connect 1,000+ integrations and LLMs to deploy and orchestrate agentic workflows.', + applicationName: 'Sim Docs', + generator: 'Next.js', + referrer: 'origin-when-cross-origin' as const, keywords: [ 'AI agents', 'agentic workforce', @@ -37,17 +52,28 @@ export const metadata = { manifest: '/favicon/site.webmanifest', icons: { icon: [ + { url: '/icon.svg', type: 'image/svg+xml', sizes: 'any' }, { url: '/favicon/favicon-16x16.png', sizes: '16x16', type: 'image/png' }, { url: '/favicon/favicon-32x32.png', sizes: '32x32', type: 'image/png' }, + { url: '/favicon/android-chrome-192x192.png', sizes: '192x192', type: 'image/png' }, + { url: '/favicon/android-chrome-512x512.png', sizes: '512x512', type: 'image/png' }, ], apple: '/favicon/apple-touch-icon.png', - shortcut: '/favicon/favicon.ico', + shortcut: '/icon.svg', }, appleWebApp: { capable: true, statusBarStyle: 'default', title: 'Sim Docs', }, + formatDetection: { + telephone: false, + }, + other: { + 'apple-mobile-web-app-capable': 'yes', + 'mobile-web-app-capable': 'yes', + 'msapplication-TileColor': '#33C482', + }, openGraph: { type: 'website', locale: 'en_US', diff --git a/apps/docs/public/favicon/site.webmanifest b/apps/docs/public/favicon/site.webmanifest index 981d97f156..e0af1ce7df 100644 --- a/apps/docs/public/favicon/site.webmanifest +++ b/apps/docs/public/favicon/site.webmanifest @@ -1,21 +1,42 @@ { - "name": "MyWebSite", - "short_name": "MySite", + "name": "Sim Documentation — Build AI Agents & Run Your Agentic Workforce", + "short_name": "Sim Docs", + "description": "Documentation for Sim — the open-source platform to build AI agents and run your agentic workforce. Connect 1,000+ integrations and LLMs to deploy and orchestrate agentic workflows.", + "start_url": "/", + "scope": "/", "icons": [ { - "src": "/web-app-manifest-192x192.png", + "src": "/favicon/web-app-manifest-192x192.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "/web-app-manifest-512x512.png", + "src": "/favicon/web-app-manifest-512x512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" + }, + { + "src": "/favicon/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/favicon/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "/favicon/apple-touch-icon.png", + "sizes": "180x180", + "type": "image/png" } ], - "theme_color": "#ffffff", + "theme_color": "#33C482", "background_color": "#ffffff", - "display": "standalone" + "display": "standalone", + "categories": ["productivity", "developer", "business"], + "lang": "en-US", + "dir": "ltr" } diff --git a/apps/docs/public/icon.svg b/apps/docs/public/icon.svg new file mode 100644 index 0000000000..f5a6477f76 --- /dev/null +++ b/apps/docs/public/icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/apps/sim/app/(auth)/components/branded-button.tsx b/apps/sim/app/(auth)/components/branded-button.tsx index b044e3f33c..245cd7c9c6 100644 --- a/apps/sim/app/(auth)/components/branded-button.tsx +++ b/apps/sim/app/(auth)/components/branded-button.tsx @@ -55,7 +55,7 @@ export const BrandedButton = forwardRef( onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave} className={cn( - 'group inline-flex h-[30px] items-center justify-center gap-[7px] rounded-[5px] border px-[9px] text-[13.5px] transition-colors disabled:cursor-not-allowed disabled:opacity-50', + 'group inline-flex h-[32px] items-center justify-center gap-[8px] rounded-[5px] border px-[10px] font-[430] font-season text-[14px] transition-colors disabled:cursor-not-allowed disabled:opacity-50', !hasCustomColor && 'border-[#FFFFFF] bg-[#FFFFFF] text-black hover:border-[#E0E0E0] hover:bg-[#E0E0E0]', fullWidth && 'w-full', diff --git a/apps/sim/app/(auth)/components/status-page-layout.tsx b/apps/sim/app/(auth)/components/status-page-layout.tsx index 30a1081930..7e353e0f19 100644 --- a/apps/sim/app/(auth)/components/status-page-layout.tsx +++ b/apps/sim/app/(auth)/components/status-page-layout.tsx @@ -28,8 +28,12 @@ export function StatusPageLayout({
-

{title}

-

{description}

+

+ {title} +

+

+ {description} +

{children &&
{children}
}
diff --git a/apps/sim/app/(auth)/login/login-form.tsx b/apps/sim/app/(auth)/login/login-form.tsx index 464071321a..85e924fd32 100644 --- a/apps/sim/app/(auth)/login/login-form.tsx +++ b/apps/sim/app/(auth)/login/login-form.tsx @@ -383,8 +383,12 @@ export default function LoginPage({ return ( <>
-

Sign in

-

Enter your details

+

+ Sign in +

+

+ Enter your details +

{/* SSO Login Button (primary top-only when it is the only method) */} diff --git a/apps/sim/app/(auth)/oauth/consent/page.tsx b/apps/sim/app/(auth)/oauth/consent/page.tsx index 96269c586d..0138a7dd6d 100644 --- a/apps/sim/app/(auth)/oauth/consent/page.tsx +++ b/apps/sim/app/(auth)/oauth/consent/page.tsx @@ -127,10 +127,12 @@ export default function OAuthConsentPage() { return (
-

+

Authorize Application

-

Loading application details...

+

+ Loading application details... +

) @@ -140,10 +142,12 @@ export default function OAuthConsentPage() { return (
-

+

Authorization Error

-

{error}

+

+ {error} +

router.push('/')}>Return to Home @@ -181,10 +185,10 @@ export default function OAuthConsentPage() {
-

+

Authorize Application

-

+

{clientName} is requesting access to your account

diff --git a/apps/sim/app/(auth)/reset-password/reset-password-content.tsx b/apps/sim/app/(auth)/reset-password/reset-password-content.tsx index 8d72c687a6..9127c6e0b4 100644 --- a/apps/sim/app/(auth)/reset-password/reset-password-content.tsx +++ b/apps/sim/app/(auth)/reset-password/reset-password-content.tsx @@ -74,10 +74,12 @@ function ResetPasswordContent() { return ( <>
-

+

Reset your password

-

Enter a new password for your account

+

+ Enter a new password for your account +

diff --git a/apps/sim/app/(auth)/signup/signup-form.tsx b/apps/sim/app/(auth)/signup/signup-form.tsx index 498ebf19d4..b04ad8af4c 100644 --- a/apps/sim/app/(auth)/signup/signup-form.tsx +++ b/apps/sim/app/(auth)/signup/signup-form.tsx @@ -341,8 +341,12 @@ function SignupFormContent({ return ( <>
-

Create an account

-

Create an account or log in

+

+ Create an account +

+

+ Create an account or log in +

{/* SSO Login Button (primary top-only when it is the only method) */} diff --git a/apps/sim/app/(auth)/verify/verify-content.tsx b/apps/sim/app/(auth)/verify/verify-content.tsx index dafdf1f9e9..392811ff2e 100644 --- a/apps/sim/app/(auth)/verify/verify-content.tsx +++ b/apps/sim/app/(auth)/verify/verify-content.tsx @@ -59,10 +59,10 @@ function VerificationForm({ return ( <>
-

+

{isVerified ? 'Email Verified!' : 'Verify Your Email'}

-

+

{isVerified ? 'Your email has been verified. Redirecting to dashboard...' : !isEmailVerificationEnabled diff --git a/apps/sim/app/(home)/components/collaboration/collaboration.tsx b/apps/sim/app/(home)/components/collaboration/collaboration.tsx index 9f6b2102f7..383779ac83 100644 --- a/apps/sim/app/(home)/components/collaboration/collaboration.tsx +++ b/apps/sim/app/(home)/components/collaboration/collaboration.tsx @@ -222,34 +222,15 @@ export default function Collaboration() {