Skip to content

Releases: ok/mirall

v1.12.0

Choose a tag to compare

@ok ok released this 12 Oct 11:30
v1.12.0
970d0eb

Back up Mirall and restore your whole account on a new computer, see who
already has the files you share, and see what takes up Mirall's storage.
Plus a large set of security fixes that keep people outside a space away
from your data, your computer and your downloads.

Added

  • Back up Mirall. Settings → Backup keeps an encrypted backup on another
    drive, a network folder or a folder that syncs to the cloud, locked with a
    passphrase only you know. It runs on its own.
  • Restore from a backup on a new computer. Choose "Restore from a
    backup" on the welcome screen. Mirall opens right away and holds changes
    until someone you share with confirms nothing newer exists.
  • See who has the files you share. Each shared file shows how many
    members have it, and who has it, has an older version or doesn't yet.
  • Choose which desktop notifications you get. New alerts for join
    requests, newly shared files and a member receiving your file, with a burst
    from one person combined into one.
  • About Mirall has its own page under Profile, with the update status,
    a check for updates, and links to the privacy policy, legal notice and
    license.
  • See what takes up Mirall's storage. Settings → Storage breaks it down
    by space, file index, Activity Log, downloads, the installed version and app
    updates, and "Free up" clears what can go.
  • The Activity Log shows your relay at work: when a relayed member is
    connected directly again, and every change to your relay settings.

Changed

  • Windows 10 version 1903 or later is now required. On 1809, Windows
    kept Mirall's data in a private copy Mirall couldn't read.
  • Long file and folder names keep their ending. A name too long for
    its row is shortened in the middle, so the part that tells similar files
    apart stays visible instead of being cut just before the extension.

Fixed

  • A mirrored folder no longer deletes files it didn't put there. When
    the owner deleted a file, your mirror removed whatever sat at that path,
    even your own file. A mirror folder you delete now stays deleted.
  • Mirall no longer stops when your computer's secure storage can't open
    your identity.
    You can restore from your backup, try again, or start
    fresh; the old data is set aside, not deleted.
  • Mirall no longer mistakes ordinary folders for cloud-synced ones. A
    folder whose path merely contained a word like "sandbox", "Inbox" or
    "Megan" was taken for a Box or Mega folder and couldn't be shared or
    mirrored.
  • The window no longer goes blank on a list that only just needs
    scrolling.
  • A download that can't be written now says why instead of retrying as
    if the sender were offline.
  • A finished download no longer starts over when the disk briefly
    returns too little data while Mirall checks the file.
  • Sharing several files at once now lists all of them right away, for
    you and for everyone in the space. Files waiting their turn show as "Queued"
    and are no longer lost if you quit before they start.
  • App Storage no longer grows every time Mirall starts. An unused
    internal log is removed once when you update.
  • Old app updates no longer pile up. Mirall keeps only the current one.
  • Leftover records are cleared when you leave a space or a share you
    mirror is deleted, and downloads that failed for good over 30 days ago are
    forgotten.
  • No more "request denied" notice for a space you didn't ask to join.

Security

  • You can no longer mirror into a folder that starts programs or holds
    keys,
    such as a startup folder or ~/.ssh, where the owner's files could
    run when you log in or replace your keys.
  • A download no longer writes through a link or over a file that
    appears where it is being saved.
  • People outside a space can no longer read your profile or file
    lists.
    Mirall sends them only to admitted members.
  • On Windows, your Mirall data folder is readable only by you.
  • People outside a space can no longer fill your disk, restart your
    downloads or get around your download speed limit.
  • A planted join request can no longer freeze a space's member list.
  • A member can no longer exhaust Mirall's memory while you download
    from them.
  • A malformed message can no longer cut a device off.

Full Changelog: v1.11.2...v1.12.0

v1.11.2

Choose a tag to compare

@ok ok released this 28 Sep 18:42
d28af70

A bug-fix release. Closes security gaps and finishes two one-time cleanups
that stalled or never ran on older profiles.

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.

Full Changelog: v1.11.1...v1.11.2

v1.11.1

Choose a tag to compare

@ok ok released this 24 Sep 14:39
dcce91c

A bug-fix release. Relay changes now take effect straight away, mirrored folders
keep your edits and pauses in view, and downloads recover on their own after a full disk,
a missing drive or a read-only folder. When something does go wrong,
Mirall now tells you instead of failing quietly.

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.

Full Changelog: v1.11.0...v1.11.1

v1.11.0

Choose a tag to compare

@ok ok released this 18 Sep 11:38

A space that never syncs can now be carried by a relay and mirrors tell you
honestly when the owner is gone. Plus a large batch of fixes to overall reliability,
sync safety, dialogs and the log.

Highlights

  • 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. Anyone you share with who has no
    relay of their own uses yours.
  • 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.

Also 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.

Full Changelog: v1.10.1...v1.11.0

v1.10.1

Choose a tag to compare

@ok ok released this 17 Sep 15:17

