Skip to content

Conversation

mm-zacharydavison
Copy link

@mm-zacharydavison mm-zacharydavison commented Aug 3, 2025

A feature I find essential in photo management software is the ability to quickly flick through a large set of photos and 'audit' them before I add them to my library permanently.

The common workflow in tools like Lightroom is to use keyboard shortcuts while fullscreened to multi-select a group that you can then do whatever you like with (e.g. delete).

I found this cumbersome in Memories, so added the functionality.

image image
  • There is an empty circle / checkmark in the action bar of the Viewer that indicates current selection status.
  • You can press ' ' (space bar) or click to select/de-select current image.
  • When you return to the timeline, your images will be selected.

It's my first time contributing to this repo, so please let me know:

  1. If the approach makes sense (especially for the selected fragment handling).
  2. If I should add any test cases (I saw no existing tests for the viewer).

@mm-zacharydavison
Copy link
Author

There's some more QoL keyboard shortcut things I'd like to add to this (e.g. having the delete shortcut delete your current selection, not just current photo) but I'll wait for feedback on this PR first.

@pulsejet
Copy link
Owner

pulsejet commented Aug 4, 2025

Seems good to me in general. A couple things that'll need to change

  1. I'm trying to move away from globals, it's rather unfortunate that we have any at all. Ideally we need to be able to support multiple instances of Timeline on a single page (this is needed for some features like add to album). I've been putting this off to after the Vue 3 migration; there are new utils that'll make this easier - regardless we need to avoid adding another global. Probably makes more sense to use the event bus here (which can later be replaced by a viewer generated event)
  2. The UI will need to be hidden since this is not a very commonly used feature. Probably a shortcut to trigger it and then it'll become visible should be fine. We need a page or popup to show all the hidden shortcuts anyway.

@mm-zacharydavison
Copy link
Author

mm-zacharydavison commented Aug 4, 2025

Seems good to me in general. A couple things that'll need to change

1. I'm trying to move away from globals, it's rather unfortunate that we have any at all. Ideally we need to be able to support multiple instances of Timeline on a single page (this is needed for some features like add to album). I've been putting this off to after the Vue 3 migration; there are new utils that'll make this easier - regardless we need to avoid adding another global. Probably makes more sense to use the event bus here (which can later be replaced by a viewer generated event)

2. The UI will need to be hidden since this is not a very commonly used feature. Probably a shortcut to trigger it and then it'll become visible should be fine. We need a page or popup to show all the hidden shortcuts anyway.

Sure i can implement #1, I was originally going to not use globals but followed your lead with the rest of the codebase.
For #2, some options, i'm happy to implement whichever you prefer:

  1. app setting to enable multi-selection UI
  2. once the first photo is selected with keyboard shortcut, start showing the multi-select checkbox in the action bar
  3. another shortcut required to enable

personally I'd rather have #1 if we have to hide the UI by default. The UX for #2 and #3 aren't great.
if we go with #1, if people like it in future you could enable it by default

I wanted to go ahead and make other actions compatible with multi-select, if you're fine with that existing I'm happy to implement it (e.g. delete, share, etc would all operate on your multi-selected photos if you have an active multi-select).
share might be a bit of a different flow, and i dont really need it, i just want delete (which is already supported by just exiting the viewer and deleting from the Timeline anyway, so my use-case is covered already)

@mm-zacharydavison
Copy link
Author

@pulsejet any movement on this? I'm happily using my own fork for now, so not really in a rush.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants