Skip to content

Commit a02016e

Browse files
v0.4.24: sso for chat deployment, usage indicator for file storage, mcp improvements, local kb file storage
2 parents 7f1ff7f + 8620ab2 commit a02016e

File tree

92 files changed

+2999
-1588
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+2999
-1588
lines changed

apps/docs/app/[lang]/[[...slug]]/page.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Link from 'next/link'
66
import { notFound } from 'next/navigation'
77
import { StructuredData } from '@/components/structured-data'
88
import { CodeBlock } from '@/components/ui/code-block'
9+
import { CopyPageButton } from '@/components/ui/copy-page-button'
910
import { source } from '@/lib/source'
1011

1112
export const dynamic = 'force-dynamic'
@@ -193,8 +194,19 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
193194
component: <CustomFooter />,
194195
}}
195196
>
196-
<DocsTitle>{page.data.title}</DocsTitle>
197-
<DocsDescription>{page.data.description}</DocsDescription>
197+
<div className='relative'>
198+
<div className='absolute top-1 right-0'>
199+
<CopyPageButton
200+
content={`# ${page.data.title}
201+
202+
${page.data.description || ''}
203+
204+
${page.data.content || ''}`}
205+
/>
206+
</div>
207+
<DocsTitle>{page.data.title}</DocsTitle>
208+
<DocsDescription>{page.data.description}</DocsDescription>
209+
</div>
198210
<DocsBody>
199211
<MDX
200212
components={{

apps/docs/app/global.css

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
/* Shift the sidebar slightly left from the content edge for extra breathing room */
3737
--sidebar-shift: 90px;
3838
--sidebar-offset: max(0px, calc(var(--edge-gutter) - var(--sidebar-shift)));
39-
--toc-offset: var(--edge-gutter);
39+
/* Shift TOC slightly right to match sidebar spacing for symmetry */
40+
--toc-shift: 90px;
41+
--toc-offset: max(0px, calc(var(--edge-gutter) - var(--toc-shift)));
4042
/* Sidebar and TOC have 20px internal padding - navbar accounts for this directly */
4143
/* Extra gap between sidebar/TOC and the main text content */
4244
--content-gap: 1.75rem;
@@ -107,8 +109,21 @@ aside#nd-sidebar {
107109
aside#nd-sidebar {
108110
left: var(--sidebar-offset) !important;
109111
}
110-
[data-toc] {
111-
margin-right: var(--toc-offset) !important;
112+
/* TOC positioning - target all possible selectors */
113+
[data-toc],
114+
aside[data-toc],
115+
div[data-toc],
116+
.fd-toc,
117+
#nd-toc,
118+
nav[data-toc],
119+
aside:has([role="complementary"]) {
120+
right: var(--toc-offset) !important;
121+
}
122+
123+
/* Alternative TOC container targeting */
124+
[data-docs-page] > aside:last-child,
125+
main ~ aside {
126+
right: var(--toc-offset) !important;
112127
}
113128
}
114129

apps/docs/components/navbar/navbar.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ export function Navbar() {
1919
{/* Desktop: Single row layout */}
2020
<div className='hidden h-16 w-full items-center lg:flex'>
2121
<div
22-
className='grid w-full grid-cols-[auto_1fr_auto] items-center'
22+
className='relative flex w-full items-center justify-between'
2323
style={{
2424
paddingLeft: 'calc(var(--sidebar-offset) + 20px)',
25-
paddingRight: 'calc(var(--toc-offset) + 20px)',
25+
paddingRight: 'calc(var(--toc-offset) + 60px)',
2626
}}
2727
>
28-
{/* Left cluster: translate by sidebar delta to align with sidebar edge */}
28+
{/* Left cluster: logo */}
2929
<div className='flex items-center'>
3030
<Link href='/' className='flex min-w-[100px] items-center'>
3131
<Image
@@ -38,12 +38,12 @@ export function Navbar() {
3838
</Link>
3939
</div>
4040

41-
{/* Center cluster: search */}
42-
<div className='flex flex-1 items-center justify-center pl-32'>
41+
{/* Center cluster: search - absolutely positioned to center */}
42+
<div className='-translate-x-1/2 absolute left-1/2 flex items-center justify-center'>
4343
<SearchTrigger />
4444
</div>
4545

46-
{/* Right cluster aligns with TOC edge using the same right gutter */}
46+
{/* Right cluster aligns with TOC edge */}
4747
<div className='flex items-center gap-4'>
4848
<Link
4949
href='https://sim.ai'
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
'use client'
2+
3+
import { useState } from 'react'
4+
import { Check, Copy } from 'lucide-react'
5+
6+
interface CopyPageButtonProps {
7+
content: string
8+
}
9+
10+
export function CopyPageButton({ content }: CopyPageButtonProps) {
11+
const [copied, setCopied] = useState(false)
12+
13+
const handleCopy = async () => {
14+
try {
15+
await navigator.clipboard.writeText(content)
16+
setCopied(true)
17+
setTimeout(() => setCopied(false), 2000)
18+
} catch (err) {
19+
console.error('Failed to copy:', err)
20+
}
21+
}
22+
23+
return (
24+
<button
25+
onClick={handleCopy}
26+
className='flex items-center gap-1.5 rounded-lg border border-border/40 bg-background px-2.5 py-1.5 text-muted-foreground/60 text-sm transition-all hover:border-border hover:bg-accent/50 hover:text-muted-foreground'
27+
aria-label={copied ? 'Copied to clipboard' : 'Copy page content'}
28+
>
29+
{copied ? (
30+
<>
31+
<Check className='h-4 w-4' />
32+
<span>Copied</span>
33+
</>
34+
) : (
35+
<>
36+
<Copy className='h-4 w-4' />
37+
<span>Copy page</span>
38+
</>
39+
)}
40+
</button>
41+
)
42+
}

apps/docs/content/docs/de/tools/clay.mdx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -207,18 +207,18 @@ Populate Clay with data from a JSON file. Enables direct communication and notif
207207

208208
#### Input
209209

210-
| Parameter | Type | Required | Description |
210+
| Parameter | Typ | Erforderlich | Beschreibung |
211211
| --------- | ---- | -------- | ----------- |
212-
| `webhookURL` | string | Yes | The webhook URL to populate |
213-
| `data` | json | Yes | The data to populate |
214-
| `authToken` | string | Yes | Auth token for Clay webhook authentication |
212+
| `webhookURL` | string | Ja | Die Webhook-URL, die befüllt werden soll |
213+
| `data` | json | Ja | Die Daten, die befüllt werden sollen |
214+
| `authToken` | string | Nein | Optionaler Auth-Token für die Clay-Webhook-Authentifizierung \(die meisten Webhooks benötigen dies nicht\) |
215215

216216
#### Output
217217

218-
| Parameter | Type | Description |
218+
| Parameter | Typ | Beschreibung |
219219
| --------- | ---- | ----------- |
220-
| `success` | boolean | Operation success status |
221-
| `output` | json | Clay populate operation results including response data from Clay webhook |
220+
| `data` | json | Antwortdaten vom Clay-Webhook |
221+
| `metadata` | object | Webhook-Antwort-Metadaten |
222222

223223
## Notes
224224

apps/docs/content/docs/de/tools/discord.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
77

88
<BlockInfoCard
99
type="discord"
10-
color="#E0E0E0"
10+
color="#5865F2"
1111
icon={true}
1212
iconSvg={`<svg className="block-icon"
1313

apps/docs/content/docs/de/tools/qdrant.mdx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ Suche nach ähnlichen Vektoren in einer Qdrant-Sammlung
139139
| `collection` | string | Ja | Sammlungsname |
140140
| `vector` | array | Ja | Zu suchender Vektor |
141141
| `limit` | number | Nein | Anzahl der zurückzugebenden Ergebnisse |
142-
| `filter` | object | Nein | Filter für die Suche |
142+
| `filter` | object | Nein | Auf die Suche anzuwendender Filter |
143+
| `search_return_data` | string | Nein | Aus der Suche zurückzugebende Daten |
143144
| `with_payload` | boolean | Nein | Payload in Antwort einschließen |
144145
| `with_vector` | boolean | Nein | Vektor in Antwort einschließen |
145146

@@ -161,7 +162,8 @@ Punkte anhand der ID aus einer Qdrant-Sammlung abrufen
161162
| `url` | string | Ja | Qdrant-Basis-URL |
162163
| `apiKey` | string | Nein | Qdrant-API-Schlüssel \(optional\) |
163164
| `collection` | string | Ja | Sammlungsname |
164-
| `ids` | array | Ja | Array von abzurufenden Punkt-IDs |
165+
| `ids` | array | Ja | Array von Punkt-IDs zum Abrufen |
166+
| `fetch_return_data` | string | Nein | Aus dem Abruf zurückzugebende Daten |
165167
| `with_payload` | boolean | Nein | Payload in Antwort einschließen |
166168
| `with_vector` | boolean | Nein | Vektor in Antwort einschließen |
167169

apps/docs/content/docs/en/tools/clay.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,14 +214,14 @@ Populate Clay with data from a JSON file. Enables direct communication and notif
214214
| --------- | ---- | -------- | ----------- |
215215
| `webhookURL` | string | Yes | The webhook URL to populate |
216216
| `data` | json | Yes | The data to populate |
217-
| `authToken` | string | Yes | Auth token for Clay webhook authentication |
217+
| `authToken` | string | No | Optional auth token for Clay webhook authentication \(most webhooks do not require this\) |
218218

219219
#### Output
220220

221221
| Parameter | Type | Description |
222222
| --------- | ---- | ----------- |
223-
| `success` | boolean | Operation success status |
224-
| `output` | json | Clay populate operation results including response data from Clay webhook |
223+
| `data` | json | Response data from Clay webhook |
224+
| `metadata` | object | Webhook response metadata |
225225

226226

227227

apps/docs/content/docs/en/tools/discord.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
77

88
<BlockInfoCard
99
type="discord"
10-
color="#E0E0E0"
10+
color="#5865F2"
1111
icon={true}
1212
iconSvg={`<svg className="block-icon"
1313

apps/docs/content/docs/en/tools/qdrant.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ Search for similar vectors in a Qdrant collection
143143
| `vector` | array | Yes | Vector to search for |
144144
| `limit` | number | No | Number of results to return |
145145
| `filter` | object | No | Filter to apply to the search |
146+
| `search_return_data` | string | No | Data to return from search |
146147
| `with_payload` | boolean | No | Include payload in response |
147148
| `with_vector` | boolean | No | Include vector in response |
148149

@@ -165,6 +166,7 @@ Fetch points by ID from a Qdrant collection
165166
| `apiKey` | string | No | Qdrant API key \(optional\) |
166167
| `collection` | string | Yes | Collection name |
167168
| `ids` | array | Yes | Array of point IDs to fetch |
169+
| `fetch_return_data` | string | No | Data to return from fetch |
168170
| `with_payload` | boolean | No | Include payload in response |
169171
| `with_vector` | boolean | No | Include vector in response |
170172

0 commit comments

Comments
 (0)