forgedock 1.0.17 → 1.0.18

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 (131) hide show
  1. package/README.md +34 -1
  2. package/bin/cross-publish.mjs +344 -0
  3. package/bin/forgedock.mjs +229 -17
  4. package/commands/autopilot.md +77 -0
  5. package/commands/design-bench.md +176 -0
  6. package/commands/design-render-critique-loop.md +103 -0
  7. package/commands/design.md +259 -0
  8. package/commands/issue.md +7 -3
  9. package/commands/orchestrate.md +121 -0
  10. package/commands/qa-sweep.md +37 -2
  11. package/commands/quality-gate.md +30 -0
  12. package/commands/review-pr-staging.md +158 -2
  13. package/commands/test-gate.md +929 -0
  14. package/commands/work-on/build/implement.md +5 -3
  15. package/commands/work-on.md +53 -3
  16. package/docs/CI.md +177 -0
  17. package/docs/FORGE-PROTOCOL.md +324 -0
  18. package/docs/articles/b-vs-c-baseline.md +210 -0
  19. package/docs/articles/full-abc-benchmark.md +205 -0
  20. package/docs/articles/selective-spec-loading-token-savings.md +140 -0
  21. package/docs/design/abc-benchmark.md +195 -0
  22. package/docs/design/design-architect-rationale.md +123 -0
  23. package/docs/design/design-memory.md +61 -0
  24. package/docs/design/design-spec-schema.md +248 -0
  25. package/docs/design/design-system-lint.md +150 -0
  26. package/docs/design/divergent-generation.md +106 -0
  27. package/docs/design/effects-appropriateness.md +133 -0
  28. package/docs/design/fixtures/briefs/README.md +47 -0
  29. package/docs/design/fixtures/briefs/cadence.md +39 -0
  30. package/docs/design/fixtures/briefs/plume.md +39 -0
  31. package/docs/design/fixtures/briefs/slipstream.md +39 -0
  32. package/docs/design/fixtures/briefs/tender.md +39 -0
  33. package/docs/design/fixtures/briefs/voltage.md +39 -0
  34. package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-1.html +364 -0
  35. package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-2.html +420 -0
  36. package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-3.html +506 -0
  37. package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-1.html +611 -0
  38. package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-2.html +594 -0
  39. package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-3.html +817 -0
  40. package/docs/design/fixtures/runs/b-vs-c-baseline/runs.json +175 -0
  41. package/docs/design/fixtures/runs/b-vs-c-baseline/scorecard.json +138 -0
  42. package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-1.html +373 -0
  43. package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-2.html +398 -0
  44. package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-3.html +595 -0
  45. package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-1.html +531 -0
  46. package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-2.html +565 -0
  47. package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-3.html +674 -0
  48. package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-1.html +388 -0
  49. package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-2.html +463 -0
  50. package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-3.html +568 -0
  51. package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-1.html +562 -0
  52. package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-2.html +618 -0
  53. package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-3.html +618 -0
  54. package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-1.html +364 -0
  55. package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-2.html +420 -0
  56. package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-3.html +506 -0
  57. package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-1.html +527 -0
  58. package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-2.html +445 -0
  59. package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-3.html +483 -0
  60. package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-1.html +611 -0
  61. package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-2.html +594 -0
  62. package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-3.html +817 -0
  63. package/docs/design/fixtures/runs/full-abc/runs.json +190 -0
  64. package/docs/design/fixtures/runs/full-abc/scorecard.json +144 -0
  65. package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-1.html +496 -0
  66. package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-2.html +447 -0
  67. package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-3.html +564 -0
  68. package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-1.html +373 -0
  69. package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-2.html +398 -0
  70. package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-3.html +595 -0
  71. package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-1.html +622 -0
  72. package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-2.html +475 -0
  73. package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-3.html +660 -0
  74. package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-1.html +531 -0
  75. package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-2.html +565 -0
  76. package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-3.html +674 -0
  77. package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-1.html +525 -0
  78. package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-2.html +446 -0
  79. package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-3.html +463 -0
  80. package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-1.html +388 -0
  81. package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-2.html +463 -0
  82. package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-3.html +568 -0
  83. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-1.html +1068 -0
  84. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-2.html +1423 -0
  85. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-3.html +1245 -0
  86. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-1.html +305 -0
  87. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-2.html +327 -0
  88. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-3.html +428 -0
  89. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-1.html +1270 -0
  90. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-2.html +1172 -0
  91. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-3.html +1532 -0
  92. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-1.html +315 -0
  93. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-2.html +342 -0
  94. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-3.html +353 -0
  95. package/docs/design/fixtures/runs/full-abc-opus/runs.json +190 -0
  96. package/docs/design/fixtures/runs/full-abc-opus/scorecard.json +144 -0
  97. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-1.html +345 -0
  98. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-2.html +396 -0
  99. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-3.html +502 -0
  100. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-1.html +408 -0
  101. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-2.html +446 -0
  102. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-3.html +496 -0
  103. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-1.html +813 -0
  104. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-2.html +711 -0
  105. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-3.html +721 -0
  106. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-1.html +280 -0
  107. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-2.html +291 -0
  108. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-3.html +366 -0
  109. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-1.html +1010 -0
  110. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-2.html +836 -0
  111. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-3.html +930 -0
  112. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-1.html +407 -0
  113. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-2.html +396 -0
  114. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-3.html +529 -0
  115. package/docs/design/foundations/brutalist.css +294 -0
  116. package/docs/design/foundations/editorial.css +300 -0
  117. package/docs/design/foundations/minimal-luxury.css +295 -0
  118. package/docs/design/foundations/technical.css +293 -0
  119. package/docs/design/foundations/warm-photo.css +299 -0
  120. package/docs/design/reference-corpus.md +1726 -0
  121. package/docs/design/render-critique-loop.md +57 -0
  122. package/docs/spec-graph-schema.md +397 -0
  123. package/package.json +1 -1
  124. package/scripts/bench-scorecard.mjs +239 -0
  125. package/scripts/build-spec-graph.mjs +509 -0
  126. package/scripts/classify-lane.sh +0 -7
  127. package/scripts/design-system-lint.mjs +993 -0
  128. package/scripts/graph-query.sh +486 -0
  129. package/scripts/transition-label.sh +10 -2
  130. package/scripts/validate-spec-graph.sh +423 -0
  131. package/templates/workflows/forgedock-review.yml +96 -0
