Skip to content

v0.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 04 Aug 20:06

[0.3.0] - 2026-08-04

Linux joins Windows and macOS as a supported platform, and mcopy now installs
like a normal desktop application instead of running from wherever it was
downloaded.

Added

  • Native installers for every platform: an Inno Setup installer on Windows, a
    .pkg and .dmg on macOS, and a .deb plus portable tarball on Linux. The
    downloaded file is no longer needed once installation finishes.
  • Linux is now built, packaged and tested in CI alongside Windows and macOS.
  • The logo follows the system theme: its black bars turn white in dark mode and
    back to black in light mode, updating live when the theme changes. The green
    section never changes color.
  • Failed copies now say why — permission denied, out of space, read-only
    destination, missing source — with a platform-specific next step instead of a
    bare failure count.
  • A message window explains refusals that previously did nothing at all, such as
    pasting with an empty clipboard or into an unwritable folder.
  • A log file under the platform's standard location, controlled by MCOPY_LOG.
    It records paths and error kinds, never file contents.
  • The application now has an owner on every platform. Windows File
    Properties, Add/Remove Programs, the macOS bundle, the Debian package and the
    Linux software centres all show NAKAMOZ as publisher and the MIT copyright.
    The Windows binary previously carried no version resource at all.
  • Draft manifests for Winget, Homebrew and AppStream, generated from the built
    artifacts so their checksums always match what is being published.
  • mcopy status prints what is currently copied.
  • The destination is validated before a paste begins: it must exist or be
    creatable, be a directory, be writable, and not sit inside a copied source.

Changed

  • The Windows context menu is now registered per-user under HKEY_CURRENT_USER
    instead of machine-wide under HKEY_LOCAL_MACHINE.
    Installing and removing
    the integration no longer requires administrator rights at any point.
  • install and uninstall are now shell-install and shell-uninstall, since
    application installation is the installer's job. The old names still work.
  • The copy progress window and the setup window are ordinary application windows,
    so they appear in the taskbar, Dock and window switcher and can be minimized
    and restored during a long copy.
  • Copy and paste state is a single, atomically written, validated record instead
    of three loosely coupled files.
  • A paste that finds nothing to do now explains itself instead of exiting
    quietly.
  • The progress window no longer closes itself when items failed, so the reason
    stays readable.
  • macOS Finder Services now use copy --append, matching the other platforms
    for multi-item selections.
  • Thunar support was removed. It was never actually installed — the previous
    version only printed setup instructions to a stream nobody could see.
  • The application identifier changed from com.mcopy.app to
    io.github.nakamoz.mcopy.
    The old value implied ownership of a domain the
    project does not control. macOS treats the new identifier as a different
    application, so any privacy (TCC) permissions granted to 0.2 must be granted
    again. The Linux desktop entry, icon and AppStream component are all named
    after it now.

Fixed

  • The Paste entry no longer appears when nothing has been copied. It is
    hidden until a copy happens, and hidden again as soon as a paste succeeds.
    Deleting the copied source also hides it. (Windows and Linux; macOS Services
    cannot be toggled at runtime — see Notes.)
  • The copy state is now cleared after a successful paste. Previously nothing
    ever cleared it, so Paste stayed armed indefinitely, including across reboots.
  • Pasting into a drive root no longer fails with a path syntax error.
    Explorer expands the verb to paste "C:\", whose trailing separator escapes
    the closing quote and yields the malformed argument C:".
  • The setup window closes on the first click. Closing is now a single path:
    the previous version raced PostQuitMessage against pending input, silently
    vetoed the OS close button for the whole duration of an install, and left the
    close button disabled with no way out.
  • The macOS app bundle no longer declares LSUIElement, which had made mcopy an
    accessory application with no Dock icon at all.
  • Install and uninstall workers are now joined during shutdown instead of being
    detached, so no thread outlives its window.
  • Elevated child processes are gone from the normal flow. The previous version
    launched a hidden elevated helper and waited on it forever, reporting every
    failure as an unexplained exit code.
  • A cancelled copy can no longer be relabelled as completed by a late
    transition.
  • Two rapid pastes no longer race into the same folder; the second is refused.
  • Pasting a folder into itself is detected and refused.
  • The copy-session window no longer underflows when the system clock steps
    backwards.
  • Executable paths written into shell scripts, .desktop files and Automator
    workflows are now escaped for their target syntax.
  • Printing no longer aborts the process when its output stream has been closed.
  • mcopy refuses to register menu entries while running from a download folder,
    disk image, temporary directory or build directory, since those entries would
    break as soon as the location disappeared.
  • The unused mcopy.manifest was removed. It was never embedded, so its
    asInvoker declaration described nothing.

Notes

  • Existing 0.2 machine-wide registry entries are removed automatically when
    mcopy happens to run elevated; otherwise run
    mcopy shell-uninstall --all-users from an elevated prompt once. Leftovers are
    harmless — the per-user entries take precedence.
  • The 0.2 clipboard payload is discarded on first run rather than migrated,
    because it carries no session or timestamp to validate. Copy once after
    upgrading.
  • macOS keeps the Paste service permanently listed: NSServices visibility is
    static, and toggling it would mean rewriting the workflow bundle and restarting
    the pasteboard server. Pasting with nothing copied now shows an explanation.
  • Installers are not code-signed or notarized, so Windows SmartScreen and macOS
    Gatekeeper will warn on first launch.