Activity

Trey

Shipped this project!

I’m reshipping PYThing, an alternate web UI for the discontinued Spotify Car Thing. This alternate UI is made to be used with whatever you want, provided you can make your own app. You could make a hackatime dashboard if you want, or change spotify to apple music! This reship is to cover lost time from the first ship.

Trey

I added an optimization section to the README so I can submit for the optimization sidequest (hopefully).

Attachment
0
Trey

There is a demo video on GitHub now!

Attachment
0
Trey

PYThing has banner art now! It’s pretty simple, and might be improved later.

0
Trey

Frontend

The visual language has been changed. All apps have a slight transparency now. It’s supposed to be close to glass, but I can’t blur it due to old chrome restrictions, so it’s just transparent.

Backend

A few backend bugs were fixed

  • The spotify and lyrics app actually send a user agent now.
  • The number of ignored type errors went from 28 to 7, these were not actual bugs, but just false positives that have been refactored to not trigger anymore.
  • The carthing related code has been moved to an app in an attempt to reduce the file size of init.py
  • The spotify app downloads the cover art at half resolution now, which makes the file ~1/3 of the space on average.
Attachment
Attachment
Attachment
Attachment
Attachment
Attachment
0
Trey

More backend and documentation changes, but oooh pretty gradient. Jokes aside I think it looks pretty nice.

Attachment
0
Trey

Another big update, there are now configurable accent colors, and they can also be set automatically by the current song (or any app if you feel like making your own)! The code that determines the color is just ok (it favors saturated colors over the one with the most area, feel free to pr), in the demo video I kept getting yellow. Anyway, for the songs that work, it works really well! All apps have been given some color, some more than others. Another notable mention, more apps tell you when it has nothing to show, like the lyrics app, which used to just show a blank screen, but now tells you what it’s doing. The dashboard also tells you to check out settings, and there is a setting to turn off the message (to make sure you have actually visited the page). The loading animation also now actually waits for the app to fully load, and for the websocket to be established before revealing the app. Apps can also inject code into other apps now, so that’s cool I guess. The customizer app uses it to allow the app to get the current accent color. There were a few more changes, but I dont have a reason to include all of them.

Attachment
Attachment
0
Trey

The README is sorted now, so it’s not one giant chunk of text.

Attachment
Attachment
0
Trey

Wrapping up, there is now a binary release (hour of debugging for a problem that copilot solved in 5 minutes), and a few other changes. The music app now gives a warning if it has gotten no data, and the app data is stored in the home folder, instead of the source directory.

Attachment
Attachment
0
Trey

Shipped this project!

Hours: 38.65
Cookies: 🍪 713
Multiplier: 18.45 cookies/hr

I made PYThing, an alternate web UI for the discontinued Car Thing. I spent a lot of time making a well-thought-out app ‘API’, that lets anyone create their own apps easily. This projects biggest strength is its modularity.

Trey

As I get ready to ship, I have created a release with usage instructions.

Attachment
0
Trey

The music app now has a UI! It’s pretty basic, but it shows what song is playing. The UI was assisted by Gemini, and is a little bugged on desktop chrome, but looks fine on the Car Thing. This might be the one of the last few devlogs before ship.

0
Trey

Quick devlog, but I want to be honest with my AI usage. Before, the lyrics app would poll every 20ms, which was way heavier then what I wanted. I have gotten copilot to rewrite the client javascript, so it should be less heavy. Also (non-ai), the spotify app can fetch the album art for the current song to be used in other apps.

Attachment
0
Trey

I have added a readme with usage instructions and how to make your first app.

Attachment
0
Trey

New app: Lyrics! Get the synced lyrics for whatever song is currently playing, not many backend changes this time, I think the app API is almost complete.

0
Trey

Windows support has been added and tested! Also, the music playbar moves the app content up and out of the way. The background is now black again.

0
Trey

The settings page has been completed, and to demo it, there is now a music app that shows a progress bar of the current song at the bottom of the screen. The music and spotify apps are both separate, so you can create your own provider (like jellyfin) with your own data if you wish. Other apps can also hook into this and get the current playback state for their own use. Also, the rounded corners now only show on car things. To make all this work, apps can now directly inject html into the client page, for whatever they want.

Attachment
Attachment
0
Trey

