Monorepo for Aesthetic.Computer
aesthetic.computer
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`.