Commit Graph

3337 Commits

Author SHA1 Message Date
Jordan Eldredge
4292c6dd6e Add back keys to get Jest tests passing 2022-09-17 16:27:50 -07:00
Jordan Eldredge
6ae586ae08 Prettier 2022-09-17 16:26:08 -07:00
Jordan Eldredge
bedc983d2a Small cleanup of WinampButton
Missing hook dependency, and use default destructuring instead of defaultProps
2022-09-17 16:21:17 -07:00
Jordan Eldredge
73c3e3a63e Apply prettier formatting 2022-09-17 16:18:29 -07:00
Chris Carey
9ec61d5f9d
Allow a single mouse drag across the EQ to set all values (#1180)
* Allow a single mouse drag across the EQ to set all values

* Only allow mouse drag across the EQ if the pointerdown originated in the EQ area

* Drag across the EQ, PR feedback

* Cleaner way of setting clickOriginatedInEq

* Default clickOriginatedInEq to true

* Another variation of setting clickOriginatedInEq that fixes the issue if the click originates outside the EQ area.
2022-09-17 16:15:31 -07:00
Jordan Eldredge
66a0372c72 Change when we prune bad md5 2022-07-06 00:07:31 -04:00
Jordan Eldredge
60bf595105 Trim IA identifiers 2022-07-06 00:07:31 -04:00
Jordan Eldredge
e26201593f Add todo about deleting from IA 2022-07-06 00:07:31 -04:00
Jordan Eldredge
82a83d356c Comment out keys 2022-07-06 00:07:31 -04:00
Jordan Eldredge
77683d9328 Update tests to reflect to museum query 2022-07-05 21:03:01 -07:00
Jordan Eldredge
dc1023e0df Prettier 2022-07-05 20:52:30 -07:00
Jordan Eldredge
69ad8f149e Format 2022-07-05 20:43:06 -07:00
Jordan Eldredge
269f9931a3 Ensure we await skin readme in metadata endpoint 2022-07-05 19:35:54 -07:00
Jordan Eldredge
759520b3fa Command to update content hashes 2022-06-19 21:02:39 -07:00
Jordan Eldredge
c939022b92 Refactor museum query 2022-06-19 16:20:57 -07:00
Jordan Eldredge
5a3b21a460 Complete DB documentation 2022-06-14 22:40:37 -07:00
Jordan Eldredge
622ce141c2 Document database 2022-06-14 22:38:46 -07:00
Jordan Eldredge
3ab1ca0ec3 Upgrade eslint 2022-05-07 12:35:48 -07:00
Jordan Eldredge
b70d258277 Clean up dependencies 2022-05-07 12:35:48 -07:00
Jordan Eldredge
8fe3ec82d6 Upgrade snowpack 2022-05-07 12:35:48 -07:00
Fathony Luthfillah
7451c6fe64
TrueTypeFont, Simple PlaylistEditor, scrollbars. (#1169)
* allow direct rgb as css color property

* + <wasabi:standardframe:modal:short>

* set Config, WinampConfig as global var

* normalize handleAction: del hardcoded trick

* mute console (noice reduction)

* allow internal themes in the theme list

* add (temporary) appearance to WasabiButton

* check points and add possible todo.

* yarn build, yarn serve

* Variable.guid is now optional

* + PLEdit (non gui) to hold mp3 tracks

* move eject,next,prev & <input> files to UIRoot

* trial update song-title on next/prev. (failed)

* track index correction, prettier

* show pl (GUI)

* avoid error on console log: audio interupted.

* del requirement of UI_ROOT, reg Object class.
ui_root will not be singleton in future.

* stop searching of a binding when founded.

* should never select any text.

* explicit return of a function

* avoid vscode problem (red warn on file name)

* PlayList primitive colors (bg,fg)

* plEdit: selected & currrent colors.

* +button.css, move any css of button.

* assure transparancy instead opaque

* safety when bitmap=null

* del dead code

* del dead code

* correction: studio.button instead wasabi.button

* prettier

* show scrollbar in pl (dummy)

* solve vscode/ts complain

* +common scrollbar

* always show scrollbar (full height) whatsoever.

* reposition that match. (taken from x2nie-dev)

* completing scrollbar dimensions.

* +text.shadow

* animatedlayer.onstop

* text.onchanged

* bugfix error: text-auto-wrapped.

* +some xui (drone skin)

* allow Time shown as Remaining (instead ellapsed)

* bugfix time remaining overalaped with kbps.

* comments of container types (prediction)

* bring window to most top on click.

* temporary case. (skin: drone)

* Complete Slider implementation about virtual thumb

* avoid red warning on filename of vscode.

* +dirty audio.analyzer (skin:MMD3)

* allow "vis" element to be position:absolute.

* trying skin:Warp_skin.wal (failed)

* avoid red warning on filename of vscode.

* +todo

* +api:setactivatednocallback

* pl: +slider,real. (instead of fake scroll element)

* PL slider moved when mouse wheel. (pasive)

* complete pl scroll.

* avoid red warning on filename of vscode.

* set ColorList bg

* cleanup, completing MMD3

* add Grip (pl scrollbar), cleanup.

* change where the build dir is.

Co-authored-by: Fathony <fathony@smart-leaders.net>
2022-05-07 12:11:37 -07:00
dependabot[bot]
73fd41f273
Bump async from 2.6.2 to 2.6.4 in /packages/skin-database (#1172)
Bumps [async](https://github.com/caolan/async) from 2.6.2 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.2...v2.6.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 08:42:50 -07:00
dependabot[bot]
6e6f4e26c9
Bump hosted-git-info from 2.7.1 to 2.8.9 in /packages/skin-database (#1092)
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.7.1 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.7.1...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 00:18:25 -07:00
dependabot[bot]
58d1eb5506
Bump node-fetch from 2.6.0 to 2.6.7 (#1146)
Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.0 to 2.6.7.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.0...v2.6.7)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 00:17:49 -07:00
dependabot[bot]
99eea9c52f
Bump color-string from 1.5.3 to 1.5.5 (#1110)
Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.3 to 1.5.5.
- [Release notes](https://github.com/Qix-/color-string/releases)
- [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Qix-/color-string/commits/1.5.5)

---
updated-dependencies:
- dependency-name: color-string
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 00:17:36 -07:00
dependabot[bot]
c938d50135
Bump path-parse from 1.0.6 to 1.0.7 (#1121)
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 00:17:29 -07:00
dependabot[bot]
9792d7c167
Bump color-string from 1.5.3 to 1.5.5 in /packages/skin-database (#1109)
Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.3 to 1.5.5.
- [Release notes](https://github.com/Qix-/color-string/releases)
- [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Qix-/color-string/commits/1.5.5)

---
updated-dependencies:
- dependency-name: color-string
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 00:17:21 -07:00
dependabot[bot]
cf937b30a7
Bump aws-sdk from 2.663.0 to 2.814.0 in /packages/skin-database (#1133)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.663.0 to 2.814.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.663.0...v2.814.0)

---
updated-dependencies:
- dependency-name: aws-sdk
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 00:17:12 -07:00
dependabot[bot]
2b12eb8844
Bump path-parse from 1.0.6 to 1.0.7 in /packages/skin-database (#1122)
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 00:17:05 -07:00
dependabot[bot]
0ec42ead55
Bump jszip from 3.6.0 to 3.7.0 (#1129)
Bumps [jszip](https://github.com/Stuk/jszip) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/Stuk/jszip/releases)
- [Changelog](https://github.com/Stuk/jszip/blob/master/CHANGES.md)
- [Commits](https://github.com/Stuk/jszip/compare/v3.6.0...v3.7.0)

---
updated-dependencies:
- dependency-name: jszip
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 00:16:57 -07:00
dependabot[bot]
4738d53877
Bump tmpl from 1.0.4 to 1.0.5 (#1125)
Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/daaku/nodejs-tmpl/releases)
- [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5)

---
updated-dependencies:
- dependency-name: tmpl
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 00:16:26 -07:00
dependabot[bot]
39d508e00e
Bump aws-sdk from 2.683.0 to 2.814.0 (#1134)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.683.0 to 2.814.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.683.0...v2.814.0)

---
updated-dependencies:
- dependency-name: aws-sdk
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 00:16:18 -07:00
dependabot[bot]
b54cefcb4f
Bump nanoid from 3.1.23 to 3.3.2 (#1168)
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.23 to 3.3.2.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.23...3.3.2)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 00:15:14 -07:00
dependabot[bot]
aa41e94b4f
Bump minimist from 0.0.8 to 1.2.6 in /packages/skin-database (#1167)
Bumps [minimist](https://github.com/substack/minimist) from 0.0.8 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/0.0.8...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 00:15:05 -07:00
Jordan Eldredge
6381806bfd Fix lint 2022-04-02 00:12:17 -07:00
Fathony Luthfillah
10555e093f
Set the 2nd modern iteration as only one on (modern) track. (#1166)
* yarn extract-object-types (run again)

* preparing to load Application.mi

* avoid error about using function ins strict mode.
turn this to "function" syntax to see the error/warn

* embed TrueTypeFont in one CSS

* add api: getAttribute

* reaching zero erro at devtool Console

* set color correctly.

* move compiler to new project

* take some yarn-scripts from sibling (modern-1)

* reconfigure objectData target path

* remove duplicated folder

* discontinuing the 1st iteration
captbaritone: it's probably time to del modern & ren modern-2: modern

* set the 2nd iteration as only one on track.
captbaritone: it's probably time to del modern & ren modern-2: modern

* bugfix test not working: path unavailable

* implement TODO

* reduce warning at import jzip

* solving Deploy: failed

* solving deploy failed
error: Unknown workspace "webamp-modern

* bugfix premateur call of this._font_id

* bugfix font-family : ''; prettier.

Co-authored-by: Fathony <fathony@smart-leaders.net>
2022-03-30 19:35:19 -07:00
Fathony Luthfillah
69122b7c89
Revert back to /progress.html working (#1164) 2022-03-25 20:10:02 -07:00
Jordan Eldredge
c5215a79ca
Show list of 1000 modern skins to choose from (#1163) 2022-03-24 23:35:04 -07:00
Jordan Eldredge
904ae264ac Add some new cases to fix lint 2022-03-24 22:09:37 -07:00
Fathony Luthfillah
b0e24fb8a3
Use WinampModern (skin name) (#1162)
* Toggle container (action)
it works but the container is currently empty.

* Wasabi:Frame:Xxx : parse,load,init
this patch has no error, but not visible due relatW/relatH not available

* movable,resizable
Tested with MMD3 only

* allow unregister eventListener, etc. minor.

* make the group movable

* trial to move MMD3 main window

* Prettier.

* speedup devtool: simplify tag,style

* bugfix clip-path.
Issue: the bigColorTheme didn't rendered properly

* del "../winamp modern" (specific skin only)

* prettier

* +comment, prettier

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* warn for premateur bitmap that has no id.

* del dead code

* bugfix invalid css caused by empty array

* del premateur logic (no use case with MMD3)

* add comment: clarify that getToken is 0 based.

* +WinampConfig files

* don't stop on bitmap not found

* +skin as usecase

* showing main-window, for the first time

* del dead code

* showing less complainging errrors

* avoid shutdown while the skin.wal is updated.

* direct show obj (instead of stringify)

* incoming Audio: play/stop/pause

* + big elements, -big parser mod

* parsing in simple and safe way

* BitmapFont & Text

* okay. just an error (not initilaized) avoided.

* +doResize

* +implementation: autoWidthSource

* show long song title

* +api:sendparams

* bugfix interpreter: brutal boolean

* Seeker: song & volume

* load modern skin without thrown any error

* MuteBtn works

* bugfix transparency of seekerghost

* bugfix orphan sys to run (MMD3, etc)

* auto reapply regions after resizing

* bugfix titlebar.right.width==0

* MainWindow movable!

* color! it is now also gamma-aware

* colortheme: doubleclickable,bold,header-column

* allow handleAction:actionTarget, clTheme:next,prev

* close my Container!

* bugifx titlebar.getText()

* bugfix volume (knob) click.

* bugfix volume (knob) click on moved Container

* bugfix layer: cropped by transparent

* del dead code

* bugfix volum know conflict with layer crop

* bugfix font-size

* bugfix slider moves container

* bugfix 2pixel higher than expected.

* speedup resize + avoid flickering

* Equalizer: showInfo()

* integrate all eqSliders in single mouseMove

* reducing lock: anti-freeze mouseMove

* less error/warn. prettier.

* enableGammaSet accept string | null

* public function that exposes font._externalBitmap

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* prettier

* + a note for temporary hack.

* revert a dirty hack

* del overkill logic

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

* improve readability

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* improve readability

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* nothing

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* nothing

Actually I hate implicit parameter, it may drive to wrong logic. But since it just local function, it is acceptable, even still I hate that way.

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

* turn to arrow function

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* bugfix ticker="scroll" | "bounce" | "off"

* Promise.all([].map(async)) !

* Promise.all([].map(async)) !

* remove double__underscore

* set AUDIO_* to string constant

* cleanup comments

* del dead code

* bugfix config-tabs, cleanup, prettier

* expose _id and _file via public method

* introducing new eventListener. works well.

* mute console

* bugfix mouse-move behavior

* remove old custom Emitter

* add note of why returning a function

* allow BOOLs to do logical AND.
without this, the play button click will throw error

* loading componentBucket entries

* add a wrapper for bucket children

* componentBucket: scrollable

* finalize the componentBucket

* +groupxfade. allow do skinParse(xmlnode) runtime.

* animate XFade content

* Show XFade sub-page

* del dead code

Co-authored-by: Fathony <fathony@smart-leaders.net>
Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>
2022-03-24 21:45:30 -07:00
Jordan Eldredge
6c325e9ec5 Use correct name for command 2022-03-25 00:08:53 -04:00
Jordan Eldredge
b03c60b836 Pin versions 2022-03-24 21:07:50 -07:00
Jordan Eldredge
612c7eea9a Remove log 2022-03-24 21:07:50 -07:00
Jordan Eldredge
00177224de Add modern skins to the graphql schema 2022-03-24 21:07:50 -07:00
Jordan Eldredge
169bd3b55f Fix lint errors 2022-03-24 21:07:50 -07:00
Jordan Eldredge
7c92bb3d7d Upgrade eslint 2022-03-24 21:07:50 -07:00
Jordan Eldredge
72bd7a2a53 Sart to expose modern skins via graphql 2022-03-24 21:07:50 -07:00
Jordan Eldredge
8c222d39c7 Better message on server start 2022-03-24 21:07:50 -07:00
Jordan Eldredge
69da26fb7c Throw an error if a skin is classic AND modern 2022-03-24 21:07:50 -07:00
Fathony Luthfillah
8ae08dce40
Show ColorTheme Form, Movable window/layer (#1161)
* Toggle container (action)
it works but the container is currently empty.

* Wasabi:Frame:Xxx : parse,load,init
this patch has no error, but not visible due relatW/relatH not available

* implement relatW/relatH
This patch shows the bigColorTheme window

* movable,resizable
Tested with MMD3 only

* bugfix: unexpected gotoTarget result

* allow unregister eventListener, etc. minor.

* make the group movable

* trial to move MMD3 main window

* Prettier.

* bugfix invalid clip-path value

* speedup devtool: simplify tag,style

* bugfix clip-path.
Issue: the bigColorTheme didn't rendered properly

* mute console

* avoid lowercasing the color-theme-name

* avoid double negative

historically, it was easy to understand : 100% - 12px due I think there shall never be 100% + 12px.
BUT they did! there is something 100% + 99px !

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* unregisterable self-event-listener

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* improve readability

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* improve readability

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* relat() -> relative()

* del "../winamp modern" (specific skin only)

* prettier

* avoid exposing private on other class.

* del dead code, +comments

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* typo

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* +comment, prettier

* remove bind() for better unregister event listener

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* del dead code

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* add note of what going on.

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>

* warn for premateur bitmap that has no id.

* del dead code

* warn for unknown/unlisted guid

* remove seekerGhost transparency hack, prettier.

* typo

* guarding move vs resize to be not overlapped

* bugfix invalid css caused by empty array

* del dead var

* del premateur logic (no use case with MMD3)

* add comment: clarify that getToken is 0 based.

* bugfix typo of ambiguous var name.
@captbaritone: having w and W in the same namespace is too confusing.

* del confusing code

Co-authored-by: Fathony <fathony@smart-leaders.net>
Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>
2022-03-20 00:47:13 -07:00