AI prompts
base on Desk Thing: The Discord Thing, Trello Thing, The Weather Thing, The Macro Thing, Just not The Car Thing anymore ![Youtube Banner](https://github.com/user-attachments/assets/78aa432b-e86e-4945-9b57-931a7ae5c5cb)
![image](https://github.com/user-attachments/assets/4f4ee062-14df-49df-968a-d196746ef80f)
![image](https://github.com/user-attachments/assets/5fbf8e30-e468-424e-bad4-b6a4b656feb4)
> ❔[Reddit Link](https://reddit.com/r/DeskThing)
> 📃[Trello Board](https://trello.com/b/6v0paxqV/deskthing)
> 💬[Deskthing Discord](https://discord.gg/uNS3dhj46D)
> 🌐[Official Deskthing Website](https://deskthing.app)
> 📺 [Deskthing Youtube Channel](https://www.youtube.com/@DeskThing)
> 💬 [Car Thing Hax Community Discord](https://discord.carth.ing/)
# The DeskThing ✔️
*Let's begin, shall we?*
This is the DeskThing project. Using Spotify's existing Car Thing, the DeskThing makes the perfect desk assistant. In short, the DeskThing serves as an alternative OS for the Spotify Car Thing. It allows you to load up community-made apps to it to do anything from control your local audio to seeing who is in your discord call! This is an open source project made by me, Riprod, an independent developer who's not even out of college! If you want to help contribute to this endeavor and attempt to revive the car thing, you can do so through my buymeacoffee link or through Github Sponsors.
Cheers!
*Dammit Jeff posted a video covering the DeskThing! Check it out [here](https://youtu.be/vQVuGeoqyUc?si=80bZQEFqH__qxppf&t=416)*
**⚠️DO NOT PULL MAIN BRANCH ⚠️**
Instead, go to [The Official Website](https://deskthing.app/) and download the installer for your OS
For a video walkthrough of v0.6.0, go to [this video](https://youtu.be/nC65O1nP-pk?si=dxUEF6wyzLI2Z72U)
---
> All instructions are up-to-date as late of v0.9.0-beta. Later versions may differ in functionality and setup
<details>
<summary><h2>✨ Features</h2></summary>
<img src="readme_images/bar.svg" style="width: 100%;" alt="Click to see the source">
The DeskThing is a simple CarThing Chromium-based website that can communicate with a Desktop APP on your computer. The CarThing can:
Note: Not all of these are updated and are pending a revision. This is new as of v0.7.0
- ### All In One Package 📦
- [X] Download apps directly from the Desktop App GUI
- [X] Manage and update the Car Thing's display
- [X] Probably more - just check it out already
- ### Configurable Controls ⚙️
- [X] Make any button do any function!
- [X] Control audio with the top buttons, front buttons, back buttons, really whatever you want!
- [X] Modify them from the Desktop UI
- [X] Add more directly from apps! (Basically, you can do anything)
- ### Spotify Integration 🎧
- [X] Show currently listening (Album, Artist, Song name, album art)
- [X] Control Spotify (Skip, pause, play, rewind, shuffle, repeat)
- [X] Supports Podcasts too!
- [X] Set Audio Output Source
- Spotify app [installation instructions here](/DeskThing/server/apps/spotify#spotify-app-install)
- ### Desktop Now Playing (Only Windows) 🎧
- [X] Show currently listening (Album, Artist, Song name, album art)
- [X] Control the current media (Skip, pause, play, rewind, shuffle, repeat)
- *no setup instructions yet. Drag-n-drop the .zip from /releases/apps/ into the GUI*
- ### Discord Integration 💬
- [X] Show current call status (Participants, who's talking, their mute status)
- [X] Control Discord (Mute/Unmute Deafen/Undeafen Disconnect)
- [ ] ~~Control Individual User Volume~~
- [ ] ~~See message preview~~
- Discord app [installation instructions here](/DeskThing/server/apps/discord#discord-app-install)
- ### Weather Integration 🌧️
- [X] Show local weather
- [X] Temperature
- [X] AQI, UV Index, Wind Speed + Direction, Visibility
- [X] 12 Hour forecast
- Weather app [installation instructions here](/DeskThing/server/apps/weather#weather-app-install)
- ### ~~Audible Integration📗~~ *to be migrated*
- [ ] ~~Currently Listening To~~
- [ ] ~~Audio Controls (Skip, Rewind, Fast Forward)~~
- [ ] ~~Audio Status (%through)~~
- [X] Audiobook Library
- [X] Audiobook stats (Progress, Length of book, time left, ASIN)
- Audible app [installation instructions here](/DeskThing/server/apps/audible#audible-app-install)
- ### ~~Launchpad Integration 🎵~~ *to be migrated*
- [X] Control different views on your launchpad!
- [X] Show your system resource usage on your novation launchpad
- [X] Add timers from your launchpad
- [ ] ~~Show weather from launchpad~~
- [ ] ~~Show time on launchpad~~
- [ ] ~~Trigger macros from launchpad~~
- [ ] Launchpad app [installation instructions here](/DeskThing/server/apps/launchpad#launchpad-app-install)
- ### ~~Trello Integration 📃~~ *to be migrated*
- [X] See all organizations
- [X] See all boards
- [X] See all lists
- [X] See all cards
- [X] See all tags
- [X] Set different lists as your favorites
- Trello app [installation instructions here](/DeskThing/server/apps/trello#trello-app-install)
<details>
<summary>
<h3>Planned Apps</h3>
</summary>
<img src="readme_images/bar.svg" style="width: 100%;" alt="Click to see the source">
- Macropad / Streamdeck
- GUI Companion
- Dashboard/Settings for config changes
- General audio control
- Advanced Spotify Stats
- Home Assistant
- Pomodoro Timer
- Google Calendar
- More details in the [Trello Board](https://trello.com/b/6v0paxqV/deskthing)
</details>
> *This is under constant development, so features will come as soon as I can make them. Suggestions welcome!*
</details>
---
<details>
<summary>
<h2>▶️ Setting Up</h2>
</summary>
<img src="readme_images/bar.svg" style="width: 100%;" alt="Click to see the source">
### Detailed Setup Instructions
‼️ There is now a youtube tutorial walking through this process ‼️
[Setting up to v0.6.0 that shows how to flash](https://youtu.be/nC65O1nP-pk?si=umjOsybdfmQud6I0)
[Upgrading to v0.8.0 from 0.6.0](https://www.youtube.com/watch?v=Exu7KMcbN4k)
[Alternative flashing tutorial](https://youtu.be/Y0paq_qhG5M?si=YcpNOJzzQu8MJJTb)
*Step-by-step instructions*
1. **Flash Your CarThing:**
- Follow the instructions in the [superbird-tool repository](https://github.com/Car-Thing-Hax-Community/superbird-tool) to flash your CarThing device with the necessary image.
> If you need help, refer to the [detailed instructions](#flashing) at the end of this page
2. **Get the installer**
*should be under [releases](https://github.com/ItsRiprod/DeskThing/releases)*
- Run the 'deskthing-0.*.*-*-setup.*' installer on your computer
3. **Check for your device:**
- Under the 'Devices' tab, ensure your device shows up. If it does not, join the Discord server and report the issue, this can be buggy on some machines.
> A few things to try if it isn't working is to 1: Use task manager to kill all instances of ADB 2: Run DeskThing as administrator 3: Unplug and plug in your Car thing 4: Install ADB and manually check with `adb devices`
- If the device shows up, go to the 'Client Downloads' tab and click the latest version. It should show up at the top (Staged: Deskthing CLient)
- Go back to the 'Devices' tab and click 'Push Staged Webapp' It should take a second, and then your Car Thing should restart.
4. **Load Apps**
- Congrats! You're basically done. Now go to 'Apps' and then 'Webapps' and download any apps you want. Ensure you check dependencies before doing so as this could cause errors.
> Any Issues? Contact me [through the Deskthing discord server](https://deskthing.app/discord) or via DMs to @riprod
⚠️Note for MacOS⚠️
First, when you install the DeskThing installer, you'll need to run
```
sudo xattr -r -d com.apple.quarantine DeskThing.app
```
to fix the app. Otherwise it'll say it's corrupted or something
Because ADB on the car thing and MacOS is funky, you need to run this on the DeskThing's ADB
```
chmod +x /Applications/DeskThing.app/Contents/Resources/mac/adb
```
Finally, the image linked above won't always work for MacOS. So instead, use the following image (it is a discord download for now) as it fixes ADB for MacOS
**Go to Releases -> MACOS LISTEN UP to find the updated link**
*Discord will cycle the url for the link so this one will expire after a given amount of time*
[The new location is on thingify.tools. Use v8.9.2](thingify.tools)
Thanks! Have a good day
</details>
---
<details>
<summary>
<h2>📸Flashing</h2>
</summary>
<img src="readme_images/bar.svg" style="width: 100%;" alt="Click to see the source">
[Alternative flashing tutorial for Windows](https://youtu.be/Y0paq_qhG5M?si=YcpNOJzzQu8MJJTb)
**_It is HIGHLY recommended to use the new ifixit tutorial_**
https://www.ifixit.com/Guide/How+to+Install+Custom+Firmware+onto+Car+Thing/178814
Links:
- ~~[image dumps](https://mega.nz/folder/NxNXQCaT#-n1zkoXsJuw-5rQ-ZYzRJw/folder/Ak9FVKxJ)~~
- [New Image Dumps](https://thingify.tools/firmware/P3QZbZIDWnp5m_azQFQqP)
- [superbird-tool](https://github.com/Car-Thing-Hax-Community/superbird-tool)
Process:
- Go to superbird-tool and install it based off your operating system. Come back once you can run `python superbird_tool.py --find_device` and see your Car Thing
- Unplug the Car Thing
- Hold buttons 1 and 4 (the four large top buttons are mapped from left to right) and plug it in.
- Wait a few seconds. If the screen does not turn on, that means you are in boot mode. You can release the buttons
- Run `python superbird_tool.py --burn_mode` to enter burn mode
> Note: This step may say it fails to enter burn mode. This is okay, continue on as if it worked. There is information in the discord as to why this is.
- Download 8.9.2-thinglabs.zip files from Thingify Tools (linked above) and in that same folder (unzip them)
- (Windows only) Download [zadig](https://zadig.akeo.ie/) and install the WinUSB driver for **GX-CHIP** (select it and click "Install Driver")
> Alternatively use **libusbK** if it does not work
> you may have to click "Show All devices" to see it
- Run `python superbird_tool.py --restore_device /path/to/extracted/firmware/folder` (This may take a while)
- After the firmware is flashed, the Car Thing should be ready with ADB enabled. To check, run `adb shell ls -l /usr/share/qt-superbird-app/` and you should see webapp as one of the folders.
- Ensure that `adb devices` works and registers `whateveryouridis device` as one of the options
- Continue setup from [here](#detailed-setup-instructions)
</details>
---
## 📗 Additional Resources
- 🔧 [superbird-tool](https://github.com/Car-Thing-Hax-Community/superbird-tool) - This is the CarThing image that is being used. Be sure to either include this link or steps on how to flash the CarThing.
- 🐤 [superbird-custom-webapp](https://github.com/pajowu/superbird-custom-webapp/tree/main) - The React web app framework that this project started with.
- 🗨️ [Car Thing Hax Community Discord](https://discord.carth.ing/) - The discord where there is this project and so much more!
---
> Questions? DM me on discord @riprod
⚠️ *While bricking the Car Thing is extremely difficult - I don't think anyone has done it yet - the possibility is still there. I do not take any responsibility for damages done to the device. Try to use common sense* ⚠️
# Developing Apps
Interested in developing an app? Well here's a great place to start! Make sure you join the DeskThing discord server so I, or anyone else, can help you out!
Start with
```sh
npm create deskthing@latest
```
And follow the prompts to set up the app environment. From there, you can reference:
### [App References](https://github.com/ItsRiprod/deskthing-apps)
These are apps that make the deskthing "firmware" functional! When you use spotify on your deskthing, it's using the spotify app (linked here). What you interact with is driven by the "src/App.tsx"
### [The app-side connector](https://github.com/ItsRiprod/deskthing-app-client)
This is what allows deskthing apps to "function". When you hit the pause button on the spotify app, it makes a request to the deskthing-client which routes your request (through the deskthing-app-client package, source code linked here). This deskthing-app-client request doesn't return a response, instead it listens for events through the deskthing-app-client using the "on" method.
### [The server-side connector](https://github.com/ItsRiprod/deskthing-app-server)
This is what allows the deskthing-server to make custom requests. When the deskthing-server gets a request to pause the current spotify song, it forwards that action through the deskthing-app-server back to the spotify apps "server/index.ts" which can be handled in your app using the deskthing-app-server "on" method to respond to custom requests from the deskthing-client.
### [The client that goes on the Car Thing](https://github.com/ItsRiprod/deskthing-client)
Good luck!
<details>
<summary>
<h2>Action Shots</h2>
</summary>
![2024-11-03 14-52-17 2024-11-03 14_54_36](https://github.com/user-attachments/assets/6df2992d-198e-44e7-a1eb-fc51c0888ee9)
![2024-11-03_14-49-12 2024-11-03_14_51_33](https://github.com/user-attachments/assets/8fbf94b7-68c4-4000-88f7-c45ea3a027f5)
![2024-11-03_14-54-50 2024-11-03_14_56_07](https://github.com/user-attachments/assets/358dbd9f-9b8f-4f4a-b6b2-cc3427b53d2d)
</details>
*DeskThing wouldn't be possible without our sponsors*
![helium-badge](https://github.com/user-attachments/assets/f0256b3a-0a96-4ba9-ba8d-7c0a45aa0d68)
*Want to support deskthing? You can [here!](https://deskthing.app/support)*
", Assign "at most 3 tags" to the expected json: {"id":"12134","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"