forgedock 1.0.16 → 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 (190) hide show
  1. package/README.md +54 -3
  2. package/bin/cross-publish.mjs +344 -0
  3. package/bin/forgedock.mjs +2205 -541
  4. package/bin/github-app-manifest.json.license +2 -0
  5. package/bin/hooks/session-start.mjs +4 -5
  6. package/bin/registry.mjs +20 -0
  7. package/bin/tui.mjs +172 -96
  8. package/commands/adopt.md +433 -0
  9. package/commands/analytics.md +2 -0
  10. package/commands/audit-agents.md +2 -0
  11. package/commands/audit.md +2 -0
  12. package/commands/autopilot.md +77 -0
  13. package/commands/changelog.md +354 -0
  14. package/commands/cleanup.md +2 -0
  15. package/commands/compat-audit.md +330 -0
  16. package/commands/deploy-info.md +6 -5
  17. package/commands/design-bench.md +176 -0
  18. package/commands/design-render-critique-loop.md +103 -0
  19. package/commands/design.md +259 -0
  20. package/commands/diagnose.md +483 -0
  21. package/commands/explain.md +349 -0
  22. package/commands/forge-stats.md +2 -0
  23. package/commands/forgedock-init.md +2 -0
  24. package/commands/geo-audit.md +2 -0
  25. package/commands/incident-response.md +2 -0
  26. package/commands/issue.md +9 -3
  27. package/commands/milestone.md +2 -0
  28. package/commands/optimize.md +411 -0
  29. package/commands/orchestrate.md +239 -0
  30. package/commands/pipeline-health.md +60 -1
  31. package/commands/qa-sweep.md +39 -2
  32. package/commands/quality-gate.md +67 -0
  33. package/commands/replay.md +263 -0
  34. package/commands/resume.md +264 -0
  35. package/commands/review-pr-agents.md +5 -1
  36. package/commands/review-pr-staging.md +160 -2
  37. package/commands/review-pr.md +85 -3
  38. package/commands/rollback.md +2 -0
  39. package/commands/scope.md +280 -0
  40. package/commands/security-audit.md +2 -0
  41. package/commands/status.md +262 -0
  42. package/commands/sync-ecosystem.md +2 -0
  43. package/commands/test-gate.md +929 -0
  44. package/commands/validate.md +2 -0
  45. package/commands/work-on/build/architect.md +128 -18
  46. package/commands/work-on/build/context.md +130 -17
  47. package/commands/work-on/build/implement.md +7 -3
  48. package/commands/work-on/build/validate.md +2 -0
  49. package/commands/work-on/build.md +32 -7
  50. package/commands/work-on/close.md +85 -0
  51. package/commands/work-on/decompose.md +2 -0
  52. package/commands/work-on/investigate.md +30 -3
  53. package/commands/work-on/review.md +13 -1
  54. package/commands/work-on-monolithic.md +2 -0
  55. package/commands/work-on.md +676 -38
  56. package/docs/BRAND.md +51 -0
  57. package/docs/CI.md +177 -0
  58. package/docs/CONFIG.md +94 -0
  59. package/docs/FORGE-PROTOCOL.md +324 -0
  60. package/docs/articles/b-vs-c-baseline.md +210 -0
  61. package/docs/articles/full-abc-benchmark.md +205 -0
  62. package/docs/articles/per-repo-adaptive-scripts-token-savings.md +174 -0
  63. package/docs/articles/selective-spec-loading-token-savings.md +140 -0
  64. package/docs/claude-breakpoints.json +47 -0
  65. package/docs/design/abc-benchmark.md +195 -0
  66. package/docs/design/design-architect-rationale.md +123 -0
  67. package/docs/design/design-memory.md +61 -0
  68. package/docs/design/design-spec-schema.md +248 -0
  69. package/docs/design/design-system-lint.md +150 -0
  70. package/docs/design/divergent-generation.md +106 -0
  71. package/docs/design/effects-appropriateness.md +133 -0
  72. package/docs/design/fixtures/briefs/README.md +47 -0
  73. package/docs/design/fixtures/briefs/cadence.md +39 -0
  74. package/docs/design/fixtures/briefs/plume.md +39 -0
  75. package/docs/design/fixtures/briefs/slipstream.md +39 -0
  76. package/docs/design/fixtures/briefs/tender.md +39 -0
  77. package/docs/design/fixtures/briefs/voltage.md +39 -0
  78. package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-1.html +364 -0
  79. package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-2.html +420 -0
  80. package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-3.html +506 -0
  81. package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-1.html +611 -0
  82. package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-2.html +594 -0
  83. package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-3.html +817 -0
  84. package/docs/design/fixtures/runs/b-vs-c-baseline/runs.json +175 -0
  85. package/docs/design/fixtures/runs/b-vs-c-baseline/scorecard.json +138 -0
  86. package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-1.html +373 -0
  87. package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-2.html +398 -0
  88. package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-3.html +595 -0
  89. package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-1.html +531 -0
  90. package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-2.html +565 -0
  91. package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-3.html +674 -0
  92. package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-1.html +388 -0
  93. package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-2.html +463 -0
  94. package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-3.html +568 -0
  95. package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-1.html +562 -0
  96. package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-2.html +618 -0
  97. package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-3.html +618 -0
  98. package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-1.html +364 -0
  99. package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-2.html +420 -0
  100. package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-3.html +506 -0
  101. package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-1.html +527 -0
  102. package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-2.html +445 -0
  103. package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-3.html +483 -0
  104. package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-1.html +611 -0
  105. package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-2.html +594 -0
  106. package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-3.html +817 -0
  107. package/docs/design/fixtures/runs/full-abc/runs.json +190 -0
  108. package/docs/design/fixtures/runs/full-abc/scorecard.json +144 -0
  109. package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-1.html +496 -0
  110. package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-2.html +447 -0
  111. package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-3.html +564 -0
  112. package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-1.html +373 -0
  113. package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-2.html +398 -0
  114. package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-3.html +595 -0
  115. package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-1.html +622 -0
  116. package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-2.html +475 -0
  117. package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-3.html +660 -0
  118. package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-1.html +531 -0
  119. package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-2.html +565 -0
  120. package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-3.html +674 -0
  121. package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-1.html +525 -0
  122. package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-2.html +446 -0
  123. package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-3.html +463 -0
  124. package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-1.html +388 -0
  125. package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-2.html +463 -0
  126. package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-3.html +568 -0
  127. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-1.html +1068 -0
  128. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-2.html +1423 -0
  129. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-3.html +1245 -0
  130. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-1.html +305 -0
  131. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-2.html +327 -0
  132. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-3.html +428 -0
  133. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-1.html +1270 -0
  134. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-2.html +1172 -0
  135. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-3.html +1532 -0
  136. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-1.html +315 -0
  137. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-2.html +342 -0
  138. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-3.html +353 -0
  139. package/docs/design/fixtures/runs/full-abc-opus/runs.json +190 -0
  140. package/docs/design/fixtures/runs/full-abc-opus/scorecard.json +144 -0
  141. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-1.html +345 -0
  142. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-2.html +396 -0
  143. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-3.html +502 -0
  144. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-1.html +408 -0
  145. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-2.html +446 -0
  146. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-3.html +496 -0
  147. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-1.html +813 -0
  148. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-2.html +711 -0
  149. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-3.html +721 -0
  150. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-1.html +280 -0
  151. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-2.html +291 -0
  152. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-3.html +366 -0
  153. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-1.html +1010 -0
  154. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-2.html +836 -0
  155. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-3.html +930 -0
  156. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-1.html +407 -0
  157. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-2.html +396 -0
  158. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-3.html +529 -0
  159. package/docs/design/foundations/brutalist.css +294 -0
  160. package/docs/design/foundations/editorial.css +300 -0
  161. package/docs/design/foundations/minimal-luxury.css +295 -0
  162. package/docs/design/foundations/technical.css +293 -0
  163. package/docs/design/foundations/warm-photo.css +299 -0
  164. package/docs/design/reference-corpus.md +1726 -0
  165. package/docs/design/render-critique-loop.md +57 -0
  166. package/docs/site/getting-started.md +21 -0
  167. package/docs/spec-graph-schema.md +397 -0
  168. package/package.json +3 -3
  169. package/scripts/bench-scorecard.mjs +239 -0
  170. package/scripts/build-spec-graph.mjs +509 -0
  171. package/scripts/classify-lane.sh +138 -0
  172. package/scripts/design-system-lint.mjs +993 -0
  173. package/scripts/graph-query.sh +486 -0
  174. package/scripts/transition-label.sh +169 -0
  175. package/scripts/validate-pr-target.sh +30 -0
  176. package/scripts/validate-spec-graph.sh +423 -0
  177. package/templates/devdocs/README.md +72 -0
  178. package/templates/devdocs/agent/using-forgedock.md +3 -0
  179. package/templates/devdocs/agent/using-github.md +3 -0
  180. package/templates/devdocs/index.yaml +162 -0
  181. package/templates/devdocs/project/architecture.md +3 -0
  182. package/templates/devdocs/project/conventions.md +3 -0
  183. package/templates/devdocs/project/custom-instructions.md +3 -0
  184. package/templates/devdocs/project/glossary.md +3 -0
  185. package/templates/devdocs/project/stack.md +3 -0
  186. package/templates/devdocs/templates/commit-convention.md +3 -0
  187. package/templates/devdocs/templates/issue.md +3 -0
  188. package/templates/devdocs/templates/pull-request.md +3 -0
  189. package/templates/devdocs/templates/review-finding.md +3 -0
  190. package/templates/workflows/forgedock-review.yml +96 -0
