aiblueprint-cli 1.4.80 → 1.4.82
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 +21 -17
- package/agents-config/claude-config/scripts/statusline/data/.gitignore +8 -0
- package/agents-config/claude-config/scripts/statusline/data/.gitkeep +0 -0
- package/agents-config/claude-config/scripts/statusline/defaults.json +10 -10
- package/agents-config/claude-config/scripts/statusline/src/commands/interactive-config.ts +118 -6
- package/agents-config/claude-config/scripts/statusline/src/index.ts +100 -9
- package/agents-config/claude-config/scripts/statusline/src/lib/config.ts +28 -2
- package/agents-config/claude-config/scripts/statusline/src/lib/features/limits/commands/weekly-analysis.ts +108 -0
- package/agents-config/claude-config/scripts/statusline/src/lib/features/limits/index.ts +164 -0
- package/agents-config/claude-config/scripts/statusline/src/lib/features/limits/types.ts +15 -0
- package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/commands/migrate-to-sqlite.ts +136 -0
- package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/commands/spend-day.ts +79 -0
- package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/commands/spend-month.ts +66 -0
- package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/commands/spend-project.ts +85 -0
- package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/database.ts +395 -0
- package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/index.ts +178 -0
- package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/payload-logger.ts +163 -0
- package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/types.ts +37 -0
- package/agents-config/claude-config/scripts/statusline/src/lib/presets.ts +13 -13
- package/agents-config/claude-config/scripts/statusline/statusline.config.free.json +4 -1
- package/agents-config/claude-config/scripts/statusline/statusline.config.json +44 -23
- package/agents-config/scripts/statusline/data/.gitignore +8 -0
- package/agents-config/scripts/statusline/data/.gitkeep +0 -0
- package/agents-config/scripts/statusline/defaults.json +10 -10
- package/agents-config/scripts/statusline/src/commands/interactive-config.ts +118 -6
- package/agents-config/scripts/statusline/src/index.ts +100 -9
- package/agents-config/scripts/statusline/src/lib/config.ts +28 -2
- package/agents-config/scripts/statusline/src/lib/features/limits/commands/weekly-analysis.ts +108 -0
- package/agents-config/scripts/statusline/src/lib/features/limits/index.ts +164 -0
- package/agents-config/scripts/statusline/src/lib/features/limits/types.ts +15 -0
- package/agents-config/scripts/statusline/src/lib/features/spend/commands/migrate-to-sqlite.ts +136 -0
- package/agents-config/scripts/statusline/src/lib/features/spend/commands/spend-day.ts +79 -0
- package/agents-config/scripts/statusline/src/lib/features/spend/commands/spend-month.ts +66 -0
- package/agents-config/scripts/statusline/src/lib/features/spend/commands/spend-project.ts +85 -0
- package/agents-config/scripts/statusline/src/lib/features/spend/database.ts +395 -0
- package/agents-config/scripts/statusline/src/lib/features/spend/index.ts +178 -0
- package/agents-config/scripts/statusline/src/lib/features/spend/payload-logger.ts +163 -0
- package/agents-config/scripts/statusline/src/lib/features/spend/types.ts +37 -0
- package/agents-config/scripts/statusline/src/lib/presets.ts +13 -13
- package/agents-config/scripts/statusline/statusline.config.free.json +4 -1
- package/agents-config/scripts/statusline/statusline.config.json +44 -23
- package/agents-config/skills/agents-managers/SKILL.md +1 -1
- package/agents-config/skills/agents-managers/references/writing-agent-prompts.md +1 -1
- package/agents-config/skills/appstore-connect/SKILL.md +104 -0
- package/agents-config/skills/appstore-connect/scripts/asc-api.mjs +88 -0
- package/agents-config/skills/appstore-connect-setup/SKILL.md +159 -0
- package/agents-config/{commands/prompts/create-vitejs-app.md → skills/create-vitejs-app/SKILL.md} +2 -1
- package/agents-config/skills/environments-manager/SKILL.md +6 -6
- package/agents-config/skills/environments-manager/examples/{claude/commands/dev.md → skills/dev/SKILL.md} +2 -1
- package/agents-config/skills/environments-manager/examples/{claude/commands/lint.md → skills/lint/SKILL.md} +2 -1
- package/agents-config/skills/environments-manager/examples/{claude/commands/test.md → skills/test/SKILL.md} +2 -1
- package/agents-config/skills/environments-manager/examples/{claude/commands/typecheck.md → skills/typecheck/SKILL.md} +2 -1
- package/agents-config/skills/environments-manager/references/claude.md +13 -9
- package/agents-config/skills/environments-manager/references/cursor.md +2 -2
- package/agents-config/skills/ios-testflight/SKILL.md +280 -0
- package/agents-config/{commands/prompts/nextjs-add-prisma-db.md → skills/nextjs-add-prisma-db/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/nextjs-setup-better-auth.md → skills/nextjs-setup-better-auth/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/nextjs-setup-project.md → skills/nextjs-setup-project/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/prompt.md → skills/prompt/SKILL.md} +5 -0
- package/agents-config/{commands/prompts/saas-challenge-idea.md → skills/saas-challenge-idea/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/saas-create-architecture.md → skills/saas-create-architecture/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/saas-create-headline.md → skills/saas-create-headline/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/saas-create-landing-copywritting.md → skills/saas-create-landing-copywritting/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/saas-create-legals-docs.md → skills/saas-create-legals-docs/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/saas-create-logos.md → skills/saas-create-logos/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/saas-create-prd.md → skills/saas-create-prd/SKILL.md} +4 -3
- package/agents-config/{commands/prompts/saas-create-tasks.md → skills/saas-create-tasks/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/saas-define-pricing.md → skills/saas-define-pricing/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/saas-find-domain-name.md → skills/saas-find-domain-name/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/saas-implement-landing-page.md → skills/saas-implement-landing-page/SKILL.md} +1 -0
- package/agents-config/{commands/prompts/setup-tmux.md → skills/setup-tmux/SKILL.md} +5 -0
- package/agents-config/{commands/prompts/tools.md → skills/tools/SKILL.md} +1 -0
- package/agents-config/skills/ultrathink/SKILL.md +1 -1
- package/agents-config/skills/use-style/SKILL.md +7 -4
- package/agents-config/skills/use-style/examples/luma.html +221 -0
- package/agents-config/skills/use-style/examples/testspirite.html +340 -0
- package/agents-config/skills/use-style/styles/ios-app.md +350 -0
- package/agents-config/skills/use-style/styles/luma.md +422 -0
- package/agents-config/skills/use-style/styles/new-york-times.md +1 -1
- package/agents-config/skills/use-style/styles/split-auth.md +2 -2
- package/agents-config/skills/use-style/styles/testspirite.md +397 -0
- package/dist/cli.js +17 -80
- package/package.json +1 -1
- package/agents-config/claude-config/scripts/.claude/commands/fix-on-my-computer.md +0 -87
|
@@ -0,0 +1,221 @@
|
|
|
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>Events · Luma</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&display=swap" rel="stylesheet" />
|
|
10
|
+
<style>
|
|
11
|
+
:root {
|
|
12
|
+
--bg:#0a0a0b; --surface:#161618; --raised:#202024; --high:#2a2a2e;
|
|
13
|
+
--fg:#f7f7f8; --body:#c6c6cb; --muted:#8c8c93; --subtle:#5e5e65;
|
|
14
|
+
--border:rgba(255,255,255,0.08); --border-soft:rgba(255,255,255,0.05);
|
|
15
|
+
--white:#fff; --white-fg:#0a0a0a;
|
|
16
|
+
--blue:#2f6bff; --gold:#f5b13d; --pos:#3ecf8e;
|
|
17
|
+
--sans:'Inter', -apple-system, system-ui, sans-serif;
|
|
18
|
+
}
|
|
19
|
+
* { box-sizing:border-box; margin:0; padding:0; }
|
|
20
|
+
html { -webkit-text-size-adjust:100%; }
|
|
21
|
+
body {
|
|
22
|
+
font-family:var(--sans); color:var(--fg); line-height:1.5; -webkit-font-smoothing:antialiased;
|
|
23
|
+
min-height:100vh; padding-bottom:80px;
|
|
24
|
+
background:
|
|
25
|
+
radial-gradient(90% 32% at 50% 0%, rgba(40,82,96,.55) 0%, rgba(22,44,54,.18) 45%, transparent 72%),
|
|
26
|
+
var(--bg);
|
|
27
|
+
background-attachment:fixed;
|
|
28
|
+
}
|
|
29
|
+
.num { font-variant-numeric:tabular-nums; }
|
|
30
|
+
.wrap { max-width:860px; margin:0 auto; padding:0 20px; }
|
|
31
|
+
|
|
32
|
+
/* nav */
|
|
33
|
+
nav.top { display:flex; align-items:center; gap:26px; padding:18px 0; font-size:14px; }
|
|
34
|
+
nav.top a { display:flex; align-items:center; gap:7px; color:var(--muted); text-decoration:none; transition:color .15s; }
|
|
35
|
+
nav.top a:hover { color:var(--fg); }
|
|
36
|
+
nav.top a.active { color:var(--fg); font-weight:500; }
|
|
37
|
+
nav.top svg { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:1.8; }
|
|
38
|
+
nav.top .spacer { flex:1; }
|
|
39
|
+
.pill-btn { border-radius:999px; padding:8px 16px; font-size:13px; font-weight:600; cursor:pointer; border:none; }
|
|
40
|
+
.pill-btn.white { background:var(--white); color:var(--white-fg); }
|
|
41
|
+
.pill-btn.white:hover { opacity:.9; }
|
|
42
|
+
|
|
43
|
+
/* header */
|
|
44
|
+
.head { display:flex; align-items:center; justify-content:space-between; margin:24px 0 36px; }
|
|
45
|
+
h1 { font-size:clamp(30px,5vw,40px); font-weight:700; letter-spacing:-0.025em; }
|
|
46
|
+
.toggle { display:inline-flex; border-radius:999px; background:var(--raised); padding:3px; font-size:14px; }
|
|
47
|
+
.toggle button { border:none; cursor:pointer; border-radius:999px; padding:7px 18px; color:var(--muted); background:transparent; font-family:inherit; font-size:14px; transition:color .15s; }
|
|
48
|
+
.toggle button.on { background:var(--high); color:var(--fg); font-weight:500; }
|
|
49
|
+
|
|
50
|
+
/* timeline */
|
|
51
|
+
.day { display:grid; grid-template-columns:104px 1fr; gap:18px; }
|
|
52
|
+
.day + .day { margin-top:36px; }
|
|
53
|
+
.rail { position:relative; padding-top:4px; }
|
|
54
|
+
.rail .date { font-size:17px; font-weight:600; letter-spacing:-0.01em; }
|
|
55
|
+
.rail .wd { font-size:14px; color:var(--muted); margin-top:1px; }
|
|
56
|
+
.rail .dot { position:absolute; right:-9px; top:8px; width:9px; height:9px; border-radius:999px; background:var(--blue); box-shadow:0 0 0 4px var(--bg); }
|
|
57
|
+
.rail .line { position:absolute; right:-5px; top:22px; bottom:-44px; border-left:1.5px dashed rgba(255,255,255,.14); }
|
|
58
|
+
.day:last-child .rail .line { display:none; }
|
|
59
|
+
.stack { display:flex; flex-direction:column; gap:12px; }
|
|
60
|
+
|
|
61
|
+
/* card */
|
|
62
|
+
.card { border:1px solid var(--border); background:var(--surface); border-radius:18px; padding:18px; transition:background .15s; }
|
|
63
|
+
.card:hover { background:#19191c; }
|
|
64
|
+
.card .row { display:flex; gap:16px; }
|
|
65
|
+
.card .info { min-width:0; flex:1; }
|
|
66
|
+
.time { font-size:14px; color:var(--muted); }
|
|
67
|
+
.time .g { color:var(--gold); font-weight:500; margin-left:4px; }
|
|
68
|
+
.card h3 { font-size:19px; font-weight:600; letter-spacing:-0.015em; margin-top:6px; line-height:1.25; }
|
|
69
|
+
.by { display:flex; align-items:center; gap:8px; font-size:14px; color:var(--body); margin-top:10px; }
|
|
70
|
+
.loc { display:flex; align-items:center; gap:6px; font-size:14px; color:var(--muted); margin-top:5px; }
|
|
71
|
+
.loc svg, .by svg { width:15px; height:15px; stroke:currentColor; fill:none; stroke-width:1.8; }
|
|
72
|
+
.foot { display:flex; align-items:center; gap:10px; margin-top:14px; }
|
|
73
|
+
|
|
74
|
+
/* pills + avatars */
|
|
75
|
+
.pill { border-radius:999px; padding:4px 11px; font-size:12px; font-weight:500; }
|
|
76
|
+
.pill.invited { background:var(--blue); color:#fff; }
|
|
77
|
+
.pill.going { background:rgba(62,207,142,.15); color:var(--pos); }
|
|
78
|
+
.pill.pending { background:var(--raised); color:var(--muted); }
|
|
79
|
+
.avs { display:flex; align-items:center; }
|
|
80
|
+
.avs .a { width:24px; height:24px; border-radius:999px; box-shadow:0 0 0 2px var(--bg); margin-left:-7px; }
|
|
81
|
+
.avs .a:first-child { margin-left:0; }
|
|
82
|
+
.avs .more { margin-left:9px; border-radius:999px; background:var(--raised); color:var(--muted); font-size:12px; padding:2px 9px; }
|
|
83
|
+
|
|
84
|
+
/* cover thumb */
|
|
85
|
+
.cover { width:104px; height:104px; border-radius:14px; flex-shrink:0; position:relative; overflow:hidden; display:grid; place-items:center; }
|
|
86
|
+
.cover span { font-size:13px; font-weight:700; color:#fff; text-align:center; padding:8px; line-height:1.15; letter-spacing:-0.01em; text-shadow:0 1px 6px rgba(0,0,0,.35); }
|
|
87
|
+
@media (max-width:560px){ .cover{ width:84px; height:84px; } .day{ grid-template-columns:80px 1fr; } }
|
|
88
|
+
|
|
89
|
+
/* avatar gradients */
|
|
90
|
+
.g1{background:linear-gradient(135deg,#f0883e,#d65a5a);} .g2{background:linear-gradient(135deg,#3ecf8e,#2f9e6b);}
|
|
91
|
+
.g3{background:linear-gradient(135deg,#6b8cff,#2f6bff);} .g4{background:linear-gradient(135deg,#b07cf0,#7c4fd6);}
|
|
92
|
+
.g5{background:linear-gradient(135deg,#f5b13d,#e08a1e);} .g6{background:linear-gradient(135deg,#2dd4bf,#0d9488);}
|
|
93
|
+
</style>
|
|
94
|
+
</head>
|
|
95
|
+
<body>
|
|
96
|
+
<div class="wrap">
|
|
97
|
+
<!-- nav -->
|
|
98
|
+
<nav class="top">
|
|
99
|
+
<a class="active" href="#"><svg viewBox="0 0 24 24"><rect x="3" y="6" width="18" height="13" rx="2"/><path d="M3 11h18"/></svg> Events</a>
|
|
100
|
+
<a href="#"><svg viewBox="0 0 24 24"><rect x="4" y="5" width="16" height="16" rx="2"/><path d="M4 9h16M8 3v4M16 3v4"/></svg> Calendars</a>
|
|
101
|
+
<a href="#"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M15 9l-2 5-4 1 2-5z"/></svg> Discover</a>
|
|
102
|
+
<span class="spacer"></span>
|
|
103
|
+
<button class="pill-btn white">Create Event</button>
|
|
104
|
+
</nav>
|
|
105
|
+
|
|
106
|
+
<!-- header -->
|
|
107
|
+
<div class="head">
|
|
108
|
+
<h1>Events</h1>
|
|
109
|
+
<div class="toggle">
|
|
110
|
+
<button class="on">Upcoming</button>
|
|
111
|
+
<button>Past</button>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
|
|
115
|
+
<!-- timeline -->
|
|
116
|
+
<!-- day -->
|
|
117
|
+
<div class="day">
|
|
118
|
+
<div class="rail">
|
|
119
|
+
<div class="date">Jun 22</div><div class="wd">Monday</div>
|
|
120
|
+
<span class="dot"></span><span class="line"></span>
|
|
121
|
+
</div>
|
|
122
|
+
<div class="stack">
|
|
123
|
+
<div class="card"><div class="row">
|
|
124
|
+
<div class="info">
|
|
125
|
+
<div class="time">3:30 AM<span class="g">· Jun 21, 6:30 PM PDT</span></div>
|
|
126
|
+
<h3>Founder DJ Party</h3>
|
|
127
|
+
<div class="by"><span class="a g1" style="width:20px;height:20px;border-radius:999px;display:inline-block"></span> By Founders on Tap & Lyvia Chapman</div>
|
|
128
|
+
<div class="loc"><svg viewBox="0 0 24 24"><path d="M12 21s7-6 7-11a7 7 0 1 0-14 0c0 5 7 11 7 11z"/><circle cx="12" cy="10" r="2.5"/></svg> San Francisco, United States</div>
|
|
129
|
+
<div class="foot">
|
|
130
|
+
<span class="pill invited">Invited</span>
|
|
131
|
+
<div class="avs"><span class="a g2"></span><span class="a g3"></span><span class="a g4"></span><span class="more num">+132</span></div>
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
<div class="cover g1"><span>Founder<br>DJ Party</span></div>
|
|
135
|
+
</div></div>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
<!-- day -->
|
|
140
|
+
<div class="day">
|
|
141
|
+
<div class="rail">
|
|
142
|
+
<div class="date">Jun 24</div><div class="wd">Wednesday</div>
|
|
143
|
+
<span class="dot"></span><span class="line"></span>
|
|
144
|
+
</div>
|
|
145
|
+
<div class="stack">
|
|
146
|
+
<div class="card"><div class="row">
|
|
147
|
+
<div class="info">
|
|
148
|
+
<div class="time">3:00 AM<span class="g">· Jun 23, 6:00 PM PDT</span></div>
|
|
149
|
+
<h3>Agents After Hours ft. Harvey, Reducto, and Browserbase</h3>
|
|
150
|
+
<div class="by"><span class="a g3" style="width:20px;height:20px;border-radius:999px;display:inline-block"></span> By Shrey Pandya, Browserbase, Yash Gupta & Palak A…</div>
|
|
151
|
+
<div class="loc"><svg viewBox="0 0 24 24"><path d="M12 21s7-6 7-11a7 7 0 1 0-14 0c0 5 7 11 7 11z"/><circle cx="12" cy="10" r="2.5"/></svg> 1 Post St</div>
|
|
152
|
+
<div class="foot"><span class="pill invited">Invited</span></div>
|
|
153
|
+
</div>
|
|
154
|
+
<div class="cover g2"><span>Agents<br>After Hours</span></div>
|
|
155
|
+
</div></div>
|
|
156
|
+
|
|
157
|
+
<div class="card"><div class="row">
|
|
158
|
+
<div class="info">
|
|
159
|
+
<div class="time">9:00 PM<span class="g">· 12:00 PM PDT</span></div>
|
|
160
|
+
<h3>STAK Ventures: Speaker Series - VIP Lunch & Learn</h3>
|
|
161
|
+
<div class="by"><span class="a g5" style="width:20px;height:20px;border-radius:999px;display:inline-block"></span> By Brian Sparkes</div>
|
|
162
|
+
<div class="loc"><svg viewBox="0 0 24 24"><path d="M12 21s7-6 7-11a7 7 0 1 0-14 0c0 5 7 11 7 11z"/><circle cx="12" cy="10" r="2.5"/></svg> STAK Space - 1920 Broadway</div>
|
|
163
|
+
<div class="foot">
|
|
164
|
+
<span class="pill going">Going</span>
|
|
165
|
+
<div class="avs"><span class="a g6"></span><span class="a g1"></span><span class="a g4"></span><span class="more num">+379</span></div>
|
|
166
|
+
</div>
|
|
167
|
+
</div>
|
|
168
|
+
<div class="cover g5"><span>STAK<br>Ventures</span></div>
|
|
169
|
+
</div></div>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
<!-- day -->
|
|
174
|
+
<div class="day">
|
|
175
|
+
<div class="rail">
|
|
176
|
+
<div class="date">Jun 27</div><div class="wd">Saturday</div>
|
|
177
|
+
<span class="dot"></span><span class="line"></span>
|
|
178
|
+
</div>
|
|
179
|
+
<div class="stack">
|
|
180
|
+
<div class="card"><div class="row">
|
|
181
|
+
<div class="info">
|
|
182
|
+
<div class="time">5:30 PM<span class="g">· 8:30 AM PDT</span></div>
|
|
183
|
+
<h3>ExecuTorch with Meta & Qualcomm @ The Web Data Loft</h3>
|
|
184
|
+
<div class="by"><span class="a g4" style="width:20px;height:20px;border-radius:999px;display:inline-block"></span> By Bright Data, lablab, Lauren Lunde & Aaishika</div>
|
|
185
|
+
<div class="loc"><svg viewBox="0 0 24 24"><path d="M12 21s7-6 7-11a7 7 0 1 0-14 0c0 5 7 11 7 11z"/><circle cx="12" cy="10" r="2.5"/></svg> 625 2nd St</div>
|
|
186
|
+
<div class="foot">
|
|
187
|
+
<span class="pill invited">Invited</span>
|
|
188
|
+
<div class="avs"><span class="a g3"></span><span class="a g2"></span><span class="more num">+181</span></div>
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
191
|
+
<div class="cover g3"><span>ExecuTorch</span></div>
|
|
192
|
+
</div></div>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
|
|
196
|
+
<!-- day -->
|
|
197
|
+
<div class="day">
|
|
198
|
+
<div class="rail">
|
|
199
|
+
<div class="date">Jun 30</div><div class="wd">Tuesday</div>
|
|
200
|
+
<span class="dot"></span><span class="line"></span>
|
|
201
|
+
</div>
|
|
202
|
+
<div class="stack">
|
|
203
|
+
<div class="card"><div class="row">
|
|
204
|
+
<div class="info">
|
|
205
|
+
<div class="time">3:00 AM<span class="g">· Jun 29, 6:00 PM PDT</span></div>
|
|
206
|
+
<h3>Model Independence Day</h3>
|
|
207
|
+
<div class="by"><span class="a g6" style="width:20px;height:20px;border-radius:999px;display:inline-block"></span> By Tereza Tížková</div>
|
|
208
|
+
<div class="loc"><svg viewBox="0 0 24 24"><path d="M12 21s7-6 7-11a7 7 0 1 0-14 0c0 5 7 11 7 11z"/><circle cx="12" cy="10" r="2.5"/></svg> San Francisco, United States</div>
|
|
209
|
+
<div class="foot">
|
|
210
|
+
<span class="pill pending">Going · Maybe</span>
|
|
211
|
+
<div class="avs"><span class="a g4"></span><span class="a g5"></span><span class="a g2"></span><span class="more num">+108</span></div>
|
|
212
|
+
</div>
|
|
213
|
+
</div>
|
|
214
|
+
<div class="cover g4"><span>Model<br>Independence</span></div>
|
|
215
|
+
</div></div>
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
218
|
+
|
|
219
|
+
</div>
|
|
220
|
+
</body>
|
|
221
|
+
</html>
|
|
@@ -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 & 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>
|