PhotoStructure v0.9
🎊 Version 0.9: 💯💯💯-file edition 🔗
This version includes improvements for very large libraries, new features, new security enhancements, updates to several major dependencies, and many other bugfixes and improvements, both visible and behind the scenes.
All of these changes were driven by beta users’ feedback. 🙏🏾 Thank you!
Released October 19th, 2020.
🍜 This really will be our last beta version 🔗
We’ve provided free access to our beta builds over the past year in exchange for your feedback, and we really appreciate the thought and guidance our early users have shared with us.
If this is the first version of PhotoStructure you’re trying out, please share your feedback and ideas with us! We’d love to hear from you: [email protected]
-
There will be free, “lite,” and paid, “plus,” subscription tiers.
-
Personal annual subscriptions will be $5/month, or $42/year.
-
PhotoStructure development is entirely subscriber-supported.
What do I get with a “plus” subscription? 🔗
PhotoStructure’s more advanced “curators” are unlocked with an active plus subscription. This includes the curator in charge of automatic organization.
In the future, plus will also unlock face detection and other advanced taggers.
But it seems like most of the product is available for free? 🔗
Yup, that’s true, for now. PhotoStructure is a young product and my to-do list is embarrassingly long.
My hope is that the unique features already in PhotoStructure (marked with 🌟) make it worth using at the free, “lite” tier, and as more features are added, a “plus” subscription makes sense to more of PhotoStructure’s users.
What happens if I allow my “plus” subscription to lapse? 🔗
The following is a solemn promise, similar to our open-source clause:
Your PhotoStructure library will always open and be browsable, regardless of your subscription status.
In other words, PhotoStructure won’t hold your own library “hostage” for a paid subscription. The free, “lite” tier will always be able to open any PhotoStructure library.
The advanced “curators” will be disabled without a paid subscription.
For new assets, you won’t enjoy automatic organization, or have those assets tagged with advanced curators.
For prior assets, imported while you had an active subscription, the “prior work” will be retained:
- Any tags from these curators will be retained
- Any external work (like automatic organization) will be retained.
Basically, you paid for their work, so that work won’t be undone.
What about “perpetual” licenses? 🔗
Several people have asked about this, and I’ve considered many different licensing models over the past year.
In my experience, “perpetual” licenses are rarely actually perpetual. They’re a license to use a specific version that doesn’t get updated (even if security issues arise).
This model of licensing gives software vendors a perverse incentive to only release new features in “big-bang,” new version releases, rather than incrementally improving the product continually.
I can only support one version of PhotoStructure: the latest-and-greatest. If I fix a bug, add a new feature, or address a security issue, I want all my users to enjoy those changes as soon as possible, preferably automatically.
I don’t want to be locked in to paying forever! 🔗
You certainly aren’t: PhotoStructure is uniquely designed to gracefully handle switching back and forth between paid and free plans.
Your files will always stay exactly where you want them, and your library will always be viewable, regardless of your current plan.
Note that PLUS-only features (like automatic organization of new files, creating new shared albums, advanced metadata curators, and metadata editing) will be disabled if you switch off of PLUS.
If you really only take photos during holidays, just pay for a month of PLUS when you return, let PhotoStructure do it’s thing, and revert to LITE.
❤️ Open source authors: 🙏 thank you! 🔗
PhotoStructure is made possible by many open source libraries and tools.
If you maintain or substantively contribute to any of these projects, we’d be delighted to give you a free “plus” license of PhotoStructure for your personal use as a gesture of thanks.
Please send us an email, DM @photostructure on Twitter, or DM us via the forum, and we’ll get you set up.
Please include a link to the library that you contribute to and the email address you’ll want to use to subscribe to PhotoStructure in your message.
🎆 New goodness in v0.9 🔗
🚅 Faster galleries 🔗
The code to fetch, render, and display thumbnails was optimized, especially for very large libraries.
The number of thumbnails to show per “tag sample” is now dynamic, based on library size, browser screen size and thumbnail mode (small, medium, or large).
Scrolling through decades and decades of your photos is quick, and dare I say, delightful! 🎉
📱 Enhanced mobile support 🔗
We spent some quality time testing on an OG iPhone SE, and fixed several issues:
- Header buttons are hidden on smaller screens
- Titles automatically uses ellipses on overflow
- Tags in asset streams are shortened to just
parent/child
- When viewing asset info, the image contents are now shown below the panel
🗂️ Scan path improvements 🔗
- We’ve updated the “Where are your photos and videos?” section in settings:
-
The scanning options are now just “automatic” or “manual.”
-
The “manual” option now supports one or more paths for PhotoStructure to scan.
-
Click “Add My Pictures directory” to scan that folder.
-
PhotoStructure for Desktop users have an “Add” button to browse and add local directories. You can click it multiple times to add additional paths.
-
PhotoStructure processes paths in the order you specify in this list. If you’re in “automatic” mode, PhotoStructure will then process the mounted volumes.
-
PhotoStructure for Docker users: it’s still up to you to bind-mount any volumes you want imported into your library, but if you want to specify a scanning order, you now can do so if you wish.
⏭️ Sync improvements 🔗
We’ve improved how PhotoStructure supports processing very large libraries.
The following algorithm is now used to determine which volume to scan:
-
PhotoStructure looks for directories that haven’t been completed within the last month. The first directory from this list is processed, using the order of
scanPaths
. -
If all directories have been completed within the last month, the most- recently processed directory is continued to be worked on, as long as it wasn’t completed less than
syncIntervalHours
ago (which defaults to 48 hours). If no such directory exists, the next directory, in the order ofscanPaths
, is picked to process.
New processing step to handle deleted and excluded files 🔗
Regardless of the sync algorithm that you choose, the following steps are taken to process a directory hierarchy:
-
Directories are scanned for photos and videos
-
Those files are imported or synchronized with into your library
-
Any files that are no longer present in the filesystem are deleted from your library database.
-
Any files found to be in NoMedia directories are marked as “excluded” in your library database.
Steps 3. and 4. were added in version 0.9.
🔎 New “pause panning” mode 🔗
When viewing an asset, you can zoom into the image by clicking in the middle of
the screen, or tapping
In version 0.9 you can now “pause panning,” so you can move the mouse and retain
the current zoom and pan position. Toggle this mode by tapping either
Once paused, you can navigate to different images but remain zoomed into the same relative location. Tap the left or right cursor key to compare next and previous assets, or open the asset info panel, and compare image variants of the same image to compare duplicates.
We found this mode to be helpful in finding the best smile from a set of portraits!
🛡️ Security improvements 🔗
-
PhotoStructure’s UI now uses a strict Content Security Policy.
If you experience page loading errors or see problems in your console, please report them to [email protected]. You can disable CSP enforcement by enabling the library setting
cspReportOnly
. -
We’re now using Electron’s
contextBridge
for the render process, and pass all Electronegativity security audits.
🏷️ Prettier tags 🔗
Other improvements 🔗
-
✨ During library rebuilds, assets are now excluded from your library if any variant that was already imported is found to be in a NoMedia directory.
If you want to keep assets that have variations found in other directories, set the
excludeNoMediaAssetsOnRebuild
library setting tofalse
to retain prior behavior. -
✨ The complete set of PhotoStructure’s settings is now published to github and included in Docker images as a
defaults.env
file. See the new environment variables documentation for more information. -
✨ UNC paths (
\\server\share\path\to\file.jpg
) are now supported both for libraries and for scan paths, but please note that free space cannot be monitored for these devices. We still recommended that you map your network drive to a drive letter, so PhotoStructure can monitor and pause imports if the volume gets too full. -
✨ Library metrics were added to the About page.
-
✨ Tags are now sorted and stored case-insensitively.
-
✨ Much better random sampling (prior versions were chronologically biased)
-
✨ As directories are scanned, files that have been deleted will be removed from the library as well.
-
✨ A new
hiddenHomeTags
library setting supports hiding root tags from the “home” view. It defaults to hiding the “Type” root, which is still available via the navigation menu. It’s case-insensitive, and applied server-side. (Thanks for the suggestion, Daniel!) -
✨ PhotoStructure for Desktops now supports common native-application keyboard shortcuts, including Quit (
command +q on macOS) and Home (command +Home on macOS,alt +home on Linux and Windows). -
✨ All UI widgets that have keyboard shortcuts now say what their shortcut is in their tooltip.
📥 Please share with us! 🔗
If you find anything odd or confusing or buggy, please email us.
📖 For more information 🔗
See our release notes for a detailed list of changes in version 0.9.0.
But wait, there’s more 🎉 🔗
Check out the improvements in version 1.0!