Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

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

fix: use light drop shadows in dark mode for blank.mjs readability

Shadows are now white in dark mode so text stays visible when the
dark laptop wireframe passes behind. Also includes vscode ext v1.271.1
bump and paper translations.

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

+118 -9
+7 -6
system/public/aesthetic.computer/disks/blank.mjs
··· 218 218 // Title + product description (centered, below HUD label) — with drop shadow 219 219 const shadowOff = 1; 220 220 const shadowAlpha = isDark ? 180 : 80; 221 - ink(0, 0, 0, shadowAlpha).write("AC Blank Laptop", { center: "x", y: 24 + shadowOff, size: 2, screen }); 221 + const sc = isDark ? 255 : 0; // light shadow in dark mode, dark in light 222 + ink(sc, sc, sc, shadowAlpha).write("AC Blank Laptop", { center: "x", y: 24 + shadowOff, size: 2, screen }); 222 223 ink(fg).write("AC Blank Laptop", { center: "x", y: 24, size: 2, screen }); 223 - ink(0, 0, 0, shadowAlpha).write(DESCRIPTION_PLAIN, { center: "x", y: 48 + shadowOff, screen }, undefined, floor(w * 0.85)); 224 + ink(sc, sc, sc, shadowAlpha).write(DESCRIPTION_PLAIN, { center: "x", y: 48 + shadowOff, screen }, undefined, floor(w * 0.85)); 224 225 ink(fgDim).write(DESCRIPTION, { center: "x", y: 48, screen }, undefined, floor(w * 0.85)); 225 226 226 227 // Thanks page 227 228 if (thanks) { 228 229 const cy = floor(h / 2); 229 - ink(0, 0, 0, shadowAlpha).write("your blank is coming.", { center: "x", y: cy - 30 + shadowOff, screen }); 230 + ink(sc, sc, sc, shadowAlpha).write("your blank is coming.", { center: "x", y: cy - 30 + shadowOff, screen }); 230 231 ink(fg).write("your blank is coming.", { center: "x", y: cy - 30, screen }); 231 - ink(0, 0, 0, shadowAlpha).write("we'll be in touch.", { center: "x", y: cy + shadowOff, screen }); 232 + ink(sc, sc, sc, shadowAlpha).write("we'll be in touch.", { center: "x", y: cy + shadowOff, screen }); 232 233 ink(fgDim).write("we'll be in touch.", { center: "x", y: cy, screen }); 233 234 return; 234 235 } ··· 752 753 const oA = floor(120 + pulse * 135); 753 754 ink(isDark ? [100, 255, 100, oA] : [40, 140, 40, oA]).box(bx, "outline"); 754 755 // Shadow text 755 - ink(0, 0, 0, 120).write(buyText, { x: bx.x + pad + 1, y: bx.y + pad + 1 }, undefined, undefined, false, "unifont"); 756 + ink(sc, sc, sc, 120).write(buyText, { x: bx.x + pad + 1, y: bx.y + pad + 1 }, undefined, undefined, false, "unifont"); 756 757 ink(isDark ? [160 + floor(pulse * 95), 230, 160] : [30, floor(80 + pulse * 40), 30]) 757 758 .write(buyText, { x: bx.x + pad, y: bx.y + pad }, undefined, undefined, false, "unifont"); 758 759 } else { ··· 777 778 ink(isDark ? [40, oG, 40] : [30, oG, 30]).box(bx, "outline"); 778 779 779 780 // Shadow text 780 - ink(0, 0, 0, isDark ? 150 : 80).write(buyText, { x: bx.x + pad + 1, y: bx.y + pad + 1 }, undefined, undefined, false, "unifont"); 781 + ink(sc, sc, sc, isDark ? 150 : 80).write(buyText, { x: bx.x + pad + 1, y: bx.y + pad + 1 }, undefined, undefined, false, "unifont"); 781 782 // Main text — breathing green 782 783 const tG = isDark ? floor(160 + breath * 80 + wave * 15) : floor(20 + breath * 30); 783 784 ink(isDark ? [140 + floor(breath * 60), tG, 140 + floor(breath * 40)] : [20, tG, 20])
+108
system/public/papers.aesthetic.computer/translations.json
··· 304 304 "title": "PLOrk'ing the Planet", 305 305 "subtitle": "从笔记本电脑管弦乐团到行星乐器" 306 306 } 307 + }, 308 + "identity": { 309 + "en": { 310 + "title": "Handle Identity on the AT Protocol", 311 + "subtitle": "From Auth0 to Decentralized Sign-In on Aesthetic Computer" 312 + }, 313 + "da": { 314 + "title": "Handle-identitet p\\aa{} AT-protokollen", 315 + "subtitle": "Fra Auth0 til decentraliseret login p\\aa{} Aesthetic Computer" 316 + }, 317 + "es": { 318 + "title": "Identidad de Handle en el Protocolo AT", 319 + "subtitle": "De Auth0 al inicio de sesi\\'on descentralizado en Aesthetic Computer" 320 + }, 321 + "zh": { 322 + "title": "AT 协议上的 Handle 身份", 323 + "subtitle": "从 Auth0 到 Aesthetic Computer 上的去中心化登录" 324 + } 325 + }, 326 + "futures": { 327 + "en": { 328 + "title": "Five Years from Now", 329 + "subtitle": "What Aesthetic Computer Probably Becomes" 330 + }, 331 + "da": { 332 + "title": "Om fem \\aa{}r", 333 + "subtitle": "Hvad Aesthetic Computer sandsynligvis bliver" 334 + }, 335 + "es": { 336 + "title": "Dentro de cinco a\\~nos", 337 + "subtitle": "En qu\\'e probablemente se convierte Aesthetic Computer" 338 + }, 339 + "zh": { 340 + "title": "五年之后", 341 + "subtitle": "Aesthetic Computer 可能会变成什么" 342 + } 343 + }, 344 + "score-analysis": { 345 + "en": { 346 + "title": "Reading the Score", 347 + "subtitle": "A Critical Analysis of SCORE.md as Governance, Interface, and Creative Form" 348 + }, 349 + "da": { 350 + "title": "At l\\ae{}se partituret", 351 + "subtitle": "En kritisk analyse af SCORE.md som styring, gr\\ae{}nseflade og kreativ form" 352 + }, 353 + "es": { 354 + "title": "Leyendo la partitura", 355 + "subtitle": "Un an\\'alisis cr\\'itico de SCORE.md como gobernanza, interfaz y forma creativa" 356 + }, 357 + "zh": { 358 + "title": "阅读乐谱", 359 + "subtitle": "对 SCORE.md 作为治理、界面和创意形式的批判性分析" 360 + } 361 + }, 362 + "open-schools": { 363 + "en": { 364 + "title": "Get Closed Source Out of Schools", 365 + "subtitle": "Every Chromebook Is a Gateway Denied" 366 + }, 367 + "da": { 368 + "title": "F\\aa{} lukket kildekode ud af skolerne", 369 + "subtitle": "Hver Chromebook er en n\\ae{}gtet adgang" 370 + }, 371 + "es": { 372 + "title": "Saquen el c\\'odigo cerrado de las escuelas", 373 + "subtitle": "Cada Chromebook es una puerta negada" 374 + }, 375 + "zh": { 376 + "title": "让闭源软件离开学校", 377 + "subtitle": "每台 Chromebook 都是一扇被拒绝的大门" 378 + } 379 + }, 380 + "kidlisp-cards": { 381 + "en": { 382 + "title": "KidLisp Cards", 383 + "subtitle": "Programs That Fit on a Card" 384 + }, 385 + "da": { 386 + "title": "KidLisp-kort", 387 + "subtitle": "Programmer der kan v\\ae{}re p\\aa{} et kort" 388 + }, 389 + "es": { 390 + "title": "Tarjetas KidLisp", 391 + "subtitle": "Programas que caben en una tarjeta" 392 + }, 393 + "zh": { 394 + "title": "KidLisp 卡片", 395 + "subtitle": "能放在一张卡片上的程序" 396 + } 397 + }, 398 + "calarts": { 399 + "en": { 400 + "title": "CalArts, Callouts, and Papers", 401 + "subtitle": "Art School as Operating System" 402 + }, 403 + "da": { 404 + "title": "CalArts, callouts og artikler", 405 + "subtitle": "Kunstskole som styresystem" 406 + }, 407 + "es": { 408 + "title": "CalArts, callouts y art\\'iculos", 409 + "subtitle": "La escuela de arte como sistema operativo" 410 + }, 411 + "zh": { 412 + "title": "CalArts、批评与论文", 413 + "subtitle": "艺术学校作为操作系统" 414 + } 307 415 } 308 416 }
+2 -2
vscode-extension/package-lock.json
··· 1 1 { 2 2 "name": "aesthetic-computer-code", 3 - "version": "1.271.0", 3 + "version": "1.271.1", 4 4 "lockfileVersion": 3, 5 5 "requires": true, 6 6 "packages": { 7 7 "": { 8 8 "name": "aesthetic-computer-code", 9 - "version": "1.271.0", 9 + "version": "1.271.1", 10 10 "license": "None", 11 11 "dependencies": { 12 12 "acorn": "^8.15.0",
+1 -1
vscode-extension/package.json
··· 4 4 "displayName": "Aesthetic Computer", 5 5 "icon": "resources/icon.png", 6 6 "author": "Jeffrey Alan Scudder", 7 - "version": "1.271.0", 7 + "version": "1.271.1", 8 8 "description": "Code, run, and publish your pieces. Includes Aesthetic Computer themes and KidLisp syntax highlighting.", 9 9 "engines": { 10 10 "vscode": "^1.105.0"