Skip to content

Releases: wenshui330/roco

Roco 0.2.1

Choose a tag to compare

@wenshui330 wenshui330 released this 19 Jul 10:02

Roco 0.2.1 adds automatic language adaptation across the command-line experience and copy activity UI.

What's changed

  • Detects the Windows user interface language automatically during installation.
  • Uses Simplified Chinese on Chinese Windows installations and English as the fallback for other system languages.
  • Persists the selected language in %LOCALAPPDATA%\Roco\language, so the daemon, Explorer integration, and CLI use a consistent locale.
  • Localizes command help, command descriptions, version output, status output, lifecycle messages, and user-facing errors.
  • Localizes copy activity phases, the elapsed-time label, and file-conflict dialogs.
  • Updates the English and Simplified Chinese documentation and architecture reference.
  • Updates all application and component versions to 0.2.1.

Install or upgrade

Download and extract roco-0.2.1-windows-x64.zip, then run:

.\roco.exe install --start

Roco 0.2.0 and later can be upgraded in place with the same command.

Package integrity

SHA256  A8192589EC0400B73A3EE218825849A5462C7E66220C3E967CDB2A6C6C9BA4CC

Roco 0.2.0

Choose a tag to compare

@wenshui330 wenshui330 released this 19 Jul 05:28

Roco 0.2.0 focuses on reliable Windows sign-in startup, safe Explorer integration, and direct in-place upgrades. It resolves the Explorer lifecycle and login issues reported against 0.1.0 while preserving the same copy-and-paste workflow and Robocopy transfer path.

Upgrade

Starting with version 0.2.0, upgrading uses the same command as a clean installation:

  1. Download and extract every file from roco-0.2.0-windows-x64.zip into one directory.
  2. Open PowerShell in that directory.
  3. Run:
.\roco.exe install --start

There is no need to run roco stop or roco uninstall first. The installer stops the active daemon, replaces the installed files, switches Explorer to the new Agent, and starts the upgraded version automatically.

Changes and fixes

Silent and reliable sign-in startup

  • Added the dedicated roco-daemon.exe GUI-subsystem launcher.
  • The sign-in Run entry now starts the launcher instead of opening roco.exe in a visible console window.
  • The launcher uses CREATE_NO_WINDOW, redirects standard handles, waits for real daemon readiness, and retries bounded startup failures.
  • Added the Local\Roco.Ready.v1 readiness event. roco start and roco status now distinguish a process that merely exists from an Agent that has successfully attached to Explorer.
  • Explorer Agent activation timeouts are retained and retried instead of being incorrectly reported as ready.

Explorer Agent lifetime and shutdown safety

  • Fixed an Explorer use-after-unload failure where patched callbacks could still point into roco_explorer_agent.dll after the DLL had been unloaded.
  • The Agent now acquires a counted self-reference before installing window subclasses or IFileOperation vtable hooks.
  • Normal shutdown is ordered: disable interception and restore vtables, remove thread hooks, remove subclasses, drain active callbacks, then release the DLL from a dedicated thread.
  • Vtable slots are restored only when they still point to Roco, preserving any later third-party hook.
  • If Explorer cleanup cannot be completed safely, the Agent remains mapped and inert instead of risking an Explorer crash.
  • Unexpected daemon termination now causes IPC requests to fall back to Explorer's saved implementation.
  • Eliminated the associated Explorer crash, transient shutdown error dialog, desktop flash, and uninstall-time Explorer termination behavior.

Automatic in-place upgrades

  • Added content-addressed installed Agent names such as roco_explorer_agent-<fingerprint>.dll.
  • Added the atomically replaced roco-agent.current pointer using MoveFileExW with replace and write-through semantics.
  • An older Agent DLL still mapped by Explorer is no longer overwritten, eliminating Windows sharing violation errors 32 and 33 during upgrades.
  • Stale managed Agent DLLs are removed automatically after they unlock or on a later start.
  • Installed roco.exe and roco-daemon.exe replacement now retries transient sharing violations for up to ten seconds.
  • Added a locked-Agent regression test that verifies side-by-side upgrade succeeds without uninstalling the previous version.

Sign-in black-screen fix

  • Corrected Explorer window classification that previously treated every top-level WorkerW as the desktop.
  • Generic WorkerW windows used by the taskbar, tray, input system, and other Shell workers are no longer injected.
  • Desktop injection is now limited to the Progman or WorkerW window that actually hosts SHELLDLL_DefView.
  • Folder integration remains attached on demand only to verified CabinetWClass threads in explorer.exe.
  • This removes the burst of cross-thread hooks that briefly blocked Shell painting during login.

Activity window behavior

  • The copy activity window now enters the topmost band before every operation, including the first operation after installation or reboot.
  • It remains topmost and draggable for the complete transfer lifetime and is hidden immediately when the task finishes.
  • Hiding or completing a task removes the inactive window from the topmost band.

Documentation and release metadata

  • Rewrote docs/architecture.md to document the complete process model, interception paths, Agent IPC, Robocopy pipeline, fallback rules, rendering model, ordered shutdown, upgrades, and failure boundaries.
  • Added explicit English and Simplified Chinese upgrade instructions to the README files.
  • Updated the CLI, Explorer Agent crate, Cargo lockfile, and Windows manifest to version 0.2.0.

Verification

  • 19 workspace tests passed, including real Robocopy copy/move smoke tests and the locked-Agent upgrade regression test.
  • cargo fmt --all --check passed.
  • cargo clippy --workspace --all-targets -- -D warnings passed.
  • cargo build --workspace --release passed.
  • The release executable reports roco 0.2.0.

Package checksum

SHA256  90970DF759267D0E3CE022F21C88F5594886E9E68874A2B45807B25CC9311F6E  roco-0.2.0-windows-x64.zip

Full changelog: v0.1.0...v0.2.0

Roco 0.1.0

Choose a tag to compare

@wenshui330 wenshui330 released this 18 Jul 14:43

Roco 0.1.0

The first public release of Roco.

Roco accelerates Windows Explorer file transfers without changing the way you copy and paste.

Highlights

  • Keep using Ctrl+C, Ctrl+X, Ctrl+V, context-menu Paste, the command bar, and drag-and-drop.
  • Route supported filesystem transfers through Windows' built-in Robocopy engine.
  • Accelerate project directories and small-file-heavy workloads with multithreaded copying.
  • Preserve copy and move semantics, with conflict handling and graceful Explorer fallback.
  • Show a lightweight native activity window while copying.
  • Install and run entirely at the current-user level.

Install

  1. Download and extract roco-0.1.0-windows-x64.zip.
  2. Open PowerShell in the extracted directory.
  3. Run ./roco.exe install --start.

SHA-256

75FF9341A9CDE73C39156FBAB2BE02B5D8B3DFF8C39812DD41780849A8F9907B