Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

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

fix: add /api/device-token and /api/device-pair routes to netlify.toml

Functions need explicit redirect rules to be reachable via /api/ paths.
Also excluded from SPA catch-all edge function.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+103 -95
+1 -1
fedac/native/ac-usb
··· 170 170 AC_TOKEN="" 171 171 if [ -n "${HANDLE}" ]; then 172 172 echo " Fetching credentials for @${HANDLE}..." 173 - DEVICE_JSON=$(curl -s "https://aesthetic.computer/.netlify/functions/device-token?handle=${HANDLE}" 2>/dev/null || true) 173 + DEVICE_JSON=$(curl -s "https://aesthetic.computer/api/device-token?handle=${HANDLE}" 2>/dev/null || true) 174 174 AC_TOKEN=$(echo "${DEVICE_JSON}" | node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{const j=JSON.parse(d);process.stdout.write(j.token||'')}catch{}})" 2>/dev/null || true) 175 175 # Grab Claude/GitHub tokens from API if not already set locally 176 176 if [ -z "${CLAUDE_TOKEN}" ]; then
+102 -94
system/netlify.toml
··· 576 576 [[edge_functions]] 577 577 path = "/*" 578 578 function = "keeps-social" 579 - excludedPath = ["/api/device-auth", "/api/device-login", "/device-login"] 579 + excludedPath = ["/api/device-auth", "/api/device-login", "/api/device-token", "/api/device-pair", "/device-login"] 580 580 581 581 # Version/commit status API 582 582 [functions.version] ··· 1749 1749 to = "/.netlify/functions/device-auth" 1750 1750 status = 200 1751 1751 [[redirects]] 1752 + from = "/api/device-token" 1753 + to = "/.netlify/functions/device-token" 1754 + status = 200 1755 + [[redirects]] 1756 + from = "/api/device-pair" 1757 + to = "/.netlify/functions/device-pair" 1758 + status = 200 1759 + [[redirects]] 1752 1760 from = "/api/device-login" 1753 1761 to = "/.netlify/functions/device-login" 1754 1762 status = 200 ··· 2343 2351 to = "/kidlisp.com/buy.html" 2344 2352 status = 200 2345 2353 force = false 2346 - [[redirects]] 2347 - from = "/buy.kidlisp.com" 2348 - to = "/kidlisp.com/buy.html" 2349 - status = 200 2350 - force = false 2351 - [[redirects]] 2352 - # bills.aesthetic.computer - local dev mirroring production subdomain 2353 - # Local dev: https://localhost:8888/bills.aesthetic.computer/ 2354 - from = "/bills.aesthetic.computer" 2355 - to = "/bills.aesthetic.computer/index.html" 2356 - status = 200 2357 - force = true 2358 - [[redirects]] 2359 - from = "/bills.aesthetic.computer/*" 2360 - to = "/bills.aesthetic.computer/:splat" 2361 - status = 200 2362 - force = false 2363 - [[redirects]] 2364 - # give.aesthetic.computer - local dev mirroring production subdomain 2365 - # Local dev: https://localhost:8888/give.aesthetic.computer/ 2366 - from = "/give.aesthetic.computer" 2367 - to = "/give.aesthetic.computer/index.html" 2368 - status = 200 2369 - force = true 2370 - [[redirects]] 2371 - from = "/give.aesthetic.computer/da" 2372 - to = "/give.aesthetic.computer/index.html?lang=da&currency=dkk" 2373 - status = 200 2374 - force = true 2375 - [[redirects]] 2376 - from = "/give.aesthetic.computer/es" 2377 - to = "/give.aesthetic.computer/index.html?lang=es&currency=usd" 2378 - status = 200 2379 - force = true 2380 - [[redirects]] 2381 - from = "/give.aesthetic.computer/de" 2382 - to = "/give.aesthetic.computer/index.html?lang=de&currency=eur" 2383 - status = 200 2384 - force = true 2385 - [[redirects]] 2386 - from = "/give.aesthetic.computer/cn" 2387 - to = "/give.aesthetic.computer/index.html?lang=zh&currency=usd" 2388 - status = 200 2389 - force = true 2390 - [[redirects]] 2391 - from = "/give.aesthetic.computer/api/give-portal" 2392 - to = "/.netlify/functions/give-portal" 2393 - status = 200 2394 - force = true 2395 - [[redirects]] 2396 - from = "/give.aesthetic.computer/api/give" 2397 - to = "/.netlify/functions/give" 2398 - status = 200 2399 - force = true 2400 - [[redirects]] 2401 - from = "/give.aesthetic.computer/api/billing" 2402 - to = "/.netlify/functions/billing" 2403 - status = 200 2404 - force = true 2405 - [[redirects]] 2406 - from = "/give.aesthetic.computer/*" 2407 - to = "/give.aesthetic.computer/:splat" 2408 - status = 200 2409 - force = false 2410 - [[redirects]] 2411 - # PJ mode via kidlisp.com domain - kidlisp.com/pj/code (subdomain fallback) 2412 - from = "https://kidlisp.com/pj/*" 2413 - to = "/kidlisp.com/pj.html" 2414 - status = 200 2415 - force = true 2354 + [[redirects]] 2355 + from = "/buy.kidlisp.com" 2356 + to = "/kidlisp.com/buy.html" 2357 + status = 200 2358 + force = false 2359 + [[redirects]] 2360 + # bills.aesthetic.computer - local dev mirroring production subdomain 2361 + # Local dev: https://localhost:8888/bills.aesthetic.computer/ 2362 + from = "/bills.aesthetic.computer" 2363 + to = "/bills.aesthetic.computer/index.html" 2364 + status = 200 2365 + force = true 2366 + [[redirects]] 2367 + from = "/bills.aesthetic.computer/*" 2368 + to = "/bills.aesthetic.computer/:splat" 2369 + status = 200 2370 + force = false 2371 + [[redirects]] 2372 + # give.aesthetic.computer - local dev mirroring production subdomain 2373 + # Local dev: https://localhost:8888/give.aesthetic.computer/ 2374 + from = "/give.aesthetic.computer" 2375 + to = "/give.aesthetic.computer/index.html" 2376 + status = 200 2377 + force = true 2378 + [[redirects]] 2379 + from = "/give.aesthetic.computer/da" 2380 + to = "/give.aesthetic.computer/index.html?lang=da&currency=dkk" 2381 + status = 200 2382 + force = true 2383 + [[redirects]] 2384 + from = "/give.aesthetic.computer/es" 2385 + to = "/give.aesthetic.computer/index.html?lang=es&currency=usd" 2386 + status = 200 2387 + force = true 2388 + [[redirects]] 2389 + from = "/give.aesthetic.computer/de" 2390 + to = "/give.aesthetic.computer/index.html?lang=de&currency=eur" 2391 + status = 200 2392 + force = true 2393 + [[redirects]] 2394 + from = "/give.aesthetic.computer/cn" 2395 + to = "/give.aesthetic.computer/index.html?lang=zh&currency=usd" 2396 + status = 200 2397 + force = true 2398 + [[redirects]] 2399 + from = "/give.aesthetic.computer/api/give-portal" 2400 + to = "/.netlify/functions/give-portal" 2401 + status = 200 2402 + force = true 2403 + [[redirects]] 2404 + from = "/give.aesthetic.computer/api/give" 2405 + to = "/.netlify/functions/give" 2406 + status = 200 2407 + force = true 2408 + [[redirects]] 2409 + from = "/give.aesthetic.computer/api/billing" 2410 + to = "/.netlify/functions/billing" 2411 + status = 200 2412 + force = true 2413 + [[redirects]] 2414 + from = "/give.aesthetic.computer/*" 2415 + to = "/give.aesthetic.computer/:splat" 2416 + status = 200 2417 + force = false 2418 + [[redirects]] 2419 + # PJ mode via kidlisp.com domain - kidlisp.com/pj/code (subdomain fallback) 2420 + from = "https://kidlisp.com/pj/*" 2421 + to = "/kidlisp.com/pj.html" 2422 + status = 200 2423 + force = true 2416 2424 [[redirects]] 2417 2425 from = "https://www.kidlisp.com/pj/*" 2418 2426 to = "/kidlisp.com/pj.html" 2419 2427 status = 200 2420 2428 force = true 2421 - [[redirects]] 2422 - # SPA fallback for kidlisp.com routes - only for paths without file extensions 2423 - # force = false ensures static files (js, css, etc.) are served directly 2424 - from = "/kidlisp.com" 2425 - to = "/kidlisp.com/index.html" 2426 - status = 200 2427 - force = true 2428 - [[redirects]] 2429 - # Explicit editor entrypoint for local dev 2430 - from = "/kidlisp.com/editor" 2431 - to = "/kidlisp.com/index.html" 2432 - status = 200 2433 - force = true 2434 - [[redirects]] 2435 - from = "/kidlisp.com/editor/*" 2436 - to = "/kidlisp.com/index.html" 2437 - status = 200 2438 - force = true 2439 - [[redirects]] 2440 - from = "/kidlisp.com/*" 2441 - to = "/kidlisp.com/index.html" 2442 - status = 200 2443 - force = false 2429 + [[redirects]] 2430 + # SPA fallback for kidlisp.com routes - only for paths without file extensions 2431 + # force = false ensures static files (js, css, etc.) are served directly 2432 + from = "/kidlisp.com" 2433 + to = "/kidlisp.com/index.html" 2434 + status = 200 2435 + force = true 2436 + [[redirects]] 2437 + # Explicit editor entrypoint for local dev 2438 + from = "/kidlisp.com/editor" 2439 + to = "/kidlisp.com/index.html" 2440 + status = 200 2441 + force = true 2442 + [[redirects]] 2443 + from = "/kidlisp.com/editor/*" 2444 + to = "/kidlisp.com/index.html" 2445 + status = 200 2446 + force = true 2447 + [[redirects]] 2448 + from = "/kidlisp.com/*" 2449 + to = "/kidlisp.com/index.html" 2450 + status = 200 2451 + force = false 2444 2452 # DOLLHOUSE report page 2445 2453 [[redirects]] 2446 2454 from = "/dollhouse"