Commits
July 2026:
- Blink: allow viewing and editing captions
ee6f05d· 3 July · +305, −31
June 2026:
- FocusedImage: fix layout flashes when the underlying data changes
584f492· 29 June · +34, −8 - Blink: add a ScriptHelper enum for running AppleScript
e154ddb· 28 June · +50, −13
May 2026:
- README: add alt text for the images
37d01fd· 20 May · +2, −2
September 2023:
- Fix another bug where the thumbnail list got out of sync
fec0a94· 2 September · +7, −7
August 2023:
- Fix a bug where the thumbnail list got out of sync
a616d77· 16 August · +7, −7 - Fix the text colour of the album info overlay
8f142c0· 11 August · +7, −6
June 2023:
- bump the version again
1912f08· 25 June · +6, −6 - bump the build number again
f5b9631· 20 June · +6, −6 - Add a right-click menu to copy an image
45fe7ed· 20 June · +15, −6 - Make the focused image draggable
a97e3e5· 20 June · +7, −6 - Remove an unnecessary VStack
a699459· 18 June · +10, −6 - show a progress spinner before the auth message
5fbb506· 19 June · +21, −7 - move the Xcode bits to the top level
8fe8b15· 18 June · - add an app category
9e56ed2· 18 June · +8, −6 - remove all the old app stuff
946eeb7· 18 June · −1156 - Pick up edits to photos made outside the app
1352565· 18 June · +19, −6 - Allow opening the photo directly in Photos
d55716d· 18 June · +25, −10 - Add support for light/dark mode and a setting
bd29fe6· 18 June · +56, −9 - the app only has and needs a single window
097102b· 17 June · +14, −8 - Merge pull request #22 from alexwlchan/track-asset-identifiers
701b7a7· 16 June · +401, −146 - more commentary
da50dba· 16 June · +10, −8 - Add more comments on PHAssetHStack
1b5ed36· 16 June · +13, −30 - Add some more comments, move things around
fc9e76c· 16 June · +82, −62 - Move functions around into a more sensible order, add more comments
1feb066· 16 June · +40, −27 - Push out the timing code into a separate file
f110b44· 16 June · +51, −36 - Add a comment to photoLibraryDidChange
e312e50· 16 June · +12, −1 - Add a comment about the list of internal identifiers
59a0bb7· 16 June · +24, −10 - remove some unused variables
053eb3e· 16 June · −3 - Fix album info
96175a1· 15 June · +13, −11 - Snap to scroll when we're moving >100 images at a time
0528e53· 15 June · +8, −2 - Push some setState stuff into PhotosLibrary for snappier UI
fd49963· 15 June · +83, −42 - WIP make it faster (but more complicated)
3bba5d9· 15 June · +57, −30 - now data is live, but slow
7859ac3· 15 June · +90, −26 - WIP don't fetch the PHAsset immediately
705bb3a· 15 June · +61, −36 - Track the asset identifiers in the HStack
d7fb0ab· 15 June · +69, −34 - remove an unused import
7495512· 14 June · −1 - auto-increment the build number
13a57d7· 14 June · +30, −6 - Add ⌘← / ⌘→ to jump to the beginning/end of the Photos Library
f3a870a· 14 June · +8 - Implement a basic LRU cache to limit memory usage
777309f· 14 June · +120, −30 - Simplify how the FocusedImage is determined
ca1cb3f· 14 June · +35, −31 - Remove an old variable
c0c4a85· 14 June · −1 - make the thumbnails look less fuzzy
7d79f17· 14 June · +1, −1 - fix the links
ab3b416· 13 June · +3 - less slagging off of Darkroom
d5f339c· 13 June · +4 - let's not slag off Darkroom
b13ec5b· 13 June · −14 - Add the new README
e38ac79· 13 June · +56, −47 - Merge pull request #18 from alexwlchan/remove-dead-code
152cc54· 11 June · +9, −31 - Remove some unused profiling code
9d375d8· 11 June · −14 - Remove some commented-out code in ThumbnailImage
69ceba3· 11 June · +9, −17 - Merge pull request #17 from alexwlchan/tidy-up-event-handler
d6cc5e9· 11 June · +54, −14 - Add some syntactic sugar for looking up state by index
f6262e5· 11 June · +20, −2 - Add some syntactic sugar for looking up assets by index
bea0037· 11 June · +9, −5 - Consume any handled keyDown events
a25e625· 11 June · +25, −7 - bigger icon!
1a15e4b· 11 June · +2 - fix a file association
97ceb71· 11 June · +2, −2 - finish renaming to Blink
426de65· 11 June · +15, −39 - rename to Blink
688d2bb· 11 June · +182, −84 - fix some crappy naming choices
5db1c53· 11 June · +19, −19 - this is really a model class
758e3ec· 11 June · +1, −1 - remember to actually assign this variable!
802aafa· 11 June · +1 - Try to preserve a user's position in the thumbnail list
a7de9be· 11 June · +143, −4 - Add a basic info overlay; right-align info
e4749db· 10 June · +68, −11 - better variable name
698a0e6· 10 June · +2, −2 - remove a bunch of commented-out code
07a2b4c· 10 June · −10 - remove a bunch of dead code
573249e· 10 June · −99 - jump to last unreviewed/random unreviewed
fedef80· 10 June · +20 - include the asset index as debug info
46792a0· 10 June · +2, −1 - allow jumping directly to a photo
e691d0a· 10 June · +3, −1 - mark images as degraded when we switch
049ab13· 10 June · +6, −4 - black
9942539· 10 June · +2 - remove the word 'new' from a bunch of places
d680737· 10 June · +33, −77 - Ensure we pick up changes to album info in AlbumInfoOverlay
57b7720· 10 June · +6, −4 - allow selecting the debug/stats text
2a43d2f· 10 June · +2 - remove a now-unused asset
85a37d4· 10 June · +1, −6 - fix a warning about optional debug info
8fcf9d4· 10 June · +1, −1 - make the icons a different size if the item is selected
1507ae3· 10 June · +15, −10 - Fix the performance issues in PHAssetHStack
f464461· 10 June · +35, −13 - Revert "Revert "don't doubly-create this Collection""
f7c0be6· 10 June · +4, −3 - Revert "don't doubly-create this Collection"
995573a· 10 June · +3, −4 - don't doubly-create this Collection
305a6bf· 10 June · +4, −3 - fetch all the photos
ec9eeb8· 10 June · −2 - Handle the Photos Library auth flow properly
9175fdb· 10 June · +25, −23 - keep the thumbnail list scrolled to the right position
954fda1· 10 June · +17, −7 - remove some old code
9a54a45· 10 June · +1, −218 - keep cranking away at review latency
af7cab6· 10 June · +18, −12 - default showing debug info to false
2f376ec· 10 June · +1, −1 - Get thumbnails working in a non-awful way
322fe4b· 10 June · +65, −45 - make .gitignore happy
7f5afe6· 10 June · +1 - make sure thsi still compiles
855bfa9· 10 June · +1, −1 - Tidy up FavoriteOverlay
68918e0· 10 June · +4, −2 - create a NewThumbnailList view
aab9fad· 10 June · +28, −5 - keep tidying
58a8d78· 10 June · +57, −9 - move album info down a layer
9926d6d· 9 June · +1, −1 - remove some old code
b606c0c· 9 June · +5, −10 - add a loading indicator overlay
c0fd3f4· 9 June · +44 - clean up some old code
035b996· 9 June · +96, −152 - wire up favorite toggling
afd6660· 9 June · +9, −2 - Fix the problem with albums not updating
66d65fe· 9 June · +39, −25 - fiddle with album overlays, allow reviewing again
1d997c8· 9 June · +146, −24 - Sort out FocusedImage and why it works
75a3b5f· 9 June · +43, −46 - make xcode project files happy
d569d3c· 9 June · +20 - add a big image, implement basic back/forth navigation
416432b· 9 June · +66, −1 - start writing a faster path for dealing with updates
8039a1d· 9 June · +24, −1 - Break up all the thumbnail bits
5fda324· 9 June · +189, −29 - get the new hstack working with thumbnails
d7a568b· 9 June · +119, −47 - remove an unnecessary VStack
0b26311· 9 June · +40, −46 - remove a file I never used
cd74515· 9 June · −20 - Make the PHAssetHStack indexes consistent
d39deb5· 9 June · +12, −14 - Create a generic version of the PHAssetHStack
da3a549· 9 June · +120, −13 - Add a preview for PHFetchResultCollection
d1df9b9· 9 June · +40 - Add a preview for DeferredRendering
6f38c6c· 9 June · +10, −1 - Extract and document PHFetchResultCollection
3005f5c· 9 June · +37, −14 - remove some dead code
14e6e30· 9 June · +1, −48 - more debugging
6a55fd7· 9 June · +2, −1 - delete debugging text
68af43a· 9 June · −1 - get indexes working again
ac53bc6· 9 June · +86, −89 - WIP
44bdc1f· 9 June · +71, −68 - reduce diff churn
0d34ad6· 9 June · +10, −10 - reduce diff churn
97888b1· 9 June · +16, −13 - WIP
b299180· 9 June · +31, −41 - try using PHFetchResult
e155f99· 9 June · +93, −49 - We only need to get a PHFetchResult here, don't load into memory
e4fabe6· 9 June · +22, −41 - add a path to update this snappily
90687fa· 9 June · +35, −3 - Cache the list of approved/rejected/needs action assets
2942f9f· 9 June · +33, −34 - Only create a single instance of PhotosLibrary
1d67a77· 9 June · +4, −2 - Add another layer of caching in PHAssetImage
1b0855e· 9 June · +22 - Pass along the deliveryMode
fa2167f· 9 June · +8, −5 - add a note on an edge case
7701214· 9 June · +2, −1 - Don't show the progress indicator for the first second
7547102· 9 June · +41, −12 - Add a spinning indicator for images which are loading
b934093· 9 June · +79, −8 - Handle errors when getting the image; don't crash
f7203b2· 9 June · +5, −1 - actually refresh the assets when possible
562d3fe· 9 June · +1, −1 - add a stats overlay
80e5bcf· 9 June · +80, −14 - jump to last unreviewed
3cca041· 9 June · +11 - remove some unnecessary logging
c4f72ba· 9 June · −1 - try shoving state around
1c965af· 9 June · +32, −15 - We can get the asset for AlbumInfo from PHAssetImage
6b253b0· 9 June · +7, −4 - keep fiddling with PHAssetImage
daa445e· 9 June · +10, −41 - get async images working (kinda)
d9b30e5· 9 June · +74, −3 - add a cross-stitch toggle
eadcc63· 8 June · +10 - sort photos by date
2a8cce4· 8 June · +4, −1 - get toggling working for favouites
b17a278· 8 June · +67, −22 - toggle favorites, kinda
42064a2· 8 June · +5 - allow marking a photo as reviewed
57b22cc· 8 June · +132 - remove an unused file
f1759e5· 8 June · −24 - desaturate rejected images
b85e54a· 8 June · +1 - don't show the names of meta-albums
6a0293e· 8 June · +30, −9 - Add coloured icons to show what review state a photo is in
32918c6· 8 June · +132, −48 - start adding review states
ae1b773· 8 June · +56, −1 - Add a little heart overlay for favorites
3c2551b· 8 June · +12, −12 - Start by scrolling to the end (hacky)
7dd10e9· 8 June · +34, −8 - Merge pull request #8 from alexwlchan/jump-to-image
eb04cac· 8 June · +50, −21 - Add the missing vertical space in the VStack
e9b4ed6· 8 June · +2 - remove a now-completed TODO item
210177d· 8 June · −1 - tidy up the main window
9089602· 8 June · +1, −6 - Pull this view out into a standalone file
2b64a0e· 8 June · +50, −27 - Add a tap gesture to jump to a selected photo
ec40633· 8 June · +3, −1 - Make array index available inside this ForEach
8cd41ac· 8 June · +10, −2 - Merge pull request #7 from alexwlchan/swiftui
8d90f16· 8 June · +1128 - Get thumbnailimage working
bff1a60· 8 June · +67, −100 - fixes, readability
d76b475· 8 June · +4, −6 - move out a couple more bits
ae72f2b· 8 June · +31, −20 - Move out some of the helper functions
5361a64· 8 June · +34, −13 - Add a TODO comment
e6274b4· 8 June · +1 - remove border
65d1f8d· 8 June · −1 - keep fiddling with thumbnails
a8a3eec· 8 June · +10, −7 - do some cleanup
0b97a84· 8 June · +2, −4 - don't put this asset in the app
9c8c59a· 8 June · +2, −9 - update thumbnailImage when you page through
76d9744· 8 June · +2, −2 - get nice square images
42ae8fc· 8 June · +81, −55 - now put thumbnails in the scrollbar
015884c· 8 June · +54, −14 - update the position of thumbnails
b7b2d78· 8 June · +5, −4 - get a scrolling list of images
6231083· 8 June · +86, −45 - Add AlbumInfo and PreviewImage
eaa34f3· 8 June · +97, −65 - render a full-sized image
7be2ee1· 8 June · +101, −13 - ignore a few other bits
e6c1f9f· 8 June · +2, −1 - ignore xcuserdata
be96c87· 8 June · +1 - get all the photo data
9cf55da· 8 June · +37, −7 - Add the basic SwiftUI app
3e6e144· 8 June · +877
May 2023:
- get some fancy corner stuff working
2eb8250· 30 May · +48, −9 - kick off background tasks for thumbnail regen
9cf268a· 25 May · +27, −4 - Optimise the state toggling logic
eaabfa8· 23 May · +46, −9 - add a 'random unreviewed' command
0d3fa13· 22 May · +20 - improve the error handling for conflicting states
120fc6b· 15 May · +15, −3 - add a command to jump to the next unreviewed photo
cd5c2e5· 15 May · +27, −19 - move some of the JavaScript out into a separate file, use a switch
3de7e94· 15 May · +53, −46 - remember to reload after getting new metadata
1588bec· 14 May · +1, −1 - add a button to refresh the metadata
7ad4596· 14 May · +24, −5 - fix a typo
fa8fa66· 14 May · +1, −1 - restructure run_action to minimise db lookups
1ff774a· 14 May · +39, −30 - Don't retrieve the asset unless we're going to use it
6ae8736· 14 May · +2, −2 - make sure 'next unreviewed' actually works!
1563ac9· 14 May · +11, −5 - add an explanation of the video
1af2900· 14 May · +10 - add a brief usage bit
9eacb35· 14 May · +17 - add more readme stuff
e9f071a· 14 May · +40, −2 - add some architecture notes
5f24a25· 14 May · +36 - add some stats
c1e01de· 14 May · +41, −3 - approved, not flagged
3584f96· 14 May · +44, −29 - Update README.md
5710777· 14 May · +6, −2 - start writing the README
f0da2b1· 14 May · +11 - add the screen recording
83bbb6a· 14 May · - get the original filename
9159541· 14 May · +150, −106 - start opening photos.app
18e63ef· 14 May · +6 - add the missing variable
f131afa· 14 May · +1 - WIP
0d39a31· 14 May · +38, −20 - fix a couple of issues
fc5bebc· 13 May · +2, −2 - comment the get_asset_jpeg script
4af2577· 13 May · +103, −84 - remove two unused scripts
42b9cd1· 13 May · −112 - add some explanatory comments
658b66e· 13 May · +83, −37 - add more comments and swift-i-ness
f979de0· 13 May · +67, −63 - remove two unused files; keep tweaking
bc23c7a· 13 May · +4, −133 - wire up the other actions
d8dcb11· 13 May · +229, −203 - switch to actions for flagged
2c52306· 13 May · +53, −109 - start refactoring the actions
19c8508· 13 May · +12, −8 - allow toggling favorite status
0e1eaa6· 13 May · +126, −2 - tidy up code, only interested in images
ac5741b· 13 May · +88, −156 - get flagging/rejecting working
462c2db· 13 May · +26, −35 - get actions working
9786983· 13 May · +394, −25 - get the viewer working
3b652f6· 13 May · +189, −17 - continue fleshing out get_asset_jpeg; add a web server
2779ea2· 13 May · +195, −37 - continue sorting out the scripts I need
12212bb· 12 May · +174, −97 - create some thumbnails
fce131a· 11 May · +41, −7 - get some sort of script working
07ab719· 7 May · +45, −37 - start fleshing out the Swift scripts
4e37d29· 7 May · +101 - Add a script to remove a photo from a photo album
001cb09· 7 May · +65