Commit de60790
The No Hands Company
feat: fh create templates, Admin tabs wired, scope enforcement, deploy.ts fix
fh create — scaffold new projects from templates (cli/src/commands/create.ts)
- 5 templates: html, vite (React+TS), astro, nextjs (static export), svelte (SvelteKit)
- Interactive template picker (falls back to html if enquirer unavailable)
- Writes all project files, runs npm install, shows next-steps guide
- Each template includes .fh/config.json with buildCommand + outputDir
- fh create my-site --template vite
- Registered in CLI, added to README
Admin page — tabs wired (Admin.tsx)
- AuditLogTab and SiteHealthTab components connected to existing API endpoints
- Tabs rendered below main admin content: Audit Log | Site Health
- AuditLogTab: paginated (25/page), actor email, action, target, IP, timestamp
- SiteHealthTab: up/degraded/down summary + per-site list, 60s auto-refresh
API token scope enforcement
- requireScope('write') applied to: PATCH/DELETE /sites/:id, POST redirects,
POST env vars, POST webhooks, PATCH visibility
- requireScope import added to 5 route files (access, redirects, envVars, webhooks, sites)
- deploy route already had requireScope('deploy') — now consistent across all writes
deploy.ts — critical syntax fix
- const environment + previewUrl declarations were inserted inside the .insert().values()
method chain (broken TypeScript that would crash at runtime)
- Fixed: declarations moved before the tx.insert() call
Staging subdomain routing (already in HEAD from background commits)
- staging.mysite.com → serves latest staging deployment for mysite.com
- preview.mysite.com → serves latest preview deployment
- previewUrl generated on staging/preview deploys: https://staging-{siteId}-v{ver}.{domain}
CLI README updated with fh create and fh watch sections1 parent b4d5eb3 commit de60790
File tree
10 files changed
+340
-8
lines changed- artifacts
- api-server/src/routes
- cli
- src
- commands
- federated-hosting/src/pages
10 files changed
+340
-8
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
| |||
138 | 139 | | |
139 | 140 | | |
140 | 141 | | |
141 | | - | |
| 142 | + | |
142 | 143 | | |
143 | 144 | | |
144 | 145 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
178 | 184 | | |
179 | 185 | | |
180 | 186 | | |
| |||
184 | 190 | | |
185 | 191 | | |
186 | 192 | | |
187 | | - | |
| 193 | + | |
| 194 | + | |
188 | 195 | | |
189 | 196 | | |
190 | 197 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
| |||
53 | 54 | | |
54 | 55 | | |
55 | 56 | | |
56 | | - | |
| 57 | + | |
57 | 58 | | |
58 | 59 | | |
59 | 60 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
| |||
68 | 69 | | |
69 | 70 | | |
70 | 71 | | |
71 | | - | |
| 72 | + | |
72 | 73 | | |
73 | 74 | | |
74 | 75 | | |
| |||
85 | 86 | | |
86 | 87 | | |
87 | 88 | | |
88 | | - | |
| 89 | + | |
89 | 90 | | |
90 | 91 | | |
91 | 92 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
| |||
100 | 101 | | |
101 | 102 | | |
102 | 103 | | |
103 | | - | |
| 104 | + | |
104 | 105 | | |
105 | 106 | | |
106 | 107 | | |
| |||
135 | 136 | | |
136 | 137 | | |
137 | 138 | | |
138 | | - | |
| 139 | + | |
139 | 140 | | |
140 | 141 | | |
141 | 142 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
| |||
34 | 35 | | |
35 | 36 | | |
36 | 37 | | |
37 | | - | |
| 38 | + | |
38 | 39 | | |
39 | 40 | | |
40 | 41 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
37 | 47 | | |
38 | 48 | | |
39 | 49 | | |
| |||
0 commit comments