@@ -0,0 +1,408 @@
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>Slipstream - Push to deploy. Everywhere.</title>
7
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
8
+ <style>
9
+ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
10
+
11
+ :root {
12
+ --bg: #09090b;
13
+ --surface: #131316;
14
+ --border: #1e1e24;
15
+ --text: #fafafa;
16
+ --text-secondary: #a1a1aa;
17
+ --accent: #3b82f6;
18
+ --accent-dim: #1d4ed8;
19
+ --green: #22c55e;
20
+ }
21
+
22
+ body {
23
+ font-family: 'Inter', -apple-system, sans-serif;
24
+ background: var(--bg);
25
+ color: var(--text);
26
+ line-height: 1.6;
27
+ -webkit-font-smoothing: antialiased;
28
+ }
29
+
30
+ /* Nav */
31
+ nav {
32
+ position: fixed; top: 0; left: 0; right: 0; z-index: 100;
33
+ padding: 0 48px;
34
+ height: 64px;
35
+ display: flex; align-items: center; justify-content: space-between;
36
+ background: rgba(9,9,11,0.8);
37
+ backdrop-filter: blur(16px);
38
+ border-bottom: 1px solid var(--border);
39
+ }
40
+ .nav-logo {
41
+ font-size: 18px; font-weight: 700; letter-spacing: -0.5px;
42
+ color: var(--text);
43
+ }
44
+ .nav-links { display: flex; gap: 32px; align-items: center; }
45
+ .nav-links a {
46
+ color: var(--text-secondary); text-decoration: none; font-size: 14px; font-weight: 500;
47
+ transition: color 0.15s;
48
+ }
49
+ .nav-links a:hover { color: var(--text); }
50
+ .nav-cta {
51
+ background: var(--text) !important; color: var(--bg) !important;
52
+ padding: 8px 20px; border-radius: 6px; font-weight: 600 !important;
53
+ font-size: 13px !important;
54
+ }
55
+ .nav-cta:hover { opacity: 0.9; }
56
+
57
+ /* Hero */
58
+ .hero {
59
+ padding: 180px 48px 120px;
60
+ max-width: 1440px; margin: 0 auto;
61
+ text-align: center;
62
+ }
63
+ .hero-badge {
64
+ display: inline-block;
65
+ padding: 6px 16px;
66
+ background: rgba(59,130,246,0.1);
67
+ border: 1px solid rgba(59,130,246,0.2);
68
+ border-radius: 100px;
69
+ font-size: 13px; font-weight: 500;
70
+ color: var(--accent);
71
+ margin-bottom: 32px;
72
+ }
73
+ .hero h1 {
74
+ font-size: 72px; font-weight: 800;
75
+ letter-spacing: -3px; line-height: 1.05;
76
+ max-width: 800px; margin: 0 auto 24px;
77
+ }
78
+ .hero h1 span { color: var(--text-secondary); }
79
+ .hero p {
80
+ font-size: 20px; color: var(--text-secondary);
81
+ max-width: 560px; margin: 0 auto 48px;
82
+ line-height: 1.6;
83
+ }
84
+ .hero-actions { display: flex; gap: 16px; justify-content: center; }
85
+ .btn-primary {
86
+ padding: 14px 32px; border-radius: 8px;
87
+ background: var(--text); color: var(--bg);
88
+ font-size: 15px; font-weight: 600;
89
+ text-decoration: none; border: none; cursor: pointer;
90
+ transition: opacity 0.15s;
91
+ }
92
+ .btn-primary:hover { opacity: 0.9; }
93
+ .btn-secondary {
94
+ padding: 14px 32px; border-radius: 8px;
95
+ background: transparent; color: var(--text);
96
+ font-size: 15px; font-weight: 600;
97
+ text-decoration: none; border: 1px solid var(--border);
98
+ transition: border-color 0.15s;
99
+ }
100
+ .btn-secondary:hover { border-color: var(--text-secondary); }
101
+
102
+ /* Terminal */
103
+ .terminal-section {
104
+ padding: 0 48px 120px;
105
+ max-width: 880px; margin: 0 auto;
106
+ }
107
+ .terminal {
108
+ background: var(--surface);
109
+ border: 1px solid var(--border);
110
+ border-radius: 12px;
111
+ overflow: hidden;
112
+ }
113
+ .terminal-bar {
114
+ display: flex; align-items: center; gap: 8px;
115
+ padding: 14px 20px;
116
+ border-bottom: 1px solid var(--border);
117
+ }
118
+ .terminal-dot {
119
+ width: 12px; height: 12px; border-radius: 50%;
120
+ background: var(--border);
121
+ }
122
+ .terminal-body {
123
+ padding: 24px; font-family: 'JetBrains Mono', monospace;
124
+ font-size: 14px; line-height: 1.8;
125
+ }
126
+ .terminal-body .prompt { color: var(--text-secondary); }
127
+ .terminal-body .cmd { color: var(--text); }
128
+ .terminal-body .output { color: var(--text-secondary); }
129
+ .terminal-body .success { color: var(--green); }
130
+ .terminal-body .url { color: var(--accent); }
131
+
132
+ /* Features grid */
133
+ .features {
134
+ padding: 120px 48px;
135
+ max-width: 1200px; margin: 0 auto;
136
+ }
137
+ .features-header {
138
+ text-align: center; margin-bottom: 80px;
139
+ }
140
+ .features-header h2 {
141
+ font-size: 40px; font-weight: 700; letter-spacing: -1.5px;
142
+ margin-bottom: 16px;
143
+ }
144
+ .features-header p {
145
+ color: var(--text-secondary); font-size: 18px;
146
+ max-width: 500px; margin: 0 auto;
147
+ }
148
+ .features-grid {
149
+ display: grid;
150
+ grid-template-columns: repeat(3, 1fr);
151
+ gap: 1px;
152
+ background: var(--border);
153
+ border: 1px solid var(--border);
154
+ border-radius: 12px;
155
+ overflow: hidden;
156
+ }
157
+ .feature-card {
158
+ background: var(--surface);
159
+ padding: 48px 40px;
160
+ }
161
+ .feature-card h3 {
162
+ font-size: 17px; font-weight: 600;
163
+ margin-bottom: 12px;
164
+ }
165
+ .feature-card p {
166
+ color: var(--text-secondary); font-size: 14px;
167
+ line-height: 1.7;
168
+ }
169
+ .feature-icon {
170
+ width: 40px; height: 40px;
171
+ border-radius: 8px;
172
+ background: rgba(59,130,246,0.1);
173
+ display: flex; align-items: center; justify-content: center;
174
+ margin-bottom: 20px;
175
+ font-size: 18px;
176
+ }
177
+
178
+ /* How it works */
179
+ .how-it-works {
180
+ padding: 120px 48px;
181
+ max-width: 1200px; margin: 0 auto;
182
+ border-top: 1px solid var(--border);
183
+ }
184
+ .how-header {
185
+ text-align: center; margin-bottom: 80px;
186
+ }
187
+ .how-header h2 {
188
+ font-size: 40px; font-weight: 700; letter-spacing: -1.5px;
189
+ margin-bottom: 16px;
190
+ }
191
+ .how-header p { color: var(--text-secondary); font-size: 18px; }
192
+ .steps {
193
+ display: grid; grid-template-columns: repeat(3, 1fr);
194
+ gap: 48px;
195
+ }
196
+ .step-number {
197
+ font-family: 'JetBrains Mono', monospace;
198
+ font-size: 13px; font-weight: 500;
199
+ color: var(--accent);
200
+ margin-bottom: 16px;
201
+ display: block;
202
+ }
203
+ .step h3 {
204
+ font-size: 20px; font-weight: 600; margin-bottom: 12px;
205
+ }
206
+ .step p {
207
+ color: var(--text-secondary); font-size: 15px; line-height: 1.7;
208
+ }
209
+
210
+ /* Frameworks */
211
+ .frameworks {
212
+ padding: 120px 48px;
213
+ max-width: 1200px; margin: 0 auto;
214
+ border-top: 1px solid var(--border);
215
+ text-align: center;
216
+ }
217
+ .frameworks h2 {
218
+ font-size: 40px; font-weight: 700; letter-spacing: -1.5px;
219
+ margin-bottom: 16px;
220
+ }
221
+ .frameworks > p {
222
+ color: var(--text-secondary); font-size: 18px;
223
+ margin-bottom: 48px;
224
+ }
225
+ .framework-list {
226
+ display: flex; gap: 24px; justify-content: center; flex-wrap: wrap;
227
+ }
228
+ .framework-tag {
229
+ padding: 12px 28px;
230
+ background: var(--surface);
231
+ border: 1px solid var(--border);
232
+ border-radius: 8px;
233
+ font-size: 15px; font-weight: 500;
234
+ color: var(--text-secondary);
235
+ }
236
+
237
+ /* CTA */
238
+ .cta-section {
239
+ padding: 120px 48px;
240
+ max-width: 1200px; margin: 0 auto;
241
+ text-align: center;
242
+ border-top: 1px solid var(--border);
243
+ }
244
+ .cta-section h2 {
245
+ font-size: 48px; font-weight: 800; letter-spacing: -2px;
246
+ margin-bottom: 16px;
247
+ }
248
+ .cta-section p {
249
+ color: var(--text-secondary); font-size: 18px;
250
+ margin-bottom: 40px;
251
+ }
252
+
253
+ /* Footer */
254
+ footer {
255
+ padding: 48px;
256
+ border-top: 1px solid var(--border);
257
+ display: flex; justify-content: space-between; align-items: center;
258
+ max-width: 1440px; margin: 0 auto;
259
+ }
260
+ footer span { color: var(--text-secondary); font-size: 13px; }
261
+ .footer-links { display: flex; gap: 24px; }
262
+ .footer-links a {
263
+ color: var(--text-secondary); font-size: 13px;
264
+ text-decoration: none;
265
+ }
266
+ .footer-links a:hover { color: var(--text); }
267
+ </style>
268
+ </head>
269
+ <body>
270
+
271
+ <nav>
272
+ <div class="nav-logo">slipstream</div>
273
+ <div class="nav-links">
274
+ <a href="#">Features</a>
275
+ <a href="#">Docs</a>
276
+ <a href="#">Pricing</a>
277
+ <a href="#">Blog</a>
278
+ <a href="#" class="nav-cta">Deploy now</a>
279
+ </div>
280
+ </nav>
281
+
282
+ <section class="hero">
283
+ <div class="hero-badge">Now generally available</div>
284
+ <h1>Push code. <span>Ship globally.</span></h1>
285
+ <p>Connect your repository. Every push builds, deploys, and delivers to the edge. No servers. No configuration. Just your code, running everywhere.</p>
286
+ <div class="hero-actions">
287
+ <a href="#" class="btn-primary">Start for free</a>
288
+ <a href="#" class="btn-secondary">Read the docs</a>
289
+ </div>
290
+ </section>
291
+
292
+ <section class="terminal-section">
293
+ <div class="terminal">
294
+ <div class="terminal-bar">
295
+ <div class="terminal-dot"></div>
296
+ <div class="terminal-dot"></div>
297
+ <div class="terminal-dot"></div>
298
+ </div>
299
+ <div class="terminal-body">
300
+ <div><span class="prompt">$</span> <span class="cmd">git push origin main</span></div>
301
+ <div class="output">Enumerating objects: 14, done.</div>
302
+ <div class="output">Writing objects: 100% (14/14), done.</div>
303
+ <div>&nbsp;</div>
304
+ <div class="success">&#10003; Build completed in 8.2s</div>
305
+ <div class="success">&#10003; Deployed to 94 edge locations</div>
306
+ <div class="success">&#10003; SSL provisioned automatically</div>
307
+ <div>&nbsp;</div>
308
+ <div><span class="output">Live at</span> <span class="url">https://your-app.slipstream.app</span></div>
309
+ </div>
310
+ </div>
311
+ </section>
312
+
313
+ <section class="features">
314
+ <div class="features-header">
315
+ <h2>Everything you need, nothing you don't</h2>
316
+ <p>A complete deployment platform. No moving parts to manage.</p>
317
+ </div>
318
+ <div class="features-grid">
319
+ <div class="feature-card">
320
+ <div class="feature-icon">&#9889;</div>
321
+ <h3>Instant deploys</h3>
322
+ <p>Push to any branch and get a live URL within seconds. Production deploys happen on merge to main. No build queues.</p>
323
+ </div>
324
+ <div class="feature-card">
325
+ <div class="feature-icon">&#128065;</div>
326
+ <h3>Preview environments</h3>
327
+ <p>Every pull request gets a unique deployment. Review running code, not diffs. Share the URL with your team or stakeholders.</p>
328
+ </div>
329
+ <div class="feature-card">
330
+ <div class="feature-icon">&#127758;</div>
331
+ <h3>Global edge network</h3>
332
+ <p>Your application runs on 94 edge locations across 6 continents. Static assets served from CDN. Dynamic routes computed at the edge.</p>
333
+ </div>
334
+ <div class="feature-card">
335
+ <div class="feature-icon">&#9881;</div>
336
+ <h3>Serverless functions</h3>
337
+ <p>Write backend logic as functions. They deploy alongside your frontend, scale to zero, and run close to your users. No cold starts.</p>
338
+ </div>
339
+ <div class="feature-card">
340
+ <div class="feature-icon">&#128101;</div>
341
+ <h3>Team collaboration</h3>
342
+ <p>Comments on deployments, deploy notifications, branch protection rules. Everyone on the team sees what shipped and when.</p>
343
+ </div>
344
+ <div class="feature-card">
345
+ <div class="feature-icon">&#128274;</div>
346
+ <h3>Automatic HTTPS</h3>
347
+ <p>SSL certificates provisioned and renewed for every domain. Custom domains configured in seconds, not hours. Zero maintenance.</p>
348
+ </div>
349
+ </div>
350
+ </section>
351
+
352
+ <section class="how-it-works">
353
+ <div class="how-header">
354
+ <h2>Three steps. That's it.</h2>
355
+ <p>From repository to production in under a minute.</p>
356
+ </div>
357
+ <div class="steps">
358
+ <div class="step">
359
+ <span class="step-number">01</span>
360
+ <h3>Connect your repo</h3>
361
+ <p>Import from GitHub, GitLab, or Bitbucket. Slipstream detects your framework and configures the build automatically.</p>
362
+ </div>
363
+ <div class="step">
364
+ <span class="step-number">02</span>
365
+ <h3>Push your code</h3>
366
+ <p>Every push triggers a build. Every pull request creates a preview environment. Production deploys on merge to your main branch.</p>
367
+ </div>
368
+ <div class="step">
369
+ <span class="step-number">03</span>
370
+ <h3>Ship globally</h3>
371
+ <p>Your application is distributed to the edge network. CDN, SSL, and DNS are configured automatically. You write code, we handle the rest.</p>
372
+ </div>
373
+ </div>
374
+ </section>
375
+
376
+ <section class="frameworks">
377
+ <h2>Built for modern frameworks</h2>
378
+ <p>First-class support for the tools you already use.</p>
379
+ <div class="framework-list">
380
+ <div class="framework-tag">Next.js</div>
381
+ <div class="framework-tag">Remix</div>
382
+ <div class="framework-tag">Astro</div>
383
+ <div class="framework-tag">SvelteKit</div>
384
+ <div class="framework-tag">Nuxt</div>
385
+ <div class="framework-tag">Vite</div>
386
+ <div class="framework-tag">Gatsby</div>
387
+ <div class="framework-tag">Angular</div>
388
+ </div>
389
+ </section>
390
+
391
+ <section class="cta-section">
392
+ <h2>Your code deserves better infrastructure.</h2>
393
+ <p>Start deploying in under a minute. Free for personal projects.</p>
394
+ <a href="#" class="btn-primary">Deploy now</a>
395
+ </section>
396
+
397
+ <footer>
398
+ <span>&copy; 2026 Slipstream. All rights reserved.</span>
399
+ <div class="footer-links">
400
+ <a href="#">Privacy</a>
401
+ <a href="#">Terms</a>
402
+ <a href="#">Status</a>
403
+ <a href="#">GitHub</a>
404
+ </div>
405
+ </footer>
406
+
407
+ </body>
408
+ </html>