jackBonadies / SeekerAndroid

Android client for the Soulseek peer-to-peer network
GNU General Public License v3.0
247 stars 4 forks source link

feature requests: many quality of life issues #15

Open Efreak opened 2 years ago

Efreak commented 2 years ago

Please bear with me because this is going to be a bit big. Almost all of this is QoL stuff, like sorting, and none of it is actually important. As a tablet user with a 10" screen and add someone who likes information density, my tastes may vary from yours (specifically 4). Most of these requests are just UI changes, I've tried to move those that require significant changes/with at the bottom.

  1. Long press menu shouldn't require a long press when there's no tap function. A simple tap does nothing at all in the user list, on a file in the download list, and in the chat (see next for proposed functions); when items are tapped here, just show the menu directly. I'm the download list, maybe start multi select with a long press.
  2. Chat: there's no option for copying messages. Chat isn't the primary function of the app, but ability to copy messages is rather important.
    • Links are recognized, which is nice, but magnet links are not, which is rather odd for a p2p-oriented app. I tried to do this, but I can't figure out where chat messages are passed. grep -iE 'intent|open|uri|url|linkand reading MessagesActivity.cs and ChatActivity.cs didn't help...
  3. Any time you tap on a username or are in an area/menu based on another user, the User Options menu (from the userlist) should appear. This includes:
    • in chat (nothing is available)
    • in messages (only contains remove, browse, and search. No option to view profile. Adding user options submenu and remove messages is probably better.
    • in the file browser. There's no option to send a user a message, for example of I notice that a directory has the wrong contents, or when I asked lpaloplu for a torrent of their artworks folder (8000 files is not a good match for a queue system)
  4. The icons/menus on the main page should be available as text buttons, at least on larger screens. Even on small phones, scrolling is better than long pressing to try and remember what each icon does. There's should be buttons for user list, messages, chat, shutdown, and about. Maybe even skip the about button and place the info directly in the window.
  5. In the transfer pane, batch select should be available as a button
  6. In batch select mode, not all options are always available. For example, sometimes I can long press and retry a file, but if I select it and two others, retry is unavailable.
  7. Ability to add a file or folder to transfer list without starting the download or adding it to the queue. Some users have a maximum number of queued files, and I want to continue browsing before I actually download.
  8. Alternatively (or additionally) to above: ability to browse directory from the transfer queue. If I start a file, it would be nice to be able to go back to the parent directory to see if there's more.
  9. When adding a file to the queue, check to see if it already exists. Don't let me download the same folder twice.
  10. Ability to clear the incomplete folder. I shouldn't have to manage this myself. As I type this, there's dozens of aborted downloads in there that don't appear in transfer list.
  11. When adding user to list, ask if I want to add a note. I add people to my list when they have interesting stuff, switching modes shouldn't be necessary.
  12. A button or menu item in the transfer list to clear complete downloads (leaving incomplete/failed alone) within a folder
  13. A button or menu item in the transfer list to delete the transferred file(s). Someone's there's an about file that's no longer needed after reading, or maybe I accidentally downloaded the wrong file.
  14. Change the play file label to open file, jpg and txt files don't get played, but media files do get opened. See #16

These will probably require more work:

  1. Ability to sort the userlist by both date added and name. If possible, please keep the current sort as an option and display dates, but even alphabetical sorting is better than date added.
  2. Ability to sort and filter the transfer list by date added, name, status (complete, incomplete), etc.
  3. Some way to filter the results list to remove things, not to add things. Either support for ".jpg -cover" or simply a second filter that removes keywords. Example: the 1996 Tribute to Creedence Clearwater Revival. Searching for tribute creedence gets me the 2014 blues tribute to Creedence Clearwater Revival, pavement Nicene edition Tribute to the clean, a pickin' on tribute, etc. This should be made far easier with filter support for -2014 -blues -pavement -corners -pickin -covers -blugrass

If you'd prefer that I submit multiple issues, I can do that, I'm just trying not to drown you with notifications.

jackBonadies commented 2 years ago

Thank you very much, this is some really great feedback :) All good suggestions! Here are my initial thoughts, though I will have to think about some of these a bit more..

