Hanzo Dev commited on
Commit
66f6f76
·
0 Parent(s):

Initial commit for changelog template

Browse files
.gitignore ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ node_modules
2
+ .next
3
+ .cache
4
+ dist
5
+ build
6
+ .DS_Store
7
+ *.log
8
+ .env.local
9
+ .env.*.local
10
+ *.tsbuildinfo
Dockerfile ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM node:20-slim
2
+
3
+ WORKDIR /app
4
+
5
+ # Copy package files
6
+ COPY package*.json ./
7
+
8
+ # Install dependencies
9
+ RUN npm ci --only=production
10
+
11
+ # Copy application files
12
+ COPY . .
13
+
14
+ # Build the application
15
+ RUN npm run build
16
+
17
+ # Expose port
18
+ EXPOSE 3000
19
+
20
+ # Start the application
21
+ CMD ["npm", "start"]
README.md ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: changelog Template
3
+ emoji: 🚀
4
+ colorFrom: gray
5
+ colorTo: black
6
+ sdk: docker
7
+ app_port: 3000
8
+ pinned: true
9
+ ---
10
+
11
+ # changelog Template
12
+
13
+ A Hanzo template for building modern applications.
14
+
15
+ ## Features
16
+ - Built with @hanzo/ui
17
+ - Fully responsive
18
+ - TypeScript support
19
+ - Tailwind CSS styling
20
+ - shadcn/ui components
21
+
22
+ ## Installation
23
+
24
+ ```bash
25
+ npx create-hanzo-app --template changelog
26
+ ```
27
+
28
+ ## Development
29
+
30
+ ```bash
31
+ npm install
32
+ npm run dev
33
+ ```
34
+
35
+ ## Build
36
+
37
+ ```bash
38
+ npm run build
39
+ ```
40
+
41
+ Check out the [Hanzo Template Gallery](https://huggingface.co/spaces/hanzoai/gallery) for more templates.
app/favicon.ico ADDED
app/globals.css ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "tailwindcss";
2
+ @import "tw-animate-css";
3
+ @import 'fumadocs-ui/css/neutral.css';
4
+ @import 'fumadocs-ui/css/preset.css';
5
+
6
+ @custom-variant dark (&:is(.dark *));
7
+
8
+ @theme inline {
9
+ --color-background: var(--background);
10
+ --color-foreground: var(--foreground);
11
+ --color-sidebar-ring: var(--sidebar-ring);
12
+ --color-sidebar-border: var(--sidebar-border);
13
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
14
+ --color-sidebar-accent: var(--sidebar-accent);
15
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
16
+ --color-sidebar-primary: var(--sidebar-primary);
17
+ --color-sidebar-foreground: var(--sidebar-foreground);
18
+ --color-sidebar: var(--sidebar);
19
+ --color-chart-5: var(--chart-5);
20
+ --color-chart-4: var(--chart-4);
21
+ --color-chart-3: var(--chart-3);
22
+ --color-chart-2: var(--chart-2);
23
+ --color-chart-1: var(--chart-1);
24
+ --color-ring: var(--ring);
25
+ --color-input: var(--input);
26
+ --color-border: var(--border);
27
+ --color-destructive: var(--destructive);
28
+ --color-accent-foreground: var(--accent-foreground);
29
+ --color-accent: var(--accent);
30
+ --color-muted-foreground: var(--muted-foreground);
31
+ --color-muted: var(--muted);
32
+ --color-secondary-foreground: var(--secondary-foreground);
33
+ --color-secondary: var(--secondary);
34
+ --color-primary-foreground: var(--primary-foreground);
35
+ --color-primary: var(--primary);
36
+ --color-popover-foreground: var(--popover-foreground);
37
+ --color-popover: var(--popover);
38
+ --color-card-foreground: var(--card-foreground);
39
+ --color-card: var(--card);
40
+ --radius-sm: calc(var(--radius) - 4px);
41
+ --radius-md: calc(var(--radius) - 2px);
42
+ --radius-lg: var(--radius);
43
+ --radius-xl: calc(var(--radius) + 4px);
44
+ --animate-accordion-down: accordion-down 0.2s ease-out;
45
+ --animate-accordion-up: accordion-up 0.2s ease-out;
46
+
47
+
48
+ @keyframes accordion-down {
49
+ from {
50
+ height: 0;
51
+ }
52
+ to {
53
+ height: var(--radix-accordion-content-height);
54
+ }
55
+ }
56
+
57
+ @keyframes accordion-up {
58
+ from {
59
+ height: var(--radix-accordion-content-height);
60
+ }
61
+ to {
62
+ height: 0;
63
+ }
64
+ }
65
+ }
66
+
67
+ :root {
68
+ --font-sans: var(--font-geist-sans);
69
+ --font-mono: var(--font-geist-mono);
70
+ --radius: 0.625rem;
71
+ --background: oklch(1 0 0);
72
+ --foreground: oklch(0.145 0 0);
73
+ --card: oklch(1 0 0);
74
+ --card-foreground: oklch(0.145 0 0);
75
+ --popover: oklch(1 0 0);
76
+ --popover-foreground: oklch(0.145 0 0);
77
+ --primary: oklch(0.205 0 0);
78
+ --primary-foreground: oklch(0.985 0 0);
79
+ --secondary: oklch(0.97 0 0);
80
+ --secondary-foreground: oklch(0.205 0 0);
81
+ --muted: oklch(0.97 0 0);
82
+ --muted-foreground: oklch(0.556 0 0);
83
+ --accent: oklch(0.97 0 0);
84
+ --accent-foreground: oklch(0.205 0 0);
85
+ --destructive: oklch(0.577 0.245 27.325);
86
+ --border: oklch(0.922 0 0);
87
+ --input: oklch(0.922 0 0);
88
+ --ring: oklch(0.708 0 0);
89
+ --chart-1: oklch(0.646 0.222 41.116);
90
+ --chart-2: oklch(0.6 0.118 184.704);
91
+ --chart-3: oklch(0.398 0.07 227.392);
92
+ --chart-4: oklch(0.828 0.189 84.429);
93
+ --chart-5: oklch(0.769 0.188 70.08);
94
+ --sidebar: oklch(0.985 0 0);
95
+ --sidebar-foreground: oklch(0.145 0 0);
96
+ --sidebar-primary: oklch(0.205 0 0);
97
+ --sidebar-primary-foreground: oklch(0.985 0 0);
98
+ --sidebar-accent: oklch(0.97 0 0);
99
+ --sidebar-accent-foreground: oklch(0.205 0 0);
100
+ --sidebar-border: oklch(0.922 0 0);
101
+ --sidebar-ring: oklch(0.708 0 0);
102
+ }
103
+
104
+ .dark {
105
+ --background: oklch(0.145 0 0);
106
+ --foreground: oklch(0.985 0 0);
107
+ --card: oklch(0.205 0 0);
108
+ --card-foreground: oklch(0.985 0 0);
109
+ --popover: oklch(0.205 0 0);
110
+ --popover-foreground: oklch(0.985 0 0);
111
+ --primary: oklch(0.922 0 0);
112
+ --primary-foreground: oklch(0.205 0 0);
113
+ --secondary: oklch(0.269 0 0);
114
+ --secondary-foreground: oklch(0.985 0 0);
115
+ --muted: oklch(0.269 0 0);
116
+ --muted-foreground: oklch(0.708 0 0);
117
+ --accent: oklch(0.269 0 0);
118
+ --accent-foreground: oklch(0.985 0 0);
119
+ --destructive: oklch(0.704 0.191 22.216);
120
+ --border: oklch(1 0 0 / 10%);
121
+ --input: oklch(1 0 0 / 15%);
122
+ --ring: oklch(0.556 0 0);
123
+ --chart-1: oklch(0.488 0.243 264.376);
124
+ --chart-2: oklch(0.696 0.17 162.48);
125
+ --chart-3: oklch(0.769 0.188 70.08);
126
+ --chart-4: oklch(0.627 0.265 303.9);
127
+ --chart-5: oklch(0.645 0.246 16.439);
128
+ --sidebar: oklch(0.205 0 0);
129
+ --sidebar-foreground: oklch(0.985 0 0);
130
+ --sidebar-primary: oklch(0.488 0.243 264.376);
131
+ --sidebar-primary-foreground: oklch(0.985 0 0);
132
+ --sidebar-accent: oklch(0.269 0 0);
133
+ --sidebar-accent-foreground: oklch(0.985 0 0);
134
+ --sidebar-border: oklch(1 0 0 / 10%);
135
+ --sidebar-ring: oklch(0.556 0 0);
136
+ }
137
+
138
+ @layer base {
139
+ * {
140
+ @apply border-border outline-ring/50;
141
+ }
142
+ html {
143
+ scroll-behavior: smooth;
144
+ }
145
+ body {
146
+ @apply bg-background text-foreground;
147
+ }
148
+
149
+ .shiki > div > button {
150
+ border-top-left-radius: 0 !important;
151
+ border-bottom-right-radius: 0 !important;
152
+ }
153
+ }
154
+
155
+
app/layout.tsx ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import type { Metadata, Viewport } from "next"
2
+ import { GeistSans } from "geist/font/sans"
3
+ import { GeistMono } from "geist/font/mono"
4
+ import { ThemeProvider } from "@/components/theme-provider"
5
+ import { siteConfig } from "@/lib/site"
6
+ import "./globals.css"
7
+
8
+ export const viewport: Viewport = {
9
+ themeColor: [
10
+ { media: "(prefers-color-scheme: dark)", color: "#000000" },
11
+ { media: "(prefers-color-scheme: light)", color: "#ffffff" },
12
+ ],
13
+ }
14
+
15
+ export const metadata: Metadata = {
16
+ metadataBase: new URL(siteConfig.url),
17
+ title: {
18
+ default: siteConfig.name,
19
+ template: `%s - ${siteConfig.name}`,
20
+ },
21
+ description: siteConfig.description,
22
+ }
23
+
24
+ export default function RootLayout({
25
+ children,
26
+ }: Readonly<{
27
+ children: React.ReactNode
28
+ }>) {
29
+ return (
30
+ <html
31
+ lang="en"
32
+ className={`${GeistSans.variable} ${GeistMono.variable} antialiased`}
33
+ suppressHydrationWarning
34
+ >
35
+ <body>
36
+ <ThemeProvider
37
+ attribute="class"
38
+ defaultTheme="system"
39
+ enableSystem
40
+ disableTransitionOnChange
41
+ >
42
+ {children}
43
+ </ThemeProvider>
44
+ </body>
45
+ </html>
46
+ )
47
+ }
app/metadata.ts ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Metadata } from "next"
2
+ import { siteConfig } from "@/lib/site"
3
+
4
+ export const metadata: Metadata = {
5
+ title: siteConfig.name,
6
+ description: siteConfig.description,
7
+ keywords: siteConfig.keywords,
8
+ authors: [
9
+ {
10
+ name: "Hanzo AI",
11
+ url: "https://hanzo.ai",
12
+ },
13
+ ],
14
+ creator: "Hanzo AI",
15
+ openGraph: {
16
+ type: "website",
17
+ locale: "en_US",
18
+ url: siteConfig.url,
19
+ title: siteConfig.name,
20
+ description: siteConfig.description,
21
+ siteName: siteConfig.name,
22
+ },
23
+ twitter: {
24
+ card: "summary_large_image",
25
+ title: siteConfig.name,
26
+ description: siteConfig.description,
27
+ creator: "@hanzoai",
28
+ },
29
+ robots: {
30
+ index: true,
31
+ follow: true,
32
+ googleBot: {
33
+ index: true,
34
+ follow: true,
35
+ "max-video-preview": -1,
36
+ "max-image-preview": "large",
37
+ "max-snippet": -1,
38
+ },
39
+ },
40
+ }
app/opengraph-image.tsx ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { headers } from "next/headers"
2
+ import { ImageResponse } from "next/og"
3
+
4
+ export const runtime = "edge"
5
+ export const alt = "Changelog Template"
6
+ export const size = {
7
+ width: 1200,
8
+ height: 630,
9
+ }
10
+ export const contentType = "image/png"
11
+
12
+ export default async function Image() {
13
+ try {
14
+ const headersList = await headers()
15
+ const host = headersList.get("host") || ""
16
+ const protocol = process.env.NODE_ENV === "development" ? "http" : "https"
17
+ const baseUrl = `${protocol}://${host}`
18
+
19
+ return new ImageResponse(
20
+ (
21
+ <div
22
+ style={{
23
+ height: "100%",
24
+ width: "100%",
25
+ display: "flex",
26
+ alignItems: "center",
27
+ justifyContent: "center",
28
+ background: "black",
29
+ }}
30
+ >
31
+ <img
32
+ src={`${baseUrl}/og.png`}
33
+ alt={alt}
34
+ style={{
35
+ width: "100%",
36
+ height: "100%",
37
+ objectFit: "cover",
38
+ }}
39
+ />
40
+ </div>
41
+ ),
42
+ { ...size }
43
+ )
44
+ } catch (error) {
45
+ console.error("Error generating OpenGraph image:", error)
46
+ return new Response(`Failed to generate image`, { status: 500 })
47
+ }
48
+ }
app/page.tsx ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { docs, meta } from "@/.source"
2
+ import { loader } from "fumadocs-core/source"
3
+ import { createMDXSource } from "fumadocs-mdx"
4
+ import { ThemeToggle } from "@/components/theme-toggle"
5
+ import { useMemo } from "react"
6
+ import { formatDate } from "@/lib/utils"
7
+
8
+ const source = loader({
9
+ baseUrl: "/docs",
10
+ source: createMDXSource(docs, meta),
11
+ })
12
+
13
+ interface ChangelogData {
14
+ title: string
15
+ date: string
16
+ version?: string
17
+ tags?: string[]
18
+ body: React.ComponentType
19
+ }
20
+
21
+ interface ChangelogPage {
22
+ url: string
23
+ data: ChangelogData
24
+ }
25
+
26
+ export default function HomePage() {
27
+ const sortedChangelogs = useMemo(() => {
28
+ const allPages = source.getPages() as ChangelogPage[]
29
+ return allPages.sort((a, b) => {
30
+ const dateA = new Date(a.data.date).getTime()
31
+ const dateB = new Date(b.data.date).getTime()
32
+ return dateB - dateA
33
+ })
34
+ }, [])
35
+
36
+ return (
37
+ <div className="min-h-screen bg-background relative">
38
+ {/* Header */}
39
+ <div className="border-b border-border/50">
40
+ <div className="max-w-5xl mx-auto relative">
41
+ <div className="p-3 flex items-center justify-between">
42
+ <h1 className="text-3xl font-semibold tracking-tight">Changelog</h1>
43
+ <ThemeToggle />
44
+ </div>
45
+ </div>
46
+ </div>
47
+
48
+ {/* Timeline */}
49
+ <div className="max-w-5xl mx-auto px-6 lg:px-10 pt-10">
50
+ <div className="relative">
51
+ {sortedChangelogs.map((changelog) => {
52
+ const MDX = changelog.data.body
53
+ const date = new Date(changelog.data.date)
54
+ const formattedDate = formatDate(date)
55
+
56
+ return (
57
+ <div key={changelog.url} className="relative">
58
+ <div className="flex flex-col md:flex-row gap-y-6">
59
+ <div className="md:w-48 flex-shrink-0">
60
+ <div className="md:sticky md:top-8 pb-10">
61
+ <time className="text-sm font-medium text-muted-foreground block mb-3">
62
+ {formattedDate}
63
+ </time>
64
+
65
+ {changelog.data.version && (
66
+ <div className="inline-flex relative z-10 items-center justify-center w-10 h-10 text-foreground border border-border rounded-lg text-sm font-bold">
67
+ {changelog.data.version}
68
+ </div>
69
+ )}
70
+ </div>
71
+ </div>
72
+
73
+ {/* Right side - Content */}
74
+ <div className="flex-1 md:pl-8 relative pb-10">
75
+ {/* Vertical timeline line */}
76
+ <div className="hidden md:block absolute top-2 left-0 w-px h-full bg-border">
77
+ {/* Timeline dot */}
78
+ <div className="hidden md:block absolute -translate-x-1/2 size-3 bg-primary rounded-full z-10" />
79
+ </div>
80
+
81
+ <div className="space-y-6">
82
+ <div className="relative z-10 flex flex-col gap-2">
83
+ <h2 className="text-2xl font-semibold tracking-tight text-balance">
84
+ {changelog.data.title}
85
+ </h2>
86
+
87
+ {/* Tags */}
88
+ {changelog.data.tags &&
89
+ changelog.data.tags.length > 0 && (
90
+ <div className="flex flex-wrap gap-2">
91
+ {changelog.data.tags.map((tag: string) => (
92
+ <span
93
+ key={tag}
94
+ className="h-6 w-fit px-2 text-xs font-medium bg-muted text-muted-foreground rounded-full border flex items-center justify-center"
95
+ >
96
+ {tag}
97
+ </span>
98
+ ))}
99
+ </div>
100
+ )}
101
+ </div>
102
+ <div className="prose dark:prose-invert max-w-none prose-headings:scroll-mt-8 prose-headings:font-semibold prose-a:no-underline prose-headings:tracking-tight prose-headings:text-balance prose-p:tracking-tight prose-p:text-balance">
103
+ <MDX />
104
+ </div>
105
+ </div>
106
+ </div>
107
+ </div>
108
+ </div>
109
+ )
110
+ })}
111
+ </div>
112
+ </div>
113
+ </div>
114
+ )
115
+ }
changelog/content/2025-05-23.mdx ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: "UX Improvements"
3
+ description: "Major improvements to UI/UX"
4
+ date: "2025-05-23"
5
+ tags: ["UI", "UX"]
6
+ version: "0.9"
7
+ ---
8
+
9
+ ![UX Improvements](https://images.unsplash.com/photo-1680016661694-1cd3faf31c3a?q=80&w=2874&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D)
10
+
11
+ - **Redesigned interface** with cleaner, more intuitive navigation
12
+ - **Enhanced accessibility** with improved keyboard navigation and screen reader support
13
+ - **Streamlined workflows** for faster task completion
14
+ - **Responsive design** optimized for all device sizes
15
+
16
+ <Accordion type="multiple" collapsible className="w-full not-prose">
17
+ <AccordionItem value="item-1">
18
+ <AccordionTrigger>Features</AccordionTrigger>
19
+ <AccordionContent className="flex flex-col gap-4 text-balance">
20
+ <ul className="list-disc space-y-2 pl-4">
21
+ <li>
22
+ <strong>Redesigned navigation menu</strong> with improved organization
23
+ and visual hierarchy
24
+ </li>
25
+ <li>
26
+ Enhanced accessibility features with full keyboard navigation support
27
+ </li>
28
+ <li>High contrast mode for users with visual impairments</li>
29
+ <li>Optimized touch targets for better mobile interaction</li>
30
+ <li>Enhanced swipe gestures and mobile-specific navigation</li>
31
+ </ul>
32
+ </AccordionContent>
33
+ </AccordionItem>
34
+ <AccordionItem value="item-2">
35
+ <AccordionTrigger>Bug Fixes</AccordionTrigger>
36
+ <AccordionContent className="flex flex-col gap-4 text-balance">
37
+ <ul className="list-disc space-y-2 pl-4">
38
+ <li>
39
+ Fixed inconsistent button placement across different screen sizes
40
+ </li>
41
+ <li>Resolved color contrast issues affecting readability</li>
42
+ <li>Corrected tab order problems in form navigation</li>
43
+ <li>Fixed device orientation change handling on mobile devices</li>
44
+ <li>Improved ARIA label compatibility with screen readers</li>
45
+ </ul>
46
+ </AccordionContent>
47
+ </AccordionItem>
48
+ </Accordion>
changelog/content/2025-06-15.mdx ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: "Enhanced AI Agent Interface and Reasoning Capabilities"
3
+ description: "Major improvements to AI agent performance, conversation interface, and reasoning abilities."
4
+ date: "2025-06-15"
5
+ tags: ["AI", "Performance", "Interface", "Reasoning"]
6
+ version: "1.2"
7
+ ---
8
+
9
+ ![Enhanced AI Agent Interface](https://images.unsplash.com/photo-1677442136019-21780ecad995?w=900&auto=format&fit=crop&q=60&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxzZWFyY2h8M3x8YWklMjBhZ2VudHxlbnwwfHwwfHx8MA%3D%3D)
10
+
11
+ - **Enhanced Reasoning**: Improved logical thinking and problem-solving
12
+ - **Context Awareness**: Better understanding of conversation history
13
+ - **Multi-modal Support**: Process text, images, and code simultaneously
14
+ - **Adaptive Responses**: Tailored communication style based on user preferences
15
+ - **Real-time Learning**: Dynamic adaptation during conversations
16
+
17
+ <Accordion type="multiple" collapsible className="w-full not-prose">
18
+ <AccordionItem value="item-1">
19
+ <AccordionTrigger>Features</AccordionTrigger>
20
+ <AccordionContent className="flex flex-col gap-4 text-balance">
21
+ <ul className="list-disc space-y-2 pl-4">
22
+ <li>
23
+ <strong>60% faster response generation</strong>
24
+ </li>
25
+ <li>Optimized model inference with reduced latency</li>
26
+ <li>Improved memory management for long conversations</li>
27
+ <li>Enhanced token efficiency and cost optimization</li>
28
+ <li>Better handling of complex multi-step tasks</li>
29
+ </ul>
30
+ </AccordionContent>
31
+ </AccordionItem>
32
+ <AccordionItem value="item-2">
33
+ <AccordionTrigger>Bug Fixes</AccordionTrigger>
34
+ <AccordionContent className="flex flex-col gap-4 text-balance">
35
+ <ul className="list-disc space-y-2 pl-4">
36
+ <li>Fixed conversation context loss in long sessions</li>
37
+ <li>Resolved inconsistent response formatting</li>
38
+ <li>Corrected memory retention issues</li>
39
+ <li>Fixed edge cases in code generation</li>
40
+ <li>Improved error handling and recovery</li>
41
+ </ul>
42
+ </AccordionContent>
43
+ </AccordionItem>
44
+ </Accordion>
changelog/content/2025-06-30.mdx ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: "Release 2.1 - Kimi K2 Support"
3
+ description: "Major improvements to AI agent reasoning, conversation handling, and multi-modal processing"
4
+ date: "2025-06-30"
5
+ tags: ["AI", "Performance", "Reasoning", "Multi-modal"]
6
+ version: "2.1"
7
+ ---
8
+
9
+ <Video src="/demo.mp4" />
10
+
11
+ - **Advanced reasoning engine** with improved logical thinking
12
+ - **Multi-modal processing** for text, images, and code analysis
13
+ - **Context-aware responses** with better conversation memory
14
+ - **Adaptive communication** that matches user preferences
15
+
16
+ ```tsx
17
+ // Example of updated API usage
18
+ const agent = new AIAgent({
19
+ model: "kimi-k2",
20
+ reasoning: "enhanced",
21
+ multiModal: true,
22
+ })
23
+ ```
24
+
25
+ <Accordion type="multiple" collapsible className="w-full not-prose">
26
+ <AccordionItem value="item-1">
27
+ <AccordionTrigger>Features</AccordionTrigger>
28
+ <AccordionContent className="flex flex-col gap-4 text-balance">
29
+ <ul className="list-disc space-y-2 pl-4">
30
+ <li>
31
+ <strong>45% faster response generation</strong> across all model types
32
+ </li>
33
+ <li>New API endpoints for custom AI agent implementations</li>
34
+ <li>Enhanced webhook support for real-time notifications</li>
35
+ <li>Improved SDK with TypeScript definitions</li>
36
+ <li>Updated knowledge base with latest information</li>
37
+ <li>Enhanced creative writing and brainstorming capabilities</li>
38
+ </ul>
39
+ </AccordionContent>
40
+ </AccordionItem>
41
+ <AccordionItem value="item-2">
42
+ <AccordionTrigger>Bug Fixes</AccordionTrigger>
43
+ <AccordionContent className="flex flex-col gap-4 text-balance">
44
+ <ul className="list-disc space-y-2 pl-4">
45
+ <li>Fixed conversation context loss during long sessions</li>
46
+ <li>Resolved inconsistent response formatting issues</li>
47
+ <li>Improved error handling for complex queries</li>
48
+ <li>Fixed memory retention problems in extended conversations</li>
49
+ <li>Better error reporting and debugging tools</li>
50
+ </ul>
51
+ </AccordionContent>
52
+ </AccordionItem>
53
+ </Accordion>
pnpm-lock.yaml ADDED
The diff for this file is too large to render. See raw diff
 
postcss.config.mjs ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ const config = {
2
+ plugins: ["@tailwindcss/postcss"],
3
+ };
4
+
5
+ export default config;