Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

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

blank: ThinkPad black palette, taller keyboard+trackpad, no pastels

- All surfaces dark black/gray (ThinkPad style), same in light and dark mode
- Remove pastel face tints — solid dark shading only
- Trackpad extends nearly to base edge (tpT1=0.98)
- Screen and bezel always dark (no light mode variant)

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

+15 -20
+15 -20
system/public/aesthetic.computer/disks/blank.mjs
··· 216 216 [0, 1, 5, 4], [3, 2, 6, 7], [0, 3, 7, 4], 217 217 [1, 2, 6, 5], [0, 1, 2, 3], [4, 5, 6, 7], 218 218 ]; 219 - const baseColor = isDark ? [22, 22, 26] : [200, 200, 205]; 220 - const lidColor = isDark ? [18, 18, 22] : [190, 190, 195]; 221 - const keyColor = isDark ? [35, 35, 40] : [170, 170, 178]; 219 + // ThinkPad black/dark gray palette 220 + const baseColor = isDark ? [28, 28, 30] : [42, 42, 45]; 221 + const lidColor = isDark ? [24, 24, 26] : [38, 38, 40]; 222 + const keyColor = isDark ? [38, 38, 42] : [52, 52, 56]; 222 223 223 224 // Collect all drawable quads with z-depth 224 225 const drawList = []; 225 226 226 227 // Base + lid faces 227 - // Pastel tints per face — subtle color shifts 228 - const pastelTints = [ 229 - [1.0, 0.92, 0.95], [0.92, 1.0, 0.95], [0.95, 0.92, 1.0], 230 - [1.0, 0.97, 0.9], [0.9, 0.97, 1.0], [0.97, 0.9, 0.97], 231 - ]; 232 228 let faceIdx = 0; 233 229 const addFaces = (proj, color, tag) => { 234 230 for (const [a, b, c, d] of faceQuads) { ··· 249 245 addFaces(projLid, lidColor, "lid"); 250 246 251 247 // Hinge barrels 252 - const hingeColor = isDark ? [40, 40, 45] : [140, 140, 148]; 248 + const hingeColor = isDark ? [32, 32, 35] : [45, 45, 48]; 253 249 for (const hv of hingeVerts) { 254 250 const projH = hv.map(project); 255 251 addFaces(projH, hingeColor, "hinge", false); ··· 276 272 // Row 5: Modifier row (8 keys: Ctrl Fn Win Alt Space Alt PrtSc Ctrl) 277 273 const rows = [14, 14, 14, 13, 12, 8]; 278 274 const rowIndent = [0, 0, 0.02, 0.04, 0.06, 0]; 279 - // Keyboard occupies top 60% of base, trackpad below 280 - const kbFrac = 0.58; 275 + // Keyboard occupies top 55% of base, trackpad extends to near edge 276 + const kbFrac = 0.55; 281 277 const lerp = (a, b, t) => a + (b - a) * t; 282 278 for (let r = 0; r < rows.length; r++) { 283 279 const nKeys = rows[r]; ··· 315 311 } 316 312 317 313 // Trackpad (centered, below keyboard, ~35% width of base) 318 - const tpU0 = 0.32, tpU1 = 0.68; 319 - const tpT0 = kbFrac + 0.05, tpT1 = 0.95; 320 - const trackpadColor = isDark ? [28, 28, 32] : [180, 180, 185]; 314 + const tpU0 = 0.3, tpU1 = 0.7; 315 + const tpT0 = kbFrac + 0.03, tpT1 = 0.98; 316 + const trackpadColor = isDark ? [32, 32, 36] : [48, 48, 52]; 321 317 kbKeys.push({ 322 318 pts: [ 323 319 [lerp(lerp(kbTL[0], kbTR[0], tpU0), lerp(kbBL[0], kbBR[0], tpU0), tpT0), ··· 339 335 // Draw everything in sorted order 340 336 for (const item of drawList) { 341 337 if (item.type === "face") { 342 - const { proj, verts: [a, b, c, d], color, fi } = item; 343 - const shade = max(0.5, min(1, 0.8 - item.z * 0.15)); 344 - const tint = pastelTints[fi % pastelTints.length]; 345 - ink(floor(color[0] * shade * tint[0]), floor(color[1] * shade * tint[1]), floor(color[2] * shade * tint[2])); 338 + const { proj, verts: [a, b, c, d], color } = item; 339 + const shade = max(0.6, min(1.2, 1.0 - item.z * 0.12)); 340 + ink(floor(color[0] * shade), floor(color[1] * shade), floor(color[2] * shade)); 346 341 tri(proj[a][0], proj[a][1], proj[b][0], proj[b][1], proj[c][0], proj[c][1]); 347 342 tri(proj[a][0], proj[a][1], proj[c][0], proj[c][1], proj[d][0], proj[d][1]); 348 343 } ··· 409 404 // Bezel (dark border around screen) — two filled triangles 410 405 const pBTL = project(bTL), pBTR = project(bTR); 411 406 const pBBL = project(bBL), pBBR = project(bBR); 412 - const bezelColor = isDark ? [30, 30, 32] : [60, 60, 65]; 407 + const bezelColor = [20, 20, 22]; 413 408 ink(bezelColor[0], bezelColor[1], bezelColor[2], screenAlpha); 414 409 tri(pBTL[0], pBTL[1], pBTR[0], pBTR[1], pBBR[0], pBBR[1]); 415 410 tri(pBTL[0], pBTL[1], pBBR[0], pBBR[1], pBBL[0], pBBL[1]); 416 411 417 412 // Screen fill (dark background) — two filled triangles 418 - const screenColor = isDark ? [8, 8, 12] : [20, 22, 28]; 413 + const screenColor = [6, 6, 10]; 419 414 ink(screenColor[0], screenColor[1], screenColor[2], screenAlpha); 420 415 tri(projTL[0], projTL[1], projTR[0], projTR[1], projBR[0], projBR[1]); 421 416 tri(projTL[0], projTL[1], projBR[0], projBR[1], projBL[0], projBL[1]);