Skip to content

Commit 801b232

Browse files
committed
✨ Add comparison pages + more
1 parent efd59e8 commit 801b232

42 files changed

Lines changed: 8921 additions & 26 deletions

Some content is hidden

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

src/app/Router.tsx

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,28 @@ import {
3131
NewExtensionPage,
3232
ExtensionEditorPage,
3333
} from '@/features/marketplace/pages'
34+
import {
35+
CompareAgenticSeekPage,
36+
CompareBase44Page,
37+
CompareChatGPTPage,
38+
CompareDataKitPage,
39+
CompareDeepChatPage,
40+
CompareDualitePage,
41+
CompareHappyCapyPage,
42+
CompareHugstonOnePage,
43+
CompareKortixPage,
44+
CompareLemonAIPage,
45+
CompareLlamaPenPage,
46+
CompareManusPage,
47+
CompareMiniMaxPage,
48+
CompareNextdocsPage,
49+
CompareOpenManusPage,
50+
CompareReplitPage,
51+
CompareRomaPage,
52+
CompareRunnerHPage,
53+
CompareTracePage,
54+
CompareV7GoPage,
55+
} from '@/pages/Compare'
3456

3557
const routes = {
3658
index: IndexPage,
@@ -60,6 +82,26 @@ const routes = {
6082
'marketplace/new': NewExtensionPage,
6183
'marketplace/extensions/:extensionId/edit': ExtensionEditorPage,
6284
live: LivePage,
85+
'compare/agenticseek': CompareAgenticSeekPage,
86+
'compare/base44': CompareBase44Page,
87+
'compare/chatgpt': CompareChatGPTPage,
88+
'compare/datakit': CompareDataKitPage,
89+
'compare/deepchat': CompareDeepChatPage,
90+
'compare/dualite': CompareDualitePage,
91+
'compare/happycapy': CompareHappyCapyPage,
92+
'compare/hugstonone': CompareHugstonOnePage,
93+
'compare/kortix': CompareKortixPage,
94+
'compare/lemonai': CompareLemonAIPage,
95+
'compare/llamapen': CompareLlamaPenPage,
96+
'compare/manus': CompareManusPage,
97+
'compare/minimax': CompareMiniMaxPage,
98+
'compare/nextdocs': CompareNextdocsPage,
99+
'compare/openmanus': CompareOpenManusPage,
100+
'compare/replit': CompareReplitPage,
101+
'compare/roma': CompareRomaPage,
102+
'compare/runnerh': CompareRunnerHPage,
103+
'compare/trace': CompareTracePage,
104+
'compare/v7go': CompareV7GoPage,
63105
'*': DynamicAppRoute,
64106
}
65107

src/lib/chat.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,11 @@ export interface ChatSubmitOptions {
479479
activatedSkills?: Array<{
480480
name: string
481481
skillMdContent: string
482-
scripts?: Array<{ path: string; language: string; requiredPackages?: string[] }>
482+
scripts?: Array<{
483+
path: string
484+
language: string
485+
requiredPackages?: string[]
486+
}>
483487
references?: Array<{ path: string }>
484488
assets?: Array<{ path: string }>
485489
}>
@@ -746,9 +750,7 @@ export const submitChat = async (
746750
const pkgs = script.requiredPackages?.length
747751
? ` (requires: ${script.requiredPackages.join(', ')})`
748752
: ''
749-
parts.push(
750-
`- \`${script.path}\` [${script.language}]${pkgs}`,
751-
)
753+
parts.push(`- \`${script.path}\` [${script.language}]${pkgs}`)
752754
}
753755
parts.push(
754756
'\nUse `run_skill_script` to execute Python or JavaScript scripts.',

src/lib/llm/providers/chatjimmy.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,7 @@ export function stripStatsTrailer(text: string): string {
2424
}
2525

2626
/** Available ChatJimmy models */
27-
export const CHATJIMMY_MODELS = [
28-
'llama3.1-8B',
29-
'deepseek-r1',
30-
'mistral-small-3.1',
31-
'gemma-3-4b',
32-
'qwen2.5-coder',
33-
]
27+
export const CHATJIMMY_MODELS = ['llama3.1-8B']
3428

3529
const CHATJIMMY_BASE_URL = 'https://chatjimmy.ai/api/chat'
3630

src/pages/Compare/agenticseek.tsx

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
import { PRODUCT } from '@/config/product'
2+
import { useI18n } from '@/i18n'
3+
import Layout from '@/layouts/Default'
4+
import {
5+
ComparisonHero,
6+
TLDRCards,
7+
FeatureTable,
8+
AdvantagesGrid,
9+
PricingComparison,
10+
HonestTake,
11+
FinalCTA,
12+
} from './components'
13+
import localeI18n from './i18n'
14+
15+
const ALT_NAME = 'AgenticSeek'
16+
17+
export const CompareAgenticSeekPage = () => {
18+
const { t } = useI18n(localeI18n)
19+
20+
return (
21+
<Layout showBackButton={false}>
22+
<ComparisonHero
23+
title={t('{productName} vs {alternative}', {
24+
productName: PRODUCT.displayName,
25+
alternative: ALT_NAME,
26+
})}
27+
subtitle={t(
28+
'Full AI agent orchestration that runs in your browser \u2014 no Docker, no Python, no setup.',
29+
)}
30+
/>
31+
32+
<TLDRCards
33+
items={[
34+
{
35+
icon: 'WindowCheck',
36+
title: t('Setup'),
37+
devs: t('Zero install (browser)'),
38+
alt: t('Docker + Python setup'),
39+
},
40+
{
41+
icon: 'Group',
42+
title: t('Orchestration'),
43+
devs: t('Multi-agent teams'),
44+
alt: t('Single agent routing'),
45+
},
46+
{
47+
icon: 'Globe',
48+
title: t('Architecture'),
49+
devs: t('Browser-native PWA'),
50+
alt: t('Desktop (Python + Docker)'),
51+
},
52+
]}
53+
altName={ALT_NAME}
54+
/>
55+
56+
<FeatureTable
57+
features={[
58+
[t('Open Source'), t('MIT License'), t('GPL-3.0'), 'yes', 'yes'],
59+
[
60+
t('Browser-Native'),
61+
t('Yes'),
62+
t('No (Python + Docker)'),
63+
'yes',
64+
'no',
65+
],
66+
[t('Data Stays Local'), t('Yes'), t('Yes'), 'yes', 'yes'],
67+
[
68+
t('Multi-Agent Orchestration'),
69+
t('Advanced'),
70+
t('Smart routing'),
71+
'yes',
72+
'partial',
73+
],
74+
[t('Bring Your Own Keys'), t('Yes'), t('Yes'), 'yes', 'yes'],
75+
[t('Offline Capable'), t('Yes'), t('Yes (local LLM)'), 'yes', 'yes'],
76+
[t('P2P Sync'), t('Yes'), t('No'), 'yes', 'no'],
77+
[
78+
t('Agent Memory'),
79+
t('Yes'),
80+
t('Session recovery'),
81+
'yes',
82+
'partial',
83+
],
84+
[
85+
t('LLM Provider Choice'),
86+
t('6+ providers'),
87+
t('8+ providers'),
88+
'yes',
89+
'yes',
90+
],
91+
[t('Free Tier'), t('Unlimited'), t('Unlimited'), 'yes', 'yes'],
92+
]}
93+
altName={ALT_NAME}
94+
/>
95+
96+
<AdvantagesGrid
97+
chipLabel={t('Why {productName}', { productName: PRODUCT.displayName })}
98+
title={t('Why Teams Choose {productName} over {alternative}', {
99+
productName: PRODUCT.displayName,
100+
alternative: ALT_NAME,
101+
})}
102+
advantages={[
103+
{
104+
icon: 'Flash',
105+
title: t('Zero Setup'),
106+
desc: t(
107+
'No Python, no Docker, no SearxNG \u2014 just open your browser. {alternative} requires a full Docker + Python environment.',
108+
{ alternative: ALT_NAME },
109+
),
110+
gradient: 'from-emerald-500/10 via-transparent to-transparent',
111+
},
112+
{
113+
icon: 'Group',
114+
title: t('Multi-Agent Teams'),
115+
desc: t(
116+
'Full team orchestration with dependency resolution and parallel execution. {alternative} uses smart routing to a single agent.',
117+
{ alternative: ALT_NAME },
118+
),
119+
gradient: 'from-blue-500/10 via-transparent to-transparent',
120+
},
121+
{
122+
icon: 'Globe',
123+
title: t('Browser-Native'),
124+
desc: t(
125+
'Works on any device including mobile. {alternative} is desktop-only with Python + Docker.',
126+
{ alternative: ALT_NAME },
127+
),
128+
gradient: 'from-amber-500/10 via-transparent to-transparent',
129+
},
130+
{
131+
icon: 'CloudSync',
132+
title: t('P2P Collaboration'),
133+
desc: t(
134+
'Cross-device sync via Yjs/WebRTC. {alternative} has no collaboration features.',
135+
{ alternative: ALT_NAME },
136+
),
137+
gradient: 'from-purple-500/10 via-transparent to-transparent',
138+
},
139+
]}
140+
/>
141+
142+
<PricingComparison
143+
altTier={{
144+
name: ALT_NAME,
145+
price: t('Free (self-hosted)'),
146+
features: [
147+
{ text: t('Requires Docker + Python'), included: false },
148+
{ text: t('SearxNG setup needed'), included: false },
149+
{ text: t('Desktop only \u2014 no mobile'), included: false },
150+
{ text: t('GPL-3.0 license (restrictive)'), included: false },
151+
],
152+
}}
153+
/>
154+
155+
<HonestTake
156+
warningSide={{
157+
title: t('Consider {alternative} if you\u2026', {
158+
alternative: ALT_NAME,
159+
}),
160+
items: [
161+
t('Need autonomous web browsing with stealth capabilities'),
162+
t(
163+
'Want local code execution in multiple languages (Python, C, Go, Java)',
164+
),
165+
t('Prefer voice-enabled interaction with speech-to-text'),
166+
],
167+
}}
168+
/>
169+
170+
<FinalCTA />
171+
</Layout>
172+
)
173+
}

0 commit comments

Comments
 (0)