openmagic 0.23.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,161 +1,122 @@
1
1
  <div align="center">
2
2
 
3
- # OpenMagic
3
+ # OpenMagic
4
4
 
5
- **AI-powered coding toolbar for any web application**
5
+ **Add an AI coding toolbar to any web app. One command. Zero code changes.**
6
6
 
7
- Add AI code editing to your existing web app in one command. No IDE extension, no desktop app, no account required.
7
+ [![npm version](https://img.shields.io/npm/v/openmagic.svg?style=flat-square)](https://www.npmjs.com/package/openmagic)
8
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://opensource.org/licenses/MIT)
9
+ [![GitHub stars](https://img.shields.io/github/stars/Kalmuraee/OpenMagic?style=flat-square)](https://github.com/Kalmuraee/OpenMagic/stargazers)
8
10
 
9
- [![npm version](https://img.shields.io/npm/v/openmagic.svg)](https://www.npmjs.com/package/openmagic)
10
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
11
+ OpenMagic injects a floating AI toolbar into your running web app via reverse proxy.
12
+ Select any element, describe what you want, review the diff, approve — your code updates and HMR refreshes the page.
13
+ No framework plugin. No IDE extension. No account. Bring your own API key.
11
14
 
12
- [Quick Start](#quick-start) | [How It Works](#how-it-works) | [Providers](#supported-providers) | [Configuration](#configuration) | [Contributing](#contributing)
15
+ [Website](https://kalmuraee.github.io/OpenMagic/) &#183; [Quick Start](#quick-start) &#183; [How It Works](#how-it-works) &#183; [Providers](#supported-providers) &#183; [GitHub](https://github.com/Kalmuraee/OpenMagic)
13
16
 
14
17
  </div>
15
18
 
16
19
  ---
17
20
 
18
- ## What is OpenMagic?
21
+ <!-- DEMO GIF -->
22
+ ![OpenMagic Demo](./docs/demo.gif)
19
23
 
20
- OpenMagic is an open-source npm package that injects a floating AI coding toolbar into your running web application during development. Select elements, capture screenshots, send context to any LLM, and apply code changes that reflect instantly via hot reload.
21
-
22
- **Works with any framework.** React, Vue, Angular, Svelte, Next.js, Nuxt, Vite, plain HTML — if it runs in a browser, OpenMagic works.
23
-
24
- ### The Developer Experience
25
-
26
- ```
27
- 1. You have an existing web app running on localhost:3000
28
- 2. Run `npx openmagic`
29
- 3. A floating toolbar appears in your app
30
- 4. Select a button → "Make it bigger with a gradient"
31
- 5. AI proposes changes → You approve → Code updates → UI refreshes
32
- ```
33
-
34
- <!-- TODO: Add demo GIF here -->
35
- <!-- ![OpenMagic Demo](./docs/demo.gif) -->
24
+ ---
36
25
 
37
26
  ## Quick Start
38
27
 
39
- Make sure your dev server is running first (e.g., `npm run dev`), then:
40
-
41
28
  ```bash
29
+ # 1. Start your dev server as usual
30
+ npm run dev
31
+
32
+ # 2. Launch OpenMagic (auto-detects your dev server)
42
33
  npx openmagic@latest
43
34
  ```
44
35
 
45
- That's it. OpenMagic auto-detects your dev server and opens a proxied version with the toolbar injected.
36
+ A proxied version of your app opens with the AI toolbar overlaid. That is it.
46
37
 
47
- ### Specify a port
38
+ ---
48
39
 
49
- ```bash
50
- npx openmagic --port 3000
51
- ```
40
+ ## Features
52
41
 
53
- ### Multiple project roots (e.g., frontend + backend)
42
+ | | Feature | Description |
43
+ |---|---------|-------------|
44
+ | **Select** | Element Selection | Click any element to capture its DOM, computed styles, parent layout, siblings, React props, and component name |
45
+ | **Ground** | Smart File Grounding | Reads project files, follows import chains, auto-reads co-located stylesheets and `package.json` deps |
46
+ | **Diff** | Diff Preview | Approve or reject each change. Undo to revert. Fuzzy line matching handles indentation differences |
47
+ | **Retry** | Auto-Retry | If the LLM requests more files, OpenMagic reads them transparently and retries — no manual intervention |
48
+ | **Chat** | Markdown Chat | Streaming responses, copy buttons, session persistence across HMR reloads |
49
+ | **Net** | Network Profiling | Captures page load timing, TTFB, FCP, and flags slow resources |
50
+ | **Img** | Image Attachments | Drag-drop, paste from clipboard, or use the file picker — vision models analyze screenshots |
51
+ | **Keys** | Per-Provider Keys | Store a key for each provider. Switch models without re-entering credentials |
52
+ | **KB** | Keyboard Shortcuts | Toggle, send, close, minimize — all from the keyboard |
53
+ | **Min** | Minimize to Icon | Collapse the toolbar to a small floating button when you do not need it |
54
54
 
55
- ```bash
56
- npx openmagic --port 3000 --root ./frontend --root ./backend
57
- ```
55
+ ---
58
56
 
59
57
  ## How It Works
60
58
 
61
- OpenMagic runs a **reverse proxy** between your browser and your dev server. This is completely non-invasive your project files are never modified by the install.
59
+ OpenMagic is a single-port reverse proxy. It sits between your browser and your dev server, injecting the toolbar script into HTML responses. Your project is never modified at install time.
62
60
 
63
61
  ```
64
- ┌─────────────────────────────────────────────────┐
65
- Your Browser
66
- │ http://localhost:4567
67
- ├─────────────┬───────────────────┬───────────────┤
68
- │ Your App │ OpenMagic │ WebSocket │
69
- │ (proxied) │ Toolbar (UI) │ Connection │
70
- └──────┬──────┴───────────────────┴───────┬───────┘
71
- │ │
72
- ▼ ▼
73
- ┌──────────────┐ ┌───────────────────┐
74
- Your Dev │ │ OpenMagic Server │
75
- Server │ │ ┌──────────────┐ │
76
- :3000 │ │ │ File System │ │
77
- └──────────────┘ │ │ Read/Write │ │
78
- │ ├──────────────┤ │
79
- │ │ LLM Proxy │ │
80
- │ │ (your API key)│ │
81
- │ └──────────────┘ │
82
- └───────────────────┘
62
+ +-----------------------+
63
+ | Your Browser |
64
+ | localhost:4567 |
65
+ +---+---------------+---+
66
+ | |
67
+ HTTP proxy WebSocket
68
+ | |
69
+ +----------------+ +---+---------------+---+
70
+ | Your Dev Server| | OpenMagic Server |
71
+ | localhost:3000 |<---| |
72
+ +----------------+ | File Read/Write |
73
+ | LLM API Proxy |
74
+ | (your key, localhost) |
75
+ +-----------------------+
83
76
  ```
84
77
 
85
- 1. **Proxy** All HTTP requests are forwarded to your dev server. HTML responses get the toolbar `<script>` injected before `</body>`.
86
- 2. **Toolbar** A Shadow DOM Web Component that floats on top of your app. Completely isolated no CSS conflicts with your app.
87
- 3. **Server** A local Node.js server that handles file operations and proxies LLM API calls. Your API keys never leave localhost.
88
- 4. **HMR** When AI modifies your source files, your dev server's hot module replacement picks up the changes automatically.
78
+ 1. **Proxy** -- All requests forward to your dev server. HTML responses get a `<script>` tag injected before `</body>`.
79
+ 2. **Toolbar** -- A Shadow DOM Web Component. Fully isolated from your app's styles.
80
+ 3. **Server** -- Local Node.js process handling file I/O and proxying LLM calls. API keys never leave your machine.
81
+ 4. **HMR** -- When the AI modifies source files, your dev server's hot module replacement picks up changes automatically.
89
82
 
90
- ### What happens when you stop?
83
+ Stop with `Ctrl+C`. No files modified. No dependencies added. No traces.
91
84
 
92
- ```bash
93
- Ctrl+C
94
- ```
95
-
96
- Everything stops. No files modified. No dependencies added. No traces left in your project.
97
-
98
- ## Features
99
-
100
- ### Element Selection
101
- Click any element in your app to capture its DOM structure, computed styles, and surrounding HTML. This context is sent to the LLM so it knows exactly what to modify.
102
-
103
- ### Screenshot Capture
104
- Take a screenshot of the page or a specific element. Vision-capable models (GPT-4o, Claude, Gemini) use this to understand the visual layout.
105
-
106
- ### Network & Console Logs
107
- OpenMagic automatically captures `fetch`/`XHR` requests and `console.log` output. This context helps the LLM understand API responses, errors, and application state.
108
-
109
- ### Multi-Repo Context
110
- Working on a fullstack app? Add both your frontend and backend directories:
111
-
112
- ```bash
113
- npx openmagic --root ./my-frontend --root ./my-api
114
- ```
115
-
116
- The LLM can read and modify files across both repositories.
117
-
118
- ### Streaming Responses
119
- LLM responses stream in real-time. You see the AI thinking as it generates code.
120
-
121
- ### Code Modifications
122
- The AI returns structured edits (search/replace on source files). Changes are applied directly and your dev server's HMR reflects them instantly.
85
+ ---
123
86
 
124
87
  ## Supported Providers
125
88
 
126
- All providers and models are pre-configured. You only need to:
127
- 1. Select a provider from the dropdown
128
- 2. Pick a model
129
- 3. Paste your API key
130
-
131
- | Provider | Models | Vision | Thinking | API Key |
132
- |----------|--------|--------|----------|---------|
133
- | **OpenAI** | GPT-5.4, GPT-5.4 Pro/Mini/Nano, GPT-5.2, o3, o4-mini, Codex Mini | Yes | reasoning_effort: none/low/medium/high/xhigh | [platform.openai.com](https://platform.openai.com/api-keys) |
134
- | **Anthropic** | Claude Opus 4.6, Sonnet 4.6, Haiku 4.5, Opus 4.5, Sonnet 4.5, Sonnet 4, Opus 4 | Yes | Extended thinking: budget_tokens | [console.anthropic.com](https://console.anthropic.com/) |
135
- | **Google Gemini** | Gemini 3.1 Pro, 3 Flash, 3.1 Flash Lite, 2.5 Pro, 2.5 Flash, 2.5 Flash Lite | Yes | thinking_level: LOW/MEDIUM/HIGH | [aistudio.google.com](https://aistudio.google.com/apikey) |
136
- | **xAI (Grok)** | Grok 4.20, Grok 4.20 Reasoning, Grok 4.1 Fast, Grok 4.1 Fast Reasoning | Yes | reasoning_effort: low/medium/high | [console.x.ai](https://console.x.ai/) |
137
- | **DeepSeek** | DeepSeek V3.2, DeepSeek R1 | No | R1: reasoning_effort | [platform.deepseek.com](https://platform.deepseek.com/) |
138
- | **Mistral** | Large 3, Small 4, Codestral, Devstral 2, Magistral Medium/Small | Yes | Magistral: reasoning_effort | [console.mistral.ai](https://console.mistral.ai/) |
139
- | **Groq** | Llama 4 Scout 17B, Llama 3.3 70B, Llama 3.1 8B, Qwen 3 32B | Llama 4 | - | [console.groq.com](https://console.groq.com/) |
140
- | **Ollama** | Any local model | Varies | - | Not required (local) |
141
- | **OpenRouter** | 200+ models | Varies | Varies | [openrouter.ai](https://openrouter.ai/) |
142
-
143
- > **Thinking/Reasoning models** use their default thinking level automatically. Models like GPT-5.4, Claude Opus 4.6, and Gemini 3.1 Pro will use their built-in reasoning capabilities to produce better code modifications.
144
-
145
- ### Using Ollama (Free, Local)
89
+ 14 providers, 70+ models. All pre-configured select a provider, pick a model, paste your key.
90
+
91
+ | Provider | Notable Models | Vision | Thinking / Reasoning |
92
+ |----------|---------------|--------|---------------------|
93
+ | **OpenAI** | GPT-5.4, GPT-5.4 Pro/Mini/Nano, o3, o4-mini, Codex Mini | Yes | reasoning_effort |
94
+ | **Anthropic** | Claude Opus 4.6, Sonnet 4.6, Haiku 4.5 | Yes | Extended thinking (budget_tokens) |
95
+ | **Google Gemini** | Gemini 3.1 Pro, 3 Flash, 2.5 Pro, 2.5 Flash | Yes | thinking_level |
96
+ | **xAI (Grok)** | Grok 4.20, Grok 4.20 Reasoning, Grok 4.1 Fast | Yes | reasoning_effort |
97
+ | **DeepSeek** | DeepSeek V3.2, DeepSeek R1 | -- | R1: reasoning_effort |
98
+ | **Mistral** | Large 3, Small 4, Codestral, Devstral 2, Magistral | Yes | Magistral: reasoning_effort |
99
+ | **MiniMax** | MiniMax models | Varies | -- |
100
+ | **Kimi** | Kimi models | Varies | -- |
101
+ | **Qwen** | Qwen models | Varies | -- |
102
+ | **Zhipu** | Zhipu (GLM) models | Varies | -- |
103
+ | **Doubao** | Doubao models | Varies | -- |
104
+ | **Groq** | Llama 4 Scout, Llama 3.3 70B, Qwen 3 32B | Llama 4 | -- |
105
+ | **Ollama** | Any local model (free, private) | Varies | -- |
106
+ | **OpenRouter** | 200+ models from all providers | Varies | Varies |
146
107
 
147
- Run any model locally with zero API costs:
108
+ ---
148
109
 
149
- ```bash
150
- # Install Ollama
151
- curl -fsSL https://ollama.com/install.sh | sh
110
+ ## Keyboard Shortcuts
152
111
 
153
- # Pull a model
154
- ollama pull llama3.3
112
+ | Shortcut | Action |
113
+ |----------|--------|
114
+ | `Ctrl+Shift+O` | Toggle toolbar open/close |
115
+ | `Ctrl+Enter` | Send message |
116
+ | `Escape` | Close toolbar |
117
+ | Minimize button | Collapse to floating icon |
155
118
 
156
- # Start openmagic and select "Ollama (Local)" as provider
157
- npx openmagic --port 3000
158
- ```
119
+ ---
159
120
 
160
121
  ## Configuration
161
122
 
@@ -167,133 +128,114 @@ npx openmagic --port 3000
167
128
  | `-l, --listen <port>` | OpenMagic proxy port | `4567` |
168
129
  | `-r, --root <paths...>` | Project root directories | Current directory |
169
130
  | `--host <host>` | Dev server host | `127.0.0.1` |
170
- | `--no-open` | Don't auto-open browser | `false` |
131
+ | `--no-open` | Do not auto-open browser | `false` |
132
+
133
+ ### Multi-Repo Support
134
+
135
+ ```bash
136
+ npx openmagic --port 3000 --root ./frontend --root ./backend
137
+ ```
171
138
 
172
139
  ### Config File
173
140
 
174
- Settings are stored in `~/.openmagic/config.json`:
141
+ Settings persist in `~/.openmagic/config.json` (your home directory, never in your project):
175
142
 
176
143
  ```json
177
144
  {
178
145
  "provider": "anthropic",
179
- "model": "claude-sonnet-4-20250514",
180
- "apiKey": "sk-ant-...",
181
- "roots": ["/path/to/project"]
146
+ "model": "claude-opus-4-6-20260326",
147
+ "apiKey": "sk-ant-..."
182
148
  }
183
149
  ```
184
150
 
185
- This file is in your home directory, never in your project. It won't be committed to git.
151
+ ### Using Ollama (Free, Local)
152
+
153
+ ```bash
154
+ ollama pull llama3.3
155
+ npx openmagic --port 3000
156
+ # Select "Ollama (Local)" as your provider
157
+ ```
158
+
159
+ ---
186
160
 
187
161
  ## Security
188
162
 
189
- - **Localhost only** The proxy and WebSocket server bind to `127.0.0.1`. They are not accessible from the network.
190
- - **Session tokens** Each session generates a random token. The toolbar must authenticate before accessing any APIs.
191
- - **Path sandboxing** File operations are restricted to configured root directories. The server cannot read/write outside your project.
192
- - **API keys stay local** Keys are stored in `~/.openmagic/config.json` on your machine. They are proxied through the local server and never exposed to the browser or any third party.
193
- - **Zero project modification** OpenMagic never modifies your `package.json`, config files, or source code during installation. The toolbar exists only in the proxy layer.
194
- - **Symlink protection** File operations resolve symlinks and reject paths that escape the project root.
195
- - **Diff preview** — AI-proposed code changes are shown as diffs with Apply/Reject buttons. Nothing is auto-applied.
163
+ - **Localhost only** -- The proxy and WebSocket bind to `127.0.0.1`. Not accessible from the network.
164
+ - **Session tokens** -- Each session generates a random token. The toolbar authenticates before accessing any API.
165
+ - **Path sandboxing** -- File operations are restricted to configured root directories. Symlinks that escape the root are rejected.
166
+ - **API keys stay local** -- Keys live in `~/.openmagic/config.json`. They are proxied through the local server, never exposed to the browser or any third party.
167
+ - **Zero project modification** -- OpenMagic never touches your `package.json`, config files, or source code during installation. The toolbar exists only in the proxy layer.
168
+ - **Diff preview** -- AI-proposed changes are shown as diffs with Approve/Reject buttons. Nothing is auto-applied without your consent.
196
169
 
197
- ### Known Limitations
170
+ ---
198
171
 
199
- OpenMagic uses a reverse proxy which introduces these tradeoffs:
172
+ ## Known Limitations
200
173
 
201
- - **Origin change** — Your app runs on `localhost:3000` but is accessed via `localhost:4567`. This can affect OAuth redirects, `localStorage` isolation, and Service Worker scope. Most dev workflows are unaffected, but if your app relies on `window.location.origin`, you may need to adjust your dev config.
202
- - **CSP meta tags** — OpenMagic strips CSP response headers to allow the toolbar script. However, CSP set via `<meta>` tags in your HTML cannot be modified and may block the toolbar on strict CSP pages.
174
+ Honesty matters. Here is what you should know:
175
+
176
+ - **Origin change** -- Your app runs on `:3000` but is accessed via `:4567`. This can affect OAuth redirect URIs, `localStorage` isolation, and Service Worker scope. Most dev workflows are unaffected, but apps that depend on `window.location.origin` may need dev config adjustments.
177
+ - **CSP via meta tags** -- OpenMagic strips CSP response headers to allow the toolbar script, but CSP defined in `<meta>` tags cannot be modified at the proxy level and may block the toolbar on strict pages.
178
+ - **Not for production** -- OpenMagic is a development tool. Do not deploy the proxy to production.
179
+
180
+ ---
203
181
 
204
182
  ## Comparison
205
183
 
206
184
  | Feature | OpenMagic | Stagewise | Frontman | Agentation |
207
185
  |---------|-----------|-----------|----------|------------|
208
- | Install method | `npx openmagic` | npm package / Electron app | Framework middleware | npm package |
186
+ | Install | `npx openmagic` | npm + Electron | Framework middleware | npm package |
209
187
  | Framework support | Any (reverse proxy) | React, Vue, Angular, Svelte | Next.js, Astro, Vite | React |
210
- | Code modification | Yes (auto-apply) | Yes (via IDE) | Yes | No (clipboard only) |
211
- | BYOK (Bring Your Own Key) | Yes | Paid tiers | Yes | N/A |
188
+ | Code modification | Yes (diff + approve) | Yes (via IDE) | Yes | No (clipboard) |
189
+ | BYOK | Yes | Paid tiers | Yes | N/A |
212
190
  | Prompt limits | None | 10 free/day | None | N/A |
213
- | Vision (screenshots) | Yes | Yes | No | No |
214
- | Network/console logs | Yes | No | Yes (server-side) | No |
191
+ | Vision | Yes | Yes | No | No |
192
+ | Network profiling | Yes | No | Server-side | No |
215
193
  | Multi-repo | Yes | No | No | No |
216
194
  | IDE required | No | VS Code extension | No | No |
217
- | Open source | MIT | Partial | Apache 2.0 | MIT |
195
+ | License | MIT | Partial | Apache 2.0 | MIT |
196
+
197
+ ---
218
198
 
219
199
  ## Framework Compatibility
220
200
 
221
- OpenMagic works via a reverse proxy, so it's compatible with **any** framework or tool that serves HTML:
222
-
223
- - React (CRA, Vite)
224
- - Next.js
225
- - Vue (Vue CLI, Vite)
226
- - Nuxt
227
- - Angular
228
- - Svelte / SvelteKit
229
- - Astro
230
- - Remix
231
- - Solid
232
- - Qwik
233
- - Ember
234
- - Django / Flask templates
235
- - Rails views
236
- - PHP (Laravel, WordPress)
237
- - Plain HTML + any HTTP server
201
+ OpenMagic works via reverse proxy, so it supports any framework that serves HTML:
202
+
203
+ **JavaScript/TypeScript** -- React, Next.js, Vue, Nuxt, Angular, Svelte, SvelteKit, Astro, Remix, Solid, Qwik, Ember
204
+
205
+ **Server-rendered** -- Django, Flask, Rails, PHP (Laravel, WordPress)
206
+
207
+ **Static** -- Plain HTML with any HTTP server
208
+
209
+ ---
238
210
 
239
211
  ## Contributing
240
212
 
241
213
  ```bash
242
- # Clone the repo
243
214
  git clone https://github.com/Kalmuraee/OpenMagic.git
244
- cd openmagic
245
-
246
- # Install dependencies
215
+ cd OpenMagic
247
216
  npm install
248
-
249
- # Build (CLI + Toolbar)
250
217
  npm run build
251
-
252
- # Test locally against a dev server running on port 3000
253
218
  node dist/cli.js --port 3000
254
219
  ```
255
220
 
256
- ### Project Structure
221
+ See the repo for project structure and contribution guidelines.
257
222
 
258
- ```
259
- src/
260
- cli.ts # CLI entry point (commander)
261
- proxy.ts # Reverse proxy + HTML injection
262
- server.ts # WebSocket + HTTP server
263
- filesystem.ts # Safe file read/write
264
- config.ts # User config management
265
- security.ts # Session tokens
266
- detect.ts # Dev server auto-detection
267
- shared-types.ts # TypeScript interfaces
268
- llm/
269
- registry.ts # Pre-configured provider/model list
270
- proxy.ts # Routes to correct provider adapter
271
- openai.ts # OpenAI-compatible adapter
272
- anthropic.ts # Anthropic adapter
273
- google.ts # Google Gemini adapter
274
- prompts.ts # System prompts for code modification
275
- toolbar/
276
- index.ts # Web Component (Shadow DOM)
277
- services/
278
- ws-client.ts # WebSocket client
279
- dom-inspector.ts # Element inspection
280
- capture.ts # Screenshot capture
281
- context-builder.ts # Assembles LLM context
282
- styles/
283
- toolbar.css.ts # Scoped styles
284
- ```
223
+ ---
285
224
 
286
- ## Roadmap
225
+ ## Changelog Highlights
287
226
 
288
- - [ ] Diff viewer with approve/reject per-file
289
- - [ ] Undo/rollback for applied changes
290
- - [ ] File tree browser in toolbar
291
- - [ ] Voice input
292
- - [ ] Keyboard shortcuts
293
- - [ ] Plugin system for custom context providers
294
- - [ ] Collaborative editing (multiple developers)
295
- - [ ] Git integration (auto-branch, auto-commit)
296
- - [ ] VS Code extension for side-by-side view
227
+ | Version | Milestone |
228
+ |---------|-----------|
229
+ | v0.1 - v0.3 | Core reverse proxy, dev server auto-detection, initial toolbar |
230
+ | v0.4 - v0.7 | Robustness hardening, Chinese model providers, session auth |
231
+ | v0.8 - v0.10 | Complete toolbar rewrite, professional UI, security audit (19 fixes) |
232
+ | v0.11 - v0.14 | Single-port architecture, diff preview, per-provider keys, streaming |
233
+ | v0.15 - v0.17 | Network profiling, image attachments, HMR WebSocket fixes |
234
+ | v0.18 - v0.20 | Full element context (parents, siblings, React props), auto-retry grounding |
235
+ | v0.21 - v0.22 | Fuzzy diff matching, import chain following |
236
+ | v0.23 - v0.24 | Undo, keyboard shortcuts, minimize, markdown rendering, chat polish |
237
+
238
+ ---
297
239
 
298
240
  ## Author
299
241
 
@@ -301,14 +243,14 @@ src/
301
243
 
302
244
  ## License
303
245
 
304
- MIT - Copyright (c) 2026 Khalid Almuraee. See [LICENSE](./LICENSE) for details.
246
+ MIT -- Copyright (c) 2025-2026 Khalid Almuraee. See [LICENSE](./LICENSE) for details.
305
247
 
306
248
  ---
307
249
 
308
250
  <div align="center">
309
251
 
310
- **Built with love for developers who vibe code on their own terms.**
252
+ **BYOK. Any framework. Zero lock-in.**
311
253
 
312
- [Report a Bug](https://github.com/Kalmuraee/OpenMagic/issues) | [Request a Feature](https://github.com/Kalmuraee/OpenMagic/issues)
254
+ [GitHub](https://github.com/Kalmuraee/OpenMagic) &#183; [Website](https://kalmuraee.github.io/OpenMagic/) &#183; [npm](https://www.npmjs.com/package/openmagic) &#183; [Report a Bug](https://github.com/Kalmuraee/OpenMagic/issues) &#183; [Request a Feature](https://github.com/Kalmuraee/OpenMagic/issues)
313
255
 
314
256
  </div>
package/dist/cli.js CHANGED
@@ -1447,7 +1447,7 @@ async function handleLlmChat(params, onChunk, onDone, onError) {
1447
1447
  }
1448
1448
 
1449
1449
  // src/server.ts
1450
- var VERSION = "0.23.0";
1450
+ var VERSION = "0.25.0";
1451
1451
  var __dirname = dirname2(fileURLToPath(import.meta.url));
1452
1452
  function attachOpenMagic(httpServer, roots) {
1453
1453
  function handleRequest(req, res) {
@@ -1980,7 +1980,7 @@ process.on("uncaughtException", (err) => {
1980
1980
  process.exit(1);
1981
1981
  });
1982
1982
  var childProcesses = [];
1983
- var VERSION2 = "0.23.0";
1983
+ var VERSION2 = "0.25.0";
1984
1984
  function ask(question) {
1985
1985
  const rl = createInterface({ input: process.stdin, output: process.stdout });
1986
1986
  return new Promise((resolve3) => {