Releases: lstein/PhotoMapAI
v1.1.0
Release Notes
Welcome to PhotoMapAI, an AI-based image manager. See Features for a quick introduction, Installation to get PhotoMapAI installed on your home computer, and User Guide for usage and configuration.
PhotoMapAI Version 1.1.0
This is a big feature release — the highlight is a much smoother install experience on Macintoshes, Windows machines and Linux boxes. In addition, since the previous 1.0.5 release there are 22 new features and dozens of fixes large and small.
⭐ New install experience
- Signed, double-clickable desktop installer for macOS, Windows, and Linux (#300). No need to install Python, CUDA, or anything else first — on first launch it downloads a private Python plus the AI libraries, starts the server, and opens your browser automatically. Later launches start in seconds.
- Reliable first-run setup, everywhere. The launcher installs its private Python and required libraries, avoiding interfering with other software installed on the machine.
- GPU "just works": an NVIDIA GPU is detected and used automatically. You no longer need to install the CUDA Toolkit — only a recent NVIDIA driver. Apple Silicon acceleration is automatic too.
- Python 3.14 support (#258).
🗺️ Semantic map (UMAP)
- Automatic cluster labeling — clusters are now named by content (#234).
- Per-image tags in the hover popup (#262).
- Album switcher built into the semantic-map titlebar (#287).
- Smooth zoom everywhere: custom scroll-wheel and pinch-to-zoom that work across all browsers, including Safari and iOS touch (#312).
🔎 Search & discovery
- In-app Back button + browser back/forward for navigating your slide history (#241).
- Encoder model download progress is now displayed in the album UI during indexing (#308).
- Platform-aware default encoder for new albums (#307).
- Broader auto-tagging vocabulary, with an opt-out toggle (#251).
- Search and other server errors now appear as toast notifications instead of failing silently (#278, #288).
🖼️ Slideshow
- Smarter end-of-show behavior: sequential mode stops cleanly on the last slide (with the play button grayed out), while shuffle mode reshuffles endlessly (#293, #296).
- Shuffle autoplay stays alive through long runs and buffer rebuilds (#297, #313).
🎯 Curation
- Grid view plus an automatic UMAP on completion, and a ~200× speedup in BLOCKS curation (#281).
🏷️ Metadata
- EXIF drawer now shows DateTimeOriginal, Orientation, and image dimensions (#279).
- Clickable reference-image thumbnails in the metadata drawer (#238).
- Better handling of InvokeAI v5 metadata and assorted format edge cases (#267, #268).
⚙️ Preferences & quality of life
- Per-device, server-side UI preferences — your layout choices persist per device (#284).
- Move to Trash / Recycle Bin option for image deletion, instead of permanent removal (#273).
- An update badge on the About button when a newer version is available (#280).
- Cached reverse-geocoding for faster GPS location lookups (#272).
🔒 Notable fixes
- Closed XSS, path-traversal, and partial-write security risks (#242).
- Resolved indexing/concurrency race conditions and VRAM-release issues (#243, #271).
- Numerous UI leak and stability fixes across the slideshow, curation, and grid views.
- In-app "Update" now works for launcher installs (#327). Installs created by the desktop launcher run in a pip-less environment, so the About → Update button previously failed; it now upgrades via
uvinstead.
Plus internal refactors, CI repairs, and frontend cleanups under the hood.
Upgrading from the 1.0.6rc1 pre-release? If you installed an
rcbuild with
the desktop launcher, the in-app Update button may fail with
No module named pip(that older build predates the fix in #327). To get onto
1.1.0, just re-run the PhotoMapAI launcher with--reinstall— it reinstalls
the latest release cleanly. After that, the in-app Update button works normally.
Stable installs (1.0.5 and earlier) are unaffected and can update in place.
For the full commit-level history, see the GitHub releasespage.
New Contributors
- @Hank0101Chen made their first contribution in #291
Full Changelog: v1.0.5...v1.1.0
v1.0.6rc1
This is a pre-release issued in order to test the new installer and launcher interface. Full release notes will be posted after full testing. Installers for the three major operating systems can be found at the bottom of this page:
| Operating System | Installer |
|---|---|
| Windows | PhotoMapAI-1.0.6rc1-setup.exe |
| MacOS | PhotoMapAI-1.0.6rc1.dmg |
| Linux | PhotoMapAI-1.0.6rc1-x86_64.AppImage |
What's Changed
- Fix artifact upload: create archives before uploading to GitHub Release by @Copilot in #215
- refactor(metadata): finish wiring invoke formatter to pydantic union by @lstein in #216
- feat: support InvokeAI authentication by @lstein in #217
- fix(metadata): handle unknown InvokeAI metadata fields by @lstein in #218
- feat: Improve umap window size and position by @lstein in #219
- feat(invoke): "Use as Ref Image" button + resilient auth fallback by @lstein in #220
- feat(invoke): show "Use as Ref Image" button for any image when InvokeAI is configured by @lstein in #221
- feat(invoke): add image-board selector for reference uploads by @lstein in #222
- feat(invoke): reuse existing InvokeAI images instead of re-uploading by @lstein in #223
- fix(security): close three HIGH-severity API issues by @lstein in #224
- docs: add InvokeAI Integration user guide page by @lstein in #225
- feat: pluggable image/text encoder layer with OpenCLIP and SigLIP backends by @lstein in #226
- feat: offload idle encoder from VRAM to RAM after configurable timeout by @lstein in #227
- fix(frontend): suppress slide animation when entering grid view by @lstein in #228
- fix(frontend): rebuild swiper after single-image delete by @lstein in #229
- feat(frontend): add wrap-around navigation setting by @lstein in #230
- feat(frontend): show spinner during album switch by @lstein in #231
- bump version to 1.05 by @lstein in #232
- fix(ci): repair v1.0.5 release artifact pipeline by @lstein in #233
- feat: cluster auto-labeling for UMAP by @lstein in #234
- chore(libs): unpin torch by @lstein in #235
- fix(cluster-labels): invalidate vocab cache when phrase set changes by @lstein in #236
- Polish metadata drawer and UMAP cluster hover popup by @lstein in #237
- fix(frontend): smooth metadata drawer by @lstein in #239
- feat(metadata-drawer): clickable thumbnails for in-album reference images by @lstein in #238
- chore(ci): enhance claude.md instructions by @lstein in #240
- feat(back-nav): in-app Back button + browser back/forward for slide history by @lstein in #241
- fix(security): close XSS, path-traversal, and partial-write risks by @lstein in #242
- fix(concurrency): close race conditions from code review by @lstein in #243
- chore(dedupe): collapse low-risk redundancies from code review by @lstein in #244
- chore(ci): add claude workflow by @lstein in #248
- chore(ci): use CLAUDE_CODE_OAUTH_TOKEN for claude-code-action by @lstein in #249
- fix: Export Dataset button reports "undefined files" and does not export by @lstein in #250
- feat(autotag): broaden vocab and add opt-out toggle by @lstein in #251
- fix(albums): index freshly-added album when dir has a stale photomap_index by @lstein in #247
- refactor(embeddings): unify update_index sync/async via shared helpers by @lstein in #246
- fix(umap): preserve cluster id 0 in landmark hover/click by @lstein in #252
- refactor(state): generate persisted setters from a single spec table by @lstein in #253
- refactor(frontend): add fetchJson helper and roll it into the JSON sites by @lstein in #254
- refactor(frontend): unify drag handlers behind a single makeDraggable helper by @lstein in #255
- refactor(touch): extract attachLongPress helper by @lstein in #256
- refactor(encoders): hoist close() and device detection to the base class by @lstein in #257
- refactor(events): consolidate arrow-key slideshow-pause into events.js by @lstein in #259
- refactor(metadata): replace InvokeMetadataView isinstance ladders with strategies by @lstein in #260
- refactor(routers): switch validate / lock / embeddings trio to FastAPI Depends by @lstein in #261
- feat(umap): show per-image tags in hover popup by @lstein in #262
- feat: add Python 3.14 support by @lstein in #258
- fix(metadata): harden discriminator heuristics, iTXt chunks, scalar fallback by @lstein in #268
- fix(invoke5): warn on unknown v5 fields without breaking parsing by @lstein in #267
- fix(frontend): listener / interval leaks in weight-slider, curation, grid-view by @lstein in #266
- fix(backend): thumbnail collisions, cancellable indexing, assert hardening by @lstein in #265
- fix(bookmarks): adjust indices on image delete and surface quota errors by @lstein in #264
- fix(caches): bound _curation_results and add npz mtime to image-label key by @lstein in #263
- fix(indexing): gate image indexing on pixel dimensions, not file bytes by @lstein in #269
- chore(ci): update claude instructions by @lstein in #270
- fix(cluster-labels): single-flight guard for vocab cache builds by @lstein in #274
- fix(umap): respect album_config.umap_eps in /umap_data and /cluster_labels by @lstein in #277
- fix(exif): cache LocationIQ reverse-geocode lookups by rounded coords by @lstein in #272
- fix(embeddings,cli): case-insensitive path diff, VRAM release, broken CLI kwarg by @lstein in #271
- feat(exif): show DateTimeOriginal, Orientation, and Exif image dimensions by @lstein in #279
- fix(spinner): ref-count showSpinner / hideSpinner so concurrent ops don't fight by @lstein in #275
- chore: purge dead code identified in the 2026-05-20 review by @lstein in #276
- feat(about): starburst badge on About button when a new version is available by @lstein in #280
- feat(search): surface server errors via a toast UI instead of failing silently by @lstein in #278
- feat(curation): grid view + UMAP on completion, and ~200x BLOCKS speedup by @lstein in #281
- feat: add Move to Trash/Recycle Bin option for image deletion by @lstein in #273
- fix(frontend): live-refresh back-nav flyout + misc UI tweaks by @lstein in #282
- fix(swiper): duplicate current image when toggling grid → swiper by @lstein in #283
- feat(preferences): per-device server-side UI preferences by @lstein in #284
- feat(frontend): toast users on slow autotagging vocab build by @lstein in #288
- feat(umap): album pulldown in semantic-map titlebar by @lstein in #287
- test(delete_image): pin move_to_trash=False; add Py3.14 to CI matrix by @lstein in #286
- Docs: 1.06 update by @lstein in #289
- fix(umap): keep close button visible at small/medium window sizes by @lstein in #290
- Add Traditional Chinese README by @Hank0101Chen in #291
- fix(umap): increase threshold to 5000 for switching from random walk to closest ordering by @lstein in #292
- fix(slideshow): stop on last slide in linear mode; reshuffle endlessly in shuffl...
v1.0.5
PhotoMapAI v1.0.5
This version adds the following significant features:
- The option to select among three image/text encoders that have different levels of speed and accuracy. See Encoders
- Integration with the InvokeAI image generation package, allowing you to create albums from InvokeAI image collections, send previously-generated images to a running InvokeAI backend to recall and remix them, and to use an arbitrary image as an InvokeAI reference image. See InvokeAI Integration.
- Reorganized Settings dialogue, with the ability to control whether search results wrap around or not.
In addition, there are a number of internal bug fixes, performance enhancements, and security patches. See the next section for details.
Installation
For current users, you may do an online upgrade to this version from the About dialogue. Click on the "?" icon to start.
New users see the Installation Guide for a variety of install methods. Executable installers for CPU-only systems can be found at the bottom of this page. Additional installers for Windows and Linux users who have GPU cards can be found here
What's Changed
- Fix artifact upload: create archives before uploading to GitHub Release by @Copilot in #215
- refactor(metadata): finish wiring invoke formatter to pydantic union by @lstein in #216
- feat: support InvokeAI authentication by @lstein in #217
- fix(metadata): handle unknown InvokeAI metadata fields by @lstein in #218
- feat: Improve umap window size and position by @lstein in #219
- feat(invoke): "Use as Ref Image" button + resilient auth fallback by @lstein in #220
- feat(invoke): show "Use as Ref Image" button for any image when InvokeAI is configured by @lstein in #221
- feat(invoke): add image-board selector for reference uploads by @lstein in #222
- feat(invoke): reuse existing InvokeAI images instead of re-uploading by @lstein in #223
- fix(security): close three HIGH-severity API issues by @lstein in #224
- docs: add InvokeAI Integration user guide page by @lstein in #225
- feat: pluggable image/text encoder layer with OpenCLIP and SigLIP backends by @lstein in #226
- feat: offload idle encoder from VRAM to RAM after configurable timeout by @lstein in #227
- fix(frontend): suppress slide animation when entering grid view by @lstein in #228
- fix(frontend): rebuild swiper after single-image delete by @lstein in #229
- feat(frontend): add wrap-around navigation setting by @lstein in #230
- feat(frontend): show spinner during album switch by @lstein in #231
Full Changelog: v1.0.4...v1.0.5
v1.0.4
This is a bugfix release which addresses two issues:
- PhotoMapAI is not compatible with older versions of Microsoft IE and Edge. We now detect incompatible versions and put up a warning message with instructions on upgrading.
- When clicking on the "Update Index" button in the album management UI, there was no immediate feedback causing users to click multiple times. This is now fixed.
Installation
See Installation for full instructions. Prebuilt binaries with accelerated GPU support can be downloaded from here.
What's Changed
- Fix app broken on Windows due to IE Compatibility Mode by @Copilot in #211
- Show "Update Pending..." immediately when index button is clicked by @Copilot in #213
- Chore: version bump to 1.0.4 by @lstein in #214
Full Changelog: v1.0.3...v1.0.4
v1.0.3
PhotoMap Version 1.0.3
This is a small bugfix release that fixes some aesthetic issues and stops a crash when reading the metadata on some recent InvokeAI-generated images.
Many thanks to @green-s for providing a fix to a bug that prevented PhotoMap from starting up properly when run in a conda environment.
What's Changed
- Add Copilot instructions for repository context by @Copilot in #193
- Show spinner during UMAP cluster selection by @Copilot in #197
- Start server via module argument instead of script path by @green-s in #195
- chore: update deploy actions by @lstein in #190
- chore: bump version by @lstein in #201
- Add linting infrastructure with Ruff, ESLint, and Prettier by @Copilot in #199
- chore: fix version string by @lstein in #202
- Fix UMAP spinner not appearing during cluster click operations by @Copilot in #204
- Bugfix(backend): prevent crash on some invokeai metadata formats by @lstein in #205
- chore: version bump by @lstein in #206
New Contributors
Full Changelog: v1.0.2...v1.0.3
v1.0.2
This release adds a couple small features and corrects several bugs.
Feature: Album Locking
This version introduces a new command line option, --album-locked which accepts one or more album keys separated by spaces. If this option is present, PhotoMapAI will only allow the user to select one of the listed albums. All functions that modify the filesystem, including changing albums, deleting images, and moving images around, are disabled. Use this to give your friends and family access to some, but not all, of your configured albums.
Feature: Display InvokeAI Workflow Metadata
This version now displays metadata added to images by InvokeAI workflows.
Bug Fixes
- Deleted bookmarked images no longer persist in the grid view.
Installation
See Installation for full instructions. Prebuilt binaries with accelerated GPU support can be downloaded from here.
What's Changed
- (chore) fix artifact upload step (again) by @lstein in #183
- (enhancement) detect and handle metadata generated by Invoke workflows by @lstein in #186
- Allow multiple albums in --album-locked option by @Copilot in #185
- Fix deleted bookmarked images remaining visible in grid view due to browser caching by @Copilot in #188
- chore: bump version by @lstein in #189
Full Changelog: v1.0.1...v1.0.2
v1.0.1
This is a bugfix release to address a number of small issues in 1.0.0. The 1.0.0 release notes are reproduced here:
What's New
This release of PhotoMapAI adds many new features, bug fixes, and performance enhancers.
Image Dataset Curation
A completely new image curation panel was contributed by @NMWave. This feature is designed to assist in curating images for use in AI generation and classification models. This mode automates the selection and maintenance of a balanced and diverse set of training images. See Dataset Curation for more information.
Bookmarks
You can now "star" an image and add it to your favorites. You can then filter on favorites, download a zip file archive, move the favorites to a new folder, or delete them en masse.
Slideshow modes
You can now easily select whether the slideshow shows images chronologically or in shuffled order. Simply right click on the slideshow button (on desktops) or long press (on tablets) to choose which mode is active.
More Semantic Map options
You can now control whether the semantic map minimizes itself when selecting a cluster, and conveniently show, hide and clear highlighted images. In addition, the map navigation icon menu has been reorganized to make it more easily accessed on tablets.
Grid View bugs fixed
Multiple strange behaviors in the grid view, including unexpected backwards navigation, loading slowness, and misordered images have now been fixed. Performance is improved as well.
Enhanced cluster display and navigation options
The currently-selected image's cluster is now shown in the metadata panel. Clicking on the cluster name will select other images in the same cluster. In addition, the cluster name and size are shown in the thumbnails that appear when you hover over a point in the semantic map.
Better metadata support for InvokeAI
The metadata display panel has been updated to support images generated by legacy versions of the fantastic InvokeAI generative AI image creation package.
Improved album management
The Album Manager now appears instantly when you click its button in the Settings panel. It also adds a "Back" button to return to Settings when desired. In addition, the user interface for the directory browser has been cleaned up to be more intuitive and responsive.
Installation
There are several ways of installing this application. Please see Installation Instructions as a guide.
If you choose to install an executable bundle, you'll find CPU-only executables under Assets below. The GPU-accelerated versions can be found here: PhotoMapAI v.1.0.1 Executables
What's Changed since 1.0.0
- (docs) fix command-line example for docker by @lstein in #164
- Implement album-lock restrictions for filesystem operations by @Copilot in #166
- Fix cluster badge not updating in metadata panel for both swiper and grid views by @Copilot in #168
- Add single image selection mode to UMAP window by @Copilot in #170
- Redesign fileNameBanner with distinct draggable titlebar by @Copilot in #172
- Increase UMAP fullscreen controlsHeight to prevent overlap with bottom panels by @Copilot in #174
- Fix umap fullscreen exit when click-to-navigate is active by @Copilot in #176
- Add Export action to Bookmarks menu with directory picker improvements by @Copilot in #180
- Free CUDA VRAM after search and indexing operations by @Copilot in #178
- (chore) bump version number & update README by @lstein in #181
- (chore) do not attempt to upload the CUDA installers; they are too large by @lstein in #182
Full Changelog: v1.0.0...v1.0.1
v1.0.0
What's New
This release of PhotoMapAI adds many new features, bug fixes, and performance enhancers.
Image Dataset Curation
A completely new image curation panel was contributed by @NMWave. This feature is designed to assist in curating images for use in AI generation and classification models. This mode automates the selection and maintenance of a balanced and diverse set of training images. See Dataset Curation for more information.
Bookmarks
You can now "star" an image and add it to your favorites. You can then filter on favorites, download a zip file archive, move the favorites to a new folder, or delete them en masse.
Slideshow modes
You can now easily select whether the slideshow shows images chronologically or in shuffled order. Simply right click on the slideshow button (on desktops) or long press (on tablets) to choose which mode is active.
More Semantic Map options
You can now control whether the semantic map minimizes itself when selecting a cluster, and conveniently show, hide and clear highlighted images. In addition, the map navigation icon menu has been reorganized to make it more easily accessed on tablets.
Grid View bugs fixed
Multiple strange behaviors in the grid view, including unexpected backwards navigation, loading slowness, and misordered images have now been fixed. Performance is improved as well.
Enhanced cluster display and navigation options
The currently-selected image's cluster is now shown in the metadata panel. Clicking on the cluster name will select other images in the same cluster. In addition, the cluster name and size are shown in the thumbnails that appear when you hover over a point in the semantic map.
Better metadata support for InvokeAI
The metadata display panel has been updated to support images generated by legacy versions of the fantastic InvokeAI generative AI image creation package.
Improved album management
The Album Manager now appears instantly when you click its button in the Settings panel. It also adds a "Back" button to return to Settings when desired. In addition, the user interface for the directory browser has been cleaned up to be more intuitive and responsive.
Installation
There are several ways of installing this application. Please see Installation Instructions as a guide.
If you choose to install an executable bundle, you'll find CPU-only executables under Assets below. The GPU-accelerated versions can be found here: PhotoMapAI v.1.0.0 Executables
Comprehensive list of what's changed
- (bugfix) handle ref image data nested under "original" by @lstein in #114
- Refactor JavaScript event handlers: consolidate component-specific events and remove eventRegistry by @Copilot in #113
- (feature) When slideshow reaches end, wrap around to beginning by @lstein in #116
- Add JavaScript frontend unit tests with Jest by @Copilot in #118
- (chore) fix the deploy script so that docker-deploy gets secrets by @lstein in #119
- Fix race condition when switching from swiper to grid mode by @Copilot in #123
- Fix shuffle mode slideshow direction reversal and slide repetition by @Copilot in #125
- Fix race condition causing retrograde motion when paging grid-view forward by @Copilot in #127
- Feature: Add image bookmarks with persistent storage and batch actions by @Copilot in #129
- Document the new bookmarks feature by @Copilot in #131
- Move favorites star into ScoreDisplay and reposition seek-slider by @Copilot in #133
- Show slide position in seek-slider yellow strip by @Copilot in #135
- Allow grid-view to scroll while images are loading by @Copilot in #137
- (feature) remove the save to image icon from the plotly menu by @lstein in #140
- Add back navigation and eliminate dialog delay in Album Manager by @Copilot in #139
- Enhance UMAP search result highlighting with larger markers, white borders, and persistent settings by @Copilot in #143
- Fix seek slider thumb position on first display by @Copilot in #145
- Fix localStorage loss and UMAP marker disappearance on iOS/iPad by @Copilot in #147
- Add cluster size to hover thumbnails and metadata window by @Copilot in #149
- Add move images to different folder functionality with create folder support and smart album integration by @Copilot in #151
- Add Dataset Curation Tools (FPS & K-Means) for LoRA Training (#141) by @NMWave and @lstein in #152
- Add touch event support for curator panel dragging by @Copilot in #158
- Fix Album Manager button: missing imports, width overflow, and restore PR #139 features by @Copilot in #156
- Fix metadata panel drag lag by using delta-based positioning by @Copilot in #162
- Add comprehensive test coverage for curation panel functionality by @Copilot in #160
- Bump version to 1.0.0 by @lstein in #163
Full Changelog: v0.9.6...v1.0.0
v0.9.6
What's Changed
- [release] Revert to using API token, not trusted publisher by @lstein in #104
- [feature] Modify slideshow button to toggle between chronological mode and random mode. by @lstein in #105
- Update docs to describe slideshow button mode shifting by @lstein in #106
- [feature] user settable search parameters by @lstein in #107
- (bugfix) restore behavior of iPad image menu on long touch by @lstein in #108
- (docs) add information on the search sensitivity settings by @lstein in #109
- (bugfix) pause running slideshow when shifting from random<->sequential by @lstein in #110
Full Changelog: v0.9.5...v0.9.6
Installation
There are several ways of installing this application. Please see Installation Instructions as a guide.
If you choose to install an executable bundle, you'll find CPU-only executables under Assets below. The GPU-accelerated versions can be found here: PhotoMapAI v.0.9.6 Executables
v0.9.5
This version of PhotoMapAI adds numerous bugfixes, performance enhancements, code cleanups, and minor feature additions. In particular, there should be far fewer glitches when using the grid view.
Installation
Please see Installation for various ways to install the application. You can install from source code, via PyPi, with a Docker image, or as a one-click executable.
New Features
- Inline upgrade. The "About" dialog box now offers the option to update to the latest version.
- Rotation and sceen size changes. The UI now adapts gracefully to changes in the browser window size and/or screen orientation changes.
- Semantic map landmarks. The landmarks stay activated at all semantic map window sizes unless the user turns them off explicitly. In addition, clicking on a landmark will now reliably select and load its cluster into the viewer.
What's Changed
- [Deploy] Put the artifact upload step into its own action file by @lstein in #87
- [Deploy] Refactor upload artifacts by @lstein in #88
- bump version to 0.9.5 by @lstein in #89
- [docker] Add command-line option to disable inline version upgrading by @lstein in #90
- [Refactor] Separate swiper and gridview elements by @lstein in #91
- [bugfix] add logic to handle rotation events that occur when grid view not active by @lstein in #92
- [Bugfix] Fix grid thumbnail resize and off-by-one error in grid page by @lstein in #93
- [Bugfix] Fix imagesearch in grid mode by @lstein in #94
- [bugfix] Prevent zooming on image double-tap on ios by @lstein in #95
- [bugfix] Fix seek slide css so that it spans viewport correctly by @lstein in #96
- [bugfix] Stop image not found errors when seeking to end of slide deck by @lstein in #97
- Tweak umap display checkboxes. by @lstein in #98
- [feature] Add timestamps to both internal log entries and uvicorn's by @lstein in #99
- [bugfix] prevent TypeError: undefined attribute error during gridView resetAllSlides by @lstein in #100
- [refactor] Simplify batch loading by @lstein in #101
- [bugfix] Prevent navigation buttons fighting over the same swiper by @lstein in #102
- [refactor] Remove redundant calls to get slide element index by @lstein in #103
Full Changelog: v0.9.4...v0.9.5