What's new
Notable changes you'll notice as a user. Internal refactors and build-pipeline tweaks are intentionally left out.
v1.11.2
Fixed
- The shared-folder index is now encrypted at rest on every profile. On profiles whose index had been compacted, the one-time move to the encrypted index failed on every start and left the previous, unencrypted copy in place.
- Mirall frees storage left behind by older versions. Profiles that mirrored a folder before 1.10 could hold hundreds of megabytes of identical copies of the same folder record. The extra copies are removed once, the next time Mirall starts. Your folders and settings are unaffected.
Security
- Only verified members can affect a space's members and downloads. Someone outside a space who knew its network address could stall your downloads or send messages that changed who appeared to be a member. Mirall now takes these only from members it has verified.
- You can see whether the person who invited you has been verified. While your invite is pending, they are marked "Unverified" until Mirall confirms they belong to the space.
- The installed app can no longer be started in a debugging mode or with modified files.
v1.11.1
Fixed
- Turning off "Prefer the relay for every connection" now takes effect straight away. Connections already going through the relay stayed on it until you restarted Mirall. They now switch to a direct connection where one works, after any transfer in progress finishes.
- Replacing your relay moves existing connections to the new one. Connections made through the old relay kept using it, with no notice.
- With your relay turned off, another member's relay is no longer shown as yours. Network Status and the Activity Log called it "your relay", and every change to your relay settings reconnected it, only for it to come straight back. Relay settings now name the members whose own relay still connects you, since turning yours off does not end theirs.
- Notices that wait for you no longer disappear when others arrive. A notice that stays until you act on it — someone asking to join your space, a declined request, being offline, or a missing download folder — could be pushed off the screen by a few newer notices in a row. It now stays until you close it or it no longer applies.
- Downloads into a folder Mirall can't write to no longer retry endlessly. A download into a read-only folder or drive used to fail again every time the sharer reconnected. It now shows "Permission denied" until you fix the folder; then it resumes on its own, or you can press Retry.
- A download stopped by a full disk or a missing drive picks up again by itself. Freeing space, reconnecting the drive or choosing another download folder for the space did nothing until you pressed Retry. The download now resumes on its own while the sharer is online. A download that stopped on a full disk before this update still needs one Retry.
- A partly downloaded file keeps its Discard button when the sharer goes offline. If the sharer edited the file and went offline before Mirall had re-checked it, the row read "Not available" with no actions, and the partial download stayed on disk. It now reads "Owner offline" with Discard Partial, like files in a folder.
- Files two people share under the same name no longer borrow each other's status. Your paused download of one person's copy also showed on the other person's copy, with its own Resume and Discard.
- One damaged folder share no longer stops your other shares from being served after a restart. Everyone could still see the files, but their downloads stalled.
- A file you edit inside a mirrored folder is marked "Edited locally". An edit that didn't change the file's size still showed as synced, with a "content hash matches" badge that nothing had actually checked. Edited files now say so, and explain that the shared version will be restored and your edit kept as a conflicted copy.
- An edit inside a mirrored folder is undone promptly. Mirall promises to restore the owner's version, but it could take up to five minutes. It now notices within seconds. A file you delete from a mirror comes back the same way.
- A mirror you pause stays paused. Pausing one while it was still scanning could leave it running but showing "Active", and it could start itself again later. Moving a mirror's folder while it was working could also leave stray duplicate copies behind.
- A file deleted from a mirror while the owner was offline is restored when they come back, instead of staying missing.
- A file you are still indexing no longer hides the people waiting for it. Mirall lists a large file or folder before it has finished indexing it, and anyone who clicks it waits — but nothing on your side showed that, in exactly the window where quitting strands them. The row now shows their avatars and "N waiting" while it indexes.
- A burst of download problems is now one notification, not one per file. A folder downloading into a full disk, a read-only folder or a missing download folder raised a separate system notification for every file in it, and completed or paused folder downloads did the same. Mirall now sends a single notification that counts the files.
- Denying someone who has already been approved says what happened. The button silently cleared the request, leaving you to believe you had removed someone who still had access. It now tells you they have already been approved.
- Joining a space no longer stalls on members who are offline. Each unreachable member was checked in turn, adding several seconds each, so a space with a few offline members could leave you waiting. They are now checked at once.
- The Activity Log stops losing entries. Someone joining, "downloaded from you", a withdrawn approval and a join request could all go missing if Mirall couldn't write the entry on the first try. Entries are now retried, and entries still being written when you quit are finished first.
- Starting to use a relay from an invite no longer reloads the window. Pressing Reconnect now after adding or replacing a relay with an invite reloaded the whole of Mirall's window. It now reconnects while you stay where you are.
- Failed actions now say so. If saving your profile, deleting the Activity Log or turning on detailed logging didn't work, Mirall could stay stuck on "Saving…", close the dialog as if it had worked, or say logging was on when it wasn't. Copy buttons could also say "Copied!" when nothing was copied, and picking a picture Mirall couldn't read as your avatar did nothing. Mirall now tells you what went wrong and lets you try again.
- Settings no longer show a change that wasn't saved. The theme, language, zoom, tray, login, notification and Activity Log switches were set without checking the result, so a refused save left the switch showing the new value. They now revert and tell you.
- Deleting a folder share that fails keeps the dialog open instead of closing as though the folder were gone.
- Reconnecting too soon says so. Pressing Reconnect within the cool-down quietly did nothing, and made a pending relay change look applied. It now explains, and keeps the change pending.
- A transfer limit that can't take effect until restart says so, instead of showing the new limit while Mirall kept using the old one.
v1.11.0
Added
- Connect through a relay when the network blocks a direct link. Some networks — office Wi-Fi, a hotel, a mobile carrier — keep two devices from reaching each other, and a space simply never syncs. Settings now takes one relay, added with a key or with an invite from whoever runs it, and tested the moment you add it. Your files stay encrypted end to end; the relay only forwards them. An open relay of yours is offered to the people you connect with, so anyone with no relay of their own is carried by it.
- See who you are reaching through a relay. Network Status gains a Relay row and a section grouped by relay: the masked key, whether it is yours or the one that person brought, and the people being carried through it. The Activity Log records each of those connections as its own entry.
- A warning before mirroring a folder that will list short. The mirror preview now shows the file count and warns when the owner's folder exceeds the share limit, while still letting you confirm.
- A distinct "owner offline" status for mirrors. A mirror that cannot reach the owner's listing now shows an "owner offline" pill and a "waiting for owner" label instead of pretending to be synced or syncing.
- Diagnostics and Advanced details are screens of their own. Network status ended in a disclosure that appended six sections and 23 rows below the fold; both now sit in a Troubleshooting group and open properly.
- Network status and network settings link to each other, the way the Activity Log and its settings already did, so changing a limit or a relay no longer means backing out through two screens to see what it did.
Fixed
- A local edit is never overwritten because of an unrelated manual download. A manual download of the same file could vouch for the mirrored copy, so an edit matching it was replaced with no conflicted copy.
- A restored or same-size replaced file is re-verified. Mirror verification trusted file age, so any restore that preserved timestamps passed as verified forever. Files are now fingerprinted.
- A pre-mount preview no longer claims a clean destination for a file it is about to download beside your own.
- Names with non-Latin characters are no longer dropped. Files and folders containing ł, Cyrillic, CJK or emoji could vanish from listings and scans.
- Files being prepared at the same time show as separate rows instead of collapsing into one row that claimed the others as co-sharers.
- Mirrors stop spinning against an offline or failing owner. No more endless "Preparing…" badges; a full volume or a deleted mount root is caught before fetching; a file whose holders keep failing its hash gets a bounded retry budget; an offline mirror still adopts what is already on disk instead of reporting "syncing" for the whole outage.
- A folder whose source disappears and returns clears "source missing" again. It could stay latched until you pressed Resume.
- Joining with a large avatar no longer stalls silently. Avatars over the frame budget are clamped before they ride in the join request.
- A denied joiner who knocks again is denied again. The deny could be lost in a race and the owner's banner kept resurfacing.
- Leaving a space forgets the peer's signer key. A stale key could seal membership grants the joiner could not open.
- A readmitted member is announced under their real name instead of "Unknown".
- Failed remove and leave dialogs recover. A rejected removal left the dialog stuck, and a failed leave navigated you away from a space you were still in.
- A failed space creation is reported instead of silently resetting the dialog.
- Every modal shares one Enter/Escape contract. Enter no longer double-submits or silently cancels, and destructive confirms rest on Cancel.
- Field errors are tied to their fields in Edit Space, Edit Folder and the path picker, so screen readers can find the explanation.
- Retried errors collapse into one banner instead of stacking identical toasts.
- Zoom from the View menu is remembered, and the Appearance zoom tiles mark the nearest preset instead of none.
v1.10.1
Fixed
- Your edits inside a mirrored folder are kept. Changing a file in a folder you mirror used to overwrite your version without warning. Mirall now saves it beside the owner's as a "conflicted copy".
- A folder that seems to have lost its files no longer deletes yours. An incomplete file list from the owner could remove hundreds of files from your disk. A single pass may now never delete more than half of what you hold.
- A file shared from a network drive notices your edits again. Files on a mounted network volume went on serving their old contents to everyone, with no error and no sign anything was wrong.
- Error messages say what went wrong, in your language. Different problems shared one misleading message, and some appeared in English whichever language you use. Every error now has its own wording in all five.
- Two actions that failed silently. Creating an invite could leave the button stuck on "Creating…" or hand you no link and no reason, and revealing a shared folder that has moved blamed a missing file instead.
- The Activity Log covers shared folders, and gets its details right. Downloads from a shared folder were missing from it entirely, the "granted access" entry named nobody, and its file sizes read too low.
- Mirall tells you when it can't read a folder on your disk. A permission problem, a full disk or a folder that has moved now shows on the folder itself — for its owner and for everyone mirroring it — and clears as soon as you fix the cause.
- A folder download that stalls now says so. The progress bar simply stopped moving before, with no notification; only files shared on their own ever raised one.
- A space that freezes picks itself back up. With members Mirall couldn't reach, the member list, join requests and folder list could all stop updating. It now notices and restarts just the part that stopped.
- Quitting mid-task no longer leaves a folder broken. Closing Mirall while a shared folder was being created left one others could see but you couldn't remove; closing it while moving a mirrored folder made every member download the whole thing again.
- No screen invents a number it failed to read. A failed read showed "0 files", or the default speed limit, instead of saying it couldn't load — and a speed limit that didn't save was never put back.
- Three mirroring annoyances. A file saved under a second name was listed as missing, a change arriving during a folder's first scan was ignored until the next check, and downloading a file already on its way did nothing at all.
- Lighter while running, cleaner on quit. Mirrored folders no longer start an unlimited number of downloads at once, spaces stop rebuilding their member list on unrelated traffic, and background work now stops when you do.
- Easier to read, and to hear. The path under a folder was too faint to read in both themes, Storage settings showed "Calculating storage…" where a path belongs, and a file's status is now announced together with its name.
Security
- Mirall's internal parts check what they send each other. Messages between the window, the background process and the app's core could be corrupted without anything noticing, unknown commands were ignored rather than refused, and an unused internal route could set a watcher on any folder on your disk.
v1.10.0
Added
- One folder screen, whether you share the folder or mirror it. The two used to show different things in different places. They are now the same screen — same tiles, same file list, same buttons where you left them — and only what you are allowed to do changes with your role.
- See who has the folder, and how each of them is doing. A People tile names the owner and everyone mirroring the folder, with a ring around each face for in sync, still syncing, or paused, and the same thing spelled out in text beside it. Until now only a folder's owner could see any of this; now everyone does.
- The folder itself, at a glance. Its size, how many files, how many of them are on your device, and a badge for what it is doing right now: up to date, adding, syncing, paused, missing, or browse-only.
- Filter a long folder. A box above the file list narrows it as you type, says how many of the total matched, and clears in one click. It stays put while the folder works, so what you typed is never pushed off the screen.
- One band tells you what the folder is doing. Adding files, syncing, paused, owner offline, source missing — it says which, counts down what is left, and carries the one button that helps: Pause, Resume or Locate.
- Rename a folder you share. Edit Folder, in the header menu, gives it a new name for everyone who has it, while the folder on your own disk keeps the name you gave it there.
- Keep a mirrored folder somewhere else on your disk. Edit Folder on a folder you mirror moves it — onto another drive, say. Files already at the new location are recognised and not downloaded a second time; only what is missing is fetched.
Changed
- Free up space is gone; Mirall keeps its own storage in order. The action had little left to reclaim, and it could remove a file list it should have kept. What it did that still mattered happens on its own now: a member who leaves takes their leftovers with them, and Mirall tidies up as it starts. The Storage screen still shows what is using space.
- Spaces made before v1.7.0 are no longer supported. Every space Mirall creates or joins is encrypted now, and a space older than that release cannot be upgraded to it. Such a space is marked unsupported rather than left half-working: it stays visible, but you cannot share into it or invite anyone to it.
Fixed
- Some added files, renames and edits could go missing or double up. A file added during an index, one the watcher missed, a rename that only changed case, and an edit that kept the file's size and date were each dropped, duplicated, or held back until the next six-hourly pass.
- A file you add while a big folder is indexing no longer waits for it. Each space hashes its own queue, smallest files first, so a file you drop in starts at once even while an index is running.
- A space or file list that came up empty now loads. Members you share many spaces with could be cut off after a reconnect, and a few offline members could stop the file list loading at all. Lists no longer flash "nothing shared yet" on the way in.
- What a folder is still adding is reported properly, on both sides. Your own view could stay empty for minutes on a large file, and members saw only the two or three files being hashed at that moment; a folder now names all the files and bytes it still has to read, on both screens. Indexing is no longer counted or labelled as a download, the bar no longer sits at full as though the file had finished, and removing a folder no longer reports its files as being added.
- An action cut short leaves less behind, and a stall gets noticed. A cancelled or finished transfer could come back to life, a file could sit on "Adding" for good, unsharing could leave the share offered, transfers running at quit never reached the Activity Log, and the disk space a space you had left went on using was never reclaimed. An error behind the scenes could leave Mirall quietly stuck with everything still on screen, and a folder you mirror could stop syncing until the next restart. Both are now spotted and picked back up on their own.
- Mirall asks less of your computer during transfers and in big folders. Sending a file and keeping a mirrored folder in sync did work that grew with the folder, a reconnect started every waiting download at once, a running transfer redrew the whole list every second, opening a large folder read the same records thousands of times, and a listing you had navigated away from still ran to the end. All are bounded now, your own downloads go first, and a file row keeps up with its own progress and errors.
- A session left running for days no longer gets heavier. What Mirall held on to for the members it had met and the files it was serving kept growing, so a long session ended up slower than a fresh start.
v1.9.0
Added
- Mirall now tells you when your network is the problem. It used to call a connection healthy on any network that let it out, so a machine nobody could reach still looked fine. It now judges whether people can actually reach you, says so when they can't, and offers a page with what to try. Network status can also save a diagnostics file with identifying details left out.
- The Activity Log records connection problems. A new Network filter keeps when this device went offline, when Mirall couldn't reach anyone, and when members dropped out or came back — so the log explains a quiet stretch instead of falling silent through it.
- The cards beside a space remember how you left them. Fold Space Storage away, or switch the member list between the avatar row and the full list, and each space keeps its own arrangement until you quit Mirall.
- Every screen can be reached from the keyboard. Profile and the Activity Log have shortcuts of their own; Network status, the Settings pages, What's new and Send feedback are in the command palette (⌘K / Ctrl-K).
- The empty screens explain how Mirall works. The spaces list, an empty space, and the wait for approval each carry a card that says what happens next and links to the documentation.
Changed
- A new look for Mirall. A refined logo and a redrawn app icon, carried across the app, this site, and GitHub.
Fixed
- Downloads survive a peer's upload cap. A transfer from a limited peer could stop with the file shown as paused, and Resume moved it only a little further. A capped peer now says it is still there, and interrupted downloads retry on their own.
- A download says when its folder is gone. A deleted, renamed, or ejected download folder produced a generic "Transfer failed", and a deleted folder was quietly recreated mid-download. Mirall now names the folder as the problem, offers to change it, and stops retrying.
- Clearing the Activity Log frees its disk space. Clearing emptied the log from view but left every entry on disk, so the store came out larger than before. It is now cleared properly and the space comes back, with your retention setting kept.
- Speed limits are shared out fairly. With a bandwidth cap set, a transfer that started while nothing else was running could take more than its share and stall a transfer running alongside it. Both now draw from the cap evenly.
v1.8.0
Added
- A record of what happened in your spaces. The new Activity Log gathers who joined, left, or was approved, and what was shared and downloaded — kept on your device only. Open it from your Profile page, then search it or narrow it down by space, person, or date. Settings → Activity Log turns recording off, sets how long events are kept, or clears the log.
- Limit how much bandwidth Mirall uses. A new Network page in Settings caps download and upload speed — pick a preset, type your own figure, or leave it unlimited. A change takes effect straight away, including on transfers already running. The cap covers file transfers only, so your spaces and members keep syncing normally.
- A download folder of its own for each space. Each space can save its downloads wherever suits it — set Download Folder in Edit Space. Spaces you leave alone keep using the folder from Settings → Storage, and "Use default folder" puts a space back on it. Files you already downloaded aren't moved, and a folder you share or mirror can't be used, since anything landing there would be published to your peers.
Changed
- A tidier way around your profile and settings. The Account page is now Profile, and everything on it is grouped: "This device" for your connection, identity protection, and the Activity Log, "App" for the version you're running, What's New, keyboard shortcuts, documentation, and feedback. About has moved here out of Settings, which now holds your preferences only.
Fixed
- A shared folder that comes back is no longer flagged as missing. If the folder you shared went away and returned quickly — an external drive reconnecting, a network share remounting — the "source missing" warning on the folder and on its card stayed up even though everything was working again. The warning now clears as soon as the folder is back.
v1.7.1
Fixed
- A space keeps working when someone leaves. When the person who created a space left it, the space quietly froze for everyone else — nobody new could join, join requests went unanswered, and the member list stopped updating. When any other member left, the people they had invited were dropped along with them. Now only the person who actually left is removed, and everyone else keeps their place.
- Invite links open instead of quitting the app on Windows and Linux. Clicking a
mirall://joininvite link shut Mirall down on the spot — whether it was already running or started by the click — so the only way in was to copy the code out of the link and paste it into the Join dialog by hand. Invite links now open the Join dialog as intended, and a link with a trailing slash works as well as a bare code.
v1.7.0
Added
- Share straight from your files — no second copy. Mirall used to import a private copy of everything you shared into its own storage. It now serves your shared files and folders directly from the originals on your computer, so sharing no longer doubles their disk usage, and edits to a shared file are picked up in place.
- Approve who joins your spaces. Joining a space is now a request: the person stays pending until an existing member approves them, and only then do they gain access to the space's contents. You'll see a "wants to join" banner and can approve or deny individually or in a batch; the person waiting sees a clear "waiting for approval" view. Prefer the old open behaviour? Flip on auto-approve when you create the invite and anyone with the code is admitted automatically.
- See who's downloading from you. When someone downloads a file you've shared, its row now shows their avatar — expand it to see each person individually, with live progress, transfer speed, and an estimate of how long they have left.
- Live speed and time-remaining on transfers. Downloads now show their average speed and a steady estimate of the time remaining. While you wait on a file, you can watch the owner's live preparation progress instead of a blank "Preparing…".
- Pause, resume, and stop transfers. Downloads can be paused and resumed, stopped outright, and pick back up on their own when the owner comes back online. Each finished file carries a "verified" badge confirming its contents match the original exactly.
- Browse a shared folder as a collapsible tree. Subfolders are now rows you can open and close, each telling you what's inside at a glance: how many files it holds, their total size, how many are already on your device, and how many are downloading right now. Expand all and Collapse all fold the whole tree at once.
- See who's mirroring a folder you shared. A folder you own now shows the people keeping a live copy of it, each with their current state — synced, syncing, or paused.
- A bigger target for drag-and-drop sharing. Dragging a file anywhere over a space now expands the drop zone to fill the whole area.
- Quit from the menu on Windows and Linux. The File menu now offers "Quit Mirall" (Ctrl+Q), so you can fully quit the app instead of only closing it to the tray.
Security
- Your local app data is encrypted on your device. Mirall's local bookkeeping — your list of spaces, mirrored folders, downloads, and similar details — is now encrypted at rest with a key tied to your identity, so copying Mirall's data folder no longer exposes it. Existing data is migrated automatically the first time you open this version.
- Only approved members can read a space. A space's contents are now gated by a per-space key that's handed out only once an existing member approves your request to join — so being able to reach a space is no longer the same as being able to read what's shared in it.
- Your identity is encrypted on your device. Your signing key is now wrapped using your operating system's secure keychain and the plaintext is removed from storage. The Account screen shows this protection status.
- Tougher against abusive peers. Connection rate limits, sensible caps, and a firewall for misbehaving peers keep a flood of requests or oversized data from exhausting memory or CPU. Oversized avatars and over-long display names sent by a peer are now rejected.
Changed
- Simpler folder sharing. Sharing a folder no longer asks you to pick a transfer mode. The previous "On demand" option, and the cache-size setting it added to Storage settings, have been removed — serving files in place from their originals covers the same need automatically, with no separate cache to manage.
- Clearer, more consistent status colors. File status labels now follow a fixed, meaningful palette: green when a file is on your device, blue while it's transferring, yellow when something needs your attention, and red for an error.
- File sizes now match what your operating system shows. Sizes were divided in binary (1024) steps but labelled with decimal units, so a file Finder reports as 629.68 GB could read as "586.4 GB". Sizes now use the same decimal units as macOS Finder and GNOME Files, and very large files no longer show "undefined".
- Invites now come only from inside the space. Creating a space no longer hands you an invite code on the spot — it ends on a simple confirmation. To invite someone, open the space and use its Invite dialog: choose whether to auto-approve and how long the invite stays valid (2 hours, 2 days, or 2 weeks), then create a single link to share. Expired links are refused when someone tries to join.
- A native Mac build for each processor. Mirall now ships separate downloads for Intel and Apple Silicon Macs, so each gets a build matched to its processor.
Fixed
- Shared files stay inside the shared folder. Specially crafted file paths from a peer can no longer reach outside the folder you chose — neither to read or stream files from an owner's disk, nor to write or delete files on a mirror.
- Mirroring never overwrites your own files. If a shared file has the same name as one you already have, the mirrored copy now lands under a non-colliding name, and a peer can only ever remove its own mirrored copy — never your original. A mirror also can't be placed directly on a top-level personal folder such as Home, Desktop, Documents, or Downloads.
- Member lists stay in sync for everyone. We rebuilt how membership is shared between peers, so people no longer go missing, show up as "Unknown", or get stuck — and someone approved by one member now appears for everyone. Members also show their real name and avatar even before a direct connection is made.
- Leaving a space sticks, even if you quit part-way. Quitting while a space was still being left could bring it back on next launch; the leave now completes instead of reappearing.
- Files and members catch up on slow or flaky connections without a restart. On unreliable links a late-approved member might not see the space creator, and newly shared files could stay invisible until you restarted. Mirall now keeps re-checking in the background until everyone's view matches.
- Pasted invite links work in the Join dialog. Copying the "app link" form of an invite and pasting it into Join now works, not just the bare code.
- Mirroring pauses instead of erroring when a write fails — for example when your disk is full or the destination is read-only — and resumes once there's room, rather than retrying the failing file forever.
- Fixed a crash when showing a notification on Windows for certain spaces, members, or transfers.
- Long names no longer overflow confirmation dialogs. A long file, folder, or space name in a Remove, Leave, Delete, or Mirror dialog spilled out of the panel and pushed the close button aside. Names are now shortened in the middle, keeping the file extension readable.
v1.6.1
Added
- Set how much space on-demand sharing keeps ready. A new control in Storage settings caps the cache that "on demand" folders use to keep recently opened files instantly available — anywhere from 512 MB to 3 GB, with 1 GB as the default.
Changed
- Sharing a large folder is now instant. Previewing a folder before you share it no longer reads through every file first, so a folder with tens of gigabytes opens right away instead of stalling. The scan runs in the background with live progress and a cancel button, and very large folders show a summary instead of an endless file list.
Fixed
- No more flickering scrollbar while a mirrored folder downloads. A folder syncing in the background could briefly show a stray scrollbar over empty space that flickered as files arrived. The folder view now stays put.
- Smoother "on demand" sharing. Serving a file on demand no longer freezes while someone is mirroring a large folder from you — recently served files are kept ready and disk is tidied up quietly in the background instead of all at once.
- Folders shared from Windows now sync reliably. On some Windows drives, a shared folder recorded its internal file paths in a malformed form that broke revealing files on disk, on-demand serving, and mirror file counts — and could expose the owner's local folder path to other members. Paths are now stored correctly, and existing shares repair themselves automatically the next time they sync.
- Clearer wording in the Add Folder dialog. When sharing your own folder, the preview no longer shows a confusing "already at the destination" count or a "file list hidden" note that didn't apply.
v1.6.0
Added
- Share whole folders, not just individual files. Pick a folder on your computer to share into a space and Mirall keeps it in sync — add, edit, or remove files and everyone in the space sees the change automatically. Subfolders come along too.
- Browse and mirror folders others share. Open a shared folder to see what's inside without downloading everything, or mirror it to a folder on your own computer to keep a live, always-up-to-date copy. Pause, resume, or stop mirroring whenever you want.
- Share a folder "on demand". A toggle in the Add Folder dialog offers a folder's files to the space but only sends each one when someone actually downloads it — handy for large folders you don't want to push up front.
- The application menu is now on Windows and Linux, not just macOS.
- See and free up space per shared folder. Storage settings now shows how much each shared folder is using, and Mirall reclaims unused space on its own when a space goes quiet.
- Collapsible Storage and Members panels in the space sidebar, so you can fold away what you're not using.
Changed
- A more consistent interface throughout. Status labels and colors, avatars, buttons, corner radii, and spacing have been harmonized across every screen.
- Quicker ways to get around. Go back the way you would in a browser — your mouse's back button, a two-finger swipe on macOS, or Cmd/Ctrl+Left — and jump back to your spaces anytime from the logo or with Ctrl+H (Cmd+Shift+H on Mac).
- Full keyboard and screen-reader support. Every screen is now navigable by keyboard and works with assistive technology, and Mirall honors your system's reduced-motion preference.
- A pending update now shows in the About screen, and the update banner no longer covers up content while you work.
- Fewer prompts when installing on Windows. The installer no longer asks for permissions Mirall never actually needed.
Fixed
- Downloads no longer overwrite your existing files. A download whose name matched one already in your downloads folder now lands at a safe, non-colliding name.
- Space members no longer go missing. Joining a busy space could occasionally drop someone from your member list until you reconnected — everyone now shows up reliably.
- Windows updates now install reliably, resolving a failure that could stop a detected update from applying.
- Re-adding a file at the same path is handled correctly instead of looking like a stuck, half-finished download.
- No more flicker when you drag a file over the drop zone.
- A cancelled download no longer leaves a row stuck as "paused".
- The "on your device" indicator stays accurate after a file is removed or re-shared.
- The file list stays usable when no peers are currently connected.
v1.5.3
Fixed
- Windows updates now install. New versions were detected and the banner appeared, but on Windows the update never actually applied. Updates now install correctly on quit and restart.
- The version number shows immediately in the About screen instead of briefly displaying a placeholder while it loaded.
v1.5.2
Fixed
- Scrollbars match the app again. They had reverted to the pale system default; scrollbars now follow the theme across all platforms.
v1.5.1
Fixed
- Invite code shown after creating a space now matches the one in the Invite dialog, and carries the space name so the person joining sees the real name instead of "Shared Space".
v1.5.0
Added
- Shareable invite links. Send an invite as a clickable link that opens Mirall straight to the Join dialog, or as the plain code. Invites also carry the space name.
- New Account page. Click your avatar in the top-right to open a dedicated page that gathers your profile and your network connection in one place.
- At-a-glance connection status. Your avatar gains a soft pulsing ring when something's wrong — red if you've lost internet, amber while Mirall is trying to recover.
- A heads-up when your connection drops. A toast appears the moment Mirall notices a problem, with a Show details link to the Network page.
- Network page with friendly diagnostics — what Mirall sees about your connection, things worth checking, and a Reconnect button.
Changed
- Settings is now just app settings. Profile editing and network status moved to the new Account page. Settings keeps Appearance, General, Notifications, Storage, and About.
Fixed
- No more empty files from dropped folders. Dragging a folder used to silently create an empty file; Mirall now recognises the folder and asks you to pick individual files instead.
v1.4.0
Added
- Mirall now lives in your menu bar (macOS) or system tray (Windows / Linux). Closing the window no longer shuts the app down — peers stay connected and transfers keep going. Settings → General lets you opt out, or opt in to Launch at login.
- Keyboard shortcuts and a command palette. Press ⌘K (Ctrl-K) for a command palette, and ⌘/ (Ctrl-/) for the full shortcut list.
Changed
- Settings reorganized. Theme, display size, and language now live under a new Appearance page; background mode and Launch at login under General.
Fixed
- No more duplicate "online" notifications when a peer's connection briefly drops and comes back.
- No more white flash when resizing the window — the window background now tracks your chosen theme.
v1.3.1
Fixed
- More reliable first launch. Mirall now starts up cleanly even while a newer version is being fetched in the background.
- Smoother updates on Windows and Linux — a new version installs quietly in the background and is live the next time you quit and reopen.
- Better contrast on the Downloading status pill in the light theme, meeting WCAG contrast requirements.
v1.3.0
Added
- Choose where downloads go. Storage settings has a new Download folder entry; pick any folder and every download lands there.
- Clear peer cache (per space) from a kebab menu on each Storage row, without leaving the space.
- Notifications when a peer removes a shared file you're downloading, instead of the transfer hanging silently.
Changed
- Honest per-space storage figures — downloaded files now count against the space they belong to.
- Atomic downloads. In-progress downloads write to a hidden .partial file and rename on completion.
Fixed
- Transfer-failed notifications now show a translated reason instead of a raw error code.
v1.2.0
Added
- "What's new" modal. After an update, Mirall shows what changed; the full history is also under Settings → About → What's new.
- Italian interface, alongside German, English, French, and Spanish.
- Zoom levels — Compact, Cozy, Default, and Spacious under Appearance, or step through with Cmd/Ctrl +, −, and 0.
Changed
- Refreshed the light and dark themes — warmer per-space colors and better legibility in dark mode.
Fixed
- Linux: the AppImage stays executable after an automatic update.
v1.1.4
Changed
- Updates no longer restart the app on their own. A staged update is applied the next time you quit Mirall yourself, so restarts happen on your schedule.
v1.1.3
Fixed
- A flapping connection no longer fires a stream of online/offline toasts — notifications are now deduplicated per peer.
v1.1.2
Fixed
- Leaving a space now propagates to the rest of the mesh, so other members see the change without having to restart their app.
v1.1.1
Fixed
- Windows: Mirall relaunches automatically after an update. Previously you had to reopen it from the Start menu after every update.
- macOS: fixed a blank screen that could appear after an update was applied.
- About screen: the build identifier next to the version no longer always reads "(0.0)" — it reflects the live update channel.
v1.1.0
Added
- Desktop notifications for incoming files and space activity.
- French and Spanish interface, alongside German and English.
- Styled scrollbars in the space and file lists.
Changed
- Text selection is disabled app-wide for a native feel; copyable values now have dedicated copy buttons.
Fixed
- Screen reader support — icon-only buttons and clickable rows now expose proper accessible names.
v1.0.4
Fixed
- Windows: removed the blue accent ring Windows draws around Mirall's taskbar icon when the window is active.
v1.0.3
Fixed
- Windows: refreshed app icon (no more generic default icon); icon refresh across all platforms.
v1.0.2
Fixed
- Linux: the AppImage now integrates correctly with your desktop on first launch — entry in the app menu, icons in the system tray.
v1.0.1
Added
- German interface, auto-detected from your OS locale on first run.
Fixed
- The file list now refreshes when a peer sharing files disconnects.
- Windows: the update banner now appears as expected when a new build is available.
- Storage settings: a clearer Cache / Metadata / share-of-total breakdown.
v1.0.0
Added
- Initial public release.
- Peer-to-peer file sharing — files travel directly between you and the people you share with, with no central server.
- Spaces — named collections with their own membership and invite codes.
- Built-in updates that apply automatically.
- Onboarding flow for choosing a display name and avatar.
- Available for macOS, Windows, and Linux.