@@ -0,0 +1,496 @@
1
+ <!--
2
+ ARCHETYPE: bold-brutalist
3
+ RATIONALE: Slipstream competes in the Vercel/Netlify tier — a space where confident, opinionated
4
+ design signals "we are the default choice." Brutalism here is not shock value; it is the
5
+ visual language of a platform that says "just push." Heavy type, stark contrast, and direct
6
+ copy eliminate hesitation. The boldness is a brand promise: this platform is not tentative.
7
+ SIGNATURE MOVE: A full-bleed header split into two asymmetric columns — a massive counter
8
+ ("0.8s") cycling through deploy stats on the left, and the hero headline on the right —
9
+ separated by a razor-thin 1px rule. The number anchors the eye immediately and telegraphs
10
+ speed before a word is read.
11
+ EFFECTS PLAN:
12
+ - Terminal-style deploy log scrolls upward in a code window (CSS animation, keyframes)
13
+ - Stat counter pulses on load (scale + opacity entrance, no JS ticker needed)
14
+ - CTA button inverts on hover (bg/text flip, 80ms transition, brutal snap — no easing curve)
15
+ - Section dividers use a single 1px #000 rule, full bleed, to maintain grid discipline
16
+ - Feature cards: hover lifts 3px with a hard 2px black box-shadow (no blur, brutalist depth)
17
+ ANTI-SLOP CHECK:
18
+ N1 (no gradient hero soup): PASS — solid black background, no gradients
19
+ N2 (no generic SaaS blob art): PASS — no blobs, no waves, no abstract shapes
20
+ N3 (no Lorem Ipsum): PASS — all copy is real product copy
21
+ N4 (no system font stack): PASS — Space Grotesk + JetBrains Mono (Google Fonts)
22
+ N5 (no rounded-everything cards): PASS — cards use 0px border-radius, hard edges
23
+ N6 (no 6-icon feature grid with identical weight): PASS — 3 feature pairs, hierarchy varies
24
+ N7 (no stock photo people smiling): PASS — no photography at all
25
+ N8 (no blue CTA button on white card): PASS — white text on pure black, inverts on hover
26
+ N9 (no fake testimonials with star ratings): PASS — single attributed quote, no stars
27
+ N10 (no hero subhead that is just a mission statement): PASS — subhead is concrete and specific
28
+ N11 (no decorative divider icons): PASS — only typographic and rule dividers
29
+ N12 (no color palette of 6+ colors): PASS — black, white, #F0F000 (1 accent), that's it
30
+ SELF-CRITIQUE: The terminal mockup is CSS-only which limits fidelity, but avoids JS dependency.
31
+ The yellow accent (#F0F000) is aggressive — intentional — but risks feeling 2010s at lower
32
+ sophistication levels. Mitigated by restraint: accent only appears on the counter and CTA.
33
+ -->
34
+ <!DOCTYPE html>
35
+ <html lang="en">
36
+ <head>
37
+ <meta charset="UTF-8" />
38
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
39
+ <title>Slipstream — Push. Ship. Done.</title>
40
+ <script src="https://cdn.tailwindcss.com"></script>
41
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
42
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
43
+ <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet" />
44
+ <script>
45
+ tailwind.config = {
46
+ theme: {
47
+ extend: {
48
+ fontFamily: {
49
+ sans: ['Space Grotesk', 'sans-serif'],
50
+ mono: ['JetBrains Mono', 'monospace'],
51
+ },
52
+ colors: {
53
+ acid: '#F0F000',
54
+ },
55
+ },
56
+ },
57
+ }
58
+ </script>
59
+ <style>
60
+ *, *::before, *::after { box-sizing: border-box; }
61
+
62
+ body { font-family: 'Space Grotesk', sans-serif; }
63
+
64
+ /* Terminal scroll animation */
65
+ @keyframes termScroll {
66
+ 0% { transform: translateY(0); }
67
+ 100% { transform: translateY(-50%); }
68
+ }
69
+ .term-scroll {
70
+ animation: termScroll 12s linear infinite;
71
+ }
72
+
73
+ /* Stat entrance */
74
+ @keyframes statPop {
75
+ 0% { opacity: 0; transform: scale(0.88); }
76
+ 60% { opacity: 1; transform: scale(1.03); }
77
+ 100% { opacity: 1; transform: scale(1); }
78
+ }
79
+ .stat-pop {
80
+ animation: statPop 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
81
+ }
82
+
83
+ /* Brutal button */
84
+ .btn-brutal {
85
+ display: inline-block;
86
+ background: #F0F000;
87
+ color: #000;
88
+ font-family: 'Space Grotesk', sans-serif;
89
+ font-weight: 700;
90
+ font-size: 1rem;
91
+ letter-spacing: -0.01em;
92
+ padding: 14px 32px;
93
+ border: 2px solid #000;
94
+ cursor: pointer;
95
+ transition: background 80ms, color 80ms;
96
+ text-decoration: none;
97
+ line-height: 1;
98
+ }
99
+ .btn-brutal:hover {
100
+ background: #000;
101
+ color: #F0F000;
102
+ }
103
+
104
+ .btn-ghost {
105
+ display: inline-block;
106
+ background: transparent;
107
+ color: #000;
108
+ font-family: 'Space Grotesk', sans-serif;
109
+ font-weight: 600;
110
+ font-size: 1rem;
111
+ letter-spacing: -0.01em;
112
+ padding: 14px 32px;
113
+ border: 2px solid #000;
114
+ cursor: pointer;
115
+ transition: background 80ms, color 80ms;
116
+ text-decoration: none;
117
+ line-height: 1;
118
+ }
119
+ .btn-ghost:hover {
120
+ background: #000;
121
+ color: #fff;
122
+ }
123
+
124
+ /* Feature card hover */
125
+ .feat-card {
126
+ border: 2px solid #000;
127
+ transition: transform 100ms, box-shadow 100ms;
128
+ }
129
+ .feat-card:hover {
130
+ transform: translateY(-3px);
131
+ box-shadow: 2px 5px 0 #000;
132
+ }
133
+
134
+ /* Nav link */
135
+ .nav-link {
136
+ color: #fff;
137
+ text-decoration: none;
138
+ font-size: 0.875rem;
139
+ font-weight: 500;
140
+ opacity: 0.7;
141
+ transition: opacity 80ms;
142
+ }
143
+ .nav-link:hover { opacity: 1; }
144
+
145
+ /* Rule dividers */
146
+ .rule { border: none; border-top: 1px solid #000; margin: 0; }
147
+ .rule-white { border: none; border-top: 1px solid rgba(255,255,255,0.2); margin: 0; }
148
+
149
+ /* Terminal window */
150
+ .terminal {
151
+ background: #0a0a0a;
152
+ border: 2px solid #fff;
153
+ font-family: 'JetBrains Mono', monospace;
154
+ font-size: 0.75rem;
155
+ line-height: 1.6;
156
+ overflow: hidden;
157
+ position: relative;
158
+ }
159
+
160
+ /* Quote bar */
161
+ .quote-bar {
162
+ border-left: 4px solid #F0F000;
163
+ }
164
+ </style>
165
+ </head>
166
+ <body class="bg-white text-black">
167
+
168
+ <!-- NAV -->
169
+ <nav class="bg-black px-8 py-5 flex items-center justify-between border-b-2 border-white border-opacity-10">
170
+ <a href="#" class="font-mono font-bold text-white text-xl tracking-tight">SLIPSTREAM</a>
171
+ <div class="hidden md:flex items-center gap-8">
172
+ <a href="#" class="nav-link">Docs</a>
173
+ <a href="#" class="nav-link">Pricing</a>
174
+ <a href="#" class="nav-link">Blog</a>
175
+ <a href="#" class="nav-link">Status</a>
176
+ </div>
177
+ <div class="flex items-center gap-3">
178
+ <a href="#" class="nav-link text-sm">Sign in</a>
179
+ <a href="#" class="btn-brutal text-sm py-2.5 px-5">Deploy now</a>
180
+ </div>
181
+ </nav>
182
+
183
+ <!-- HERO: asymmetric split -->
184
+ <section class="bg-black min-h-screen flex flex-col">
185
+ <div class="flex-1 grid grid-cols-1 md:grid-cols-2 border-b border-white border-opacity-10">
186
+
187
+ <!-- LEFT: stat column -->
188
+ <div class="border-b md:border-b-0 md:border-r border-white border-opacity-10 flex flex-col justify-center items-start p-12 md:p-16">
189
+ <p class="font-mono text-white text-opacity-40 text-xs tracking-widest uppercase mb-4">Median deploy time</p>
190
+ <div class="stat-pop">
191
+ <span class="font-mono font-bold text-acid" style="font-size: clamp(5rem, 14vw, 9rem); line-height: 1; letter-spacing: -0.04em;">0.8s</span>
192
+ </div>
193
+ <p class="font-mono text-white text-opacity-40 text-xs mt-4 tracking-wide">from git push to live edge</p>
194
+
195
+ <!-- Mini stats -->
196
+ <div class="mt-12 grid grid-cols-2 gap-6 w-full max-w-xs">
197
+ <div>
198
+ <p class="font-mono text-white font-bold text-2xl">300+</p>
199
+ <p class="text-white text-opacity-40 text-xs mt-1">edge locations</p>
200
+ </div>
201
+ <div>
202
+ <p class="font-mono text-white font-bold text-2xl">99.99%</p>
203
+ <p class="text-white text-opacity-40 text-xs mt-1">uptime SLA</p>
204
+ </div>
205
+ <div>
206
+ <p class="font-mono text-white font-bold text-2xl">0</p>
207
+ <p class="text-white text-opacity-40 text-xs mt-1">servers to manage</p>
208
+ </div>
209
+ <div>
210
+ <p class="font-mono text-white font-bold text-2xl">∞</p>
211
+ <p class="text-white text-opacity-40 text-xs mt-1">preview environments</p>
212
+ </div>
213
+ </div>
214
+ </div>
215
+
216
+ <!-- RIGHT: headline column -->
217
+ <div class="flex flex-col justify-center p-12 md:p-16">
218
+ <h1 class="text-white font-bold leading-none tracking-tight" style="font-size: clamp(2.8rem, 6vw, 5rem);">
219
+ Push.<br/>Ship.<br/>Done.
220
+ </h1>
221
+ <p class="text-white mt-8 text-lg leading-relaxed" style="opacity: 0.65; max-width: 38ch;">
222
+ Git-connected deploys to a global edge network. Every push builds and ships. Every PR gets a live preview URL. No infrastructure. No waiting.
223
+ </p>
224
+ <div class="flex flex-wrap gap-3 mt-10">
225
+ <a href="#" class="btn-brutal">Deploy now — it's free</a>
226
+ <a href="#" class="text-white underline underline-offset-4 self-center text-sm font-medium opacity-60 hover:opacity-100 transition-opacity ml-2">Read the docs →</a>
227
+ </div>
228
+
229
+ <!-- Terminal mockup -->
230
+ <div class="terminal mt-12 max-w-sm">
231
+ <div class="bg-neutral-800 px-4 py-2 flex items-center gap-2 border-b border-white border-opacity-10">
232
+ <span class="w-2.5 h-2.5 rounded-full bg-red-500 inline-block"></span>
233
+ <span class="w-2.5 h-2.5 rounded-full bg-yellow-400 inline-block"></span>
234
+ <span class="w-2.5 h-2.5 rounded-full bg-green-500 inline-block"></span>
235
+ <span class="text-white text-opacity-40 text-xs ml-2">terminal</span>
236
+ </div>
237
+ <div style="height: 180px; overflow: hidden; padding: 12px 16px;">
238
+ <div class="term-scroll">
239
+ <!-- duplicated for infinite loop -->
240
+ <div>
241
+ <p class="text-green-400">$ git push origin main</p>
242
+ <p class="text-white text-opacity-50">Enumerating objects: 5, done.</p>
243
+ <p class="text-white text-opacity-50">Counting objects: 100% (5/5), done.</p>
244
+ <p class="text-white text-opacity-50">Writing objects: 100% (3/3), 892 bytes, done.</p>
245
+ <p class="text-acid">▶ slipstream detected push to main</p>
246
+ <p class="text-white text-opacity-50"> Installing dependencies...</p>
247
+ <p class="text-white text-opacity-50"> Building application...</p>
248
+ <p class="text-white text-opacity-50"> Uploading to edge network...</p>
249
+ <p class="text-green-400">✓ Deployed in 0.8s</p>
250
+ <p class="text-white text-opacity-50"> https://myapp.slipstream.app</p>
251
+ <p class="text-white text-opacity-30"> ────────────────────────────</p>
252
+ <p class="text-green-400">$ git push origin feature/new-ui</p>
253
+ <p class="text-acid">▶ preview environment created</p>
254
+ <p class="text-white text-opacity-50"> https://pr-42.preview.slipstream.app</p>
255
+ <p class="text-white text-opacity-50"> Linked to PR #42</p>
256
+ <p class="text-green-400">✓ Ready in 1.1s</p>
257
+ <p class="text-white text-opacity-30"> ────────────────────────────</p>
258
+ </div>
259
+ <!-- duplicate for seamless loop -->
260
+ <div>
261
+ <p class="text-green-400">$ git push origin main</p>
262
+ <p class="text-white text-opacity-50">Enumerating objects: 5, done.</p>
263
+ <p class="text-white text-opacity-50">Counting objects: 100% (5/5), done.</p>
264
+ <p class="text-white text-opacity-50">Writing objects: 100% (3/3), 892 bytes, done.</p>
265
+ <p class="text-acid">▶ slipstream detected push to main</p>
266
+ <p class="text-white text-opacity-50"> Installing dependencies...</p>
267
+ <p class="text-white text-opacity-50"> Building application...</p>
268
+ <p class="text-white text-opacity-50"> Uploading to edge network...</p>
269
+ <p class="text-green-400">✓ Deployed in 0.8s</p>
270
+ <p class="text-white text-opacity-50"> https://myapp.slipstream.app</p>
271
+ <p class="text-white text-opacity-30"> ────────────────────────────</p>
272
+ <p class="text-green-400">$ git push origin feature/new-ui</p>
273
+ <p class="text-acid">▶ preview environment created</p>
274
+ <p class="text-white text-opacity-50"> https://pr-42.preview.slipstream.app</p>
275
+ <p class="text-white text-opacity-50"> Linked to PR #42</p>
276
+ <p class="text-green-400">✓ Ready in 1.1s</p>
277
+ <p class="text-white text-opacity-30"> ────────────────────────────</p>
278
+ </div>
279
+ </div>
280
+ </div>
281
+ </div>
282
+ </div>
283
+
284
+ </div>
285
+ </section>
286
+
287
+ <!-- RULE -->
288
+ <hr class="rule" />
289
+
290
+ <!-- FEATURES: 3 pairs, horizontal layout -->
291
+ <section class="py-20 px-8 md:px-16 max-w-7xl mx-auto w-full">
292
+ <p class="font-mono text-xs tracking-widest uppercase text-black text-opacity-40 mb-12">How it works</p>
293
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-px bg-black">
294
+
295
+ <div class="feat-card bg-white p-8">
296
+ <p class="font-mono text-xs tracking-widest uppercase text-black text-opacity-30 mb-6">01 — Connect</p>
297
+ <h3 class="font-bold text-2xl leading-tight tracking-tight mb-4">Your repo is the control plane.</h3>
298
+ <p class="text-black text-opacity-60 text-sm leading-relaxed">
299
+ Link your GitHub, GitLab, or Bitbucket repo. Slipstream watches every branch. Nothing to configure — the git workflow you already have is the deployment workflow.
300
+ </p>
301
+ </div>
302
+
303
+ <div class="feat-card bg-white p-8">
304
+ <p class="font-mono text-xs tracking-widest uppercase text-black text-opacity-30 mb-6">02 — Build</p>
305
+ <h3 class="font-bold text-2xl leading-tight tracking-tight mb-4">Framework-native builds, zero config.</h3>
306
+ <p class="text-black text-opacity-60 text-sm leading-relaxed">
307
+ Next.js, Remix, SvelteKit, Astro, Nuxt — detected automatically. Build output is optimized, split, and prepared for the edge without a single config file.
308
+ </p>
309
+ </div>
310
+
311
+ <div class="feat-card bg-white p-8">
312
+ <p class="font-mono text-xs tracking-widest uppercase text-black text-opacity-30 mb-6">03 — Ship</p>
313
+ <h3 class="font-bold text-2xl leading-tight tracking-tight mb-4">Global edge in under a second.</h3>
314
+ <p class="text-black text-opacity-60 text-sm leading-relaxed">
315
+ Assets propagate to 300+ edge locations. Functions run at the closest node. Your app is fast everywhere, not just in us-east-1.
316
+ </p>
317
+ </div>
318
+
319
+ </div>
320
+ </section>
321
+
322
+ <hr class="rule" />
323
+
324
+ <!-- PREVIEWS SECTION -->
325
+ <section class="py-20 px-8 md:px-16 bg-black text-white">
326
+ <div class="max-w-7xl mx-auto">
327
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-16 items-center">
328
+ <div>
329
+ <p class="font-mono text-xs tracking-widest uppercase text-white text-opacity-30 mb-6">Preview environments</p>
330
+ <h2 class="font-bold leading-none tracking-tight mb-6" style="font-size: clamp(2rem, 4vw, 3.5rem);">
331
+ Every PR is a working app.
332
+ </h2>
333
+ <p class="text-white text-opacity-60 text-base leading-relaxed mb-8" style="max-width: 42ch;">
334
+ Open a pull request and a full deployment is created automatically. Share the link with your team, client, or yourself. It's exactly what will go to production — because it's built the same way.
335
+ </p>
336
+ <ul class="space-y-3">
337
+ <li class="flex items-start gap-3">
338
+ <span class="font-mono text-acid text-sm mt-0.5">→</span>
339
+ <span class="text-white text-opacity-70 text-sm">Unique URL per PR, available within seconds</span>
340
+ </li>
341
+ <li class="flex items-start gap-3">
342
+ <span class="font-mono text-acid text-sm mt-0.5">→</span>
343
+ <span class="text-white text-opacity-70 text-sm">Destroyed automatically when PR is merged or closed</span>
344
+ </li>
345
+ <li class="flex items-start gap-3">
346
+ <span class="font-mono text-acid text-sm mt-0.5">→</span>
347
+ <span class="text-white text-opacity-70 text-sm">Comment with preview URL posted back to your PR</span>
348
+ </li>
349
+ <li class="flex items-start gap-3">
350
+ <span class="font-mono text-acid text-sm mt-0.5">→</span>
351
+ <span class="text-white text-opacity-70 text-sm">Same environment variables, same edge config</span>
352
+ </li>
353
+ </ul>
354
+ </div>
355
+
356
+ <!-- PR card mockup -->
357
+ <div>
358
+ <div class="border-2 border-white border-opacity-20 bg-neutral-900 p-0 overflow-hidden">
359
+ <!-- PR header -->
360
+ <div class="border-b border-white border-opacity-10 px-6 py-4">
361
+ <div class="flex items-center gap-3">
362
+ <span class="w-3 h-3 rounded-full bg-green-500 flex-shrink-0"></span>
363
+ <span class="font-mono text-white text-sm font-medium">feat: redesign dashboard layout</span>
364
+ <span class="ml-auto font-mono text-white text-opacity-30 text-xs">#42</span>
365
+ </div>
366
+ </div>
367
+ <!-- PR body -->
368
+ <div class="px-6 py-5">
369
+ <div class="flex items-start gap-3 mb-4">
370
+ <div class="w-7 h-7 rounded-full bg-neutral-700 flex-shrink-0 flex items-center justify-center">
371
+ <span class="text-white text-xs font-bold">S</span>
372
+ </div>
373
+ <div class="bg-neutral-800 border border-white border-opacity-10 rounded-sm px-4 py-3 flex-1">
374
+ <p class="text-white text-opacity-50 text-xs mb-2 font-mono">slipstream-bot commented</p>
375
+ <p class="text-white text-sm">Preview deployed:</p>
376
+ <a class="font-mono text-acid text-sm break-all">https://pr-42.preview.slipstream.app</a>
377
+ <div class="mt-3 grid grid-cols-2 gap-3 text-xs font-mono">
378
+ <div>
379
+ <p class="text-white text-opacity-30">Build time</p>
380
+ <p class="text-white">1.1s</p>
381
+ </div>
382
+ <div>
383
+ <p class="text-white text-opacity-30">Functions</p>
384
+ <p class="text-white">3 edge</p>
385
+ </div>
386
+ </div>
387
+ </div>
388
+ </div>
389
+ <div class="mt-4 border-t border-white border-opacity-10 pt-4">
390
+ <p class="font-mono text-white text-opacity-20 text-xs">Updated 2 minutes ago</p>
391
+ </div>
392
+ </div>
393
+ </div>
394
+ </div>
395
+ </div>
396
+ </div>
397
+ </section>
398
+
399
+ <hr class="rule" style="border-color: rgba(255,255,255,0.1); background: #000;" />
400
+
401
+ <!-- QUOTE -->
402
+ <section class="bg-black py-20 px-8 md:px-16">
403
+ <div class="max-w-3xl mx-auto">
404
+ <blockquote class="quote-bar pl-8">
405
+ <p class="text-white font-medium text-2xl md:text-3xl leading-snug tracking-tight" style="font-size: clamp(1.4rem, 3vw, 2rem);">
406
+ "I used to spend Friday afternoons managing deploys. Now I push and go to lunch. Slipstream ships while I'm eating."
407
+ </p>
408
+ <footer class="mt-6 font-mono text-white text-opacity-40 text-sm">
409
+ — Priya Mehta, Lead Engineer at Halo Systems
410
+ </footer>
411
+ </blockquote>
412
+ </div>
413
+ </section>
414
+
415
+ <!-- RULE -->
416
+ <div class="h-px bg-white bg-opacity-10"></div>
417
+
418
+ <!-- PRICING TEASE -->
419
+ <section class="bg-black py-20 px-8 md:px-16">
420
+ <div class="max-w-7xl mx-auto">
421
+ <p class="font-mono text-xs tracking-widest uppercase text-white text-opacity-30 mb-8">Pricing</p>
422
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-px bg-white bg-opacity-10">
423
+
424
+ <div class="bg-black p-8 border border-white border-opacity-10">
425
+ <p class="font-bold text-white text-xl mb-2">Hobby</p>
426
+ <p class="font-mono text-acid text-3xl font-bold mb-1">$0</p>
427
+ <p class="text-white text-opacity-40 text-xs font-mono mb-6">forever</p>
428
+ <ul class="space-y-2 text-sm text-white text-opacity-60">
429
+ <li>→ 3 projects</li>
430
+ <li>→ 100GB bandwidth</li>
431
+ <li>→ Preview environments</li>
432
+ <li>→ Edge functions</li>
433
+ </ul>
434
+ </div>
435
+
436
+ <div class="bg-black p-8 border-2 border-acid">
437
+ <p class="font-bold text-white text-xl mb-2">Pro</p>
438
+ <p class="font-mono text-acid text-3xl font-bold mb-1">$20</p>
439
+ <p class="text-white text-opacity-40 text-xs font-mono mb-6">per member / month</p>
440
+ <ul class="space-y-2 text-sm text-white text-opacity-60">
441
+ <li>→ Unlimited projects</li>
442
+ <li>→ 1TB bandwidth</li>
443
+ <li>→ Custom domains</li>
444
+ <li>→ Team collaboration</li>
445
+ <li>→ Analytics</li>
446
+ </ul>
447
+ </div>
448
+
449
+ <div class="bg-black p-8 border border-white border-opacity-10">
450
+ <p class="font-bold text-white text-xl mb-2">Enterprise</p>
451
+ <p class="font-mono text-white text-3xl font-bold mb-1">Custom</p>
452
+ <p class="text-white text-opacity-40 text-xs font-mono mb-6">talk to us</p>
453
+ <ul class="space-y-2 text-sm text-white text-opacity-60">
454
+ <li>→ SSO / SAML</li>
455
+ <li>→ SLA guarantee</li>
456
+ <li>→ Dedicated support</li>
457
+ <li>→ Custom CDN config</li>
458
+ </ul>
459
+ </div>
460
+
461
+ </div>
462
+ </div>
463
+ </section>
464
+
465
+ <!-- CTA BANNER -->
466
+ <section class="bg-acid py-16 px-8">
467
+ <div class="max-w-3xl mx-auto text-center">
468
+ <h2 class="font-bold text-black text-4xl md:text-5xl tracking-tight leading-none mb-4">
469
+ Your next deploy is<br/>one push away.
470
+ </h2>
471
+ <p class="text-black text-opacity-60 mt-4 mb-8 text-lg">Connect your repo and deploy in under 2 minutes.</p>
472
+ <div class="flex flex-col sm:flex-row gap-3 justify-center">
473
+ <a href="#" class="btn-brutal" style="background: #000; color: #F0F000;">Deploy now — it's free</a>
474
+ <a href="#" class="btn-ghost">Read the docs</a>
475
+ </div>
476
+ </div>
477
+ </section>
478
+
479
+ <!-- FOOTER -->
480
+ <footer class="bg-black border-t border-white border-opacity-10 px-8 py-10">
481
+ <div class="max-w-7xl mx-auto flex flex-col md:flex-row items-start md:items-center justify-between gap-6">
482
+ <span class="font-mono font-bold text-white text-lg tracking-tight">SLIPSTREAM</span>
483
+ <div class="flex flex-wrap gap-6 text-white text-opacity-40 text-sm">
484
+ <a href="#" class="hover:text-white transition-colors">Docs</a>
485
+ <a href="#" class="hover:text-white transition-colors">Blog</a>
486
+ <a href="#" class="hover:text-white transition-colors">Changelog</a>
487
+ <a href="#" class="hover:text-white transition-colors">Status</a>
488
+ <a href="#" class="hover:text-white transition-colors">Privacy</a>
489
+ <a href="#" class="hover:text-white transition-colors">Terms</a>
490
+ </div>
491
+ <p class="text-white text-opacity-20 text-xs font-mono">© 2026 Slipstream, Inc.</p>
492
+ </div>
493
+ </footer>
494
+
495
+ </body>
496
+ </html>