Skip to content

Commit 17e5003

Browse files
committed
merge
2 parents 5d4b860 + 64eee11 commit 17e5003

25 files changed

+378
-173
lines changed

README.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
[![Bolt.new: AI-Powered Full-Stack Web Development in the Browser](./public/social_preview_index.jpg)](https://bolt.new)
22

3-
# Bolt.new Fork by Cole Medin - oTToDev
3+
# Bolt.diy (Previously oTToDev)
44

5-
This fork of Bolt.new (oTToDev) allows you to choose the LLM that you use for each prompt! Currently, you can use OpenAI, Anthropic, Ollama, OpenRouter, Gemini, LMStudio, Mistral, xAI, HuggingFace, DeepSeek, or Groq models - and it is easily extended to use any other model supported by the Vercel AI SDK! See the instructions below for running this locally and extending it to include more models.
5+
Welcome to Bolt.diy, the official open source version of Bolt.new (previously known as oTToDev and Bolt.new ANY LLM), which allows you to choose the LLM that you use for each prompt! Currently, you can use OpenAI, Anthropic, Ollama, OpenRouter, Gemini, LMStudio, Mistral, xAI, HuggingFace, DeepSeek, or Groq models - and it is easily extended to use any other model supported by the Vercel AI SDK! See the instructions below for running this locally and extending it to include more models.
66

7-
Check the [oTToDev Docs](https://coleam00.github.io/bolt.new-any-llm/) for more information.
7+
Check the [Bolt.diy Docs](https://stackblitz-labs.github.io/bolt.diy/) for more information. This documentation is still being updated after the transfer.
88

9-
## Join the community for oTToDev!
9+
Bolt.diy was originally started by [Cole Medin](https://www.youtube.com/@ColeMedin) but has quickly grown into a massive community effort to build the BEST open source AI coding assistant!
10+
11+
## Join the community for Bolt.diy!
1012

1113
https://thinktank.ottomator.ai
1214

@@ -56,7 +58,7 @@ https://thinktank.ottomator.ai
5658

5759
## Bolt.new: AI-Powered Full-Stack Web Development in the Browser
5860

59-
Bolt.new is an AI-powered web development agent that allows you to prompt, run, edit, and deploy full-stack applications directly from your browser—no local setup required. If you're here to build your own AI-powered web dev agent using the Bolt open source codebase, [click here to get started!](./CONTRIBUTING.md)
61+
Bolt.new (and by extension Bolt.diy) is an AI-powered web development agent that allows you to prompt, run, edit, and deploy full-stack applications directly from your browser—no local setup required. If you're here to build your own AI-powered web dev agent using the Bolt open source codebase, [click here to get started!](./CONTRIBUTING.md)
6062

6163
## What Makes Bolt.new Different
6264

@@ -96,7 +98,7 @@ If you see usr/local/bin in the output then you're good to go.
9698
3. Clone the repository (if you haven't already) by opening a Terminal window (or CMD with admin permissions) and then typing in this:
9799

98100
```
99-
git clone https://github.com/coleam00/bolt.new-any-llm.git
101+
git clone https://github.com/stackblitz-labs/bolt.diy.git
100102
```
101103

102104
3. Rename .env.example to .env.local and add your LLM API keys. You will find this file on a Mac at "[your name]/bold.new-any-llm/.env.example". For Windows and Linux the path will be similar.
@@ -225,16 +227,16 @@ pnpm run dev
225227

226228
This will start the Remix Vite development server. You will need Google Chrome Canary to run this locally if you use Chrome! It's an easy install and a good browser for web development anyway.
227229

228-
## How do I contribute to oTToDev?
230+
## How do I contribute to Bolt.diy?
229231

230-
[Please check out our dedicated page for contributing to oTToDev here!](CONTRIBUTING.md)
232+
[Please check out our dedicated page for contributing to Bolt.diy here!](CONTRIBUTING.md)
231233

232-
## What are the future plans for oTToDev?
234+
## What are the future plans for Bolt.diy?
233235

234236
[Check out our Roadmap here!](https://roadmap.sh/r/ottodev-roadmap-2ovzo)
235237

236238
Lot more updates to this roadmap coming soon!
237239

238240
## FAQ
239241

240-
[Please check out our dedicated page for FAQ's related to oTToDev here!](FAQ.md)
242+
[Please check out our dedicated page for FAQ's related to Bolt.diy here!](FAQ.md)

app/commit.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "commit": "eddf5603c3865536f96774fc3358cf24760fb613" }
1+
{ "commit": "fd2c17c384a69ab5e7a40113342caa7de405b944" }

app/components/chat/BaseChat.module.scss

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -18,82 +18,6 @@
1818
opacity: 1;
1919
}
2020

21-
.RayContainer {
22-
--gradient-opacity: 0.85;
23-
--ray-gradient: radial-gradient(rgba(83, 196, 255, var(--gradient-opacity)) 0%, rgba(43, 166, 255, 0) 100%);
24-
transition: opacity 0.25s linear;
25-
position: fixed;
26-
inset: 0;
27-
pointer-events: none;
28-
user-select: none;
29-
}
30-
31-
.LightRayOne {
32-
width: 480px;
33-
height: 680px;
34-
transform: rotate(80deg);
35-
top: -540px;
36-
left: 250px;
37-
filter: blur(110px);
38-
position: absolute;
39-
border-radius: 100%;
40-
background: var(--ray-gradient);
41-
}
42-
43-
.LightRayTwo {
44-
width: 110px;
45-
height: 400px;
46-
transform: rotate(-20deg);
47-
top: -280px;
48-
left: 350px;
49-
mix-blend-mode: overlay;
50-
opacity: 0.6;
51-
filter: blur(60px);
52-
position: absolute;
53-
border-radius: 100%;
54-
background: var(--ray-gradient);
55-
}
56-
57-
.LightRayThree {
58-
width: 400px;
59-
height: 370px;
60-
top: -350px;
61-
left: 200px;
62-
mix-blend-mode: overlay;
63-
opacity: 0.6;
64-
filter: blur(21px);
65-
position: absolute;
66-
border-radius: 100%;
67-
background: var(--ray-gradient);
68-
}
69-
70-
.LightRayFour {
71-
position: absolute;
72-
width: 330px;
73-
height: 370px;
74-
top: -330px;
75-
left: 50px;
76-
mix-blend-mode: overlay;
77-
opacity: 0.5;
78-
filter: blur(21px);
79-
border-radius: 100%;
80-
background: var(--ray-gradient);
81-
}
82-
83-
.LightRayFive {
84-
position: absolute;
85-
width: 110px;
86-
height: 400px;
87-
transform: rotate(-40deg);
88-
top: -280px;
89-
left: -10px;
90-
mix-blend-mode: overlay;
91-
opacity: 0.8;
92-
filter: blur(60px);
93-
border-radius: 100%;
94-
background: var(--ray-gradient);
95-
}
96-
9721
.PromptEffectContainer {
9822
--prompt-container-offset: 50px;
9923
--prompt-line-stroke-width: 1px;

app/components/chat/BaseChat.tsx

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,10 @@ export const BaseChat = React.forwardRef<HTMLDivElement, BaseChatProps>(
110110
const [recognition, setRecognition] = useState<SpeechRecognition | null>(null);
111111
const [transcript, setTranscript] = useState('');
112112

113-
// Update enabled providers when cookies change
114-
console.log(transcript);
113+
useEffect(() => {
114+
console.log(transcript);
115+
}, [transcript]);
116+
115117
useEffect(() => {
116118
// Load API keys from cookies on component mount
117119
try {
@@ -274,19 +276,9 @@ export const BaseChat = React.forwardRef<HTMLDivElement, BaseChatProps>(
274276
const baseChat = (
275277
<div
276278
ref={ref}
277-
className={classNames(
278-
styles.BaseChat,
279-
'relative flex flex-col lg:flex-row h-full w-full overflow-hidden bg-bolt-elements-background-depth-1',
280-
)}
279+
className={classNames(styles.BaseChat, 'relative flex h-full w-full overflow-hidden')}
281280
data-chat-visible={showChat}
282281
>
283-
<div className={classNames(styles.RayContainer)}>
284-
<div className={classNames(styles.LightRayOne)}></div>
285-
<div className={classNames(styles.LightRayTwo)}></div>
286-
<div className={classNames(styles.LightRayThree)}></div>
287-
<div className={classNames(styles.LightRayFour)}></div>
288-
<div className={classNames(styles.LightRayFive)}></div>
289-
</div>
290282
<ClientOnly>{() => <Menu />}</ClientOnly>
291283
<div ref={scrollRef} className="flex flex-col lg:flex-row overflow-y-auto w-full h-full">
292284
<div className={classNames(styles.Chat, 'flex flex-col flex-grow lg:min-w-[var(--chat-min-width)] h-full')}>
@@ -336,15 +328,15 @@ export const BaseChat = React.forwardRef<HTMLDivElement, BaseChatProps>(
336328
gradientUnits="userSpaceOnUse"
337329
gradientTransform="rotate(-45)"
338330
>
339-
<stop offset="0%" stopColor="#1488fc" stopOpacity="0%"></stop>
340-
<stop offset="40%" stopColor="#1488fc" stopOpacity="80%"></stop>
341-
<stop offset="50%" stopColor="#1488fc" stopOpacity="80%"></stop>
342-
<stop offset="100%" stopColor="#1488fc" stopOpacity="0%"></stop>
331+
<stop offset="0%" stopColor="#b44aff" stopOpacity="0%"></stop>
332+
<stop offset="40%" stopColor="#b44aff" stopOpacity="80%"></stop>
333+
<stop offset="50%" stopColor="#b44aff" stopOpacity="80%"></stop>
334+
<stop offset="100%" stopColor="#b44aff" stopOpacity="0%"></stop>
343335
</linearGradient>
344336
<linearGradient id="shine-gradient">
345337
<stop offset="0%" stopColor="white" stopOpacity="0%"></stop>
346-
<stop offset="40%" stopColor="#8adaff" stopOpacity="80%"></stop>
347-
<stop offset="50%" stopColor="#8adaff" stopOpacity="80%"></stop>
338+
<stop offset="40%" stopColor="#ffffff" stopOpacity="80%"></stop>
339+
<stop offset="50%" stopColor="#ffffff" stopOpacity="80%"></stop>
348340
<stop offset="100%" stopColor="white" stopOpacity="0%"></stop>
349341
</linearGradient>
350342
</defs>

app/components/chat/ModelSelector.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ export const ModelSelector = ({
121121
>
122122
{[...modelList]
123123
.filter((e) => e.provider == provider?.name && e.name)
124-
.map((modelOption) => (
125-
<option key={modelOption.name} value={modelOption.name}>
124+
.map((modelOption, index) => (
125+
<option key={index} value={modelOption.name}>
126126
{modelOption.label}
127127
</option>
128128
))}

app/components/header/Header.tsx

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,17 @@ export function Header() {
1010

1111
return (
1212
<header
13-
className={classNames(
14-
'flex items-center bg-bolt-elements-background-depth-1 p-5 border-b h-[var(--header-height)]',
15-
{
16-
'border-transparent': !chat.started,
17-
'border-bolt-elements-borderColor': chat.started,
18-
},
19-
)}
13+
className={classNames('flex items-center p-5 border-b h-[var(--header-height)]', {
14+
'border-transparent': !chat.started,
15+
'border-bolt-elements-borderColor': chat.started,
16+
})}
2017
>
2118
<div className="flex items-center gap-2 z-logo text-bolt-elements-textPrimary cursor-pointer">
2219
<div className="i-ph:sidebar-simple-duotone text-xl" />
2320
<a href="/" className="text-2xl font-semibold text-accent flex items-center">
24-
<span className="i-bolt:logo-text?mask w-[46px] inline-block" />
21+
{/* <span className="i-bolt:logo-text?mask w-[46px] inline-block" /> */}
22+
<img src="/logo-light-styled.png" alt="logo" className="w-[90px] inline-block dark:hidden" />
23+
<img src="/logo-dark-styled.png" alt="logo" className="w-[90px] inline-block hidden dark:block" />
2524
</a>
2625
</div>
2726
{chat.started && ( // Display ChatDescription and HeaderActionButtons only when the chat has started.

app/components/settings/Settings.module.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
padding: 1rem;
4747
margin-bottom: 1rem;
4848
border-style: solid;
49-
border-color: var(--bolt-elements-button-danger-backgroundHover) ;
49+
border-color: var(--bolt-elements-button-danger-backgroundHover);
5050
border-width: thin;
5151

5252
button {
@@ -60,4 +60,4 @@
6060
background-color: var(--bolt-elements-button-danger-backgroundHover);
6161
}
6262
}
63-
}
63+
}

app/components/settings/SettingsWindow.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export const SettingsWindow = ({ open, onClose }: SettingsProps) => {
8383
))}
8484
<div className="mt-auto flex flex-col gap-2">
8585
<a
86-
href="https://github.com/coleam00/bolt.new-any-llm"
86+
href="https://github.com/stackblitz-labs/bolt.diy"
8787
target="_blank"
8888
rel="noopener noreferrer"
8989
className={classNames(styles['settings-button'], 'flex items-center gap-2')}
@@ -92,7 +92,7 @@ export const SettingsWindow = ({ open, onClose }: SettingsProps) => {
9292
GitHub
9393
</a>
9494
<a
95-
href="https://coleam00.github.io/bolt.new-any-llm"
95+
href="https://stackblitz-labs.github.io/bolt.diy/"
9696
target="_blank"
9797
rel="noopener noreferrer"
9898
className={classNames(styles['settings-button'], 'flex items-center gap-2')}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import styles from './styles.module.scss';
2+
3+
const BackgroundRays = () => {
4+
return (
5+
<div className={`${styles.rayContainer} `}>
6+
<div className={`${styles.lightRay} ${styles.ray1}`}></div>
7+
<div className={`${styles.lightRay} ${styles.ray2}`}></div>
8+
<div className={`${styles.lightRay} ${styles.ray3}`}></div>
9+
<div className={`${styles.lightRay} ${styles.ray4}`}></div>
10+
<div className={`${styles.lightRay} ${styles.ray5}`}></div>
11+
<div className={`${styles.lightRay} ${styles.ray6}`}></div>
12+
<div className={`${styles.lightRay} ${styles.ray7}`}></div>
13+
<div className={`${styles.lightRay} ${styles.ray8}`}></div>
14+
</div>
15+
);
16+
};
17+
18+
export default BackgroundRays;

0 commit comments

Comments
 (0)