1.1 Introduction
Built with large media collections in mind, Orbit provides a way to view your entire media collection in a unified grid. Even with 100k+ photo's and video's.
1.2 App Structure
The app contains the following parts:
- Menu Bar: Shows the app logo and name. It also features buttons to minimize and close the application.
- Side Bar: Allows you to navigate between the many views. May contain additional buttons at the bottom (like filtering).
- Views: Filling the space not taken up by the other parts, this displays the currently active view.
- Bottom Bar: Show the total media count, alongside additional information (like Explorer scale).
2.1 Explorer View
The Explorer View consists of a grid, allowing you to browse all your content in a single unified place.
To support large datasets, the grid is an infinite scrolling virtualized grid. 200 items are loaded as you scroll, but the experience remains smooth.
Next to the grid, you will find the Preview Panel. This shows a preview of the selected media and its properties (metadata).
Clicking on the preview photo opens it in full screen. When opened fullscreen, the image may also be zoomed.
The preview panels shows all indexed metadata for that media. If a photo has GPS data, the coordinates will be displayed alongside a small leaflet map.
If you configured your birth date in Settings, the properties will also show your age at the time of taking the photo/video.
You can interact with the grid in the following ways:
CTRL + SCROLL: Change the grid scale (makes items smaller/bigger).
- Single
Left Mouse Click: Select item (will be displayed in the Preview Panel).
- Double
Left Mouse Click: Open item in fullscreen directly.
SHIFT + Left Mouse Click: Open file in your PC's default viewer for that filetype.
CTRL + Left Mouse Click: Add or remove an item from the current selection.
Right Mouse Click: Open the item context menu.
CTRL + A: Select or clear all applicable items.
ESC: Clear the selection or close fullscreen.
SCROLL or ARROW KEYS: Navigate.
T: Assign last used tag to selected item.
When adding media to, or removing media from, a tag, memory, or person, drag across the grid to toggle several items. The Explorer context menu also provides media actions, including tag and person actions.
Use Refresh Metadata from Settings > Media > Tools to re-read selected metadata fields for items you choose in Explorer.
When facial recognition is available, Explorer can show people detected in an image. Open a person's media or face grid from these controls, and inspect face confidence and face quality in the Preview Panel when viewing a person.
Hovering over a grid item will show its filename and date.
2.2 Map View
Shows your photos on an interactive world map. The lower part of the sidebar shows the following buttons:
- Cluster Mode (default): Uses leaflet.markercluster to show all locations as clustered circles. Zooming in will narrow down the locations. Clicking on a cluster while fully zoomed in will reveal all it's locations. Clicking on a red dot (a single photo location) will display it's filename, taken date, device, country (if detected) and altitude (if indexed).
- Heatmap Mode: Shows a heatmap of all locations. Zooming in will adjust the heatmap to whatever is in view.
- Line Mode: Connects all locations with red lines. This creates a path of everywhere you have been. Items that have no altitude, an altitude higher than 1500 meters or have no nearby points are excluded (to avoid flight paths).
- Country Mode: Highlights countries containing geotagged media and shows a panel with the number of items per country. Select a country to focus the map on it.
- Map Filters: Opens the Action Panel to allow you to filter the effective map data.
2.3 Stats View
See interesting statistics about your entire collection.
Overview
- Total Files
- Total Size
- Total Media Per Year
- Total Media Per Month
- Total Media Per Age
- Top 10 Days by Media Count
- By File Type
- By Device
- By Country
Calendar
- Calendar Heatmap
- Longest Streaks
Sources
- First Date, Last Date and Count per device
- First Date, Last Date and Count per source
Charts
- Total Media Per Year
- Total Media Per Month
- Total Media Per Age
- By Device
- By Country
Milestones
Track collection milestones, including achieved and predicted dates. Switch between a table and gallery, and open a milestone's media in Explorer. Screenshots and screen recordings can be excluded from these calculations in Settings.
2.4 Shuffle View
Watch an automatic slideshow of your collection.
Shuffle shows random photos from your library. Via the sidebar you can filter the set of candidates. You may also configure the shuffle interval, metadata visibility, smooth transitions, chronological order, and Ambient Mode.
Images up next are preloaded so you don't have to wait for the image to appear.
The small metadata box in the bottom-right corner, if enabled, shows the filename and date.
2.5 Memories View
Browse automatically curated highlights from your library, or create your own.
Memory types
- All
- On This Day
- Custom
- Years
- Months
- Vacations
- Trips
Custom shows memories created by you. To create a memory, click on the + on the sidebar. You may also edit custom memories using the edit icon on the sidebar.
Each custom memory may have:
You can add media to custom memories in two ways:
- When creating the memory, use the Quick Add form in the 'Add New Memory' popup. This automatically adds files matching your parameters.
- To add to an existing memory, edit the memory and click on the 'Select Media' button. This will take you to the Explorer where you can select items to add or remove.
Orbit automatically generates memories based on your collection. Years and Months are grouped per year/month. Vacations show all your big trips (periods spent outside your home country (based on which country occurs most in your collection), atleast 500 photos). Trips show all trips (same logic as Vacations, but only 10 required photos). Both Vacations and Trips also check which countries were the main focus of the trip.
The All tab shows all memories in a single list. Vacations are not included, as these are a stricter form of Trips.
On This Day groups media taken on the current calendar date in earlier years. You can choose a list or grid layout for memories in Settings.
2.6 Places View
Places organizes geotagged media into Countries, Regions, and Cities. Search within the active level, then select a place to open its media in Explorer.
Place cards can use a random or most-recent thumbnail and show either the item count or last visit. Settings also control naming, chronological visits, sorting, the minimum item count, and whether likely flight locations are excluded.
2.7 People View
People uses optional facial-recognition indexing to group detected faces into people. Use the search box to find a person, select a person to view their media in Explorer, or use CTRL + Left Mouse Click to open that person's face grid.
Use Regroup people after new faces have been indexed or when you want Orbit to apply its current matching rules again. Review possible matches lets you decide whether suggested pairs should be merged, kept separate, or hidden.
The People controls support bulk merging and hiding. A person's context menu can rename, split, hide or unhide, show similar people, and open that person's media in Explorer, Shuffle, or Map. In the face grid, individual faces can be separated from a person.
When viewing a person's media in Explorer, the Person context-menu submenu can show the people detected in an image, add or separate media from the active person, choose a detected face, set an avatar, mark people as not the same person, or hide an item that is not a face. Settings let you show hidden people and set the minimum number of photos required for a person to appear.
2.8 Tags View
Manage and create tags for optimal organisation.
You can create tags using the + button on the sidebar. Each tag allows you to set a name, description and color.
All tags are shown in a table, sorted by last used. The table shows the tag (visualized, text = name and background = color), description, amount of files tagged with it, and action buttons.
The following actions are available for a tag:
- View (in Explorer). You may also view tags in Shuffle or Map by simply filtering on them.
- Add Media. Brings you to Explorer to add or remove items.
- Edit. Allows you to edit the name, description and color of the tag.
- Delete. Permanently deletes the tag.
2.9 Settings View
This view allows you to manage your Orbit settings. These are saved in data/config.json.
User
- Username: Text shown in the app.
- Birthdate: Used to calculate the age shown in media properties and statistics.
Media
- Indexed sources: View each indexed folder, its availability, visibility in the grid, and any drive-letter mapping.
- Add Source: Select another folder to index.
- Remove All: Remove every indexed source and its index data.
- Index New Files: Scan indexed sources for new media.
- Check Status: Refresh the availability status of indexed sources.
- Verify IDs: Check and repair sequential media IDs.
- Verify Thumbnails: Find and generate missing thumbnails.
- Re-detect capture types: Classify media as camera media, screenshots, or screen recordings.
- Cleanup Thumbnails: Remove thumbnail files no longer referenced by the index.
- Clean Up Indexing Data: Remove stale Smart Search, Places, and Text Recognition records.
- Rebuild Facial Recognition: Clear and rebuild facial-recognition indexing data.
- Generate HEIC Thumbnails: Generate thumbnails for HEIC media that are missing them.
- Refresh Metadata: Enter Explorer mode to select media and metadata fields to re-read.
- Remove Mode: Enter Explorer mode to remove selected media from the index.
- Smart Search: Download its optional resource, review indexing status and progress, and pause or resume indexing.
- Places: Download its optional geographic resource, review location-indexing status and progress, and pause or resume indexing.
- Text Recognition: Download its optional OCR resource, review status and progress, and pause or resume indexing.
- Facial Recognition: Download its optional face-model resource, review status and progress, and pause or resume indexing.
Explorer
- Adjust HEIC colors: Improve color accuracy for HEIC photos.
- Hide screenshots and screen recordings: Hide detected screen captures from Explorer.
- Preload HEIC on hover: Decode HEIC media in the background while it is hovered.
- Show thumbnail while full image loads: Keep the thumbnail visible until the full image is ready.
- Unavailable behaviour: Either show an overlay without loading the file, or use its thumbnail.
- Default sort: ID, Name, Date Taken, Date Created, File Size, or Random.
- Preview metadata: Choose the fields shown below media in the Preview Panel.
- Item text: Filename, Date, or None below grid thumbnails.
- No gutters: Remove grid-item spacing when the Grid layout configuration is active.
- Show timeline overlay: Enable the month-and-year timeline scrubber.
- Preset filter: None, contrast, brightness, saturation, inverted, or grayscale variants for displayed media.
Map
- Map style: Default, Dark, or Grayscale.
Stats
- Table style: Dense, Compact, Comfortable, or Tall.
- Exclude screenshots and screen recordings from Milestones: Omit detected screen captures from milestone calculations.
Memories
- Open memories in: Explorer, Shuffle, or Map.
- Memories layout: List or Grid.
Places
- Coordinate selection: Smart or Smallest division; changing it regenerates location data.
- Country names: Name or Code.
- Region names: English name, Local name, or Code.
- Place names: English name or Local name.
- Chronological mode: Show each visit to a place separately.
- Sort places by: Item count, Last visit, Population, or Alphabetical.
- Thumbnails: Random or Last visit.
- Subtitles: Item count or Last visit.
- Minimum item count: Hide places with fewer than the chosen number of media items.
- Exclude flights: Hide media above 9,000 meters from Places.
People
- Show hidden people: Include hidden people in the People view.
- Minimum photos: Set the minimum number of photos required for a person to appear.
Storage
- Open app folder: Open Orbit's installed application folder.
- Open data folder: Open Orbit's local data folder.
- Open resources folder: Open the folder containing downloaded optional resources.
- Create Backup: Choose where to save a ZIP backup containing
config.json and orbit-index.db. Thumbnails and downloaded resources are not included.
- Storage usage: Fetch a breakdown of thumbnails, resources, database categories, database overhead, and row counts.
Controls
Shows all keyboard shortcuts.
General Shortcuts
Explorer Shortcuts
- Show preview:
Left Mouse Button
- Open fullscreen: Double
Left Mouse Button
- Open in default viewer:
SHIFT + Left Mouse Button
- Select or deselect additional items:
CTRL + Left Mouse Button
- Open item context menu:
Right Mouse Button
- Navigate:
SCROLL or ARROW KEYS
- Scale grid:
CTRL + SCROLL
- Jump through dates: click or drag the timeline when enabled
- Select or deselect all applicable items:
CTRL + A
- Toggle several items in Add Media or Remove mode: drag
- Clear selection or close fullscreen:
ESC
- Assign last used tag to selected item:
T
Preview Shortcuts
- Play or pause a selected video:
SPACE
- Zoom a fullscreen image:
SCROLL
- Pan a zoomed fullscreen image: drag
- Reset fullscreen image zoom: Double
Left Mouse Button
People Shortcuts
- View a person's media:
Left Mouse Button
- Open a person's face grid:
CTRL + Left Mouse Button
- Open a person's context menu:
Right Mouse Button
App
- App version
- Theme selection: Cosmic, Midnight, or Glacier
- Button to toggle fullscreen
3.1 Welcome Popup
Shown on first startup (or if you haven't completed it yet). This popup allows you to select folders to index.
3.2 Action Panel
The Action Panel is a control panel that helps you explore, organize, and find your media. It provides different tools for sorting, filtering, searching, and shuffle mode.
Sorting
The sorting options let you control the order in which media is displayed. You can sort by:
- ID: the default internal order.
- Name: alphabetical order.
- Date Taken: when the photo or video was captured.
- Date Created: when the file was created.
- File Size: from smallest to largest (or vice versa).
- Random: a shuffled order.
You can switch between ascending and descending order at any time.
Filtering
Filters help you narrow down your media based on specific properties. Available filters include:
- Year: quickly show media from a specific year.
- Date: select an exact date.
- Date From / To: filter within a date range.
- Device: show media taken on a specific device.
- Filetype: filter by file format (e.g. JPG, PNG, MP4).
- Media Type: separate images and videos.
- Capture Type: filter camera media, screenshots, and screen recordings.
- Lens: filter by the indexed lens model.
- Source: filter by folder or location on disk.
- Tag: show media with a specific tag.
- Country: filter by location where media was captured.
- Age: filter based on age at the time the media was taken (if configured).
Most filters support selecting more than one value. When filtering by tags, choose whether media must match any selected tag or all selected tags.
Search
The search feature allows you to quickly find specific media:
- Name: search by filename.
- Text: search text recognized in images.
- Location: search indexed place names.
- ID: search using the media ID.
- Smart: search using Smart Search, find media via natural language (e.g. “beach sunset” or “dog in snow”).
When using Smart Search, you can fine-tune the results with:
- Min score: controls how closely results must match your search (higher = more precise, fewer results).
- Max results: limits how many results are returned.
Smart Search, Text Search, and Location Search require their respective optional resources to be downloaded from Settings > Media. Text Search also highlights matching recognized text when an image is opened fullscreen. Search results can still be sorted and filtered.
Shuffle Settings
When using shuffle mode, you can customize how media is displayed:
- Shuffle Interval: how long each item is shown (in seconds).
- Hide Metadata: toggle visibility of file details.
- Smooth Transition: enable softer transitions between items.
- Chronological: optionally follow a time-based order instead of random.
- Ambient Mode: dim the surrounding app controls while Shuffle is active.
All changes in the Action Panel are applied instantly, so you can immediately see the effect.
Each section also includes a reset button to quickly return to the default settings.
You can combine sorting, filtering, and searching. Each remains active until you change or reset it.
4.1 Application Initialization
The application uses Electron to bootstrap Orbit. On startup, a splash screen is shown while the main window is prepared. Once the main window is ready, it replaces the splash screen.
- Windows: Splash screen (400x400) and Main Window (full size, resizable)
- DevTools: Toggleable with Ctrl/Command + Shift + I
4.2 Custom Protocol Handling
Orbit registers a custom orbit:// protocol for cached visual assets. orbit://thumbs/<filename> serves thumbnails and orbit://faces/<filename> serves facial-recognition crops from the data directory.
4.3 Local File Server
An Express.js server is started on port 54055 to serve files. Special conversions are applied:
- .heic → JPEG (via
heic-decode)
- .tif/.tiff → JPEG (via
sharp)
- .avi/.wmv/.3gp → MP4 (via
ffmpeg)
- RAW photos → JPEG (via
dcraw)
All other file types are served directly.
4.4 Data Directory and Config
The app maintains a data directory within Electron's per-user application-data location, containing:
orbit-index.db (SQLite database)
config.json (application settings)
thumbnails/ (generated thumbnails)
face-crops/ (cached facial-recognition crops)
Downloadable models and geographic data are stored separately in the sibling resources directory, so application updates do not remove them. Both locations can be opened from Settings.
Default configuration includes user preferences, view settings, indexing state, and pause settings for background services.
4.5 Database Schema
Orbit uses better-sqlite3 for storage. The schema includes:
- files - Stores metadata such as filename, size, timestamps, EXIF info, geolocation, and technical camera data.
- folders - Tracks indexed folders.
- memories - Stores custom memories created by the user.
- tags - Stores tags created by the user.
- embeddings - Stores embeddings generated by CLIP to power Smart Search.
- locations and location metadata - Store reverse-geocoded place data.
- OCR tables - Store recognized text, full-text-search data, and indexing metadata.
- facial-recognition tables - Store face scans, people, assignments, suggestions, and manual decisions.
- removed_files - Stores which files were removed from the index, so they are not reindexed again.
Indexes are created for efficient querying on create_date_local, create_date, filename, size and created.
4.6 File Indexing
Orbit recursively indexes files inside user-selected folders. For each file:
- Metadata is extracted via
exiftool.
- Country lookup performed using GPS coordinates.
- Thumbnails are generated for images (
sharp) and videos (ffmpeg).
- When their optional resources are installed, background services also index Smart Search embeddings, places, recognized text, and faces.
Concurrency is managed with p-limit to balance performance and system load.
4.7 IPC Handlers
The renderer communicates with the main process using IPC. Handlers include:
fetch-files - Query paginated files with filters, search results, and sorting.
get-settings / save-settings - Manage config file.
index-files - Trigger indexing for selected folders.
fix-media-ids - Reassign sequential media_id values.
open-in-default-viewer, select-folders, minimize-app, etc.
- Resource, Places, OCR, facial-recognition, and People handlers - Manage optional resources and their background indexing services.
4.8 HEIC Thumbnail Workflow
Missing HEIC thumbnails are handled through a helper workflow. Orbit does not modify the original HEIC files; it creates JPEG thumbnails only.
- Requirements: Install Python 3, then install
Pillow and pillow-heif with pip install Pillow pillow-heif.
- Generate script: In Settings > Media > Tools > Generate HEIC Thumbnails, choose Get Script & JSON. Orbit creates
generate_heic_thumbs.py and a JSON file listing the media that need thumbnails.
- Run and copy: Run the generated script with Python. It processes files in parallel and writes JPEG thumbnails to its
thumbs/ folder; copy those thumbnails into Orbit's thumbnails/ data folder.
- Apply: Return to the popup and choose Apply to database to link the copied thumbnails to their indexed media.
- Cleanup: Closing or cancelling the popup removes the temporary script and JSON file.
4.9 Metadata Extraction
Orbit extracts technical and photographic metadata using exiftool. All collected metadata fields include:
- File type (image, video, other)
- Capture type classification (camera media, screenshot, or screen recording)
- Device model
- Camera make
- Camera model
- Image width and height
- Orientation
- GPS latitude, longitude, altitude
- Country (derived from GPS coordinates)
- Creation date (DateTimeOriginal / CreateDate)
- Local creation date (Introduced in v1.1, preferred date as it is guaranteed to be the actual media datetime, not affected by timezone differences)
- Lens model
- ISO
- Software used
- Offset time original
- Megapixels (calculated from width × height)
- Exposure time
- Color space
- Flash used
- Aperture (FNumber)
- Focal length
- Focal length in 35mm equivalent
- Filename
- File path
- File size
- File extension
- Folder path
- Creation timestamp (from filesystem)
- Modification timestamp (from filesystem)
- Thumbnail path
- Media ID (unique sequential ID)
4.10 Smart Search
Introduced in v1.2, Smart Search allows you to search for photos based on a description. This semantic search allows you to find photos simply by describing them (e.g. Sunset at the beach).
Orbit uses CLIP to generate embeddings for your photos. These are stored as BLOBs in the embeddings table.
The Smart Search service runs in the background via a worker. This way, the app's performance will not be affected and you can use the app while it is generating.
The service starts when you open the app. It will first retry any previously failed files, before moving on to photos that have yet to be processed.
You can view the status and progress of the Smart Search indexing in Settings > Media > Smart Search
You can use Smart Search even when it has not yet indexed all photos. The query will simply be run on all photos it already has.
Smart Search requires the optional clip-vit-base-patch32 CLIP model resource. Download it from Settings > Media > Smart Search; it is stored separately from the app so updates do not remove it.
4.11 Optional Resources
Smart Search, Places, Text Recognition, and Facial Recognition use optional downloadable resources. This keeps the installer smaller and lets you install only the features you use.
Orbit downloads each resource as an archive, extracts it into a staging directory, verifies that its required files are present, then installs it in the per-user resources/ directory beside Orbit's data/ directory. Resources are outside the application bundle, so app updates do not remove them.
- Smart Search: the CLIP image-and-text model.
- Places: the local geographic database used for reverse geocoding.
- Text Recognition: PaddleOCR models.
- Facial Recognition: InsightFace detection and recognition models.
4.12 Places and Local Geocoding
When the Places resource is installed, a background worker reads GPS coordinates from indexed media and reverse geocodes them using Orbit's local places database. No online geocoding service is queried after the resource has been downloaded.
The worker stores country, region, city, and locality information in location tables in Orbit's SQLite database. The Smart and Smallest division settings select how a matching geographic division is chosen; changing this setting regenerates the location index.
The resulting data powers the Places view, Location Search, place details in the Preview Panel, and location-based filtering. Indexing can be paused and resumed from Settings.
4.13 Text Recognition
Text Recognition uses the optional PaddleOCR models to process indexed images in the background. A worker coordinates the queue while inference runs in a child process, keeping native-model failures from taking down the Electron main process.
For each processed image, Orbit stores recognized text, bounding boxes, confidence information, and the indexing version. It maintains an SQLite full-text-search index for efficient Text Search; matching text can be highlighted when an image is opened fullscreen.
Text Recognition indexing can be paused and resumed from Settings. Files that cannot be read or produce no useful text are still recorded so they do not remain in the queue indefinitely.
4.14 Facial Recognition
Facial Recognition uses optional local InsightFace models to detect faces and create embeddings for indexed images. A background worker manages the SQLite queue and grouping, while model inference runs in a child process.
Orbit stores face bounds, landmarks, detection confidence, recognition quality, embeddings, people, assignments, suggestions, and manual decisions in dedicated SQLite tables. Conservative similarity rules group faces into people and can be reapplied with Regroup people.
Face crops and generated face avatars are cached in data/face-crops/ and served through the orbit://faces/ protocol. The feature can be paused, resumed, or rebuilt from Settings; rebuilding clears its existing facial-recognition index before processing images again.
5.1 Supported filetypes
All files can be indexed, but only the following file types can be viewed:
Images
- .jpg / .jpeg
- .png
- .gif
- .bmp
- .tiff / .tif
- .webp
- .heic
RAW images
- .dng
- .cr2, .nef, .arw, .orf, .rw2, .raw, .raf, .pef, .srw
- .x3f, .kdc, .dcr, .mrw, .erf, .3fr, .mef, .rwl, .iiq
Videos
- .mp4
- .mov
- .avi
- .mkv
- .webm
- .wmv
- .flv
- .3gp
5.2 Colors/Theme
Orbit uses semantic CSS color tokens, so the palette changes with the selected theme rather than being fixed across the app.
- Cosmic: the default dark purple theme.
- Midnight: a dark blue theme.
- Glacier: a light blue-gray theme.
Components refer to a visual role, such as --color-surface-raised or --color-accent, and the selected theme supplies the value. The table below shows the core solid colour tokens. Transparent overlays and gradients are omitted because their appearance depends on the surface beneath them.
| Token | Cosmic | Midnight | Glacier |
| Surfaces |
--color-app-background | #15131a | #101722 | #f4f7fb |
--color-surface-base | #1b1a24 | #16202e | #eef3f8 |
--color-surface-sunken | #100e14 | #0b111a | #e6edf5 |
--color-surface-raised | #1f1d27 | #192535 | #ffffff |
--color-surface-control | #2b272e | #243246 | #ffffff |
--color-surface-selected | #2d2a35 | #26384d | #e0edfb |
| Text and borders |
--color-text-primary | #ffffff | #f4f8ff | #172033 |
--color-text-secondary | #c8c8c8 | #c4d0df | #475569 |
--color-text-muted | #888888 | #8d9aad | #718096 |
--color-border-default | #484050 | #40536b | #c5d1df |
--color-focus-ring | #a89cc2 | #86a6cb | #7192b4 |
| Accent and feedback |
--color-accent | #62597c | #4f78a8 | #54789e |
--color-accent-strong | #c9c1d9 | #bdcee2 | #385a7d |
--color-success | #8ee6a0 | #8cddad | #237b46 |
--color-warning | #ffd577 | #ffcf70 | #996000 |
--color-danger | #ff9a9a | #ffaaa7 | #b83a4b |
--color-info | #9388ae | #7899bd | #54789e |
| Map |
--color-map-country-fill | #7f54b3 | #5798e6 | #78aee8 |
--color-map-country-border | #4e1982 | #3578c8 | #2f72c7 |
--color-map-unvisited-border | #444444 | #52657c | #8b9aac |
--color-map-route | #ff5b5b | #ff7770 | #c7414e |
5.4 Changelog
Below is a detailed changelog for all released versions of Orbit.
v1.3.1
Released 03-10-2026
Fixed video thumbnail generation and corrected file, module, and resource paths in packaged builds, resolving issues introduced in v1.3.
- Fixed video thumbnails not being generated.
- Corrected file and module paths in packaged builds.
- Fixed missing or incorrectly resolved production resources.
v1.3
Released 02-10-2026
Introduced Places, facial recognition with a dedicated People view, OCR-powered text search, and Milestones, alongside multi-select, expanded filtering, new themes and customization options, improved local indexing, and a wide range of Explorer, UI, performance, and stability refinements.
- New Places view with Countries, Regions and Cities tabs, powered by a new locations table
- Facial recognition and a People view with collections per person, naming, and manual face tagging via the context menu
- Text recognition (OCR) with a new "Text" search option
- Local reverse-geocoding using Overture localities data, indexed in a background worker with no internet connection required
- New "Location" search option to search by country, state or city
- Places "Chronological mode": shows places in the order you visited them, split into separate visits
- Places settings: sort places by item count, last visit or population; choose thumbnails and subtitles; set a minimum item count; exclude flights
- New "Milestones" stats tab showing achieved ID milestones with their dates and future milestones with predicted dates, available as a table or a gallery
- New setting to exclude screenshots and screen recordings from Milestones
- New "Ambient Mode" shuffle setting that makes the app fullscreen and dims the rest of the UI
- Multi-select in Explorer, with the context menu working across multiple items
- Multi-select filters instead of one option per filter
- Sort, filter and search can now be combined at the same time
- New capture type detection stored in the database, filled during indexing and via a new "Detect capture types" tool
- New capture type filter
- New setting to hide screenshots and screen recordings from the Explorer grid
- Option to hide individual indexed sources from the grid, saved in your config file
- Sidebar buttons now indicate when a non-default sort, filter or search is active
- Reworked map item tooltip, with a way to view the item in Explorer from the map
- Bottom bar count now reflects the current view
- New themes setting with Cosmic (default), Midnight and Glacier
- New map style setting with Default, Dark and Grayscale options
- New "Preset filter" setting for applying CSS filters to images
- New setting to choose which metadata fields appear in the preview panel
- New setting to show a thumbnail while the full image loads
- New "Unavailable behaviour" setting to choose between overlay or thumbnail for missing items
- Smart Search CLIP model and geocoding database are no longer bundled with the app and are now downloaded in-app on demand
- Ability to pause Smart Search and Location indexing, remembered across restarts
- New "Refresh Metadata" tool to re-collect metadata for existing items without reindexing, with selectable fields
- Backup button to save a ZIP of your user data, with an editable filename and an uncompressed size preview
- Storage settings now show Resources, Places, Text Recognition and Facial Recognition usage, with an improved layout and an "Open resources folder" button
- "Open app directory" and "Open data directory" renamed to "Open app folder" and "Open data folder" and moved under Storage
- Improved Settings with a new Stats tab, a table style option and proper default values for missing config entries
- Improved table styling, including fixed text overflow between columns
- Revamped action panel styling, with matching borders on the timeline pill and sidebar tooltips
- Consistent popups through shared Popup and ConfirmPopup components
- Stats sources cards are now stacked vertically
- Press ESC to deselect an item in Explorer, or to close only the fullscreen view when an item is open
- Press CTRL+A in Explorer to select all items
- Drag-to-select added to Remove Mode
- Added missing shortcuts and controls to the Controls section in Settings
- Improved close button visibility in fullscreen image and video
- Missing individual items now show the Unavailable message in the preview panel instead of loading forever
- Made Memories lists virtualized for better performance
- Improved memory usage
- Fixed "Address already in use" error and blocked second instances to protect data integrity
- Fixed crash during Explorer scroll or timeline scrubbing ("Maximum update depth exceeded")
- Fixed thumbnail generation issues; indexing no longer fails entirely if one thumbnail fails
- Fixed preview panel loading infinitely after changing filters or search and reselecting an item
- Fixed search reset button sometimes not working, including after resetting filters and returning to search
- Fixed changing the search type unnecessarily refreshing the grid
- Fixed timeline still counting screenshots and screen recordings when they are hidden
- Fixed scrolling and selection offset issues with drag-to-select, including when the grid is zoomed
- Fixed drag-to-select triggering while scrubbing the timeline
- Fixed "Requested index 0 is outside of range" error when removing items in Remove Mode
- Fixed "Generate HEIC Thumbnails" tool not recognizing newly indexed files right away
- Fixed context menu overflowing outside the app
- Fixed the View tag not showing the tag as selected in the action panel
- Fixed the Memory popup showing "Add New Memory" when editing an existing memory
- Fixed new videos opening paused in fullscreen after pausing a previous video
v1.2
Released 15-06-2026
Introduced Smart Search with CLIP-powered similarity, an "On This Day" memories tab, timeline overlay for quick navigation, expanded RAW format support, and a wave of Explorer refinements, UI consistency fixes, and performance improvements.
- Smart Search: CLIP-based semantic image search with background indexing and no performance impact; find similar images via context menu using any photo as input
- On This Day: new Memories tab showing auto-generated memories for today across all available years
- Timeline overlay: optional fast scroller with year indicators; hover or scroll to reveal month/year and jump to any point in time
- RAW format support: added .dng, .cr2 (Canon), .nef (Nikon), .arw (Sony), .orf (Olympus), .rw2 (Panasonic), .raf (Fujifilm), .pef (Pentax), .srw (Samsung), .x3f (Sigma), .kdc/.dcr (Kodak), .mrw (Minolta), .erf (Epson), .3fr (Hasselblad), .mef (Mamiya), .rwl (Leica), .iiq (Phase One), .raw (via dcraw); also added .3gp video (transcoded via ffmpeg) and .flv thumbnail support
- Memories layout option: choose between List (default) and Grid layout for the Memories view
- iOS-style mosaic: Explorer scale now goes down to 10% (previously 50%); 30% and below switches to a mosaic layout
- Smooth scale animation: fluid transitions when changing zoom level or loading new items in Explorer
- Storage usage breakdown: Settings now shows per-table storage (Files, Memories, Embeddings, Tags, Removed Files) alongside overall database size, with a visual distribution bar
- Map marker rendering fixed; was attempting to load from an incorrect local path
- CTRL+A in add mode is now additive rather than overwriting the current selection; also fixed CTRL+A not working when the ActionPanel was open
- HEIC color adjustment now applies to Shuffle images as well
- Fixed single-click selection in tag mode not triggering after using drag-to-select
- Fixed memories not reordering correctly when the drag indicator showed a position above the item directly below
- Fixed grid potentially cutting off before the end due to Chromium's maximum height limitation; switched from react-window to react-virtualized
- Fixed years displaying as "2.019" instead of "2019" in the Media Per Year chart
- Fixed app not starting until interacting with the splash screen
- Fixed Shuffle and Stats views taking up full height instead of accounting for the bottom bar, causing slight content clipping
- Fixed spaces not being typeable in the search bar
- Fixed race condition causing stale results to briefly appear when searching or filtering
- Fixed border-region photos (e.g. "LU, DE") not being counted correctly across both countries in stats and filters
- Filename in context menu now truncates with ellipsis instead of wrapping and overlapping the tag menu
- Scrollbar in selection lists made more visible
- Settings labels now use consistent sentence case throughout (previously some used title case)
- Buttons in Settings → App no longer show a text label; icon only
- Grab cursor on memory items now only appears for custom memories, since only those are draggable
- Explorer scrolls to top when applying a new search or filter
- Scroll position resets when opening a memory or tag in Explorer
- Small delay added before fetching initial Explorer items, allowing skeletons to render first
- Grid position now stays stable when changing scale
- Memory thumbnail selection improved to prioritize real camera photos using EXIF data and aspect ratio scoring, reducing screenshots in previews
- Long memory names now handled properly
- Tags now display a subtle border derived from their assigned color
- Tools popup reorganized into two columns, reducing visual density; "Generate HEIC Thumbnails" moved into the Tools popup
- "Reindex All" renamed to "Index New Files" to better reflect its behavior; tool popup now closes automatically when any tool is started
- "Close" button in the HEIC thumbnails popup renamed to "Cancel"
- Map clusters have a refreshed visual style
- App name color in the menu bar updated
- Maximize button added to the menu bar
- Lens filter option added
- Removed altitude check for countries visited in Map View
- Improved handling for long text and added max length to various inputs
- Changed color of add mode selection and drag indicator
- Refreshed styling of input fields, selection lists, and buttons across the app
v1.1
Released 24-02-2026
Introduced Tags, Memories, Shuffle, and a revamped Stats View with charts, alongside a timezone-safe date field, drive letter overrides, improved HEIC performance, and dozens of Explorer and UI refinements.
- Tags: create, edit, assign, and filter by tags with custom name and color
- Memories View: create custom memories with title, description, and color; quickly select photos upon creation
- Memories View: click a memory to open it in Explorer with the relevant photos filtered
- Memories View: edit mode with add/remove photo support, including drag-to-select like Windows Explorer
- Memories View: reorderable memories via drag-and-drop, persisted to database
- Memories View: setting to open memories in Explorer, Shuffle, or Map
- Heatmap Calendar: GitHub-style contributions view showing photo count per day
- Longest Streaks: highlights periods where photos were taken every day
- Shuffle View with smooth transition setting and chronological playback option; spacebar toggles video playback
- Revamped Stats View with Charts tab: line graphs for media per year/month/age, bar graphs for by-device and by-country; date range per folder breakdown; devices listed under Sources
- Map: Countries mode highlights visited countries; map buttons moved to sidebar; improved loading times
- Explorer: item name display options (filename, date, or none); no-gutters option for edge-to-edge grid; remembers scroll position and scale when switching views
- Context menu: add tag, remove item from index (with confirmation), view item in full unfiltered Explorer view
- Added create_date_local field for timezone-accurate datetime handling, fixing issues with media taken while traveling or after changing system timezone
- Age filter and year filter now correctly reset when manually adjusting date range
- Improved fallback logic for date fields: uses earliest of created and modified when create_date is unavailable
- Fix Media IDs now uses create_date with created/modified fallback; two-phase handler prevents unique constraint conflicts
- Tags and memories filters now use IDs instead of names to prevent conflicts with duplicate names
- Entering tag/memory add mode auto-selects already-assigned items and overwrites on confirm, enabling removal as well
- CTRL+A selects all items in current filter while in add mode
- Removing items also removes them from associated tag and memory collections
- Removing a source also clears its items from the removed files list
- Unavailable items can be selected to view metadata, showing a clear unavailability message instead of a broken image
- Manual drive letter override per source: changes apply on-the-fly without touching the database
- Faster HEIC viewing via heic-decode; optional HEIC preload on hover
- Thumbnail cleanup tool: removes orphaned thumbnails not referenced in the database
- Changed location of user data to Appdata/Roaming
- Changed the app logo
- Various UI improvements: tooltip on sidebar items, active Settings tab indicator, focus handling, sidebar scaling on small windows, ActionPanel/Explorer filter sync, quick minimize shortcut (~), fullscreen toggle in Settings
v1.0
Released 02-10-2025
A fully local, read-only photo manager built on Electron with a dark purple interface, featuring a metadata-indexed Explorer, interactive Map View, Stats, and a first-run setup flow with automatic thumbnail generation and EXIF-powered filtering and search.
- Dark purple themed Electron + React app with sidebar navigation (Explorer, Map, Stats, Settings)
- First-run prompt to select folder paths with indexing progress and thumbnail previews
- Metadata indexer: scans selected folders, extracts EXIF data (date, GPS, device, resolution), stores in local SQLite database with incremental indexing on startup
- Thumbnail generator: async generation with local caching at 256×256px
- Infinite scroll thumbnail grid with scaling/zoom support
- Sorting by name, date, and size
- Filtering by date range, device, folder/source, and file type
- Search functionality
- Hover overlay showing filename and date
- Preview Panel: large preview, metadata block, open fullscreen / open in default viewer buttons
- Fullscreen viewer with zoom/pan, arrow key navigation, and HEIC support
- Video thumbnail generation and playback support
- Map View: displays geotagged photos on an interactive map
- Stats View: photo counts and heatmaps
- Folder availability indicator — app remains functional when a source is unavailable
- Bottom bar showing filtered count alongside total when search/filtering is active
- Settings: folder management, thumbnail options, storage usage indicator, re-index option
- Fix IDs and Fix Thumbnails utilities with progress indicators
- Minimize button in menu bar