thevoidforge 21.0.0 → 21.0.2

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.
@@ -0,0 +1,177 @@
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>VoidForge — Deploy Wizard</title>
7
+ <link rel="icon" type="image/svg+xml" href="favicon.svg">
8
+ <link rel="stylesheet" href="styles.css">
9
+ </head>
10
+ <body>
11
+ <a href="#wizard-body" class="skip-nav">Skip to main content</a>
12
+ <noscript><div class="noscript-msg">VoidForge requires JavaScript to run.</div></noscript>
13
+ <div class="wizard" id="wizard">
14
+ <header class="wizard-header">
15
+ <div class="logo">Haku — VoidForge Deploy</div>
16
+ <div class="progress" id="progress">
17
+ <div class="progress-bar" id="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" aria-label="Deploy progress"></div>
18
+ </div>
19
+ <div class="step-label" id="step-label">Step 1 of 4</div>
20
+ </header>
21
+
22
+ <main class="wizard-body" id="wizard-body">
23
+
24
+ <!-- Step 1: Unlock + Select Project -->
25
+ <section class="step" id="step-1" data-step="1" aria-labelledby="step-1-heading">
26
+ <h1 id="step-1-heading">Select Project</h1>
27
+ <p class="subtitle">Point Haku at a built VoidForge project to provision and deploy.</p>
28
+
29
+ <div class="card" id="vault-card">
30
+ <h2>Unlock Vault</h2>
31
+ <p>Haku needs your credentials to provision and deploy.</p>
32
+
33
+ <div class="field">
34
+ <label for="vault-password">Vault Password</label>
35
+ <div class="input-row">
36
+ <input type="password" id="vault-password" placeholder="Enter your vault password" autocomplete="off">
37
+ <button class="btn btn-secondary" id="toggle-vault-visibility" type="button" aria-label="Toggle password visibility">Show</button>
38
+ </div>
39
+ </div>
40
+
41
+ <div class="status-row" id="vault-status" role="status" aria-live="polite"></div>
42
+ <button class="btn btn-primary" id="unlock-vault" type="button">Unlock Vault</button>
43
+ </div>
44
+
45
+ <div class="card hidden" id="project-card">
46
+ <h2>Project Directory</h2>
47
+ <p>Point Haku at a VoidForge project that has been built with <code>/build</code>.</p>
48
+
49
+ <div class="field">
50
+ <label for="project-dir">Project Path</label>
51
+ <input type="text" id="project-dir" placeholder="/Users/you/Projects/my-app">
52
+ </div>
53
+
54
+ <div class="status-row" id="project-status" role="status" aria-live="polite"></div>
55
+ <button class="btn btn-primary" id="scan-project" type="button">Scan Project</button>
56
+ </div>
57
+ </section>
58
+
59
+ <!-- Step 2: Confirm Provisioning -->
60
+ <section class="step hidden" id="step-2" data-step="2" aria-labelledby="step-2-heading">
61
+ <h1 id="step-2-heading">Review & Configure</h1>
62
+ <p class="subtitle" id="provision-subtitle">Confirm your project details before provisioning.</p>
63
+
64
+ <div class="card" id="project-summary">
65
+ <table class="review-table">
66
+ <tbody>
67
+ <tr><td class="review-label">Project</td><td id="summary-name"></td></tr>
68
+ <tr><td class="review-label">Framework</td><td id="summary-framework"></td></tr>
69
+ <tr><td class="review-label">Database</td><td id="summary-database"></td></tr>
70
+ <tr>
71
+ <td class="review-label">Deploy Target</td>
72
+ <td>
73
+ <select id="summary-deploy-select">
74
+ <option value="docker">Docker (local)</option>
75
+ <option value="vps">AWS VPS (EC2)</option>
76
+ <option value="vercel">Vercel</option>
77
+ <option value="railway">Railway</option>
78
+ <option value="cloudflare">Cloudflare Pages</option>
79
+ <option value="static">Static (S3)</option>
80
+ </select>
81
+ </td>
82
+ </tr>
83
+ <tr>
84
+ <td class="review-label">Hostname</td>
85
+ <td>
86
+ <input type="text" id="summary-hostname" placeholder="myapp.com (optional — Cloudflare DNS)">
87
+ </td>
88
+ </tr>
89
+ <tr class="hidden" id="register-domain-row">
90
+ <td class="review-label">Register Domain</td>
91
+ <td>
92
+ <label class="checkbox-label">
93
+ <input type="checkbox" id="summary-register-domain" aria-describedby="register-domain-desc">
94
+ <span>Buy this domain via Cloudflare Registrar (~$10-15/year, non-refundable)</span>
95
+ </label>
96
+ <span id="register-domain-desc" class="sr-only">Purchasing a domain is a non-refundable annual charge billed through Cloudflare Registrar.</span>
97
+ </td>
98
+ </tr>
99
+ <tr class="hidden" id="instance-type-row">
100
+ <td class="review-label">Instance Type</td>
101
+ <td>
102
+ <select id="summary-instance-type">
103
+ <option value="t3.micro">t3.micro — 2 vCPU, 1 GiB (~$8/mo)</option>
104
+ <option value="t3.small">t3.small — 2 vCPU, 2 GiB (~$15/mo)</option>
105
+ <option value="t3.medium">t3.medium — 2 vCPU, 4 GiB (~$30/mo)</option>
106
+ <option value="t3.large">t3.large — 2 vCPU, 8 GiB (~$60/mo)</option>
107
+ </select>
108
+ </td>
109
+ </tr>
110
+ </tbody>
111
+ </table>
112
+ </div>
113
+
114
+ <div class="card" id="provision-confirm">
115
+ <p id="provision-confirm-desc"></p>
116
+ <div class="btn-row">
117
+ <button class="btn btn-primary" id="start-provision" type="button">Start Provisioning</button>
118
+ <button class="btn btn-secondary" id="back-to-project" type="button">Change Project</button>
119
+ </div>
120
+ </div>
121
+ </section>
122
+
123
+ <!-- Step 3: Provisioning Log -->
124
+ <section class="step hidden" id="step-3" data-step="3" aria-labelledby="step-3-heading">
125
+ <h1 id="step-3-heading">Provisioning</h1>
126
+ <p class="subtitle" id="provision-log-subtitle">Creating resources...</p>
127
+
128
+ <div class="card">
129
+ <div class="provision-log" id="provision-log" role="log" aria-label="Provisioning progress">
130
+ <div class="provision-empty" id="provision-empty">Opening portal...</div>
131
+ </div>
132
+ <div class="sr-only" id="provision-sr-status" role="status" aria-live="polite"></div>
133
+ </div>
134
+
135
+ <div class="btn-row hidden" id="provision-done-actions">
136
+ <button class="btn btn-primary" id="provision-next" type="button">Continue</button>
137
+ </div>
138
+
139
+ <div class="btn-row hidden" id="provision-error-actions">
140
+ <button class="btn btn-primary" id="provision-cleanup" type="button">Clean Up Resources</button>
141
+ <button class="btn btn-secondary btn-danger-ghost" id="provision-continue" type="button">Continue Without Infrastructure</button>
142
+ </div>
143
+ </section>
144
+
145
+ <!-- Step 4: Done -->
146
+ <section class="step hidden" id="step-4" data-step="4" aria-labelledby="step-4-heading">
147
+ <h1 id="step-4-heading" tabindex="-1">Deploy Complete</h1>
148
+ <p class="subtitle">Your infrastructure is provisioned and ready to ship.</p>
149
+
150
+ <div class="card success-card">
151
+ <div class="success-icon" aria-hidden="true">&#10003;</div>
152
+ <div id="done-details"></div>
153
+ </div>
154
+
155
+ <div class="card hidden" id="infra-details-card">
156
+ <h2>Infrastructure</h2>
157
+ <div id="infra-details"></div>
158
+ </div>
159
+
160
+ <div class="card">
161
+ <h2>Deploy Your App</h2>
162
+ <ol class="next-steps" id="next-steps-list">
163
+ </ol>
164
+
165
+ <div class="btn-row">
166
+ <button class="btn btn-primary" id="copy-deploy-cmd" type="button">Copy Deploy Command</button>
167
+ </div>
168
+ </div>
169
+ </section>
170
+
171
+ </main>
172
+
173
+ </div>
174
+
175
+ <script src="deploy.js"></script>
176
+ </body>
177
+ </html>