← RootMap

What's new

Last updated: 21 October 2026

User-facing release notes, newest first.

2026.10

  • Photo previews on the map work again — hovering or clicking a pin showed "Preview unavailable" for every photo.
  • The map keeps up when you pan and zoom quickly — a slow answer for a view you had already left could replace the pins for where you are now. Opening a pin's popup loads only that photo, not every photo on screen.
  • Add Photos keeps your place — deleting a photo from a folder preview, or finishing a scan, no longer collapses the folder tree back to the drives. Large photos (over 4 MB) show in the preview instead of a blank tile, and the window stays responsive while the folder loads.
  • You can keep using the app while a scan runs — listing the folder's files and saving the results now happen in the background, which matters most on slow iCloud and OneDrive folders.
  • Deleting photos — a photo that can't go to the Recycle Bin (locked, or on a drive without one) stays in your library and you're told how many were skipped, instead of disappearing from the list. Deleting a lot of photos no longer freezes the window.
  • Big group photos aren't skipped by face detection — a slow PC could take longer than the 15-second limit on a photo with dozens of faces, and after three tries the photo was skipped for good. The limit now only applies while nothing is happening.
  • Closing RootMap is quicker while face detection is still starting up.
  • Re-checking photos after a detector upgrade no longer leaves behind empty people or counts photos twice.
  • Changing the face detection Speed takes effect right away, not on the next run.
  • Search for people and tags ignores accents and letter case in every language — "zoe" finds "Zoë", and "ZOË" is recognised as a name already in use.
  • Copying a person's photos to a folder again doesn't make extra copies (IMG_0001_2.jpg, _3, ...) when two photos share a file name.
  • "Copied!" only shows when the copy worked; if another app is holding the clipboard, RootMap says so.
  • GPS positions south of the equator or west of Greenwich are read correctly from cameras that write the hemisphere in lower case.
  • The map shows streets in dark mode again, and Hybrid place names are back. One of the free map providers started requiring an account and covered both with "API key required" tiles; RootMap now uses providers that don't.
  • Timeline month labels are readable on every shade of green, in light and dark mode.

2026.9

Map

  • The map opens on your photos — the first time it fits everything you've photographed (not the middle of the USA), and after that it opens where you left it.
  • See photos without drawing anything — with no circle drawn, the panel beside the map lists the photos in the part of the map you're looking at. Draw a circle to narrow it down; Esc clears the circle.
  • Export and Tag say how many — "Export 243", "Tag 243". After an export, Open folder takes you there.
  • Numbered bubbles explain themselves — hover for the photo count and dates; click to zoom in; right-click to list those photos.
  • Date shortcuts for past trips — This year, Last year, and your most recent years with photos.
  • Scale bar in kilometres and miles, and circle distances use your region's units.
  • The map recovers if its browser component crashes, and E / T / Esc work after clicking the map.

Library & viewer

  • Select several photos (Ctrl/Shift+click, Ctrl+A) to export, tag, show on the map or delete them together. Double-click opens a photo.
  • Export and Tag from the Library cover every matching photo, not just the page on screen — RootMap asks first and shows the count.
  • Viewing someone's photos shows "👤 Name · N photos" with Show on map, Copy to folder, Tag all, and ✕ to go back.
  • Photo viewer: portrait photos are the right way up, HEIC photos display, a missing file says so instead of showing the previous photo, and you can see who's in the photo and its tags. New keys: F full screen, S slideshow, T tag, Del delete, ? shortcuts.
  • Library search ignores case and has a clear button.
  • Older JPEGs get thumbnails again; files nothing can read show "No preview" instead of being retried on every launch.

People (was Faces)

  • Face detection finds faces again — since the September helper update, every photo with a face timed out and was recorded as having nobody in it. Those photos are put back in the queue automatically; the next Detect Faces run picks them up.
  • The Faces tab is now People, next to Library.
  • Renaming someone to a name already in use offers to merge them. Unnamed people show Add name; F2 renames; Who's this? lists unnamed people with the most photos first.
  • Deleted people can be restored (Deleted people → right-click → Restore). Dragging one person onto another asks before merging.
  • Face detection resumes by itself if RootMap closed mid-run. Pause is quicker, Resume always works, and closing the app no longer marks good photos as permanently skipped.
  • Small faces in big group photos are found again, and accepting a chain of duplicate suggestions no longer hides photos.
  • Online-only OneDrive/Dropbox photos — People tells you how many were skipped and how to fix it.

