Repository navigation
Replies: 15 comments
Two post-4.1.0 Linux UX fixes on
|
| Area | Description | Status | Commit |
|---|---|---|---|
| AeroShare (Linux) | The inbox "reveal file" action ran a plain xdg-open on the file, which OPENS it in the default app instead of revealing it. It now reveals-and-selects the file in the file manager via the D-Bus org.freedesktop.FileManager1.ShowItems method (Nautilus, Dolphin, Nemo, Caja), with the path percent-encoded into a file:// URI, falling back to opening the parent folder on minimal distros without that service. Directories keep using xdg-open. Brings Linux in line with the Windows /select, and macOS -R paths |
🟢 fixed | 843c94c4f |
| AeroCloud tray | The "Open Cloud Folder" tray entry is now disabled when AeroCloud is not configured, guarding the stale-enabled case where it would point at the unrealised ~/AeroCloud default and open a non-existent path |
🟢 fixed | 7cbbada32 |
Verified green: cargo fmt, clippy --all-features --tests and --bin aeroftp-cli with -D warnings, the full cargo test suite (exit 0), vitest 378/378, tsc typecheck, and i18n validate (0 missing, 0 needs-translation).
Profile duplication and encrypted-overlay connect fixes (Filen / rclone-crypt / AeroCrypt)Post-4.1.0 follow-up, fixed on
Verified green: TypeScript typecheck ( |
7z encrypted header (-mhe): hide filenames, opt-in like 7-ZipPost-4.1.0 follow-up, shipped on Until now a password-protected 7z encrypted only the content stream and left the filenames readable in the cleartext header. That was a limit of the unmaintained
A unit test proves the filename never appears in the raw archive bytes (header truly encrypted) and that the password roundtrips. i18n: the new strings are translated across all 47 locales. Verified green: |
AeroShare anti-flood gate and discovery opt-outThe two AeroShare P2P follow-ups deferred from the v4.1.0 pre-release audit, fixed on Both were intentionally deferred from the v4.1.0 audit (the 6 confirmed bugs shipped in v4.1.0). The first was a Medium attention-DoS, the second an Info-level privacy hardening idea. Both are now closed.
Surfaces: new Verified green: cargo fmt, clippy lib and |
Kilo Gateway is now a native AeroAgent AI providerNew feature on AeroAgent already speaks to 24 providers; this adds Kilo (Kilo Gateway) as a 25th, native option. Kilo Gateway is an OpenAI-compatible endpoint that routes to many open and free models behind a single key, including a rotating Auto Free model with no credits required, so it is another genuinely free way to try AeroAgent next to Ollama, Cerebras, Groq and Gemini.
Verified green: |
CLI FTPS no longer crashes on connect, and suppaftp is bumped to 10.0.0Post-4.1.0 follow-up, fixed on
Validated live against the axpbuntu lab (
Known follow-up (not yet fixed): the GUI entrypoint likely shares the same Verified green: |
The 7z compression level now actually takes effectPost-4.1.0 follow-up, fixed on The Compress dialog showed Fast / Normal / Maximum buttons for 7z and the CLI accepted
Verified green: |
Triage of the v4.1.0 feedback (@EhudKirsh): six bugs fixed on
|
| Area | Description | Status | Ref |
|---|---|---|---|
| Filen S3 (rename) | Renaming a folder with an emoji or non-ASCII name on Filen's S3 bridge returned 401 The signature does not match. The folder-copy path listed child keys without decoding Filen's already percent-encoded keys, then encoded them again, so the signed x-amz-copy-source was double-encoded and broke SigV4. Fixed: decode Filen keys once in the key listing (mirrors the normal directory listing), covering rename, recursive delete and copy-verification of unicode-named keys |
🟢 fixed | 324cd4bf6, #368 |
| Benchmark (OpenDrive API) | OpenDrive API uploads failed in the benchmark with Incorrect chunk offset: uploaded=0, chunk_offset=5242880. The parts were sent in parallel, but OpenDrive's chunked upload is strictly sequential. Fixed: send OpenDrive multipart as a single in-order stream; pre-release audit added an explicit DAG regression for single-slot upload-part chaining and made shaped multipart cancellation abort-safe |
🟢 fixed | 324cd4bf6, 2ab13baac, #368 |
| Benchmark (cleanup) | The aeroftp-bench folder was left behind empty on Google Drive, MEGA and kDrive. The parent removal was gated on preconditions these three break (non-idempotent mkdir on Drive and kDrive, the --test-root-prefix guard, MEGA soft-delete lag). Fixed: best-effort emptiness-guarded parent removal plus idempotent mkdir on Drive and kDrive; pre-release audit tightened Google Drive mkdir so an existing same-named file is not mistaken for an existing folder |
🟢 fixed | 324cd4bf6, 2ab13baac, #368 |
| AeroFile (eject, Windows) | Ejecting a USB drive briefly flashed a console window. The eject helper spawned PowerShell without the no-window flag. Fixed: a shared no-window spawn helper applied to eject, rclone-import and scheduled-task spawns | 🟢 fixed | 324cd4bf6, #351 |
| AeroFile (eject, stale entry) | A just-ejected drive lingered in Other Locations for a few seconds and re-ejecting it errored, because the sidebar re-read the OS mount table while it still reported the drive. Fixed: drop the ejected device from the list on success, then reconcile shortly after | 🟢 fixed | 324cd4bf6, #351 |
| CLI benchmark TUI | The aero benchmark --tui picker flickered in split-screen when the footer help row wrapped to a second line. Fixed: line-wrap is disabled in the picker so a wrapped footer cannot scroll the view |
🟢 fixed | 324cd4bf6, #277 |
Enhancement ideas captured
| Area | Description | Status | Ref |
|---|---|---|---|
| Benchmark progress | A live percentage and progress bars instead of the k/N counter (most useful for the many-small-files run) |
🔵 idea | #368 |
| Benchmark columns | A profile-type column before Protocol (for example MEGAcmd WebDAV, S3Drive S3, pCloudDrive OAuth) | 🔵 idea | #368 |
| Benchmark network note | Surface a mid-run network or IP change (currently only start-versus-end is compared) | 🔵 idea | #368 |
| AeroFile preview | Click a line number in the text preview to select the line, drag to extend (IDE-style gutter) | 🔵 idea | #347 |
Already available
The many-small-files benchmark you asked about is already implemented: aero benchmark --file-count N --file-size SIZE runs an upload/list/stat/download/delete sweep over many files and reports files-per-second. Give it a try and let us know if it matches what you had in mind.
The tracker body and the dedicated fix comments now carry the fixed status. We will still re-check the provider-specific paths on the v4.1.1 build with real accounts / Windows hardware before closing the reporter-side confirmations.
CryptOverlayProvider: one transparent-encryption decorator every remote surface routes throughPost-4.1.0 follow-up, fixed on Chasing that one mismatch revealed a structural problem: the crypt overlay (native AeroCrypt and interop rclone-crypt) was applied ad hoc, one command at a time, so any surface that resolved a provider for the profile on its own bypassed it. Those surfaces wrote plaintext into the encrypted store (silent corruption) or read back ciphertext (garbled results). The fix is architectural: a single Before / after (the gaps closed)
Rows 1-7 landed in earlier phases; rows 8-11 close the Phase 4 completeness-critic sweep this cycle. Proven not-a-gap (covered or n/a): archive compress/extract (local only), touch (wrapped backend), benchmark (wrapped, writes ciphertext), EC sidecar (CLI wrapped; background sync does not emit it), versioning trash/.bak (local archiving), thumbnails (disabled fail-safe), DAG multipart (decorator forces a single encrypted stream), OAuth connect (not crypt-bindable). Fail-closed regression tests (T4.3)
Verified green: fmt, clippy (lib+tests and |
v4.1.0 feedback fixes landed on
|
| Area | Description | Status | Ref |
|---|---|---|---|
| Filen S3 (rename/delete) | Emoji / non-ASCII names on Filen's S3 bridge no longer 401: keys from the listing are decoded once so the SigV4 copy-source is not double-encoded (also fixes recursive delete and copy-verify of unicode names) | 🟢 fixed | 324cd4bf6 |
| Benchmark (OpenDrive API) | OpenDrive upload no longer fails with "Incorrect chunk offset": its chunked upload is sent strictly sequentially (fan-out 1) | 🟢 fixed | 324cd4bf6 |
| Benchmark (cleanup) | The aeroftp-bench folder is now removed on Google Drive, MEGA and kDrive (best-effort, emptiness-guarded, never a --test-root-prefix path), plus idempotent mkdir on Drive and kDrive |
🟢 fixed | 324cd4bf6 |
| AeroFile eject (Windows) | Eject no longer flashes a console window: a shared no-window spawn helper, also applied to rclone import and the schtasks autostart spawns | 🟢 fixed | 324cd4bf6 |
| AeroFile eject (stale) | A just-ejected drive is dropped from Other Locations immediately so a re-eject cannot error, with a delayed reconcile | 🟢 fixed | 324cd4bf6 |
CLI benchmark --tui |
Footer no longer flickers in split-screen: line-wrap is disabled in the picker so a wrapped help row cannot scroll the view | 🟢 fixed | 324cd4bf6 |
| AeroFile text preview (theme) | The preview now follows the Light and Ice themes instead of staying dark | 🟢 fixed | e2d612a45 |
| AeroAgent model modal (theme) | The Add/Edit model modal and the "Available Models" modal now follow the Light and Ice themes | 🟢 fixed | e2d612a45 |
| AeroFile preview scrollbar | Widened from 6px to 14px, scoped to the preview | 🟢 fixed | e2d612a45 |
Verified green on the bug batch (324cd4bf6): cargo check --all-targets, clippy -D warnings, cargo fmt --check, tsc --noEmit, i18n:validate (0 missing), and the unit test suite (2467 passing, including a new S3 unicode-key regression test). The theme quick wins (e2d612a45) are typecheck green and the Light theme was verified in a dev run.
Still to confirm on the released build before these are closeable: the live-cloud paths (OpenDrive API upload, Filen S3 emoji rename, and the Google Drive / MEGA / kDrive cleanup) on real accounts, and the Windows-only eject and console-flash behaviour on real Windows. We will re-check on v4.1.1; reporters, please confirm there.
Crypt overlay now unlocks and decrypts on OAuth cloud profilesPost-4.1.0 follow-up, fixed on The crypt overlay was offered on OAuth profiles but activating it landed on the raw, still-encrypted view: the overlay "could not be unlocked". The root cause was provider-specific, not the overlay engine. Turning on an AeroCrypt overlay on an empty cloud folder probes for its config file (
Verified green: cargo fmt, cargo clippy (lib and |
Ice theme, benchmark selection, and pre-unlock / preview polishPost-4.1.0 batch, fixed on
Verified green: cargo fmt, cargo clippy (lib and |
v4.1.1 pre-release audit hardening landed on
|
| Area | Description | Status | Ref |
|---|---|---|---|
| Crypt compare / reconcile | CLI check / reconcile and MCP check_tree no longer try to unlock/decrypt a crypt profile after the provider resolver has already wrapped it. The overlay decorator already lists plaintext names/sizes; the compare path now detects that and skips the second normalization pass, avoiding false empty-tree / wrong-key / drift reports |
🟢 fixed | 2ab13baac |
| Shaped multipart Stop | UploadPart nodes now honor the same cancellation token as single upload/download nodes. Stop can win during multipart begin, part upload, part file-read, or complete; failures trigger the existing best-effort provider abort, so a stopped S3 / OpenDrive / Google Drive shaped multipart upload cannot keep going to a remote commit |
🟢 fixed | 2ab13baac |
| AeroShare identity rotation | Rotating the AFID now stops every live served share before minting the new identity. The UI warning ("old share links / served drives stop working") now matches the runtime: old tickets are not left serving until manual Stop or app exit | 🟢 fixed | 2ab13baac |
| AeroShare discovery opt-out | Outbound send/knock/action/presence paths now apply the active persisted discovery mode before creating a fresh identity endpoint, even when the receiver is off after restart. A saved none opt-out is therefore honored outside the receive loop too |
🟢 fixed | 2ab13baac |
| Crypt-wrapped GitHub profiles | Generic GUI uploads/mkdir/delete and executor uploads no longer enter GitHub-only downcast paths when the live provider is a CryptOverlayProvider over GitHub. They use the overlay's generic encrypting methods instead of failing before encryption |
🟢 fixed | 2ab13baac |
| GitHub executor cancellation | The GitHub-special upload branch in the provider executor now races the cancel token like the generic path, so batch/sync Stop does not continue into a GitHub commit after cancellation | 🟢 fixed | 2ab13baac |
| Benchmark / Google Drive hardening | Google Drive idempotent mkdir now treats an existing name as success only when the existing item is a folder, so a same-named file cannot block benchmark folder creation with a misleading AlreadyExists path | 🟢 fixed | 2ab13baac |
| Crypt overlay polish | Failed inner downloads now clean up temporary ciphertext files, and rclone-crypt filename_encryption=off display paths decode the file leaf with the right file-vs-directory suffix semantics |
🟢 fixed | 2ab13baac |
Verification
Green locally before push:
cargo check --manifest-path src-tauri/Cargo.toml --all-targetscargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warningscargo fmt --manifest-path src-tauri/Cargo.toml --checkgit diff --checknpm run typechecknpm run i18n:validate(46 locales, 0 errors / 0 warnings)- Regression tests: Filen S3 unicode key decode, OpenDrive multipart hints, single-slot upload-part chaining, multipart cancel+abort, crypt compare normalization, crypt overlay provider suite, AeroShare stop-all-shares, benchmark remote roots, mkdir ladder, and Google Drive folder-only mkdir idempotence.
Release-time smoke still useful on real services/hardware: Filen S3 emoji rename, OpenDrive API benchmark upload, Google Drive / MEGA / kDrive cleanup, and the Windows USB eject UI behaviour.
v4.1.0 feedback bug batch: fixed details and verificationFollow-up to the original triage block, fixed on
Audit hardening found while validating the batch
VerificationGreen after the final audit commit and push:
|
✅ Released: AeroFTP v4.1.1v4.1.1 is published: release notes. All platforms green (Linux, Windows, macOS), Sigstore-signed, on the Snap Store (stable) and AUR. Everything queued on this tracker shipped:
Thanks @EhudKirsh for the detailed v4.1.0 feedback that drove most of this release. Closing this tracker. The next one is #384 (AeroFTP 4.1.2), which carries over the still-open "Requested / under consideration" items. |
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.1.1, Rolling Tracker
Umbrella issue for the next AeroFTP point release (v4.1.1): known issues reported against v4.1.0 and the patches/updates landing on
mainafter the v4.1.0 tag.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.1.0
See the v4.1.0 tracker (#361) for the full 4.1.0 change set (AeroShare P2P Beta, AeroAgent coding loop, per-user groups/favourites, the iroh 1.0 / sigstore 0.14 security hardening, the OS extract verbs, and the pre-release security audit remediation).
Patches & updates queued for 4.1.1
Done on
main, shipping in the next release. Items appear here as they land.org.freedesktop.FileManager1.ShowItemsmethod (Nautilus, Dolphin, Nemo, Caja), with the path percent-encoded into afile://URI, and falls back to opening the parent folder on minimal distros without that service. Directories keep usingxdg-open. Matches the Windows/select,and macOS-Rpaths843c94c4f~/AeroClouddefault and opened a non-existent path7cbbada32server_<id>vault entry under the new id, dropping the per-mode credential snapshot (server_modes_<id>, where a multi-mode Filen account keeps its real password), the Filen CLI key (filen_api_key_<id>) and the AeroCrypt overlay password and salt (aerocrypt_overlay_pw_<id>/aerocrypt_overlay_salt_<id>), so the copy opened blank and could not connect. The duplicate now copies each per-profile vault key and recomputes every flag from what actually copied566d5cc5e83dab043cconnectToFtp), which had none of the saved-profile overlay logic, so after the code the panel landed on the encrypted root with files undecrypted and no overlay badge. The retry now runs the same overlay activation as the saved-server connect (suppress the encrypted listing, arm the unlock, anchor at the bound scope); Quick Connect and non-overlay profiles are unaffected0f42d1c9caeroftp compress --encrypt-names); the existing encrypted-archive password flow already opens these in the GUI browser and the standalone extract windowb9881038cnonediscovery mode, with the mode now a persisted per-partition setting (both/dht/n0/none, all exposed in Settings), plus a destructive AFID rotation guarded by a two-step confirm. Newpeer_mutes+peer_settingstables, Tauri commands, an AeroSharePrivacySettings panel, a Mute-sender action on the knock prompt, 29 i18n keys across 47 locales. The pre-release audit hardening also stops every live served share before AFID rotation and applies the persisted discovery mode to outbound send/knock/action/presence endpoints9cd2e7c43,2ab13baacapi.kilo.ai/api/gateway) routing to many open and free models behind one key, including the rotating Auto Free model (kilo-auto/free, 256K context, no credits required), plus paid Anthropic, OpenAI and Mistral with a signup credit. Wired through the existing OpenAI-compatible dispatch: TypeScript type and preset, a marketplace entry (Gateway category, freemium), prompt and parameter profiles, a KiloIcon and the three provider icon switches, the Rust enum variant, and CLI parity (provider name, base URL, default modelkilo-auto/free)74cea07b4aeroftp-clino longer crash on connect, and FTP error handling is hardened. The CLI never installed a rustlsCryptoProviderwhile bothaws-lc-rsandringwere in the dependency tree, so the first TLS handshake (FTPS, WebDAV over https) panicked with "could not automatically determine the process-level CryptoProvider"; this pre-dated the bump (the previous suppaftp 8.0.3 panicked identically) and is fixed by pinning aws-lc-rs once at startup. Alongside, suppaftp was bumped 8.0.3 to 10.0.0, which replaces its internal panics on malformed server responses with properFtpError/ParseErrorresults and closes RUSTSEC-2026-0009 (stack exhaustion viatime, now 0.3.47); the two intervening majors do not touch our tokio + rustls path. Validated live on the axpbuntu lab: plain FTP and explicit FTPS put/get round-trips are byte-identical263628069,92950b59f--levelwere handed to the 7z encoder but then dropped, so every 7z used the library default preset; the create path now maps the 0-9 level onto LZMA2's preset (Lzma2Options::from_level, unset defaults to 6) in both the password and the plain branch. A unit test compresses a payload with a long-range repeat at level 1 and level 9: only level 9's larger dictionary deduplicates it, so its archive is markedly smaller, proving the level reaches the encoder. The CLI help and CLI-GUIDE, which still said 7z ignored the level, are corrected7ba2f72bfCryptOverlayProviderdecorator wired once at every provider resolver chokepoint, fail-closed (a bound-but-locked vault is refused, never downgraded to raw), retired the legacy per-command crypt layer, and shipped the transfer fixes surfaced during live-verify (Stop-abort, Resume, edit-in-place guard). The pre-release audit hardening also prevents CLI/MCP compare from decrypting an already wrapped provider twice and lets crypt-wrapped GitHub profiles use the generic encrypting write path instead of failing a GitHub downcast. Full before/after and surface coverage in the follow-up commenteaaed9b1b,2ab13baac.darkclass, and the panels only had alightcase plus a dark default, so Ice fell through to dark with unreadable header-button text. The AI Settings and Add/Edit Model modals are also now draggable by their header like the other modals000adf2f5aero benchmark --group <NAME>(repeatable, comma-aware) benchmarks the members of a My Servers group and--allbenchmarks every saved profile, so a comparison needs no manual list; a profile-type column disambiguates multi-protocol profiles in the comparison table; the many-small-files run shows a live progress bar instead of a blind wait; and a mid-run public-IP change that reverts before the sweep ends still flags the comparison as not comparable. Closes requested items 14/15/16 and Ehud's --group/--all ideas3d44b068a467d4ec412ab13baacSecurity follow-ups (deferred from the v4.1.0 pre-release audit)
Verified findings from the v4.1.0 adversarial audit that were intentionally deferred (the 6 confirmed bugs were fixed in v4.1.0, see #361).
9cd2e7c43, audit, #284nonediscovery mode (publishes to neither DHT nor n0), discovery mode is now a persisted per-partition setting (both/dht/n0/none), plus an opt-in destructive AFID rotation. Pre-release audit hardening also applies the persisted discovery mode to outbound identity endpoints after restart and stops live served shares before rotating the AFID9cd2e7c43,2ab13baac, auditRequested / under consideration
Community ideas captured for triage. Not committed to a release yet. Carried over from the v4.1.0 tracker.
WM_DEVICECHANGElistener emittingvolumes-changedon device arrival/removal would make it instant; lighter mitigations are a refetch on window focus or a shorter poll interval. Surfaced during the #351 eject verification on real Windows hardwareStorageProvidertrait, recommending a hybrid model. Implementation is a later, separate effort-iselectors (prioritised by the reporter ahead ofEdit(E)and the 2-letter semantics; exact behaviour to be pinned)users -i: a verb sousers -ican add/remove groups to/from a user. The groups-side counterpart (groups -ia/xfor member profiles) shipped in 4.1.0; this remaining users<->groups direction needs the data model pinned first, since groups live inside each user's partition.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)AeroFTP.ArchiveProgID + WindowsCapabilities/RegisteredApplications/OpenWithProgidsthat make zip/7z/tar/rar actually display the icon and list AeroFTP under "Open with" and Settings > Default apps. Available-opener only, never a forced default (decision c). Needs both hooks.nsh and the WiX fragment, plus a clean-machine Explorer eyeball of the MSI icons (the v4.1.0 dev-runner check had HKCU competitors masking the render; the HKLM registry was verified correct).icnsmulti-size (the v4.1.0 ones are single-resolution drafts). Needs a Mac to build and live-testxdg-mime default(works immediately), Windows registers capabilities and opens the OS chooser (Windows 8+ blocks silent forced association, so honest copy "Windows will ask you to confirm"), macOS best-effortLSSetDefaultRoleHandlerForContentType. Cross-platform follow-up to the OS extract / icon workparticipants/addcontactUUID format (currently a best-effort workaround), investigate the Filen free-plan 10-note limit ghost-note cleanup, and add a rich text editor for the rich note typeaeroftp dedupe, and as an agent tool). Part of a broader principle: deterministic, repeatable file chores should run as ready-made native features or plugins, not through an LLM. The plugin lane (manifest plus script, no AI) is the natural home for these but is currently gated: the signed-registry client is unfinished and CLI plugin support is pending (Fase 6.4, Low). Related to the lossless jpg-to-jxl transcode already tracked above (item 5)Known issues found after release
Reported against v4.1.0. Fixed items ship in v4.1.1; reporters close after confirming in the release.
401 The signature does not match. The folder-rename copy path listed child keys without decoding Filen's already percent-encoded keys, then encoded them again, so the signedx-amz-copy-sourceheader was double-encoded and no longer matched the SigV4 signature. Fixed onmain(324cd4bf6): decode Filen keys once in the key listing, mirroring the normal directory listing. The same fix covers recursive delete and copy-verification of unicode-named keysaero benchmarkwithIncorrect chunk offset: uploaded=0, chunk_offset=5242880. The multipart parts were dispatched in parallel, but OpenDrive's chunked upload is strictly sequential: the server tracks the bytes received so far and rejects any chunk whose offset is not the next contiguous one. Fixed onmain(324cd4bf6): OpenDrive multipart is sent as a single in-order stream. Pre-release audit hardening (2ab13baac) added the explicit DAG serial-part regression and cancel/abort safety for shaped multipart uploadsaeroftp-benchscratch folder is left behind empty on Google Drive, MEGA and kDrive after a benchmark, while the other providers clean it up. The parent-folder removal was gated on preconditions these three break: non-idempotent mkdir on Drive and kDrive, the--test-root-prefixguard, and MEGA's soft-delete lag. Fixed onmain(324cd4bf6): best-effort emptiness-guarded parent removal plus idempotent mkdir on Drive and kDrive. Pre-release audit hardening (2ab13baac) also makes Google Drive mkdir treat an existing item as success only when it is actually a foldermain(324cd4bf6): a shared no-window spawn helper, applied to eject and generalized to the rclone-import and scheduled-task spawns that share the same gapmain(324cd4bf6): optimistically drop the ejected device from the list on success, then reconcile shortly afteraero benchmark --tuiprofile picker flickers in split-screen when the footer help row wraps to a second line. The footer sits on the last screen row, so terminal auto-wrap scrolled the whole view on every keypress; the earlier fix (4e675d63b) only covered the non-wrapping fullscreen case. Fixed onmain(324cd4bf6): disable line-wrap for the pickermain(e2d612a45), verified in the Light thememain(e2d612a45) by bringing them into the AI-settings theme scopemain(e2d612a45)exists(.aeroftp-crypt.json); pCloud reported that missing file with its "Directory does not exist" code (2005) mapped to a generic server error instead of not-found, so the overlay could not bootstrap and fell back to the raw encrypted view. Fix: map pCloud 2005/2010 to NotFound; audit and harden the same not-found mapping across the other cloud backends (kdrive and drime map a 404 to not-found, azure narrowed to 404/410, filelu verified safe). The OAuth connection-form connect now binds the profile id so the overlay also arms with 2+ accounts on one provider, and profile export/import now round-trips the BYO OAuth app client_id and secret. Fixed onmain(d1e0bef90), verified live on real pCloud (encrypt/decrypt round-trip plus lock/unlock toggle)Status legend: 🔴 confirmed · 🟡 investigating · 🔵 planned / idea · 🟢 done / fixed (pending release) · ✅ released
Affected platforms
Maintained by the AeroFTP team. Current release v4.1.0 (#361), next v4.1.1. Patches accumulated here; each release line still gets its own tracker.
All reactions