Repository navigation
Replies: 13 comments
Ehud triage batch: Filen API key, profiles --tui, 2FA popup, image preview + galleryPost-4.0.8 follow-up, fixed on
Verified green: typecheck, cargo check, cargo fmt --check, clippy -D warnings, 395 bin tests; the preview cap and gallery were verified live against a Filen account. |
Second 4.0.9 batch: AeroFile bridge import, CLI
|
| Area | Description | Status | Ref |
|---|---|---|---|
| AeroFile / bridge | A bridge config in the home folder is detected and an "Import to AeroFTP" action brings it into the app; this branch also lands the My Servers Active Sessions filter, an open-session count chip, and a 2FA re-entry UX pass that reuses a live backend session instead of re-logging in. | 🟢 fixed | f77e74714 |
| CLI / profiles | profiles -i now labels the action prompt and adds a h help alias, so the interactive line prompt names what it is asking for instead of a bare cursor. |
🟢 fixed | cac53e420 |
| CLI / profiles | profiles -i . refresh clears the screen through crossterm instead of raw ANSI, so the redraw stays clean on legacy Windows consoles. Linux and macOS are unaffected; live Windows verification is still owed before this is called done-done. |
🟢 fixed | f126f9a36 |
| MCP / setup | The in-app MCP dialog showed ~/.claude/.mcp.json for Claude Code, a file Claude Code does not read. It now shows the correct user-scope command claude mcp add -s user aeroftp -- aeroftp-cli mcp, so the server actually becomes discoverable. |
🟢 fixed | 3aea23745 |
Verified green: typecheck, i18n 46 locales (0 missing, 0 orphan), cargo fmt --check, clippy -D warnings, 395 bin tests. The #341 refresh behavior is legacy-Windows-console specific and could not be reproduced on Linux, so its live check is carried to a Windows pass.
Bridge: Jottacloud now exports to rclone + a published compatibility matrixPost-4.0.8 follow-up, landed on Jottacloud was the one cloud backend where rclone export was both wanted and reachable: it is not classic OAuth (AeroFTP treats it as an API provider) and AeroFTP persists its OIDC refresh token, so the exported remote can refresh itself. The other OAuth providers stay import-only because rclone re-authenticates them with its own provider-issued client.
Verified end-to-end against a live Jottacloud account: Verified green: cargo fmt --check, clippy -D warnings, 395 bin tests, the rclone export lib tests including a new Jottacloud export case. |
Consistent password-create UX on every create-password surfacePost-4.0.8 follow-up, done on Wherever AeroFTP asks you to create a password, the field now carries a strength meter, a live confirm-match indicator (green when the two fields match, red when they differ) and a show/hide toggle, so a typo cannot silently lock your data. This is a presentational and guard pass: no crypto or storage path changed, the only added behaviour is blocking save/create until the confirm matches.
Login/unlock boxes (account lock, vault open, archive extract, SSH passphrase, cloud logins) were deliberately left alone: a strength meter on a login field is wrong. Verified green: typecheck, i18n 46/46 (4588 keys, 0 placeholders), vitest 298 tests. Live-verified by the owner (Cryptomator create: red "passwords do not match" flips to green "passwords match"). |
Compression UX: real size estimate +
|
| Area | Description | Status | Ref |
|---|---|---|---|
| Real estimate bar | The Compress and AeroVault Zip dialogs now show the estimated output size as a bar that updates on every option change. The estimate is measured, not a fixed ratio table: a backend canary samples the actual input, compresses it with the chosen codec/level and extrapolates the measured ratio (exact when the whole input fits the sample cap, marked with a "≈" otherwise). | 🟢 done | 290997e7b |
.aerozip recovery opt-out |
Reed-Solomon recovery parity is now disablable for .aerozip (default stays ON, behaviour unchanged): a checkbox in the Zip dialog turns parity off so the archive can match canonical compression ratios, and the estimate bar drops its amber parity segment when off. CLI parity: --recovery-level 0 (or off / none) disables recovery; sub-5 positive parity is still rejected. |
🟢 done | ad2bfaa2a |
Verified green: typecheck, i18n 46/46, cargo fmt, clippy --lib and --bin aeroftp-cli (-D warnings), CLI recovery_level + archive_roundtrip tests. Live-verified by the owner: parity ON shows the amber overhead segment (about 15% smaller on a sample .jar), OFF produces a smaller archive with no parity segment (about 29% smaller).
AeroMount "Save all..." for unlocked vaults + a Tab-order fixv4.0.9 work, done on The first of Ehud's #322 follow-up ideas lands: getting content out of an unlocked vault no longer means one file at a time. A new "Save all..." action in the unlocked-vault view (both Cryptomator vaults and
Both adapters are unit-proven byte-identical: a real Cryptomator vault built in-test, ingested with a nested tree, exports to folder and Verified green: |
v4.0.9 bundle audit: 7 hardening and cleanup fixes on
|
| Area | Description | Status | Ref |
|---|---|---|---|
| rclone export (security) | The exported rclone.conf is created 0600 before the Jottacloud OAuth refresh token / obscured passwords are written, removing a brief world-readable window. |
🟢 fixed | a71d6001b |
| rclone export (security) | Config values (host, user, region, endpoint, secrets) are stripped of CR/LF via a sanitizer, so a crafted profile field can no longer forge an extra [remote] section when re-exporting (vector: import a hostile config, then export). A new test asserts no forged section survives. |
🟢 fixed | 2da5adfb8 |
| CLI parity | Dev-only providers (Google Photos, Blomp) are no longer advertised or accepted by the release CLI, mirroring the GUI that already hides them. They stay available in development builds. | 🟢 fixed | 2da5adfb8 |
| Repo hygiene | Two sources were committed as binary blobs (a literal NUL byte in a cache key) so Git showed no diff or blame and skipped formatting tools. They are plain text again. | 🟢 fixed | a71d6001b |
| Archive | A failed .aerozip pack no longer leaves a truncated file at the chosen path, matching the folder and .zip exporters. |
🟢 fixed | a71d6001b |
| CLI archive | The recovery report no longer claims a 20 percent parity overhead for archives created without recovery (it reports 0). | 🟢 fixed | a71d6001b |
| Accessibility | The live password match / mismatch hint is now announced to screen readers (role=status aria-live=polite). |
🟢 fixed | a71d6001b |
Verified green: typecheck, i18n 46/46 locales, cargo fmt, clippy --lib and --bin aeroftp-cli (-D warnings), vitest 298, Rust lib 2274 and bin 395 tests (including the new rclone INI-injection test).
AeroMount: mount an unlocked vault as a read-only filesystemPost-4.0.8 follow-up, shipped on This completes the second half of Ehud's first idea. After "Save all..." (bulk export, #15 above), you can now mount an unlocked vault as a read-only drive and browse the decrypted contents directly in your file manager, instead of extracting file by file. It works for both an unlocked Cryptomator vault and an
Verified green: |
Filen and the OAuth cloud providers now export to rclonePost-4.0.8 follow-up, on
Net: |
Interactive
|
| Area | Description | Status | Ref |
|---|---|---|---|
groups [-i] |
New section: re-index(#) / Rename / Copy / Delete / List. Groups now carry a persisted order, so re-index is a real verb; Copy duplicates a group's membership under a new name. | 🟢 done | 6971ed666 |
users -i |
New section: re-index(#) / Rename / Copy / Delete / Fav / List / Tree. Copy duplicates a user's saved servers into a new password-free user (no passwords copied); Tree prints users to their servers with group tags. | 🟢 done | e826dc26b |
| Default user | The favourite/default user (auto-unlocked on launch) is now a real is_default column in the user-partitions DB, single-winner, with GUI Manage Users parity, replacing the browser-local localStorage default. The CLI Fav verb and the GUI star write the same flag. |
🟢 done | e826dc26b |
| My Servers sidebar | Vault-aware: standard protocol/quick buckets render only when non-empty; user-created groups always show. Group chips are drag-reorderable, persisting the same order the CLI re-index writes (the drag was wired but never initiated on WebKitGTK until a dataTransfer fix). | 🟢 done | 6971ed666, e826dc26b |
Verified green: cargo fmt; clippy bin+lib -D warnings; cargo test --bin aeroftp-cli (408); lib user_partitions tests (incl. set_default_user single-winner); typecheck; i18n:validate 46/46 (no new strings); vitest 311. CLI verbs and the GUI group drag verified live.
Esc now cancels OAuth and MEGAcmd WebDAV connection attemptsPost-4.0.8 follow-up, fixed on Pressing Esc aborts an in-progress connect for credential providers, but it did nothing for OAuth profiles or for a MEGAcmd WebDAV profile while the MEGAcmd daemon was not running. Two separate gaps, now both closed so Esc (and the "still connecting" Cancel button) stop the attempt for every profile type.
The cancellation is honoured in the backend (the in-flight HTTP connect / blocked subprocess is dropped), not just by abandoning the UI promise, so the attempt actually stops rather than finishing in the background. Verified green: typecheck; vitest 315; |
|
✅ Released as v4.0.9. Everything queued in the table above shipped in v4.0.9, now published (release notes). The headline is a pass on AeroVault and AeroMount for unlocked vaults, mostly from @EhudKirsh's idea #1: the vault flow was unified into a single Compressor-style modal with a Alongside it:
Per the tracker convention, 4.0.x patches accumulated here; the next line gets its own tracker. The next release is v4.1.0, tracked in #361. Known issues found in 4.0.9 will be logged there as reports come in. Thanks to @EhudKirsh and everyone who reported, tested and suggested. |


Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
AeroFTP 4.0.x, Rolling Tracker
Umbrella issue for AeroFTP 4.0.x: known issues for the current release (v4.0.8, release notes, published 2026-06-22) and the patches/updates already landed on
mainfor the next patch release (v4.0.9).Before opening a new issue, please check the lists below. If your problem is already tracked here, just add a thumbs-up reaction or a comment with your environment (OS, version, provider) instead of filing a duplicate. We update this issue as bugs are found and fixed.
Found something that is not listed? Open a new issue and we will link it here.
What shipped in 4.0.8
See the v4.0.8 release notes and the previous tracker (#340).
Patches & updates queued for 4.0.9
Done on
main, shipping in the next release.09d159430aeroftp-cli profiles --tuistays in the TUI after an action instead of dropping to the-iline prompt: the menu re-opens after each action and only an explicit Quit exits; a cancelled action (blank target) returns to the menu.d7a933b286b4bb4ed9cfca2d49d2b2761297f77e74714aeroftp-cli profiles -iaction prompt is labeled and ahhelp alias was added, so the interactive line prompt names the action it is asking for instead of showing a bare cursor.cac53e420profiles -i.refresh clears the screen consistently via crossterm instead of raw ANSI, so the redraw is clean on legacy Windows consoles (Linux/macOS unaffected; live Windows verification still owed).f126f9a36~/.claude/.mcp.jsonpath (which Claude Code does not read) is replaced with the user-scope commandclaude mcp add -s user aeroftp -- aeroftp-cli mcp, so the server is actually discoverable.3aea23745export rclonethenrclone lsdlists the real folders). The other OAuth providers stay import-only (rclone re-auths them with its own client).73ca3657bdocs/BRIDGE-COMPATIBILITY.md, linked from the README, gives the full per-protocol and per-provider import/export breakdown for all 15 bridge tools, corrected to the real export behaviour (only recoverable-secret backends plus Jottacloud export).90f2cdbc1.aerovaultcreate and vault change-password, master-password setup/change, keystore and servers/settings export, user add/change-password, the optional Compress archive password, and the share-link field (now masked). Save/create is blocked until the confirm matches, so a typo cannot silently lock data. Login/unlock boxes were deliberately left alone.8f0906547290997e7b.aeroziprecovery parity is now opt-out (default ON, behaviour unchanged): a checkbox in the Zip dialog disables Reed-Solomon recovery so the archive can match canonical compression ratios, and the estimate bar drops its parity segment when off. CLI parity:--recovery-level 0(oroff/none) disables recovery.ad2bfaa2a.aerovault/.aerozipin one shot, to a folder, a single.zip, or a single.aerozip, instead of one file at a time. A sharedReadableVaultseam drives a streaming zip writer for both container types, and a confirm dialog flags the plaintext export.b120733d60be51025brclone.confis now written0600before the Jottacloud OAuth refresh token / obscured passwords land in it (no world-readable window), and every config value (host, user, region, endpoint, secrets) is stripped of CR/LF so a crafted profile field can no longer forge an extra[remote]section on re-export (new injection test).a71d6001b,2da5adfb8.aerozippack no longer leaves a truncated file behind; the CLI recovery report no longer overstates parity overhead for archives created without recovery; and the live password match hint is now announced to screen readers.a71d6001b,2da5adfb8.aerovault/.aerozipas a read-only filesystem in your OS file manager, so you can browse and open the decrypted contents instead of extracting file by file. It is ephemeral and session-bound: the vault password is passed to the mount process over stdin and never stored, and the mount auto-unmounts when you lock the vault or quit. It reuses the existing AeroMount FUSE engine via a read-only adapter (seekable per-chunk reads for Cryptomator, a first-access temp cache for large.aerovaultfiles). Linux first; macOS and Windows are a later step.058c81523.aerovaultopen form and the encrypted-archive password prompt now focus the password input on open, so you can type straight away instead of clicking it first.44f8de71drclone.confas usable remotes, not just import (extending row 10, which only covered Jottacloud). Filen carries email + password + its Filen CLI api key; the OAuth backends emit the AeroFTP-persisted token that rclone refreshes on first use (OneDrive also drive_id/drive_type, pCloud the EU hostname); OpenDrive and B2 their account secrets. The public bridge compatibility matrix was corrected to match.e746dacff,d49ddbd9f,709e74371aeroftp groupsandaeroftp usersCLI sections (Ehud #311): dedicatedgroups [-i]andusers -iprompts on one shared-iengine matchingprofiles -i(selectors by index or name,.refresh,hhelp, sticky loop). Groups gain re-index(#)/Rename/Copy/Delete/List with a persisted order shared with the GUI My Servers group list (now drag-reorderable); users gain re-index/Rename/Copy/Delete/Fav/List/Tree, where Copy duplicates a user's servers into a new password-free user (no passwords) and Fav marks the default user auto-unlocked on launch. The default user is now a realis_defaultDB column with GUI Manage Users parity, replacing the browser-local default. The My Servers sidebar is vault-aware (standard buckets hide at 0, user groups always show).6971ed666,e826dc26bfreeRequiresCardflag marks providers that have a genuine free tier but require a credit card at signup (Amazon S3, Azure Blob, Yandex Object Storage, Oracle Cloud, Google Cloud Storage, Cloudflare R2, Alibaba OSS), surfaced under a new "Free + card" filter with a card glyph; the remaining no-free providers (Tencent COS, Wasabi, Storj, IDrive e2, DigitalOcean Spaces, Hetzner Storage Box, MEGA S4) stay in Paid. Every classification was re-verified against official pricing pages (correcting stale "12-month trial" notes on Amazon S3 / Azure and the free sizes for FileLu and Felicloud).0549abef19b25a5da5Requested / under consideration
Community ideas captured for triage. Not committed to a release yet.
.jpgto.jxltranscode in AeroFile: JXL re-encodes an existing JPEG losslessly and reversibly (the original JPEG bytes reconstruct exactly), for a real size win with no quality loss. Candidate framing: AeroFile as a GUI for libjxl.mp3to.opusis destructive and should not be done silently)Known issues found after release
None reported yet. This list will be updated as reports come in.
Status legend: 🔴 confirmed · 🟡 investigating · 🔵 planned / idea · 🟢 done / fixed (pending release) · ✅ released
Affected platforms
Maintained by the AeroFTP team. Current release v4.0.8, next patch v4.0.9. Patches accumulated here; each major release still gets its own tracker.
All reactions