[3.6.4] - 2026-04-25
Patch release: Windows keystore export fix + autostart UX + update opt-out
Small but high-impact patch release driven by two community bug reports (issues #123 and #124). The headline fix unblocks the Settings → Backup → Export Keystore flow on Windows, where every export was leaving an orphan .tmp file behind and surfacing an "Access is denied (os error 5)" error. Three quality-of-life settings round out the release.
Fixed
- Windows keystore export
os error 5(issue #124) — Exporting a vault backup from Settings → Backup raised "IO error: Access is denied. (os error 5)" on every Windows machine and left anaeroftp_keystore_*.tmpfile in place of the final.aeroftp-keystore. Root cause: the atomic write helper opened the freshly-written temp file withFile::open(read-only on Windows) and then calledsync_all, which on Windows maps toFlushFileBuffersand requires aGENERIC_WRITEhandle. The flush failed before the rename ran. Fix: keep the existing write handle throughflush + sync_alland gate the parent-directory fsync to Unix only, sinceFile::openon a directory needsFILE_FLAG_BACKUP_SEMANTICSon Windows and is a no-op for durability there anyway. - Windows internal Terminal frozen on Start (issue #125) — Opening AeroTools → Terminal → Start on Windows produced a blinking cursor with no shell prompt and no response to keystrokes; the only escape was restarting the app. Root cause: the launcher passed
-Command "function prompt { ... }"to PowerShell to inject a colored prompt, but on Windows 10 with the default ExecutionPolicy the parser stalled inside-Command,spawn_commandnever returned, the Tauri invoke awaited forever, the frontend never received a session id, and every keystroke was silently dropped at the connected-tab gate. Fix: drop the prompt customization on Windows and start PowerShell as a plain-NoLogointeractive shell. Linux and macOS were unaffected. A user-level colored prompt can be added via$PROFILEif desired. - NSIS installer now reports the PATH change in the install log (issue #125 follow-up) — After registering
$INSTDIRinHKCU\Environment\Path, the installer now prints "Open a NEW terminal to run 'aeroftp-cli'" so users who installed via WinGet/UniGetUI in an already-open PowerShell are not surprised whenaeroftp-cliis "not recognized" — existing shells cache%PATH%at launch and need to be reopened.
Added
- Password strength meter on the keystore backup form — The Export Keystore section now shows the same animated 4-segment strength bar already used by AeroVault, with a 0–100 score and a colour-coded label (Weak/Fair/Strong/Excellent). Reuses
PasswordStrengthBarso future tweaks land in both places at once. - Start minimized to tray on autostart (issue #123) — New "Start minimized to tray" checkbox under Settings → General → Startup (visible only when "Launch on system startup" is enabled). When the OS launches AeroFTP from the autostart entry, the main window stays hidden and only the tray icon appears, matching the behaviour expected from background sync apps. Manual launches (double-click on the desktop or Start menu shortcut) always show the window. Detection uses a new
--autostartargument passed bytauri-plugin-autostartand surfaced to the frontend viais_autostart_launch. Default off — existing users see no change. - Don't check for updates toggle (issue #123) — New checkbox under Settings → General → Software Updates that disables both the 5-second startup check and the periodic 24-hour check. The manual "Check for Updates" button continues to work, so the option simply gives users who manage AeroFTP through external package managers (WinGet, AUR, Snap auto-refresh) a way to opt out of the in-app update prompts and bandwidth.
Changed
- NSIS installer no longer reinstates the desktop shortcut on every upgrade (issue #123) — On a fresh install the bundler still creates
Desktop\AeroFTP.lnkas before. On an upgrade, however, the installer now snapshots the desktop shortcut state in the pre-install hook and, if the user had previously deleted the shortcut, removes the one the bundler just recreated. Users who keep the shortcut see no change. - Windows NSIS post-install hooks now actually run (issue #125 root cause) — From v3.6.2 onward the installer hook file defined the four lifecycle hooks as
CUSTOM_{PRE,POST}_{INSTALL,UNINSTALL}, but Tauri's bundledinstaller.nsiinvokes them gated on!ifmacrodef NSIS_HOOK_{PRE,POST}{INSTALL,UNINSTALL}. The macro names didn't match, so!ifmacrodefreturned false and every hook in the file was skipped silently — the HKCU PATH registration, the.aerovaultfile association, the VC++ Runtime bootstrap, the new desktop-shortcut snapshot logic — none of it ran in any shipped Windows installer. Renaming the macros to the names Tauri actually checks for activates all of them in v3.6.4. Existing installs with no PATH entry will get one on the next upgrade. Diagnosed thanks to a Windows-side investigation reported indocs/dev/aeroftp-windows-path-hook-bug-report-2026-04-25.md. - Silent uninstall preserves user data — The pre-uninstall hook prompts the user via three
MessageBoxdialogs to selectively remove saved servers, AI chat history and cache. Now that the hook actually runs, those dialogs would have surfaced during every WinGet upgrade (which silently uninstalls the old version before installing the new one), either popping blocking modals or — depending on Windows version — defaulting to "yes" and wiping data. The hook now bails out early viaIfSilent, preserving everything when not in interactive mode. - Cross-Profile Transfer pre-selects the active server — When the dialog is opened from the remote pane while connected, the source profile and source path are now pre-populated from the active session, so the most common flow (copy from the server you're already looking at to another saved server) takes one click instead of three. Source/destination filtering — already in place — still excludes the chosen source from the destination list.
Translations
- All four new settings labels and descriptions translated across the 47 supported locales.
Downloads:
- Windows:
.msiinstaller,.exe, or.zipportable (no installation required) - macOS:
.dmgdisk image - Linux:
.deb,.rpm,.snap, or.AppImage