Scanning & folders

  • Cancel Scan stops the whole scan, keeping what's already done. Re-scans and Sync no longer open files already in your library (so online-only files aren't downloaded).
  • Sync keeps tags and people for photos you moved to another folder in your library, and never removes photos from a folder it can't read.
  • Folder exclusions are no longer lost when you apply other changes, and the Apply Exclusions button actually appears.
  • Suggested folders — Add Photos offers OneDrive, iCloud, Dropbox Camera Uploads and camera cards you haven't added. Optional: check for new photos at startup.
  • The folder tree always has room, and no longer freezes when a network drive is disconnected.
  • Export shows progress, can be cancelled, skips files already in the destination and explains failures.
  • Long jobs show roughly how long is left.

Look & feel

  • Dark mode everywhere — date pickers, menus, scrollbars, radio buttons, Help search results, the Timeline and dialogs follow the theme. Search boxes show their hints again.
  • Sharp app icon at every size (it was a single blurry 16px image).
  • RootMap remembers its window size and position, asks before closing mid-scan or mid-export, and a second launch brings the open window forward.
  • Settings opens from the gear (Ctrl+,); Interface size moved there. Speed settings use the same names everywhere: Gentle / Balanced / Fast.
  • Help pages render numbered steps, code and links properly.

Privacy & reliability

  • "Include recent app log" is respected — unticked, no log is sent with a support ticket; ticked, your Windows user name is removed first. Crash reports no longer contain file paths.
  • Place names in the viewer work on every PC (they broke with non-English number formats) and respect OpenStreetMap's rate limit.
  • A briefly locked settings file no longer resets your preferences, and a database that can't be upgraded is explained instead of showing an empty library.
  • Tag names ignore case; auto-tags no longer merge into your own tag of the same name. Videos no longer land in 1970.