1) Mostly Agree, I will have to try each (user list, single transfer, chat) and make sure it feels okay. 2) Will do. I did implement this in Chatroom, it was just an oversight that it is not in Private Messages. I will make magnet links (and also eventually slsk:// links) clickable as well. *Note: if you are long clicking a message in a chat room and nothing is showing up then that's a bug so let me know. 3) Chat - See Note. Messages, Browse - totally agree on both, will do. 4) by "text buttons" do you mean added to the overflow menu, or do you mean a button like "settings" or "logout"? I know the login page is very bare, I really have to think about what I want to do with it... 5) I agree it would be convenient, my only opposition to it would that it might be difficult to implement. Reason being, the way contextual mode is typically implemented in Android is that it expects at least one item selected and deselected all items typically brings you out of the mode (see gmail app long press message for example). So I fear that batch select mode with 0 items may look a bit odd. 6) The way I intend the batch options to work is that they get OR'd together, so if you select 1 paused transfer, 1 failed, and 5 completed successfully you will get options Resume, Retry Failed, and Clear Complete with each option only acting on those items that it is applicable for. So the experience you describe seems like a bug. I will let you know if I need help reproducing it. 7) Agree. 8) Agree, only potential concern is menu getting too crowded. 9) Agree. 10) I will add an option to clear incomplete folder of any aborted downloads. The experience you describe seems like a bug, however, since whenever a download is cancelled and removed, it is supposed to clean up after itself.
11) Will have to think about this, as whether one wants to be asked to add a note when adding a user is preference and I could see it going either way. Perhaps a setting checkbox option which says "Prompt to add a note on adding user"?
12) Ah - just checked this out and I think this is a mistake on my part. I see that if a folder has a complete item and a paused item then it does now show the "Clear All Complete" option. I will fix that. 13) Agree, only potential concern is menu getting too crowded. 14) Yeah, a music file is the most common case, but it is quite awkward for other file types. So I think changing it to open is reasonable.

15) This should be straightforward to add and its a good suggestion. I will make it possible to sort alphabetically, date added (default), and perhaps maybe by online status. Unfortunately I never recorded the exact date when users were added, just the order in which they were added.. so that part I will have to think about implementation-wise. 16) Agree. 17) I just looked at this and realized a bug.. so I do support '-' to exclude but the excluded term was '-2014' (i.e. including the '-') rather than '2014'. I will fix this now.

Efreak commented 2 years ago
  1. I meant as buttons onscreen. If there's not enough room for all buttons on screen, then maybe those that don't fit can go in overflow, or just make the main screen itself scrollable? I just feel like the menus here are unnecessary. Basically the welcome at the top, and some large buttons in a grid, either text or icons with text below.
  2. I've seen it in other apps, but it may work differently. Maybe this helps?
  3. Probably. I think maybe if there's no response from the uploader, no status gets saved? Sometimes it continues to show paused or queued, but resume and refresh aren't available, only retry is.
  4. Stupid GitHub, don't change my list numbers...
  5. I'm not sure how hard it is to do this, but would it be possible to have submenus that display as sections on larger screens? Transfer -> abort, retry, resume, pause, clear; File -> open, share(!), delete; user menu; browse; etc.
  6. I felt like this is probably a big, but I also feel like it might be hard to track down, while emptying a folder is comparatively trivial.
  7. This only needs to show up in menu with multiselect mode
  8. See 8
  9. I submitted #16 for this.
  10. My suggestion: Since currently they're stored in the order they were added, either set the time to the current time at upgrade, with difference of 1 to preserve order. If you intend to display the time, then just replace it with unknown or pre-upgrade or some such. I
  11. This sounds like something I would do...

