Monorepo for Aesthetic.Computer
aesthetic.computer
1🪦 Completed Tasks (dumped from `README.txt`)
2
3 * `kidlisp` *
4 - Get $bez working with proper syntax highlighting.
5 - Future proof URL sharing and attribution.
6 - [x] Any kidlisp that runs successfully should automatically be added to the
7 database and given a unique UTC timestamp identifier or other meaningful
8 identifier.
9 - [x] Uploaded kidlisp's uniqueness should be enforced somehow similar to how
10 handles must be unique. If another record is found just return or use that.
11 - [x] Uploaded kidlisp should automatically be attributed to the user who uploaded it
12 or be treated as anonymous contributions otherwise.
13 - [c] If the kidlisp was generated from a prompt, that prompt should be recorded
14 as was the model used to generate it and a git hash reference to the
15 pre-prompt file so it could be regenerated under various conditions.
16
17 * Regressions *
18 - [x] `painting` ... no longer is tappable because of
19 new multiline label hitboxes?
20
21 * from 'chat.mjs' *
22 + Done
23 - [x] Add textual links to AC chat.
24 - [x] Does adding the radar key prevent gcp logs from running?
25 - [x] Or maybe the log name / id needs to change each time?
26 - [x] Try adding the radar key back or... running a deployment again with the same log name...
27 - [x] Add a basic client to `sotce-net`.
28 - [x] Start with 'dev' / 'local' version.
29 - [x] Write it as a totally separate UI layer that always connects.
30 - [x️] Import the chat module to `sotce-net`.
31 - [x] Set up another instance of this chat for `sotce-net` that...
32 - [x] Will have a different subdomain setup so `conductor` will need updates.
33 - [x] Add the new production deploy command to package.json
34 - [x] Walk through `conductor.mjs` to see where chat-system needs changes.
35 - [x] Set up separate subdomain in Cloudflare at `chat.sotce.net`.
36 - [x] Run a test deployment.
37 - [x] How will it know what version it's running both in production and in development?
38 - [x] Run the sotce-net instance in development in addition to the AC one in emacs.
39 - [x] Will use a different table in the database like `chat-sotce-net` instead
40 of chat-system.
41 - [x] Will require subscriber authorization from `sotce-net` users (code can be found in`sotce-net.mjs`)
42 if running that instance in order to actually send messages but not to join or
43 observe chats.
44 - [x] Add the proper commands for a new system to package.json.
45 - [x] Development command.
46 - [x] Run the development command in tandem with `chat-system` and
47 see if it boots up properly.
48 - [x] Update nanos versions / dependencies in this dir.
49 - [x] Set up logging so I know why this server is crashing.
50 - [x] Maybe it's a setting in Google Cloud to log the serial console.
51 - [x] Also check the nanos logs.
52 - [x] Or maybe I need to use an external service. (Signed up for nanos Radar)
53
54 * `shop` launch *
55 + Done
56 - [x] Modify homepage a bit and product slide shows and then launch via Instagram?
57 - [x] Homepage.
58 - [x] Mobile product view.
59 - [x] Edit Shopify code: https://admin.shopify.com/store/3pc8se-sj/themes/141869547701
60 - [x] Make sure 'corner labels' expand from shopify to AC.
61 - [x] Fix prompt~hi not opening keyboard / being weird on reload.
62 - [x] Get the backspace key shortcut to work?
63 - [x] Add titles for each drawing and final descriptions.
64 - [x] Add little corner guy to Shopify bottom right corner from `docs`.
65
66* `shop` items to add *
67 https://aesthetic.computer/share~25.4.13.18.54
68 https://shop.aesthetic.computer/products/pictures_25-4-13-18-54
69 https://aesthetic.computer/share~25.4.13.19.24
70 https://shop.aesthetic.computer/products/pictures_25-4-13-19-24
71 https://aesthetic.computer/share~25.4.13.19.06
72 https://shop.aesthetic.computer/products/pictures_25-4-13-19-06
73 https://aesthetic.computer/share~25.4.13.17.47
74 https://shop.aesthetic.computer/products/pictures_25-4-13-17-47
75 https://aesthetic.computer/share~25.4.13.18.18
76 https://shop.aesthetic.computer/products/25-4-13-18-18
77
78- [x] Fix `tape`.
79
80* swipe to share *
81 - [x] Implement swipe scrub to share.
82
83*** put 'chat' back up with increased moderation support ***
84 - [x] Test muting and unmuting mixed in with the below.
85 - [x] (Incognito)
86 - [x] Make a new account: `me+stripmepls@jas.life`.
87 - [x] Make a new handle 'stripmepls'.
88 - [x] (From @jeffrey)
89 - [x] Use `admin:handle:strip @stripmepls` on the `prompt`.
90 - [x] Check the other tab.
91 - [x] Try to make a new handle again.
92 - [x] Delete the account with `delete-erase-and-forget-me`.
93 + Done
94 - [x] Test stripping.
95
96*** `stample` ***
97 - [x] Make initial prototype.
98 - [?] Integrate into `notepat` at some point?
99
100*** `tv` is a `notepat` remote ***
101- [?] Use `tv channel-name-here` to scope the udp broadcast to a particular
102 channel.
103- [x] Have `notepat` send udp messages over to `tv`.
104- [x] Make the `tv` piece which simply responds to udp
105 messages prefixed with `notepat`.
106
107*** readme refresh ***
108 - [x] Redesign the project README.
109 - [x] Graveyard a lot of dead TODOS and instructions below.
110 - [x] Make a new intro above.
111 - [x] Move all TODOs other than like a 'current' task to a new TODO.txt.
112
113*** `chat` instancing ***
114 - [x] Make a new instance for `sotce-net` chat and fix a bunch of stuff for all chat.
115
116*** 📧 Aesthetic Inc. Announcement Email ***
117 - [x] Draft and send `Aesthetic Inc.` announcement to supporters and friends.
118 - [x] Send quick message to all `booted-by` patrons asking to meet.
119
120*** sotce.net ***
121 - [🟢] Finish sotce-net rc1
122
123*** Old `chat` server done list 24.10.27.07.52 ***
124 - [x] Get Firebase notifications fixed everywhere!
125 (Maybe in production?)
126 - [x] Get text filtering working.
127 - [x] Connect to production server.
128 - [x] Disallow any req that isn't the chat-system.aesthetic.computer host when not in dev mode.
129 - [x] New connection process:
130 1. On a new connection, get a paged list of messages from MongoDB,
131 but also keep a cache here on the server so it just starts up
132 and always stores the last 50 messages or something.
133 2. Create an http request on this endpoint for fetching more messages.
134
135*** Aesthetic Direct No. 1 ***
136 - [x] Add qualifying statement that shows
137 - [x] the cultural, creative, and financial significance of Aesthetic Computer.
138 - [x] Announcing Aesthetic Inc.
139 - [x] Write and date an initial message that...
140 - [x] Announces the corporation and links the papers.
141 - [x] Honors and thanks the booted-by patrons.
142 - [x] Include a path to converting early patrons into SAFE holders.
143 - [x] Announcing "Aesthetic Inc."
144 - [x] Add endpoint to show live 'metrics' / stats on the platform.
145 - [x] Account Signups: via auth0
146 - [x] Handles registered:
147 - [x] Other database fields.
148 - [x] Add 'Track changes to this page.' link on the bottom.
149
150*** sotce-net pre-launch ***
151 *** Firefox ***
152 - [x] Test the full site interactions in Firefox.
153 - [x] Add Print 🖨️ CSS behind touch menu.
154 - [x] Add more consistent rendering of page outlines.
155 - [x] Get scrolling working in editor in iOS.
156 - [x] Add a nice veil fix for iOS Safari, maybe by changing the page
157 background color via a class on the body.
158 - [x] Speed up rendering of the feed.
159 - [x] Deprecate last line feature.
160 - [x] Keep spinner up until feed is rendered...
161 - [x] Prevent page zoom and scroll inconsistency on iOS.
162 - [x] Change full page background color once feed is open.
163 (Helps with scrolling.)
164 - [x] Also fix editor background color to match things.
165 - [x] Prevent dragging normal buttons from scrolling the page on iOS.
166 - [x] Get corner tap interface correct on touch screens.
167 - [x] Add a lavender or light blue backdrop to the feed screen.
168 - [c] Fix editor layout.
169 - [*] Hyphenation was not supported in VS Code so I filed a bug.
170 - [x] Play more with typography and page layout.
171 - [x] Choose a better 18 line font.
172 - [x] --- 🏁 Launch 🏁 ---
173 - [x] Preload the Wingdings font so it appears with no flah in the editor.
174 - [c] Total subscriptions should only be calculated once a day on demand?
175 - [x] Better loading with spinner while logged out.
176 - [x] Tap and hold cookie shouldn't show context menu.
177 *** Speed Up ***
178 - [x] Choose consistent page type font and size and make sure it fits initial
179 pages from @amelia.
180 - [x] And contains all of the page 1 text.
181 - [x] Use a font from Google Fonts to prototype.
182 - [x] When cancelling a subscription pick up the event in stripe and remove it
183 from the redis cache...
184 - [x] Add an event to ticket.
185 - [x] Store subscription information in redis, and delete it with an expiration
186 that matches the subscription renew date.
187 - [x] Cache in 'subscribed' function.
188 - [x] And cache in ticket.js payment confirmation (speed up first time).
189 // await KeyValue.del("sotce-subscribed", user.sub);
190 // await KeyValue.set(
191 // "sotce-subscribed",
192 // user.sub,
193 // JSON.stringify(subscription),
194 // );
195 - [x] Show spinner while logged out / no blanking.
196 - [x] Test full signup and subscribe flow in production on mobile.
197 *** First Page ***
198 - [x] Pink circle flicker still present.
199 - [x] Have @amelia write her first page and then turn on the feed.
200 - [x] Backdrop under page editor should not cut off on Safari.
201 - [x] Fix focus textfield bugs on touch / iOS.
202 - [x] Check scroll up based on drag amount radius.
203 - [x] Get local style edits running, maybe through ngrok.
204 - [p] Should ngrok appear automatically?
205 - [x] Get flourishes to show up on iOS.
206 - [x] Pink cookie shouldn't show up after.
207 - [x] Fix drop shadows on buttons.
208 - [x] Remove tap highlight from pink cookie.
209 *** 📊 Statistics ***
210 - [x] Add Google Analytics
211 - [x] Show number of subscribed users so far - maybe in the closed donut or
212 privacy policy? and only for certain whitelisted users?
213 - [c] Re-render page touches to include unhandled users.
214 - [x] `eared` corner menu that shows byline
215 *** 🖐️ "Touches" ***
216 - [x] Add some kind of handle based reaction for pages? (touch?)
217 @blahblah and x others touched this page.
218 'ear'
219 - [x] Add back page interactive layer switch.
220 - [x] Tie it to the API
221 *** Crumple ***
222 - [x] Make it so pages can be crumpled by an admin if they are the author.
223 *** 📜 Scroll Checking ***
224 - [x] Scrolling in the editor or cookie-menu should not affect page scroll.
225 - [x] Make a handful of pages.
226 - [x] Check scrolling with editor.
227 - [x] Check with cookie menu.
228 - [x] New line creation logic in editor.
229 - [x] Make the cookie menu fully scrollable.
230 - [x] Don't run rendering algorithm on every input.
231 - [x] Crumpling an Empty page shouldn't add a record to the database.
232 - [x] Fix line start warning changing when a UI button is pressed?
233 - [x] If text is empty it should always be 18.
234 - [x] Make sure subscription receipt emails get sent.
235 - [x] Add coloring for "Awaiting verification..." and "Email verified!".
236 - [x] Add a "thank you for subscribing" alert popup.
237 - [x] Set the "sotce" handle to "amelia".
238 (Tell Amelia to set it.)
239 - [x] Restrict 'sotce' handle (reserved).
240 - [x] upscrolling
241 - [x] *** 🛫 Put Editor Online ***
242 *** ⭐ Page Composition ***
243 - [x] Add 'discard' ability to page editor.
244 - [x] Wire up the ui and api.
245 - [x] Make the discard button red and publish button green. (#discard)
246 - [x] Add loading spinner to `write-a-page` and `publish` and `draft` and `discard` buttons.
247 - [x] Keep the most recent draft remotely / have a "published" flag on pages.
248 - [c] Show rules or timer under the form?
249 - [c] Enforce global uniqueness on page content
250 - [x] Update the 'write-a-page' button with a network call.
251 - [x] Which should return the page model with the right server day.
252 - [x] Add a draft flag to the 'write-a-page' api call.
253 - [x] Remove draft flag on publish.
254 - [x] textarea should auto-focus when it is opened
255 - [c] even on refresh (not possible)
256 - [x] Fix justified text reflow.
257 - [x] Write last line behavior into the editor. (if possible)
258 - [x] Write last line behavior in page renderer.
259 - [x] Switch to transform based page renderer and editor.
260 - [x] Prevent overwriting past the boundary.
261 - [x] Fix word-break.
262 - [x] Add color to the 'lines left' warning. green -> orange -> red
263 - [x] Build out the editor form to match page design.
264 - [x] 📟 Design the editor first.
265 - [x] Lines left needs to be important.
266 - [x] Add page count and title header to design.
267 - [x] Title header
268 - [x] page count
269 - [x] Test scaffolded end<->end page creation logic.
270 - [x] add endpoint for submitting a "page"
271 - [x] add the 'write a page' button
272 whitelisted for admin users
273 - [x] show the form, maybe in a modal?
274 *** Page Layout ***
275 - [x] Check that layouts don't break with page zoom feature, and that
276 text actually gets larger.
277 - [x] Fix tiny width sizing breakpoint (good enough for now!).
278 - [x] Position cookie inside of corner more nicely.
279 - [x] Always make sure at least one page fits on screen.
280 (vertical bound)
281 - [x] Clicking the donut should save scroll position in pages.
282 - [x] Standard resizing width logic.
283
284 - [x] Add 'isAdmin' support for sotce-net subs and add necessary subs.
285 - [x] go through all the prompt boxes, including the username entry / too long / inappropriate etc.
286 - [x] make a privacy policy for sotce.net (inlined in this file)
287 - [x] update ac privacy policy with shared accounting rules
288 - [x] add handle creation / handle support for sotce-net users
289 🧪 Manual Tests
290 (Sotce Side)
291 1. - [x] create a new `sotce-net` account under `me+handleswap@jas.life`
292 2. - [x] validate email and subscribe
293 3. - [x] try to set a handle to 'handleswap1'
294 4. - [x] then create an aesthetic computer account under `me+handleswap@jas.life`
295 5. - [x] validate email and see if handle 'handleswap1' appears automatically / user joins chat
296 - [x] What to log here? and how?
297 - [x] Test auth0-events in production...
298 - [x] And log it that way.
299 6. - [x] change the handle of the user to `handleswap2' and see if it updates
300 on sotce-net automatically (after a refresh)
301 7. - [x] update the user's email on aesthetic computer to `me+handleswap2@jas.life`
302 - [x] validate email again on both `sotce-net` and `aesthetic computer`
303 8. - [x] delete the ac user and make sure the sotce-net handle and user remains
304 9. - [x] delete the sotce-net user and run the same test for the aesthetic side
305 (Aesthetic Side)
306 1 - [x] create an ac account under `me+handleswap@jas.life`
307 2. - [x] validate email and set handle to 'handleswap1'
308 3. - [x] then create a sotce-net account under `me+handleswap@jas.life`
309 4. - [x] validate email and see if `handleswap1` appears automatically
310 - [x] Do better with the auth0 flow.
311 - [x] Re-capitalize login screens effectively.
312 - [x] Verification email should re-route to a nice page if in a new tab.
313 - [x] Also check this on aesthetic.
314 - [x] change email after being subscribed...
315 - [x] Add support for: ?supportSignUp=true&supportForgotPassword=true&message=Your%20email%20was%20verified.%20You%20can%20continue%20using%20the%20application.&success=true&code=success
316 - [x] Test email changes post subscription...
317 - [x] once a handle is made there should also be a way to change the handle
318 and see the button update.
319 - [x] ⚠️ ensure that all cross-tenant email handle checks require email_verified
320 to be true
321 - [x] email changes need to persist on both networks and must be shared
322 and they need to update any customer emails on stripe that exist for the
323 sotce-net users...
324 - [x] there should be a 'create handle' button / (a dedicated handle space)
325 - [x] this should prompt the user to make a handle
326 - [x] make sure handles will also be deleted when accounts are deleted, BUT
327 only if they are not shared across an aesthetic computer account
328 - [x] Perhaps the subs could be 'sotce' prefixed.
329 - [c] Combine texts so it says "Your subscription for `me@jas.life` renews on..."
330 - [x] delete all existing subscriptions in stripe and resubscribe with a test
331 user
332 - [x] tapping the user's email address should allow them to alter / reset
333 email even after initial verification...
334 - [x] add cookie favicon which switches if the user is logged in...
335 - [x] Account deletion.
336 - [x] Implement a DOM structure for these layouts.
337 - [x] Add a templated layout.
338 💈 #wrapper.gate
339 // 👣 logged-out
340 [login] [im-new]
341
342 // 👣 unverified
343 signed-in-as: me@jas.life
344 "waiting for verification" [resend?]
345 [logout] [delete account]
346
347 // 👣 unsubscribed
348 signed-in-as: me@jas.life
349 [subscribe]
350 [logout] [delete account]
351
352 🏡 #wrapper.garden
353 // 👣 subscribed
354 signed-in-as: me@jas.life
355
356 ^^^^^settings^^^^^ (colophon?)
357 "you are subscribed to sotce-net!"
358 "your monthly subscription will auto-renew on July 7th, 2024 for $5"
359 [cancel renewal]
360 [delete account]
361 _______________
362 [logout]
363 - [x] add a cancellation button...
364 - [x] make sure it returns the right subscribed information below
365 - [x] refreshing the page with websockets needs to keep the current session somehow!
366 - [x] run a new development subscription
367 - [x] try from vscode / cancel as needed?
368 - [x] bring in `respond` helper and replace `statusCode:` handler returns with it.
369 - [x] stripe paywall
370 - [x] set up subscription payment wall on 'subscribe' button
371 - [x] run a test subscription
372 - [x] check for subscription status somehow...
373 - [x] Make subscription `priceId` on Stripe.
374 - [x] bring in necessary env vars for stripe
375 - [x] Add session / login support to the Aesthetic Computer VSCode extension /
376 switch to an in-editor development flow.
377 - [x] Need to be able to login to Aesthetic with VS Code, then switch to
378 sotce-net and then back to aesthetic and stay logged in.
379 - [️x] Need to be able to log in to sotce-net with VS Code, then switch
380 to Aesthetic and back and stay logged in.
381 - [x] Disambiguate 'session' query string and
382 somehow receive both / capture both on first load.
383 or know which one to send for both AC and Sotce-Net.
384 - [x] Get rid of the 'user consent' signup field.
385 (Only is necessary on localhost)
386 - [x] auth0 based auth / registration
387 - [x] review existing ac auth implementation and necessary
388 keys
389 - [x] Set up login pages / logo etc.
390 - [x] not logged in option
391 - [x] logged in option
392 - [x] Use shadow dom / custom element or a "modal" element for signup.
393 - [x] Run through a test sign-up.
394 - [x] Set up email sending service via google apps?
395 - [x] Developmnt mode.
396 - [x] Live reload function.
397 - [x] Set up path->method routing in `sotce-net.js`.
398 - [x] Test login in production in VS Code,
399 - [x] and via vscode.dev
400 - [x] Test login inside VS Code local.
401 - [x] Test login in production outside VS Code.
402 - [x] Test login outside VS Code local.
403 - [x] Test signup in development.
404 - [x] Check how the auth works / token passing works from VSCode.
405 - [x] Add support for developing `sotce-net` inside of the VS Code extension.
406 - [x] In both development and production.
407
408*** slide ***
409 - [x] add two octaves of sliding with volume on the x axis for
410 a single voice instrument and have a textual read-out for what note
411 is being played
412
413*** list ***
414 - [x] add handled pieces to list using list @handle
415
416*** .pjs compiler ***
417 - [🟠] Write the metaprocessor in that slurps the .pjs to OpenAI
418 at runtime.
419 - [x] Break the below down into steps and get it compiling on each load.
420 - [x] Add syntax support to the vscode extension for the .pjs files / metaprocessor.
421 // 🔥
422 // TODO: Write `prompted` javascript that will compile and run against any
423 // LLM version 24.02.22.19.38
424 // Call it `.pjs` ?
425 // piece, processing, prompted
426
427 //if (!net.iframe && params[0]^does not start with^) {
428 // return;
429 //}
430
431*** icons ***
432 - [x] fix `/prompt?icon=128x128` not loading icon mode
433
434 *** bleep ***
435 - [x] add sustain to bleep
436
437 *** notepad ***
438 - [x] add boxes / software based layout
439 - [x] 3AGAGA fails in tap (reverts octave)
440
441 *** class -> user list ***
442 - [x] joelle -> @joelle
443 - [x] noelani -> @noelanio
444 - [x] caihong -> @caihong
445 - [x] kim -> @kim
446 - [x] tori -> @toriwazhere
447 - [x] masayo -> @mayomochi
448 - [x] samantha -> @samanthaschen
449 - [x] javid -> @joda
450 - [x] zuhair -> @zuhair
451
452 + Done
453 - [c] separate chat server for class
454 - [x] fix syllabus medical thing / oversight
455 - [x] instead just talk and gather information
456 - [x] title of documentation doesn't change when clicking with the
457 tab open
458 - [x] design colored bars activity for thursday
459 - [x] should all top-level functions be auto-exported
460 if they exist, based on a whitelist?
461 - [c] fix tape
462 - [x] mute socket connection logs (bad for class)
463 - [x] make sure logging in works via the extension
464 - [x️] fix index.js meta parsing logic so it works across the board for
465 all sources of mjs modules and all lisp modules, 💛 perhaps by running
466 sources through a pre-processor endpoint builder function 💛
467 - [x] check in local and production...
468 - [x] code
469 - [x] (requires kidlisp parsing)
470 - [x] @bash/fire! or equivalent with meta function
471 - [x] line
472 - [x] prompt
473 - [x] @jeffrey
474 - [x] ff~1
475 - [x] hell_-world
476
477*** handle updates in chat ***
478 + Done
479 - [x] Get system log messages correct with handle change
480 live in chat or even in field / world and prompt?
481 - [x] When a user changes their handle, all visible chat messages for each
482 client associated with that handle change should update.
483 (Replace the current message buffer for the client.)
484 - [x] Why are messages going > 100 and doubling up sometimes?
485
486*** night stuff ***
487 - [x] Update bots to gpt-4o
488 - [x] Fix UDP server.
489 - [x] Add some money to OpenAI.
490
491*** sign out / account deletion synchronization ***
492 - [x] When a user signs out or deletes their account any other windows should refresh.
493
494*** onboarding optimization ***
495 + Done
496 - [x] Run through onboarding in production with @ida, making any necessary changes.
497 (Check this for both set and unset handles.)
498 - [x] Test sign up flow on a phone.
499 - [x] Run with iOS debugger to test keyboard issues with "Create handle" on
500 localhost.
501 - [x] Add "back to prompt" arrow to left of chat corner.
502 - [x] Reloading prompt in dev does not refresh the keyboard state?
503 - [x] Don't flash pending verification on reload
504 if email has been verified.
505 - [x] Resend email enter key not functioning.
506 - [x] Update email content to include chat and remove other stuff?
507 - [x] Tappable personal handle in chat.
508 - [x] Signed out? Tapping 'nohandle' in chat should go to closed prompt.
509 - [x] Scroll off by 1px.
510 - [x] Guideline is not inside text input.
511 - [x] Chat should say "Enter message...".
512 - [x] Set a handle / EMAIL VERIFIED wording.
513 - [x] After setting a handle, jump to chat.
514 - [x] Button for email should instead say Resend email.
515 - [x] Remove RESEND EMAIL?
516 - [x] Tapping after resend email appears should clear the prompt if there was no edit to the text.
517 - [x] The email confirmation doesn't go away... after setting handle.
518
519*** udp ***
520 - [x] Could not solve and decided to abandon windows based development in
521 favor of focusing only on Fedora.
522 - [c] local udp is not working through the windows container...
523 - [c] it just doesn't work sometimes, maybe this is because
524 there is a remote webrtc server being called somehow / somewhere?
525
526*** aesthetic lisp / s-expression parser and evaluator ***
527 + Done
528 - [x] Add support for functions and variables.
529 - [x] Hook a lisp function into the graph / paint api somehow?
530 - [x] Write s-expressions directly in the prompt if
531 the input begins with a parenthesis / produce
532 a dynamic disk / run existing lisp code through
533 `load`.
534 - [x] Refactor `load` to be more efficient to support this.
535 - [x] Make a source .lisp file in `disks`.
536 - [x] Make a lisp.mjs file that exports a parser.
537 - [x] Read the file in as a piece in load in side `disk.mjs`.
538
539*** 🎹 keys **
540 + Done
541 - [x] Add actual frequencies of the notes for the piano.
542 - [x] Only connect to MIDI on-demand.
543 - [x] Add basic graphics.
544 - [x] Hook up MIDI.
545
546*** dev ***
547 - [?] Fix extra closing brackets being added in mjs files.
548 - [x] Why do mjs files scroll all the way to the bottom after running prettier?
549 - [x] This is because `bios.mjs` and `disk.mjs` are too large
550 and should probably be cut down in size.
551
552*** etc... ***
553 + Done
554 - [x] Add "..." glyph to font.
555 - [x] Fix 'download' / dl command.
556
557*** dev environment ***
558 + Done
559 - [x] Can't kill and re-open platform in the devcontainer...
560 - [x] Auto enter insert mode when switching tabs in emacs.
561 - [x] The eat shells seem to stay open?
562 - [x] Ports are staying open after C-c C-x
563 - [x] https://elpa.nongnu.org/nongnu-devel/doc/eat.html#Shell-Integration
564 - [x] Fix copy + paste across the container boundary.
565 - [x] VSCode status bar todo goal.
566
567*** regressions ***
568 - [x] Republish chat and session-server.
569 - [x] Redeploy.
570 + Done
571 - [x] Download m4a's in Safari contexts for audio decoding.
572 And oggs everywhere else?
573 - [x] Field chat is now broken for some reason.
574 - [x] Add 'beaner' to chat filter.
575
576- [c] Get `docker` running inside the devcontainer.
577 (So that session-server can be published...)
578 (Just don't use docker anymore / leave jamsocket behind.)
579
580- [🧡] Fix `sfx` playback in extension.
581 - [x] Convert all sound in the platform to OGG, which works in
582 the vscode extension.
583 - [x] Why won't the m4a files decode inside VS Code?
584 - [x] Check to see if it works on vscode.dev...
585 - [x] Wire up new AeCo sounds.
586
587*** local devcontainer support ***
588 + Done
589 - [x] Get platform running locally.
590 - [x] Do the emacsd clone trick...
591 - [x] Get fish configs working.
592
593*** @dreamdealer/grisaille ***
594 + Done
595 - [x] Get a nice live reload working in vscode extension's local mode.
596 - [x] Get keyboard shortcuts working in vscode extension.
597 - [x] Entering preslashed urls should jump to the actual url route on the `prompt`.
598 - [x] Get the `media/@handle/pieces` JSON endpoint up and running.
599
600*** fill ***
601 - [x] Make a `fill` brush.
602 - [x] Add it to the docs.
603
604*** obscenity ***
605 - [x] Make sure they don't filter "rapper" / make an exception there.
606 + Done
607 - [x] Combine all 'filter.mjs' modules into one shared file somehow...
608
609*** [🟠] light & dark autocomplete ***
610
611*** emacs + micro ***
612 - [x] Bring `fnm` install back into the Dockerfile?
613 - [x] C-c on the servers should always go back to a shell.
614
615*** -[x] make sure ai.aesthetic.computer only allows requets from either
616 aesthetic.computer or botce.ac ***
617
618*** bot color schemes ***
619 - [x] Fix color schemes for bots, based on `mom`.
620 (No more light mode schemes / just use one.)
621 - [x] mom
622 - [x] dad
623 - [x] kid
624 - [x] gargoyle
625 - [x] brother
626 - [x] sister
627 - [x] wife
628 - [x] husband
629 - [x] boyfriend
630 - [x] girlfriend
631
632*** micro ***
633 + Done
634 - [x] Autogenerate local ssl certificates when first building / booting if they are not present
635 in ssl-dev/.
636 - [x] Implement a `boot` command that will begin the rebuild process
637 from the docker container / or it could be an emacs command even.
638 - [x] Make the `source` open the readme by default.
639 - [x] Take out emacs support and instead connect to the
640 running container from some sub-buffers in an emacs
641 layout that would always be self-hosted.
642 - [x] Combine url code and prompt into one pane / tab.
643 - [x] Auto-switch to the `prompt` tab.
644 - [x] Use my own emacs lisp file / move dotfiles over.
645+ Done
646- [x] Get a basic http server punching through the container.
647
648*** dotfiles ***
649 - [x] Move my own dotfiles to the ac repo?
650
651*** emacs fixes ***
652 + Done
653 - [x] Autoscroll `eat` terminal?
654 - [c] Choose a default emacs theme... perhaps gruvbox again?
655 - [x] Get tab cycling shortcuts working / find other potential shortcut issues.
656 - [c] How can I open the full one-window dev environment in one click?
657 - [x] Subtle issues with buffer rendering after mixing eat terminals and splits... (had to do with emojis)
658 - [x] Add emoji to each tab-bar item.
659 - [x] Use gptel.
660 - [x] Replace 'helm' with vertico / embark and other stuff: https://www.youtube.com/watch?v=d3aaxOqwHhI
661 - [c] Opening a new file should always open a new buffer that splits the current one.
662 - [x] Get rid of terminal warning when opening 'eat'.
663 - [x] Open 'eat' terminals to 'aesthetic-computer'.
664 - [x] Add ascii scroll bars.
665 - [x] Make sure I always have access to the production udp server.
666 - [x] fix ctrl+tab on windows
667 - [c] Include "assets" directory in ctrl+p helm search?
668 (just use ctrl+x and ctrl+f to find file or whatever)
669 - [x] Add code-folding (check out origami or vimdiff mode?)
670 - [x] It should use `zc` and respect my #region marks.
671 - [x] Tab theme needs to make sense.
672 - [x] :q in evil mode should never quit emacs unless it's the last buffer?
673 - [x] Add line numbers back.
674 - [x] Make ctrl+p open instantly in a terminal mode.
675 - [x] Make the `aesthetic-backend` function work in gui and terminal emacs.
676 inside docker and outside.
677 - [x] JavaScript auto-indent needs to be 2 spaces wide
678 - [x] Javascript auto-close braces / brackets not working.
679 - [x] Add gutter at 80 character width.
680 - [x] Save on leave buffer / clicking out of buffer.
681
682
683*** screenshots ***
684 - [x] Map new token ids to screenshot numbers.
685 (https://highlight.xyz/mint/65f5e86427e22afacb0972e7/marketplace)
686 - [x] Add left + right tap buttons that take up the full half-width.
687 + Done
688 - [x] Fix font loading issue.
689
690*** field notes ***
691 - [x] name in field should be positions on the other player instead of in the
692 list so long as they are visible on screen.
693
694*** split ***
695 - [🧡] finish basic split to test world persistence.
696
697*** fix auth0 logo route ***
698 - [x] There is an ssl error on: https://logo.aesthetic.computer.nyc3.cdn.digitaloceanspaces.com/painting-2023.8.21.10.25.png
699
700*** text centering issue ***
701 - [x] seems to happen only after entering `field`? and also baktok is affected.
702
703*** dark mode updates ***
704 - [x] and switches every refresh...
705 - [x] Switching between dark and light mode in the system settings
706 always switches the mode no matter what, even if they are out of sync.
707
708 *** light mode ***
709 - [x] Starfield should paint behind the paste and enter buttons.
710 - [x] Starfield connection colors should be different in light mode.
711 - [x] autocompletions no longer appear / are too light in light mode
712 - [x] Color change for buttons in Light Mode. See `ui.mjs`.
713 - [x] Login buttons.
714 - [c] Invert all black and white buttons via the `ui.mjs`. Button default
715 schemes. By setting and updating global in `disk.mjs` on the `ui` module that is red when buttons are painted.
716 - [x] Color change for the border when tapping from the login.
717 - [x] HANDLES SET warning should have different colors in light mode
718 - [x] Put glaze back on.
719
720*** `blur` ***
721 - [️x] Red crosshair drags when pressing corner label.
722
723*** Web Notifications ***
724 - [x] Get web notifications working and tie them directly to push notifications.
725
726*** piece authoriship improvements: workshop with casey ***
727 + Done
728 - [x] Refreshing the page (opening and closing the pane) should be able to work better / reload the last-run code?
729 - [x] Reloading from prompt.
730 - [x] See `disk.mjs` line 2477.
731 - [x] Refreshing the page should show a 404 message if the piece doesn't
732 exist possibly with a simple call to action.
733 - [x] Drag and drop should rename the url path.
734 - [x] Fix dragging and dropping of piece code.
735 - [x] So in order to draw from a template, you can say `new brush` or `new bot` or `new piece frogger`.
736 - [x] One should be able to view source code / use `source` from inside vscode.
737 - [x] Can this produce a new file tab inside of vscode?
738 - [x] vscode extension should somehow ignore system files like `bios` and `boot`.
739 - [x] or just not run auto-complete while in local mode / ignore files over 500 lines.
740 - [x] Entering `docs` in the vscode extension should pop open the docs pane.
741 - [x] Multiple templates for different types of pieces.
742 - [x] "world" template.
743 - [x] "3D" template.
744 - [x] "Bot" template.
745 - [x] "Brush" piece template.
746 - [x] "Blank" piece template.
747 - [x] "Stamp" template.
748 - [x] Add param to `publish` to rename the file.
749 - [x] Publishing the same piece more than once / overwriting a piece doesn't
750 work in the editor.
751
752*** - [x] automatically read metadata tags from top two lines of a piece if
753 the meta function does not exist? ***
754
755*** `list` ***
756 - [x] Populate `list` with all kinds of existing commands.
757 - [x] Enter `list` to view existing commands.
758
759*** `prompt` improvements ***
760 - [x] rewrite typo reply
761 + Done
762 - [x] hardcode typo reply
763
764*** Extension Post ***
765 - [x] The API data should be loaded remotely so docs can reploy with
766 site changes and the extension doesn't need a version bump to
767 keep up.
768 - [x] Wire up the API data so it's live and remote.
769 - [x] Test and make sure auth works in vscode.dev.
770 - [x] Add api docs and auto-complete via the VSCode extension.
771
772*** New VSCode Embedded Extension ***
773- [x] More immediate coding.
774 + Done
775 - [x] Publish new version of extension.
776 - [x] Update instructions and Microsoft Store page.
777 - [x] Rename `code-channel` to a full on `channel` piece
778 and entering empty channel
779 will share the current channel code, while entering a new
780 one will join an existing channel and also share the code.
781 - [x] Check on the differences between coding things in local and production
782 while being both signed in and signed out.
783 - [x] Make a publishing command progress bar / better workflow...
784 - [x] Get user authorized publishing to work.
785 - [x] Get anonymous publishing to work.
786 - [x] Finish authorization flow.
787 - [x] Disable some commands like `hi` if the app is running in an iframe.
788 - [c] Get tab-flipping to work properly if a piece hasn't been loaded succesfully yet.
789 - [c] The `publish` command should open an external url that tries to publish
790 the piece in the browser (to make sure the user is logged in).
791 - [c] Get authorization / login working (for publishing).
792 - [x] Add connection flashes to noise.
793 - [x] Any code that doesn't parse just print out if no piece is running
794 or show an error notice if a piece is.
795
796*** `field -> horizon` transition fix ***
797 - [x] Be able to follow other users.
798 - [x] Prevent doubling.
799 - [?] Aspen found a piece infinite reload bug...
800
801*** botce xmas ***
802 + Done
803 - [x] 6$
804 - [x] Dec. 23 - Jan ?.
805 + Postponed
806 - [c] Baby blue background and white text.
807 - [c] Snowflake backdrop in paywall.
808 - [c] Snowflake Image
809 - [c] Share button for screenshotting.
810 - [c] Test Instagram share.
811 - [c] Add `about` credits.
812
813*** filtering obscenities with underscores ***
814 - [x] Add `obscenity` to session-server.
815 - [x] Add `obscenity` to backend for moods.
816
817*** `field` ***
818 + Done
819 - [x] Localize world geometry to this file.
820 - [x] Move all functions over succesfully.
821 - [x] Move common functionality to a `world.mjs` library file.
822 - [x] Slow camera following.
823 - [x] Add user list support.
824 - [x] Finish "world:fields:list".
825 - [x] When you join you get the full list,
826 - [x] Then when anyone else joins or leaves you get
827 the individual joins and leaves.
828 - [c] Store persistent position on the server / in the database.
829 - [x] Fix up lerping a bit...
830 - [x] Store local position in store.
831 - [x] Make the world scrollable with some background grass.
832 - [x] Always lerp towards next character positions from the network.
833 - [x] Test join `field` simultaneously (with forceProd on) and ensure
834 there are no race conditions or conflicts. (Implement jamsocket's locks?)
835 - [x] Fix instagram not connecting error.
836 - [x] Keyboard stops working after tabbing out and returning.
837 - [x] Android debugger session with @ida's phone.
838 - [x] Remove gutter.
839 - [x] Add world bounds.
840 - [?] Add enter key hint.
841 - [x] Tapping the word in the top left corner should not flash the keyboard.
842 - [x] Get keyboard opening on Mobile Safari.
843 - [x] `Escape` key should still go back to the `prompt`.
844 - [x] (`) key should still go back to the `prompt`.
845 - [x] Add a "special", `smile`, `frown` and `meh` command 😉.
846 - [x] Add color words to change face.
847 - [x] Make sure these can be written like: `smile: chat` / using a
848 simple character on the keyboard.
849 - [x] Get multi-user networking online.
850 - [x] Add an overhead chat display.
851 - [x] Wire up tappable character button to activate the text input.
852 - [x] Enter button should close empty prompt.
853 - [x] Escape key should close prompt no matter what.
854 - [x] Don't snap the cursor all the way back after hitting return
855 / keep it at its position.
856 - [x] Paste button does not appear when going back to the prompt
857 from another piece after entering a single key.
858 - [x] `Enter` button appears and disappears at weird times.
859
860*** iOS Release ***
861 + Version 1
862 + Done
863 - [x] Privacy policy page
864 - [X] Sending Pixel Grab images in iMessage Extension
865 - [X] `download` popup native share interface for storing image.
866 - [X] Change app short name as it appears on homescreen to "aesthetic".
867 - [X] Enable camera access
868 - [X] iMessage plugin (is webview allowed there?)
869 - [X] Launch screen
870 - [X] Screen formatting (margins, padding)
871 - [X] Enable microphone access
872 - [X] Customize allow messages (camera, microphone, notifications)
873 - [X] Offline access
874 - [X] App icon
875 - [X] Sign up work
876 - [X] Logging out (broken)
877 - [X] Notification for `scream`. (via the integrated GCP account)
878 - [X] Notification invite for `pond`.
879 - [X] Test ordering a sticker (check if that is illegal)
880 - [X] Make Offline access page compliant with apple submission guidelines + beautify
881 - [X] Disable landscape mode
882 - [X] Provide a method in your app for a user to opt out from receiving notifs
883
884*** ios resubmission ***
885 + Done
886 - [?] Access to non-account Based features. (Clarification? / Did they know?)
887 - [x] Supply a more decent Support URL.
888 - [x] App Completeness (Mic and Camera Regression)
889 - [x] Account Deletion
890
891*** `bots` list (add colored text) ***
892 - [] alphapoet
893 - [x] angel
894 - [x] botce
895 - [x] boyfriend
896 - [x] brother
897 - [x] dad
898 - [x] decode
899 - [x] encode
900 - [x] gargoyle
901 - [x] girlfriend
902 - [x] husband
903 - [x] kid
904 - [x] liar
905 - [x] mom
906 - [x] sister
907 - [x] wife
908
909
910*** bring back the 404 page ***
911 - [x] Visiting an unresolved piece on first load should
912 redirect to 404.
913
914*** sharing ***
915 - [x] Make sure `shareFile` will always be populated / prevent the
916 race condition.
917
918*** motd is now editable regression ***
919 - [x] :()
920
921*** share (qr) ***
922 - [x] Enter `qr pond` to show a scannable QR code that would join
923 pond, both on lan (properly) and in production, in addition to
924 reading out the IP address.
925
926*** `prompt` star status ***
927 - [x] Use the colors of the starfield to represent connectivity status.
928
929*** Regression ***
930 - [x] Tapping on `prompt` breaks after getting a GPT reply.
931
932*** Monolithic UDP ***
933 + Done
934 - [x] Switch to using UDP for fairy positioning (since it's now monolithic).
935 - [x] Set up a UDP-working version of the session-server monolith.
936 (udp.aesthetic.computer)
937 - [x] Automatically pull git changes for the UDP server.
938
939*** Connection Status ***
940 - [x] Show connection status on prompt and as color of corner labels.
941
942*** 🪷 `botce` launch (ticketed pieces) - Nov. 21 ***
943 + Done
944 - [x] See `botce.mjs`.
945 - [x] Don't send multiple emails for some reason...
946 - [x] Go over UX w/ Ida
947
948*** profile page updates ***
949 - [x] `profile` should be able to <- -> on a user's paintings
950 (and still tap into lightbox for painting / playback)
951 - [x] Add buttons logic from `hell_-world.js`.
952 - [x] move `mood` to be to the top left to the right of username
953
954*** `prompt` issues ***
955 - [x] Shift + Enter is broken now.
956
957*** prutti poems ***
958 - [x] See `prutti.mjs`
959
960*** onboarding "taken" bug ***
961 - [x] Test in production.
962 - [x] Sometimes when users sign up, their untaken handle reports
963 as taken even though it has not been...
964 (`mood` also seems to fail here...)
965
966*** discord reported bugs ***
967 - [x] Entering `hw` twice in a row will yield the weird "helo" / "halo" bug.
968 (Could not reproduce.)
969
970*** delete-able paintings ***
971 (hide from profiles)
972 - [x] Add a keyboard shortcut / endpoint to flag a painting as nuked.
973 (With a `notice`)
974 - [x] Prevent nuked paintings from showing up in the profile list / consider
975 how to hide them.
976
977*** `hw` ***
978 - [x] Landing on `hw` (random) and then going backwards after the
979 auto-jump does not jump back to the chosen token.
980 - [x] Tapping the top left corner switches the token when going back.
981 - [x] There is a weird jumpy infinite redirect loop in `hw` that appears
982 sometimes. Try to reproduce and fix it.
983 - [x] Using backspace after landing on any `hw` does not go back to
984 the prompt, but always should, no matter what.
985
986*** `scream` ***
987 - [x] There seems to be a long delay at times.
988
989*** 🤑 `hell_-world` / `hw` sale day ***
990 + Done
991 - [x] Adjust timestamp button on page resize.
992 - [x] Alert users in `#help` to take a peek (on oct. 31)
993 - [x] Review UX w/ @ida.
994 - [x] Test player / functionality throughout the day.
995 - [x] Add `d` to download keyboard shortcut.
996
997*** scream ***
998 - [x] Word-wrapping.
999 - [x] Fix socket stuff.
1000
1001*** handles ***
1002 - [x] Setting your initial handle always seems to show TAKEN
1003 even if the handle is not taken and succeeds on the first try?
1004 (Could not reproduce.)
1005*** char prompt regressions ***
1006 - [x] Entering text / typing on bots seems to sometimes not bring the prompt
1007 into open mode.
1008
1009*** 😈 `hell_ world` - oct. 30 ***
1010 + Done
1011 - [x] Finish player. See `hell_-world.mjs`.
1012 - [x] Watch some more of the sample painting playbacks and check for other
1013 errors like the ineffective no?
1014 - [?] Try to see if I can hit the ineffective `no` error.
1015 - [x] Alias them to a `hell_-world` command with `hw` for short.
1016 - [x] Paint > 200 pictures on @jeffrey.
1017 - [x] Capture timestamped gesture data from first pointer.
1018 - [x] Fix `done` progress bar repeating and repeating over and over on the
1019 bigger zip file. (Not taking into account full math?)
1020 - [x] Fix up down arrow not showing a blank entry in the loop.
1021 - [x] Fix instant typing after wrong response regression.
1022 - [x] Fix `shape yellow 0.1` being opaque for some reason...
1023 - After what action? `line rainbow`
1024 - [x] Fix `no` not working after first attempt regression.
1025 - [x] Fix zip file loading on `painting`.
1026
1027*** Networking ***
1028 - [x] Remove periods from all buckets on DigitalOcean so that certificates
1029 behind the CDNs work.
1030 - [x] And transfer all the data.
1031 - [x] user.aesthetic.computer
1032 (In progress...)
1033 - [x] sotce.aesthetic.computer
1034 - [x] assets.aesthetic.computer
1035 - [x] wand.aesthetic.computer
1036 - [x] art.aesthetic.computer
1037 - [x] Update all cloudflare DNS settings for these buckets...
1038 - [x] user, sotce, assets, wand, art
1039 + Done
1040 - [x] logo.aesthetic.computer -> pals-aesthetic-computer
1041
1042*** `enter` ***
1043 - [x] Implement a discord slash command webhook.
1044
1045*** brush bugs ***
1046 - [x] `word` multi line centering not working on panned canvas
1047
1048*** `paintings` ***
1049 - [x] Put all paintings in a database, with new ones being added.
1050 - [x] And the download / retrieval code in `profile`, but not necessarily
1051 in painting.
1052 - [x] Existing user paintings need to be added to the database via a migration
1053 script, then some code that adds the record to the database for each
1054 makes sense.
1055 - [x] I need to adjust the upload code to post a record to the database too.
1056 - [x] I need some kind of a scripts directory or admin command for these
1057
1058*** `pond` ***
1059 - [x] a 2d place where connected cursors can communicate with disappearing lines
1060
1061*** annoyance ***
1062 - [x] Up arrow key does not load previous commands on first run.
1063 - [x] Make a mac friendly $creenshot -> painting shortcut.
1064
1065*** screenshot / steal ***
1066 - [x] Global keyboard shortcut
1067 - [x] 5 finger discount
1068
1069*** prompt annoyances ***
1070 - [x] jumping from shortcut to shortcut is a little jarring
1071 - [x] deprecate `NETWORK FAILURE` in favor of a notify.
1072
1073*** `moods` ***
1074 - [x] Show a live-updated list of user moods...
1075
1076*** `bb` -> `booted-by` ***
1077 - [x] make bb a short name for booted-by
1078
1079*** text entry regressions ***
1080 + Done
1081 - [x] Fix regional text selection delay support.
1082 - [x] immediate first key entry no longer works.
1083 - [x] Clear response highlighted text.
1084 - [x] NETWORK FAILURE does not reset the text.
1085 - [x] Backspace shortcut.
1086 - [x] `prompt~line` shortcut no longer works...
1087 - [x] sounds no longer function
1088 - [x] starting with left or right arrow keys doesn't clear prompt
1089 - [x] Pressing tilde while processing can be weird, and
1090 so can typing while processing.
1091 - [x] moving arrow keys left and right...
1092
1093*** `wave` ***
1094 - [x] `wave` pixels are still stretched on Android.
1095
1096*** landing page ***
1097 + Done
1098 - [x] ### handles set
1099 - [x] Add support for transparent animation. (Starfield)
1100
1101*** add zora prefilled `mint` command ***
1102 - [x] https://zora.co/create/single-edition?image=https://upload.wikimedia.org/wikipedia/en/c/cc/Wojak_cropped.jpg
1103
1104*** iOS ***
1105 + Done
1106 - [x] Some highlighted text also breaks.
1107 - [x] Fix delete key not working.
1108 - [x] iOS keyboard auto-suggestions should work.
1109 - [x] Properly handle device rotation with camera...
1110 - [x] Audio loads inconsistently / slowly on iOS.
1111 (Debug on the actual device.)
1112
1113*** important user reported errors ***
1114 + Done
1115 - [x] Fix android errors with keyboard.
1116 - [x] Double entry (reported somehow)
1117 - [x] Backspace (reproducible via @ida)
1118 - [x] Fix Android portrait mode stretching.
1119 - [x] Make sure camera landscape mode works on an iPhone.
1120
1121*** `booted-by` ***
1122 + Done
1123 - [x] complete page
1124 - [🟠] record demo video
1125
1126*** Profiles ***
1127 - [x] Typing in a handle on the prompt and visiting it should work.
1128 - [x] Make sure setting a @handle actually works.
1129 - [x] @handle pages should show the current version of the user's painting.
1130 (Upload and replace the file in S3, then send a redis sub ping for
1131 that user.)
1132
1133 *** `tape` ***
1134 + Done
1135 - [x] Always show white border on pause.
1136 - [x] Final iOS testing.
1137 - [x] Get audio / voice-over working good.
1138 - [x] Why does audio get louder while starting a `tape` on iOS?
1139 - [x] Audio slides.
1140 - [x] "Processing..." progress bar cosmetics.
1141 - [x] Fix letterboxing again / changing window size while recording and
1142 playing back.
1143 - [x] Fix progress bar.
1144 - [x] Get the stamp typography just right.
1145 - [x] Make the red recording progress bar decrease.
1146 - [x] Cache download link.
1147 - [x] Try a new strategy where frames are dumped
1148 and then playback occurs through a live mediastream that
1149 composes the frames and the sound. This can be captured
1150 when download is tapped?
1151 - [x] Fix any the synchronization errors.
1152 - [x] Show mouse cursor / touches in the recordings.
1153 - [c] See if tape addition works via concatenating stored tape now?
1154 - [x] Make better / more interactive `tap to play` call to action.
1155 (No longer necessary right now because it should always auto-play?)
1156 (And test it with the buttons)
1157 - [x] Wire up corner hotspot even though video covers it.
1158 - [x] First just keep the button but prevent it from rendering.
1159 - [x] Add timestamps to tape file names
1160 - [x] Add a special 1080x1920 flag if needed. `tape:tt`.
1161 - [x] disable stackable recordings
1162 (Put behind a `tape:add` flag.)
1163 - [x] Test in iOS to see if videos can actually be uploaded to TikTok.
1164 - [x] And stop it from flickering.
1165 - [x] Wire up download button for downloading the file with the proper extension.
1166 - [x] Add `HANDLE` watermark if a handle exists.
1167 - [x] Make tape progress bar global for the tape, and superimposed.
1168 - [x] Stop the start flickering.
1169 - [x] Overlay a global progress bar on the recording.
1170 - [x] Also see if glaze can be swapped in on the fly if it's enabled. (📓 Not enabling, wait until full GPU renderer.)
1171 - [x] Clear the screen each frame.
1172 - [x] Add a stamp while superimposing.
1173 - [x] Hide it from the actual recorded pixels.
1174 - [x] Check to see if mic is already connected in BakTok and skip starting
1175 screen if it is.
1176 - [x] and also if the freaky-flowers / 3D buffer can work, if enabled.
1177 - [x] Put download button on bottom right of `video` page, removing the other lame buttons and skipping the `download` page.
1178 - [c] downloadable `baktok` video.
1179 - [x] system-wide `tape` command to record voice with everything else.
1180 (Default 30 seconds with progress bar of some kind)
1181
1182*** Remove Back Button ***
1183 - [x] Remove back button
1184
1185*** textfence ***
1186 - [x] Title of tab is merely "textfence".
1187 - [x] Fix duplicate playback of phrases.
1188
1189*** Onboarding Bugs ***
1190 + Done
1191 - [x] Using the backspace command reloads the font?
1192 - [x] `prompt` button appears in bottom left corner in all pieces
1193 but pieces can opt out and only when coming from the prompt
1194 - [x] `enter` and `backspace` as primary keyboard shortcuts
1195 - [x] profile page when not logged in should say sign up to create profile
1196 - [x] uploading media with no handle should still use email
1197 - [x] pressing back button requires extra prompt tap
1198 - [x] back button does not bring up keyboard... (same as above?)
1199 - [x] handle with no parameters should flash EMPTY
1200 - [x] unverified = email unverified and wrap the message
1201 - [x] same email should say taken
1202 - [x] typing "me" in one tab after setting handle in another tab
1203 does not get the handle update
1204
1205*** Onboarding ***
1206 + Done
1207 - [x] Add email update command / link.
1208 (Should work similarly to "handle" in `prompt` and have an endpoint.)
1209 - [x] Add verification to handle confirmation in API.
1210 - [x] Thank you for confirming your email.
1211 - [x] Make auth0 emails match the formatting & tone of the print order emails.
1212 - [x] Welcome and please verify email.
1213 - [x] Where is the user directed to after clicking the verify link?
1214 (What are the possibilities here?)
1215
1216*** colplay ***
1217 - [x] Tie a sound with a color.
1218
1219*** @maya/sparkle ***
1220 - [x] Get sparkle working again and add it to @maya.
1221
1222*** Backdrop ***
1223 - [x] Get a backdrop test in place.
1224
1225*** Stickers ***
1226 - [x] How do I treat alpha in images?
1227 - [x] Make it black in both the mockup and in the actual resize setting.
1228 (This needs to be a url option in `pixel`)
1229
1230*** Fix `Painting` page in Firefox ***
1231 - [x] Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://user.aesthetic.computer/auth0|63effeeb2a7d55f8098d62f9/painting/2023.8.24.14.26.54.544.zip. (Reason: CORS request did not succeed). Status code: (null).
1232
1233*** Get Deployment Working Again ***
1234 - [x] Move `tts.js` to `ai.aesthetic.computer/api/say`, removing
1235 the large GCP environment variables.
1236
1237*** deck ***
1238 - [x] Make a complete interactive deck prototype.
1239
1240*** better `paste` rotation ***
1241 - [x] Make paste rotation work pixel perfectly for all 90 degree increments.
1242 and all image sizes.
1243
1244*** Decode / Encode (Issue) ***
1245- [x] Text automatically copied to clipboard when typing `decode` and
1246 going to the piece.
1247
1248*** nopaint ***
1249 - [x] Scaffold `nopaint`.
1250
1251*** Drag + Drop / Publishing ***
1252 - [x] Test `publish` command by using new extension.
1253 + Done
1254 - [x] Only publish to the correct user via the extension. (Not to everyone subscribed...) (See `extension.js`)
1255 (Make `publish` command)
1256 - [x] Add an on-screen friendly UI message once a piece has been published.
1257 - [x] Local extension not working. (SSL Self-signed Error / Unsolvable)
1258 - [x] Get user hosted pieces to run.
1259 - [x] Fix cloudflare wrangler dev worker.
1260 - [x] Get guest hosted pieces to run.
1261 - [x] Add publish command underneath `Run Piece`.
1262 - [x] Test code-channel re-routing along with drag + drop.
1263 - [x] Filter codeChannel messages on the server.
1264 - [x] Fix debug live-reload blank load from prompt.
1265 - [x] Fix drag + drop coding not finding code signal. (disk:1426)
1266
1267*** fr moca notes ***
1268 - [🍄] Get mushrooms talking to humans. (Harry)
1269
1270*** Happy Hands 🖐️😃 ***
1271 + Done
1272 - [x] Put hand-tracking data in core loop?
1273 - [x] Test `@mediapipe` tracking integration on iOS.
1274 - [x] Get multiple refreshes working on iOS without losing tracking?
1275 - (Create new landMarker but dont reload libs?)
1276 - [x] Get geometry working properly across all systems.
1277 - [x] Get rotation working on iOS.
1278 - [x] https://mediapipe-studio.webapps.google.com/demo/hand_landmarker
1279 Performance comparison ^
1280 - [x] Also test original demo and hand_landmarker above on Firefox!
1281 - [x] Profile `@mediapipe` for memory leaks in the worker context.
1282 - [x] Plan next meeting w/ Tina. (6th)
1283 - [x] Explore gesture recognition model: https://mediapipe-studio.webapps.google.com/demo/gesture_recognizer
1284 📓 Notes & Spec
1285 (All hands are defined by integer ids 0-n)
1286 - Creating and Publishing
1287 (pattern -> body) -> style -> face
1288 mesh creation
1289 1. `hhf` aka `happy-hand-factory` with an integer.
1290 - Tie us to working with a particular hand and jumps to step A by default.
1291 - Go to another step with: `hhf:body 800`
1292 - Viewing and Using
1293 1. `hh` or `happy-hand` takes you to using a random hand from 0-n.
1294 2. `hh 800` will view a hand
1295 ✅ Done
1296 Thursday
1297 - [x] Got hand data working!
1298 - [x] Fix framebuffer initialization error from mediapipe loading delay. (@jeffrey)
1299 Wednesday
1300 - [x] Integrate `@mediapipe/hands` into the project.
1301 Tuesday
1302 - [x] Draw and define the 2D mesh thingy inside `pattern`.
1303 Monday
1304 - [x] Define command set for pipeline.
1305 - [x] Create `hhf` piece. (hhf.mjs)
1306 - [x] Onboard @ttarigh to the repo.
1307 - [x] Set on the client a global variable that determines what
1308 hand we are "on".
1309 - [x] Limit the count to 1024 or something like that.
1310 - [x] Fail if no param.
1311 - [x] Find good name for this process...
1312 - [x] Creating `happy-hands-factory` with an alias `hhf`.
1313
1314*** Adding Notifications ***
1315 - [x] Run on a device and send the first test notification.
1316 - [x] https://designcode.io/swiftui-advanced-handbook-push-notifications-part-2 (Halfway down page.)
1317 + Done
1318 - [x] Set up `FCM` (Firebase Cloud Messaging)
1319 - [x] Add integration to iOS app.
1320 - [x] https://github.com/firebase/quickstart-ios/tree/master/messaging
1321
1322*** lyrical melody finder / selector ***
1323 - [x] Fork `tone`.
1324
1325*** `whistle` ***
1326 + Done
1327 - [x] Get working on mobile.
1328 - [x] Whistle into the aesthetic.computer and get sine wave notes back.
1329 - [x] Proper oscillator phase shifting / tone updates.
1330 - [x] Add sine wave to speaker.
1331 - [x] Add boilerplate `whistle` code from `microphone`.
1332 - [x] Integrate pitch recognition with:
1333 - [x] https://github.com/bojan88/WASM-vs-JS-Pitch-detector
1334 - [x] Integrate pitch recognition processor into Microphone / Disk API.
1335 - [x] Get JS audioWorklet version working.
1336 // Cancelled
1337 - [n] https://tfhub.dev/google/tfjs-model/spice/2/default/1
1338 - [n] Match the samples / check the accuracy of the example.
1339 - [x] Example in : `spice-tensorflow.html`
1340 - [x] Why does this crash the tab? (Seems to crash on linux.)
1341 - [x] Make the example async / frame-skipping.
1342 - [n] https://editor.p5js.org/ml5/sketches/PitchDetection
1343 - [n] See if this works better than `spice`.
1344
1345
1346*** `prompt` History ***
1347 - [x] Move global keyboard shortcuts outside of `act` (to kill pieces mid-load / while swapping)
1348 - [x] Don't add `tone` / ahistorical jumps to prompt history list.
1349
1350*** whistle & tone ***
1351 + Done
1352 - [x] `tone` loop should not break on iOS / it eventually halts with a yellow spinner.
1353 - [x] Update `whistle` to not trigger sound in beat.
1354 - [x] Update `tone` to not trigger sound in beat.
1355 - [x] Refactor `beat` so that sounds can be triggered from `paint`, `act`, and `sim`.
1356
1357*** Whistle ***
1358 - [x] Get whistle working on iOS.
1359
1360*** encode/decode ***
1361 + Done
1362 - [x] Fix word wrap on response issue.
1363 - [x] Test with a motd or default response?
1364 - [x] Figure out how to handle pasting text on iOS.
1365 - [x] Add a shortcut to paste on mobile.
1366 - [x] Design the text + url that gets copied and sent.
1367 - [x] Add a "copied" hook to the `prompt-system`.
1368 - [x] Fix clipboard for iOS.
1369 - [no] add flag so that copy is only on some of the buttons
1370 - [x] print current text to console when copy button is pressed
1371 - [x] copy text to user's clipboard on every platform
1372 - [x] once copied, button reads 'copied' and is visibly deactivated for 3 seconds
1373 - [x] add the copy button to copy text
1374 - [x] Fix the empty params error.
1375 - [x] line break while editing
1376 - [x] make the decode bot
1377 - [x] colors for decode bot
1378 - [x] reset the interface so when text changes you have to hit reply again
1379 - [x] color changing
1380 - [x] when you press enter with mouse both times, it doesn't bring you to new entry blinking cursor
1381 - [x] bug: going to encode from prompt freezes the screen but works upon pressing enter
1382 - [x] decide on command names
1383 - [x] make the encode bot
1384 - [x] add gpt3-tokenizer library
1385
1386*** VS Code Extension ***
1387 + Done
1388 - [x] Finish and publish the first version.
1389 - [x] Add `monolith` backup service.
1390
1391*** Drag + Drop Coding ***
1392 + Done
1393 - [x] Open and edit this file to get live updates whenever the window
1394 regains focus. (Or automatically, via an export flag.)
1395 📗 Research:
1396 - This is not possible unless I publish an Electron app.
1397 - Or I could map it to the existing VSCode plugin.
1398 - [x] Look at this code again.
1399 - Or I could try to embed VSCode or another similar editor somehow.
1400 - [x] Drag and drop a `*.mjs` file onto aesthetic.computer to
1401 replace or add a piece with your version.
1402 - [x] Type `code piece-name` to get a template
1403 piece downloaded, or get the current version of an existing piece.
1404
1405 // Flow... (How to expose this to users?)
1406 // 1. A Template file will be downloaded.
1407 // 2. You can drag it into `aesthetic.computer` to route the
1408 // piece name to your file.
1409 // 3. Edit the code in your file and `aesthetic.computer` will update with
1410 // the changes automatically.
1411 // 4. Upload your command to your account using the `upload piece-name`
1412 // command.
1413 // 5. This makes it easy to test on any device by typing
1414 // `@handle/piece-name` into `aesthetic.computer` on any device.
1415 // 6. Publish your command to the world by submitting it with the
1416 // `submit piece-name` command.
1417
1418*** sfx ***
1419 + Done
1420 - [x] Test this sound playback on Firefox.
1421 - [x] Add startup sound to first enter button press.
1422 - [x] And add keyboard sounds to prompt system.
1423 - [x] Make sure `sfx` clears any remotely loaded sounds?
1424 - [x] Just whitelist sounds for now.
1425 - [x] Fix and test `sfx` in Safari.
1426 (Was production related?)
1427
1428*** Camera ***
1429 - [x] Simply get the camera working again, with a chooser.
1430
1431*** Corner Word ***
1432 - [x] Tapping the word in the corner should bring up the keyboard by default.
1433
1434*** Login + Sign-up Buttons ***
1435 + Done
1436 - [x] Get /@handle working. (Jeffrey)
1437 - [x] Tapping the text at the top of the prompt should activate it.
1438 - [x] CTRL & + should not make sign-up buttons go away.
1439 - [x] Show user handle on profile page if it exists.
1440 - [x] If the user is logged in, then add a `profile` button.
1441 - [x] New homepage with login / sign-up buttons.
1442 - [x] Add buttons to login / sign-up if the user is logged out.
1443
1444*** Text Editing ***
1445 - [x] Pasting text at the beginning of a \n is broken.
1446
1447*** `Prompt Editing` ***
1448 - [x️] Scrubbable cursor.
1449
1450*** `paint` / `ask` ***
1451 - [x] Why did `ask` stop working on local? Is it a `vercel dev` issue?
1452 - [x] Put behind reverse proxy.
1453 - [x] What other options are there, should I run a node service again?
1454
1455*** Ordinals Collection ***
1456 + Now
1457 - 📓 This collection should be fully analog.
1458 I should keep a list of sats somewhere in a notebook,
1459 then sign drawings and upload them.
1460 + Done
1461 - [x] Inscribe a test ordinal.
1462
1463*** (w)ordfish ***
1464+ Cancelled
1465- [] Create the last 50 ordfish once fees go down.
1466 - [] Use `paste` to bring in old ones.
1467- [] Re-automate the process, including upload to spaces... Perhaps
1468 putting it in the a.c api with some edge functions.
1469+ Done
1470- [x] Sign an `ordfish` for Casey.
1471- [x] Make an `ordfish` slideshow page and route the codes to
1472 `ordfish~CODE` for url sharing with a button link to ordinals.com.
1473- [x] Get collection page online.
1474- [x] Make bw drawings and inscribe them.
1475- [x] get `word` working again
1476- [x] make it so exporting of resized paintings works
1477
1478
1479*** `paint` ***
1480 - [x] Paint anything by routing prompt to a model. (OpenAI)
1481
1482(Regressions)
1483- [x] Firefox: Fix blank screen on boot.
1484- [x] Painting doesn't fully reset when resizing.
1485- [x] Just using `box(x, y w, h, "*center")` does not work.
1486- [x] `n` and `p` keyboard shortcut do not ignore history / break navigation
1487- [x] Fix Freaky Flowers opensea regression.
1488- [x] Chained paint functions do not respect inkrn.
1489- [x] Check `wg` and `ff` and other disks including the prompt in the Instagram in-app browser!
1490
1491* 23.04.29.23.42 and ^
1492
1493*** Ranged Parameter Support ***
1494 - [x] Generalize ranged parameters.
1495 - [x] Extract the current implementation from `oval` into a general
1496 params parser that detects type and returns a filtered list.
1497
1498* 23.02.10.14.42 and Earlier
1499
1500*** `rect` ***
1501 - [x] Add thickness to the rectangle outlines.
1502 - [x] Write the ideal "rect" brush code.
1503 - [x] Analyze how dragBox + drawing commands are working, reduce even more.
1504 - [x] Add "center" rectangles.
1505 - [x] Add unfilled rectangles.
1506 - [x] Re-read brush code, squashing down the api bit by bit.
1507 - [x] Starting a pan while mid stroke
1508 cancels the stroke but still stamps
1509 a rectangle when the pan ends and the mouse lifts.
1510 - [x] Abstract "needsBake" into nopaint.
1511 - [x] I need an abstraction to know whether we are making a brush
1512 stroke or not, in order to manage panning and drawing logic
1513 across platforms.
1514
1515*** N and P Shortcut ***
1516 - [x] Shouldn't these shortcuts just return the user back to the prompt?
1517
1518*** User Uploaded Paintings ***
1519 - [x] Test download links on desktop and mobile: https://localhost:8888/download:painting~me@jas.life/painting-2023.3.12.13.02.14
1520 - [x] Modify `download` to accept a painting and offer special link.
1521 - [x] After `ul` send a message back to the user of what the code was
1522 or how to access their material... maybe via the `download` piece?
1523 - [x] Also add a `ul` progress bar.
1524
1525*** Peter Hand: HOOK Screening ***
1526 - [x] Make a phand hook screening page / menu page with the bleep option, and
1527 some drawing tools with image upload?
1528 - [😫] Choose drawing tools.
1529 - [?] Upload
1530 - [x] Basic page: `phand`.
1531 - [x] Bleep link
1532 - [] You can always view your last uploaded painting by visiting
1533 aesthetic.computer/email
1534 + Done
1535 - [x] Make a prescribed 4x1 Bleep that can be triggered by the audience
1536 and run by 4 players.
1537
1538*** Authorization Emails / Login *** (@rcrdlbl)
1539 (See `auth0` directory)
1540 - [x] Add a full screen background iframe for `https://aesthetic.computer/login-pattern` behind the html. @rcrdlbl
1541 + Done
1542 - [x] Add fuzzy backdrop (`login-pattern`).
1543 - [X] Login Screen
1544 - [x] Can we style auto-fill highlighting?
1545 - answer: no. see https://developer.mozilla.org/en-US/docs/Web/CSS/:autofill
1546 - [X] Remove bold from the button typography and the error messages.
1547 - [X] Text input and button typography must match.
1548 - [X] Match relative placement of form fields to the `prompt` text on
1549 the a.c homepage.
1550 - [X] Style the borders / padding of the text input fields to be less visible.
1551 - [X] Make sure the type lines up with the buttons.
1552 - [X] "I'm New" -> "New Account" and place the buttons vertically.
1553 (Use the `valbear` screen as a visual / aesthetic guide)
1554 - [x] Try a border on just the Log In button, or both buttons?
1555 - [X] Custom email templates...
1556 - [X] Replace `Welcome Email` and `Change Password` email templates with
1557 simple text options.
1558 auth0 Dashboard -> Branding -> Email Templates
1559 https://www.figma.com/file/2uw2Y2pAGMLFIi2XTpJy6w/login-page-notes?node-id=0%3A1&t=dmJ8wmL6IEd2CUwX-0
1560 - [x] Set up a mail service provider. @jeffrey
1561
1562*** Auth0 Integration ***
1563 + Done
1564 - [x] Custom painting filenames / listings or subdirectories for users.
1565 - [x] Offline failure red flash.
1566 - [x] Protect a server route.
1567 - [x] https://auth0.com/docs/quickstart/spa/vanillajs/02-calling-an-api
1568 - [x] Call the API
1569 - [🟡] Put user information into the `prompt` MOTD!
1570 - [x] SMS Support via Twilio.
1571 - [x] Signup on passwordless authentication via email only.
1572 - [x] https://auth0.com/docs/libraries/auth0js#webauth-crossoriginverification-
1573 - [x] Test in production and on local.
1574 - [x] Set up auth0 sign-up via https://manage.auth0.com.
1575 - [x] Add login and logout handlers.
1576
1577*** Molly Soda Moods ***
1578 - [x] Add support for camera brush.
1579 - [x] Rename sparkle -> icon
1580 - [x] Add glyphs to icon brush.
1581 - [x] Spin up icon brush prototype.
1582 "Activity"
1583 {
1584 - [x] Title Screen
1585 - [x] Camera
1586 - [x] Icon (preset palettes with preset graphics, similar to text changing words)
1587 - [x] Rename sparkle to icon.
1588 + Tonight
1589 - [x] "Sparkle" by Maya
1590 - [x] Jeffrey asks Maya about doing sparkle.
1591 + Later
1592
1593*** Pressure / Apple Pencil + Stylus Support ***
1594 - [x] Debug Apple Pencil on actual hardware.
1595
1596*** Wipe ***
1597 - [x] Make a `wipe` brush to clear the screen and encourage this over `no!`
1598 which clears the store in the local:db and eliminates the undo stack.
1599
1600*** Val ***
1601 - [x] A valentines day palette / workflow.
1602
1603*** Text Thickness **
1604 - [x] Add basic `thickness` to word.
1605
1606*** Oval Brush ***
1607 - [x] Filled circle
1608
1609*** HUD ***
1610 - [x] Tap hud word to go back or to prompt if history is null.
1611
1612*** System ***
1613 - [x] Don't reload off the network / cache if reloading.
1614
1615*** No Paint QOL Shotcuts ***
1616 - [x] 'n' Shortcut to paint and reload the same brush.
1617 - [x] 'p' Shortcut to reload the same brush without painting.
1618
1619*** Type ***
1620 - [x] Start up a `write` / `text` brush so I can print
1621 text at various scales.
1622
1623*** Shape ***
1624 - [x] Finish prototype of filled `shape` tool.
1625
1626*** Better Logging ***
1627 - [x] Create a logs.mjs file that can enable / disable certain development log flags when working, such as disabling all "store" logs.
1628
1629* (Outdated) Bugs / Improvements
1630 - Stop sending duplicate event data for "draw" and "touch" in `pen`.
1631 - e.is("draw") && e.is("touch") should not send duplicate event {x, y} data
1632 - Explore: removing: send({ type: "update", content: { didntRender: true, loading } });
1633 From the bottom of `disk.js`.
1634 - Add blockchain integration for identity: https://docs.moralis.io/introduction/readme
1635 - Re-work the depth buffer (in the rasterizer) before making a simple 3D environment?
1636 - Pass 'diskTime' global into the api.
1637 - Add $api.sound.beatCount counter to `beat`.
1638 - Add scriptProcessorNode fallback so audio can run within insecure contexts. (FigJam)
1639 - Stop tracks in all mediaStreams: https://stackoverflow.com/a/12436772
1640 (Video and Microphone)
1641 - Refactor (screen.width -> screen.w & screen.height -> screen.h) across the board?
1642 - To be more consistent with `graph.box`.
1643 - Workers can be wrapped in this... https://benohead.com/blog/2017/12/06/cross-domain-cross-browser-web-workers/
1644
1645*** 🎃 DIGITPAIN ***
1646 - [] Complete DIGITPAIN 0-5.
1647 - [] Mint the work and have the contract made.
1648 - [] Make a frame capture tool for generating webp images.
1649 - [] Add the work to the JSON and release digitpain.com.
1650 - [] Write a better static exporter script includes only the disks I want, plus resources.
1651 - [] Automate DIGITPAIN (Teia) exports:
1652 1. Clone `public` directory.
1653 2. Remove any `.html` files that aren't `digitpain-ipfs-index.html`.
1654 3. Process `digitpain-ipfs-index.html`, inserting info for a new mint.
1655 4. Rename `digitpain-ipfs-index.html` to `index.html`.
1656 3. Remove all files other than `/digitpain` and `digitpain0.js` from `disks/`.
1657 4. Zip the contents so there is a zip file with one directory called `public`,
1658 and rename it to `DIGITPAIN #.zip`.
1659
1660***Routing Longtail***
1661 - [x] Do away with hashtag routes entirely.
1662 - [x] Refactor ":" parameter encoding (see `wg`) into using classic url parameters.
1663 - [x] Or just use one of these special characters: `. _ ~ -`
1664
1665 aesthetic.computer/wg.fuzz
1666 aesthetic.computer/wg_fuzz
1667 aesthetic.computer/wg-fuzz
1668 aesthetic.computer/wg~fuzz
1669 aesthetic.computer/metronome~80~100
1670
1671 aesthetic.computer/~niki/plot~40~50
1672 aesthetic.computer/~niki/plot~40~50
1673
1674 // Maybe the special characters could be default parameters, or represent
1675 // types of some kind?
1676
1677 Available domains:
1678 - prompt.ac
1679 - wgr.ac (whistlegraph recorder)
1680 - wgl.ac (whistlegraph live)
1681 - jas.ac (my new homepage)
1682 - aesthetic.run
1683 - aesthetic.codes
1684 - aesthetic.cx
1685
1686*** (Outdated) 2D Whistlegraph Recorder *** (August 1st - Launch)
1687 - [] Only record frames that are not part of the interface.
1688 - [🟢] Make a DOM based button.
1689 - [] Attach events to it... figure out the smartest way to have it connect to `function act`?
1690 - [] Should I use a ShadowDOM for this or is it overkill...
1691 - https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM
1692 OR ...
1693 - [] Dump frames before painting the interface on top... via a pixel buffer
1694 being sent over the worker.
1695 (This might be slow)
1696 (Could be useful eventually... to selectively record video of certain pixel buffers, or render frame by frame.)
1697 - [] Record frames at a multiplied resolution over the original canvas.
1698 - [] Complete ***Upload Server***
1699 - [] Is there a way for a local install to still use codes? How would this be
1700 proxied and tested? Maybe with an environment variable and a separate
1701 upload server that has no expiration?
1702 - [] Store the video on a camera roll in a mobile browser.
1703 - [] Explore using the TikTok API Integration : https://developers.tiktok.com/apps
1704 - This should allow users to save / post? their video directly to TikTok from the web.
1705 - [] Two finger twist and zoom while recording... use vector data.
1706 - [X] Make sure that the audio and video are synchronized across devices.
1707 (Video seems delayed on iOS right now.)
1708 - [X] Record and playback the user's voice in `microphone`.
1709 - [X] Record the content of `microphone` as a video.
1710 - [Commented Out] Add an "audio engine off" system overlay / call to action
1711 that uses the DOM?
1712 - [X] It should be removed... each program should handle this on its own...
1713 - [X] Throw up the html if the audio engine is off and the beat function
1714 has not been exported.
1715 - [X] Add all the new Typefaces to CSS. (Berkeley Mono Variable, and Proce55ing)
1716
1717*** AV ***
1718 - [x] Make sure that video encoding works on all platforms.
1719 - [x] Try implementing custom ffmpeg-core files
1720 : https://github.com/ffmpegwasm/ffmpeg.wasm/issues/299
1721 - [x] Add a "done" or "close" button to the recording UI / share sheet which
1722 re-activates the UI.
1723 - [x] Add a special UI for uploading the file / receiving a code...
1724 so it's a choice?
1725 - [x] Make the recording process re-entrant. (Don't reload ffmpeg each time?)
1726 - [x] Add a progress bar / interstitial that runs while the file is encoding,
1727 preventing the user from being able to act.
1728 - [x] Test the interaction.
1729 - [x] Gray out the screen.
1730 - [x] Make microphone recording button a bit nicer.
1731 - [x] Add ffmpeg.wasm
1732 - [x] Fix microphone record button.
1733 - [x] Try to just upload the file directly here.
1734 - [x] Write a netlify serverless function and call it from the microphone
1735 piece... so the file can be uploaded.
1736 - [x] Netlify Serverless Hello World
1737 - https://www.netlify.com/blog/2021/07/29/how-to-process-multipart-form-data-with-a-netlify-function/
1738
1739*** Image Support ***
1740 *** Save ***
1741 - [x] Make it so that desktop uses the current "save-file" event route,
1742 but mobile pops open a UI...
1743 - Should this UI be shared on all platforms?
1744 Try web components here: https://developer.mozilla.org/en-US/docs/Web/Web_Components
1745 - What does it mean to "save" an image?
1746 - [x] Add API for system-wide saving of webp or png images (through nopaint).
1747 - [x] Test image saving on different platforms.
1748 - [x] Prototype image save function.
1749 *** Load ***
1750 - [x] From a URL into a buffer.
1751 - [x] and then be able to paste it.
1752
1753***Live Reloading***
1754 (Outdated)
1755 - [] Fix live reloading for everyone / add some people to dev server.
1756 - [] Disable nginx cache? https://ubiq.co/tech-blog/disable-nginx-cache
1757
1758*** Harrison Idea ***
1759 - [x] NO command.
1760 - [x] no! painting reset
1761
1762*** Misc ***
1763- [x] Prototype screen-based whistlegraph recorder tool.
1764 - [x] Add it to the API and make a `wgr` disk.
1765 - [x] Set up doodads like file hosting.
1766 - [x] Write micropage for the whistlegraph album. (m2w2)
1767 - [x] Fix image download function.
1768 - [x] Get developer live reload working again.
1769 - [x] Deploy and test everything to see if it works.
1770 - [x] Add a post request edge function called "reload".
1771 - [x] Wire up plot for Amalia.
1772 - [x] Queue any sent socket messages to be sent once the socket
1773 backend connects.
1774 - [x] Turn 'sb' -> 'play'... a *tiny* recordable chat program in X turns.
1775 - [x] Retrofit `prompt` with the new abstraction in `type.mjs`
1776 - [x] Clear any prompt specifics in bios.
1777 - [x] Fix major segfault regression.
1778 - [x] Abstract the text entry logic out of 'prompt'.
1779 - [x] 🔐 Setup user system! (Ethereum)
1780 - [x] Add user feedback for web3 connect.
1781 - [x] Basic web3 integration.
1782 - [x] Research auth methods.
1783 - [x] BGM Protoype
1784 - [x] Spin up session-server in sb.
1785 - [x] Add a database / hosted DB.
1786 - [x] Digital Ocean
1787 - [x] Redis
1788 - [x] Prototype BGM
1789 - [x] Spin up session-server in sb.
1790 - [x] Add a database / hosted DB.
1791 - [x] Digital Ocean
1792 - [x] Redis
1793
1794*** Freaky Flowers Launch ***
1795 + Done
1796 - [x] Fix OpenSea mobile iframe crop.
1797 (Send OpenSea a Tweet: https://twitter.com/digitpain/status/1624129497980104704)
1798 - OpenSea Test URL: https://testnets.opensea.io/assets/goerli/0x4FEa5E2a8C3bfc742B43b48FC4F2eA9913452B99/0
1799 - Wild Test URL; https://testing--wildxyz-market-4231.netlify.app/jeffrey-scudder/freaky-flowers/0/
1800 - [x] Overall aspect ratio fix.
1801 - [x] Redraw full progress bar on resize!
1802 - [x] Write `ff` documentation on Discord.
1803 - [x] Better optimization for mobile vertical view.
1804 - [x] Custom label offset for `ff`.
1805 - [x] Add a color param to `label` and feed wand color in with a lerp.
1806 - [x] Make progress bar on top above label.
1807 - [x] Be in spin mode until a key is pressed.
1808 - [x] Fix ` keyboard prompt typing bug.
1809 - [x] Move sculpture back a tad.
1810 - [x] Eliminate gap borders while embedded / sandboxed? (Fix OpenSea black bars.)
1811 - [x] Fix preview segment rendering when size changes.
1812 - [x] Add a button in VR (and keyboard shortcut) to reset the timelapse
1813 without refreshing.
1814 - [x] VR timelapse should default to 1x.
1815 - [x] Colored stripey progress.
1816 - [x] Wand should be hidden when a player is running.
1817 - [x] All controller buttons should be disabled when a player is running.
1818 - [x] Make wand render again / get WebVR working.
1819 - [x] Kill any errors.
1820 - [x] Zoom out a proper distance based on aspect ratio.
1821 - [x] WebGL Layer and software Layer are off by 1 or a fraction of a pixel on iPhone. (Bottom)
1822 - [x] Fix double reconstructing loading bar code.
1823 - [x] Draw the full wand preview and include size changes!
1824 - [x] Add new Discord update script.
1825 - See also: https://github.com/fieu/discord.sh
1826 - [x] Don't advance a playing demo if tabbed out.
1827 - [x] Make "preview" mesh rotate correctly (90deg on one axis?)
1828 - [x] Use `ff 2 1` as a test case.
1829 - [x] Don't cull the preview wand.
1830 - [x] Loading `instant` style should be chunked to avoid crashes
1831 on lower end hardware and also to enable "..." animation on "Reconstructing...".
1832 - [x] Show progress bar for Reconstructing.
1833 - [x] Clean out "dead" code.
1834 - [x] Prevent keyboard shortcuts and other act events from running before
1835 fully loading / while loading / reconstructing.
1836 - [x] Show capForm "preview" in demo mode.
1837 - [x] Wand should be "thicker".
1838 - [x] Get loading working much nicer both in playback mode and
1839 in "instant" mode with a visual progress indicator of some kind.
1840 - [x] Fetch progress bar.
1841 - [x] Don't show progress bar if things have already downloaded...
1842 - [x] Put yellow spinner on special little delay.
1843 - [x] Make intial boot fuzz a much lower resolution.
1844 - [x] What isn't being auto-rotated?
1845 - [x] Capform
1846 - [x] Start spinning, at a high rate, (about 30seconds max timelapse)
1847 - [x] Add ability to hide / customize hud text.
1848 - [x] Make sure iframe mockup works for `ff`: https://localhost:8888/sandboxed-iframe-mockup.html
1849 - All Pieces
1850 - [x] Every piece by default (unless it opts out) will show its name
1851 and parameters in the top left corner.
1852 - [x] Write readouts to separate "secret" buffer (see `HUD` in disk)
1853 - [x] Add "signature" / title flag feature to `dl` command.
1854 - `sign`
1855 - [x] Paste a signature with timestamp in the corner.
1856 that is NOT opaque and in the bottom left corner.
1857 - [x] Review spreadsheet metadata: https://docs.google.com/spreadsheets/d/10aeN4WyTQ1UQUT9-IUbKFdoeEfkumqM6_8mvFs5dVq8/edit#gid=1052521247
1858
1859*** Painting w/ Signature for Yeche Lange***
1860 + Done
1861 - [x] Make two or three works for Yeche.
1862 - `line`
1863 - [x] Add line thickness...
1864 - [x] Make pppline if thickness is 1
1865 - [x] Fix color inconsistencies among screen and painting.
1866 - [x] Add ? ? ? options with ? expansion?
1867 - `no`
1868 - [x] Undo / redo a step.
1869 - [x] with multistep options
1870
1871*** Tracker ***
1872 - [x] Fix buttons.
1873
1874*** Keyboard Input ***
1875 - [x] Debug keyboard input on every device again.
1876 - [x] Android
1877 - [x] Meta (Seems good.) 22.11.03.23.34
1878 + Done
1879 - [x] Fix duplicate "Enter" event bug on desktop.
1880
1881*** Friendlier Developer Logs ***
1882 - [x] Optimize the console.log output in production to be
1883 more terse, and make common sense.
1884
1885***Android Day***
1886 - [x] Fix keyboard controls not working (this should also fix Meta Quest 2).
1887 + Done
1888 - [x] Provision Android phone.
1889
1890*** Hex Support ***
1891 - [x] Add hex support to color inputs.
1892
1893*** Bonus ***
1894 - [x] Change `ap` -> `test`. (Rapter)
1895 - [x] Detect dark mode and modify the prompt accordingly.
1896
1897*** 3D Renderering ***
1898 + Done
1899 - [x] Only load threejs if necessary.
1900 - [x] Fix thread boundary conditions related to hot reloading.
1901 - [x] Broken on load.
1902 - [x] Fix `sim` being busted on quick reload.
1903 - [x] Fix cursor transparency in 3dline.
1904 (Make blend function take into account existing alpha.)
1905 - [x] See if this is faster than the software renderer as-is?
1906 - [x] Make sure picture ratios match up perfectly.
1907 - [x] Get lines working.
1908 - [x] Switch the / convert software rasterizer from left handed to right handed
1909 rendering.
1910 What worked on the software renderer side:
1911 - Flip X and Z position of each vertex before transform.
1912 - Flip X and Z rotation of each vertex before transform.
1913 - Flip Y rotation of the camera before transform.
1914 - Rotation matrix multiply order for camera: YXZ.
1915 - Rotation matrix multiply order for vertices: XYZ.
1916 + Future + Eventually I could look into using the exact same matrix data across both?
1917 - [x] Get textures in there.
1918 - [x] Enable all objects.
1919 - [x] Optimize pixel array sending. (Had to make an extra layer)
1920 - [x] Disable backface culling.
1921 - [x] Make it so that "form" calls that take an array, render in 3js and return the pixels back.
1922 - [x] A single "form" call should be able to send over multiple objects.
1923
1924 *** Resize (gap-density) ***
1925 - [x] Add "scale" to "paste"
1926 - [x] Cursor is janky when paint returns -> false.
1927
1928*** Prompt ***
1929- [x] Use localStorage for command history.
1930 - [x] Set up general localStorage system / API.
1931 - [x] Maybe it could be built off of store?
1932
1933*** Pieces: Prompt ***
1934 - [x] No more tildes for user paths...
1935 Instead, use an '@' for usernames.
1936 eg. sage/piece
1937 - [x] Prompt
1938 - [x] Index
1939 - [x] Up arrow for previous command.
1940 - [x] Update MOTD.
1941
1942*** Safari Day ***
1943- [-] Thin lines appearing from `gap` and no gap in mobile Safari.
1944- [x] Grey selection bubble appears in mobile Safari.
1945- [x] Loading spinner not appearing in mobile Safari.
1946- [x] Fix iOS Safari page refresh bug. (Test on MacBook Pro)
1947 (Needed `Vary: *` http header, to prevent Safari's cache from bugging out
1948 on the SharedArrayBuffer / isolatedOrigin CORS headers.)
1949
1950***Tracker, Pull***
1951- [x] Fix interface boxes.
1952- [x] Make `boxes` test piece.
1953
1954***Meta***
1955- [x] Add support for custom / locally generated thumbnail overrides.
1956 - [x] Test override for some specific route... maybe blank?
1957- [x] Serve a 404 page for anything else that breaks.
1958 - [x] Right now it just crashes here: https://aesthetic.computer/okok
1959 - [x] Right now it just is black here: https://aesthetic.computer/~niki/whatever
1960- [x] Do the TOML routes actually matter? No.
1961- [x] Get ~/niki/blank working again.
1962- [x] Separate out / parse the text before loading a disk serverside so that
1963 parameterized disks work again.
1964- [x] Make them work on iOS
1965- [x] Write a new netlify function that returns the proper html for every page,
1966 so that prerendering can be turned off (get imessage previews working).
1967- [x] Should og:image and twitter:image have file extensions?
1968
1969***L8 Night***
1970- [x] Get a debugger working.
1971
1972***2D Drawing Primitives for Niki***
1973 - [x] line from point... at angle with distance
1974
1975***Routing & Twitter Cards***
1976 - [X] Figure out how to get open-graph info and twitter cards working for all of a.c?
1977 - [X] How should the og:images be made? Perhaps a special tool is needed or screenshots
1978 can be taken automatically?
1979 - [x] Set defaults if the info isn't there...
1980- [x] Test Netlify pre-rendering to see if it functions.
1981- [x] Use netlify's pre-rendering and (it's already turned on... and change the og:title)
1982- [X] Enable Netlify pre-rendering.
1983 - Validator: https://cards-dev.twitter.com/validator
1984 - Prototype: https://glitch.com/edit/#!/pepper-efficacious-yellowhorn?path=index.html
1985 - [X] Implement path based routing for pieces via netlify and on a local dev server.
1986
1987***User Pieces (niki.aesthetic.computer)***
1988- [x] History breaks right now across domains, because some parsing goes through the `prompt`.
1989 - [x] Make sure loading using the `tilde` key works across hosts.
1990 - [x] Start remote routing from boot instead of only in prompt?
1991 - [x] Make a `parse.js` library file that can be used in `prompt`, then `boot`.
1992 - [x] Copy the code from prompt and replicate it in boot, then
1993 - [x] follow the logic through to check for inconsistencies.
1994 - [x] Remove `search` from `disk.js` load. (Deprecrate reading queryParams
1995 at the disk level... they should only be reserved for system settings?)
1996- [x] Also, the page can't refresh and the path gets rewritten improperly.
1997- [x] Get `niki.aesthetic.computer` running.
1998- [x] Get a prototype of Niki's piece working that she can actually edit as the first user.
1999
2000***Server Re-organization***
2001 - [x] Should the uploader be a serverless function? Yes!
2002 (This would prevent the need for a load balancer if file uploading was a bottleneck.)
2003 (Would it run locally?)
2004 - [x] Set netlify environment variables for the digital ocean space.
2005 - [x] How to run two server processes from one npm command?
2006 - [x] Should the websocket server run as a separate process from the http api?
2007 - [x] Should it run on a separate machine as of now?
2008
2009***Editor***
2010- [-] Get socket server running under GitHub codespaces as well.
2011 (wss:// is currently unsupported)
2012- [x] Get the project working in GitHub codespaces.
2013
2014🐛 Completed Bugs & Regressions
2015- [X] Check to see why custom thumbnails are broken for remote URL disks.
2016- [X] `wg` disks no longer work
2017- [X] Kill any microphone (or video) connection after leaving a piece it's connected to.
2018- [X] Routing: Check ~tilde~ key - don't push duplicate states in the history.