clew-code 0.2.1

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.
@@ -0,0 +1,135 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Sentry Error Reporting — Clew</title>
7
+ <meta name="description" content="Opt-in Sentry crash/error telemetry for Clew — default off, privacy-first.">
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
11
+ <link rel="stylesheet" href="../css/styles.css">
12
+ </head>
13
+ <body>
14
+ <header class="header">
15
+ <div class="header-inner">
16
+ <a href="../index.html" class="logo"><span>Clew</span></a>
17
+ <nav class="header-nav">
18
+ <a href="../index.html">Home</a>
19
+ <a href="../index.html#features">Features</a>
20
+ <a href="../index.html#commands">Commands</a>
21
+ <a href="../quick-start.html" class="active">Docs</a>
22
+ <a href="https://github.com/JonusNattapong/ClewCode" target="_blank">GitHub</a>
23
+ </nav>
24
+ <button class="menu-btn" id="menuToggle" aria-label="Toggle navigation"><span></span><span></span><span></span></button>
25
+ </div>
26
+ </header>
27
+ <div class="app">
28
+ <aside class="sidebar" id="sidebar"></aside>
29
+ <div class="sidebar-overlay" id="sidebarOverlay"></div>
30
+ <div class="content-wrap">
31
+ <main class="content">
32
+ <div class="breadcrumbs"><a href="../index.html">Home</a><span class="sep">/</span><a href="../index.html#features">Features</a><span class="sep">/</span><span>Sentry Setup</span></div>
33
+ <h1>Sentry Error Reporting</h1>
34
+ <p class="section-subtitle">Optional, opt-in crash and error telemetry — <strong>completely disabled by default</strong>. No data leaves your machine unless you explicitly set <code>SENTRY_DSN</code>.</p>
35
+
36
+ <div class="callout callout-tip">
37
+ <strong>TL;DR</strong>
38
+ <code>SENTRY_DSN=https://key@sentry.io/123 claude</code> — that's it. Without it, zero network requests, zero telemetry.
39
+ </div>
40
+
41
+ <h2>Quick Start</h2>
42
+ <h3>Self-hosted Sentry</h3>
43
+ <pre><code>SENTRY_DSN=https://public_key@your-sentry.example.com/123 claude</code></pre>
44
+
45
+ <h3>Sentry Cloud</h3>
46
+ <pre><code>SENTRY_DSN=https://public_key@o123456.ingest.sentry.io/789 claude</code></pre>
47
+
48
+ <h3>Disable (default)</h3>
49
+ <pre><code>clew</code></pre>
50
+
51
+ <h2>Environment Variables</h2>
52
+ <table>
53
+ <tr><th>Variable</th><th>Required</th><th>Default</th><th>Description</th></tr>
54
+ <tr><td><code>SENTRY_DSN</code></td><td><strong>yes</strong></td><td>—</td><td>Sentry DSN to enable. Without this, everything is no-op.</td></tr>
55
+ <tr><td><code>SENTRY_ENVIRONMENT</code></td><td>no</td><td><code>NODE_ENV</code> or <code>production</code></td><td>Environment tag in Sentry dashboard</td></tr>
56
+ <tr><td><code>SENTRY_RELEASE</code></td><td>no</td><td>auto from package.json</td><td>Release version tag</td></tr>
57
+ <tr><td><code>SENTRY_SAMPLE_RATE</code></td><td>no</td><td><code>1.0</code></td><td>Error sample rate (0.0–1.0)</td></tr>
58
+ </table>
59
+
60
+ <h2>What Gets Sent</h2>
61
+ <p>Only error metadata — <strong>never prompts, responses, file contents, or command output</strong>:</p>
62
+ <ul>
63
+ <li>Error name, message, and stack trace (without local variable values)</li>
64
+ <li>Runtime info: OS platform, Node/Bun version</li>
65
+ <li>Mode: REPL, non-interactive, MCP server</li>
66
+ <li>Provider and model name (when applicable)</li>
67
+ <li>Version and release tag</li>
68
+ </ul>
69
+
70
+ <h2>What Does NOT Get Sent</h2>
71
+ <table>
72
+ <tr><th>Category</th><th>Examples</th></tr>
73
+ <tr><td><strong>Prompts</strong></td><td>user input, AI system prompts</td></tr>
74
+ <tr><td><strong>Responses</strong></td><td>model output, streaming chunks</td></tr>
75
+ <tr><td><strong>File content</strong></td><td>Read/Edit/Write payload, command stdout/stderr</td></tr>
76
+ <tr><td><strong>Credentials</strong></td><td>API keys, tokens, passwords, cookies</td></tr>
77
+ <tr><td><strong>Auth headers</strong></td><td>Authorization, x-api-key, Cookie, Set-Cookie</td></tr>
78
+ <tr><td><strong>OAuth tokens</strong></td><td>access_token, refresh_token, id_token</td></tr>
79
+ <tr><td><strong>Environment dump</strong></td><td>entire env block (individual vars may appear as tags)</td></tr>
80
+ <tr><td><strong>Local paths</strong></td><td>home directory anonymized to <code>[HOME]</code></td></tr>
81
+ <tr><td><strong>Breadcrumbs</strong></td><td>user actions are not tracked</td></tr>
82
+ <tr><td><strong>User identity</strong></td><td>user field stripped from all events</td></tr>
83
+ </table>
84
+
85
+ <h2>Privacy Scrubber</h2>
86
+ <p>Every event passes through a <code>beforeSend</code> hook that:</p>
87
+ <ol>
88
+ <li><strong>Scrubs strings</strong> — removes API key patterns (<code>sk-*</code>, <code>Bearer</code> tokens), auth headers, cookie values</li>
89
+ <li><strong>Strips stack frame variables</strong> — removes <code>vars</code>, <code>pre_context</code>, <code>context_line</code>, <code>post_context</code></li>
90
+ <li><strong>Removes breadcrumbs</strong> — user actions are never tracked</li>
91
+ <li><strong>Cleans request data</strong> — removes headers, cookies, query strings</li>
92
+ <li><strong>Anonymizes home directory</strong> — replaces paths with <code>[HOME]</code></li>
93
+ <li><strong>Drops oversized strings</strong> — over 2000 chars truncated</li>
94
+ <li><strong>Recursively scrubs nested objects</strong> — drops keys named prompt, response, content, message, input, output, text, body, data, payload, token, key, secret, password, auth, cookie</li>
95
+ </ol>
96
+
97
+ <h2>Checking Status</h2>
98
+ <pre><code># When disabled
99
+ Sentry Telemetry: Disabled (set SENTRY_DSN to enable)
100
+
101
+ # When enabled
102
+ Sentry Telemetry: Enabled</code></pre>
103
+
104
+ <div class="callout callout-info">
105
+ <strong>DSN Masking</strong>
106
+ The DSN is masked in the UI — only the first 8 and last 4 characters of the key are shown. The full DSN is never displayed in any output.
107
+ </div>
108
+
109
+ <h2>Files</h2>
110
+ <table>
111
+ <tr><th>File</th><th>Purpose</th></tr>
112
+ <tr><td><code>src/utils/sentry.ts</code></td><td>Core wrapper — init, capture, close, scrubber</td></tr>
113
+ <tr><td><code>src/utils/sentry.test.ts</code></td><td>Unit tests (11 tests)</td></tr>
114
+ <tr><td><code>src/entrypoints/init.ts</code></td><td>Calls <code>initSentry()</code> at startup</td></tr>
115
+ <tr><td><code>src/utils/gracefulShutdown.ts</code></td><td>Calls <code>closeSentry()</code> before exit</td></tr>
116
+ <tr><td><code>src/utils/log.ts</code></td><td><code>logError()</code> sends to Sentry when enabled</td></tr>
117
+ <tr><td><code>src/components/SentryErrorBoundary.tsx</code></td><td>React error boundary for render crashes</td></tr>
118
+ <tr><td><code>src/components/App.tsx</code></td><td>Wraps app tree in <code>SentryErrorBoundary</code></td></tr>
119
+ <tr><td><code>src/utils/doctorDiagnostic.ts</code></td><td><code>/doctor</code> Sentry status display</td></tr>
120
+ </table>
121
+
122
+ <footer class="footer">
123
+ <span>Clew v0.1.2</span>
124
+ <div class="footer-links">
125
+ <a href="https://github.com/JonusNattapong/ClewCode">GitHub</a>
126
+ <a href="https://github.com/JonusNattapong/ClewCode/issues">Issues</a>
127
+ </div>
128
+ </footer>
129
+ </main>
130
+ <nav class="toc-sidebar"></nav>
131
+ </div>
132
+ </div>
133
+ <script src="../js/main.js"></script>
134
+ </body>
135
+ </html>
@@ -0,0 +1,307 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Clew — Multi-Provider AI Coding Assistant</title>
7
+ <meta name="description" content="Terminal-based AI coding assistant with 15+ AI providers, 80+ slash commands, extensible plugin system.">
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
11
+ <link rel="stylesheet" href="css/styles.css">
12
+ </head>
13
+ <body>
14
+
15
+ <!-- ─── Header ─── -->
16
+ <header class="header">
17
+ <div class="header-inner">
18
+ <a href="index.html" class="logo">
19
+ <span class="logo-mark">C</span>
20
+ <span>Clew</span>
21
+ </a>
22
+ <nav class="header-nav">
23
+ <a href="index.html" class="active">Home</a>
24
+ <a href="#features">Features</a>
25
+ <a href="#commands">Commands</a>
26
+ <a href="quick-start.html">Docs</a>
27
+ <a href="https://github.com/JonusNattapong/ClewCode" target="_blank">GitHub</a>
28
+ </nav>
29
+ <button class="menu-btn" id="menuToggle" aria-label="Toggle navigation">
30
+ <span></span><span></span><span></span>
31
+ </button>
32
+ </div>
33
+ </header>
34
+
35
+ <div class="app">
36
+ <!-- ─── Sidebar ─── -->
37
+ <aside class="sidebar" id="sidebar"></aside>
38
+ <div class="sidebar-overlay" id="sidebarOverlay"></div>
39
+
40
+ <!-- ─── Content Wrap ─── -->
41
+ <div class="content-wrap">
42
+ <main class="content">
43
+
44
+ <!-- ─── Breadcrumbs ─── -->
45
+ <div class="breadcrumbs">
46
+ <a href="index.html">Home</a>
47
+ </div>
48
+
49
+ <!-- ─── Hero ─── -->
50
+ <section class="hero">
51
+ <div class="hero-badge">
52
+ <span class="dot"></span>
53
+ v0.2.1 — Multi-Provider AI CLI
54
+ </div>
55
+ <h1>
56
+ Code with<br>
57
+ <span class="highlight">any model</span>
58
+ </h1>
59
+ <p>
60
+ A terminal-based AI coding assistant with multi-provider routing,
61
+ extensible plugin architecture, and a comprehensive tool system
62
+ for professional development workflows.
63
+ </p>
64
+ <div class="hero-actions">
65
+ <a href="https://npmjs.com/package/clew-code" class="btn btn-primary">
66
+ npm install -g clew-code
67
+ </a>
68
+ <a href="https://github.com/JonusNattapong/ClewCode" class="btn btn-ghost" target="_blank">
69
+ GitHub →
70
+ </a>
71
+ </div>
72
+ </section>
73
+
74
+ <!-- ─── Terminal Demo ─── -->
75
+ <div class="terminal-window">
76
+ <div class="terminal-bar">
77
+ <span class="terminal-dot"></span>
78
+ <span class="terminal-dot"></span>
79
+ <span class="terminal-dot"></span>
80
+ <span class="terminal-title">clew — ~/project</span>
81
+ </div>
82
+ <div class="terminal-body">
83
+ <span class="line"><span class="prompt">$</span> <span class="cmd">clew</span></span>
84
+ <span class="line"><span class="output">╭──────────────────────────────────────────╮</span></span>
85
+ <span class="line"><span class="output">│ <span class="highlight-amber">Clew</span> · model: <span class="highlight-cyan">deepseek-v4-flash</span> │</span></span>
86
+ <span class="line"><span class="output">│ provider: <span class="highlight-cyan">DeepSeek</span> · context: <span class="highlight-amber">78%</span> │</span></span>
87
+ <span class="line"><span class="output">╰──────────────────────────────────────────╯</span></span>
88
+ <span class="line"><span class="prompt">></span> <span class="cmd">"find all unused exports in src/"</span></span>
89
+ <span class="line"><span class="output">Searching <span class="highlight-cyan">3 files</span>... Found <span class="highlight-amber">2 unused exports</span>.</span></span>
90
+ </div>
91
+ </div>
92
+
93
+ <!-- ─── Stats ─── -->
94
+ <div class="stats-grid">
95
+ <div class="stat-card">
96
+ <div class="stat-number">27</div>
97
+ <div class="stat-label">AI Providers</div>
98
+ </div>
99
+ <div class="stat-card">
100
+ <div class="stat-number">80+</div>
101
+ <div class="stat-label">Slash Commands</div>
102
+ </div>
103
+ <div class="stat-card">
104
+ <div class="stat-number">50+</div>
105
+ <div class="stat-label">Built-in Tools</div>
106
+ </div>
107
+ <div class="stat-card">
108
+ <div class="stat-number">100%</div>
109
+ <div class="stat-label">Open Source</div>
110
+ </div>
111
+ </div>
112
+
113
+ <!-- ─── Features ─── -->
114
+ <h2 class="section-title" id="features">Features</h2>
115
+ <p class="section-subtitle">
116
+ Everything you need for AI-assisted development — from a single terminal.
117
+ </p>
118
+
119
+ <div class="feature-grid">
120
+ <div class="feature-card">
121
+ <h3>Multi-Provider Routing</h3>
122
+ <p>Switch between Anthropic, OpenAI, Google Gemini, DeepSeek, OpenRouter, Ollama, xAI, Mistral, Groq, Cohere, Copilot, KiloCode, and OpenAI-compatible endpoints at runtime.</p>
123
+ <span class="feature-tag">/model</span>
124
+ <span class="feature-tag">/provider</span>
125
+ </div>
126
+ <div class="feature-card">
127
+ <h3>65+ Built-in Tools</h3>
128
+ <p>Read, Edit, Write, Glob, Grep, Bash, Web Search, Research, MCP, LSP, Agent, Task, Monitor, and Workflow tools.</p>
129
+ <span class="feature-tag">/tools</span>
130
+ </div>
131
+ <div class="feature-card">
132
+ <h3>Plugin System</h3>
133
+ <p>Extend with commands, agents, skills, hooks, and <a href="mcp.html">MCP servers</a>. Pre/post tool hooks for custom automation.</p>
134
+ <span class="feature-tag">/plugin</span>
135
+ <span class="feature-tag">/skill</span>
136
+ </div>
137
+ <div class="feature-card">
138
+ <h3>Agent View</h3>
139
+ <p>Multi-session dashboard with supervisor daemon, background tasks, IPC communication, worktree isolation, PR column display, dispatch autocomplete, and keyboard shortcuts.</p>
140
+ <span class="feature-tag">/agents</span>
141
+ </div>
142
+ <div class="feature-card">
143
+ <h3>Background Shell</h3>
144
+ <p>Run long-lived commands as persistent background agent tasks with <code>!bg &lt;command&gt;</code>. Live status, exit codes, stderr capture, and full dashboard integration.</p>
145
+ <span class="feature-tag">!bg</span>
146
+ </div>
147
+ <div class="feature-card">
148
+ <a href="daemon.html" style="color:inherit;text-decoration:none"><h3>24/7 Autonomous Mode</h3>
149
+ <p>Persistent daemon with task queue, auto-scheduling, health checks, auto-respawn, and worker session orchestration.</p></a>
150
+ <span class="feature-tag">/daemon</span>
151
+ <span class="feature-tag">/task</span>
152
+ </div>
153
+ <div class="feature-card">
154
+ <a href="research-memory.html" style="color:inherit;text-decoration:none"><h3>Smart Memory</h3>
155
+ <p>Cross-lingual semantic search, hybrid recall (local + LLM), auto-memory capture, and team sync.</p></a>
156
+ <span class="feature-tag">/memory</span>
157
+ </div>
158
+ <div class="feature-card">
159
+ <h3>Bridge Mode</h3>
160
+ <p>WebSocket remote collaboration with session sharing, team onboarding, and mobile/web clients.</p>
161
+ <span class="feature-tag">Bridge</span>
162
+ </div>
163
+ <div class="feature-card">
164
+ <h3>KiloCompact</h3>
165
+ <p>Local context compaction: log/trace snipping, failed-state consolidation, semantic turn pruning.</p>
166
+ <span class="feature-tag">/compact</span>
167
+ </div>
168
+ <div class="feature-card">
169
+ <h3>Permission Modes</h3>
170
+ <p>Default, Auto, Plan, YOLO Lite, YOLO, YOLO MAX — granular control over tool execution safety.</p>
171
+ <span class="feature-tag">/permissions</span>
172
+ </div>
173
+ <div class="feature-card">
174
+ <h3>Preference Learning</h3>
175
+ <p>Local-first taste system that learns your coding style from accept/reject/edit signals. Interactive menu, edit validation, config live-reload, and prompt injection.</p>
176
+ <span class="feature-tag">/taste</span>
177
+ </div>
178
+ </div>
179
+
180
+ <!-- ─── Usage ─── -->
181
+ <h2 class="section-title" id="usage">Quick Start</h2>
182
+ <p class="section-subtitle">From zero to coding in under a minute.</p>
183
+
184
+ <div class="code-block-wrap">
185
+ <div class="code-block-header">
186
+ <span>bash</span>
187
+ </div>
188
+ <pre><code><span class="cmd-muted">$</span> <span class="cmd-primary">npm install -g clew-code</span>
189
+ <span class="cmd-muted">$</span> <span class="cmd-primary">export ANTHROPIC_API_KEY=sk-ant-...</span>
190
+ <span class="cmd-muted">$</span> <span class="cmd-primary">clew</span>
191
+
192
+ <span class="cmd-muted"># Ask a question</span>
193
+ <span class="cmd-muted">></span> <span class="cmd-primary">"find all unused exports in src/"</span>
194
+
195
+ <span class="cmd-muted"># Switch model on the fly</span>
196
+ <span class="cmd-muted">></span> <span class="cmd-primary">/model deepseek-v4-flash</span>
197
+
198
+ <span class="cmd-muted"># Context management</span>
199
+ <span class="cmd-muted">></span> <span class="cmd-primary">/clear</span> <span class="cmd-muted"># Fresh start</span>
200
+ <span class="cmd-muted">></span> <span class="cmd-primary">/compact</span> <span class="cmd-muted"># Compress context</span>
201
+ <span class="cmd-muted">></span> <span class="cmd-primary">/resume</span> <span class="cmd-muted"># Resume last session</span></code></pre>
202
+ </div>
203
+
204
+ <!-- ─── Slash Commands ─── -->
205
+ <h2 class="section-title" id="commands">Slash Commands</h2>
206
+ <p class="section-subtitle">80+ commands to control every aspect of your workflow.</p>
207
+
208
+ <table>
209
+ <thead>
210
+ <tr><th>Category</th><th>Commands</th><th>Description</th></tr>
211
+ </thead>
212
+ <tbody>
213
+ <tr><td><span class="cmd-accent">Files</span></td><td><code>/read</code> <code>/edit</code> <code>/write</code> <code>/glob</code> <code>/grep</code></td><td>Read, edit, create, and search files</td></tr>
214
+ <tr><td><span class="cmd-accent">Git</span></td><td><code>/diff</code> <code>/commit</code> <code>/branch</code></td><td>Version control operations</td></tr>
215
+ <tr><td><span class="cmd-accent">Model</span></td><td><code>/model</code> <code>/provider</code> <code>/cost</code> <code>/usage</code> <code>/stats</code></td><td>Switch models and track usage</td></tr>
216
+ <tr><td><span class="cmd-accent">Session</span></td><td><code>/clear</code> <code>/compact</code> <code>/resume</code> <code>/session</code> <code>/rewind</code></td><td>Context and session management</td></tr>
217
+ <tr><td><span class="cmd-accent">Config</span></td><td><code>/permissions</code> <code>/plan</code> <code>/config</code> <code>/theme</code></td><td>Settings and preferences</td></tr>
218
+ <tr><td><span class="cmd-accent">Extend</span></td><td><code>/plugin</code> <code>/skill</code> <code>/agent</code> <code>/agents</code> <code>/mcp</code></td><td>Plugins, skills, agents, MCP</td></tr>
219
+ <tr><td><span class="cmd-accent">Daemon</span></td><td><code>/daemon</code> <code>/task</code> <code>/loop</code></td><td>24/7 autonomous agent, task queue, and recurring tasks</td></tr>
220
+ <tr><td><span class="cmd-accent">Automation</span></td><td><code>/autofix-pr</code></td><td>Fix CI errors and review comments on a PR via Clew on the web</td></tr>
221
+ <tr><td><span class="cmd-accent">System</span></td><td><code>/help</code> <code>/status</code> <code>/doctor</code> <code>/exit</code></td><td>Help, diagnostics, and exit</td></tr>
222
+ </tbody>
223
+ </table>
224
+
225
+ <!-- ─── Providers ─── -->
226
+ <h2 class="section-title" id="providers">AI Providers</h2>
227
+ <p class="section-subtitle">Bring your own key — use the model that works best for each task.</p>
228
+
229
+ <table>
230
+ <thead>
231
+ <tr><th>Provider</th><th>Config</th><th>Models</th></tr>
232
+ </thead>
233
+ <tbody>
234
+ <tr><td><span class="cmd-info">Anthropic</span></td><td><code>ANTHROPIC_API_KEY</code></td><td>claude-opus-4-7, claude-sonnet-4-6</td></tr>
235
+ <tr><td><span class="cmd-info">OpenAI</span></td><td><code>OPENAI_API_KEY</code></td><td>gpt-5.5, gpt-5.4-mini</td></tr>
236
+ <tr><td><span class="cmd-info">Google</span></td><td><code>GOOGLE_API_KEY</code></td><td>gemini-3.1-pro, gemini-3.1-flash</td></tr>
237
+ <tr><td><span class="cmd-info">DeepSeek</span></td><td><code>DEEPSEEK_API_KEY</code></td><td>deepseek-v4-pro, deepseek-v4-flash</td></tr>
238
+ <tr><td><span class="cmd-info">OpenRouter</span></td><td><code>OPENROUTER_API_KEY</code></td><td>100+ models via routed API</td></tr>
239
+ <tr><td><span class="cmd-info">Ollama</span></td><td><code>OLLAMA_HOST</code></td><td>llama3.3, llama4:70b, qwen3.6</td></tr>
240
+ <tr><td><span class="cmd-info">xAI</span></td><td><code>XAI_API_KEY</code></td><td>grok-4.3</td></tr>
241
+ <tr><td><span class="cmd-info">Mistral</span></td><td><code>MISTRAL_API_KEY</code></td><td>mistral-large-3, mistral-small-4</td></tr>
242
+ <tr><td><span class="cmd-info">Groq</span></td><td><code>GROQ_API_KEY</code></td><td>llama-3.3-70b, deepseek-v4</td></tr>
243
+ <tr><td><span class="cmd-info">Cohere</span></td><td><code>COHERE_API_KEY</code></td><td>command-a-plus</td></tr>
244
+ <tr><td><span class="cmd-info">Copilot</span></td><td><code>COPILOT_GITHUB_TOKEN</code></td><td>claude, GPT models</td></tr>
245
+ <tr><td><span class="cmd-info">KiloCode</span></td><td><code>KILOCODE_API_KEY</code></td><td>kilo-auto/free, kilo-auto/balanced</td></tr>
246
+ </tbody>
247
+ </table>
248
+
249
+ <!-- ─── Plugins ─── -->
250
+ <h2 class="section-title" id="plugins">Plugins &amp; Skills</h2>
251
+ <p class="section-subtitle">Extend functionality with built-in and marketplace plugins.</p>
252
+
253
+ <table>
254
+ <thead>
255
+ <tr><th>Plugin</th><th>Description</th></tr>
256
+ </thead>
257
+ <tbody>
258
+ <tr><td><code>commit-commands</code></td><td>Git workflow: commit, push, PR creation</td></tr>
259
+ <tr><td><code>code-review</code></td><td>Automated PR code review</td></tr>
260
+ <tr><td><code>feature-dev</code></td><td>Guided feature development with agents</td></tr>
261
+ <tr><td><code>frontend-design</code></td><td>Production-grade UI/UX generation</td></tr>
262
+ <tr><td><code>verify</code></td><td>Typecheck, lint, build, and test</td></tr>
263
+ <tr><td><code>debug</code></td><td>Debugging assistance</td></tr>
264
+ <tr><td><code>commit</code></td><td>Conventional git commits</td></tr>
265
+ <tr><td><code>simplify</code></td><td>Code quality and reuse review</td></tr>
266
+ <tr><td><code>web-search</code></td><td>Multi-provider web search</td></tr>
267
+ <tr><td><code>scrapling</code></td><td>Web scraping with Scrapling</td></tr>
268
+ <tr><td><code>skillify</code></td><td>Create skills from workflows</td></tr>
269
+ <tr><td><code>remember</code></td><td>Save user preferences</td></tr>
270
+ </tbody>
271
+ </table>
272
+
273
+ <!-- ─── Changelog ─── -->
274
+ <h2 class="section-title" id="updates">v0.2.1 Updates</h2>
275
+ <ul>
276
+ <li><strong>Taste system</strong> — Local-first preference-learning runtime. Interactive <code>/taste</code> menu with Spinner loading, edit validation in permission dialogs, status line in footer, config live-reload, and prompt injection with <code>&lt;clew_taste&gt;</code> block.</li>
277
+ <li><strong>Model picker grouped by provider</strong> — <code>/model</code> now shows all models from all providers in separate named sections instead of only the active provider's models.</li>
278
+ <li><strong>Provider auto-persist</strong> — Last-used provider+model saved to <code>provider.json</code> without <code>--global</code>.</li>
279
+ <li><strong>Security hardening</strong> — PowerShell prefix/wildcard rules, malformed tool call guard, bash 100MB output limit, Guardian auto-review with circuit breaker.</li>
280
+ <li><strong>Bridge v2</strong> — Provider-agnostic WebSocket remote control, relay client, REPL bridging.</li>
281
+ <li><strong>PR commands</strong> — <code>/pr create</code>, <code>list</code>, <code>view</code>, <code>review</code>, <code>merge</code>, <code>status</code>.</li>
282
+ </ul>
283
+
284
+ <div style="margin-top:var(--space-lg)">
285
+ <a href="https://github.com/JonusNattapong/ClewCode/blob/main/CHANGELOG.md" class="btn btn-ghost">Full Changelog →</a>
286
+ </div>
287
+
288
+ <!-- ─── Footer ─── -->
289
+ <footer class="footer">
290
+ <span>Clew v0.2.1 — Open Source</span>
291
+ <div class="footer-links">
292
+ <a href="https://github.com/JonusNattapong/ClewCode">GitHub</a>
293
+ <a href="https://github.com/JonusNattapong/ClewCode/issues">Issues</a>
294
+ <a href="https://npmjs.com/package/clew-code">npm</a>
295
+ </div>
296
+ </footer>
297
+
298
+ </main>
299
+
300
+ <!-- ─── Right TOC ─── -->
301
+ <nav class="toc-sidebar"></nav>
302
+ </div>
303
+ </div>
304
+
305
+ <script src="js/main.js"></script>
306
+ </body>
307
+ </html>
@@ -0,0 +1,102 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Installation — Clew</title>
7
+ <meta name="description" content="Install Clew via npm, run from source, or use the prebuilt binary.">
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
11
+ <link rel="stylesheet" href="css/styles.css">
12
+ </head>
13
+ <body>
14
+ <header class="header"><div class="header-inner"><a href="index.html" class="logo"><span>Clew</span></a><nav class="header-nav"><a href="index.html">Home</a><a href="index.html#features">Features</a><a href="index.html#commands">Commands</a><a href="quick-start.html" class="active">Docs</a><a href="https://github.com/JonusNattapong/ClewCode" target="_blank">GitHub</a></nav><button class="menu-btn" id="menuToggle" aria-label="Toggle navigation"><span></span><span></span><span></span></button></div></header>
15
+ <div class="app"><aside class="sidebar" id="sidebar"></aside><div class="sidebar-overlay" id="sidebarOverlay"></div>
16
+ <div class="content-wrap"><main class="content">
17
+ <div class="breadcrumbs"><a href="index.html">Home</a><span class="sep">/</span><span>Installation</span></div>
18
+ <h1>Installation</h1>
19
+ <p class="section-subtitle">Clew runs on Windows, macOS, Linux, and WSL2. Runtime: Bun 1.3+.</p>
20
+
21
+ <h2>Prerequisites</h2>
22
+ <ul>
23
+ <li><strong>Bun 1.3+</strong> — required runtime for both global installs and source builds</li>
24
+ <li>At least one AI provider API key</li>
25
+ </ul>
26
+
27
+ <h2>Via npm (global)</h2>
28
+ <pre><code>npm install -g clew-code
29
+ clew
30
+
31
+ # Verify
32
+ clew --version</code></pre>
33
+ <p><strong>Important:</strong> the npm package installs the launcher only. You must install <a href="https://bun.sh">Bun</a> separately before running <code>clew</code>.</p>
34
+
35
+ <h2>Via Bun (global)</h2>
36
+ <pre><code>bun install -g clew-code
37
+ clew</code></pre>
38
+
39
+ <h2>From Source</h2>
40
+ <pre><code>git clone https://github.com/JonusNattapong/ClewCode.git
41
+ cd ClewCode
42
+ bun install
43
+ bun run build
44
+ bun run start
45
+
46
+ # Development mode with watch
47
+ bun run dev</code></pre>
48
+
49
+ <p>Build output goes to <code>dist/</code>. The build uses Bun bundler with compile-time feature defines (<code>TRANSCRIPT_CLASSIFIER</code>, <code>CHICAGO_MCP</code>).</p>
50
+
51
+ <h2>Platform-Specific Notes</h2>
52
+
53
+ <h3>Windows</h3>
54
+ <ul>
55
+ <li>Both cmd and PowerShell supported as shell targets</li>
56
+ <li>ripgrep bundled at <code>src/utils/vendor/ripgrep/x64-win32/rg.exe</code></li>
57
+ <li>WSL2 recommended for best experience</li>
58
+ <li>Windows argv normalization in <code>src/entry.ts</code></li>
59
+ <li>TTY polyfill for Ink compatibility in <code>src/main.tsx</code></li>
60
+ </ul>
61
+
62
+ <h3>macOS</h3>
63
+ <ul>
64
+ <li>Native support with menu bar app integration (moltbot)</li>
65
+ <li>Voice Wake and Talk Mode overlays</li>
66
+ <li>Keychain prefetch for faster OAuth startup</li>
67
+ <li>WebChat and debug tools available</li>
68
+ </ul>
69
+
70
+ <h3>Linux</h3>
71
+ <ul>
72
+ <li>Full support via terminal</li>
73
+ <li>Tailscale Serve/Funnel for remote gateway access</li>
74
+ </ul>
75
+
76
+ <h2>Release Channels</h2>
77
+ <table>
78
+ <tr><th>Channel</th><th>npm Tag</th><th>Description</th></tr>
79
+ <tr><td>stable</td><td><code>latest</code></td><td>Tagged releases (vYYYY.M.D)</td></tr>
80
+ <tr><td>beta</td><td><code>beta</code></td><td>Prereleases (vYYYY.M.D-beta.N)</td></tr>
81
+ <tr><td>dev</td><td><code>dev</code></td><td>Moving main branch</td></tr>
82
+ </table>
83
+
84
+ <h2>Verifying Installation</h2>
85
+ <pre><code>/doctor # Run environment diagnostics
86
+ /status # Check version, model, account, API connectivity</code></pre>
87
+
88
+ <footer class="footer">
89
+ <span>Clew v0.1.2 — Open Source</span>
90
+ <div class="footer-links">
91
+ <a href="https://github.com/JonusNattapong/ClewCode">GitHub</a>
92
+ <a href="https://github.com/JonusNattapong/ClewCode/issues">Issues</a>
93
+ <a href="https://npmjs.com/package/clew-code">npm</a>
94
+ </div>
95
+ </footer>
96
+ </main>
97
+ <nav class="toc-sidebar"></nav>
98
+ </div>
99
+ </div>
100
+ <script src="js/main.js"></script>
101
+ </body>
102
+ </html>