More suggestions

  1. select all and invert selection in multiselect mode. Problems: aborted transfers, adding more files later, etc.
  2. Detect network availability before logging me out. Every time I forget to shutdown seeker before leaving range of wifi, I have to reenter my username/password to reconnect. To be clear, Android is probably telling Seeker I'm still online and connected to wifi; on leaving the house, Android will happily tell me I'm connected on wifi until I'm 5-6 houses away, yet if I'm walking towards the house I can't even see my network if I'm more than one house away.
  3. Show file and directory sizes in the transfer list and browser. Currently file sizes are only displayed in search results. Not sure how well this would work with smaller screens.
    • transfer list: Either overlay current/total over the progress bar, or just include the total below it.
    • browser: right align file sizes.
  4. On opening the view of a search result, show the folder title next to or below the username, since the folder name doesn't always match the search (useful for screenshots, as I save interesting locations occasionally)
  5. an option to only move files to the completed directory when the entire set of associated downloads is complete, eg don't move album\track1 when it completes, wait for album/tracks and so on to complete as well. This enables hiding incomplete downloads from the media scanner, indexing complete individual files for the local playback, and indexing complete directories (albums) for lan sharing (BubbleUPnP); it also enables other apps to watch this directory and perform steps such as zipping and uploading.
jackBonadies commented 2 years ago

Hi, just as an update maybe half of these are done so far, but I will update you will more details once I get closer to finishing the issue 👍

jackBonadies commented 2 years ago

Here is the current task list. For ones I list as complete and in 2.8.2, feel free to let me know if there is anything missing since even though I listed it under complete I may have missed a case / may still be bugs / may have misunderstood something, but at least to my knowledge they are complete. And also feel free to add any more suggestions / comments.

Complete (in 2.8.2): 2, 3, 6, 7, 8, 11 (its a separate option wherever add user is an option), 12, 14, 15, 17, 19 (less aggressive about logout)

Complete (currently in github / next release): 20, 10

To do soon: 5, 18 - I had held off on these, since I was still debating whether one can be in context mode with 0 selected (which effects both the button and the invert). But I think its fine and will be more convenient. 9 - This should not be too hard, just have not gotten to it.

Part of larger task / future: 4 - This is in progress, I'm redoing the login screens to be more modern / clean, so this will be part of that. 16 - This one is gonna take some time, so it may be a while. But I definitely want to add the ability to sort / filter transfers though. See for example libretorrent which does it well imo. 22 - The ability to only move downloads once the whole folder is complete is more a niche option, so it is not high priority. The use cases you mention sound cool.

Design Concerns: 1 - This is done for user list. Don't know if I like it for transfers or messages yet. 13 - Still concerned about menu getting to crowded. But perhaps I can add it into a "More Options" along with share slsk link and others. 21 - Need to figure out a good design for this.

julianfairfax commented 2 years ago

Not sure if I should open a separate issue for this or not but since it's small I'll just add it here for now: it'd be nice if the app checked for updates everytime it's opened, or at an interval that can be configured, or at least if the version on the GitHub releases would, so users using that wouldn't be left on updates. I know you can also watch the GitHub releases, and then it'll send you an email for new releases, but that's annoying in the sense that if you're not using the app, it'll still bother you, whereas with this idea, you'll only be told when it actually matters.

Efreak commented 2 years ago

Seeker is included in fdroid, so if you install the fdroid app and configure it to update repos occasionally, you'll get update notifications. That still leaves you with notifications outside the app, but you'll get them with other app update notifications, and the interval is configurable. If you use SkyDroid, it can also silently background install updates via Shizuku (local adb proxy for nonroot devices, I use it in place of fdroid privileged extension).

On the other hand, GitHub releases API is fairly simple to parse.

jackBonadies commented 2 years ago

Since the version on github releases is exactly the same as fdroid (since that is where IzzyDroid pulls from) I would recommend using fdroid for managing updates. That being said, I can add an opt-in feature "Check for updates on app launch" or similar.

julianfairfax commented 2 years ago

I prefer sticking to the main F-Droid repo for things. That being said, I'm getting this app from the Play Store right now, so I don't suppose the feature would be that useful for me at the moment.