Monorepo for wisp.place. A static site hosting service built on top of the AT Protocol. wisp.place

sigh

Changed files
+241 -210
public
editor
tabs
-7
.prettierrc
··· 1 - { 2 - "useTabs": true, 3 - "tabWidth": 4, 4 - "semi": false, 5 - "singleQuote": true, 6 - "trailingComma": "none" 7 - }
+241 -203
public/editor/tabs/CLITab.tsx
··· 1 1 import { 2 - Card, 3 - CardContent, 4 - CardDescription, 5 - CardHeader, 6 - CardTitle 7 - } from '@public/components/ui/card' 8 - import { Badge } from '@public/components/ui/badge' 9 - import { ExternalLink } from 'lucide-react' 10 - import { CodeBlock } from '@public/components/ui/code-block' 2 + Card, 3 + CardContent, 4 + CardDescription, 5 + CardHeader, 6 + CardTitle, 7 + } from "@public/components/ui/card"; 8 + import { Badge } from "@public/components/ui/badge"; 9 + import { ExternalLink } from "lucide-react"; 10 + import { CodeBlock } from "@public/components/ui/code-block"; 11 11 12 12 export function CLITab() { 13 - return ( 14 - <div className="space-y-4 min-h-[400px]"> 15 - <Card> 16 - <CardHeader> 17 - <div className="flex items-center gap-2 mb-2"> 18 - <CardTitle>Wisp CLI Tool</CardTitle> 19 - <Badge variant="secondary" className="text-xs">v0.2.0</Badge> 20 - <Badge variant="outline" className="text-xs">Alpha</Badge> 21 - </div> 22 - <CardDescription> 23 - Deploy static sites directly from your terminal 24 - </CardDescription> 25 - </CardHeader> 26 - <CardContent className="space-y-6"> 27 - <div className="prose prose-sm max-w-none dark:prose-invert"> 28 - <p className="text-sm text-muted-foreground"> 29 - The Wisp CLI is a command-line tool for deploying static websites directly to your AT Protocol account. 30 - Authenticate with app password or OAuth and deploy from CI/CD pipelines. 31 - </p> 32 - </div> 13 + return ( 14 + <div className="space-y-4 min-h-[400px]"> 15 + <Card> 16 + <CardHeader> 17 + <div className="flex items-center gap-2 mb-2"> 18 + <CardTitle>Wisp CLI Tool</CardTitle> 19 + <Badge variant="secondary" className="text-xs"> 20 + v0.2.0 21 + </Badge> 22 + <Badge variant="outline" className="text-xs"> 23 + Alpha 24 + </Badge> 25 + </div> 26 + <CardDescription> 27 + Deploy static sites directly from your terminal 28 + </CardDescription> 29 + </CardHeader> 30 + <CardContent className="space-y-6"> 31 + <div className="prose prose-sm max-w-none dark:prose-invert"> 32 + <p className="text-sm text-muted-foreground"> 33 + The Wisp CLI is a command-line tool for deploying static websites 34 + directly to your AT Protocol account. Authenticate with app 35 + password or OAuth and deploy from CI/CD pipelines. 36 + </p> 37 + </div> 33 38 34 - <div className="space-y-3"> 35 - <h3 className="text-sm font-semibold">Features</h3> 36 - <ul className="text-sm text-muted-foreground space-y-2 list-disc list-inside"> 37 - <li><strong>Deploy:</strong> Push static sites directly from your terminal</li> 38 - <li><strong>Pull:</strong> Download sites from the PDS for development or backup</li> 39 - <li><strong>Serve:</strong> Run a local server with real-time firehose updates</li> 40 - </ul> 41 - </div> 39 + <div className="space-y-3"> 40 + <h3 className="text-sm font-semibold">Features</h3> 41 + <ul className="text-sm text-muted-foreground space-y-2 list-disc list-inside"> 42 + <li> 43 + <strong>Deploy:</strong> Push static sites directly from your 44 + terminal 45 + </li> 46 + <li> 47 + <strong>Pull:</strong> Download sites from the PDS for 48 + development or backup 49 + </li> 50 + <li> 51 + <strong>Serve:</strong> Run a local server with real-time 52 + firehose updates 53 + </li> 54 + </ul> 55 + </div> 42 56 43 - <div className="space-y-3"> 44 - <h3 className="text-sm font-semibold">Download v0.2.0</h3> 45 - <div className="grid gap-2"> 46 - <div className="p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border"> 47 - <a 48 - href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-darwin" 49 - target="_blank" 50 - rel="noopener noreferrer" 51 - className="flex items-center justify-between mb-2" 52 - > 53 - <span className="font-mono text-sm">macOS (Apple Silicon)</span> 54 - <ExternalLink className="w-4 h-4 text-muted-foreground" /> 55 - </a> 56 - <div className="text-xs text-muted-foreground"> 57 - <span className="font-mono">SHA-1: a8c27ea41c5e2672bfecb3476ece1c801741d759</span> 58 - </div> 59 - </div> 60 - <div className="p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border"> 61 - <a 62 - href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-linux" 63 - target="_blank" 64 - rel="noopener noreferrer" 65 - className="flex items-center justify-between mb-2" 66 - > 67 - <span className="font-mono text-sm">Linux (ARM64)</span> 68 - <ExternalLink className="w-4 h-4 text-muted-foreground" /> 69 - </a> 70 - <div className="text-xs text-muted-foreground"> 71 - <span className="font-mono">SHA-1: fd7ee689c7600fc953179ea755b0357c8481a622</span> 72 - </div> 73 - </div> 74 - <div className="p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border"> 75 - <a 76 - href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-linux" 77 - target="_blank" 78 - rel="noopener noreferrer" 79 - className="flex items-center justify-between mb-2" 80 - > 81 - <span className="font-mono text-sm">Linux (x86_64)</span> 82 - <ExternalLink className="w-4 h-4 text-muted-foreground" /> 83 - </a> 84 - <div className="text-xs text-muted-foreground"> 85 - <span className="font-mono">SHA-1: 8bca6992559e19e1d29ab3d2fcc6d09b28e5a485</span> 86 - </div> 87 - </div> 88 - <div className="p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border"> 89 - <a 90 - href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-windows.exe" 91 - target="_blank" 92 - rel="noopener noreferrer" 93 - className="flex items-center justify-between mb-2" 94 - > 95 - <span className="font-mono text-sm">Windows (x86_64)</span> 96 - <ExternalLink className="w-4 h-4 text-muted-foreground" /> 97 - </a> 98 - <div className="text-xs text-muted-foreground"> 99 - <span className="font-mono">SHA-1: 90ea3987a06597fa6c42e1df9009e9758e92dd54</span> 100 - </div> 101 - </div> 102 - </div> 103 - </div> 57 + <div className="space-y-3"> 58 + <h3 className="text-sm font-semibold">Download v0.2.0</h3> 59 + <div className="grid gap-2"> 60 + <div className="p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border"> 61 + <a 62 + href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-darwin" 63 + target="_blank" 64 + rel="noopener noreferrer" 65 + className="flex items-center justify-between mb-2" 66 + > 67 + <span className="font-mono text-sm"> 68 + macOS (Apple Silicon) 69 + </span> 70 + <ExternalLink className="w-4 h-4 text-muted-foreground" /> 71 + </a> 72 + <div className="text-xs text-muted-foreground"> 73 + <span className="font-mono"> 74 + SHA-1: 9281454860f2eb07b39b80f7a9cc8e9bdcff491b 75 + </span> 76 + </div> 77 + </div> 78 + <div className="p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border"> 79 + <a 80 + href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-linux" 81 + target="_blank" 82 + rel="noopener noreferrer" 83 + className="flex items-center justify-between mb-2" 84 + > 85 + <span className="font-mono text-sm">Linux (ARM64)</span> 86 + <ExternalLink className="w-4 h-4 text-muted-foreground" /> 87 + </a> 88 + <div className="text-xs text-muted-foreground"> 89 + <span className="font-mono"> 90 + SHA-1: d460863150c4c162b7e7e3801a67746da3aaf9d9 91 + </span> 92 + </div> 93 + </div> 94 + <div className="p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border"> 95 + <a 96 + href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-linux" 97 + target="_blank" 98 + rel="noopener noreferrer" 99 + className="flex items-center justify-between mb-2" 100 + > 101 + <span className="font-mono text-sm">Linux (x86_64)</span> 102 + <ExternalLink className="w-4 h-4 text-muted-foreground" /> 103 + </a> 104 + <div className="text-xs text-muted-foreground"> 105 + <span className="font-mono"> 106 + SHA-1: 94968abed20422df826b78c38cb506dd4b1b5885 107 + </span> 108 + </div> 109 + </div> 110 + <div className="p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border"> 111 + <a 112 + href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-windows.exe" 113 + target="_blank" 114 + rel="noopener noreferrer" 115 + className="flex items-center justify-between mb-2" 116 + > 117 + <span className="font-mono text-sm">Windows (x86_64)</span> 118 + <ExternalLink className="w-4 h-4 text-muted-foreground" /> 119 + </a> 120 + <div className="text-xs text-muted-foreground"> 121 + <span className="font-mono"> 122 + SHA-1: 45293e47da38b97ef35258a08cb2682eee64a659 123 + </span> 124 + </div> 125 + </div> 126 + </div> 127 + </div> 104 128 105 - <div className="space-y-3"> 106 - <h3 className="text-sm font-semibold">Deploy a Site</h3> 107 - <CodeBlock 108 - code={`# Download and make executable 129 + <div className="space-y-3"> 130 + <h3 className="text-sm font-semibold">Deploy a Site</h3> 131 + <CodeBlock 132 + code={`# Download and make executable 109 133 curl -O https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-darwin 110 134 chmod +x wisp-cli-aarch64-darwin 111 135 ··· 117 141 118 142 # Your site will be available at: 119 143 # https://sites.wisp.place/your-handle/my-site`} 120 - language="bash" 121 - /> 122 - </div> 144 + language="bash" 145 + /> 146 + </div> 123 147 124 - <div className="space-y-3"> 125 - <h3 className="text-sm font-semibold">Pull a Site from PDS</h3> 126 - <p className="text-xs text-muted-foreground"> 127 - Download a site from the PDS to your local machine (uses OAuth authentication): 128 - </p> 129 - <CodeBlock 130 - code={`# Pull a site to a specific directory 148 + <div className="space-y-3"> 149 + <h3 className="text-sm font-semibold">Pull a Site from PDS</h3> 150 + <p className="text-xs text-muted-foreground"> 151 + Download a site from the PDS to your local machine (uses OAuth 152 + authentication): 153 + </p> 154 + <CodeBlock 155 + code={`# Pull a site to a specific directory 131 156 wisp-cli pull your-handle.bsky.social \\ 132 157 --site my-site \\ 133 158 --output ./my-site ··· 137 162 --site my-site 138 163 139 164 # Opens browser for OAuth authentication on first run`} 140 - language="bash" 141 - /> 142 - </div> 165 + language="bash" 166 + /> 167 + </div> 143 168 144 - <div className="space-y-3"> 145 - <h3 className="text-sm font-semibold">Serve a Site Locally with Real-Time Updates</h3> 146 - <p className="text-xs text-muted-foreground"> 147 - Run a local server that monitors the firehose for real-time updates (uses OAuth authentication): 148 - </p> 149 - <CodeBlock 150 - code={`# Serve on http://localhost:8080 (default) 169 + <div className="space-y-3"> 170 + <h3 className="text-sm font-semibold"> 171 + Serve a Site Locally with Real-Time Updates 172 + </h3> 173 + <p className="text-xs text-muted-foreground"> 174 + Run a local server that monitors the firehose for real-time 175 + updates (uses OAuth authentication): 176 + </p> 177 + <CodeBlock 178 + code={`# Serve on http://localhost:8080 (default) 151 179 wisp-cli serve your-handle.bsky.social \\ 152 180 --site my-site 153 181 ··· 157 185 --port 3000 158 186 159 187 # Downloads site, serves it, and watches firehose for live updates!`} 160 - language="bash" 161 - /> 162 - </div> 188 + language="bash" 189 + /> 190 + </div> 163 191 164 - <div className="space-y-3"> 165 - <h3 className="text-sm font-semibold">CI/CD with Tangled Spindle</h3> 166 - <p className="text-xs text-muted-foreground"> 167 - Deploy automatically on every push using{' '} 168 - <a 169 - href="https://blog.tangled.org/ci" 170 - target="_blank" 171 - rel="noopener noreferrer" 172 - className="text-accent hover:underline" 173 - > 174 - Tangled Spindle 175 - </a> 176 - </p> 192 + <div className="space-y-3"> 193 + <h3 className="text-sm font-semibold"> 194 + CI/CD with Tangled Spindle 195 + </h3> 196 + <p className="text-xs text-muted-foreground"> 197 + Deploy automatically on every push using{" "} 198 + <a 199 + href="https://blog.tangled.org/ci" 200 + target="_blank" 201 + rel="noopener noreferrer" 202 + className="text-accent hover:underline" 203 + > 204 + Tangled Spindle 205 + </a> 206 + </p> 177 207 178 - <div className="space-y-4"> 179 - <div> 180 - <h4 className="text-xs font-semibold mb-2 flex items-center gap-2"> 181 - <span>Example 1: Simple Asset Publishing</span> 182 - <Badge variant="secondary" className="text-xs">Copy Files</Badge> 183 - </h4> 184 - <CodeBlock 185 - code={`when: 208 + <div className="space-y-4"> 209 + <div> 210 + <h4 className="text-xs font-semibold mb-2 flex items-center gap-2"> 211 + <span>Example 1: Simple Asset Publishing</span> 212 + <Badge variant="secondary" className="text-xs"> 213 + Copy Files 214 + </Badge> 215 + </h4> 216 + <CodeBlock 217 + code={`when: 186 218 - event: ['push'] 187 219 branch: ['main'] 188 220 - event: ['manual'] ··· 221 253 #Deployed site 'myWebbedSite': at://did:plc:ttdrpj45ibqunmfhdsb4zdwq/place.wisp.fs/myWebbedSite 222 254 #Available at: https://sites.wisp.place/did:plc:ttdrpj45ibqunmfhdsb4zdwq/myWebbedSite 223 255 `} 224 - language="yaml" 225 - /> 226 - </div> 256 + language="yaml" 257 + /> 258 + </div> 227 259 228 - <div> 229 - <h4 className="text-xs font-semibold mb-2 flex items-center gap-2"> 230 - <span>Example 2: React/Vite Build & Deploy</span> 231 - <Badge variant="secondary" className="text-xs">Full Build</Badge> 232 - </h4> 233 - <CodeBlock 234 - code={`when: 260 + <div> 261 + <h4 className="text-xs font-semibold mb-2 flex items-center gap-2"> 262 + <span>Example 2: React/Vite Build & Deploy</span> 263 + <Badge variant="secondary" className="text-xs"> 264 + Full Build 265 + </Badge> 266 + </h4> 267 + <CodeBlock 268 + code={`when: 235 269 - event: ['push'] 236 270 branch: ['main'] 237 271 - event: ['manual'] ··· 279 313 --path "$SITE_PATH" \\ 280 314 --site "$SITE_NAME" \\ 281 315 --password "$WISP_APP_PASSWORD"`} 282 - language="yaml" 283 - /> 284 - </div> 285 - </div> 316 + language="yaml" 317 + /> 318 + </div> 319 + </div> 286 320 287 - <div className="p-3 bg-muted/30 rounded-lg border-l-4 border-accent"> 288 - <p className="text-xs text-muted-foreground"> 289 - <strong className="text-foreground">Note:</strong> Set <code className="px-1.5 py-0.5 bg-background rounded text-xs">WISP_APP_PASSWORD</code> as a secret in your Tangled Spindle repository settings. 290 - Generate an app password from your AT Protocol account settings. 291 - </p> 292 - </div> 293 - </div> 321 + <div className="p-3 bg-muted/30 rounded-lg border-l-4 border-accent"> 322 + <p className="text-xs text-muted-foreground"> 323 + <strong className="text-foreground">Note:</strong> Set{" "} 324 + <code className="px-1.5 py-0.5 bg-background rounded text-xs"> 325 + WISP_APP_PASSWORD 326 + </code>{" "} 327 + as a secret in your Tangled Spindle repository settings. 328 + Generate an app password from your AT Protocol account settings. 329 + </p> 330 + </div> 331 + </div> 294 332 295 - <div className="space-y-3"> 296 - <h3 className="text-sm font-semibold">Learn More</h3> 297 - <div className="grid gap-2"> 298 - <a 299 - href="https://docs.wisp.place/cli" 300 - target="_blank" 301 - rel="noopener noreferrer" 302 - className="flex items-center justify-between p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border" 303 - > 304 - <span className="text-sm">CLI Documentation</span> 305 - <ExternalLink className="w-4 h-4 text-muted-foreground" /> 306 - </a> 307 - <a 308 - href="https://tangled.org/@nekomimi.pet/wisp.place-monorepo/tree/main/cli" 309 - target="_blank" 310 - rel="noopener noreferrer" 311 - className="flex items-center justify-between p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border" 312 - > 313 - <span className="text-sm">Source Code</span> 314 - <ExternalLink className="w-4 h-4 text-muted-foreground" /> 315 - </a> 316 - <a 317 - href="https://blog.tangled.org/ci" 318 - target="_blank" 319 - rel="noopener noreferrer" 320 - className="flex items-center justify-between p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border" 321 - > 322 - <span className="text-sm">Tangled Spindle CI/CD</span> 323 - <ExternalLink className="w-4 h-4 text-muted-foreground" /> 324 - </a> 325 - </div> 326 - </div> 327 - </CardContent> 328 - </Card> 329 - </div> 330 - ) 333 + <div className="space-y-3"> 334 + <h3 className="text-sm font-semibold">Learn More</h3> 335 + <div className="grid gap-2"> 336 + <a 337 + href="https://docs.wisp.place/cli" 338 + target="_blank" 339 + rel="noopener noreferrer" 340 + className="flex items-center justify-between p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border" 341 + > 342 + <span className="text-sm">CLI Documentation</span> 343 + <ExternalLink className="w-4 h-4 text-muted-foreground" /> 344 + </a> 345 + <a 346 + href="https://tangled.org/@nekomimi.pet/wisp.place-monorepo/tree/main/cli" 347 + target="_blank" 348 + rel="noopener noreferrer" 349 + className="flex items-center justify-between p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border" 350 + > 351 + <span className="text-sm">Source Code</span> 352 + <ExternalLink className="w-4 h-4 text-muted-foreground" /> 353 + </a> 354 + <a 355 + href="https://blog.tangled.org/ci" 356 + target="_blank" 357 + rel="noopener noreferrer" 358 + className="flex items-center justify-between p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border" 359 + > 360 + <span className="text-sm">Tangled Spindle CI/CD</span> 361 + <ExternalLink className="w-4 h-4 text-muted-foreground" /> 362 + </a> 363 + </div> 364 + </div> 365 + </CardContent> 366 + </Card> 367 + </div> 368 + ); 331 369 }