@mahe_pkm/buzl-capi 0.1.2 → 0.1.3
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/Buzl_GoogleAppsScript_Template.gs +948 -948
- package/CHANGELOG.md +109 -83
- package/LICENSE +21 -21
- package/README.md +339 -253
- package/USER_HANDBOOK.html +808 -0
- package/USER_HANDBOOK.md +842 -0
- package/assets/js/buzl-tracking.js +390 -390
- package/bin/cli.js +175 -155
- package/package.json +3 -1
- package/src/cli/terminal.js +388 -388
- package/src/core/injector.js +321 -321
- package/src/core/rollback.js +281 -281
- package/src/core/scanner.js +506 -506
- package/src/core/tester.js +666 -357
- package/src/gui/public/app.js +915 -87
- package/src/gui/public/index.html +620 -230
- package/src/gui/public/style.css +1603 -509
- package/src/gui/server.js +242 -232
- package/src/index.js +47 -47
- package/src/templates/GoogleAppsScript.gs +948 -948
- package/src/templates/buzl-tracking.js +475 -475
- package/src/templates/gtm-meta-snippets.js +149 -149
|
@@ -0,0 +1,808 @@
|
|
|
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>Buzl Tracker & CAPI — Official User Handbook & Command Reference</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
10
|
+
--font-mono: ui-monospace, SFMono-Regular, "Cascadia Code", "Roboto Mono", Consolas, monospace;
|
|
11
|
+
--color-brand: #004aad;
|
|
12
|
+
--color-brand-hover: #003780;
|
|
13
|
+
--color-navy: #1a2332;
|
|
14
|
+
--color-bg: #f4f7fb;
|
|
15
|
+
--color-card: #ffffff;
|
|
16
|
+
--color-text: #2a3547;
|
|
17
|
+
--color-text-muted: #5a6a85;
|
|
18
|
+
--color-border: #e5eaef;
|
|
19
|
+
--color-border-dark: #cbd5e1;
|
|
20
|
+
--color-success: #087f5b;
|
|
21
|
+
--radius-sm: 6px;
|
|
22
|
+
--radius-md: 8px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
26
|
+
|
|
27
|
+
body {
|
|
28
|
+
font-family: var(--font-family);
|
|
29
|
+
color: var(--color-text);
|
|
30
|
+
background-color: var(--color-bg);
|
|
31
|
+
line-height: 1.6;
|
|
32
|
+
font-size: 14px;
|
|
33
|
+
padding-bottom: 60px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* Top Sticky Action Bar */
|
|
37
|
+
.top-bar {
|
|
38
|
+
position: sticky;
|
|
39
|
+
top: 0;
|
|
40
|
+
z-index: 1000;
|
|
41
|
+
background: #ffffff;
|
|
42
|
+
border-bottom: 1px solid var(--color-border);
|
|
43
|
+
padding: 10px 24px;
|
|
44
|
+
display: flex;
|
|
45
|
+
justify-content: space-between;
|
|
46
|
+
align-items: center;
|
|
47
|
+
box-shadow: 0 1px 3px rgba(0,0,0,0.05);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.top-bar-left {
|
|
51
|
+
display: flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
gap: 12px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.logo-badge {
|
|
57
|
+
display: inline-flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
gap: 6px;
|
|
60
|
+
background: #f2f6fa;
|
|
61
|
+
padding: 4px 10px;
|
|
62
|
+
border-radius: var(--radius-sm);
|
|
63
|
+
border: 1px solid var(--color-border);
|
|
64
|
+
font-weight: 700;
|
|
65
|
+
font-size: 13px;
|
|
66
|
+
color: var(--color-brand);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.doc-title {
|
|
70
|
+
font-size: 15px;
|
|
71
|
+
font-weight: 700;
|
|
72
|
+
color: var(--color-text);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.top-bar-actions {
|
|
76
|
+
display: flex;
|
|
77
|
+
gap: 10px;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.btn {
|
|
81
|
+
display: inline-flex;
|
|
82
|
+
align-items: center;
|
|
83
|
+
gap: 6px;
|
|
84
|
+
padding: 7px 14px;
|
|
85
|
+
font-size: 12px;
|
|
86
|
+
font-weight: 600;
|
|
87
|
+
border-radius: var(--radius-sm);
|
|
88
|
+
cursor: pointer;
|
|
89
|
+
text-decoration: none;
|
|
90
|
+
transition: all 0.15s ease;
|
|
91
|
+
border: 1px solid transparent;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.btn-primary {
|
|
95
|
+
background: var(--color-brand);
|
|
96
|
+
color: #ffffff;
|
|
97
|
+
border-color: var(--color-brand);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.btn-primary:hover {
|
|
101
|
+
background: var(--color-brand-hover);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.btn-secondary {
|
|
105
|
+
background: #ffffff;
|
|
106
|
+
color: var(--color-text);
|
|
107
|
+
border-color: var(--color-border-dark);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.btn-secondary:hover {
|
|
111
|
+
background: #f8fafc;
|
|
112
|
+
border-color: var(--color-brand);
|
|
113
|
+
color: var(--color-brand);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* Handbook Container */
|
|
117
|
+
.handbook-container {
|
|
118
|
+
max-width: 1000px;
|
|
119
|
+
margin: 24px auto;
|
|
120
|
+
padding: 0 20px;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.handbook-header {
|
|
124
|
+
background: #ffffff;
|
|
125
|
+
border: 1px solid var(--color-border);
|
|
126
|
+
border-radius: var(--radius-md);
|
|
127
|
+
padding: 32px;
|
|
128
|
+
margin-bottom: 24px;
|
|
129
|
+
border-top: 4px solid var(--color-brand);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.handbook-header h1 {
|
|
133
|
+
font-size: 26px;
|
|
134
|
+
font-weight: 800;
|
|
135
|
+
color: var(--color-navy);
|
|
136
|
+
margin-bottom: 8px;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.handbook-header p {
|
|
140
|
+
color: var(--color-text-muted);
|
|
141
|
+
font-size: 14px;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.badge-bar {
|
|
145
|
+
display: flex;
|
|
146
|
+
gap: 8px;
|
|
147
|
+
margin-top: 14px;
|
|
148
|
+
flex-wrap: wrap;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.badge {
|
|
152
|
+
font-size: 11px;
|
|
153
|
+
font-weight: 700;
|
|
154
|
+
padding: 3px 8px;
|
|
155
|
+
border-radius: 4px;
|
|
156
|
+
background: #f2f6fa;
|
|
157
|
+
color: var(--color-brand);
|
|
158
|
+
border: 1px solid var(--color-border);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.badge-success {
|
|
162
|
+
background: #e6fcf5;
|
|
163
|
+
color: var(--color-success);
|
|
164
|
+
border-color: #b2f2bb;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/* Chapter Cards */
|
|
168
|
+
.chapter-card {
|
|
169
|
+
background: #ffffff;
|
|
170
|
+
border: 1px solid var(--color-border);
|
|
171
|
+
border-radius: var(--radius-md);
|
|
172
|
+
padding: 24px;
|
|
173
|
+
margin-bottom: 24px;
|
|
174
|
+
page-break-inside: avoid;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.chapter-card h2 {
|
|
178
|
+
font-size: 18px;
|
|
179
|
+
font-weight: 700;
|
|
180
|
+
color: var(--color-navy);
|
|
181
|
+
margin-bottom: 12px;
|
|
182
|
+
padding-bottom: 8px;
|
|
183
|
+
border-bottom: 2px solid #f2f6fa;
|
|
184
|
+
display: flex;
|
|
185
|
+
align-items: center;
|
|
186
|
+
gap: 8px;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.chapter-card h3 {
|
|
190
|
+
font-size: 14px;
|
|
191
|
+
font-weight: 700;
|
|
192
|
+
color: var(--color-brand);
|
|
193
|
+
margin: 18px 0 8px;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.chapter-card p, .chapter-card li {
|
|
197
|
+
color: var(--color-text);
|
|
198
|
+
font-size: 13px;
|
|
199
|
+
margin-bottom: 8px;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.chapter-card ul {
|
|
203
|
+
padding-left: 20px;
|
|
204
|
+
margin-bottom: 14px;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/* Command Block Styling */
|
|
208
|
+
.command-block {
|
|
209
|
+
background: #1a2332;
|
|
210
|
+
border: 1px solid #334155;
|
|
211
|
+
border-radius: var(--radius-sm);
|
|
212
|
+
margin: 12px 0 16px;
|
|
213
|
+
overflow: hidden;
|
|
214
|
+
page-break-inside: avoid;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.command-header {
|
|
218
|
+
background: #0f172a;
|
|
219
|
+
padding: 6px 12px;
|
|
220
|
+
display: flex;
|
|
221
|
+
justify-content: space-between;
|
|
222
|
+
align-items: center;
|
|
223
|
+
border-bottom: 1px solid #334155;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.os-tag {
|
|
227
|
+
font-family: var(--font-mono);
|
|
228
|
+
font-size: 11px;
|
|
229
|
+
font-weight: 700;
|
|
230
|
+
color: #94a3b8;
|
|
231
|
+
display: flex;
|
|
232
|
+
align-items: center;
|
|
233
|
+
gap: 6px;
|
|
234
|
+
text-transform: uppercase;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.os-tag.powershell { color: #38bdf8; }
|
|
238
|
+
.os-tag.cmd { color: #f59e0b; }
|
|
239
|
+
.os-tag.macos { color: #a855f7; }
|
|
240
|
+
.os-tag.linux { color: #34d399; }
|
|
241
|
+
|
|
242
|
+
.copy-btn {
|
|
243
|
+
background: #1e293b;
|
|
244
|
+
border: 1px solid #475569;
|
|
245
|
+
color: #f1f5f9;
|
|
246
|
+
font-size: 11px;
|
|
247
|
+
padding: 3px 8px;
|
|
248
|
+
border-radius: 4px;
|
|
249
|
+
cursor: pointer;
|
|
250
|
+
font-family: var(--font-family);
|
|
251
|
+
font-weight: 600;
|
|
252
|
+
display: inline-flex;
|
|
253
|
+
align-items: center;
|
|
254
|
+
gap: 4px;
|
|
255
|
+
transition: all 0.15s ease;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.copy-btn:hover {
|
|
259
|
+
background: var(--color-brand);
|
|
260
|
+
border-color: var(--color-brand);
|
|
261
|
+
color: #ffffff;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
pre.command-code {
|
|
265
|
+
padding: 12px;
|
|
266
|
+
font-family: var(--font-mono);
|
|
267
|
+
font-size: 12px;
|
|
268
|
+
color: #f8fafc;
|
|
269
|
+
white-space: pre;
|
|
270
|
+
overflow-x: auto;
|
|
271
|
+
line-height: 1.5;
|
|
272
|
+
user-select: all;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.comment { color: #64748b; }
|
|
276
|
+
.cmd-name { color: #38bdf8; font-weight: 600; }
|
|
277
|
+
.cmd-flag { color: #fbbf24; }
|
|
278
|
+
.cmd-arg { color: #34d399; }
|
|
279
|
+
|
|
280
|
+
/* Tables */
|
|
281
|
+
table {
|
|
282
|
+
width: 100%;
|
|
283
|
+
border-collapse: collapse;
|
|
284
|
+
margin: 14px 0;
|
|
285
|
+
font-size: 12px;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
th {
|
|
289
|
+
background: #f2f6fa;
|
|
290
|
+
color: var(--color-navy);
|
|
291
|
+
text-align: left;
|
|
292
|
+
padding: 8px 10px;
|
|
293
|
+
font-weight: 700;
|
|
294
|
+
border-bottom: 1px solid var(--color-border-dark);
|
|
295
|
+
text-transform: uppercase;
|
|
296
|
+
font-size: 11px;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
td {
|
|
300
|
+
padding: 8px 10px;
|
|
301
|
+
border-bottom: 1px solid var(--color-border);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
tr:last-child td { border-bottom: none; }
|
|
305
|
+
|
|
306
|
+
code {
|
|
307
|
+
font-family: var(--font-mono);
|
|
308
|
+
font-size: 11.5px;
|
|
309
|
+
background: #f2f6fa;
|
|
310
|
+
padding: 2px 5px;
|
|
311
|
+
border-radius: 4px;
|
|
312
|
+
color: var(--color-brand);
|
|
313
|
+
border: 1px solid var(--color-border);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/* Print Stylesheet (Locations Corporate Letterhead) */
|
|
317
|
+
@media print {
|
|
318
|
+
@page {
|
|
319
|
+
size: A4 portrait;
|
|
320
|
+
margin: 12mm 15mm;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
body {
|
|
324
|
+
background: #ffffff !important;
|
|
325
|
+
color: #1a202c !important;
|
|
326
|
+
padding: 0 !important;
|
|
327
|
+
font-size: 10pt !important;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.top-bar {
|
|
331
|
+
display: none !important;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.handbook-container {
|
|
335
|
+
max-width: 100% !important;
|
|
336
|
+
margin: 0 !important;
|
|
337
|
+
padding: 0 !important;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.handbook-header {
|
|
341
|
+
border: none !important;
|
|
342
|
+
border-bottom: 2px solid var(--color-brand) !important;
|
|
343
|
+
padding: 0 0 12px 0 !important;
|
|
344
|
+
margin-bottom: 16px !important;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.chapter-card {
|
|
348
|
+
border: 1px solid #cbd5e1 !important;
|
|
349
|
+
box-shadow: none !important;
|
|
350
|
+
padding: 14px !important;
|
|
351
|
+
margin-bottom: 16px !important;
|
|
352
|
+
page-break-inside: avoid !important;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
.chapter-card h2 {
|
|
356
|
+
font-size: 13pt !important;
|
|
357
|
+
border-bottom: 1px solid #cbd5e1 !important;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.command-block {
|
|
361
|
+
background: #f8fafc !important;
|
|
362
|
+
border: 1px solid #94a3b8 !important;
|
|
363
|
+
page-break-inside: avoid !important;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.command-header {
|
|
367
|
+
background: #e2e8f0 !important;
|
|
368
|
+
border-bottom: 1px solid #94a3b8 !important;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.copy-btn {
|
|
372
|
+
display: none !important;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
pre.command-code {
|
|
376
|
+
color: #0f172a !important;
|
|
377
|
+
background: #f8fafc !important;
|
|
378
|
+
white-space: pre-wrap !important;
|
|
379
|
+
word-break: break-all !important;
|
|
380
|
+
font-size: 9.5pt !important;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.comment { color: #475569 !important; font-style: italic; }
|
|
384
|
+
.cmd-name { color: #004aad !important; font-weight: 700; }
|
|
385
|
+
.cmd-flag { color: #b45309 !important; }
|
|
386
|
+
.cmd-arg { color: #047857 !important; }
|
|
387
|
+
|
|
388
|
+
.os-tag {
|
|
389
|
+
color: #1e293b !important;
|
|
390
|
+
font-weight: 700 !important;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
table {
|
|
394
|
+
page-break-inside: avoid !important;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
</style>
|
|
398
|
+
</head>
|
|
399
|
+
<body>
|
|
400
|
+
|
|
401
|
+
<!-- Top Sticky Navigation Bar -->
|
|
402
|
+
<div class="top-bar">
|
|
403
|
+
<div class="top-bar-left">
|
|
404
|
+
<div class="logo-badge">⚡ BUZL / CAPI</div>
|
|
405
|
+
<div class="doc-title">Official User Handbook & Command Reference</div>
|
|
406
|
+
</div>
|
|
407
|
+
<div class="top-bar-actions">
|
|
408
|
+
<button type="button" class="btn btn-primary" onclick="window.print()">
|
|
409
|
+
🖨️ Print / Save as PDF
|
|
410
|
+
</button>
|
|
411
|
+
<a href="http://localhost:3333" class="btn btn-secondary" target="_blank">
|
|
412
|
+
⚡ Launch Web GUI
|
|
413
|
+
</a>
|
|
414
|
+
</div>
|
|
415
|
+
</div>
|
|
416
|
+
|
|
417
|
+
<div class="handbook-container">
|
|
418
|
+
|
|
419
|
+
<!-- Handbook Header -->
|
|
420
|
+
<header class="handbook-header">
|
|
421
|
+
<h1>📖 Buzl Tracker & Conversions API Suite</h1>
|
|
422
|
+
<p>All-in-one cross-platform reference guide with isolated, copy-ready command blocks for Windows, macOS, and Linux.</p>
|
|
423
|
+
<div class="badge-bar">
|
|
424
|
+
<span class="badge">Version 0.1.3</span>
|
|
425
|
+
<span class="badge badge-success">38/38 Tests Passing</span>
|
|
426
|
+
<span class="badge">Locations Design System</span>
|
|
427
|
+
<span class="badge">WCAG 2.2 AA Certified</span>
|
|
428
|
+
<span class="badge">Zero External Dependencies</span>
|
|
429
|
+
</div>
|
|
430
|
+
</header>
|
|
431
|
+
|
|
432
|
+
<!-- Chapter 1: Quick Reference Matrix -->
|
|
433
|
+
<section class="chapter-card">
|
|
434
|
+
<h2>1. Command Reference Matrix</h2>
|
|
435
|
+
<p>All CLI commands and flags supported by <code>npx @mahe_pkm/buzl-capi</code> and <code>npx buzl-tracker</code>:</p>
|
|
436
|
+
<table>
|
|
437
|
+
<thead>
|
|
438
|
+
<tr>
|
|
439
|
+
<th>Command / Flag</th>
|
|
440
|
+
<th>Short</th>
|
|
441
|
+
<th>Argument</th>
|
|
442
|
+
<th>Purpose</th>
|
|
443
|
+
</tr>
|
|
444
|
+
</thead>
|
|
445
|
+
<tbody>
|
|
446
|
+
<tr>
|
|
447
|
+
<td><code>npx @mahe_pkm/buzl-capi</code></td>
|
|
448
|
+
<td>—</td>
|
|
449
|
+
<td><code>[dir]</code></td>
|
|
450
|
+
<td>Launches interactive ANSI terminal setup wizard.</td>
|
|
451
|
+
</tr>
|
|
452
|
+
<tr>
|
|
453
|
+
<td><code>--gui</code></td>
|
|
454
|
+
<td><code>-g</code></td>
|
|
455
|
+
<td><code>[dir]</code></td>
|
|
456
|
+
<td>Launches zero-dependency Web GUI dashboard on port 3333.</td>
|
|
457
|
+
</tr>
|
|
458
|
+
<tr>
|
|
459
|
+
<td><code>--backup [name]</code></td>
|
|
460
|
+
<td><code>-b</code></td>
|
|
461
|
+
<td><code>[dir]</code></td>
|
|
462
|
+
<td>Creates a point-in-time SHA-1 snapshot backup.</td>
|
|
463
|
+
</tr>
|
|
464
|
+
<tr>
|
|
465
|
+
<td><code>--list-backups</code></td>
|
|
466
|
+
<td>—</td>
|
|
467
|
+
<td><code>[dir]</code></td>
|
|
468
|
+
<td>Lists all saved snapshots stored in <code>.buzl/snapshots/</code>.</td>
|
|
469
|
+
</tr>
|
|
470
|
+
<tr>
|
|
471
|
+
<td><code>--restore [name]</code></td>
|
|
472
|
+
<td><code>-r</code></td>
|
|
473
|
+
<td><code>[dir]</code></td>
|
|
474
|
+
<td>Restores HTML files to a named snapshot or latest.</td>
|
|
475
|
+
</tr>
|
|
476
|
+
<tr>
|
|
477
|
+
<td><code>--uninstall</code></td>
|
|
478
|
+
<td><code>-u</code></td>
|
|
479
|
+
<td><code>[dir]</code></td>
|
|
480
|
+
<td>Cleanly strips all GTM, Meta Pixel, and runtime code.</td>
|
|
481
|
+
</tr>
|
|
482
|
+
<tr>
|
|
483
|
+
<td><code>--handbook</code></td>
|
|
484
|
+
<td>—</td>
|
|
485
|
+
<td>—</td>
|
|
486
|
+
<td>Opens this User Handbook in your default browser.</td>
|
|
487
|
+
</tr>
|
|
488
|
+
<tr>
|
|
489
|
+
<td><code>--help</code></td>
|
|
490
|
+
<td><code>-h</code></td>
|
|
491
|
+
<td>—</td>
|
|
492
|
+
<td>Displays the command-line help manual.</td>
|
|
493
|
+
</tr>
|
|
494
|
+
</tbody>
|
|
495
|
+
</table>
|
|
496
|
+
</section>
|
|
497
|
+
|
|
498
|
+
<!-- Chapter 2: NPM Package Installation & Updates -->
|
|
499
|
+
<section class="chapter-card">
|
|
500
|
+
<h2>2. NPM Package Installation, Updates & Publishing</h2>
|
|
501
|
+
<p>How to run, install, update, and publish <code>@mahe_pkm/buzl-capi</code> across Windows, macOS, and Linux:</p>
|
|
502
|
+
|
|
503
|
+
<h3>2.1 Always Run Latest via NPX (Bypasses NPX Cache)</h3>
|
|
504
|
+
<div class="command-block">
|
|
505
|
+
<div class="command-header">
|
|
506
|
+
<span class="os-tag powershell">🪟 Windows / 🍎 macOS / 🐧 Linux</span>
|
|
507
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
508
|
+
</div>
|
|
509
|
+
<pre class="command-code"><span class="comment"># Force npx to fetch and run latest version</span>
|
|
510
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi@latest <span class="cmd-flag">--gui</span></pre>
|
|
511
|
+
</div>
|
|
512
|
+
|
|
513
|
+
<h3>2.2 Global CLI Installation & Updating</h3>
|
|
514
|
+
<div class="command-block">
|
|
515
|
+
<div class="command-header">
|
|
516
|
+
<span class="os-tag powershell">🪟 Windows / 🍎 macOS / 🐧 Linux</span>
|
|
517
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
518
|
+
</div>
|
|
519
|
+
<pre class="command-code"><span class="comment"># Install or upgrade globally to latest</span>
|
|
520
|
+
<span class="cmd-name">npm</span> install <span class="cmd-flag">-g</span> @mahe_pkm/buzl-capi@latest
|
|
521
|
+
|
|
522
|
+
<span class="comment"># Alternative: update existing global package</span>
|
|
523
|
+
<span class="cmd-name">npm</span> update <span class="cmd-flag">-g</span> @mahe_pkm/buzl-capi</pre>
|
|
524
|
+
</div>
|
|
525
|
+
|
|
526
|
+
<h3>2.3 Update as Local Project Dependency</h3>
|
|
527
|
+
<div class="command-block">
|
|
528
|
+
<div class="command-header">
|
|
529
|
+
<span class="os-tag powershell">🪟 Windows / 🍎 macOS / 🐧 Linux</span>
|
|
530
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
531
|
+
</div>
|
|
532
|
+
<pre class="command-code"><span class="comment"># Update package in project dependencies</span>
|
|
533
|
+
<span class="cmd-name">npm</span> install @mahe_pkm/buzl-capi@latest</pre>
|
|
534
|
+
</div>
|
|
535
|
+
|
|
536
|
+
<h3>2.4 Author Publishing Workflow (with 2FA / OTP)</h3>
|
|
537
|
+
<div class="command-block">
|
|
538
|
+
<div class="command-header">
|
|
539
|
+
<span class="os-tag powershell">🪟 Windows / 🍎 macOS / 🐧 Linux</span>
|
|
540
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
541
|
+
</div>
|
|
542
|
+
<pre class="command-code"><span class="comment"># 1. Bump version (patch / minor / major)</span>
|
|
543
|
+
<span class="cmd-name">npm</span> version patch
|
|
544
|
+
|
|
545
|
+
<span class="comment"># 2. Push tags and commits to GitHub</span>
|
|
546
|
+
<span class="cmd-name">git</span> push origin main <span class="cmd-flag">--tags</span>
|
|
547
|
+
|
|
548
|
+
<span class="comment"># 3. Publish with 2FA authenticator OTP code & explicit latest tag</span>
|
|
549
|
+
<span class="cmd-name">npm</span> publish <span class="cmd-flag">--tag</span> latest <span class="cmd-flag">--otp</span>=YOUR_6_DIGIT_OTP</pre>
|
|
550
|
+
</div>
|
|
551
|
+
</section>
|
|
552
|
+
|
|
553
|
+
<!-- Chapter 3: Interactive Terminal Wizard -->
|
|
554
|
+
<section class="chapter-card">
|
|
555
|
+
<h2>3. Interactive Terminal Setup Wizard</h2>
|
|
556
|
+
<p>Guides you step-by-step through GTM, Meta Pixel/CAPI, Google Sheets Webhook, and WhatsApp configuration directly in the shell with real-time test verification.</p>
|
|
557
|
+
|
|
558
|
+
<div class="command-block">
|
|
559
|
+
<div class="command-header">
|
|
560
|
+
<span class="os-tag powershell">🪟 Windows (PowerShell)</span>
|
|
561
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
562
|
+
</div>
|
|
563
|
+
<pre class="command-code"><span class="comment"># Run in current folder</span>
|
|
564
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi
|
|
565
|
+
|
|
566
|
+
<span class="comment"># Run against specific folder</span>
|
|
567
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-arg">"C:\Projects\MyLandingPage"</span></pre>
|
|
568
|
+
</div>
|
|
569
|
+
|
|
570
|
+
<div class="command-block">
|
|
571
|
+
<div class="command-header">
|
|
572
|
+
<span class="os-tag cmd">🪟 Windows (Command Prompt / CMD)</span>
|
|
573
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
574
|
+
</div>
|
|
575
|
+
<pre class="command-code"><span class="comment">rem Run in current folder</span>
|
|
576
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi
|
|
577
|
+
|
|
578
|
+
<span class="comment">rem Run against specific folder</span>
|
|
579
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-arg">"C:\Projects\MyLandingPage"</span></pre>
|
|
580
|
+
</div>
|
|
581
|
+
|
|
582
|
+
<div class="command-block">
|
|
583
|
+
<div class="command-header">
|
|
584
|
+
<span class="os-tag macos">🍎 macOS (Terminal / zsh)</span>
|
|
585
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
586
|
+
</div>
|
|
587
|
+
<pre class="command-code"><span class="comment"># Run in current folder</span>
|
|
588
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi
|
|
589
|
+
|
|
590
|
+
<span class="comment"># Run against specific folder</span>
|
|
591
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-arg">~/Projects/MyLandingPage</span></pre>
|
|
592
|
+
</div>
|
|
593
|
+
|
|
594
|
+
<div class="command-block">
|
|
595
|
+
<div class="command-header">
|
|
596
|
+
<span class="os-tag linux">🐧 Linux (bash / sh)</span>
|
|
597
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
598
|
+
</div>
|
|
599
|
+
<pre class="command-code"><span class="comment"># Run in current folder</span>
|
|
600
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi
|
|
601
|
+
|
|
602
|
+
<span class="comment"># Run against specific folder</span>
|
|
603
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-arg">/var/www/html/my-landing-page</span></pre>
|
|
604
|
+
</div>
|
|
605
|
+
</section>
|
|
606
|
+
|
|
607
|
+
<!-- Chapter 4: Local Web GUI Dashboard -->
|
|
608
|
+
<section class="chapter-card">
|
|
609
|
+
<h2>4. Local Web GUI Dashboard (Port 3333)</h2>
|
|
610
|
+
<p>Launches an embedded visual management console on <code>http://localhost:3333</code> with live scanning, service switches, per-form test dispatches, and PDF/JSON export.</p>
|
|
611
|
+
|
|
612
|
+
<div class="command-block">
|
|
613
|
+
<div class="command-header">
|
|
614
|
+
<span class="os-tag powershell">🪟 Windows (PowerShell)</span>
|
|
615
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
616
|
+
</div>
|
|
617
|
+
<pre class="command-code"><span class="comment"># Launch GUI for current folder</span>
|
|
618
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-flag">--gui</span>
|
|
619
|
+
|
|
620
|
+
<span class="comment"># Launch GUI for specific directory</span>
|
|
621
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-arg">"C:\Projects\MyLandingPage"</span> <span class="cmd-flag">--gui</span></pre>
|
|
622
|
+
</div>
|
|
623
|
+
|
|
624
|
+
<div class="command-block">
|
|
625
|
+
<div class="command-header">
|
|
626
|
+
<span class="os-tag cmd">🪟 Windows (Command Prompt / CMD)</span>
|
|
627
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
628
|
+
</div>
|
|
629
|
+
<pre class="command-code"><span class="comment">rem Launch GUI for current folder</span>
|
|
630
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-flag">--gui</span>
|
|
631
|
+
|
|
632
|
+
<span class="comment">rem Launch GUI for specific directory</span>
|
|
633
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-arg">"C:\Projects\MyLandingPage"</span> <span class="cmd-flag">--gui</span></pre>
|
|
634
|
+
</div>
|
|
635
|
+
|
|
636
|
+
<div class="command-block">
|
|
637
|
+
<div class="command-header">
|
|
638
|
+
<span class="os-tag macos">🍎 macOS (Terminal / zsh)</span>
|
|
639
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
640
|
+
</div>
|
|
641
|
+
<pre class="command-code"><span class="comment"># Launch GUI for current folder</span>
|
|
642
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-flag">--gui</span>
|
|
643
|
+
|
|
644
|
+
<span class="comment"># Launch GUI for specific directory</span>
|
|
645
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-arg">~/Projects/MyLandingPage</span> <span class="cmd-flag">--gui</span></pre>
|
|
646
|
+
</div>
|
|
647
|
+
|
|
648
|
+
<div class="command-block">
|
|
649
|
+
<div class="command-header">
|
|
650
|
+
<span class="os-tag linux">🐧 Linux (bash / sh)</span>
|
|
651
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
652
|
+
</div>
|
|
653
|
+
<pre class="command-code"><span class="comment"># Launch GUI for current folder</span>
|
|
654
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-flag">--gui</span>
|
|
655
|
+
|
|
656
|
+
<span class="comment"># Launch GUI for specific directory</span>
|
|
657
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-arg">/var/www/html/my-landing-page</span> <span class="cmd-flag">--gui</span></pre>
|
|
658
|
+
</div>
|
|
659
|
+
</section>
|
|
660
|
+
|
|
661
|
+
<!-- Chapter 5: Snapshot Backup & Rollback -->
|
|
662
|
+
<section class="chapter-card">
|
|
663
|
+
<h2>5. Point-in-Time Snapshot Backup & Rollback</h2>
|
|
664
|
+
<p>Save immutable backups inside <code>.buzl/snapshots/</code> with cryptographic SHA-1 hashes and instant rollback capabilities.</p>
|
|
665
|
+
|
|
666
|
+
<h3>Create Snapshot Backup</h3>
|
|
667
|
+
<div class="command-block">
|
|
668
|
+
<div class="command-header">
|
|
669
|
+
<span class="os-tag powershell">🪟 Windows (PowerShell)</span>
|
|
670
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
671
|
+
</div>
|
|
672
|
+
<pre class="command-code"><span class="comment"># Create named snapshot</span>
|
|
673
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-flag">--backup</span> <span class="cmd-arg">"Pre-Launch Baseline"</span></pre>
|
|
674
|
+
</div>
|
|
675
|
+
|
|
676
|
+
<div class="command-block">
|
|
677
|
+
<div class="command-header">
|
|
678
|
+
<span class="os-tag macos">🍎 macOS / 🐧 Linux</span>
|
|
679
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
680
|
+
</div>
|
|
681
|
+
<pre class="command-code"><span class="comment"># Create named snapshot</span>
|
|
682
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-flag">--backup</span> <span class="cmd-arg">"Pre-Launch Baseline"</span></pre>
|
|
683
|
+
</div>
|
|
684
|
+
|
|
685
|
+
<h3>List Saved Backups</h3>
|
|
686
|
+
<div class="command-block">
|
|
687
|
+
<div class="command-header">
|
|
688
|
+
<span class="os-tag powershell">🪟 Windows / 🍎 macOS / 🐧 Linux</span>
|
|
689
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
690
|
+
</div>
|
|
691
|
+
<pre class="command-code"><span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-flag">--list-backups</span></pre>
|
|
692
|
+
</div>
|
|
693
|
+
|
|
694
|
+
<h3>Restore / Rollback to Snapshot</h3>
|
|
695
|
+
<div class="command-block">
|
|
696
|
+
<div class="command-header">
|
|
697
|
+
<span class="os-tag powershell">🪟 Windows / 🍎 macOS / 🐧 Linux</span>
|
|
698
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
699
|
+
</div>
|
|
700
|
+
<pre class="command-code"><span class="comment"># Revert to most recent snapshot</span>
|
|
701
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-flag">--restore</span>
|
|
702
|
+
|
|
703
|
+
<span class="comment"># Revert to named snapshot</span>
|
|
704
|
+
<span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-flag">--restore</span> <span class="cmd-arg">"Pre-Launch Baseline"</span></pre>
|
|
705
|
+
</div>
|
|
706
|
+
</section>
|
|
707
|
+
|
|
708
|
+
<!-- Chapter 6: Clean Tracking Uninstallation -->
|
|
709
|
+
<section class="chapter-card">
|
|
710
|
+
<h2>6. Clean Tracking Uninstallation</h2>
|
|
711
|
+
<p>Cleanly strips GTM containers, Meta Pixel scripts, noscript fallbacks, <code>buzl-tracking.js</code> link tags, and form tracking attributes across all HTML files.</p>
|
|
712
|
+
|
|
713
|
+
<div class="command-block">
|
|
714
|
+
<div class="command-header">
|
|
715
|
+
<span class="os-tag powershell">🪟 Windows (PowerShell)</span>
|
|
716
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
717
|
+
</div>
|
|
718
|
+
<pre class="command-code"><span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-flag">--uninstall</span></pre>
|
|
719
|
+
</div>
|
|
720
|
+
|
|
721
|
+
<div class="command-block">
|
|
722
|
+
<div class="command-header">
|
|
723
|
+
<span class="os-tag macos">🍎 macOS / 🐧 Linux</span>
|
|
724
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
725
|
+
</div>
|
|
726
|
+
<pre class="command-code"><span class="cmd-name">npx</span> @mahe_pkm/buzl-capi <span class="cmd-flag">--uninstall</span></pre>
|
|
727
|
+
</div>
|
|
728
|
+
</section>
|
|
729
|
+
|
|
730
|
+
<!-- Chapter 7: Background Daemons -->
|
|
731
|
+
<section class="chapter-card">
|
|
732
|
+
<h2>7. Daemon & Background Service Execution</h2>
|
|
733
|
+
<p>Run the Web GUI daemon as a persistent background service:</p>
|
|
734
|
+
|
|
735
|
+
<h3>🪟 Windows (PowerShell Background Job)</h3>
|
|
736
|
+
<div class="command-block">
|
|
737
|
+
<div class="command-header">
|
|
738
|
+
<span class="os-tag powershell">PowerShell</span>
|
|
739
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
740
|
+
</div>
|
|
741
|
+
<pre class="command-code"><span class="comment"># Launch GUI in background</span>
|
|
742
|
+
Start-Process -FilePath "npx" -ArgumentList "@mahe_pkm/buzl-capi --gui" -WindowStyle Hidden
|
|
743
|
+
|
|
744
|
+
<span class="comment"># Stop background GUI</span>
|
|
745
|
+
Stop-Process -Id (Get-NetTCPConnection -LocalPort 3333).OwningProcess -Force</pre>
|
|
746
|
+
</div>
|
|
747
|
+
|
|
748
|
+
<h3>🍎 macOS / 🐧 Linux (nohup Background Daemon)</h3>
|
|
749
|
+
<div class="command-block">
|
|
750
|
+
<div class="command-header">
|
|
751
|
+
<span class="os-tag macos">Terminal (zsh / bash)</span>
|
|
752
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
753
|
+
</div>
|
|
754
|
+
<pre class="command-code"><span class="comment"># Start daemon with log file</span>
|
|
755
|
+
nohup npx @mahe_pkm/buzl-capi --gui > buzl-gui.log 2>&1 &
|
|
756
|
+
|
|
757
|
+
<span class="comment"># Stop background GUI</span>
|
|
758
|
+
kill $(lsof -t -i:3333)</pre>
|
|
759
|
+
</div>
|
|
760
|
+
</section>
|
|
761
|
+
|
|
762
|
+
<!-- Chapter 8: Troubleshooting -->
|
|
763
|
+
<section class="chapter-card">
|
|
764
|
+
<h2>8. Troubleshooting & Port Conflicts</h2>
|
|
765
|
+
<p>Resolve port 3333 conflicts across platforms:</p>
|
|
766
|
+
|
|
767
|
+
<div class="command-block">
|
|
768
|
+
<div class="command-header">
|
|
769
|
+
<span class="os-tag powershell">🪟 Windows (PowerShell)</span>
|
|
770
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
771
|
+
</div>
|
|
772
|
+
<pre class="command-code"><span class="comment"># Find and kill process on port 3333</span>
|
|
773
|
+
Get-NetTCPConnection -LocalPort 3333 | Select-Object OwningProcess
|
|
774
|
+
Stop-Process -Id <PID> -Force</pre>
|
|
775
|
+
</div>
|
|
776
|
+
|
|
777
|
+
<div class="command-block">
|
|
778
|
+
<div class="command-header">
|
|
779
|
+
<span class="os-tag macos">🍎 macOS / 🐧 Linux</span>
|
|
780
|
+
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
|
781
|
+
</div>
|
|
782
|
+
<pre class="command-code"><span class="comment"># Find and kill process on port 3333</span>
|
|
783
|
+
sudo lsof -i :3333
|
|
784
|
+
sudo kill -9 $(lsof -t -i:3333)</pre>
|
|
785
|
+
</div>
|
|
786
|
+
</section>
|
|
787
|
+
|
|
788
|
+
</div>
|
|
789
|
+
|
|
790
|
+
<script>
|
|
791
|
+
function copyCode(btn) {
|
|
792
|
+
const codeBlock = btn.closest('.command-block').querySelector('pre.command-code');
|
|
793
|
+
const text = codeBlock.textContent;
|
|
794
|
+
navigator.clipboard.writeText(text).then(() => {
|
|
795
|
+
const originalText = btn.textContent;
|
|
796
|
+
btn.textContent = '✔ Copied!';
|
|
797
|
+
btn.style.background = '#087f5b';
|
|
798
|
+
btn.style.borderColor = '#087f5b';
|
|
799
|
+
setTimeout(() => {
|
|
800
|
+
btn.textContent = originalText;
|
|
801
|
+
btn.style.background = '';
|
|
802
|
+
btn.style.borderColor = '';
|
|
803
|
+
}, 2000);
|
|
804
|
+
});
|
|
805
|
+
}
|
|
806
|
+
</script>
|
|
807
|
+
</body>
|
|
808
|
+
</html>
|