clew-code 0.2.4 → 0.2.6
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 +264 -292
- package/dist/clew-dev.js +5118 -2840
- package/dist/main.js +2315 -2090
- package/docs/_config.yml +1 -1
- package/docs/architecture.html +145 -166
- package/docs/architecture.th.html +2 -23
- package/docs/commands.html +1 -22
- package/docs/commands.th.html +1 -22
- package/docs/configuration.html +145 -166
- package/docs/configuration.th.html +2 -23
- package/docs/css/styles.css +22 -0
- package/docs/daemon.html +128 -160
- package/docs/daemon.th.html +2 -30
- package/docs/features/bridge-mode.html +98 -98
- package/docs/features/bridge-mode.th.html +1 -1
- package/docs/features/evals.html +181 -181
- package/docs/features/evals.th.html +1 -1
- package/docs/features/searxng-search.html +150 -150
- package/docs/features/searxng-search.th.html +1 -1
- package/docs/features/sentry-setup.html +156 -156
- package/docs/features/sentry-setup.th.html +1 -1
- package/docs/index.html +298 -333
- package/docs/index.th.html +1 -36
- package/docs/installation.html +103 -124
- package/docs/installation.th.html +2 -23
- package/docs/internals/growthbook-ab-testing.html +112 -112
- package/docs/internals/growthbook-ab-testing.th.html +1 -1
- package/docs/internals/hidden-features.html +147 -147
- package/docs/internals/hidden-features.th.html +1 -1
- package/docs/js/main.js +78 -7
- package/docs/loop.html +180 -0
- package/docs/loop.th.html +226 -0
- package/docs/mcp.html +246 -157
- package/docs/mcp.th.html +156 -60
- package/docs/models.html +1 -22
- package/docs/models.th.html +1 -22
- package/docs/peer.html +235 -0
- package/docs/peer.th.html +279 -0
- package/docs/permission-model.html +101 -122
- package/docs/permission-model.th.html +2 -23
- package/docs/plugins.html +101 -122
- package/docs/plugins.th.html +2 -23
- package/docs/providers.html +117 -138
- package/docs/providers.th.html +2 -23
- package/docs/quick-start.html +92 -120
- package/docs/quick-start.th.html +1 -29
- package/docs/research-memory.html +79 -111
- package/docs/research-memory.th.html +2 -30
- package/docs/skills.html +116 -137
- package/docs/skills.th.html +2 -23
- package/docs/taste.html +96 -29
- package/docs/taste.th.html +193 -54
- package/docs/tools.html +169 -190
- package/docs/tools.th.html +2 -23
- package/docs/troubleshooting.html +105 -126
- package/docs/troubleshooting.th.html +2 -23
- package/package.json +5 -3
|
@@ -1,156 +1,156 @@
|
|
|
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
|
-
<link rel="icon" type="image/svg+xml" href="../assets/clew.svg">
|
|
13
|
-
</head>
|
|
14
|
-
<body>
|
|
15
|
-
<header class="header">
|
|
16
|
-
<div class="header-inner">
|
|
17
|
-
<a href="../index.html" class="logo">
|
|
18
|
-
<span>Clew Code</span>
|
|
19
|
-
</a>
|
|
20
|
-
<nav class="header-nav">
|
|
21
|
-
<a href="../index.html">Home</a>
|
|
22
|
-
<a href="../index.html#features">Features</a>
|
|
23
|
-
<a href="../index.html#commands">Commands</a>
|
|
24
|
-
<a href="../quick-start.html" class="active">Docs</a>
|
|
25
|
-
<a href="https://github.com/JonusNattapong/ClewCode" target="_blank">GitHub</a>
|
|
26
|
-
<div class="lang-wrap">
|
|
27
|
-
<button class="lang-btn">🌐</button>
|
|
28
|
-
<div class="lang-menu">
|
|
29
|
-
<a href="../../readme/README.zh.md">中文</a>
|
|
30
|
-
<a href="../../readme/README.th.md">ไทย</a>
|
|
31
|
-
<a href="../../readme/README.ja.md">日本語</a>
|
|
32
|
-
<a href="../../readme/README.ko.md">한국어</a>
|
|
33
|
-
<a href="../../readme/README.es.md">Español</a>
|
|
34
|
-
<a href="../../readme/README.fr.md">Français</a>
|
|
35
|
-
<a href="../../readme/README.de.md">Deutsch</a>
|
|
36
|
-
<a href="../../readme/README.pt.md">Português</a>
|
|
37
|
-
<a href="../../readme/README.vi.md">Tiếng Việt</a>
|
|
38
|
-
<a href="../../readme/README.id.md">Bahasa Indonesia</a>
|
|
39
|
-
<a href="../../readme/README.ru.md">Русский</a>
|
|
40
|
-
<a href="../../readme/README.hi.md">हिन्दी</a>
|
|
41
|
-
<a href="../../README.md">English</a>
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
</nav>
|
|
45
|
-
<button class="menu-btn" id="menuToggle" aria-label="Toggle navigation"><span></span><span></span><span></span></button>
|
|
46
|
-
</div>
|
|
47
|
-
</header>
|
|
48
|
-
<div class="app">
|
|
49
|
-
<aside class="sidebar" id="sidebar"></aside>
|
|
50
|
-
<div class="sidebar-overlay" id="sidebarOverlay"></div>
|
|
51
|
-
<div class="content-wrap">
|
|
52
|
-
<main class="content">
|
|
53
|
-
<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>
|
|
54
|
-
<h1>Sentry Error Reporting</h1>
|
|
55
|
-
<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>
|
|
56
|
-
|
|
57
|
-
<div class="callout callout-tip">
|
|
58
|
-
<strong>TL;DR</strong>
|
|
59
|
-
<code>SENTRY_DSN=https://key@sentry.io/123 claude</code> — that's it. Without it, zero network requests, zero telemetry.
|
|
60
|
-
</div>
|
|
61
|
-
|
|
62
|
-
<h2>Quick Start</h2>
|
|
63
|
-
<h3>Self-hosted Sentry</h3>
|
|
64
|
-
<pre><code>SENTRY_DSN=https://public_key@your-sentry.example.com/123 claude</code></pre>
|
|
65
|
-
|
|
66
|
-
<h3>Sentry Cloud</h3>
|
|
67
|
-
<pre><code>SENTRY_DSN=https://public_key@o123456.ingest.sentry.io/789 claude</code></pre>
|
|
68
|
-
|
|
69
|
-
<h3>Disable (default)</h3>
|
|
70
|
-
<pre><code>clew</code></pre>
|
|
71
|
-
|
|
72
|
-
<h2>Environment Variables</h2>
|
|
73
|
-
<table>
|
|
74
|
-
<tr><th>Variable</th><th>Required</th><th>Default</th><th>Description</th></tr>
|
|
75
|
-
<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>
|
|
76
|
-
<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>
|
|
77
|
-
<tr><td><code>SENTRY_RELEASE</code></td><td>no</td><td>auto from package.json</td><td>Release version tag</td></tr>
|
|
78
|
-
<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>
|
|
79
|
-
</table>
|
|
80
|
-
|
|
81
|
-
<h2>What Gets Sent</h2>
|
|
82
|
-
<p>Only error metadata — <strong>never prompts, responses, file contents, or command output</strong>:</p>
|
|
83
|
-
<ul>
|
|
84
|
-
<li>Error name, message, and stack trace (without local variable values)</li>
|
|
85
|
-
<li>Runtime info: OS platform, Node/Bun version</li>
|
|
86
|
-
<li>Mode: REPL, non-interactive, MCP server</li>
|
|
87
|
-
<li>Provider and model name (when applicable)</li>
|
|
88
|
-
<li>Version and release tag</li>
|
|
89
|
-
</ul>
|
|
90
|
-
|
|
91
|
-
<h2>What Does NOT Get Sent</h2>
|
|
92
|
-
<table>
|
|
93
|
-
<tr><th>Category</th><th>Examples</th></tr>
|
|
94
|
-
<tr><td><strong>Prompts</strong></td><td>user input, AI system prompts</td></tr>
|
|
95
|
-
<tr><td><strong>Responses</strong></td><td>model output, streaming chunks</td></tr>
|
|
96
|
-
<tr><td><strong>File content</strong></td><td>Read/Edit/Write payload, command stdout/stderr</td></tr>
|
|
97
|
-
<tr><td><strong>Credentials</strong></td><td>API keys, tokens, passwords, cookies</td></tr>
|
|
98
|
-
<tr><td><strong>Auth headers</strong></td><td>Authorization, x-api-key, Cookie, Set-Cookie</td></tr>
|
|
99
|
-
<tr><td><strong>OAuth tokens</strong></td><td>access_token, refresh_token, id_token</td></tr>
|
|
100
|
-
<tr><td><strong>Environment dump</strong></td><td>entire env block (individual vars may appear as tags)</td></tr>
|
|
101
|
-
<tr><td><strong>Local paths</strong></td><td>home directory anonymized to <code>[HOME]</code></td></tr>
|
|
102
|
-
<tr><td><strong>Breadcrumbs</strong></td><td>user actions are not tracked</td></tr>
|
|
103
|
-
<tr><td><strong>User identity</strong></td><td>user field stripped from all events</td></tr>
|
|
104
|
-
</table>
|
|
105
|
-
|
|
106
|
-
<h2>Privacy Scrubber</h2>
|
|
107
|
-
<p>Every event passes through a <code>beforeSend</code> hook that:</p>
|
|
108
|
-
<ol>
|
|
109
|
-
<li><strong>Scrubs strings</strong> — removes API key patterns (<code>sk-*</code>, <code>Bearer</code> tokens), auth headers, cookie values</li>
|
|
110
|
-
<li><strong>Strips stack frame variables</strong> — removes <code>vars</code>, <code>pre_context</code>, <code>context_line</code>, <code>post_context</code></li>
|
|
111
|
-
<li><strong>Removes breadcrumbs</strong> — user actions are never tracked</li>
|
|
112
|
-
<li><strong>Cleans request data</strong> — removes headers, cookies, query strings</li>
|
|
113
|
-
<li><strong>Anonymizes home directory</strong> — replaces paths with <code>[HOME]</code></li>
|
|
114
|
-
<li><strong>Drops oversized strings</strong> — over 2000 chars truncated</li>
|
|
115
|
-
<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>
|
|
116
|
-
</ol>
|
|
117
|
-
|
|
118
|
-
<h2>Checking Status</h2>
|
|
119
|
-
<pre><code># When disabled
|
|
120
|
-
Sentry Telemetry: Disabled (set SENTRY_DSN to enable)
|
|
121
|
-
|
|
122
|
-
# When enabled
|
|
123
|
-
Sentry Telemetry: Enabled</code></pre>
|
|
124
|
-
|
|
125
|
-
<div class="callout callout-info">
|
|
126
|
-
<strong>DSN Masking</strong>
|
|
127
|
-
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.
|
|
128
|
-
</div>
|
|
129
|
-
|
|
130
|
-
<h2>Files</h2>
|
|
131
|
-
<table>
|
|
132
|
-
<tr><th>File</th><th>Purpose</th></tr>
|
|
133
|
-
<tr><td><code>src/utils/sentry.ts</code></td><td>Core wrapper — init, capture, close, scrubber</td></tr>
|
|
134
|
-
<tr><td><code>src/utils/sentry.test.ts</code></td><td>Unit tests (11 tests)</td></tr>
|
|
135
|
-
<tr><td><code>src/entrypoints/init.ts</code></td><td>Calls <code>initSentry()</code> at startup</td></tr>
|
|
136
|
-
<tr><td><code>src/utils/gracefulShutdown.ts</code></td><td>Calls <code>closeSentry()</code> before exit</td></tr>
|
|
137
|
-
<tr><td><code>src/utils/log.ts</code></td><td><code>logError()</code> sends to Sentry when enabled</td></tr>
|
|
138
|
-
<tr><td><code>src/components/SentryErrorBoundary.tsx</code></td><td>React error boundary for render crashes</td></tr>
|
|
139
|
-
<tr><td><code>src/components/App.tsx</code></td><td>Wraps app tree in <code>SentryErrorBoundary</code></td></tr>
|
|
140
|
-
<tr><td><code>src/utils/doctorDiagnostic.ts</code></td><td><code>/doctor</code> Sentry status display</td></tr>
|
|
141
|
-
</table>
|
|
142
|
-
|
|
143
|
-
<footer class="footer">
|
|
144
|
-
<span>Clew v0.
|
|
145
|
-
<div class="footer-links">
|
|
146
|
-
<a href="https://github.com/JonusNattapong/ClewCode">GitHub</a>
|
|
147
|
-
<a href="https://github.com/JonusNattapong/ClewCode/issues">Issues</a>
|
|
148
|
-
</div>
|
|
149
|
-
</footer>
|
|
150
|
-
</main>
|
|
151
|
-
<nav class="toc-sidebar"></nav>
|
|
152
|
-
</div>
|
|
153
|
-
</div>
|
|
154
|
-
<script src="../js/main.js"></script>
|
|
155
|
-
</body>
|
|
156
|
-
</html>
|
|
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
|
+
<link rel="icon" type="image/svg+xml" href="../assets/clew.svg">
|
|
13
|
+
</head>
|
|
14
|
+
<body>
|
|
15
|
+
<header class="header">
|
|
16
|
+
<div class="header-inner">
|
|
17
|
+
<a href="../index.html" class="logo">
|
|
18
|
+
<span>Clew Code</span>
|
|
19
|
+
</a>
|
|
20
|
+
<nav class="header-nav">
|
|
21
|
+
<a href="../index.html">Home</a>
|
|
22
|
+
<a href="../index.html#features">Features</a>
|
|
23
|
+
<a href="../index.html#commands">Commands</a>
|
|
24
|
+
<a href="../quick-start.html" class="active">Docs</a>
|
|
25
|
+
<a href="https://github.com/JonusNattapong/ClewCode" target="_blank">GitHub</a>
|
|
26
|
+
<div class="lang-wrap">
|
|
27
|
+
<button class="lang-btn">🌐</button>
|
|
28
|
+
<div class="lang-menu">
|
|
29
|
+
<a href="../../readme/README.zh.md">中文</a>
|
|
30
|
+
<a href="../../readme/README.th.md">ไทย</a>
|
|
31
|
+
<a href="../../readme/README.ja.md">日本語</a>
|
|
32
|
+
<a href="../../readme/README.ko.md">한국어</a>
|
|
33
|
+
<a href="../../readme/README.es.md">Español</a>
|
|
34
|
+
<a href="../../readme/README.fr.md">Français</a>
|
|
35
|
+
<a href="../../readme/README.de.md">Deutsch</a>
|
|
36
|
+
<a href="../../readme/README.pt.md">Português</a>
|
|
37
|
+
<a href="../../readme/README.vi.md">Tiếng Việt</a>
|
|
38
|
+
<a href="../../readme/README.id.md">Bahasa Indonesia</a>
|
|
39
|
+
<a href="../../readme/README.ru.md">Русский</a>
|
|
40
|
+
<a href="../../readme/README.hi.md">हिन्दी</a>
|
|
41
|
+
<a href="../../README.md">English</a>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</nav>
|
|
45
|
+
<button class="menu-btn" id="menuToggle" aria-label="Toggle navigation"><span></span><span></span><span></span></button>
|
|
46
|
+
</div>
|
|
47
|
+
</header>
|
|
48
|
+
<div class="app">
|
|
49
|
+
<aside class="sidebar" id="sidebar"></aside>
|
|
50
|
+
<div class="sidebar-overlay" id="sidebarOverlay"></div>
|
|
51
|
+
<div class="content-wrap">
|
|
52
|
+
<main class="content">
|
|
53
|
+
<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>
|
|
54
|
+
<h1>Sentry Error Reporting</h1>
|
|
55
|
+
<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>
|
|
56
|
+
|
|
57
|
+
<div class="callout callout-tip">
|
|
58
|
+
<strong>TL;DR</strong>
|
|
59
|
+
<code>SENTRY_DSN=https://key@sentry.io/123 claude</code> — that's it. Without it, zero network requests, zero telemetry.
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<h2>Quick Start</h2>
|
|
63
|
+
<h3>Self-hosted Sentry</h3>
|
|
64
|
+
<pre><code>SENTRY_DSN=https://public_key@your-sentry.example.com/123 claude</code></pre>
|
|
65
|
+
|
|
66
|
+
<h3>Sentry Cloud</h3>
|
|
67
|
+
<pre><code>SENTRY_DSN=https://public_key@o123456.ingest.sentry.io/789 claude</code></pre>
|
|
68
|
+
|
|
69
|
+
<h3>Disable (default)</h3>
|
|
70
|
+
<pre><code>clew</code></pre>
|
|
71
|
+
|
|
72
|
+
<h2>Environment Variables</h2>
|
|
73
|
+
<table>
|
|
74
|
+
<tr><th>Variable</th><th>Required</th><th>Default</th><th>Description</th></tr>
|
|
75
|
+
<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>
|
|
76
|
+
<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>
|
|
77
|
+
<tr><td><code>SENTRY_RELEASE</code></td><td>no</td><td>auto from package.json</td><td>Release version tag</td></tr>
|
|
78
|
+
<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>
|
|
79
|
+
</table>
|
|
80
|
+
|
|
81
|
+
<h2>What Gets Sent</h2>
|
|
82
|
+
<p>Only error metadata — <strong>never prompts, responses, file contents, or command output</strong>:</p>
|
|
83
|
+
<ul>
|
|
84
|
+
<li>Error name, message, and stack trace (without local variable values)</li>
|
|
85
|
+
<li>Runtime info: OS platform, Node/Bun version</li>
|
|
86
|
+
<li>Mode: REPL, non-interactive, MCP server</li>
|
|
87
|
+
<li>Provider and model name (when applicable)</li>
|
|
88
|
+
<li>Version and release tag</li>
|
|
89
|
+
</ul>
|
|
90
|
+
|
|
91
|
+
<h2>What Does NOT Get Sent</h2>
|
|
92
|
+
<table>
|
|
93
|
+
<tr><th>Category</th><th>Examples</th></tr>
|
|
94
|
+
<tr><td><strong>Prompts</strong></td><td>user input, AI system prompts</td></tr>
|
|
95
|
+
<tr><td><strong>Responses</strong></td><td>model output, streaming chunks</td></tr>
|
|
96
|
+
<tr><td><strong>File content</strong></td><td>Read/Edit/Write payload, command stdout/stderr</td></tr>
|
|
97
|
+
<tr><td><strong>Credentials</strong></td><td>API keys, tokens, passwords, cookies</td></tr>
|
|
98
|
+
<tr><td><strong>Auth headers</strong></td><td>Authorization, x-api-key, Cookie, Set-Cookie</td></tr>
|
|
99
|
+
<tr><td><strong>OAuth tokens</strong></td><td>access_token, refresh_token, id_token</td></tr>
|
|
100
|
+
<tr><td><strong>Environment dump</strong></td><td>entire env block (individual vars may appear as tags)</td></tr>
|
|
101
|
+
<tr><td><strong>Local paths</strong></td><td>home directory anonymized to <code>[HOME]</code></td></tr>
|
|
102
|
+
<tr><td><strong>Breadcrumbs</strong></td><td>user actions are not tracked</td></tr>
|
|
103
|
+
<tr><td><strong>User identity</strong></td><td>user field stripped from all events</td></tr>
|
|
104
|
+
</table>
|
|
105
|
+
|
|
106
|
+
<h2>Privacy Scrubber</h2>
|
|
107
|
+
<p>Every event passes through a <code>beforeSend</code> hook that:</p>
|
|
108
|
+
<ol>
|
|
109
|
+
<li><strong>Scrubs strings</strong> — removes API key patterns (<code>sk-*</code>, <code>Bearer</code> tokens), auth headers, cookie values</li>
|
|
110
|
+
<li><strong>Strips stack frame variables</strong> — removes <code>vars</code>, <code>pre_context</code>, <code>context_line</code>, <code>post_context</code></li>
|
|
111
|
+
<li><strong>Removes breadcrumbs</strong> — user actions are never tracked</li>
|
|
112
|
+
<li><strong>Cleans request data</strong> — removes headers, cookies, query strings</li>
|
|
113
|
+
<li><strong>Anonymizes home directory</strong> — replaces paths with <code>[HOME]</code></li>
|
|
114
|
+
<li><strong>Drops oversized strings</strong> — over 2000 chars truncated</li>
|
|
115
|
+
<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>
|
|
116
|
+
</ol>
|
|
117
|
+
|
|
118
|
+
<h2>Checking Status</h2>
|
|
119
|
+
<pre><code># When disabled
|
|
120
|
+
Sentry Telemetry: Disabled (set SENTRY_DSN to enable)
|
|
121
|
+
|
|
122
|
+
# When enabled
|
|
123
|
+
Sentry Telemetry: Enabled</code></pre>
|
|
124
|
+
|
|
125
|
+
<div class="callout callout-info">
|
|
126
|
+
<strong>DSN Masking</strong>
|
|
127
|
+
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.
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
<h2>Files</h2>
|
|
131
|
+
<table>
|
|
132
|
+
<tr><th>File</th><th>Purpose</th></tr>
|
|
133
|
+
<tr><td><code>src/utils/sentry.ts</code></td><td>Core wrapper — init, capture, close, scrubber</td></tr>
|
|
134
|
+
<tr><td><code>src/utils/sentry.test.ts</code></td><td>Unit tests (11 tests)</td></tr>
|
|
135
|
+
<tr><td><code>src/entrypoints/init.ts</code></td><td>Calls <code>initSentry()</code> at startup</td></tr>
|
|
136
|
+
<tr><td><code>src/utils/gracefulShutdown.ts</code></td><td>Calls <code>closeSentry()</code> before exit</td></tr>
|
|
137
|
+
<tr><td><code>src/utils/log.ts</code></td><td><code>logError()</code> sends to Sentry when enabled</td></tr>
|
|
138
|
+
<tr><td><code>src/components/SentryErrorBoundary.tsx</code></td><td>React error boundary for render crashes</td></tr>
|
|
139
|
+
<tr><td><code>src/components/App.tsx</code></td><td>Wraps app tree in <code>SentryErrorBoundary</code></td></tr>
|
|
140
|
+
<tr><td><code>src/utils/doctorDiagnostic.ts</code></td><td><code>/doctor</code> Sentry status display</td></tr>
|
|
141
|
+
</table>
|
|
142
|
+
|
|
143
|
+
<footer class="footer">
|
|
144
|
+
<span>Clew Code v0.2.4</span>
|
|
145
|
+
<div class="footer-links">
|
|
146
|
+
<a href="https://github.com/JonusNattapong/ClewCode">GitHub</a>
|
|
147
|
+
<a href="https://github.com/JonusNattapong/ClewCode/issues">Issues</a>
|
|
148
|
+
</div>
|
|
149
|
+
</footer>
|
|
150
|
+
</main>
|
|
151
|
+
<nav class="toc-sidebar"></nav>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
<script src="../js/main.js"></script>
|
|
155
|
+
</body>
|
|
156
|
+
</html>
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
</ol>
|
|
82
82
|
|
|
83
83
|
<footer class="footer">
|
|
84
|
-
<span>Clew v0.
|
|
84
|
+
<span>Clew Code v0.2.4</span>
|
|
85
85
|
<div class="footer-links">
|
|
86
86
|
<a href="https://github.com/JonusNattapong/ClewCode">GitHub</a>
|
|
87
87
|
<a href="https://github.com/JonusNattapong/ClewCode/issues">ปัญหา</a>
|