Yes, that is by design. The unencrypted share link for a given file is always the same, but each time it's generated there's a seed/timestamp added which completely changes the encrypted string, so each time the link looks different but the embedded info is the same. All links work because when decrypted they point to the same FileKey.
To have different links go to different people, and to be able to invalidate each one individually would require all generated links to be tracked in the DB (with a friendly name) so that you could invalidate each one individually. That's doable but not very nice. Another way would be to create a lists of accounts/passwords, and track the list of items shared with each account; remote users would need to login to see the shared file(s).
I think the best way forward would be to add the concept of Shared Playlist. That way, you would:
- create a playlist for each person/family/group you wish to share
- get a Share URL for the playlist itself
- add/remove files from the playlist whenever you wish without having to explicitly share each file
Accessing the Playlist shared URL would display Panel, with just that playlist visible.