Earlier in 2026.9

  • Face detection shows a rough time left — after a short warm-up, Faces status (and Activity) estimate remaining time from this run’s average speed (~minutes / hours / days). Large libraries can still take overnight; the number is guidance, not a promise.
  • Faces CPU presets actually use the machine — Background / Balanced / Full Speed target roughly 25% / 50% / 80% CPU via isolated helpers (Full Speed leaves headroom). Takes effect on the next Detect Faces run.
  • Renamed people stay findable after auto-merge — merging a named person into a "Person N" duplicate used to keep the generic name, so Find a person… showed nothing. The user’s name is kept (and named people are preferred as the merge survivor).
  • A helper timeout no longer wipes faces — one slow/crashed photo used to clear that photo’s people and mark it done. Transient helper failures now retry; only repeated failures are skipped, and existing faces are kept.
  • Find a person is case-insensitive — typing renee now finds Renee (SQLite’s Contains was case-sensitive).
  • Detect Faces stays on CPU helpers — Magick/ONNX run in isolated processes so a junk JPEG cannot take down the map/window. Settings no longer imply a GPU is driving detection (the Faces CPU preset controls load instead).
  • Rename a person actually works — the dialog was too short, so there was no Save button on screen, and typing Enter in the name box did nothing. Type the name and press Enter, or click Save.
  • Faces find more of the people in a photo — a size filter was dropping most faces in group shots and phone photos (a normal face is a tiny fraction of a 12MP frame). Overlapping detections of the same person are collapsed, and a face that looks equally like two people is left unassigned instead of mixing them. The next Detect Faces run retries photos that previously found nobody.
  • Task Manager shows RootMap, not Rootmap.WPF.
  • Face scan version per photo — Detect Faces resumes from where it left off. Each photo records the detector version that scanned it, so a future accuracy upgrade can re-sweep only outdated photos instead of the whole library (or missing the ones that already have faces).
  • Face scan no longer redoes 13k empty photos first — Detect Faces now works the never-scanned library (the new folder) instead of retrying every old “found nobody” landscape. Cloud-only Dropbox placeholders are skipped until they are on disk.
  • Dark mode is actually dark — cards lift off the page, tabs/combos/buttons/checkboxes follow the theme instead of leftover Windows light chrome, and the window background is no longer hardcoded off-white.
  • Junk JPEGs no longer kill RootMap — face/thumbnail decode for JPEG/PNG uses managed ImageSharp (throws instead of aborting). Magick.NET is only used for HEIC. Face helpers extract natives to a private temp folder and do not share the UI's Windows job, so a bad JPEG kills the helper; Detect Faces skips it after two failures and continues. Folders we stamped "done" only to stop the crash loop are put back in the queue.
  • App mark is the tree-pin everywhere — header used a one-color map pin; title bar and taskbar used a muddy 16px. Header now shows the full logo; the caption icon is hidden (too small to read). Theme switches copy brushes in place so Light → Follow Windows does not hitch.
  • Thumbnails and the photo viewer decode smaller — Magick was loading full 12–50MP originals to make a 300px thumb (same native crash class as faces). Viewer decode is capped at 2048px so opening a huge file is less likely to take the process down.
  • Copy a person's photos to a folder — right-click someone on the Faces tab → Copy photos to folder…. That's the "put all of Rene in a project folder" action. Originals stay put.
  • Clicking a person shows every photo they appear in, not just the first 100, and the Library header names them.
  • Find a person — search the Faces grid by name.
  • Show on Map from the Library actually opens the Map. Clicking a photo in the Library, then Show on Map, used to just close the viewer and leave you on the list. (It already worked if you opened the photo from the Map's own photo list.)
  • Support tickets — every ticket asks you to confirm the reply-to address before it sends (Yes, send to [email protected]), not only when a typo like gmaul.com is detected. Typing a different address clears the confirm. While you type, common domain typos still offer a chip. The ticket number is selectable so you can copy it if the address was wrong. Tickets opened from Help still tell us which page you were on (that's attached as metadata, not dumped into the message box).
  • Settings Help — the ? button on Settings now opens the FAQ (privacy, backup, what data is sent) instead of Getting started.
  • Contact Support follows dark mode — the dialog used to stay light even when the rest of the app was dark.
  • Help no longer includes an internal diagnostics document in search results.

2026.8

Map security

  • The map no longer loads Leaflet from the internet — scripts ship with the app, so a CDN compromise can't drive the map.
  • The map page can no longer see your database — it is served from a folder that contains only the map, not rootmap.db or settings.
  • Open / preview from the map only works on photos in your library — a hostile map page cannot open other files or read arbitrary images from disk.
  • Restore will not run while a scan or face job is active, and it drops SQLite's connection pool before replacing the file, so a restore can't mix two databases.

First run and the map

  • The first scan now opens the Map — that's the point of the app. Previously it dropped you on the Library with a tip to go look at Faces.
  • A library with no GPS no longer looks like a broken map — if photos are indexed but none have a location, the Map explains why and points you at the Library (and this help page).
  • Welcome copy tells the truth — photos stay on your computer; the map still needs the internet for tiles; diagnostics are on by default (Settings → Privacy).
  • Dark mode — map hover previews and photo popups were near-unreadable (dark text on a dark card). They now follow the theme.
  • Video dates — a container timestamp in the future (dead camera clock) no longer jumps a video to the top of the Library. Same plausibility check photos already had.
  • Deleting the last GPS photo no longer leaves ghost pins on the map.
  • Face detection no longer marks a missing/offline file as "done with 0 faces," so reconnecting a drive retries it.
  • Merge all now confirms the real database count, not just the 250 pairs on screen.
  • Folder preview only lists formats RootMap actually indexes, so a file you see there is a file Scan will pick up.

Videos

  • Video support now works out of the box — RootMap ships with everything it needs to read videos. Earlier builds silently skipped video thumbnails, map pins, and durations unless you happened to have FFmpeg installed yourself.
  • Videos added by earlier builds are repaired automatically — those videos were filed under the date they landed on your PC rather than the date they were shot, and had no thumbnail or map pin. RootMap fixes them in the background the first time you run this version. Nothing to click, and a date it can't improve is left alone.

Your library is safer

  • Folder exclusions can no longer clear your library — excluding a folder is now something you set deliberately. Previously Apply Exclusions could read untouched drives as exclusions and empty the index. Your photo files on disk were never affected, but the library had to be re-scanned.
  • Unplugged drives are recognised as offline, not missing — Remove Missing Folders no longer offers to delete everything on a disconnected USB drive or an un-synced cloud folder. The folder tree says which drive is disconnected, and the confirmation tells you how many photos are affected before you commit.
  • Backups are consistent again — Export & Restore writes a single verified database file, so a backup can't miss your most recent work.

Map, dates, and people

  • No more photos in the middle of the ocean — cameras that save an empty GPS block were plotted at 0°, 0° off the coast of Africa. Those coordinates are cleared; the photos stay in your library.
  • Recovered missing capture dates — photos whose EXIF date was stripped (common after Dropbox/OneDrive camera upload, or an export) now fall back to the date in the filename, so they sit in the right place on the timeline.
  • The year filter only lists plausible years — one bad EXIF date could put a year like 2035 at the top of the list.
  • No more duplicate people — person numbering reused numbers after a delete or merge, so you could end up with two different "Person 4009". Merging also no longer re-creates the person you just merged away, and deleted people stay deleted.

Speed and polish

  • Faster scanning — a scan used to walk your folders 28 times; now it walks them once. .tiff files are no longer counted twice.
  • Thumbnails — background generation was skipping about half of each batch, and an edited photo kept its old thumbnail indefinitely. Both fixed.
  • The map preview can't get stuck any more — hovering a marker and then clicking it could leave a blank preview box on screen that nothing would dismiss, because it had no close button and ignored clicks by design. It now clears on click, pan, zoom and Esc, and a preview that can't load says so instead of staying blank.
  • Merging duplicate people is practical now — the Faces tab shows how many possible duplicates are waiting, and "Merge all" goes down to 60% instead of stopping at 80%. On a real library that's the difference between clearing 2% of the queue and clearing most of it.
  • Impossible dates no longer lead your Library — a camera with a dead clock battery can stamp a photo years in the future, and sorted newest-first those sat at the very top. Dates that can't be real are cleared (the photo is kept, and its date is recovered from the filename where possible).
  • "In your library" accounts for every photo — it listed only the folders you'd picked explicitly, so a library holding photos from earlier scans showed a total far smaller than the header right above it.
  • "Show on Map" works from any tab — it switched to the Map tab but centred on the wrong place unless you were already there.
  • Videos have a details panel — opening a video now shows its length, resolution, codec, date and GPS coordinates, the same way photos show their EXIF. Videos carry no EXIF, so the panel used to come up empty even though RootMap already knew all of it.
  • Videos show their length — the Library and folder preview now show a video's duration on its badge (▶ 2:34) instead of just saying VIDEO. RootMap has always read the length; it just never showed it to you.
  • Folder preview shows what's actually in a folder — on the Add Photos tab, clicking any folder now previews the photos and videos on disk, with the ones already in your library marked. Previously it only showed folders you'd already scanned, so the folders you're deciding about looked empty.
  • The folder tree stays responsive — expanding a folder on a network drive, external disk, or cloud folder used to freeze the window while it read the disk.
  • The map fills in while a scan runs — it was only updating once the scan finished.
  • Videos are counted as videos — a library with videos in it now reads "599 photos · 44 videos" instead of calling the whole thing photos.
  • Security — updated the image-decoding library, which fixes seven high-severity issues in code that parses image files.

2026.6

  • Sync With Disk — one click reconciles a library folder with what's on disk: adds new files (e.g. fresh Dropbox/OneDrive camera uploads) and removes entries whose files were deleted. An offline drive or un-synced cloud folder never removes anything. See Adding & scanning photos.

2026.5

  • Map fixes — reliable rendering in the packaged build, and a clear "install WebView2" prompt instead of a blank map when the runtime is missing.
  • Date filter — From/To, presets, and the timeline now filter the photo list and the map pins together.
  • Faces out of beta — on-device detection with CPU presets and optional GPU (DirectML); rename, merge, and delete with undo.
  • Maps — basemaps (Streets / Satellite / Hybrid / Topo), place search, and dark map tiles in dark mode.
  • Scanning — parallel, resumable scans with Gentle / Balanced / Fast speed presets.
  • Tagging — automatic tags by year, folder, and type, plus your own custom tags.
  • Wider format support — HEIC and older JPEG variants now decode and thumbnail.

RootMap uses date-based versions (YYYY.MM.BUILD). The footer shows the build you're running.

Still stuck? In the app, use Help → Contact support, or open a ticket here.

An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please reload the page.