aiblueprint-cli 1.4.81 → 1.4.83

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.
Files changed (90) hide show
  1. package/README.md +25 -18
  2. package/agents-config/claude-config/scripts/statusline/data/.gitignore +8 -0
  3. package/agents-config/claude-config/scripts/statusline/data/.gitkeep +0 -0
  4. package/agents-config/claude-config/scripts/statusline/defaults.json +10 -10
  5. package/agents-config/claude-config/scripts/statusline/src/commands/interactive-config.ts +118 -6
  6. package/agents-config/claude-config/scripts/statusline/src/index.ts +100 -9
  7. package/agents-config/claude-config/scripts/statusline/src/lib/config.ts +28 -2
  8. package/agents-config/claude-config/scripts/statusline/src/lib/features/limits/commands/weekly-analysis.ts +108 -0
  9. package/agents-config/claude-config/scripts/statusline/src/lib/features/limits/index.ts +164 -0
  10. package/agents-config/claude-config/scripts/statusline/src/lib/features/limits/types.ts +15 -0
  11. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/commands/migrate-to-sqlite.ts +136 -0
  12. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/commands/spend-day.ts +79 -0
  13. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/commands/spend-month.ts +66 -0
  14. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/commands/spend-project.ts +85 -0
  15. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/database.ts +395 -0
  16. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/index.ts +178 -0
  17. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/payload-logger.ts +163 -0
  18. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/types.ts +37 -0
  19. package/agents-config/claude-config/scripts/statusline/src/lib/presets.ts +13 -13
  20. package/agents-config/claude-config/scripts/statusline/statusline.config.free.json +4 -1
  21. package/agents-config/claude-config/scripts/statusline/statusline.config.json +44 -23
  22. package/agents-config/scripts/statusline/data/.gitignore +8 -0
  23. package/agents-config/scripts/statusline/data/.gitkeep +0 -0
  24. package/agents-config/scripts/statusline/defaults.json +10 -10
  25. package/agents-config/scripts/statusline/src/commands/interactive-config.ts +118 -6
  26. package/agents-config/scripts/statusline/src/index.ts +100 -9
  27. package/agents-config/scripts/statusline/src/lib/config.ts +28 -2
  28. package/agents-config/scripts/statusline/src/lib/features/limits/commands/weekly-analysis.ts +108 -0
  29. package/agents-config/scripts/statusline/src/lib/features/limits/index.ts +164 -0
  30. package/agents-config/scripts/statusline/src/lib/features/limits/types.ts +15 -0
  31. package/agents-config/scripts/statusline/src/lib/features/spend/commands/migrate-to-sqlite.ts +136 -0
  32. package/agents-config/scripts/statusline/src/lib/features/spend/commands/spend-day.ts +79 -0
  33. package/agents-config/scripts/statusline/src/lib/features/spend/commands/spend-month.ts +66 -0
  34. package/agents-config/scripts/statusline/src/lib/features/spend/commands/spend-project.ts +85 -0
  35. package/agents-config/scripts/statusline/src/lib/features/spend/database.ts +395 -0
  36. package/agents-config/scripts/statusline/src/lib/features/spend/index.ts +178 -0
  37. package/agents-config/scripts/statusline/src/lib/features/spend/payload-logger.ts +163 -0
  38. package/agents-config/scripts/statusline/src/lib/features/spend/types.ts +37 -0
  39. package/agents-config/scripts/statusline/src/lib/presets.ts +13 -13
  40. package/agents-config/scripts/statusline/statusline.config.free.json +4 -1
  41. package/agents-config/scripts/statusline/statusline.config.json +44 -23
  42. package/agents-config/skills/{agents-managers → agents-manager}/SKILL.md +1 -1
  43. package/agents-config/skills/{agents-managers → agents-manager}/references/writing-agent-prompts.md +1 -1
  44. package/agents-config/skills/apex/SKILL.md +61 -0
  45. package/agents-config/skills/appstore-connect/SKILL.md +2 -2
  46. package/agents-config/skills/{appstore-connect-setup/SKILL.md → appstore-connect/references/setup.md} +3 -6
  47. package/agents-config/skills/environments-manager/SKILL.md +6 -6
  48. package/agents-config/skills/environments-manager/examples/{claude/commands/dev.md → skills/dev/SKILL.md} +2 -1
  49. package/agents-config/skills/environments-manager/examples/{claude/commands/lint.md → skills/lint/SKILL.md} +2 -1
  50. package/agents-config/skills/environments-manager/examples/{claude/commands/test.md → skills/test/SKILL.md} +2 -1
  51. package/agents-config/skills/environments-manager/examples/{claude/commands/typecheck.md → skills/typecheck/SKILL.md} +2 -1
  52. package/agents-config/skills/environments-manager/references/claude.md +13 -9
  53. package/agents-config/skills/environments-manager/references/cursor.md +2 -2
  54. package/agents-config/skills/ios-testflight/SKILL.md +2 -2
  55. package/agents-config/{commands/prompts/prompt.md → skills/prompt/SKILL.md} +5 -0
  56. package/agents-config/{commands/prompts/tools.md → skills/tools/SKILL.md} +1 -0
  57. package/agents-config/skills/ultrathink/SKILL.md +1 -1
  58. package/agents-config/skills/use-style/SKILL.md +7 -4
  59. package/agents-config/skills/use-style/examples/luma.html +221 -0
  60. package/agents-config/skills/use-style/examples/testspirite.html +340 -0
  61. package/agents-config/skills/use-style/styles/ios-app.md +350 -0
  62. package/agents-config/skills/use-style/styles/luma.md +422 -0
  63. package/agents-config/skills/use-style/styles/new-york-times.md +1 -1
  64. package/agents-config/skills/use-style/styles/split-auth.md +2 -2
  65. package/agents-config/skills/use-style/styles/testspirite.md +397 -0
  66. package/dist/cli.js +56 -118
  67. package/package.json +1 -1
  68. package/agents-config/claude-config/scripts/.claude/commands/fix-on-my-computer.md +0 -87
  69. package/agents-config/commands/prompts/create-vitejs-app.md +0 -272
  70. package/agents-config/commands/prompts/nextjs-add-prisma-db.md +0 -136
  71. package/agents-config/commands/prompts/nextjs-setup-better-auth.md +0 -173
  72. package/agents-config/commands/prompts/nextjs-setup-project.md +0 -200
  73. package/agents-config/commands/prompts/saas-challenge-idea.md +0 -135
  74. package/agents-config/commands/prompts/saas-create-architecture.md +0 -242
  75. package/agents-config/commands/prompts/saas-create-headline.md +0 -132
  76. package/agents-config/commands/prompts/saas-create-landing-copywritting.md +0 -267
  77. package/agents-config/commands/prompts/saas-create-legals-docs.md +0 -176
  78. package/agents-config/commands/prompts/saas-create-logos.md +0 -240
  79. package/agents-config/commands/prompts/saas-create-prd.md +0 -195
  80. package/agents-config/commands/prompts/saas-create-tasks.md +0 -240
  81. package/agents-config/commands/prompts/saas-define-pricing.md +0 -293
  82. package/agents-config/commands/prompts/saas-find-domain-name.md +0 -190
  83. package/agents-config/commands/prompts/saas-implement-landing-page.md +0 -257
  84. package/agents-config/commands/prompts/setup-tmux.md +0 -160
  85. /package/agents-config/skills/{agents-managers → agents-manager}/references/agents.md +0 -0
  86. /package/agents-config/skills/{agents-managers → agents-manager}/references/context-management.md +0 -0
  87. /package/agents-config/skills/{agents-managers → agents-manager}/references/debugging-agents.md +0 -0
  88. /package/agents-config/skills/{agents-managers → agents-manager}/references/error-handling-and-recovery.md +0 -0
  89. /package/agents-config/skills/{agents-managers → agents-manager}/references/evaluation-and-testing.md +0 -0
  90. /package/agents-config/skills/{agents-managers → agents-manager}/references/orchestration-patterns.md +0 -0