Mostly about not losing your files: three ways Mirall could delete or
overwrite something you had are closed. Errors now explain themselves
properly, and a folder that gets stuck picks itself back up.

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.

Full Changelog: v1.10.0...v1.10.1

v.1.10.0

Choose a tag to compare

@ok ok released this 03 Sep 05:56
d58d342

This release rebuilds the folder screen — one screen now, for the folders you share and the
ones you mirror — and brings reliability and performance fixes across sharing, syncing and
transfers. Spaces made before v1.7.0 are no longer supported.

Highlights

  • 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, with the same tiles,
    the same file list, and the same buttons where you left them; 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.
  • 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.
  • 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.
  • 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.

Also 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, and the bar no
    longer sits at full as though the file had finished.
  • 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, 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, and
    opening a large folder read the same records thousands of times. All are bounded now, and
    your own downloads go first.
  • 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.

Full Changelog: v1.9.0...v1.10.0

v1.9.0

Choose a tag to compare

@ok ok released this 27 Aug 09:13

This release adds a network status that tells you when your own connection is the problem,
records connection trouble in the Activity Log, and puts every screen within reach of the
keyboard. It also brings Mirall's new brand: a refined logo and a redrawn app icon.

Highlights

  • 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.
  • 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.
  • Every screen can be reached from the keyboard — Profile and the Activity Log have
    shortcuts of their own, and 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.

Also 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.

Full Changelog: v1.8.0...v1.9.0

v1.8.0

Choose a tag to compare

@ok ok released this 18 Aug 07:17

This release adds an on-device Activity Log, bandwidth limits for transfers, and a
download folder per space, and tidies up how your profile and settings are arranged.

Highlights

  • A record of what happened in your spaces — who joined, left, or was approved, and what
    was shared and downloaded. Kept on your device only, and open from your Profile page,
    where you can search it or narrow it by space, person, or date.
  • Limit how much bandwidth Mirall uses — cap download and upload speed on the new Network
    page in Settings. Pick a preset, type your own figure, or leave it unlimited; a change
    applies straight away, including to transfers already running.
  • Only file transfers are capped, so your spaces and members keep syncing normally even at
    a low limit.
  • A download folder of its own for each space — set Download Folder in Edit Space. Spaces
    you leave alone keep using the folder from Settings → Storage, and files you already
    downloaded aren't moved.
  • A tidier way around your profile and settings — Account is now Profile, grouped into
    "This device" for your connection, identity protection, and the Activity Log, and "App"
    for your version, What's New, shortcuts, docs, and feedback. About moved here out of
    Settings, which now holds your preferences only.
  • Full control over the Activity Log — Settings → Activity Log turns recording off, sets
    how long events are kept, or clears the log outright.

Also fixed

A shared folder that briefly vanished and came back — an external drive reconnecting, a
network share remounting — no longer stays flagged as "source missing".

Full Changelog: v1.7.1...v1.8.0

v1.7.1

Choose a tag to compare

@ok ok released this 05 Aug 18:07

Fixed

  • Resolves the issue where when the person who created a space left it, the space quietly froze for everyone else
  • Resolves the issue where Invite links would quit the app on Windows and Linux instead of launching it and joining the space

Full Changelog: v1.7.0...v1.7.1

v1.7.0

Choose a tag to compare

@ok ok released this 15 Jul 14:19

This release adds approval-based space membership, is a major security hardening update, and changes how sharing works: your files are now served directly from the originals on your computer, with no second copy. Existing installs upgrade and migrate automatically — your identity and spaces are preserved.

Highlights

  • Share straight from your files — no more private second copy; sharing no longer doubles disk usage, and in-place edits are picked up automatically.
  • Approve who joins your spaces — joining is now a request an existing member approves (or flip on auto-approve for the old open behaviour).
  • Full transfer control — pause, resume, and stop downloads; they resume on their own when the owner is back; each finished file gets a "verified" badge.
  • Richer transfer insight — live speed, a steady time-remaining estimate, who's downloading from you, and the owner's live preparation progress.
  • See who's mirroring a folder you shared, with live per-person state (synced / syncing / paused), accurate even while they're offline.
  • Browse shared folders as a collapsible tree — per-folder file counts, sizes, and download progress, with Expand/Collapse all.
  • Native Mac builds per processor — separate Intel and Apple Silicon downloads. Plus Quit Mirall (Ctrl+Q) in the File menu on Windows/Linux.

Security

  • Local app data encrypted at rest, tied to your identity — copying Mirall's data folder no longer exposes your spaces, folders, or downloads.
  • Identity key wrapped in your OS keychain, plaintext removed from storage.
  • Space contents gated by a per-space key handed out only on approval — reaching a space is no longer the same as reading it.
  • Hardened against abusive peers — connection rate limits, size caps, a peer firewall, and rejection of oversized avatars/names.

Also fixed

Path-traversal in shared paths, mirrors never overwriting your files, membership lists staying in sync, leaves surviving a mid-quit, catch-up on flaky connections without a restart, and more.▎

Full changelog: see CHANGELOG.md.