The hardware app has been completed! I was not able to find a good way to get GPU data, so it was replaced with disk r/w. Also, carthing detection and setup is faster now. There was a 3 second delay to check if the carthing already had the client on it, but now it is done by checking for a specific file in the root of the webapp directory that is placed there on setup. For carthing support, the app needs access to adb, and if it is not in path, the app now asks to download it for you. Work is also being done to allow apps to inject html directly into the client view, so that apps can have persistent overlays across apps.

0
Trey

I have made a github release, and have published an image to ghcr. People can now pull the image without pulling the whole git repo.

Attachment
0
Trey

I have changed the background color to make the fake rounded corners stand out more, in the future a custom color should be able to be set. The auto-time element and getRealDate client function should also now be able to be used quicker, as the real date offset is now sent on connect, and updated every minute, instead of every second, and having the client wait for the next update. The most notable feature is that apps are now able to send data between the client and server in real time, and can be demoed in the new “System” app, which updates ram usage once per second. Client > server communication has no demo yet. There was also a bugfix where I was accidentally importing init.py multiple times, so variables could have two different values depending on where you read them from.

0
Trey

This log comes with a few style changes, a working dashboard, and a clock app. Apps also now have more functions available for them to use. Also, this should work on Windows now, although I have not been able to test yet. The menu button on the car thing (key m on desktop) sends you to the apps menu, and you can select apps with the wheel and button, or the touch screen.

0
Trey

As a start, there is one working backend, and one working app, although no dashboard (so no app demos yet).

Attachment
0
Trey

Shipped this project!

Hours: 23.4
Cookies: 🍪 640
Multiplier: 27.34 cookies/hr

I love how this turned out, even though there is no forge server support, I am proud of how easy this is to use. The hardest part of this project was starting the server process and being able to interact with it as it runs. I learned the basics of process management in python, and reproducible environments.

Trey

TLDR:

  • Fabric server support
  • Running commands through the server page now sends the command through STDIN, not RCON
  • Servers are created faster because logic that required the server to be on is now done on server start
  • You can now delete servers
    Full:
    Finally, fabric server support. You can now create a modded server. It seems like forge support is not possible (at least automatically), as there seems to be no download api. The fabric server automatically installs luckperms, simple voice chat, fabricproxy-lite, and the fabric api. Some mods need extra configuration because they are not able to detect client mods through velocity.
    The server page now has a command bar, which sends commands to STDIN, instead of through RCON, it also has history.
    When a server was created, before, the server would be temporarily started to run a luckperms command, now, that is ran after every start, and saves a few minutes of server creation time.
    Servers can also be deleted now! When you delete a server, the process is killed, and the directory is deleted.
Attachment
0
Trey

There is now a basic file manager, no editing files, but it does let you do everything you would need, with some help. Clicking a folder opens it, and clicking a file downloads it to your computer.

Attachment
0
Trey

Shutting down the host machine now gracefully stops the servers, so you don’t need to worry about manually stopping the servers anymore. There is also an individual server page, that will eventually be used for a file browser!

Attachment
0
Trey

The console was improved, and you can now create a server from the web UI, and it updates velocity instantly. The demo video attached has cuts to keep it short.

0
Trey

You can now stop, start, restart, and run commands from the web dashboard. Logs are streamed to the console (why is socketio so hard to get working), and server status live updates. The app also now automatically sets up geyser and floodgate (including backend servers), so bedrock players can play too.

Attachment
Attachment
0
Trey

No full webui yet, but after a few hours of debugging, the first stack is up. The app will auto generate server and plugin configurations for velocity and paper server softwares, and it configures the proxy to point to the paper server. If you have a domain, it also sets up a forced host with subdomains, so that it can automatically route you to the right server with a subdomain, e.x. lobby.mc.example.com routing to the lobby server. If you give it your Minecraft UUID, it can also give you the * permission on the proxy and all backends using luckperms. The proxy can also route simple voice chat packets to the backend, so any clients with simple voice chat just work. Next is finishing the dashboard and adding fabric and forge.

Attachment
0
Trey

There is now a template, css, and partial backend. Still much more to go, but I now have a template for more pages to be added quicker.

Attachment
0
Trey

There is now a basic (but not working) authentication system and a basic database. Now, if a user attempts going to a restricted page, they are redirected to /login. Hopefully next log will have more content.

Attachment
0
Trey

I have created a planning document with some backend features I want, and it outlines what I would like to do going forward. I have also created a basic init script, that does nothing yet.

Attachment
0