mirror of
https://github.com/simstudioai/sim.git
synced 2026-04-06 03:00:16 -04:00
* fix(landing): update broken links, change colors * update integration pages * update icons * link to tag * fix(landing): resolve build errors and address PR review comments - Extract useEffect redirect into ExternalRedirect client component to fix fs/promises bundling error in privacy/terms server pages - Fix InfisicalIcon fill='black' → fill='currentColor' for theme compatibility - Add target="_blank" + rel="noopener noreferrer" to enterprise Typeform link - Install @types/micromatch to fix missing type declarations build error Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(icons): fix InfisicalIcon fill='black' → fill='currentColor' in docs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * remove hardcoded ff * fix(generate-docs): fix tool description extraction for two-step and name-mismatch patterns Replace the fragile first-id/first-description heuristic with a per-id window search: for each id: 'tool_id' match, scan the next 600 chars (stopping before any params: block) for description: and name: fields. This correctly handles the two-step pattern used by Intercom and others where the ToolConfig export comes after a separate base object whose params: would have cut off the old approach. Add an exact-name fallback that checks tools.access for a tool whose name matches the operation label — handles cases where block op IDs are short aliases (e.g. Slack 'send') while the tool ID is more descriptive ('slack_message') but the tool name 'Slack Message' still differs. Remove the word-overlap scoring fallback which was producing incorrect descriptions (Intercom all saying 'Intercom API access token', Reddit Save/Unsave inverted, etc.). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { getNavBlogPosts } from '@/lib/blog/registry'
|
|
import Footer from '@/app/(home)/components/footer/footer'
|
|
import Navbar from '@/app/(home)/components/navbar/navbar'
|
|
|
|
export default async function StudioLayout({ children }: { children: React.ReactNode }) {
|
|
const blogPosts = await getNavBlogPosts()
|
|
const orgJsonLd = {
|
|
'@context': 'https://schema.org',
|
|
'@type': 'Organization',
|
|
name: 'Sim',
|
|
url: 'https://sim.ai',
|
|
logo: 'https://sim.ai/logo/primary/small.png',
|
|
sameAs: ['https://x.com/simdotai'],
|
|
}
|
|
|
|
const websiteJsonLd = {
|
|
'@context': 'https://schema.org',
|
|
'@type': 'WebSite',
|
|
name: 'Sim',
|
|
url: 'https://sim.ai',
|
|
potentialAction: {
|
|
'@type': 'SearchAction',
|
|
target: 'https://sim.ai/search?q={search_term_string}',
|
|
'query-input': 'required name=search_term_string',
|
|
},
|
|
}
|
|
|
|
return (
|
|
<div className='flex min-h-screen flex-col bg-[#1C1C1C] font-[430] font-season text-[#ECECEC]'>
|
|
<script
|
|
type='application/ld+json'
|
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(orgJsonLd) }}
|
|
/>
|
|
<script
|
|
type='application/ld+json'
|
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(websiteJsonLd) }}
|
|
/>
|
|
<header>
|
|
<Navbar blogPosts={blogPosts} />
|
|
</header>
|
|
<main className='relative flex-1'>{children}</main>
|
|
<Footer />
|
|
</div>
|
|
)
|
|
}
|