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

Configure Feed

Select the types of activity you want to include in your feed.

universal binary

+97 -427
+38 -2
apps/main-app/public/editor/tabs/CLITab.tsx
··· 17 17 <div className="flex items-center gap-2 mb-2"> 18 18 <CardTitle>Wisp CLI Tool</CardTitle> 19 19 <Badge variant="secondary" className="text-xs"> 20 - v0.4.1 20 + v0.5.0 21 21 </Badge> 22 22 <Badge variant="outline" className="text-xs"> 23 23 Alpha ··· 55 55 </div> 56 56 57 57 <div className="space-y-3"> 58 - <h3 className="text-sm font-semibold">Download v0.4.1</h3> 58 + <h3 className="text-sm font-semibold">Download v0.5.0</h3> 59 59 <div className="grid gap-2"> 60 60 <div className="p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border"> 61 61 <a 62 + href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-darwin-universal" 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 (Universal) 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: 7d0cc968d2a130158c3b204d9a15bcc29b8af252 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 62 80 href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-darwin" 63 81 target="_blank" 64 82 rel="noopener noreferrer" ··· 72 90 <div className="text-xs text-muted-foreground"> 73 91 <span className="font-mono"> 74 92 SHA-1: 912f8f99c2b55ca6ad75e0a89903688bd2c1cb4b 93 + </span> 94 + </div> 95 + </div> 96 + <div className="p-3 bg-muted/50 hover:bg-muted rounded-lg transition-colors border border-border"> 97 + <a 98 + href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-darwin-x86_64" 99 + target="_blank" 100 + rel="noopener noreferrer" 101 + className="flex items-center justify-between mb-2" 102 + > 103 + <span className="font-mono text-sm"> 104 + macOS (Intel) 105 + </span> 106 + <ExternalLink className="w-4 h-4 text-muted-foreground" /> 107 + </a> 108 + <div className="text-xs text-muted-foreground"> 109 + <span className="font-mono"> 110 + SHA-1: 40d26d4a9c058e42e7911a195c3e078e8a4b5e82 75 111 </span> 76 112 </div> 77 113 </div>
+19 -23
binaries/index.html
··· 51 51 transition: background-color 200ms ease, color 200ms ease; 52 52 font-family: system-ui, sans-serif; 53 53 line-height: 1.6; 54 - display: flex; 55 - flex-direction: column; 56 - min-height: 100vh; 57 54 } 58 55 59 56 .container { 60 57 max-width: 860px; 61 58 margin: 40px auto; 62 59 padding: 0 20px; 63 - flex: 1; 64 - display: flex; 65 - flex-direction: column; 66 - width: 100%; 60 + min-height: 100vh; 67 61 } 68 62 69 63 h1 { ··· 230 224 } 231 225 232 226 .footer { 233 - margin-top: auto; 227 + margin-top: 3rem; 234 228 padding-top: 2rem; 235 - padding-bottom: 2rem; 236 229 border-top: 1px solid var(--demo-hr); 237 230 text-align: center; 238 231 color: var(--demo-text-secondary); ··· 241 234 </head> 242 235 <body> 243 236 <div class="container"> 244 - <h1>Wisp CLI <span style="font-size: 1.5rem; color: var(--demo-text-secondary);">v0.4.1</span></h1> 237 + <h1>Wisp CLI <span style="font-size: 1.5rem; color: var(--demo-text-secondary);">v0.5.0</span></h1> 245 238 <p class="subtitle">Deploy static sites to the AT Protocol</p> 246 239 247 240 <div class="description"> ··· 263 256 </div> 264 257 265 258 <div class="downloads"> 266 - <h2>Download v0.4.1</h2> 259 + <h2>Download v0.5.0</h2> 260 + <a href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-darwin-universal" class="download-link" download> 261 + <span class="platform">macOS (Universal):</span> wisp-cli-darwin-universal 262 + </a> 267 263 <a href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-darwin" class="download-link" download> 268 264 <span class="platform">macOS (Apple Silicon):</span> wisp-cli-aarch64-darwin 265 + </a> 266 + <a href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-darwin-x86_64" class="download-link" download> 267 + <span class="platform">macOS (Intel):</span> wisp-cli-darwin-x86_64 269 268 </a> 270 269 <a href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-linux" class="download-link" download> 271 270 <span class="platform">Linux (ARM64):</span> wisp-cli-aarch64-linux ··· 273 272 <a href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-linux" class="download-link" download> 274 273 <span class="platform">Linux (x86_64):</span> wisp-cli-x86_64-linux 275 274 </a> 276 - <a href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-windows.exe" class="download-link" download> 277 - <span class="platform">Windows (x86_64):</span> wisp-cli-x86_64-windows.exe 278 - </a> 279 - 280 275 <h3 style="margin-top: 1.5rem; margin-bottom: 0.5rem;">SHA-1 Checksums</h3> 281 - <pre style="font-size: 0.75rem; padding: 1rem;"><code class="language-bash">69de880e160a2f26e3c26b7c28030457913754dc wisp-cli-aarch64-darwin 282 - 026189f2c10077a2be4705102e169e66cb207f84 wisp-cli-aarch64-linux 283 - 4777cff07558906717402484a3313359880eae96 wisp-cli-x86_64-linux 284 - d6bc789d7fd7c787e5520eb476cee70c97ccb3ce wisp-cli-x86_64-windows.exe</code></pre> 276 + <pre style="font-size: 0.75rem; padding: 1rem;"><code class="language-bash">7d0cc968d2a130158c3b204d9a15bcc29b8af252 wisp-cli-darwin-universal 277 + 912f8f99c2b55ca6ad75e0a89903688bd2c1cb4b wisp-cli-aarch64-darwin 278 + 40d26d4a9c058e42e7911a195c3e078e8a4b5e82 wisp-cli-darwin-x86_64 279 + ef1992d8850f8fef1d719e4e8fab5431475c352e wisp-cli-aarch64-linux 280 + 3018dde8fec495abcae044079564ced93cdeb4f8 wisp-cli-x86_64-linux</code></pre> 285 281 </div> 286 282 287 283 <div class="cicd-section"> 288 284 <h2>CI/CD Integration</h2> 289 - <p>Deploy automatically on every push using <a href="https://tangledspindle.org" target="_blank">Tangled Spindle</a>:</p> 285 + <p>Deploy automatically on every push using <a href="https://blog.tangled.org/ci" target="_blank">Tangled Spindle</a>:</p> 290 286 291 287 <pre><code class="language-yaml">when: 292 288 - event: ['push'] ··· 350 346 351 347 <h3>Deploy a Site</h3> 352 348 <pre><code class="language-bash"># Download and make executable 353 - curl -O https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-macos-arm64 354 - chmod +x wisp-cli-macos-arm64 349 + curl -O https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-darwin 350 + chmod +x wisp-cli-aarch64-darwin 355 351 356 352 # Deploy your site 357 - ./wisp-cli-macos-arm64 deploy your-handle.bsky.social \ 353 + ./wisp-cli-aarch64-darwin deploy your-handle.bsky.social \ 358 354 --path ./dist \ 359 355 --site my-site \ 360 356
binaries/wisp-cli-aarch64-darwin

This is a binary file and will not be displayed.

binaries/wisp-cli-aarch64-linux

This is a binary file and will not be displayed.

binaries/wisp-cli-darwin-universal

This is a binary file and will not be displayed.

binaries/wisp-cli-darwin-x86_64

This is a binary file and will not be displayed.

binaries/wisp-cli-x86_64-linux

This is a binary file and will not be displayed.

-396
cli/binaries/index.html
··· 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>Wisp CLI - Download</title> 7 - <link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css" rel="stylesheet" /> 8 - <link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css" rel="stylesheet" media="(prefers-color-scheme: dark)" /> 9 - <style> 10 - :root { 11 - /* Light theme */ 12 - --demo-bg: #eeeeee; 13 - --demo-text: #1a1a1a; 14 - --demo-text-secondary: #666; 15 - --demo-border: #ddd; 16 - --demo-input-bg: #fff; 17 - --demo-button-bg: #0066cc; 18 - --demo-button-text: #fff; 19 - --demo-code-bg: #f5f5f5; 20 - --demo-code-border: #e0e0e0; 21 - --demo-hr: #e0e0e0; 22 - } 23 - 24 - /* Dark theme */ 25 - @media (prefers-color-scheme: dark) { 26 - :root { 27 - --demo-bg: #1a1a1a; 28 - --demo-text: #e0e0e0; 29 - --demo-text-secondary: #999; 30 - --demo-border: #444; 31 - --demo-input-bg: #2a2a2a; 32 - --demo-button-bg: #0066cc; 33 - --demo-button-text: #fff; 34 - --demo-code-bg: #2a2a2a; 35 - --demo-code-border: #444; 36 - --demo-hr: #444; 37 - } 38 - } 39 - 40 - * { 41 - margin: 0; 42 - padding: 0; 43 - box-sizing: border-box; 44 - } 45 - 46 - body { 47 - margin: 0; 48 - padding: 0; 49 - background: var(--demo-bg); 50 - color: var(--demo-text); 51 - transition: background-color 200ms ease, color 200ms ease; 52 - font-family: system-ui, sans-serif; 53 - line-height: 1.6; 54 - } 55 - 56 - .container { 57 - max-width: 860px; 58 - margin: 40px auto; 59 - padding: 0 20px; 60 - min-height: 100vh; 61 - } 62 - 63 - h1 { 64 - margin-top: 0; 65 - color: var(--demo-text); 66 - font-size: 2.5rem; 67 - margin-bottom: 0.5rem; 68 - } 69 - 70 - .subtitle { 71 - color: var(--demo-text-secondary); 72 - font-size: 1.1rem; 73 - margin-bottom: 2rem; 74 - line-height: 1.4; 75 - } 76 - 77 - .description { 78 - margin-bottom: 2rem; 79 - line-height: 1.6; 80 - color: var(--demo-text); 81 - } 82 - 83 - hr { 84 - margin: 32px 0; 85 - border: none; 86 - border-top: 1px solid var(--demo-hr); 87 - } 88 - 89 - h2 { 90 - color: var(--demo-text); 91 - margin-bottom: 1rem; 92 - margin-top: 2rem; 93 - font-size: 1.5rem; 94 - } 95 - 96 - h3 { 97 - color: var(--demo-text); 98 - margin-bottom: 0.75rem; 99 - margin-top: 1.5rem; 100 - font-size: 1.2rem; 101 - } 102 - 103 - .downloads { 104 - background: var(--demo-code-bg); 105 - border: 1px solid var(--demo-code-border); 106 - border-radius: 8px; 107 - padding: 2rem; 108 - margin-bottom: 2rem; 109 - } 110 - 111 - .downloads h2 { 112 - margin-top: 0; 113 - } 114 - 115 - .download-link { 116 - display: block; 117 - background: var(--demo-button-bg); 118 - color: var(--demo-button-text); 119 - text-decoration: none; 120 - padding: 12px 16px; 121 - border-radius: 8px; 122 - margin-bottom: 8px; 123 - transition: opacity 0.2s; 124 - font-family: 'Monaco', 'Menlo', 'Courier New', monospace; 125 - font-size: 0.9rem; 126 - } 127 - 128 - .download-link:hover { 129 - opacity: 0.85; 130 - } 131 - 132 - .platform { 133 - font-weight: bold; 134 - margin-right: 0.5rem; 135 - } 136 - 137 - .cicd-section { 138 - margin-top: 2rem; 139 - } 140 - 141 - .cicd-section h2 { 142 - margin-top: 0; 143 - } 144 - 145 - .cicd-section > p { 146 - color: var(--demo-text-secondary); 147 - margin-bottom: 1rem; 148 - } 149 - 150 - pre { 151 - background: var(--demo-code-bg) !important; 152 - border: 1px solid var(--demo-code-border); 153 - padding: 1.5rem !important; 154 - border-radius: 8px; 155 - overflow-x: auto; 156 - font-size: 0.85rem; 157 - line-height: 1.5; 158 - margin: 1rem 0; 159 - } 160 - 161 - pre code { 162 - color: var(--demo-text); 163 - background: none !important; 164 - padding: 0 !important; 165 - text-shadow: none !important; 166 - } 167 - 168 - code { 169 - font-family: 'Monaco', 'Menlo', 'Courier New', monospace; 170 - } 171 - 172 - .note { 173 - background: var(--demo-code-bg); 174 - border-left: 4px solid var(--demo-button-bg); 175 - border: 1px solid var(--demo-code-border); 176 - border-left: 4px solid var(--demo-button-bg); 177 - padding: 1rem; 178 - margin-top: 1rem; 179 - border-radius: 4px; 180 - } 181 - 182 - .note strong { 183 - color: var(--demo-text); 184 - } 185 - 186 - .note code { 187 - background: var(--demo-input-bg); 188 - padding: 2px 6px; 189 - border-radius: 4px; 190 - border: 1px solid var(--demo-border); 191 - } 192 - 193 - a { 194 - color: var(--demo-button-bg); 195 - text-decoration: none; 196 - } 197 - 198 - a:hover { 199 - text-decoration: underline; 200 - } 201 - 202 - .features { 203 - margin: 2rem 0; 204 - } 205 - 206 - .features ul { 207 - list-style: none; 208 - padding-left: 0; 209 - } 210 - 211 - .features li { 212 - padding: 0.5rem 0; 213 - padding-left: 1.5rem; 214 - position: relative; 215 - line-height: 1.6; 216 - } 217 - 218 - .features li:before { 219 - content: "✓"; 220 - position: absolute; 221 - left: 0; 222 - color: var(--demo-button-bg); 223 - font-weight: bold; 224 - } 225 - 226 - .footer { 227 - margin-top: 3rem; 228 - padding-top: 2rem; 229 - border-top: 1px solid var(--demo-hr); 230 - text-align: center; 231 - color: var(--demo-text-secondary); 232 - } 233 - </style> 234 - </head> 235 - <body> 236 - <div class="container"> 237 - <h1>Wisp CLI <span style="font-size: 1.5rem; color: var(--demo-text-secondary);">v0.5.0</span></h1> 238 - <p class="subtitle">Deploy static sites to the AT Protocol</p> 239 - 240 - <div class="description"> 241 - <p> 242 - The Wisp CLI is a command-line tool for deploying static websites directly to your AT Protocol account. 243 - Host your sites on <a href="https://wisp.place" target="_blank">wisp.place</a> with full ownership and control, 244 - backed by the decentralized AT Protocol. 245 - </p> 246 - </div> 247 - 248 - <div class="features"> 249 - <h2>Features</h2> 250 - <ul> 251 - <li><strong>Deploy:</strong> Push static sites directly from your terminal</li> 252 - <li><strong>Pull:</strong> Download sites from the PDS for development or backup</li> 253 - <li><strong>Serve:</strong> Run a local server with real-time firehose updates</li> 254 - <li>Authenticate with app password or OAuth</li> 255 - </ul> 256 - </div> 257 - 258 - <div class="downloads"> 259 - <h2>Download v0.5.0</h2> 260 - <a href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-darwin" class="download-link" download> 261 - <span class="platform">macOS (Apple Silicon):</span> wisp-cli-aarch64-darwin 262 - </a> 263 - <a href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-linux" class="download-link" download> 264 - <span class="platform">Linux (ARM64):</span> wisp-cli-aarch64-linux 265 - </a> 266 - <a href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-linux" class="download-link" download> 267 - <span class="platform">Linux (x86_64):</span> wisp-cli-x86_64-linux 268 - </a> 269 - <h3 style="margin-top: 1.5rem; margin-bottom: 0.5rem;">SHA-1 Checksums</h3> 270 - <pre style="font-size: 0.75rem; padding: 1rem;"><code class="language-bash">912f8f99c2b55ca6ad75e0a89903688bd2c1cb4b wisp-cli-aarch64-darwin 271 - ef1992d8850f8fef1d719e4e8fab5431475c352e wisp-cli-aarch64-linux 272 - 3018dde8fec495abcae044079564ced93cdeb4f8 wisp-cli-x86_64-linux</code></pre> 273 - </div> 274 - 275 - <div class="cicd-section"> 276 - <h2>CI/CD Integration</h2> 277 - <p>Deploy automatically on every push using <a href="https://blog.tangled.org/ci" target="_blank">Tangled Spindle</a>:</p> 278 - 279 - <pre><code class="language-yaml">when: 280 - - event: ['push'] 281 - branch: ['main'] 282 - - event: ['manual'] 283 - 284 - engine: 'nixery' 285 - 286 - clone: 287 - skip: false 288 - depth: 1 289 - submodules: false 290 - 291 - dependencies: 292 - nixpkgs: 293 - - nodejs 294 - - coreutils 295 - - curl 296 - github:NixOS/nixpkgs/nixpkgs-unstable: 297 - - bun 298 - 299 - environment: 300 - SITE_PATH: 'dist' 301 - SITE_NAME: 'my-site' 302 - WISP_HANDLE: 'your-handle.bsky.social' 303 - 304 - steps: 305 - - name: build site 306 - command: | 307 - export PATH="$HOME/.nix-profile/bin:$PATH" 308 - 309 - # regenerate lockfile, https://github.com/npm/cli/pull/8184 makes rolldown not install 310 - rm package-lock.json bun.lock 311 - bun install @rolldown/binding-linux-arm64-gnu --save-optional 312 - bun install 313 - 314 - # run directly with bun because of shebang issues in nix 315 - bun node_modules/.bin/vite build 316 - 317 - - name: deploy to wisp 318 - command: | 319 - # Download Wisp CLI 320 - curl https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-linux -o wisp-cli 321 - chmod +x wisp-cli 322 - 323 - # Deploy to Wisp 324 - ./wisp-cli \ 325 - "$WISP_HANDLE" \ 326 - --path "$SITE_PATH" \ 327 - --site "$SITE_NAME" \ 328 - --password "$WISP_APP_PASSWORD"</code></pre> 329 - 330 - <div class="note"> 331 - <strong>Note:</strong> Set <code>WISP_APP_PASSWORD</code> as a secret in your Tangled Spindle repository settings. 332 - Generate an app password from your AT Protocol account settings. 333 - </div> 334 - </div> 335 - 336 - <div class="cicd-section"> 337 - <h2>Basic Usage</h2> 338 - 339 - <h3>Deploy a Site</h3> 340 - <pre><code class="language-bash"># Download and make executable 341 - curl -O https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-darwin 342 - chmod +x wisp-cli-aarch64-darwin 343 - 344 - # Deploy your site 345 - ./wisp-cli-aarch64-darwin deploy your-handle.bsky.social \ 346 - --path ./dist \ 347 - --site my-site \ 348 - 349 - # Your site will be available at: 350 - # https://sites.wisp.place/your-handle/my-site</code></pre> 351 - 352 - <h3>Pull a Site from PDS</h3> 353 - <p style="color: var(--demo-text-secondary); margin-bottom: 0.5rem;">Download a site from the PDS to your local machine (uses OAuth authentication):</p> 354 - <pre><code class="language-bash"># Pull a site to a specific directory 355 - wisp-cli pull your-handle.bsky.social \ 356 - --site my-site \ 357 - --output ./my-site 358 - 359 - # Pull to current directory 360 - wisp-cli pull your-handle.bsky.social \ 361 - --site my-site 362 - </code></pre> 363 - <h3>Serve a Site Locally with Real-Time Updates</h3> 364 - <p style="color: var(--demo-text-secondary); margin-bottom: 0.5rem;">Run a local server that monitors the firehose for real-time updates (uses OAuth authentication):</p> 365 - <pre><code class="language-bash"># Serve on http://localhost:8080 (default) 366 - wisp-cli serve your-handle.bsky.social \ 367 - --site my-site 368 - 369 - # Serve on a custom port 370 - wisp-cli serve your-handle.bsky.social \ 371 - --site my-site \ 372 - --port 3000 373 - 374 - # Downloads site, serves it, and watches firehose for live updates! 375 - 376 - # Enable SPA mode (serve index.html for all routes) 377 - wisp-cli serve your-handle.bsky.social \ 378 - --site my-site \ 379 - --spa 380 - 381 - # Enable directory listing for paths without index files 382 - wisp-cli serve your-handle.bsky.social \ 383 - --site my-site \ 384 - --directory</code></pre> 385 - </div> 386 - 387 - <div class="footer"> 388 - <p>Learn more at <a href="https://wisp.place">wisp.place</a></p> 389 - </div> 390 - </div> 391 - <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-core.min.js"></script> 392 - <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js"></script> 393 - <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-bash.min.js"></script> 394 - <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-yaml.min.js"></script> 395 - </body> 396 - </html>
cli/binaries/wisp-cli-aarch64-darwin binaries/wisp-cli-darwin-arm64
cli/binaries/wisp-cli-aarch64-linux

This is a binary file and will not be displayed.

cli/binaries/wisp-cli-x86_64-linux

This is a binary file and will not be displayed.

+24 -6
cli/build-macos.sh
··· 1 1 #!/bin/bash 2 - # Build Linux and macOS binaries 2 + # Build macOS universal binary (arm64 + x86_64) 3 3 4 4 set -e 5 5 6 6 mkdir -p binaries 7 7 rm -rf target 8 8 9 - # Build macOS binaries natively 10 - echo "Building macOS binaries..." 11 - rustup target add aarch64-apple-darwin 9 + echo "Building macOS universal binary..." 10 + 11 + # Add both targets 12 + rustup target add aarch64-apple-darwin x86_64-apple-darwin 12 13 13 - echo "Building macOS arm64 binary." 14 + # Build arm64 15 + echo "Building macOS arm64..." 14 16 RUSTFLAGS="-C target-feature=+crt-static" cargo build --release --target aarch64-apple-darwin 15 - cp target/aarch64-apple-darwin/release/wisp-cli binaries/wisp-cli-aarch64-darwin 17 + 18 + # Build x86_64 19 + echo "Building macOS x86_64..." 20 + RUSTFLAGS="-C target-feature=+crt-static" cargo build --release --target x86_64-apple-darwin 21 + 22 + # Create universal binary with lipo 23 + echo "Creating universal binary..." 24 + lipo -create \ 25 + target/aarch64-apple-darwin/release/wisp-cli \ 26 + target/x86_64-apple-darwin/release/wisp-cli \ 27 + -output binaries/wisp-cli-darwin-universal 28 + 29 + # Also keep individual binaries if needed 30 + cp target/aarch64-apple-darwin/release/wisp-cli binaries/wisp-cli-darwin-arm64 31 + cp target/x86_64-apple-darwin/release/wisp-cli binaries/wisp-cli-darwin-x86_64 32 + 33 + echo "Done! Universal binary: binaries/wisp-cli-darwin-universal"
+16
docs/src/content/docs/cli.md
··· 21 21 22 22 <h2>Download v0.5.0</h2> 23 23 24 + <a href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-darwin-universal" class="download-link" download=""> 25 + 26 + <span class="platform">macOS (Universal):</span> wisp-cli-darwin-universal 27 + 28 + </a> 29 + 24 30 <a href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-darwin" class="download-link" download=""> 25 31 26 32 <span class="platform">macOS (Apple Silicon):</span> wisp-cli-aarch64-darwin 33 + 34 + </a> 35 + 36 + <a href="https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-darwin-x86_64" class="download-link" download=""> 37 + 38 + <span class="platform">macOS (Intel):</span> wisp-cli-darwin-x86_64 27 39 28 40 </a> 29 41 ··· 48 60 <h3 style="margin-top: 1.5rem; margin-bottom: 0.5rem;">SHA-1 Checksums</h3> 49 61 50 62 <pre style="font-size: 0.75rem; padding: 1rem;" class="language-bash" tabindex="0"><code class="language-bash"> 63 + 7d0cc968d2a130158c3b204d9a15bcc29b8af252 wisp-cli-darwin-universal 64 + 51 65 912f8f99c2b55ca6ad75e0a89903688bd2c1cb4b wisp-cli-aarch64-darwin 66 + 67 + 40d26d4a9c058e42e7911a195c3e078e8a4b5e82 wisp-cli-darwin-x86_64 52 68 53 69 ef1992d8850f8fef1d719e4e8fab5431475c352e wisp-cli-aarch64-linux 54 70