@@ -0,0 +1,340 @@
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>TestSpirite · App shell</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Geist+Mono:wght@400;500&display=swap" rel="stylesheet" />
10
+ <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>
11
+ <style>
12
+ :root {
13
+ --bg:#f7f7f3; --surface:#fff; --sunken:#f0f1ec;
14
+ --fg:#1a1c19; --slate:#494c46; --muted:#8a8d84; --subtle:#a8aaa0;
15
+ --border:#e8e9e3; --border-strong:#d8dad2;
16
+ --primary:#3d7c4e; --primary-hover:#336b42; --primary-surface:#eaf3ea; --primary-border:#d3e6d5;
17
+ --status:#2f9e54; --warning:#c98a28; --error:#cf4a3e;
18
+ --shadow-card:0 1px 2px rgba(26,28,25,0.04), 0 1px 3px rgba(26,28,25,0.03);
19
+ --sans:'Inter', ui-sans-serif, system-ui, -apple-system, sans-serif;
20
+ --mono:'Geist Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
21
+ }
22
+ * { box-sizing:border-box; margin:0; padding:0; }
23
+ html { -webkit-text-size-adjust:100%; }
24
+ body { font-family:var(--sans); background:var(--bg); color:var(--fg); line-height:1.5; -webkit-font-smoothing:antialiased; }
25
+ .num { font-variant-numeric:tabular-nums; }
26
+ a { text-decoration:none; color:inherit; }
27
+ .shell { display:flex; min-height:100vh; }
28
+
29
+ /* ---- Sidebar ---- */
30
+ .sidebar { display:flex; flex-direction:column; width:240px; flex-shrink:0; border-right:1px solid var(--border); background:var(--bg); }
31
+ .ws { display:flex; align-items:center; gap:10px; padding:14px 16px; border-bottom:1px solid var(--border); cursor:pointer; }
32
+ .ws:hover { background:var(--sunken); }
33
+ .ws .mark { display:grid; place-items:center; width:28px; height:28px; border-radius:6px; background:var(--primary); color:#fff; font-size:12px; font-weight:600; }
34
+ .ws .name { flex:1; font-size:14px; font-weight:500; }
35
+ .ws .chev { color:var(--muted); }
36
+ nav { flex:1; padding:16px 12px; display:flex; flex-direction:column; gap:20px; overflow:auto; }
37
+ .grp-label { padding:0 10px 6px; font-size:11px; font-weight:500; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); }
38
+ .navitem { display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:8px; font-size:14px; color:var(--slate); transition:background .15s, color .15s; cursor:pointer; }
39
+ .navitem svg { color:var(--muted); flex-shrink:0; }
40
+ .navitem:hover { background:var(--sunken); }
41
+ .navitem.active { background:var(--sunken); color:var(--fg); font-weight:500; }
42
+ .navitem.active svg { color:var(--fg); }
43
+ .navitem .lbl { flex:1; }
44
+ .navitem.sub { padding-left:34px; font-size:13px; }
45
+ .pill-new { border-radius:999px; background:var(--primary-surface); color:var(--primary); font-size:11px; font-weight:500; padding:1px 8px; }
46
+ .trial { margin:12px; padding:16px; border-radius:12px; border:1px solid var(--primary-border); background:var(--primary-surface); }
47
+ .trial .h { display:flex; align-items:center; gap:6px; font-size:13px; font-weight:600; }
48
+ .trial .s { margin-top:4px; font-size:12px; color:var(--slate); }
49
+ .trial .btn { margin-top:12px; }
50
+
51
+ /* ---- Main ---- */
52
+ .main { flex:1; min-width:0; display:flex; flex-direction:column; }
53
+ .topbar { display:flex; align-items:center; height:56px; padding:0 24px; border-bottom:1px solid var(--border); font-size:14px; color:var(--slate); }
54
+ .content { flex:1; }
55
+ .layout { max-width:1200px; margin:0 auto; padding:28px 24px; display:flex; gap:24px; align-items:flex-start; }
56
+ .stream { flex:1; min-width:0; display:flex; flex-direction:column; gap:28px; }
57
+ .rail { width:320px; flex-shrink:0; display:flex; flex-direction:column; gap:16px; }
58
+
59
+ .card { border-radius:12px; border:1px solid var(--border); background:var(--surface); padding:20px; }
60
+ .card.soft { box-shadow:var(--shadow-card); }
61
+ .billboard { display:grid; grid-template-columns:1fr 300px; gap:20px; border-radius:16px; align-items:center; box-shadow:var(--shadow-card); }
62
+ .billboard h2 { font-size:20px; font-weight:600; letter-spacing:-0.01em; }
63
+ .billboard p { margin-top:8px; font-size:14px; color:var(--slate); max-width:46ch; }
64
+ .billboard .cta { margin-top:16px; display:flex; gap:10px; }
65
+ .billboard .art { height:150px; border-radius:12px; background:
66
+ radial-gradient(120% 120% at 80% 20%, #eaf3ea 0%, #f0f1ec 50%, #e8e9e3 100%);
67
+ display:grid; place-items:center; border:1px solid var(--border); }
68
+
69
+ .btn { display:inline-flex; align-items:center; gap:7px; border-radius:8px; padding:8px 16px; font-size:14px; font-weight:500; cursor:pointer; border:1px solid transparent; transition:background .15s, color .15s, border-color .15s; }
70
+ .btn-primary { background:var(--primary); color:#fff; }
71
+ .btn-primary:hover { background:var(--primary-hover); }
72
+ .btn-secondary { background:var(--surface); color:var(--fg); border-color:var(--border); }
73
+ .btn-secondary:hover { background:var(--sunken); }
74
+ .btn-ghost { color:var(--muted); padding:7px; }
75
+ .btn-ghost:hover { background:var(--sunken); color:var(--fg); }
76
+ .btn-full { width:100%; justify-content:center; }
77
+ .btn-sm { padding:6px 12px; font-size:13px; }
78
+ .link { font-size:13px; font-weight:500; color:var(--primary); cursor:pointer; }
79
+ .link:hover { color:var(--primary-hover); }
80
+
81
+ .feat { display:inline-flex; align-items:center; gap:6px; border-radius:999px; background:var(--primary-surface); color:var(--primary); font-size:12px; font-weight:500; padding:5px 10px; }
82
+ .pills { display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
83
+
84
+ .sec-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
85
+ .sec-head h3 { font-size:14px; font-weight:600; }
86
+ .sec-actions { display:flex; gap:8px; }
87
+
88
+ .empty { display:flex; flex-direction:column; align-items:center; gap:16px; border-radius:12px; border:1px solid var(--border); background:var(--surface); padding:56px 20px; }
89
+ .empty .iso { color:#cfd1c8; }
90
+ .empty .t { font-size:14px; color:var(--muted); }
91
+
92
+ .rail .h { display:flex; align-items:center; justify-content:space-between; }
93
+ .rail .h .t { font-size:14px; font-weight:600; }
94
+ .meter { margin-top:14px; height:6px; border-radius:999px; background:var(--sunken); overflow:hidden; }
95
+ .meter > i { display:block; height:100%; border-radius:999px; background:var(--primary); }
96
+ .meter-row { margin-top:10px; display:flex; align-items:center; justify-content:space-between; font-size:12px; color:var(--slate); }
97
+ .meter-row b { color:var(--fg); }
98
+
99
+ .chg { padding:14px 0; border-top:1px solid var(--border); }
100
+ .chg:first-of-type { border-top:0; padding-top:6px; }
101
+ .chg .tag { display:inline-block; border-radius:999px; background:var(--primary-surface); color:var(--primary); font-size:11px; font-weight:500; padding:2px 8px; }
102
+ .chg .ti { margin-top:8px; font-size:14px; font-weight:500; }
103
+ .chg .de { margin-top:4px; font-size:12px; line-height:1.5; color:var(--slate); }
104
+ .chg .dt { margin-top:8px; font-size:12px; color:var(--subtle); }
105
+
106
+ .banner { display:grid; grid-template-columns:1fr 280px; gap:20px; align-items:center; border-radius:12px; border:1px solid var(--border); background:var(--surface); padding:24px; }
107
+ .banner h3 { font-size:17px; font-weight:600; }
108
+ .banner p { margin-top:6px; font-size:13px; color:var(--slate); }
109
+ .banner .preview { height:96px; border-radius:10px; background:var(--sunken); border:1px solid var(--border); display:flex; flex-direction:column; justify-content:center; gap:8px; padding:14px; opacity:.7; }
110
+ .dots { display:flex; gap:5px; }
111
+ .dots i { width:7px; height:7px; border-radius:50%; background:var(--border-strong); }
112
+ .dots i.on { background:var(--primary); }
113
+ .dots i.warn { background:var(--warning); }
114
+
115
+ .chartcard .h { display:flex; align-items:center; justify-content:space-between; }
116
+ .chartcard .v { margin-top:6px; font-size:24px; font-weight:600; }
117
+ .chartcard .d { margin-top:2px; font-size:12px; color:var(--slate); }
118
+ .chartcard .wrap { margin-top:12px; height:120px; }
119
+ .delta { color:var(--primary); font-weight:500; }
120
+ </style>
121
+ </head>
122
+ <body>
123
+ <div class="shell">
124
+
125
+ <!-- ============ SIDEBAR ============ -->
126
+ <aside class="sidebar">
127
+ <div class="ws">
128
+ <span class="mark">MW</span>
129
+ <span class="name">My Workspace</span>
130
+ <svg class="chev" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="m7 15 5 5 5-5M7 9l5-5 5 5"/></svg>
131
+ </div>
132
+
133
+ <nav>
134
+ <div>
135
+ <p class="grp-label">Dashboard</p>
136
+ <a class="navitem active"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><path d="M9 22V12h6v10"/></svg><span class="lbl">Home</span></a>
137
+ </div>
138
+
139
+ <div>
140
+ <p class="grp-label">All Tests</p>
141
+ <a class="navitem"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9"/></svg><span class="lbl">Overview</span></a>
142
+ <a class="navitem sub"><span class="lbl">MCP Tests</span></a>
143
+ <a class="navitem sub"><span class="lbl">Web Tests</span></a>
144
+ </div>
145
+
146
+ <div>
147
+ <p class="grp-label">Testing</p>
148
+ <a class="navitem"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 3h6M10 3v6l-4 9a2 2 0 0 0 2 3h8a2 2 0 0 0 2-3l-4-9V3"/></svg><span class="lbl">Create Tests</span><span class="pill-new">New</span></a>
149
+ <a class="navitem"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01"/></svg><span class="lbl">Test Lists</span></a>
150
+ <a class="navitem"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 3v18h18"/><path d="m19 9-5 5-4-4-3 3"/></svg><span class="lbl">Monitoring</span></a>
151
+ <a class="navitem"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/></svg><span class="lbl">Documentation</span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="var(--subtle)" stroke-width="2"><path d="M7 17 17 7M7 7h10v10"/></svg></a>
152
+ </div>
153
+
154
+ <div>
155
+ <p class="grp-label">Settings</p>
156
+ <a class="navitem"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="8" r="4"/><path d="M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1"/></svg><span class="lbl">Profile</span></a>
157
+ <a class="navitem"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="5" width="20" height="14" rx="2"/><path d="M2 10h20"/></svg><span class="lbl">Plan &amp; Billing</span></a>
158
+ <a class="navitem"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.9a3.4 3.4 0 0 0-1-2.6c3-.3 6-1.5 6-6.5a5 5 0 0 0-1.4-3.5 4.6 4.6 0 0 0-.1-3.5s-1.1-.3-3.5 1.3a12 12 0 0 0-6 0C6.6 1.7 5.5 2 5.5 2a4.6 4.6 0 0 0-.1 3.5A5 5 0 0 0 4 9c0 5 3 6.2 6 6.5a3.4 3.4 0 0 0-1 2.6V22"/></svg><span class="lbl">GitHub App</span></a>
159
+ <a class="navitem"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="7.5" cy="15.5" r="5.5"/><path d="m21 2-9.6 9.6M15.5 7.5l3 3L22 7l-3-3"/></svg><span class="lbl">API Keys</span></a>
160
+ </div>
161
+ </nav>
162
+
163
+ <div class="trial">
164
+ <p class="h"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="var(--primary)" stroke-width="2"><path d="m12 3 1.9 5.8a2 2 0 0 0 1.3 1.3L21 12l-5.8 1.9a2 2 0 0 0-1.3 1.3L12 21l-1.9-5.8a2 2 0 0 0-1.3-1.3L3 12l5.8-1.9a2 2 0 0 0 1.3-1.3z"/></svg> 1 Month Free Trial</p>
165
+ <p class="s">Unlock all features free for 1 month.</p>
166
+ <button class="btn btn-primary btn-full btn-sm trial-btn" style="margin-top:12px;">Try for Free</button>
167
+ </div>
168
+ </aside>
169
+
170
+ <!-- ============ MAIN ============ -->
171
+ <div class="main">
172
+ <header class="topbar">Home</header>
173
+ <div class="content">
174
+ <div class="layout">
175
+
176
+ <!-- STREAM -->
177
+ <div class="stream">
178
+
179
+ <!-- billboard -->
180
+ <section class="card billboard" style="padding:24px;">
181
+ <div>
182
+ <h2>Get Started with TestSpirite</h2>
183
+ <p>10x your AI-native dev speed with our autonomous AI testing agent handling verification end to end.</p>
184
+ <div class="cta">
185
+ <button class="btn btn-primary">Create Tests</button>
186
+ <button class="btn btn-secondary">View Docs</button>
187
+ </div>
188
+ </div>
189
+ <div class="art">
190
+ <svg width="80" height="80" viewBox="0 0 64 64" fill="none" stroke="var(--primary)" stroke-width="2" stroke-linejoin="round">
191
+ <path d="M32 6 56 20v24L32 58 8 44V20z"/>
192
+ <path d="M32 6v52M8 20l24 14 24-14M20 13v24M44 13v24"/>
193
+ </svg>
194
+ </div>
195
+ </section>
196
+
197
+ <!-- recent created tests -->
198
+ <section>
199
+ <div class="sec-head">
200
+ <h3>Recent Created Tests</h3>
201
+ <div class="sec-actions">
202
+ <button class="btn btn-secondary btn-sm">Last 7 Days ▾</button>
203
+ <button class="btn btn-secondary btn-ghost"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 5v14M5 12h14"/></svg></button>
204
+ </div>
205
+ </div>
206
+ <div class="empty">
207
+ <svg class="iso" width="64" height="64" viewBox="0 0 64 64" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round">
208
+ <path d="M20 14 32 8l12 6-12 6z"/>
209
+ <path d="M20 26l12-6 12 6-12 6z"/>
210
+ <path d="M20 38l12-6 12 6-12 6z"/>
211
+ <path d="M20 14v24l12 6 12-6V14"/>
212
+ </svg>
213
+ <p class="t">No tests</p>
214
+ <button class="btn btn-secondary btn-sm"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 5v14M5 12h14"/></svg> Create Tests</button>
215
+ </div>
216
+ </section>
217
+
218
+ <!-- my test lists -->
219
+ <section>
220
+ <div class="sec-head"><h3>My Test Lists</h3></div>
221
+ <div class="empty">
222
+ <svg class="iso" width="64" height="64" viewBox="0 0 64 64" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round">
223
+ <path d="M12 20 32 10l20 10-20 10z"/>
224
+ <path d="M12 32 32 22l20 10-20 10z"/>
225
+ <path d="M12 44 32 34l20 10-20 10z"/>
226
+ </svg>
227
+ <p class="t">No test lists</p>
228
+ <button class="btn btn-secondary btn-sm"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 5v14M5 12h14"/></svg> Create Test Lists</button>
229
+ </div>
230
+ </section>
231
+
232
+ <!-- automated monitoring banner -->
233
+ <section class="banner">
234
+ <div>
235
+ <h3>Stay Ahead with Automated Monitoring</h3>
236
+ <p>Get real-time visibility into your product's health.</p>
237
+ <button class="btn btn-primary" style="margin-top:16px;">Upgrade Now</button>
238
+ </div>
239
+ <div class="preview">
240
+ <div class="dots"><i class="on"></i><i class="on"></i><i class="warn"></i><i class="on"></i><i></i></div>
241
+ <div class="dots"><i class="on"></i><i class="warn"></i><i class="on"></i><i class="on"></i><i class="on"></i></div>
242
+ <div class="dots"><i class="on"></i><i class="on"></i><i class="on"></i><i></i><i class="on"></i></div>
243
+ </div>
244
+ </section>
245
+
246
+ </div>
247
+
248
+ <!-- RAIL -->
249
+ <aside class="rail">
250
+
251
+ <!-- free trial promo -->
252
+ <div class="card" style="border-color:var(--primary-border); background:var(--primary-surface);">
253
+ <p style="display:flex; align-items:center; gap:6px; font-size:14px; font-weight:600;">
254
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="var(--primary)" stroke-width="2"><path d="m12 3 1.9 5.8a2 2 0 0 0 1.3 1.3L21 12l-5.8 1.9a2 2 0 0 0-1.3 1.3L12 21l-1.9-5.8a2 2 0 0 0-1.3-1.3L3 12l5.8-1.9a2 2 0 0 0 1.3-1.3z"/></svg>
255
+ 1 Month Free Trial
256
+ </p>
257
+ <p style="margin-top:4px; font-size:12px; color:var(--slate);">Unlock all features free for 1 month.</p>
258
+ <div class="pills">
259
+ <span class="feat"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><path d="M20 6 9 17l-5-5"/></svg> More Credits</span>
260
+ <span class="feat"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><path d="M20 6 9 17l-5-5"/></svg> Better Models</span>
261
+ <span class="feat"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><path d="M20 6 9 17l-5-5"/></svg> Monitoring</span>
262
+ <span class="feat"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><path d="M20 6 9 17l-5-5"/></svg> Better Coverage</span>
263
+ </div>
264
+ <button class="btn btn-primary btn-full" style="margin-top:14px;">Try For Free</button>
265
+ </div>
266
+
267
+ <!-- my plan / credits -->
268
+ <div class="card">
269
+ <div class="h"><span class="t">My Plan</span><span class="link">Manage Plan</span></div>
270
+ <div class="meter"><i style="width:30%"></i></div>
271
+ <div class="meter-row"><span>Free</span><span class="num"><b>150</b> Credits Remaining</span></div>
272
+ </div>
273
+
274
+ <!-- monitoring mini chart -->
275
+ <div class="card chartcard">
276
+ <div class="h"><span class="t" style="font-size:14px; font-weight:600;">Test Runs</span><span style="font-size:12px; color:var(--muted);">Last 7 Days</span></div>
277
+ <p class="v num">1,284</p>
278
+ <p class="d"><span class="delta">+12.5%</span> vs previous week</p>
279
+ <div class="wrap"><canvas id="runs"></canvas></div>
280
+ </div>
281
+
282
+ <!-- recent updates / changelog -->
283
+ <div class="card">
284
+ <div class="h" style="margin-bottom:8px;"><span class="t">Recent Updates</span><span class="link">View Changelog ↗</span></div>
285
+ <div class="chg">
286
+ <span class="tag">New Feature</span>
287
+ <p class="ti">Backend Testing</p>
288
+ <p class="de">Auto-chained integration flows, a visual data flow of every API call, and post-run auto-cleanup.</p>
289
+ <p class="dt num">Apr 24, 2026</p>
290
+ </div>
291
+ <div class="chg">
292
+ <span class="tag">New Feature</span>
293
+ <p class="ti">Frontend Testing Agent</p>
294
+ <p class="de">Autonomous site exploration, replayable agent actions, and a visual test-steps view with screenshots.</p>
295
+ <p class="dt num">Apr 24, 2026</p>
296
+ </div>
297
+ <div class="chg">
298
+ <span class="tag">New Feature</span>
299
+ <p class="ti">GitHub Integration</p>
300
+ <p class="de">Connect your repositories to streamline your testing workflow.</p>
301
+ <p class="dt num">Feb 17, 2026</p>
302
+ </div>
303
+ </div>
304
+
305
+ </aside>
306
+ </div>
307
+ </div>
308
+ </div>
309
+ </div>
310
+
311
+ <script>
312
+ const PRIMARY="#3d7c4e", S3="#a9cdb1", GRID="#e8e9e3";
313
+ Chart.defaults.font.family = "Inter, system-ui, sans-serif";
314
+ Chart.defaults.color = "#8a8d84";
315
+ const ctx = document.getElementById('runs');
316
+ if (ctx) new Chart(ctx, {
317
+ type: 'bar',
318
+ data: {
319
+ labels: ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'],
320
+ datasets: [{
321
+ data: [142, 168, 131, 204, 188, 96, 155],
322
+ backgroundColor: [S3, S3, S3, PRIMARY, S3, S3, S3],
323
+ borderRadius: 6, borderSkipped: false, maxBarThickness: 22,
324
+ }]
325
+ },
326
+ options: {
327
+ responsive: true, maintainAspectRatio: false,
328
+ plugins: {
329
+ legend: { display: false },
330
+ tooltip: { backgroundColor:"#fff", borderColor:"#e8e9e3", borderWidth:1, titleColor:"#1a1c19", bodyColor:"#494c46", cornerRadius:8, padding:10, displayColors:false }
331
+ },
332
+ scales: {
333
+ x: { grid: { display:false }, border:{ display:false }, ticks:{ font:{ size:11 } } },
334
+ y: { grid: { color:GRID }, border:{ display:false }, ticks:{ display:false }, beginAtZero:true }
335
+ }
336
+ }
337
+ });
338
+ </script>
339
+ </body>
340
+ </html>