I’ve had a bit of time over the past few days to start poking around the front-end and the API and since I got a bit blocked on the streaming app dev (and choo is completely foreign to me, it’s going to take me a moment to familiarize myself with it) I decided to play around with what I could find of the API through the stream app and also wanted to try out using Electron to bundle things.
I’m not very creative so I called it beam.
Version 0.4.0 uses the v2 api with the v1 oauth password log in. It works!
Check the Releases page on GitHub for releases and their changelog.
I use a linux machine so have been able to test the .deb file thoroughly, users on Windows and Mac machines report that it works great (unless your mac is from before 2010). If you have any issues please let me know!
Coding on it
I think (hope) this should be fairly straight forward for new devs, especially if you’re familiar with React! I was pleased with how quickly this came together, and I think adding features and functionality could be pretty quick.
But it’s probably time to start adding tests, especially some e2e tests! (though wanted to get people’s feedback first!)
Thank you so much for this wonderful contribution . I was able to load up the app in Electron locally. This is a great start to a native desktop app!
I was able to open the DMG release you had created on macOS, you get a disclaimer saying the developer is unverified, and then if you try to open it again it’ll let you in. I was able to click around, play music for 45 seconds, among other things.
I tried to build my own DMG of the latest version, 1.1.8, since 1.1.7 appears to have the old login method that is nonfunctional currently. I was able to do yarn electron:start on the latest code (1.1.8) and login with a token successfully though. When I tried to build my own DMG (yarn electron:package:mac) with Electron it seemed to build and sign successfully but I’m not sure if the file is locally or on some server (the terminal didn’t indicate), I’ll try to dig into that more later, as well as dig around in your code.
Thanks for trying it out and also getting a version going locally!
I tried to build my own DMG of the latest version, 1.1.8, since 1.1.7 appears to have the old login method that is nonfunctional currently.
It’s actually the old login function as it currently exists on the live stream website (as opposed to the development branch, which I don’t think has been deployed yet). So it should work! Basically it uses api/v1/oauth2/password on the API to send the username and password, which gets it back the user’s clientId and token.
This only works inside of the packaged app though, because of how browsers handle CORS. A normal browser will complain that the API request comes from a client that the server doesn’t allow, but the packaged electron app doesn’t have this complaint (because it’s not a live client, it’s just a file). That’s why when you’re doing development you have to use the token method, in that scenario the browser does complain that the v1 api doesn’t allow localhost:8080.
This might be easier explained over a call or something!
Yes! Like I said I’m not sure how this works on mac, but for linux it’ll be in the /dist folder within the root of the project.
@psi I’ve raised your Trust Level here in the forum. You’ll now have more abilities, such as being able to edit your original post as many times as you like. Well done taking initative on such a great project!
This is incredible @psi. The UI reminds me very much of Ubuntu Linux in a way that I really enjoy. The play stats in the profile page are a really fun feature, and the queue list is awesome.
Here’s the only thing that stuck out to me with the recent update that didn’t seem to work as intended (I wasn’t able to find anything else that didn’t seem to be working as intended): these two links on the profile page don’t seem to work for me on the macOS build (that surprised me, since I checked the code and it’s a basic href was the profile page:
test: cypress integration tests
feat: label, artist, track, playlist, and release pages
feat: drag queue and tracktable items into playlists and to re-order
fix: various style, language, and UX fixes
feat: shuffling your play queue and rearranging it
feat: basic Dark Mode
feat: news section, there's now a way for us to tell you there's some news about beam you should know
feat: randomized staff picks playlists on the front page for some more variety on page load
fix: various user-not-logged-in fixes
Slightly off-topic - I noticed this post lives in the Ecosystem section, but the Testing minimal apps for Android and iOS post lives in the Needs section. I’m not sure what the best way to sort this out is, they’re both elements in the ecosystem and both naturally have needs.
Hey all, I’m going to merge switching to the v3 API and the id.resonate.coop for beam (thanks @auggod for all the support on this in the past few weeks). This is likely to have broken parts of the app that I don’t yet know about, so I would appreciate any reports on that!
I’m currently building a new v0.4.0 release that will contain all the changes from before that switch, including whatever fixes were put in since v0.3.2. (Main new feature is the looping of your music queue). That release should still work fine as a music player, and would probably be a good one to download if you don’t want something that might be broken.
I’d appreciate any reports of bugs from either 0.4.0 as well as the main branch, which will be against the v3 api! If you’re looking to develop against the main branch you’ll need a client id and secret. Let me know and I can help you get set up!
I’d personally like to get to a bit of a more stable release, primarily patching all the bugs you just filed, and testing it with the new changes to authentication and logging in in place as well. So maybe in a week or two?
Thanks for the mention @boopboop, that sounds like a great idea.
@psi , I really appreciate all of your work here, and the desktop app is super sweet! Just let me know when you’re ready to get something out, and I’d be happy to help.
I actually tested the 3.0 version of the app on my Windows computer the other day, and one of the main issues I found was that I don’t think my app updated my total remaining credits in real-time. It would only update them if I reloaded the app. Is this something you’ve heard of before, or is this worth looking more into? It kinda made me worry that I’d accidentally use too many credits at once, so I stopped using the app for the time being, so let me know if you need more info to figure out why this may be the case and ideas for solutions.
Just had a quick look at it on Linux Mint. Amazing work! Thanks for doing this.
Writing some impressions and comments down as I try things out:
After installing using GDebi, the menu shortcut appeared under the “Autre” (Other) category instead of “Son et Vidéo” (Sound and Video…?) as I would’ve expected. I’m setup with French, Canada as system language.
Password isn’t hidden when logging in.
Dark mode looks a bit funky. Some work will need to be done to give it a more polished look.
The Favorite button on the bottom player bar and in the Favorites panel of the Library seem “unlinked” - you can invert the status of one or the other by clicking one, then the other. It will show as favorited in one spot, and not in the other.
The Looping/Shuffle buttons on the bottom bar, to the right, slightly overlap each other.
New playlist created from the left side of the Library section seem to only appear when you activate another element of the interface (quit the Library then come back, or click on another playlist, Collection, Favorites, etc.).
From the bottom bar, I expected clicking on the current track’s artist would take me to the artist page, clicking on the album title would take me to the album’s page, and clicking on the artwork would’ve shown a zoomed view of the artwork.
Placement of the elements on the bottom bar should be spaced out more evenly - for example, I expected the seekbar to sit right in the middle of the screen.
I have the Soundbox desklet on my desktop to control media players. It grabs Clementine with no problem, it gets the Resonate web player running from Firefox correctly as well, but it doens’t get the Beam media info correctly. The app shows as “Chromium”, the currently playing track as “Beam”, with no artist or album information, no artwork, and only the Play, Pause and Stop functions seem to work.