Monorepo for Aesthetic.Computer aesthetic.computer
at main 2861 lines 124 kB view raw
1😀 TODO 😆 2 3 🌟 Projects in Progress (PIP) 🌟 4 5 ** annoyances 25.10.08.18.43 ** 6 - heic drag and drop? 7 - shift+enter new line bad 8 - write command in kidlisp cant have 9 - 'clear' should be in place for a clear color.... 10 - 40*frame vs frame*40 ordering 11 - image has weird color channel issues unless scale parameter is used 12 - export mp3 from a clock 13 14 * `prompt` poe mode * 15 - Create a 'poe' mode for 'prompt' where we skip painting the TextInput UI 16 in favor of a more presentational writing performance tool with effects 17 and a simple background color and maybe a cooler blinking caret, special 18 sound when 'clearing' with a few different 'clear' options and visual 19 keyboard shortcuts. At first it can just be like a simple white on black thing 20 and I may even have a prototype already in disks that implements a TextInput 21 but doesnt. 22 23 * tezos integration * 24 - Write an ac command to load an NFT_People / (or any) OBJKT from teia.art / objkt.com as the current 'painting'. 25 - If it's a gif then maybe using 'flip' and then exporting could be a fun way to remix outside of tapes? 26 27 * tape service * 28 - Write a server / long-running backend function that takes a .zip uploaded from a tape that 29 includes frame data and audio and exports a super nice shareable mp4 as fast as possible 30 with h264 and aac codecs like setup right now for exporting mp4s, but this would 31 use the zip path first then hit a netlify endpoint function (can we do this in netlify?) 32 33 * `clock` syntax * 34 - [] Take the melody syntax from kidlisp.mjs and develop it further. 35 - [] Record `clock` tutorial audio for `laer-klokken` radio show. 36 37 * `wipppps` pattern + logo * 38 - [] Put the logo over the page on wipppps.world. 39 40 * `notebook` * 41 - [] Make my firts notebook post. 42 43 * `make` * 44 - [🟣] Uncaught `prompt` inputs should now be routed to `make`. 45 - [] The 'Enter' button should now say `Make` unless the prompt exists? 46 - [] The paste button doesn't need to appear on desktop (and doesn't even work on desktop) 47 - [] And should only appear after opening the prompt once? 48 - [x] `make` will work just like 'paint' except it will automatically write 49 aesthetic computer pieces from a prompt, with some output, in a one 50 shot fashion? 51 * UNIFONT support * 52 - [🔵] Smooth out new spacing and button issues from switching back to font_1? 53 (blockheight of buttons, etc.) 54 - [] Make this a prompt setting? 55 - [] Get rid of yellow / non-printing characters in prompt. 56 - [] Show a cool animated blinky thing before the glyph loads. (type.mjs) 57 - [] These glyphs could also be cached locally in indexedDB as an object. (type.mjs) 58 - [] Make unifont the default font. 59 - [] Take care of visual inconsistencies across the system. 60 - [] Test every piece in `list`. 61 (all hardcoded numbers from `font_1`) 62 + Done 63 - [x] Auto switch to `unifont` across prompt and ui / etc with a flag in disk. 64 - [x] Render all unifont glyphs properly. 65 - [x] Cache on assets.aesthetic.computer as necessary via digital object s3 66 storage in the assets bucket. (bdf-glyph.js) 67 - [x] If the file exists on `assets.aesthetic.computer/type/unifont/charcode.json` 68 then no need. 69 70 * `dark-window` * 71 - [🟠] But first, use it for screenshots. 72 - [] Put up a live remote chromium instance progrmatically that windows into AC. 73 74 * `typeline` aka `tobby` * 75 - [] Type the line: xgHij 76 - [] Ambiently show other players progress like an obby. 77 - [] Reset the map / sequence of characters every 3 for all players using 78 the major clock. 79 80 * `chart` * 81 - [] Make a basic runnable flow with arithmetic and clock offsets. 82 - [] State needs to save between commands? 83 84 * `laer-klokken` * 85 - [-] Put the interface online for them. 86 - [A] Add support for the crossed out o danish character. 87 - [A] Fix timestamps in all chats. 88 - [] Add some clever differences / enable all timestamps in the `laer-klokken` 89 interface. 90 - [] Make sure it routes through `clock`. 91 92 * `tell` * 93 - [] Add `tell` command to test per device notifications and fast web notifications. 94 - [] Implement the web notifications before moving to iOS and then replacing / updating the iOS app. 95 96* YouTube Channel * (Requires some new funding / a dedicated VPS to setup) 97 - [] https://studio.youtube.com/channel/UCnCkxAsgrBqEXk8XiHl0JGg/livestreaming 98 99 * `tremory` * 100 - [] Finish basic prototype. 101 - [] Add some fun beat patterns. 102 103* Are.na Account Hook (Seems Fun) * 104 - [🟣] Make an Aesthetic Computer are.na account or repurpose my account for that? 105 - [] API Reference: https://github.com/ivangreene/arena-js 106 107* YouTube Channel * (Requires some new funding / a dedicated VPS to setup) 108 - [] 109 110* Banners * 111 - [🟠] Fix banners by somehow rendering them on the backend or running 112 puppeteer differently? 113 - [] https://localhost:8888/icon/128x128/prompt.png 114 115* Debug Log * 116- [] Make a standard overlay to show any erroneous console output 117 directly on the front end. 118 119* `tape` reel / taping regressions * 120 - [] Make a `tape` fyp style reel. 121 - [] Pause icon is no longer present? 122 - [] Pressing escape twice stays on video for some reason? 123 - [?] 'share' swipe should be disabled on video piece with '|'. 124 + Done 125 - [x] Fix 126 - [x] Tape sound only syncs on first time. 127 128 * Message Deletion * 129 - [🌙] Pat a timestamp as admin to reveal a redaction control (only if admin). 130 - [] Redaction should... 131 - [] Underscore the message for all users and show a 'redacted' sign. 132 - [] Should muting also do this? 133 - [] Redact the web and native mobile notification. 134 - [] Replace current notification system with something new. 135 - [] Use 'admin:chat-system:redact' to set a db flag on a message. 136 - [] This should hit an http 'redact' endpoint which requires admin privileges. 137 - [] This endpoint should be separate from the chat instance and be a 138 serverless function. 139 - [] But why not just have it on the chat instance? 140 - [] It should trigger an update on all clients that erases the message. 141 This could be done through redis... 142 - [x] Show timestamps on chat messages. 143 - [x] Live last message stamp. 144 + Done 145 - [x] Finish timestamp picking. 146 - [x] Tapping shows yellow. 147 - [x] Add 'admin:chat-system:mute' / 'admin:chat-system:unmute' action / endpoint which will be 148 separate from handle stripping. 149 - [x] Check stripping process. 150 - [x] Put mute list in the database per instance. 151 - [?] Should stripping also invalidate emails or does it already? 152 153* ios app * 154 - [] Update notifications. 155 - [] Tapping 'Download' doesn't actually trigger a download. 156 - [] Auto-reload the piece after the browser tab has been suspended. 157 (How to trigger this or detect this?) 158 159*** $1 handle toll / troll toll *** 160 - [] Sketch out the copy for a new signup flow below... 161 - [] Instantiate a $1 handle fee for new users. 162 - [] Make a new product in Stripe. 163 - [] Handles can be remade. 164 165*** profiles *** 166 - [] refer to profile roadmap below in this file for moving paintings to profiles 167 - [] refer to ida's profile drawing 168 - [] entering 'profile @handle' will yield the profile 169 - [] add text links to chat 170 171*** prompt parameter discoverability / as you type *** 172 173*** 2d gpu *** 174 - [] make a new 2d webgl2 renderer 175 176*** ac store *** 177 - [] make a new ac store 178 - [] evaluate whether this should be 179 on shopify or coded in-house 180 - [] (can shopify use stripe as a payment processor?) 181 182*** value box ui element *** 183 - [🩷] Make a generic value box UI element for dragging numeric values 184 after holding down to affect a javascript or kid lisp value. 185 186*** `sotce-net` *** 187 - [] "substantial page count" 188 - [] take down `botce` 189 - [] make it free later on? 190 - [] 191 "really enjoying it, was already a part of my practice" 192 "i don't struggle to maintain it" 193 "good and stable" 194 195 "substack is buying me out, with a huge media push, soon" 196 "trying to get off patreon" - maybe contract? 197 198 "wondering what jeffrey wants to do, what role does jeffrey want" 199 200 - "talked about it being a more collaborative project" 201 - "i feel nervous to communicate about it" 202 203 - "communication doesn't feel productive" 204 - "sucks we don't have a feedback loop" 205 - "it's not fair to me, it's overwhelming" 206 - "makes me nervous to feel like i can't speak to you and you are hosting 207 all my of my work." 208 209 - first end 210 - sotce take over 211 - medium end 212 - jeffrey goes to 10% 213 - developer 214 - far end 215 - evolve things together 216 217*** `pill` / android devices and shop *** 218 - [] flash the uniherz jelly to boot directly into ac with 219 - [] custom boot screen 220 - [] 221 - [] set up a page to sell the phone through an ac `shop` command 222 - [] `pill` should go directly to the product page 223 224*** `write` refactor *** 225 - [🟠] `write` doesn't work inside of page() swaps because it's unwrapped. 226 would it be possible to make it so wipe works in a wrapped mode or write 227 a wrapped version? 228 229*** `notepat` nub *** 230 - [] Add a thinkpad nub shaker to `rattle` via pointer locking. 231 232*** hh *** 233 - [] entering 'handle-home urpiecehere' will change the user's 234 prompt.ac/@handle home piece to anything they wish 235 236*** backend() *** 237 - [] any ac piece should be able to make backend requests that mirror client 238 requests from the `prompt` 239 - [] Eg. `backend(list @bash)` or `backend(moods @jeffrey)`. 240 241*** emacs tabs *** 242 - [] add 'tunnel' ngrok emacs tab and rename source to code 243 244*** vscode.dev *** 245 - [-] fix vscode.dev extension error related to importing path and 246 typeof window === "undefined 247 248*** spectrogram *** 249 - [] add a long spectrographic buffer to `notepat` 250 so playable notes can be tracked / maybe it could 251 be circular / record like? 252 253*** new button api *** 254 - [] Rethink how to do a simpler button API... perhaps with "register" 255 and an act function? This could be implemented in 'tone'. 256 257*** 'art' bucket expiration *** 258 - [] the files are no longer expiring after 24 hours / an expiration policy 259 needs to be added again 260 261*** 'print' error *** 262 - [] https://art-aesthetic-computer.sfo3.digitaloceanspaces.com/ is not resolving in mexico 263 - [] bios.mjs:1212 Uncaught DataCloneError: Failed to execute 'postMessage' on 'Worker': ProgressEvent object could not be cloned. 264 265*** tweaked bresenham *** 266 - [] implement this tweaked version of bresenham for graph's circle routine: 267 https://funloop.org/post/2021-03-15-bresenham-circle-drawing-algorithm.html 268 269*** `baktok` broken tap *** 270 - [] test on laptop and phone 271 272*** triple undo tap *** 273 - [] Try to hide the undo overlay bar that appears when you three finger 274 tap on ios. 275 276*** bleep *** 277 - [🟠] fix bleep held key bug. 278 279*** prompt *** 280 - [] How should 'Paste' and 'Enter' appear / disappear in the main prompt 281 and in bots? 282 283*** notepad `slide` mode *** 284 - [] make it so slide works even if the 'fade' parameter is set on a sound. 285 286*** `whistle` *** 287 - [] fix whistle 'microphone-connect' message 288 289*** ucla ending / grading *** 290 - [x] me@jas.life 291 - [x] (Lab) Bouncing balls in ucla-7. 292 - [x] 3pm (Code) Review existing pieces. 293 - [x] Look through our work. 294 - [x] Make sure it exists. 295 - [x] (Concept / Discussion) Review notebooks. 296 297-- Required pieces... 298 At least one... 299 1- [] ucla-1 300 2- [] ucla-1-a 301 3- [] ucla-1-box 302 At least one... 303 4- [] ucla-2-a 304 5- [] ucla-2-b 305 Each one 306 - [] ucla-3-keyboard 307 - [] ucla-4 308 - [] ucla-5-rect 309 - [] ucla-5-worm 310 - [] ucla-6-clock 311 - [] ucla-6-turtle 312 - [] ucla-7-dial 313 - [] ucla-7-balls 314 - [] ucla-7-jump 315 316*** stamp *** 317 - [] Incorporate '@bash/officialstamp' source into a 'stamp' 318 command that allows pasting any handled painting. 319 320*** exit *** 321 - [] write an 'exit' command which will exit the current tab / window / app 322 323 324*** boot to ac *** 325 - [x] wire up the android jelly phone to boot directly into a chrome kiosk 326 that could load ac! 327 328*** ios "focus" *** 329 - [] use the screen time api to enable "focus" which disables all other apps. 330 331*** systems *** 332 - [] autoprompt for local ssl install off the qr code? 333 - [x] finish the local `ngrok` tunnel for all services and add socket support 334 - [x] needs to be working in localhost / in the vscode extension 335 - [] make sure the udp server works on local.aesthetic.computer 336 - [] fix vscode extension auth bug 337 - [] the 'act' function is sometimes not being exported automatically by the parser. 338 339- [] The 'Open Window' action in the VSCode extension no longer seems to work. 340- [] make sure .mjs saving works (EXCEPT on vscode.dev) 341 - [] It seems to still work fine on my local machine but didn't work for some students... maybe an old VS Code Extension version? 342- [] get puppeteer working again in development 343- [] entering `prod` in vscode extension or `local` should send a message that toggles "local" mode. 344- [] speed up the load time of the local server significantly... try re-enabling caching? and try to speed up the general loading. 345- [] make sure local and prod mode work automatically / well in the extension 346- [] chat needs external logs to check for failures 347- [] session udp service shouldn't fail or needs logs checked and should move to 348+ Done 349- [x] fix media.js function errors in development 350 351*** convo *** 352- [] how to structure a conversation 353- [] beginning, middle and end 354- [] conversation as media 355 performance 356 sport 357 replay 358 export 359 360*** `code` (kidlisp ed) ideas from class *** 361 - [] show an execution heatmap of so control flow can be intuited as a piece runs 362 - [] if a loaded kidlisp file fails to run, just make the '404' page the editor of its source 363 - [] enabled crowd-sourced backwards compatibility &&|| llm auto-patching 364 365*** ucla *** 366 - [] logout / login bug still persists (refresh tokens or extended sesions may be needed in the auth0 panel?) 367 - [] fix ink("magenta") issue with turtle graphics crawl not reading current value 368 - [] ucla-6-clock should have image loading / pasting from handled paintings 369 - [] always display first paint iteration. (corner skip in `ucla-2-a`) 370 - [] users need to log out and log back in before publishing 371 (sessions get lost) 372 - [-] test after opening and closing the pane 373 - [] test after opening and closing the vscode 374 - [] test after a system reboot / logout 375 - [] source save file defaults to top of hard drive on a mac? 376 - [🧗] design piano key activity / button activity for tuesday 377 - [] add linked list of user pieces to profile pages 378 - [] Use the `ucla-class` label for this? 379 - [] @joelle, @noelanio, @caihong, @kim, @toriwazhere, @mayomochi, @samanthaschen, @joda, @zuhair 380 - [] fix icon previews and thumbs in development 381 - [wip as #console 🧡] add the bios load text overlay 382 - [] Or come up with specific intro / test patterns for booting. 383 - [x] pick a font and throw some text up... 384 - [] individualized device notifications should be added now 385 - [] and only chats that mention the user's name should appear 386 - [] add ability for @jeffrey to delete chat messages via mobile 387 - [] add text links to chat 388 - [] Send a `log` notification when a deployment happens. 389 - [] buff out the profile pages / make new profile pages in kidlisp 390 - [] add image / pixels support to chat and also maybe kidlisp support 391 + Done 392 - [x] add drum kit for thursday how to make a touch based drum kit, with buttons 393 - [x] fix 'sawtooth' 394 - [x] design piano key activity / button activity for tuesday 395 - [x] add prutti 50 396 - [x] design `ucla-2` file / activity... (clone `ucla-1`) 397 - [x] investigate local socket disconnection situation 398 399*** add upside-down / `sing` mode to song *** 400 - [] refer to artur's `sign` demo from puerto rico 401 - [] add a flip colon param to song: `song:flip` to 402 flip the graphics 403 - [] should then be able to enter `song:flip respawn-timer` 404 to perform a custom song 405 > Street level multiplayer. 406 - [] if i `echo @jeffrey` then i should be able to hear the synth sounds 407 out of my own phone speaker as they come through the network, in 408 perhaps an assymetric fashion, but how would these be transmitted? 409 - ideally they would be via udp with a no miss / redundant option 410 - and 'echo' subscribes users to receive the echo udp messages of a user 411 and users should be removed from echo list on disconnect, etc. 412 413*** discords *** 414 - [-] Shut down the whistlegraph Discord. 415 + Done 416 - [x] Shut down the AC Discord. 417 418*** more *** 419 - [] suppress top-level function warnings in vscode 420 - [] switching from ac local to ac production while the user is logged in should somehow remain compatible or log the user out 421 - [] fix vscode.dev extension support 422 - [] why wouldn't the 'login' button have worked on that windows machine? 423 - [] draw an alternative dom based hud at smaller resolutions, or decouple 424 the hud / label rendering from the piece's actual resolution 425 (this would have to be done for the chat as well) 426 (and should probably wait until there is a new renderer) 427 428*** electron app *** 429 - [🟠] Make an aesthetic computer electron app that's capable of opening 430 new windows and builds for all platforms, especially linux and macos. 431 432*** devcontainer stuff *** 433 - [] Somehow automate the environment variable download / just ask for 434 the password on the CLI to retrieve it on the first run or actually 435 put that devcontainer.env inside the vault repo hmm... 436 + Done 437 - [x] Make it so that the devcontainer can be run just in a terminal. 438 using the devcontainer cli from npm. 439 440*** vercel *** 441 - [-] Remove vercel dependency / switch to a netlify function. 442 443*** experiment *** 444- [] build a 2d self-replicating thingy in kidlisp or a self-replicating 445 kidlisp proggy 446 447*** invites *** 448 - [] how would this work for virtual events, like inviting people in a class in real-time 449 to a space or session 450 - [] make a partiful invite clone that can send text messages to users 451 who give their phone number and can leave something on the board 452 453*** chat improvements *** 454 - [🟨] Add a "handles" directory to scroll through all active handles. 455 - [-] add a "system update" notifier based on commits - i should be able 456 to tag a commit or decide somehow if a `log` would be sent or not? 457 https://docs.netlify.com/site-deploys/notifications 458 - How do I add a post request receiver here that 459 has process.env.NETLIFY_SYSTEM_DEPLOY_JWT set to 460 match the token. 461 462 - [] Auto-link handles and single quoted words. 463 - [] color coded words in chat via kidlisp / how to integrate kidlisp? 464 - [] Separate README from TODO and make TODO visible in the system to help 465 the conversation along. 466 - [] Add pictures to chat. 467 - [] Add deletion of chat messages / better policing. 468 - [] Close chat for certain hours. (suggested by fia) 469 - [] Have an ambient announcement for policing that exists on 470 the periphery of the main activity and is temporal. 471 + Done 472 - [x] Should you be able to chat after logging out via the 473 "Pre-Authorized" array? Seems kinda unsafe, hmm... 24.05.20.20.54 474 - [think so?] Make sure the handle always shows and not the Create handle 475 button so long as the user is logged in... this could be done 476 by retrieving the handle in auth0. 477 - [x] Should you be able to chat after logging out via the 478 "Pre-Authorized" array? Seems kinda unsafe, hmm... 24.05.20.20.54 479 - [x] Fix blanking prompt 404. 480 - [x] Remove "fuck" handle. 481 - [x] Add an "admin:strip-handle" command. 482 - [x] Which calls the handle.js function and 483 is able to strip / erase a user's handle if the runner 484 of the command is an admin. 485 - [x] If the user is online then reload their page via chat server. 486 - [x] Test hourglass in chat via `hiccup` command. 487 - [x] Add profanity filter check to handle creation. 488 - [x] Add hourglass to "Connecting..." in chat, and maybe don't 489 blank the screen so crazy? 490 - [x] Add the same Hourglass to "Enter message..." as well. 491 - [x] Add a prompt cmd to force disconnection for N, in N seconds seconds, perhaps 492 via a debug only shortcut? Call it a `hiccup` command? 493 - [x] Only trim whitespace at the end of messages. 494 - [x] Increase chat character limit to 96. 495 - [x] Better handle rendering after change (add the "@"); 496 - [x] Fix blanking chat. 497 - [x] A successfull login should broadcast to all other thumbnails 498 and trigger a refresh - same with logging out! 499 500*** auth synchronization questions *** 501 - [] Are logins / logouts *too* synchronized? 502 - [] If I'm logged into localhost am I also logged into production? 503 504*** gen music *** 505 - [] Make some generative ambient music in kidlisp that I can actually 506 listen to while coding without it being annoying. 507 - [] Make it so I can always edit the code / algorithm that makes this 508 music anytime it is playing... (This could be done through having 509 kidlisp in a separate window or buffer / audio-out only version 510 of ac running.) 511 - [] Or this could be one of the first applications of the kidlisp gui. 512 513*** annoyances from demos *** 514- [] first set handle shouldnt be added to history 515- [] Make sure `source anything.lisp` works. 516- [?] Reinstall x11 server on windows 11. 517- [] Single unbroken chat messages with no whitespace longer than a line are 518 missing the single space gap after the username. 519- [] update privacy policy 520- [] Give chat messages a UUID / reference number so they can be 521 linked in the TODO. Technically this can be a time window query that 522 is something like `🗨️:system:56262-72837` for a range or just an 523 exact / closest match if a single integer is given. 524 525*** call *** 526 - [] Calling would function like a walkie talkie. 527 - [] call girlfriend 528 - [] reuses code from existing girlfriend 529 - [] adds a fake "face" graphic for this character 530 - [] call @handle 531 - [] notifies each user 532 - [] users can define an avatar for this 533 534*** ios day *** 535- [] Implement this in the iOS app: https://stackoverflow.com/a/71678197 536 (Make aesthetic reload when the webViewWebContentProcessDidTerminate is 537 called) 538- [] Fix the `nonotifs` bug not working, for sat / in general. 539 Maybe the feature can be centered on an actual account flag? 540- [] Support individualized notifications. 541 542*** selfnotif handling *** 543 - [] Don't send notifications to that particular user right after closing the app / just disable all "self-sent" notifications somehow. 544 - [] Remove local redis instance... why use it tbh? 545 546*** more chat updates *** 547 - [] live updates of recent chat messages on prompt page 548 (needs sound and a beep) 549 - [] prompt can enter a showdy "prompt standyby" chat mode. 550 - [] smoother progressive loading animation that visualizes the loading process on the checkerboard 551 - [] entering and leaving chat need to go in the log 552 - [] what about notifications related to entering and leaving anywhere? 553 where should they appear? 554 555*** profile.lisp *** 556 - [-] Make new profile page with redirects for no handle. 557 - [] Refactor existing profile.mjs into `paintings.mjs`. 558 + Done 559 - [x] If email is unverified and user is on homepage or 560 on profile page... 561 - [x] Check your email to verify or resend. 562 - [x] Set a handle. (prefill handle) 563 - [x] Please sign up. 564 - [x] entering "profile" or "me" while logged out or not signed up 565 will flash "not logged in" and close keyboard, revealing login and 566 signup buttons 567 568*** list improvements *** 569 - [] Categorize the "list" items / revisit list a bit. 570 571*** Chat modes + Colorization *** 572 - [] Brushes in chat. 573 - [] Playing as... 574 - [] Ghost mode for hidden / unhandled messages. 575 - [] Ghosted messages should never let user identifiers leave the server. 576 - [] System wide handle colorization with tooling. 577 578*** Chat updates. *** 579 - [❗] Need a fix for users entering chat and entering `song` right 580 away / chat prompt inter-op ui. 581 - [] iOS chat app refresh doesn't always work / how to know 582 when the page goes stale? 583 - [] Add support for `pix` in chat. 584 - [] Add `log` sound. 585 - [] Add `bgm` visualizer to chat. 586 - [] Tappable messages with context menu and deletion. 587 - [] Smooth scrolling. 588 - [] Infinite scrolling / fetching. 589 + Done 590 - [x] Swap handle chat location. 591 - [x] Rewrite a user's messages with `delete-erase-and-forget-me`. 592 - [x] Get account deletion / "message deleted" functionality working properly. 593 - [x] Any "log" that is created also needs to associate any potential user identifiers, so they can be erased or queried if possible. 594 - [x] Send a message to the chat whenever a new handle is registered for 595 the first time, and a different message whenever a handle changes... 596 - [x] I suppose this would work via redis broadcasts? 597 598*** webgl2 rasterizer (`graphics`) *** 599 - [*] Fix line plot inconsistency / understand it better. 600 - [] Add support for bitmaps in the 2D renderer. 601 - [*] Fix / match alpha blending across the software rasterizer and the GPU renderer. 602 - [] Add a per-piece software switch to enable the webgl2 renderer 603 and disable the software one. 604 - [] The lisp should never have the software one enabed. 605 - [] Run the line test at a high resolution. 606 + Done 607 - [x] Add support for secondary ink color in the API and in the 2D renderer. 608 - [x] Add support for points in the 2D renderer. 609 610*** general compositing *** 611 - [] the "pause" overlay on windows / high refresh rate is pretty awkward... 612 - [] resizing is also weird - could these be related? 613 614*** kid-lisp *** 615 - [] Support refreshing and showing of source code in (...) pieces. 616 - [] Be able to run and then remodify last run code... 617 - [🐰] Make a basic graphical editor / viewer. 618 619*** brushes *** 620 - [] Add auto-interpolation to brushes. 621 - [] This could be done through... 622 `export const smoothing = "none"` 623 `export const smoothing = "linear"` 624 `export const smoothing = "curve"` 625 - [] Rewrite artur's brush in the kidlisp graphical editor. 626 627*** webgpu rasterizer *** 628 - [🪁] follow this webgpu rasterizer tutorial: https://github.com/OmarShehata/webgpu-compute-rasterizer/blob/main/how-to-build-a-compute-rasterizer.md 629 630*** performance speed *** 631 - [🏃] Make /prompt load faster than 0.3s in production. 632 - [] Cut down the size of bios.mjs and disk.mjs so they are both 633 around 3k lines or less / break functionality into other files. 634 - [] `disk.mjs` 635 - [] `bios.mjs` 636 - [] Speed up other stuff on the `Performance insights` chart, by eager loading / waiting less. 637 638*** org-mode learning *** 639 - https://zzamboni.org/post/beautifying-org-mode-in-emacs/ 640 - Add variable pitch fonts to org-mode. 641 642*** chat *** 643 - [] Add ability to show pixels in the chat / share current work, with 644 the ability to steal pixels as well / remix. 645 - [] Notification rollup. 646 - [🟠] Get the chat integration in `line` and `rect` and other brushes 647 to be an interactive pop-up. 648 - [] Add high resolution / PIXIjs renderer to the `chat` piece only. 649 ------------------------------------------------------------------------------ 650 - [] Make `help` channel as the first 2nd instance for chat. 651 - [] Users should be able to "swap" channels but just enable it in a separate 652 `help` piece similar to how `chat` is implemented. 653 - [] Add custom / cool notification icons, and also sounds? 654 - [] Templated method from here didn't seem to work: https://firebase.google.com/docs/cloud-messaging/android/send-image 655 - [] This could use the redis loop? 656 - [] Add radio / background music. 657 - [] Or show bgm waveform. 658 - [] `chat bgm` 659 - [] Use a tinier font for usernames? 660 - [] `chat` needs light and dark default 661 - [] Natural emojis could potentially be shown 662 in a Canvas2D or WebGL overlay. 663 - [] So then there should always be a full resolution buffer in the renderer? 664 - [] Chat would need to always be everywhere 665 even on "low resolution" pieces and the 666 UI event loop needs to remain on while pieces are switching out. 667 - [] Which means more than one framebuffer will be 668 needed - one for "display" and one for "piece". 669 - [] Fix email address could not be verified sign up message: https://discord.com/channels/890376329957081138/890376329957081144/1225363479649845352 670 - [] Add the ability to show pixels in chat. 671 - [] Paintings should be resolution limited 672 and re-uploaded / copied to a bucket just 673 for that particular chat message. 674 - [] Add a 'mask' / 'play' command for dramaturgy. 675 - [] How would this enter into the database? 676 - [] It should be unhandled but have an "admin" ? 677 - [] Just an extra field for what mask was used. 678 - [] Make a panel in the logs to watch it stream in. 679 - [] Then appear for other users and the current user. 680 (Just make the text fully synchronized for now.) 681 - [] Make a new "notification type" for chat and add it into an iOS app update. 682 + Done 683 - [x] Add message sounds. 684 - [x] Only render lines of text that appear inside the margin. 685 - [x] Keyboard does not reactivate / open after tapping corner word. 686 - [x] Show the user's handle in corner if it exists. 687 - [x] Move top margin up. 688 - [x] Don't render any text / long messages off-screen. 689 - [x] Limit chat message length, both on client and on server. 690 - [x] Server 691 - [x] Client 692 - [x] Numeric 0/n counter. 693 - [x] Notice 694 - [x] Move the paste button up half-way. 695 - [x] Integrate chat interface into the `disk.mjs` file, 696 using the `chat` piece as a flag for enabling the integration. 697 - [x] Enable the chat ui overlay for all pieces in the `nopaint` system. 698 - [x] Show last chat message on homepage. 699 - [x] Have the chat server running as a separate websocket connection, then that number can be used for total users online. 700 - [x] Be able to delete certain recent messages manually in MongoDB. 701 - (Can be done through the atlas cloud interface) 702 - [x] Add scroll with scroll bar that auto-expands if you go back 703 too far. 704 - [x] Add line breaks to chat. 705 - [x] Add chat to the docs / `list` command and to autocomplete. 706 - [x] Fix initial db fetch order. 707 - [x] It should persist in the database under a table. 708 - [x] These messages should send notifications. 709 - [x] Add a `chat` command with a persistent list of messages. 710 - [x] Spin up a nanos unikernel test server for the chat. 711 - [x] Deploy it to the google cloud. 712 - [x] https://console.cloud.google.com/compute/instances?project=aesthetic-computer 713 - [x] Add https and ssl and a subdomain. 714 - [x] Add the 'chat' tab-bar item / CLI client that can log the chat 715 and also send messages? 716 717*** dev / desktop usability *** 718 - [-] Add global ctrl+shift+ and ctrl+shift- shortcuts for 719 zooming the pixel density of the ac renderer, keeping the crosshair 720 size (overall browser zoom) the same. 721 - [] The Ctrl+` shortcut should pass through to the VS Code extension 722 (by sending the host a message) which would unfocus it and refocus on either the editor or terminal... perhaps whichever had the focus? 723 - [] There should also be a shortcut to focus on AC immediately. 724 725** piece authoring helpers *** 726 - [] make an `icon` piece where you can `icon prompt` or `icon anything` to 727 preview the icon for a piece. 728 - [] (do the same for `preview` for preview images) 729 730*** desktop app / electron build *** 731 - [] Follow a guide at https://www.electronforge.io. 732 733*** `world` <-> `painting` <-> piece integrations *** 734 - [🔴] Joining field and being on the same handle would enter a spectate / take control sort of situation. 735 - [] Be able to easily complete a painting and then include it in a piece 736 in a single line... 737 - [] Add the ability to name a painting so it can more 738 easily be referenced, like for example in a `stamp @jeffrey/flower` tool. 739 Or especially like old CS 1.5 sprays. 740 - [] Should be able to say `done flower` to make the alias. 741 - [] Also should be able to remove and change aliases. 742 - [] Then a logged in user can `paste flower`. 743 - [] There should be a command to set temporary names without persisting 744 them to the network? Well... that's just empty `show` or maybe 745 there could be a buffer of paintings in progress, similar to how 746 text editors have buffers. 747 - [] How to handle multiple handled users in the same room. 748 (Make primary vs. a ghost type of view-only behavior?) 749 - [] How to have two windows or machines up and use a put command while 750 modifying pixels. (Always store current painting in the cloud for a registered user.) 751 - [] Implement `paste` and send the pixels through the backend. 752 + Done 753 - [x] User world persistence with floating command notifications. 754 - [x] User world persistence. 755 - [x] Better visual list of users / skip lines. 756 + Done 757 - [x] Keep a ghost / location of the user once they leave field or whatever world position. 758 - [x] This should require a handle, to reassociate the user? 759 - [x] Floating command notifications. 760 761 - [x] Maybe I could overload `paste` to include user strings... 762 - [x] Share current painting in `world` using a `show` command. 763 - [x] Also add `hide` command. 764 - [x] Add connection flash to world. 765 766*** fps *** 767 - [] Add a draggable window to the vs-code extension, to support dual 768 monitor development where the bottom monitor is full-screen. 769 (This should enable more immersive development / help with monitoring.) 770 - 📆 In a week 771 (https://github.com/microsoft/vscode/issues/208790) 772 773- [-] Auth is messed up in the VSCode extension. 774 - [] Potentially when switching between Local Development mode and 775 production. 776 - [-] In general after logging out, one appears to stay logged in? 777 778*** sean meeting w/ ida *** 779 - [] system update notification feed 780 - [] computer needs to say how it gets better 781 - [] moat of learning on the fringes 782 - [] ac openings can be a thing / do a feral-file opening 783 784*** swipe to share *** 785 - [] dragging the corner label all the way to the right should always reveal a "share" prefix and then letting go will jump to `share x`. 786 787*** vscode extension *** 788 - [] Fix weird auth things / loss of auth in the vscode extension? 789 790*** aspen demo *** 791 - [] Screenshot needs to work / resize if necessary from a webgl / 3d view. 792 793*** note *** 794 - [] add note and notes and 'noted' notification 795 796*** yuehao demo *** 797 - [] Scream notification after sign up didn't work... 798 799*** Meeting with Petra *** 800 - [] Add support for CMYK, with a special prefix? 801 + Done 802 - [x] Allow hashtag in first color parameter. 803 - [x] Downcase hex colors. 804 805*** song demo idea from rip it up party *** 806 - [] Add a forward and backward button to song. 807 - [] Add different wavetypes to song. (Wavetype per note). 808 - [] Add more melodies to song. 809 - [] Release a track with song that kind of works like a sampler. 810 - [] With a title screen that has [ Play -> `x` | Record -> `tape x` ] 811 812- Miles (Sunday) 813 *** `crayon` *** 814 - [] Fix the double buffer paint after each gesture. 815 - [] Colors drift too much from their original value permanently after 816 making a gesture. 817 - [] A little splotchy, marks should feel uniform. 818 - [] Interpolate gesture using a Catmull-Rom spline or based on speed / physics using a leash. 819 *** load performance *** 820 - [x] Spend a half day just on getting the site to load faster. 821 822*** making things alive *** 823 - [-] Pasting graphics in `field` is important. 824 - [] Add `show` and `hide` for temporary show and tell. 825 - [] Add `paste` for permanent bitmap pasting, maybe in 826 a piece called `graf` that can be linked to from `field`? 827 828*** making the aliveness visible *** 829 - [] Build a simple version of `log` now that we have list. 830 831*** casting *** 832 - [] Get a nice headset that I can actually record Fedora screencasts with so 833 I can start posting simple tutorials from my laptop / possibly edited 834 on my phone or even on AC through screen recording? 835 836*** `pal` *** 837 - [] Make a palette syntax for sharing a list with tap back functionality. 838 839*** `pic` `pix` *** 840 - [] 164 / 128 3x4 841 - [] https://prompt.ac/pic~here~is~my~cat 842 843*** API design *** 844 - [] Whitelist some of the APIs for the docs and for usage in user pieces. 845 - [] Overloaded functions and commands > different function names. 846 - [] I guess this means it needs to load the api once whenever a user piece loads? 847 - [] Screen user pieces for fetch requests. (Don't allow them.) 848 - [] Write a great example / polish the pieces repo. 849 - [] Can I programmatically use `api/doc` to whitelist the api 850 if it's code running from a user piece and the `run` endpoint? 851 + Done 852 - [x] Build `docs` pages. 853 - [x] Should it be called docs? 854 - [x] Remove or deprecate the old `list` html design from `docs`? 855 856*** `code words` *** 857 - [] A commission program for people to code ac nouns and verbs in their 858 language of choice. 859 860*** prompt regression *** 861 - [] `load` should load a photo / be similar to `paste` and work on mobile. 862 863*** media variables *** 864 - [] Set "variable" names when using `done`, helpful for show and tell. 865 866*** pray *** 867 - [] An altrnative to `scream`. 868 869*** birthday *** 870 - [] Add a `birthday` command that taps through the birthday 871 and also takes their name and age. 872 873*** aspen suggestions *** 874 - [] `tree` command with `tree summer` `tree winter` etc. 875 - [] `hurricane` natural disaster sim. (dark) 876 - [] downcase / case-match commands in the prompt and world 877 878- [] Zoom in on painting in mobile. 879 880*** `world` *** 881 - [] Make shaped worlds using inner poly collision and points for boundaries. 882 - [] And then this can be passed instead of width and height? 883 884*** webvm / xterm *** 885 - [] Explore using xterm: https://xtermjs.org/ 886 - [] Explore webvm: https://labs.leaningtech.com/blog/mini-webvm-your-linux-box-from-dockerfile-via-wasm 887 - [] Could something like an xterm instance be somehow connected 888 to the `chat` feature? 889 - [] No because that might prevent different rendering aesthetic, unless 890 I have my own rendering layer... 891 - [] Which could be text 892 - [] Emoji support via https://joypixels.com. 893 89448 Hours: 895*** webgl2 renderer *** 896 - [] More work on webgl2 renderer. 897 898*** migrate netlify functions *** 899 - [] Move ask off of vercel to a netlify 2.0 streaming function. 900 - [] https://twitter.com/biilmann/status/1712527635975385165 901 - [] https://www.netlify.com/blog/introducing-netlify-functions-2-0/?utm_source=twitter&utm_medium=social&utm_campaign=netlifyfunctions 902 903Full day: 904*** `log` *** 905 - [-] Print a live global activity log than anyone can watch. 906 - [] Choose some good events to broadcast. 907 - [] This should eventually be streamable from any piece or visible 908 on the prompt. 909 - [] Top right tap to enter text, then be able to chat, from any 910 piece. 911 - [] Add filtering like `log:scream`. 912 9132-3 days: 914*** `android app` *** 915 - [] Set up / start android app / make sure android studio 916 is installed. 917 - [] Add support for notifications. 918 9191 day 920*** `paintings` *** 921 - [] Show a feed of user made paintings in order, only showing one per 922 user. 923 9242-3 hrs 925*** `painters` *** 926 - [] A linked list of users and their paintings by count. 927 9281 day 929*** `blog` *** 930 - [] Build CRUD pages. 931 - [] Maybe use a vscode instance / route it through piece publishing? 932 - [] So a piece type can be considered a "post". 933 - [] Add the ability to include high resolution text easily. 934 - [] Editor 935 - [] Viewer 936 9372 days 938*** `autocomplete` *** 939 - [] `review any text editing bugs in the main prompt` 940 - [] Preview commands / show all possible comands like auto-complete. 941 - [] How to deal with commands that are textual subsets: `but, butter`. 942 943*** `dync` *** 944 - [] Hit a button on an XY axis that maps a percussive sine wave 945 to white noise on one axis and pitch on the other. 946 - [] Multi touchable. 947 - [] Tilt for volume with visual feedback. 948 949*** `chord` *** 950 - [] Make a 4-string simulator with chords that can 951 also play the words through of a song. 952 953*** `go` *** 954 - [] And then `cave:entrance` 955 - [] Create a `go` command that always returns you to your last worldly 956 location. 957 + Done 958 - [x] Fix double listing issue (seen via sat) 959 - [x] Polish spatial linking. 960 - [x] Walk to `horizon`. 961 - [x] Make `horizon`. 962 - [x] Finish `field`. 963 - [x] Show an orange or red status if UDP or sockets get disconnected while 964 aesthetic is in use. 965 - [x] Both `socket` and `udp` need disconnect messages / 966 prevent big fish list? 967 968*** `dia` *** 969 - [] Run a written / readable dialogue for two. 970 - [] JSON structure with two characters. 971 972*** `ten` *** 973 - [] Some kind of Pong clone with 2 player matching and also 974 spectators / round-based play? 975 - [] Should be visitable from the world. 976 977*** `chanel` *** 978 - [] Entering `chanel` will take you to a dress picture. 979 - [] Title text: 980 - [] Copy text: 981 - [] [Dress photos.] 982 - [] Button in the corner that says [$256]. 983 - [] Custom email. 984 985*** new session request *** 986 - [] When / if a session server goes offline, try to request a new one. 987 - [-] This can be done by running an http get request on the endpoint to 988 see if it's still online and also checking against navigator.onLine 989 990*** `ptt` *** 991 - [-] Make `ptt` voice chat prototype. 992 993*** `contain` *** 994 - [] Contain the random positions in the drawing API for things like 995 `line()` etc. 996 997*** better email verification flow... *** 998 - [] Say "email verified" as a notice after email verification is tapped? 999 - [] https://chat.openai.com/c/c9898bf6-62f6-4654-a54e-9c8ba47f5681 1000 1001*** `pond` production *** 1002 - [] Finish the basics in `go`. 1003 - [] See `pond.mjs`. 1004 1005*** automate honest fabric checkout *** 1006 - [] https://www.honestfabric.com/shop/checkout 1007 1008*** cab meeting *** 1009 - [] Set up DMARC for emails. 1010 1011*** `sno` launch - Dec ?? *** 1012 - [] See `sno.mjs`. 1013 1014*** `Paste` for image *** 1015 - [] Tie the Paste button to image drag and drop. 1016 - [] Make sure `paste` works on mobile and desktop / could rename it to import? 1017 - [] Resize dragged in images to fit the display width and height / have a max? 1018 1019*** Database *** 1020 - [] Add database setting and clearing on a per-piece basis. 1021 - [] Need to be able to verify what piece is running in a way that 1022 is not easily tamperable. (Validate by system or handle based piece / what URL it was loaded from.) 1023 - [] Need `set` and `clear` and `get` API. 1024 1025*** readme switch *** 1026 - [] Split README off from TODO. 1027 - [] Make it markdown? Or leave it .txt? 1028 1029*** VSCode Extension Improvements *** 1030 (See also: https://discord.com/channels/890376329957081138/890376329957081144/1171956446641016932) 1031 - [] Make sure going to prompt and returning to the piece / entering new 1032 params will still work and that piece name replaces other pieces. 1033 - [] Add support for params and piece renaming to the VS code extension. 1034 - [] Make sure the page can be refreshed and the connection / new code 1035 still persists. 1036 - [] Make sure piece-halting errors will still auto-refresh. 1037 - [] Add / research support for packages. 1038 (Published groups of `.zip` files based on a directory) 1039 1040*** wizards *** 1041 - [] Use the "|" operator to make stepped wizards / looped pieces. 1042 1043*** user pieces *** 1044 - [-] Consider the versioning of published pieces / 1045 how they should be added to the database. 1046 - [] Jump to any user space with admin:space @handle 1047 - https://cloud.digitalocean.com/spaces/user.aesthetic.computer?path=auth0%7C650ef5167fd48ae4910e048c%2F&deleteObject=&type= 1048 - [x] Add user pieces to the database and wire up the 1049 media collection endpoint. 1050 1051*** painting forking & remixing *** 1052 - [] "Stolen from: @user/20323:4"; 1053 1054*** pond awareness *** 1055 - [] Set ambient pen pointer color to cyan / flicker cyan if the user 1056 is in the pond. 1057 1058*** `but` suite *** 1059 - `helikesmebut`, `helikesmybut` 1060 - `ilikeubut`, `ilikeurbut` 1061 1062*** Painting *** 1063 - [] Finish `brush` template for paint brushes. 1064 - [*] Add auto-resize back? 1065 - [] fix `vary` 1066 - [] Add a `pull` brush. 1067 - [-] Add Zoom for all brushes. 🔵 1068 - [🟠] `line` 1069 (Read implementation in `rect`) 1070 - [] `oval` 1071 - [] `word` 1072 - [🟠] Always have a secondary buffer. 1073 - [] Add an `info` command to view painting info. 1074 - [] Add color picker. 🔵 1075 - [] Also add rotation. 1076 - [] Entering any valid cssColor, hexColor, or RGB values on 1077 the prompt should be an alias for `wipe color` and 1078 `wipe color` needs to be coded properly? 1079 - [] Double tap Shift key to reset pan. (Remove ALT) 1080 + Done 1081 - [x] (Make sure erase works perfectly in rect) 1082 (Is `pan` much slower now because of the new blend?) 1083 - [x] `rect erase` no longer works 1084 - [x] Contextually show whether we are zoomed or not, perhaps with a border? 1085 - [x] Make sure `nopan` centers a zoomed canvas. 1086 - [x] Implement for `rect` 1087 - [x] Add basic rainbow for `rect` and `line`. 1088 1089*** Painting Listing Pages *** 1090 - [] Scrape all user media and add records to the database. 1091 - [] Write a one-time runnable task for this. 1092 - [] Add a new record whenever something is uploaded. 1093 - [] See `bios` -> where `presigned-upload-url` succeeds. 1094 1095*** painting page *** 1096 - [🧡] Shorten the corner word on painting pages / remove the timestamp 1097 especially if it will be seen in the corner. 1098 (Word wrap it) 1099 - [] Single finger pan. 1100 - [] Painting pages need a left and right screen tap to advance or retreat. 1101 - [] Always record a painting by default now? 1102 - [] Make a nicer loading transition for painting pages that load 1103 an animation (Always show the last frame for a given duration.) 1104 - [] Play forward or by a single step. 1105 (Minting is a form of printing.) 1106 (See if Zora can accept prefilled form data parameters on their minting page: https://support.zora.co/en/articles/7131468-zora101-how-to-create-a-multi-edition-erc-1155) 1107 - I want to be able to send them a URL for an image that they can use to prefill 1108 the form fields. 1109 + Done 1110 - [x] Add a transparent image tag overlay for tap to save on every 1111 painting page. 1112 - [x] Tap and hold to save on an invisible image tag. 1113 - [x] Also make a mint command in addition to a print command. 1114 - [x] Static image on page. 1115 - [x] Painting pages need a [Mint] button. 1116 - [x] Move buttons above progress bar (action area) 1117 1118*** Recordable Paintings *** 1119 How-to: Enter `painting:start` to start. 1120 Enter `painting` to view the history so far. 1121 Enter `painting:done` to download the complete history 1122 of your painting. Or `painting:done upload` or `u` to upload it, 1123 along with the current painting. 1124 1125 - [🟠] Store gesture data in the recording. 1126 - [] Of each current step... 1127 - [] See `nopaint.mjs` line 56... 1128 - [] And the gestures translated to the painting itself needs to be tracked. 1129 - [] So that live playback can occur if necessary. 1130 1131 + Done 1132 - [x] Separate paintings and painting-records in S3, and always 1133 keep a PNG and a ZIP (if the recording exists) and have the 1134 timestamps match. 1135 - [x] Rename "steps.txt" to "steps.json" 1136 - [x] Store metadata for the media type (in the json filename). 1137 - [x] Add `timestamp` to the text data format. 1138 - [x] The `painting` viewer should have the timestamp in the corner. 1139 - [x] Store recorded painting steps in idb so they persist 1140 across refreshes. 1141 - [x] Add recording indicator. 1142 - [x] `painting insert-code-here` to play back an uploaded recording. 1143 - [x] Drag in a zip to unpack and play back a recording. 1144 - [x] Add a special mode for making "recordable paintings". 1145 - [x] `painting:done` to complete and download a zip of the recording. 1146 - [x] Upload zips to S3? 1147 - [x] `painting` to play back the current recording. 1148 - [x] `painting:record` to start a recording. 1149 1150** tmi thoughts from amelia on seeing code *** 1151 - [] "Nobody else wants to do this." 1152 - [] "There is too much information." 1153 - [] "Why does it have to look like this?" 1154 1155*** Research *** 1156 - [] Piczo 1157 1158*** Logo *** 1159 - [] Add ice cream pals to `pals.aesthetic.computer.` 1160 - [] See if this starts working: https://logo.aesthetic.computer/painting-2023.8.01.14.04.png 1161 1162*** word -> write *** 1163 - [] What other commands should be renamed now? 1164 1165*** mood links *** 1166 - [] underlined and different colors 1167 - [] links to pieces and surround with ``. 1168 1169*** BakTok *** 1170 - [] Make the audio scrubbable. 1171 1172*** Prompt / Piece Cache *** 1173 - [] Fonts sometimes don't load all the way on prompt. 1174 - [] The piece cache doesn't seem to work / loading times are always 1175 present on iOS? 1176 1177*** rainbow bot text *** 1178 - [] Stop printing rainbow text on the bot replies. 1179 1180*** `tape` *** 1181 - [] Test recoding cutoff again / make sure it never happens. 1182 (Possibly by measuring audio playback?) 1183 - [] Bring back mouse and touch cursor support, by recording during frame 1184 capture. 1185 - [] Work more on recording subtleties. 1186 - [] Mic playback gain removal. 1187 - [] Automatically increase playback in `baktok` / mix mic / playback 1188 special for baktok? 1189 - [] Implement the TikTok API: https://developers.tiktok.com/doc/login-kit-web 1190 - [] This should allow users to post draft directly inside of the app? 1191 - [] https://developers.tiktok.com/app/7280753774627768325 1192 - [] Make a privacy policy and ToS permalink. 1193 - [] How can I integrate with whisper to auto-add subtitles? 1194 - [] Re-enable multi-clip recording. 1195 - [] Re-enable page refresh support / store previous clips. 1196 1197*** prompt *** 1198 - [] The main page prompt should be removed... it kills the feedback loop, 1199 and instead a help bot should replace it. 1200 - [] Entering an incorrect command should flash the screen red but 1201 not clear the text. This also needs to be a negative sound. 1202 - [] Entering correct things should make a positive sound. 1203 1204*** @aesthetic.computer *** 1205 - [] Make the first instagram grid post. 1206 - [] Have "word" be wrapped and centered based on the painting by default. 1207 1208- [-] Page sometimes doesn't load on iOS, so what's the hangup? 1209 - [] Debug the hang to see if it still exists. 1210- [] Review new Safari release notes: https://webkit.org/blog/14445/webkit-features-in-safari-17-0 1211 1212*** user generated media *** 1213 - [] You can do version updates on code but old versions are kept of the same 1214 name and new versions are auto-incremented but the original name 1215 always points to the newest version, and there will be a way to get 1216 a list of versions. 1217 - [] Paintings cannot be modified but maybe deleted. 1218 - [] Same goes for all other media. 1219 1220*** typing `print` *** 1221 - [] Should be the same as `done` and then typing `print`. 1222 - [] `user/prints` -> goes to folder and adds a record to the database 1223 metadata on how many times this image has been printed 1224 1225*** picture call *** 1226 - [] `snaptok` (^-^) 1227 - [] `meet`, `talk`, `say` 1228 - [] Implement voice calls with: https://console.agora.io/ 1229 1230*** etude *** 1231 - [] Play an automated musical piece designed to express the functionality 1232 of a.c. 1233 1234*** ✨ Rattle *** 1235 - [] Make rattle prototype functional. 1236 1237*** Apple Pencil Painting Support *** 1238 - [🍏] Hook iPad into a MacBook to fix apple pencil support for brushes. 1239 1240*** Upgrade some client libs... *** 1241 - [] Three.JS ? 1242 1243*** artur painting story *** 1244 - [] Truncate or fade long prompt corner strings if they go past the screen 1245 width. 1246 1247*** faster user media urls *** 1248 - [x] Why is the handle lookup being so goddamn slow? 1249 - [x] Migrate data to a mongodb atlas cluster... which should be faster? 1250 - [-] How fast can it get? 1251 - [x] Store in redis. 1252 - [x] Sign up for Cloudflare 1253 - [] Cache the output of the handle page so it's much faster? 1254 And uncache it via the API when needed? 1255 - [] Cache tts replies also? 1256 1257 - [-] Clean media urls should just go to a painting "viewer" type of page. 1258 - [] https://docs.netlify.com/edge-functions/limits 1259 - [] https://answers.netlify.com/t/new-syntax-for-rewrites-in-edge-functions/88257 1260 - [x] Have local requests use the user bucket directly. 1261 1262*** Mintable Paintings *** 1263 - [] Hook it all up to a marketplace instance? 1264 - [] Everyone should be able to mint? 1265 - [] Add mint button in playback corner? 1266 1267*** General Brush Notes *** 1268 - [] Make sure `left`, `right`, `flip` and `flop` are all added to 1269 piece history. 1270 😱 (All commands should be?) 1271 1272*** handle updates *** 1273 - [] Handle updates were not working for mitch. 1274 1275*** Recordable Painting Game / Journal *** 1276 - [] Game starts by entering `no! 128` or `no! 64 32` etc. with a resolution. 1277 - [] There is an indicator line or box around the screen the whole game. 1278 - [] Game ends when typing `yes!`. 1279 - [] Record the resulting bitmap after each command that modifies it, using 1280 the `slug` of what was entered as the key. 1281 - [] Capture the "gestures" for each brush via a global "gesture", 1282 function of some kind? `system.nopaint.gesture` 1283 - [] Step through each command, and if a gesture exists, then it can 1284 be played back. (or skipped) 1285 1286*** poem *** 1287 - [] Scaffold the `poem` recorder. 1288 - [] Poem will implement TextInput, but not the prompt system. 1289 1290*** Polishing *** 1291 - [] Optimize the site's initial load... 1292 - [] Change the starter noise function if the starting 1293 piece is botce. 1294 - [] Don't load the auth0 library until after we booted. 1295 - [] Optimize image loading / database access. 1296 - [] Measure the latency using a CLI even try a different host? 1297 (After migrating the database.) 1298 - [] Try using an edge function or something? 1299 1300 - [] Painting now needs zoom... 1301 - [] NaskjdlkjsETWORK FAILURE 1302 - [👱‍♀️] Add painting include support and images to front-facing bots. (`gargoyle`, `liar` … ) 1303 - [] Add name to top left corner of all bots. 1304 - [-] Add countdown / progress overlay to no and yes? 1305 - [ ] Better "yes!" support / cooler download screen. 1306 - [] Finish all todos in `botce`. 1307 - [] Remove `botce` from intro text. 1308 - [🟠] Revisit `worker.js` to fix download link url names. 1309 - [] Files need to be stored in the database... 1310 - [] With a flag for completion, ticked after the presigned-upload-url 1311 completes? 1312 - [] Spaces on new line breaks no longer work on `prompt` ? 1313 - [] Add starfield to prompt. 1314 - [] Tappable floaty words on prompt. 1315 - [] Gutter max with but no min width. 1316 - [] Draggable gutter? 1317 - [] "?" appears after typing a valid word. 1318 - [] "?" jumps to a `learn piece` page for learning more about a piece. 1319 - [] `Ctrl+x` fullscreen keyboard shortcut does not work on `prompt`. 1320 + Done 1321 - [x] Remove paste button from homepage on first appearance. 1322 - [x] Dragging a new image into a.c should reset the pan. 1323 - [x] Eliminate Enter button download for painting and also N and P shortcuts. 1324 - [x] Better dynamic `preview` / thumbnail images. 1325 - [x] More forgivable colon spacing. 1326 - [x] Shouldn't be able to load the prompt from the prompt / 1327 pressing the [`] shortcut stops the letters from loading / gets weird. 1328 - [x] Fix Shift+ENTER 1329 - [x] Publishing should jump you directly to your finished piece url. 1330 - [x] Typing `profile` or jumping to `profile` should route you to your profile. 1331 - [c] Typing an email should also take you to the user's profile. 1332 - [x] Tapping the user profile button should take them to their profile. 1333 - [x] User profile button should be replaced with their current handle if it 1334 - [x] Put most recent mood on user's profile. 1335 - [x] `mood` command / status updates per user 1336 (visible on their profiles) homepage should show last @jeffrey mood. 1337 - [x] Typing @user on prompt goes to /@user instead of profile. 1338 - [x] Profile name at top left is user's username. 1339 - [x] aesthetic.computer/@user should go to that user's page. 1340 - [x] Back browser button should bring up mobile keyboard. (This could never happen on Safari, might happen on Android) 1341 - [x] Fix Safari regression. 1342 - [x] Design “copy” wrapper text for front-facing bots. @ggacjp. 1343 1344*** Learn *** 1345 - [🧡] "?" appears after typing a valid word which jumps to a learn page for learning more about a command. 1346 - [] Start writing "learn" pages for some existing commands or bots. 1347 1348*** Characters *** 1349 - [] Polish bots with background images. 1350 - [x] boyfriend 1351 - [x] girlfriend 1352 - [x] liar 1353 - [x] angel 1354 - [x] kid 1355 - [x] mom, dad, gargoyle, botce 1356 - [x] Fix `liar` background image sizing code. 1357 1358 - [x] `angel` bot 1359 - [x] "Pray to me" 1360 1361 - [x] `kid` bot 1362 - [x] "..." 1363 1364 * One shot bot sharing. 1365 - [] `liar` and `botce` Screenshot 1366 - [🧡] A button appears to "download" or "share" which allows user 1367 to download the image to their camera roll. 1368 1369 Forgetful: Reply Screen 1370 ________________________________________ 1371 | 1372 | Blah blah. 1373 | 1374 | Ble bleeee bleee blee blee. 1375 | 1376 | - liar 1377 | 1378 | [Copy] 1379 | [Back] [Share] 1380 |________________________________________ 1381 1382 * Conversation sharing. 1383 - [] `boyfriend / girlfriend` conversation share 1384 - [] Conversation: Reply Screen 1385 _____________________________________ 1386 | 1387 | Blah blah. 1388 | 1389 | Ble bleeee bleee blee blee. 1390 | 1391 | - bf/gf 1392 | 1393 | [Share] 1394 | [Copy] <--- 4/4 [Reply] 1395 |_____________________________________ 1396 | [Reply] 1397 | <--- 2/2 [Reply] 1398 | <--- 3/3 [Reply] 1399 | <--- 4/4 [Reply] 1400 | <--- 3/4 ---> 1401 | <--- 2/4 ---> 1402 | 1/4 ---> 1403 (Also include progress bar.) 1404 1405 - [] `boyfriend` should be able to reply using a "Message read" receipt style 1406 rendering mode on the reply that gets colored. 1407 1408 * Multiple characters interacting. 1409 - [] `relationship` dialogue screen 1410 - [] Where `boyfriend` and `girlfriend` are in an automated conversation. 1411 - Screen is separated vertically as two buttons, tapping either button 1412 sends a response to the other. Multiple sends from one is possible, 1413 but not while replying. 1414 1415 | girlfriend | 1416 -------------- 1417 | boyfriend | 1418 1419 + Done 1420 - [x] User's reply stays on screen while the response is being written. 1421 - [x] When bot is not forgetful, exiting chat should erase the history 1422 - [x] Mom and Dad bots should at some point say "ask your mom / dad" 1423 - [x] Auto-expand the gutter. 1424 (Requires that gutter is always visible on screen by default.) 1425 - [x] Make `boyfriend` bot 1426 - [x] Fix `encode` input / enter regression. 1427 - [x] Start writing `learn` page content. 1428 - `rect` (A brush example) 1429 - `liar` (A bot example) 1430 1431*** ambient system-wide cursor movement. *** 1432 - [] Optimize rendering... move scream and label and ambientCursors 1433 to something that adds to the last stored buffer. 1434 (Always store a copy of the held buffer for ambientCursor support?) 1435 (Will this be necessary once I ditch the software renderer?) 1436 - [] Don't force a repaint. 1437 + Done 1438 - [x] Show just a pixel for now. 1439 1440*** Logo / Load LOGO *** 1441 - [] Make a "logo" command that sets 1442 aesthetic.computer's logo, 1443 - [] Uploads a painting to a special bucket. 1444 - [] Copies to a cached url for the current one. 1445 based on whether a user has a permission flag set, (for niki.) 1446 - [] Make a logo:load option that 1447 opens the current logo as a painting. 1448 1449*** CSS Background / Load + Login *** 1450 - [] Add a `splash` command that 1451 works similar to logo, for 1452 a page backdrop that can be swapped out. 1453 1454*** `code` *** 1455 - [] https://github.com/yjs/yjs - Integrate CRDT with a provider. 1456 - [] https://github.com/yjs/y-websocket 1457 - [] Try to integrate a collaborative editing experience. 1458 - [] Open monaco in separate window or same window. 1459 1460*** `prompt` *** 1461 - [] After returning to a blank prompt / if the answer is empty then 1462 show the user's text. 1463 - [] Maintain the cursor's index state within the history stack. 1464 and reload it as needed for faster edits. 1465 1466*** `scream` *** 1467 - [-] How can I get `scream` to notify all devices via my server by using Firebase? 1468 and how can I associate device IDs with user accounts? 1469 - [] Probably use MongoDB? 1470 - [] What about users who have notifications enabled but are not logged in? 1471 - [] https://mdn.github.io/dom-examples/web-speech-api/speak-easy-synthesis Speak the scream using speech synthesis. 1472 - [] Make it turn-based. 1473 - [x] Get JamSocket working again. 1474 - [c] Implement JamSocket "locks" and deprecate my redis scaling? 1475 - [] Visualize the socket connection to make everything faster in production. 1476 - [] Possibly the bottleneck is in connecting to JamSocket? 1477 - [-] Finish list in `scream`. 1478 - [] Use NTP for time synchronized delivery of messages. 1479 - [] Is this good enough for musical timing? 1480 - [x] Get messaging working. 1481 + Done 1482 - [x] Get iOS notifications working in the test app. 1483 1484*** Song *** 1485 - [🍊] Finish basic prototype with tone playback, lyric per tone support, 1486 and loading and saving. 1487 1488*** Scawy Snake *** 1489 - [🟠] Finish basic prototype with title / level / game over and leaderboard. 1490 1491*** WebGL2 / WebGPU Backend *** 1492 - [] Specify a new GPU backed graphics backend. 1493 - [] Abstract the graph api into `Y` calls so both compositors can be run 1494 simultaneously on sample pieces. 1495 1496*** VSCode Extension Nuances *** 1497 - [] Refreshing the aesthetic.computer page should load a cached copy of the code. What if `prompt` is being edited? 1498 - [] Typing the name of the piece from the prompt should go to the cached copy. 1499 1500-- 1501 1502*** Hands *** 1503 📔 General 1504- [] Better user acknowledgement of what instantiates or not related to hands, 1505 and why. 1506- [] Fade hand alpha and possibly color based on distance from edge of safe zone. 1507 1508 🧩 Pieces 1509 *** `staka` *** 1510 - [] See `staka`. 1511 1512 *** `handtime` *** 1513 - [💚] shared canvas (like digital touch) 1514 - [] `ht yellow blue` will start a 2 person call where a link is given and 1515 guest 2 is blue and you are yellow. 1516 + Done 1517 - [x] Socket joining errors. @jeffrey 1518 - [x] Hand-track re-entrance errors. @jeffrey 1519 - [x] Fix gesture interactions. (Need a piece that will require it.) 1520 - [x] Send data across the wire of all connected hands and render them. 1521 1522 *** `handprint` *** 1523 - [] See `handprint` for features. 1524 - [❤️‍🔥] Panning the canvas should also pan the hand properly! 1525 1526 *** `simon says` *** 1527 - [] Combos of TIMOP flash hold on the screen until a user matches the combo. 1528 - [] Then, another combo is shown. 1529 1530 *** `hand piano` *** 1531 - [] activate beeps on interactions/ touches 1532 1533*** bb *** 1534 - [] Make a game state. 1535 - [] Title 1536 - [] Level 1537 - [] Game Over 1538 1539*** nopaint *** 1540 - [] Refactor "test" to nopaint. 1541 1542*** Profiles and Handles *** 1543 - [] Fix `handle` setting in all cases / make it work better. 1544 - [] Make /@handle profile pages actually live. 1545 - [] Allow people to set handle via profile page by jumping to the 1546 prompt. 1547 - [] Show most recent painting on profile page. 1548 - [] Allow people to set a status. 1549 - [] Where to store this? 1550 - [] Is there something in particular that makes the cloudflare worker 1551 slow, like the handle lookup? 1552 - [] Profile it... 1553 1554*plot* (new launch fonts) 1555 - [-] Make the UI responsive based on grid and scale and window size. 1556 - [] Print the resolution and the output number in the corner. 1557 - [] Set up preview / more UI so that new fonts can be produced. 1558 - [] Gamify it? 1559 - [] Allow the creation of a custom font using the current glyph set. 1560 - [] Allow color. 1561 - [] Design a multi-line prompt / poster design tool. 1562 - [] Rainbow stripes of different colors delineated horizontally 1563 kind of like a pastel stenograph pad. 1564 + Done 1565 - [x] Fix `resize` call in plot. 1566 - [x] Is `scale` working? 1567 1568*** Launch Goodies *** 1569 - [] Tapping top-left corner label should always highlight the text, and 1570 prevent other touch events from firing in the piece... 1571 - [] Doesn't work on `bleep`. 1572 - [] Add more themes other than the dark boolean? 1573 - [] You should be able to type colors and have the 1574 general prompt aesthetic change immediately, 1575 with a sound that plays per each different color. 1576 - [] Startup themes can change on a daily basis for visitors. 1577 - [] Regenerate a background painting on every "no!" / 1578 starting painting creation. 1579 - [] Jumping to the prompt after first loading from somewhere else 1580 is slow. (Always preload prompt locally?) 1581 - [] Add offline support for the prompt. 1582 - [] And include an abstraction for caching / loading from 1583 cached commands. 1584 - [] Prompts with extra spaces betwene parameters should compress space. 1585 - [] Upgrade all the packages in `/system` (and manually copy over new dependencies, then test most hot paths for regressions). 1586 - [] Run a Fast 3G load test to optimize assets and 1587 make a better startup / loading sequence. 1588 + Done 1589 - [x] Auth0 login customization and email notification customization. 1590 1591*** iOS Native App *** 1592 - [] Figure out the best way to make a wrapper now. 1593 - [] Get stickers into a keyboard / live sticker creation with the drawing 1594 tools. (Research in GPT) 1595 - [] Also get it work on Android too. (Can use Browserstack for APK testing.) 1596 - [] Add notifications. 1597 - [] Submit to store with notifications enabled, usernames and posts. 1598 1599*** (ida mood setter) / android backspace *** 1600 - [wip] Allow backspacing on android. (This seems to work now.) 1601 - [-] Make sure autosuggested text input works on android 1602 and iOS. 1603 - [x] Works on iOS. 1604 - [] Adding space after autocorrected word. 1605 - [] Not replacing corrections. 1606 1607*** global screenshot key *** 1608 - [] There needs to be a system wide method of capturing a screenshot. 1609 - [] Both on desktop and on mobile. 1610 - [] These screenshots need to be published automatically upon getting 1611 a confirmation modal. 1612 1613*** `prompt` system *** 1614 + UI Gripes 1615 - [-] Cannot backspace on Android keyboard. 1616 - [-] Do a local ngrok phone gap test to fix this. 1617 - [🌟] Tapping corner word should immediately bring up keyboard. 1618 + Later 1619 - [-] How to deal with longer responses? 1620 - [] Add 'copy" and "cancel" buttons? 1621 - [] Conversations that have history should be able to be forgotten with a bottom left button. 1622 - [] `copy` button in the lower left to copy all of the response. 1623 - [] Keep track of replies somehow? 1624 - [] Keep character names in the corner? 1625 - [] Embed two "framed" prompts on a page, or a framed prompt with 1626 an image below... and with different styles! 1627 - [] Add a small illustration on bottom right corner. 1628 - [] Painting @import. 1629 - [] How would this function? `paste(by("@georgica").painting())` 1630 - [] Make the illustration: 1631 - [] Implement a zoomable canvas on `rect`. 1632 - [] Rename `rect` to `box`. 1633 - [] Implement a zoomable canvas on `line`. 1634 - [] Add some sound. 1635 - [] 1/3 New synth wav types! 1636 - [] Custom SFX / sampling. 1637 + Done 1638 - [x] Text wrap breaks on zoom. 1639 - [x] Scrub cursor does not respect word-wrapped spacing. 1640 - [x] Long single word breaks into second line. 1641 - [x] New words after a line break are not separated alongside the following word. 1642 - [x] While using word break, words that break at the end of the line cause an extra space at the beginning of the next line. 1643 - [x] More pixel accurate text scrubbing. 1644 - [x] Fix halt on 'handle' command. 1645 - [x] Pressing "done" on iOS keyboard should trigger a handler. 1646 - [x] Test typing flow and remove code cruft unused handlers and messages. 1647 - [x] Dragging text should stop keyboard removal on mobile. 1648 - [x] Remove red square from finished responses. 1649 - [x] Make `alphapoet` non-conversational 1650 - [x] The home page button says `start` and you have to press that to start typing. Once you've started the button becomes `go`, and tapping the screen just gets the keyboard up or down 1651 - [x] Mobile tap to open keyboard should function better... 1652 - [x] Tap should not delete the character's response to user. 1653 - [x] Tap on mobile just brings the keyboard up and down. 1654 - [x] Keyboard disappears after user presses return on their text. 1655 - [x] Something weird is going on with focus / unfocus... / responses 1656 become editable somehow. 1657 - [x] Make sure history works among the different prompts. 1658 - [x] Line breaks 1659 - [x] Add some basic conversational support 1660 - [x] Write new characters / adapt old ones into separate commands. 1661 - [x] Fix mobile UI. 1662 - [x] Break prompt programs into multiple commands / characters. 1663 - [x] Make a new template. 1664 - [x] Add sound for `Music Box` 1665 - [x] Decide how to get back to main navigation page *especially on mobile 1666 - [x] Cancellable responses. 1667 - [x] Movable cursor support, with arrow keys and touch to move or drag. 1668 - [x] Draw character once more on top of cursor. 1669 $.ink(255, 0, 0).draw 1670 - [x] Reset cursor position on return. 1671 - [x] Paste needs to work on movable cursor. 1672 - [x] Auto-wrap the text by word in TextInput objects. 1673 - [x] Better text typing / replacing experience / autotype clear characters 1674 and skip intro space. 1675 - [x] Visual failure messages if offline or given a cancelled request. 1676 - [x] Progress spinner / prevent interaction. 1677 - [x] @digitpain: Add conversational support. 1678 - [x] Tap / Escape to cancel a reply and blank the prompt. 1679 - [x] @ggcajp: Write a prompt program that suggests commands. 1680 - [x] Make the main `prompt` part of the prompt system now. 1681 1682*** Overall Rendering *** 1683 - [] Fix pixel imperfect rendering / scaling especially noticeable on iOS. 1684 1685*** General API Design *** 1686 - [] Add a general "positioning" function to geo that can cover TextButton, 1687 Button, write, and box. It should already know about the 1688 current screen size? 1689 - [] It should support: { center: "xy", top, left, bottom, right, x, y } 1690 1691*** Painting *** 1692 - [] Two finger / scroll pan (trackpad). 1693 - [] Two finger / trackpad zoom. 1694 - (Use Figma as an example) 1695 1696*** Viral Checklist *** 1697 - [] Display current user count on rooms if > 0 users are online. 1698 - [] Pool `session-server` rooms if necessary. 1699 1700*** online/offline notification *** 1701 - [] Show `offline` overlay if the system is not online. 1702 - [] How can I know this? 1703 1704*** `evolve` *** 1705 - [] Rename `vary` to `evolve`. 1706 - [] Research more image net APIs. 1707 - Transform a painting from one state to another using ML. 1708 (https://chat.openai.com/chat/1c0e4f20-7cb5-441f-a7e4-7b77fb55135d) 1709 - [x] Integrate OpenAI imageVariation. 1710 1711*** `context-click` *** 1712 - [] Add a useful right click menu for desktop / mouse users that 1713 runs across all pieces. 1714 1715*** `about` *** 1716 - [] Color code the output / perhaps even show it on the prompt? 1717+ Done 1718 - [x] Sketch a `learn` program that writes text and explains how different 1719 commands work. 1720 1721*** `bleep` presets *** 1722 - [] Omnichord-like bleep presets in certain keys. 1723 1724*** General Painting / Graphics API *** 1725 - [] Resizing window cuts off painting / interferes with "no" command? 1726 - [-] Fix 'system.nopaint.bakeOnLeave` `page(screen)` anomaly. (Redo "write") 1727 - [] Abstract the `rect = null` / `shape = null` / "bake" calls better 1728 in all brushes. 1729 - [] change resize to "painting" or resolution. 1730 - [] allow prefix colors for oval, shape, and line 1731 - [] make `coat` a new command 1732+ Done 1733 - [x] Examine "paste" not updating automatically in relation to the below. 1734 - [x] Add "paste" command to load a bitmap locally, with the option 1735 of scaling it down on import by `n` x. 1736 1737*** Usernames and /p Original Posting *** 1738 - [] Build a painting listing page!. 1739 - [-] Limit resolution of paintings? 1740 + Later 1741 - [] `/p` painting feed. 1742 - [] Update / finalize auth0 login screen. 1743 + Done 1744 - [x] Get presigned download URLs working. 1745 - [x] Also rename so that "painting-${timestamp}.png" is the 1746 name of downloaded paintings remotely (to match local). 1747 - [x] Live email based file links do not work. 1748 - https://cloud.digitalocean.com/spaces/user.aesthetic.computer 1749 - https://aesthetic.computer/media/me@jas.life/painting/2023.5.03.13.38.15.png 1750 - https://aesthetic.computer/media/@jeffrey/painting/2023.5.03.13.38.15.png 1751 - [x] Rewrite `media.js` or use the cloudflare worker to 1752 produce a json list if possible. 1753 - [x] Rewrite clean URLs to individual media files on DO spaces using 1754 a Cloudflare worker and a call to a Netlify function. 1755 - [x] Associate handles with user data somehow... 1756 - [x] Associate S3 directory with user id and do some handle mapping. 1757 - [x] Turn the cursor into a spinner when the prompt is locked... 1758 - [x] Sanitize handle text entry of the input on both client and server. 1759 - [x] Remove any prepending "@" 1760 - [x] Only allow a-z0-9, underscores, and periods 1761 - [x] Set a max length of 16 characters. 1762 - [x] Greet a user by their handle! 1763 - [x] Give users the ability to add handles. 1764 1765*** Bitmark Autonomy App Integration *** 1766 📇 Autonomy side 1767 + Now 1768 - [] Tap logo to open fullscreen webview to: `https://aesthetic.computer?dids=${key}` 1769 - [] Logo should have a hover state / tap state where the opacity dips. 1770 - [] The keyboard should float on top of (and NOT resize) the webview when 1771 opened. 1772 - [] The background of the webview / border margin around aesthetic.computer should be black. 1773 - [] Pass DIDs keys to aesthetic.computer on Autonomy "A" logo tap. 1774 - [] Function to call from JS to "close" the webview. 1775 - [] If a.c has media / is logged in then show a list in the gallery view. 1776 (Make a listing page that pulls json from https://aesthetic.computer/media/@user/painting) and displays the images uploaded. 1777 - [] Single tap link from the "portfolio" view to fork / edit an already made painting / 1778 pop open an aesthetic.computer URL. 1779 + Next 1780 - [] Aggregator page of everyone's published work. 1781 🖌️️ aesthetic.computer side 1782 + Now 1783 - [] Add custom MOTD greeting for Autonomy users when the open the prompt. 1784 - [] Authenticate user / create account automagically from DIDs key. 1785 - [] ❓ How to allow user to associate existing account or tie email address 1786 to acount? 1787 - [] Custom webview styling for native embed. 1788 + Next 1789 - [] Aggregator API / social features / turn-based painting. 1790 1791*** `grocery` *** 1792 - [] Sampling keyboard with speech to text for grocery lists, 1793 with a button to cross off items, sendable from user to user. 1794 1795*** "async message hub" *** 1796 - [] Pub/sub model. 1797 - [] Works over a network, across multiple a.c units. 1798 - [] Can be run locally or remotely. 1799 - [] The browser is the best runtime now. 1800 1801*** Colors & Notes & Dictation *** 1802 - [📘] See teal book. 1803 Example: 1804 painting (128) 1805 black coat 1806 white oval 1807 white triangle 1808 black word fish 🧠 (use any word) 1809 black line 1810 download 1811 1812*** brush *** 1813 - [] Write a query and get back dynamic brush code in response. 1814 1815*** Watchlist *** 1816 - [] https://www.youtube.com/watch?v=KrPsyr8Ig6M 1817 1818*** Experiential Art *** 1819 - [] Answer `experiential-art.txt` questions for Wade / wild.xyz 1820 1821*** `nopaint` and `nopaintAPI` should be merged *** 1822 - [] nopaint needs a general code merge / cleanup 1823 1824*** ⚠️ Color Parser: parseColor *** 1825 - [-] Add RGB float support, range support for floats, and 1826 "?" support to ranges! 1827 + Done 1828 - [x] Add support for ? ? ? rgb parameters. 1829 - [x] Add support for both ? and ranges in alpha parameter. 1830 1831*** CPU Resizable & Navigable 2D Painting *** 1832 - [🟡] Implement all other brushes: 1833 - [] `camera` 1834 - [] `icon` 1835 - [] `sign` 1836 - [] Measure performance. 1837 + Done 1838 - [x] `shape` 1839 - [x] `word` 1840 - [x] `smear` 1841 - [x] `bits` 1842 - [x] `line` 1843 - [x] Add `color words` to `rect`. 1844 - [x] `oval` 1845 - [x] Work out a final API / new abstraction that makes sense for every 2D 1846 brush, taking into account a possible GPU renderer and eliminating 1847 duplicated logic. 1848 - [x] Make `rect` a final API example 1849 - [x] `rect` and `oval` both can drop a frame... 1850 + Later 1851 - [] Refactor translation code to eventually add and store rotation, zoom, 1852 etc. 1853 - [] Add software zoom. 1854 - [] Add software rotation. 1855 + Done 1856 - [x] Test two finger drag on mobile. 1857 - [x] Add a reset pan prompt command or button. 1858 - [x] Why does holding alt continue the drawing / why is there a frame 1859 delay after pen?.drawing? 1860 - [x] system.nopaint.present return data needs to be decoupled from 1861 rendering 1862 - [x] Keep `pan` position on reload? 1863 - [x] Add gestural `pan` support 1864 - [x] Hold down `space` key to pan. 1865 - [x] Add to nopaint act. 1866 - [x] Two finger touch to pan. 1867 - [x] Resizing the window should re-present the painting properly. 1868 - [x] Add support for painting to be a `fixed` resolution. 1869 - [x] Render a backdrop with 1px border showing the 1870 edge of the painting. 1871 - [x] All brush pixels need to be offset by the panned painting buffer 1872 while rendering. 1873 - [x] Use `bits` as a case study. 1874 - [x] Center the rendering of the painting. 1875 - [x] Add command for setting a constant resolution, which avoids 1876 any resize hooks on the painting. 1877 - [x] Use "crop" brush or `resize` command for this? 1878 - [x] Make a minimal `bits` brush. 1879 1880*** Generic Image / Photo Uploader *** 1881 - Data entry process 1882 - [] 1. go to ac and type `pic` 1883 - [] 2. add from camera roll or take photo 1884 - [] 3. receive code upon upload 1885 - [] 4. write code on drawing/sticker for drawing 1886 - Viewing process 1887 - [] 1. visit ac and type `code` to view the image 1888 1889*** Code Lookup / Analog <-> Digital Workflow *** 1890 - Data entry process 1891 1. go to ac and type `pic` 1892 2. add from camera roll or take photo 1893 3. receive code upon upload 1894 4. write code on drawing/sticker for drawing 1895 - Viewing process 1896 1. visit ac and type `code` to view the image 1897 1898*** Error Log / `errors` *** 1899 - [] Log all mistyped commands with a score count and display them in order. 1900 - [] I could just use redis for this... 1901 - [] That could actually make it LIVE! 1902 1903*** `paintings` command should grab a list of all paintings by a user sorted 1904 in order? 1905 - [] Deletable paintings. 1906 - [] Painting feed. 1907 1908*** Tape & Tapes *** 1909 `tape` 1910 - [] Type `tape` and start an audio recording. 1911 - [] Recorded segments work with `no` and are built up on the `prompt`. 1912 - [] `no` removes / cuts a segment of a tape 1913 - [] Tapes can be `upload`ed and `download`ed just like paintings. 1914 - [] They can be stored (on server) as audio segments or single recordings 1915 with timestamp data. 1916 - [] Tapes can be played back using `play` or `tape:play`. 1917 - [] `tape` has custom parameters to control effects. 1918 `tapes` 1919 - [] View a list of all of a user's tapes / manage tapes. 1920 - [] Possible to add to the current tape / embedded recorder inside of 1921 `tapes` ? (Alex's dream workflow...) 1922 1923*** Album / Kit / Pack / Collection / Grouping / Account *** 1924 - A meta structure for organizing curated media types like `painting` 1925 or `tape` or `diary` or `whistlegraph` and playing them back in a 1926 consumable playlist like format. 1927 - [] Decide on a name. 1928 - [] Implement commands for curating, something akin to TikTok's playlist 1929 feature where there is a 'current album' and you can add media 1930 to the current one upon visiting it via `paintings` or `tapes` etc. 1931 1932*** Painting Viewier *** 1933 - [] Painting viewer page... what is the command? 1934 - [] `look` or `examine` or `view` 1935 1936*** Prompt *** 1937 - [] Always show whether we are connected to the internet or not. 1938 1939*** @rcrdlbl *** 1940 - [💛] Implement auth0 "default" / uncustomizable login styling. 1941 - [] moving $api calls around in `disk` 1942 - [] making some brushes 1943 - [] make `bleep` reset BPM to default on exiting 1944 - [] @digitpain make BPM settable in the leave function 1945 + Done 1946 - [x] IRL meetup 1947 - [x] auth0 login screen 1948 1949*** Mood *** 1950 - [] One mood per day, assigned? 1951 Notify users via email or a notification somehow? 1952 - [] Select a mood to change the default color palette. 1953 - [] Prototype this work in prompt. 1954 - [] A scheme map: 1955 - [x] Dark / Light Moods (via prompt) 1956 - [] Primary or major colors. 1957 *** Launch *** 1958 - [] @mollysoda posts an instagram story of a finished camera pic with stuff drawn on 1959 - [] there is a call to action where viewers can swipe up 1960 - [] once they swipe up there shoud be like a "title" screen 1961 1962*** Sound Effects Support *** 1963 - [] Load and play a sample from assets when a button is pressed inside a `sample` piece. 1964 - [] Check the `bgm` implementation in `bios`. 1965 1966*** GPU Based 2D Painting *** 1967 - [] Make a brush that only directly writes to the system.painting. 1968 - [] (Behind a flag.) Render the system.painting as a texture on the GPU, using 3D.js. 1969 - [] Keep the painting inside an abstraction that can calculate and send its transforms to the GPU (via Form?) 1970 - [] Basically I just need an orthographic camera with a quad... but I also wanna do the auto-tiling which means 1971 transforming texture coordinates on a full-screen quad with texture repeat instead of the quad itself. 1972 - [] And then this whole thing could be rotated in 3D, with bumpmapping, etc / have shaders applied. 1973 - [] Brushes can choose to opt-in to this 3D display or stick with the less navigable 2D display. 1974 1975*** Graphics Optimizations & Performance *** 1976 - [] Fix screen-squash zoom bug. 1977 - [] Make canvas UI cursor faster. 1978 - [] Remove smoothing from line / come up with an alternative thickness. 1979 1980*** Ranges & Color Parameters *** 1981 - [🟡] Make a helper to parse color parameters. 1982 - [] Abstract the randomization of ranged integers across 1983 every brush with integer params. 1984 - [] How does this work with '?' ? 1985 - [] Add named colors / support all HTML compatible color names? 1986 1987*** Fig Brush *** 1988 - [] Make a pill-like stick figure that can be placed on the surface. 1989 1990*** New Prompt QOL Updates *** 1991 - [] Do history stack different. (Smaller text) 1992 - [] Skip what aliases lead to in the history list. (ff example) 1993 - [] Should be able to `no` a `no!` in other words `no!` should just 1994 + Done 1995 - [x] Don't clear text automatically on sending input. 1996 be a wipe! 1997 1998*** '?' Params Generalization *** 1999 - [] Colors (see `line`) 2000 - [] Colon param "?" support. 2001 + Done 2002 - [x] Refreshing the page on question mark params should work... 2003 2004*** Ordinals Runtime *** 2005 - [] Add pixel buffer support. 2006 - [] Generate something cute out of only boxes. 2007 - [] Add a simple bresenham line function w/ lineh from graph. 2008 - [] Use it to draw text. 2009 - [] How to write text in the corner... (Embed all the glyph data?) 2010 - [x] Prototype a dynamic micro runtime of the piece API. 2011 2012*** What is `fhell` ? *** 2013 - [] I don't know yet... 2014 2015*** VS Code Extension *** 2016 - [] Make VSCode extension / back-seat document API (maya). 2017 - [🟡] Modify disk load to accept new source code. 2018 + Done 2019 - [x] Wire up extension to a backend route that pubs to a redis channel. 2020 - [x] Get icon made for extension (@ingo) 2021 - [x] Start work on VSCode extension. 2022 - [😀] Passwordless login. 2023 - [] Home Screen / Better Nav 2024 - [] Upon leaving the prompt, a tappable ghost of the active 2025 command (with generated params) appears in the top left corner. 2026 - [] Tap the word to return to the prompt and leave the command as is. 2027 - [] Swipe the word in any direction to erase the command 2028 and return to the prompt. 2029 - [] User Accounts 2030 - [👨‍🦰] How quickly could I tie this to user accounts and make it permanent 2031 rn? Could I do this all today? 2032 - [-] Set up passwordless email authorization. 2033 - [] `name username` will set a user's name to whatever they like if there 2034 is no existing conflict 2035 - [] Require confirmation from user via a button press or tap. 2036 - [] ✏️ Diary 2037 - [] A simple diary tool / "performative poetry" piece. 2038 - [] Write entries which playback in realtime to show the typing, like recei-ving a DM. See: 2039 - [] Typing `diary` makes a new entry in your default diary. 2040 - [] Every entry of every user has a URL and a timestamp. 2041 - [] Every diary of every user has a URL. 2042 - [] A user can make multiple labeled diaries via `diary secrets` 2043 - [] This will start a new entry in a labeled diary and make that diary 2044 if it doesn't already exist. 2045 🔐 Privacy 2046 - [] Private diaries just show a lock with a shortcut to log the user in. 2047 - [] Diaries can be marked `private` or public. 2048 - [] Entries can be moved from one diary to another. (Migrated or made private or public) 2049 - [] `@user diary` should read the most recent entry by default. 2050 - [] Entering an entry into a private diary should be encrypted and 2051 unreadable by aesthetic.computer. 2052 - [] Moving an entry into a private diary will encrypt it. 2053 - [] aesthetic.computer will not track public diary entries were made 2054 private, and not cache the moved files, to maintain user privacy. 2055 - [] A blockchain / wallet might be required for this... 2056 - [] A user could potentially sell "keys" to their diary, so that 2057 diaries can be semi-public / exclusive to a set number of 2058 readers. 2059 - [] Add ability to make a system-wide recording? 2060 - [] 🎨 Paintings 2061 - [] Finish all Brushes todos: https://www.notion.so/aesthetic-computer/aesthetic-computer-hq-97376f353dbd4503970910777d6c7241 2062 - [] Add DALLE2 / Image2Image API for generating / transforming stuff easily. 2063 - [] Get smart contract launched. See "Mintable Paintings" below. 2064 - [] Finish Freaky Flowers client 2065 - [] Hook up multiplayer presence. 2066 - [] Get nice UI 2067 2068*** lorecore *** 2069 - [] ... 2070 2071*** Dev *** 2072 - [] Switch from prettier to something else... 2073 - [] Standard... 2074 - [] ESLint... 2075 - [] Do research? 2076 2077*** Sotce *** 2078 - [] Visit a url. 2079 - [] Logging in. 2080 - [] Type in words and press enter. 2081 - [] Hit a done button to play back the words. 2082 - [] Get back resulting URL 2083 - [] Share that URL / Screen Record / Still Image 2084 2085*** Ingo *** 2086 - [] Jeffrey sets up VScode plugin! 2087 - [] `bst` (Bouncy Square Pattern World) 2088 - [] Jeffrey will explore: Sketchmachine.net style auto-expanding blingee buffer. 2089 - [] *** Ingo + Harrison coder cohort micro projects. *** 2090 - [] Ingo learns API etc along with Harrison. 2091 - [] *** Dollmath *** 2092 - [] Character creator software combined with character operation software. 2093 - [] From premade assets with a protocol to remote control. 2094 - [] "Dollmath" refers to a notational system for defining / understanding 2095 the structure of each character given number of frames per each part. 2096 - [] Useful for avatar type, useful for fun puppet / finger puppet videos... 2097 VTuber style calling, etc. 2098 - [] Re: Avatars: "Dropped" or "Rare" or discoverable parts, similar to early Ultima Online PVP / permadeath. 2099 - [] *dolls* video recorder - larger project w/ harrison 2100 2101*** Vector / Raster Foreground / Frame based Instrument *** 2102 + Now 2103 - [] RGB Black line tool (with thickness). 2104 - [] RGBA Fill bucket. 2105 - [] Frame is transparent. 2106 - [] Safe zones. 2107 + Later 2108 - [] Arrow keys to jump between states. 2109 - [] Hold to pause 2110 2111*** Hole / Fill Tool *** 2112 - [] Hole / fill tool 2113 Goop Bomber 2114 - Random hole appears on the painting. 2115 - Little creature comes out with mouth ma ma ma ma. 2116 - Random bomb appears elsewhere on the canvas. 2117 - Bomberman style fuse. 2118 - Bomb makes a splatter. 2119 - Creature reacts. 2120 - Creature returns. 2121 2122*** (Sage Notes) Particle / GOL *** 2123 - [] Color rule correlation 2124 - [] Equation in red so when things collide the color gets red. 2125 - [] Dominant force. 2126 16 particles 2127 {x, y, z} 2128 each particle can emit a sound 2129 override a particle position 2130 2131*** "pose" - Hand-Tracked Body Pose Piece *** 2132 - [] Handtracked WebXR. 2133 - [] ThreeJS heirarchy of manipulatable. 2134 - [] https://github.com/Physicslibrary/Threejs-VR-Hand-Input 2135 - [] Instantiate multiple figures. 2136 - [] Physics Simulation 2137 - [] A. Mujoco compiled to WASM. 2138 - [] Wouldn't have to change much, somebody may have already compiled to WASM. 2139 - [] B. Or ammo.js which gets us networking. 2140 - [] https://rawcdn.githack.com/kripken/ammo.js/99d0ec0b1e26d7ccc13e013caba8e8a5c98d953b/examples/webgl_demo_softbody_rope/index.html 2141 - [] https://lo-th.github.io/phy/index.html#ragdoll 2142 2143*** Collaborations / Externally Hosted Pieces *** 2144 - [] Should subdomains like `m2w2.whistlegraph.com` just rewrite their url by 2145 default? Or maybe if you jump to the prompt? I guess it kind of 2146 depends on how localStorage or other origin specific features work... 2147 2148*** BGM *** 2149 - [] Make a cool default visualizer for bgm. 2150 - [] Use phase analysis / both stereo tracks to produce a form. 2151 (Check existing chatGPT thread to explore traditional methods) 2152 - [] Make it a 3d representation in the rasterizer with CamDoll controls. 2153 - [] Implement spatialization of the audio in relation to the position of the 2154 viewer. 2155 - [] Global volume / play + pause controls too? 2156 - [] READ Audio properties (Will do for bgm) 2157 - [] Amplitude within frequency range function. (Cropped amplitude) 2158 - [] Time position (formattable as 00:00:00) 2159 - [x] Global amplitude read out. 2160 - FILTER Audio properties (Will do later) 2161 - [] High pass 2162 - [] Low pass 2163 - [] Panning 2164 - [] Speed 2165 - [] Spatialization 2166 + Done 2167 - [x] Add ability to stop bgm from playing. 2168 - [x] Add vf music to a bucket or a server / make the bgm piece to load a track. 2169 - [x] This piece should have a common library that any piece can opt into in boot via a music() or track() function. 2170 - [x] Play it back via an audio tag in the bios audio-graph. 2171 2172*** Important 3D Details *** 2173 - [] Invert Y position in original constructor. 2174 - [] vec3.dist from glMatrix yields innacurate numbers. Factor it out of the project. 2175 - [] The quaternions also don't seem to work? 2176 2177*** Painting *** 2178 - [] Add a 'mask' command to crop an existing painting to a certain border or 2179 aspect ratio? 2180 2181*** Furthering VR Support *** 2182 - [] Try to re-enable workers again for VR. (Should basically work great now. 22.11.23.09.20) 2183 - [] Add grip of controller in addition to hand support. 2184 - [] Grip: https://threejs.org/docs/#api/en/renderers/webxr/WebXRManager.getControllerGrip 2185 - [] "hand" event 2186 2187*** GIF Support *** 2188 - [] Add keyboard shortcut to download a still frame of whatever you're 2189 looking at, (a 100% accurate screenshot in the presented resolution). 2190 - [] Get working with normal buffer. 2191 - [] Get working with glaze and mouse. 2192 - [] Have mouse be optional. 2193 - [] Add ability to store frames as gif frames and end a recording. 2194 - [] This can use ffmpeg behind the scenes in (almost) the same way I'm doing now...? 2195 - [] Just the software renderer for now? Or should I composite? 2196 - [] https://macr.ae/article/canvas-to-gif 2197 2198*** Mintable Paintings (Screen Buffers) *** 2199 - [] 🅰️ Client 2200 - [] Implement `connect` command in prompt. 2201 - [] Add ethereum based client identity authentication. 2202 - [] Include web3.min as a dependency. 2203 - [] Then login via... 2204 const accounts = await window.ethereum.request({ 2205 method: "eth_requestAccounts", 2206 }); 2207 const account = accounts[0]; 2208 + Later 2209 - [] Shop around a bit. 2210 - [] Examine token gate code on glitch: https://glitch.com/edit/#!/long-whistlegraph?path=public%2Fscript.js%3A14%3A23 2211 - [] Write more clientside code to trigger the mint. 2212 - [] The data needs to be uploaded to the server and a signature 2213 for minting needs to be signed (payment processor). 2214 - [] Then a success or failure message needs to be shown to the user via the 2215 prompt. 2216 - [] The prompt should have some kind of progress bar... 2217 - [] Show title and description in the waller signature message so the 2218 minter can confirm they did not make a mistake! 2219 - [] 🅱️ Server 2220 - [] Upload media to S3 2221 - [] Make a special S3 bucket for mints. 2222 - [] Upload media to IPFS (Should preview links be scaled up?) 2223 - [] Pinata: https://docs.pinata.cloud/pinata-api/authentication 2224 - [] Mix pinata with server upload calls. 2225 - [] Set up ipfs.aesthetic.computer gateway. 2226 - [] Create JSON record somewhere... in a noSQL database hosted by Digital Ocean? 2227 - [] Metadata: 2228 { 2229 name: `#${id}To be set by `painting:mint insert-message-here`", 2230 description: "A default for all paintings?", // Or should I ask the user. 2231 external_url: `https://aesthetic.computer/paintings/${id}`, 2232 animation_url: ..., 2233 image: "ipfs://", 2234 attributes: [ 2235 { 2236 "trait_type": "Artist", // or Creator? Research this... 2237 "value": creator 2238 }, 2239 { 2240 "trait_type": "Date" // See also: https://docs.opensea.io/docs/metadata-standards 2241 "display_type": "date", 2242 "value": 1546360800 (Must be a unix timestamp in seconds.) 2243 } 2244 ] 2245 } 2246 - [] 🆑 Contract 2247 - [] Implement contract features: https://docs.openzeppelin.com/contracts/4.x/wizard 2248 - [] Open contract, mintable by everyone. 2249 - [] Unlimited edition. 2250 - [] Charge a mint fee which goes back to the aesthetic.computer wallet and 2251 prevents spam and promotes quality. 2252 - [] Should I freeze the Metadata? https://docs.opensea.io/docs/metadata-standards#freezing-metadata 2253 - [] Add contract Metadata too: https://docs.opensea.io/docs/contract-level-metadata 2254 - [] Have a function that allows me to update the mint fee. 2255 - [] Make a special wallet for aesthetic.computer. 2256 - [] Deploy contract! 2257 - [] Add media and metadata to OpenSea. 2258 - [] #️⃣ Release! 2259 - [] Make an actually good drawing. 2260 - [] What extra features do I need? 2261 - [] Ability to say NO. 2262 - [] Lazy line brush using pixel perfect algo for rendering. 2263 - [] Filled circle and soft circle brush. 2264 - [] Clear / fill command. 2265 - [] A palette the first digitpain "styles". 2266 - [] Add ability to add text to the piece. 2267 - `text insert-text-here size` 2268 - [] Side mission: Add size modifier to dl. 2269 - [] Mint it. 2270 - [] Use it as an avatar on @digitpain twitter. 2271 - [] Point to @aesthetic_cpu in a tweet to launch the Twitter account. 2272 2273***No Paint System*** 2274 + Now 2275 - [] Center painting with the transparent backbuffer if a specific 2276 size is set (which would turn resize off). (Make crop tool to do this, that can be NOd but automatically runs through. 2277 - [] The default "mint" command in aesthetic.computer saves 2278 the system wallpaper. Uniqueness is guaranteed? - https://www.google.com/search?q=sha-512+uniqueness&oq=sha-512+uniqueness&aqs=chrome..69i57j0i13i512j0i390l4.4876j0j4&sourceid=chrome&ie=UTF-8 2279 - [] Fix weird negative space / non-drawing issues on startup. 2280 - [] Add "no" command to the prompt. 2281 - [] Store two history states? 2282 - [] Enter for paint and ESC for no. 2283 - [] Prevent "paint" from occuring when pressing Escape. 2284 (Back button still defaults to paint) 2285 - [] Esc: Autoflash red on loading prompt or on leave. 2286 - [] Return: Autoflash green on loading prompt or on leave. 2287 - [] There seems to be a backbuffer / transparency error 2288 that's easy to find on mobile iOS but hard to 2289 reproduce otherwise. 2290 - [] Add "sign" command which writes a timestamp with a signature. 2291 Should "sign" and mint be the same thing? 2292 - [] Add "mint" command to trigger a wallet signature request 2293 and produce a work. 2294 * Should be able to specify a contract here. 2295 + Later 2296 - [] How can the "nopaint" system be multiplayer and turn based? 2297 - [] What if turns could be negotiated? 2298 - [] Add `nopaint` template for Sage, Casey and Niki. 2299 - [x] Sage 2300 + Done 2301 - [x] Set up a glitch account / editing situation for Sage. 2302 - [x] Write `rect` tool, which necessitates an extra buffer. 2303 - [x️] Write boilerplate for painting tool. 2304 - [x] Make a glaze appear instantly after it loads the first time? 2305 - [x] The painting resolution should auto-expand, but not contract. 2306 - [x] Jumping from prompt to a nopaint brush removes the gap. 2307 - [x] Cache the current painting to indexedDB. 2308 - [x] Either use the added `umd.js` in dep or what's below: 2309 See also: https://www.npmjs.com/package/idb#installation 2310 https://cdn.jsdelivr.net/npm/idb@7/+esm 2311 - [x] Add "dl" or "download" command to the prompt. 2312 - [x] Test this inside of an iOS in-app browser. 2313 - [x] Shouldn't have to leave the prompt to 2314 save the image. 2315 2316*** Piece Caching *** 2317 - [] Cache already remotely loaded pieces in a given session, 2318 so they can be reloaded without having to re-download them or show a spinner. 2319 - [] Disable this in debug / development mode. 2320 2321*** MUD *** 2322 - [] Make a multi-user dungeon chat / room system, designed for single session play. 2323 * welkum 2 mud * 2324 & there r 32 playrz ONLINE 2325 2326***Firefox Day*** 2327 - [] The main cursor is not visible... 2328 + Done 2329 - [x] 3dline loading 2330 - [x] Smooth out everything. 2331 2332*** Developers *** 2333 - [] Move `maya` from glitch to ssh. 2334 - [] Document each step so that I can script adding new users in the future. 2335 - [] Figure out how to best automate the addition of a new developer... 2336 - [] Why isn't artur's ssh key working? 2337 2338*** New Repo / Asset Management *** 2339 - [x] Hook up whistlegraph assets to assets.aesthetic.computer 2340 and place behind a dev flag for local dev. 2341 - [x] Deploy to production in a new Netlify site that copies over all 2342 the environment flags and doesn't enable Large Media! 2343 - [x] Any "font" includes should work the same way... this could be tricky, 2344 also not pressing. 2345 + Later 2346 - [] Digitpain assets are also affected, to their references would 2347 need to be rewritten in the future. 2348 2349*** i *** 2350 - [] Make `i` 2D multiplayer with UDP. 2351 2352*** Ambient Presence *** 2353 - [] No matter what disk you're on... queue into the ambient presence of others. You should be able to meet others. 2354 2355*** Palette *** 2356 - [] Create a basic palette that enables one finger drawing. 2357 - [] Add tools to palette that utilize existing toolset. 2358 - [] Add save button to palette. (Fix `tracker` buttions?) 2359 - [] Add "sign" and "mint" to palette as well. 2360 2361*** p1xelfool additions *** 2362 - [] Complete TODOS @p1xelgool/blank. 2363 - [x] Add ability to directly manipulate the buffer again. (Via `edit`) 2364 2365*** (`turtle` / `spider`) *** 2366 - [] Simplify and generalize the Spider out of Wand. 2367 - [x] Make a spider that can crawl around in 3D and draw. 2368 (Use a turtle graphics API) 2369 2370*** Communication *** 2371 - [] Add text chat. 2372 - [] Implement for both computer, phone, and headset. 2373 - [] Add voice chat. 2374 - [] Implement for both computer, phone, and headset. 2375 - [] Use https://docs.daily.co for now. 2376 2377*** Workers *** 2378 - [] Reconsider where the piece worker boundary is now. 2379 (It might be just a bad design.) 2380 (Or it's a great design and just works poorly with the WebXR animation loop.) 2381 2382*** Physics *** 2383 - [] Add jumping / movement speed. 2384 https://sites.google.com/site/zdrytchx/how-to/strafe-jumping-physics-the-real-mathematics 2385 2386*** Camera Pieces *** 2387 - [] Pitch shifting / screaming / voice modulation recorder. 2388 - [] Audio and video recording test. 2389 - [] Ambient color suport for networked / multi-monitor setups / desktop. 2390 (Also works with foveated / peripheral rendering) 2391 2392*** Tongue *** 2393 - [] Make a tongue tracking game where you catch snowflakes. 2394 2395*** Pieces in Pieces *** 2396 - [] Bring `bleep` into 3D. 2397 - [] Make a layout of more than one piece in the same buffer. 2398 - [] Like bleep and bubble and line... maybe even melody? 2399 - [] Could melody just be imported as the background audio? 2400 - [x] Make a contrived wrapper example that imports one piece into another. 2401 2402*** Slider *** 2403 - [] How to tie a slider on your phone to a value in a param. 2404 1. On a device, type `slider 0-255` or just `slider` for the default. 2405 2. The slider will give you a special code. 2406 3. Use that code while entering parameters like `line CODE 255 255` 2407 (Pieces do not accept remote controlled parameters fail to load.) 2408 - The piece needs to send a request to the server to join 2409 the slider's room. 2410 4. The slider can message the piece with a new value. 2411 5. The piece can return other data, like color, for the slider. 2412 2413***Walkie Talkie*** 2414 - [] Maybe recordings / videos can be sent back and forth between two parties? 2415 - Research: https://capacitorjs.com 2416 - And/or continue to use my own shim? 2417 2418*** Help / Learn / Doc *** 2419 - [] ! What about just adding a "?" at the end of any command? 2420 - [] Decide on a command to read howto. 2421 - [] `howto line` 2422 - [] `doc line` 2423 2424*** Graphics API *** 2425 - [] Add better hex support to color via: https://stackoverflow.com/a/53936623/8146077 2426 2427*** Autopilot / ap *** 2428 - [] Consider how this could become the next nopaint? 2429 - [] Take out the test layers? 2430 - [] Or even how nopaint could be built on top of a remotely controlled ap? 2431 2432*** 3D Optimization *** 2433 - [] Use imageBitmap for textures: https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap 2434 2435***Cursors*** 2436 - [] View current custom cursor css examples. 2437 - "Chromium cursor images are restricted to 128x128 pixels by default, but it is 2438 recommended to limit the cursor image size to 32x32 pixels" - https://developer.mozilla.org/en-US/docs/Web/CSS/cursor 2439 - [] Sidetrack: Hack in an SVG cursor really quick. 2440 - [] Replace Canvas 2D cursors with SVGs (or DIVs?). 2441 - [] Test to see what's the fastest these days? Check for scaling issues on linux (see Figma...) 2442 2443*** New Compositor *** 2444 - [] Write a better (faster) compositor that squashes everything? 2445 Bottom up: 3DPIX, 2DPIX, Glaze, UI (dom), CURSOR (svg / css cursor) 2446 2447*** WASM *** 2448 - [] Add wasm infrastructure speed up for blend function. 2449 - [] WASMify the `blend` function to see if it can be any faster. 2450 2451*** Storage *** 2452 - [] Write much shorter, clearer console.logs with `📦 Store (method) message` 2453 - [] Add "remote:temporary" storage method. (Default for remote) 2454 - [] Add "remote:token" storage method. (Default for token-gated storage) 2455 - [x] Add indexedDB (local:db) storage method. 2456 2457***Device Orientation*** 2458 - [] Add experimental Gyro sustain control to bleep. 2459 - [] Sounds would need a "continuous" mode or a way to control sustain 2460 after firing. 2461 - [] Make a shaker using the average of all that data. 2462 - [] Make a spatial linear curve to fit the data based on some device orientation. 2463 2464*** SSH (code.aesthetic.computer) *** 2465 + Later 2466 - [] Add ping-ponging back to socket server. 2467 - [] Only send reload messages to all clients if `export const reload = true`; ? 2468 - [] Start moving individual glitch accounts over to pieces.aesthetic.computer. 2469 - [] People should be able to mint / submit their pieces from here. 2470 - [] Parameterize "npm run reload-piece". 2471 + Done 2472 - [x] Make live reloading better. 2473 (Catch piece errors... see if errors can be reported?) 2474 - [x] Deploy piece-server updates more easily. 2475 - [x] Put piece-server code into this repository. 2476 - [x] Make sure server can reboot and pm2 is re-enabled. 2477 - [x] Fix the @digitpain/hello no refresh bug. 2478 - [x] Enable live reloading from the SSH server somehow... 2479 (Run a node server from `digitpain` directory that watches 2480 for file changes and sends a message from that server to the main 2481 server which will send a socket message to all clients to reload the 2482 file if `export const reload = true;` 2483 - [x] Set up a developers / "pieces" SSH server. 2484 - [x] Prototype live editing with SSH and live share? 2485 2486***Audio + Video Storage (Microphone)*** 2487 - [] Check to see if ffmpeg encoding can be skipped if the browser doesn't need to do it. 2488 - [] FFMPEG does not work offline: https://unpkg.com/@ffmpeg/core@0.10.0/dist/ffmpeg-core.js - https://github.com/ffmpegwasm/ffmpeg.wasm#why-it-doesnt-work-in-my-local-environment 2489 2490 ***Upload Server*** 2491 [] 1. Show the media (video) in a div overlay with a "Retry" or "Done" button. 2492 A. Retry - Removes the modal div and lets you re-record again. 2493 B. Done - Allows you to download the file immediately (if possible), 2494 and uploads it, giving you the code no matter what. 2495 (The code page layout could be shared here.) 2496 2497 [] 2. After the file uploads... 2498 A. You can also have the option to "Post" or "Publish?" which 2499 will make the work available as part of an ever-growing collection. 2500 - Idea: Posts are automatically minted to our wallet, but can optionally 2501 be minted to a poster's wallet if they decide to connect. 2502 B. Regardless, the file stored at the code will be deleted in 24 hours. 2503 - [X] Setting expiration policies on DO spaces: https://www.howtogeek.com/devops/how-to-set-an-expiration-policy-on-digitalocean-spaces-buckets 2504 - [X] Follow along with – https://www.digitalocean.com/community/tutorials/how-to-upload-a-file-to-object-storage-with-node-js 2505 - Using multipart-form-data 2506 Using - https://www.npmjs.com/package/fastify-multer 2507 Get code via - https://glitch.com/edit/#!/nopaint-server?path=server.js 2508 - Inside of TikTok 2509 - Tell the user their video is ready and they can visit 2510 aesthetic.computer/CODE in a browser 2511 to download their video, which expires after 5 minutes. 2512 2513 aesthetic.computer/microphone -> aesthetic.computer/dl.bn67gff5 2514 aesthetic.computer/get.dfcx4 2515 2516 After recording in the microphone, you get this... 2517 2518 aesthetic.computer/mic -> aesthetic.codes/bn67gff5 2519 ... or 2520 aesthetic.computer/mic -> codes.ac/bn67gff5 2521 (where codes.ac/bn67gff5 -> aesthetic.computer/codes.bn67gff5) 2522 (and the resource is stored at -> bin.aesthetic.computer/bn67gff5.ext) 2523 art.aesthetic.computer/... 2524 2525 A pop-up that shows a QR code / a code to enter into aesthetic.codes. 2526 Upon visiting aesthetic.codes... 2527 - iOS or Android Mobile Browser or Desktop Browser 2528 - 1. Show a download button 2529 - in a native iOS app 2530 - let the user download the video immediately to their camera roll 2531 - Where do recordings / files get stored? What is the userflow... 2532 - Do they get stored at a special code, then users can 2533 go to the website / open another window and mint from the code 2534 or download it? 2535 - [] Look into categorizing uploaded objects with tags... 2536 https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html 2537 - [] And making use of user defined metadata in s3. 2538 These would be great for custom file properties likw 2539 what piece was used to make the art / object and what git commit 2540 of the project was used or something like that... 2541 2542*** Pieces: Run&Gun *** 2543 - [] Make a basic character with multi-platform controls. 2544 - [] Make a ground for them to run on back and forth. 2545 - [] Make something dangerous that can easily kill them. 2546 - [] Add a timer. 2547 - [] Use screen.save and screen.load functionality for scorekeeping. 2548 2549*** Cool Debug Feature *** 2550 - [] Log / visualize all thread communicated messages. 2551 - [] Add it to the definition of send, on both sides. 2552 2553*** MIDI / Analyzer Demo *** 2554 - [] Real-time pitch detection of current microphone. 2555 - [] Convert to midi notes and send out from the tab. 2556 2557***Bleep*** 2558 + Now 2559 - [] Support more wave types in `lib/speaker`. 2560 - [] Sine 2561 - [] Triangle 2562 - [x] Square 2563 + Later 2564 - [] Add support for playing samples. 2565 - [] Add the ability to play sound from other top level functions. 2566 + Complete 2567 - [x] Test multi-touch support on a phone. 2568 - [x] Add multi-touch support through bleep, via `pen`. 2569 - [x] Add support to `bleep`. 2570 - ui.mjs:69, bleep.mjs:162 2571 - Sidenote: https://marketplace.visualstudio.com/items?itemName=alefragnani.Bookmarks 2572 - [x] Write a `multipen` implementation example with a simple API. 2573 - [x] Why does the board generate twice on first load. 2574 - [x] Support roll-over after touch. 2575 - [x] Hide cursor on finger action, but show it during mouse action. 2576 - [x] Resize window support. 2577 - [x] Make a basic bleep box that makes a tone when you tap on it. 2578 - [x] Automatically generate bleep grids with a command line parameter for WxH. 2579 2580***Don't Go Upstairs*** 2581 + Plans 2582 - An interactive story, told in multi-piece parts: https://twitter.com/digitpain/status/1567690125743919104/photo/1 2583 - This should serve as a test for fast-transitioning / preloading and 2584 sequencing pieces. 2585 - Use old Vectrex animation software as inspiration for the editors. 2586 + Now 2587 - Make a sub-directory for the pieces, and adjust the prompt so that 2588 if no file exists in the subdirectory then it checks an `index` file. 2589 2590 *** Sage's Brush (@sage/hello_line) *** 2591 + Now 2592 *** Refactor: Density / Gap / Resize *** 2593 - [x] Remove the frameCount hack in sage's code. 2594 - [x] Deprecate both gap and density. Bake gap into resize. 2595 2596 + Later 2597 *** API: Glaze *** 2598 - [] Add ability to update glaze uniforms via 2599 `glaze.params({uniform1: value, uni2: [0, 1, 2]});` 2600 function paint() { 2601 // user draw a dirty box that needs gpu processing as a tile larger than 2602 // the original pixel drawing 2603 glaze.params({ 2604 crop: dirtyBox, 2605 samples: 12 // this dirtyBox will keep being glazed over for 12 frames 2606 uniform1: 1, 2607 uniform2: 2, 2608 }); 2609 return dirtyBox; 2610 } 2611 - [] Add "kiln" or "bake" function to bake in a glaze at the end of a 2612 nopaint buffer change. 2613 - [x] Be able to turn glaze on inside of remotely hosted pieces. 2614 2615 *** Pressure *** 2616 - [] Get pen and finger working together. 2617 (When finger is drawing and pen is touched... is it recognized as pen?) 2618 - [] Pen: Get a good mapping for Apple Pencil / normalize the data. 2619 - [] Touch: Two finger pressure. (Second finger regulates it via Y axis.) 2620 - [] Mouse: Use scroll wheel for delta. 2621 2622*** Re-organize Repository *** 2623 - [] Make a better entry point for this repository, consider how far the 2624 monorepo idea should extend and make better room for text files, such as 2625 splitting up README.txt with PROJECTS.txt, WIP.txt, and GRAVEYARD.txt. 2626 2627*** Publishing *** 2628 - [] How to have a default or custom thumbnail... even though things are randomly routed? 2629 2630*** Refactoring *** 2631 - [] Clean up the use of "aesthetic.computer/disks/" across the whole project. 2632 - [] Refactor `wg` to make better use of thumbnails... what should the new structure be? 2633 2634*** Favicons *** 2635 - [] How should I generate favicons for each page or treat favicons in general? 2636 - Maybe just design a favicon? Should each piece also be able to have an icon? 2637 - Maybe the system could use these icons if pieces defined them... 2638 2639***Terminal*** 2640 - [] Make `function terminal()` to render to a text mode layer. 2641 2642***JtoA*** 2643 - [] Use web speech recognition API to make a program so that Artur and I can 2644 communicate more complex thoughts. 2645 - https://www.google.com/intl/en/chrome/demos/speech.html 2646 Note: It's only gonna work in Safari on iOS. <https://bugs.webkit.org/show_bug.cgi?id=225298> (And if Dictation is enabled.) 2647 2648***Spinline*** 2649 - [] Circle algorithm with transparency, has doubly drawn pixels. 2650 - [] example: ink(255, 100).circle(x, y, 128); 2651 - [] Circle needs 'pan' support. 2652 - [] Make the regular circle small, and positioned at the tip of the rotating line. 2653 - [] No exported boot function does not show the mouse cursor... 2654 - [] Click and drag selection bug needs to be fixed on iOS. (Chrome + Safari) 2655 - [] Improve "density" function. 2656 2657***Developers*** 2658 - [] Add developer console log / catch errors and show them to users 2659 directly on the screen. Maybe this should be available all the time, 2660 even in production? 2661 - [] Catch errors better in the modules, so they can be easily deciphered 2662 from console messages. 2663 - [] Get it working on: https://glitch.com/edit/#!/niki-aesthetic-computer 2664 - [] Make an `edit` or `new` command to open an editor from the main page. 2665 2666***View-Source*** 2667 - [] Pressing 'Ctrl + `' should open the source code. - Document this in console.log of bios. 2668 - [] Typing `src` plus the `piece` should jump you to the github source page and these should also be url addressable. 2669 - [] Each page should print out its own description in the console. 2670 - [] Then all descriptions of existing pieces can be written. 2671 - [] Why are the disks located there in the first place? 2672 2673***Readme*** 2674 - [] Directly load the GitHub readme in a scrollable content window. 2675 - [] How could this tie into publishing a blog or devlog? 2676 2677***i*** 2678 - [] See `disks/i.mjs` 2679 2680***Shortcuts / open a new URL *** 2681 - [] Figure out notation: ~user/piece, piece~param1, #notion 2682 - [] Should this only be for `prompt` or should it also route URLs? 2683 - [] Make `manual` and `hq` load the notion (separate places) in a new tab. 2684 - [] Should the manual be a super.so site using one of the chosen typefaces? 2685 2686***Prompt Start*** 2687 - [] What info goes on the starting prompt page? 2688 Given that it can change every 60 seconds. 2689 And anyone who shares the link will see a preview image. 2690 - [] Short poem? Weekly poem? 2691 - [] Make the prompt start message easily editable by Niki. 2692 What would it mean for this message to use the ***Upload Server*** and merit 2693 a text editor. 2694 2695***Prompt Updates*** 2696 - [] “search bar” any letter typed shows “ghost” letters of all possible options 2697 - [] Also make the commands case insensitive! 2698 2699***Rooms*** 2700 (WIP Notes) 2701 - Pieces can either be singleplayer or multiplayer, but rooms work everywhere! 2702 - All piece changes are global. People can only be in one piece at a time together. 2703 - Start a room with other people and their mouse cursors / fingers appear as pixels. 2704 - People can join rooms different devices simultaneously. 2705 2706***Basic Server Work / Rooms / Synchronized Metronome*** 2707 - [] How to get metronomes syncing across a network? 2708 aesthetic.computer/metronome.180.red 2709 aesthetic.computer/metronome_300.yellow 2710 aesthetic.computer/metronome-180.black 2711 aesthetic.computer/metronome~180.blue 2712 2713 Option 1: Visit rooms.ac to get a roomID which can be added to a command. 2714 Option 2: Automatically get a room with every new tab. 2715 - Join another room using `room roomID`. 2716 - Entering an activity is part of the room. 2717 - There should be a basic "shout" program for rooms. 2718 2719 ***Socket Server*** 2720 - [] Fix server.aesthetic.computer... maybe just take it offline for now? 2721 2722***World*** 2723 - [] Make an interconnected series of pieces that players can walk between, and 2724 maintain a server connection throughout. 2725 - [] Players should be able to wave or point their arm. 2726 2727***Developer / User Login*** 2728- [] Change the contents of user.aesthetic.computer/login.mjs to ... 2729 - This would prompt the author to edit a string in login.mjs to match, which 2730 would grant them a javascript web token?. 2731 - Look up netlify identity... https://docs.netlify.com/visitor-access/identity 2732 2733***Thumbnail Longtail*** 2734 - [] Get the external thumbnail server running on a VPS to see how fast it is 2735 compared to the netlify function. 2736 - Provision a machine that can actually execute `npx playwright install chrome`. 2737 - [] Optimize netlify function... switch to jpeg to see if it's any faster? 2738 2739***Image Viewer / Media Viewer** 2740 - [] Write a great image-viewer that implements the `rdp` piece. 2741 - [] Also implement `tumpin`, `ten-minute-painting`, and `basedballz`. 2742 - [] Add my small series of Tezos 1of1s as well: `emokidpix` and `1bits`. 2743 2744***Model Viewer*** 2745 - [] Implement <model-viewer> for my 3d glb files so that when I share 2746 them to Twitter they can be in 3D, and also so that they can be wrapped 2747 as aesthetic.computer pieces. 2748 - https://modelviewer.dev/examples/twitter/generator.html 2749 2750🪟 Browser Quirks 2751 - [] Development server only: videos don't load in Firefox (tested on Windows). 2022.05.07.00.01 2752 - [] Make the cursor faster / match the speed of the native cursor. 2753 2754***Transcribe the original Proce55ing typeface*** 2755 2756***Multi-player Drawing / Core Drawing*** 2757 - [] Allow users to join / create rooms with codes (QR codes esp.) 2758 - [] Abstract `line` and `spline` into `nail`. See also: `gesture`. 2759 - [] Add sound to `nail`. 2760 - [] Use https://wicg.github.io/video-rvfc/ for video frame updates. 2761 2762***No Paint*** 2763 - [] Should the old nopaint.art be reachable from within aesthetic.computer 2764 - [] Should a new nopaint be built from scratch? 2765 2766***Sidelight*** 2767 - A light you can set the color off. 2768 - Make it flicker. 2769 - Have presets. 2770 - Very useful for making videos with an extra device! 2771 2772🐞 Annoying Bugs & Regressions 🪱 2773 - [] Alt / Meta shortcut needs to work for mac to reset pan. 2774 - [] Live reload: boot will not paint again if paint returns false in a contrived example 2775 + In Production 2776 - [] https://gist.github.com/lukaslihotzki/b50ccb61ff3a44b48fc4d5ed7e54303f 2777 - [] Zooming in on the page a lot will make the margin too large 2778 and squash the main display. 2779 + Dev Only 2780 - [] `sfx` do not decode in Safari when using the development servers. 2781 (Probably due to a local IP address or a CORS issue?) 2782 + Done 2783 - [x] Fix `spray` multiplayer / socket messages not being sent regression. 2784 - [x] Fix painting device rotate / resize cropping issue. 2785 - [x️] Fix Firefox AudioWorklet Initialization Bug `Error: Module resolve hook not set` 2786 - [x] Video download `local` fix. 2787 - [x] Favicon CORS fix (generate the icon / use a data uri) 2788 - [x] Get SharedArrayBuffer Working again. 2789 - [x] `video` In-progress transcoding does not cancel when leaving a piece. 2790 - [x] S3 Developer Onboarding Sync Not Working 2791 - [x] Rename $api.upload to $api.open? or $api.importFile? 2792 - [x] Research the use of "requestProvider.js.map" and work it into `index.js`. 2793 - [x] The back button does not work in the Instagram in-app browser. 2794 - [x] Jumping back to the prompt from `word` no longer stamps the word. 2795 - [x] Fix tap focus / unfocus regression in `type`. 2796 2797❤️ Side Missions ❤️ 2798 - [] Finish learning about Tezos, LIGO: https://academy.ligolang.org/pascal/chapter-types 2799 - [] Chalkboard / material simulation. 2800 - [] Try and get fullscreen on iOS / iPadOS again... maybe sideload the app shim? 2801 - [] Add `every("1s", () => {})` shortcut to the `sim` api. 2802 - [] How to limit the number of Frame's in the start of a disk? 2803 Perhaps I could have a hidden meta-programming setup line at the top? 2804 - [] (disk.js:28) Make this a boot choice via the index.html file? 2805 - [] Fix skippy scale rendering of pixels on non-retina displays. 2806 - [] Bake `wrap` and `pixel` into the api. 2022.02.01.02.46 (JAS) [via sage.js] 2807 - [] in `tracker.js`: Recenter boxes on line 174. 2808 - [] Multiplayer board reset in `spray` and `server`. 2809 - [] Global recording of user actions (what about application actions) and 2810 audio+video into one file? 2811 - [] Prototype the dream I had about a system-wide, radial menu. 2812 - [] Write a file editor for something crucial in aesthetic.computer, like a 2813 TODO: Program, or produce media to store with GIT-LFS. 2814 See also: https://web.dev/file-system-access 2815 And: https://googlechromelabs.github.io/text-editor 2816 - [] Make a VSCode extension that opens an official aesthetic.computer pane? 2817 2818🎃 SETUP 💾 2819 2820`aesthetic.computer` is virtual computer environment / interface designed for 2821 creative exploration. development requires `nodejs`, an up-to-date web browser, 2822 and knowledge of javascript. if you're interested in learning how to contribute 2823 visit https://discord.com/invite/aesthetic-computer and i'll help you out - jeffrey 2022.04.24.05.05 2824 2825macOS from scratch 2826 1. Get 'homebrew' (https://brew.sh) and install 'fnm' (nodejs) 2827 2828 Redis 2829 0. You may need to install `redis` to get the live reload working properly 2830 on local. 2831 1. You can use homebrew for this and a default install should be fine, so 2832 long as `redis-cli` works. 2833 2834Make sure `git` is installed, (you can do that through `homebrew`) and then get set up for development: 2835 0. Also install `fnm` the node version manager. (and add environtment variables to your shell: https://github.com/Schniz/fnm#shell-setup) 2836 0.0a Open new terminal window and cd into aesthetic.computer directory install node version 2837 1. Check `ssl-dev/readme.txt` to generate and add local SSL certificates. 2838 2. `npm install` from the project directory. 2839 3. `cd` into `session-server` and ask Jeffrey for Firebase json file 2840 4. Get added to the Netlify project as a collaborator. 2841 5. `cd` into `system` and run `npx netlify login` 2842 5a. run `npx netlify link` 2843 6. Now from the `aesthetic computer` directory run `npm run code` and in another shell `npm run server:session`. 2844 7. Visit `https://localhost:8888` to view the running site! 2845 8. If you need local copies of the site's rich media `assets` then ask Jeffrey 2846 and you can slurp them from S3 so you can run the below. 2847 2848Static Assets 2849 0. Squadmates can use `npm run assets:sync:down` after configuring `aws-cli` with 2850 the aesthetic.computer storage keys provided by Jeffrey. 2851 2852🧩 Making a new included piece. 2853- Run `npm run new name-of-your-piece Description of your piece.` 2854- Then open the file in `system/public/aesthetic.computer/disks` and start working! 2855 2856In production: Add a "#debug" hash to the end of your URL for more verbose output. 2857 2858If developing: Add a "#nodebug" hash to the end of a URL for less output. 2859 2860📖 This project originally began as two separate repositories with their own 2861commit history: `digitpain/system` and `digitpain/disks`.