SambaLite

de.schliweb.sambalite
by Zapstore Catalog

SambaLite is a lightweight, modern, and open-source Android client for SMB/CIFS shares (Samba). It is designed as a minimalist, reliable, and secure tool for accessing SMB shares on your local network – without ads, tracking, or unnecessary features. SambaLite is a file client, not a system-level filesystem. It focuses on accessing and transferring files, not on providing a mounted network drive. The app is intended for tech-savvy users who prefer a lean, transparent solution and value privacy and open source. Main features: • Manage connections: SMB server (hostname/IP), share/path, username, password, optional domain • Multiple connections with custom names • Connection testing with clear error messages • Secure credential storage (Android Keystore) • File browser with name, type, size, and modification date • Pull-to-refresh • Sorting (name, date, size) • File operations: download, upload, delete, rename • File properties • Dark/Light mode (system default) Compatibility: • Supports modern SMB2/SMB3 servers • SMB1 is not supported (deprecated and insecure) Security & Privacy: • No telemetry or third-party connections • No unencrypted storage of sensitive data • Credentials stored securely using the Android Keystore Permissions: SambaLite only requests the permissions required for its functionality: • Network access (SMB communication) • Access to user-selected storage locations (via Android system file picker) • Foreground service and notifications (for reliable background transfers and progress display) No data is collected or transmitted to third parties. SambaLite provides a modern, minimal, and privacy-friendly way to access SMB shares on Android – focused on reliability and transparency.

First release: Nov 4, 2026, 1 total release.

Most recent release: Nov 4, 2026.

Repo

Appears in 0 app stacks.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Nov 4, 2026 3.0.0
    ## SambaLite v3.0.0 ### Downloads - **APK**: For direct installation (sideloading) - **AAB**: For Google Play Store and other app stores - **mapping.txt**: R8 mapping file to de-obfuscate stack traces of this release ### Verification Both files include SHA256 checksums for integrity verification.
    More…
    ### Changelog ### Added - **Pause and resume a folder sync**: A sync can be paused from its menu on the main screen and resumed there or from the folder menu in the file browser. A paused sync keeps its settings and sync state, is shown dimmed with "Paused", and does not run until it is resumed. Tapping a sync card now opens its menu; before, the tap did nothing. - **Stop a running folder sync** (#41): While a folder sync is running, its menu on the main screen and the menu of the synced folder in the file browser offer "Stop Sync" instead of "Sync Now". The sync stops after the file it is transferring; its "Last sync" time stays unchanged, and a scheduled sync keeps its schedule and runs again after the next interval. ### Fixed - **Rotating closed the rename and create-folder dialogs**: Rotating the device while renaming an item or naming a new folder closed the dialog, and the name typed so far was lost. Both dialogs now reopen after the rotation with the typed text. - **Saved folder lists looked current while the server was down**: Opening a folder that SambaLite had listed before shows the saved list at once and checks it against the server in the background. If the server could not be reached, the saved list stayed without any hint, so deleted or renamed files still appeared. A message now says that the server could not be reached and the list may be out of date, with "Retry". - **Waiting minutes for a server that does not answer**: When a server stopped answering (sleeping NAS, Wi-Fi lost without a clean disconnect), opening or refreshing a folder showed its error only after about four minutes, the check before an upload took about a minute, and the connection test and default-folder check waited as long. These now give up after 20 seconds with "Connection to the server failed"; file transfers keep the longer timeout, so slow but working transfers are not cut off. - **"Quit" did not mention running transfers**: Queued uploads and downloads continue in the background after "Quit", which the app did not say. With transfers in the queue, "Quit" now asks: "Quit" leaves them running in the background, "Cancel transfers and quit" cancels them first. - **One-way sync from the server ignored older server versions**: In a "Remote → Local" sync, a file replaced on the server by a version with an older date (restored from a backup, or copied with its original date) was skipped as "local is newer", because the copy on the device carries the time of its download. The server is the source of such a sync: a server file that changed since the last sync is now downloaded when the copy on the device is unchanged, whatever the dates say. Files that already existed on both sides when the sync was set up are now recorded, so later changes and Mirror mode cover them too. - **Replacing a local file with a smaller version could delete it**: When a folder sync, a download or a copy overwrote an existing file on the device with a shorter version, the old end of the file stayed behind, because Android's storage provider does not shorten files opened for writing. The folder sync then noticed the wrong size, discarded the download and deleted the local file. Files are now shortened to their new size when they are overwritten. - **More messages in English only**: The errors when connections cannot be loaded, saved or deleted, the message that network scanning is unavailable, the suggested name "Server <address>" of a found server, and the notification title while a file is being opened ("Processing…") were English in every language. They now follow the app language. The messages "No connection specified" and "Connection not found" of the file browser were never visible because the screen closed right away; it now shows "This connection no longer exists." before closing. - **A second share into SambaLite could be ignored**: After sharing something into SambaLite and uploading it, sharing again from an app that opens SambaLite in a new task only brought back the file browser of the previous share, without the share dialog, and nothing was uploaded. The share dialog now runs in its own short-lived task and hands the upload to the app's task, so every share shows its dialog. - **Tapping the search notification did nothing**: While a search with subfolders runs, SambaLite shows a notification. Tapping it now opens the file browser with the search and its results. - **Downloads could fill the device**: Before a download, SambaLite only checked that 10 MB were free, whatever the size of the file. A download could therefore leave almost no space, and a large file started and broke off part way. A download now fails before it starts, with "Not enough free storage on this device", if it would leave less than 10 MB free; smaller downloads in the queue still run. - **Sync retried forever when its local folder was gone**: If the local folder of a folder sync was deleted or the app lost access to it, "Sync Now" was retried again and again with "Sync was interrupted and will be retried". It now stops and says "The local folder of the sync … no longer exists or cannot be accessed. Edit the sync to choose another folder." The scheduled sync keeps its schedule. Messages at the bottom of the screen show up to four lines, so such hints are no longer cut off. - **Uploads could overwrite files when the server could not be checked**: Before an upload SambaLite checks whether files of the same name exist on the server. If that check failed (connection lost, server not answering, listing not allowed), the files counted as new and were uploaded without the overwrite question, replacing existing files. Now a notice says that the check failed and why; "Upload anyway" continues, "Cancel" uploads nothing. A target folder that does not exist yet still counts as empty. - **Messages covered the "New" and "Add Connection" buttons**: Snackbar messages (e.g. "Upload complete", "Connection successful") appeared at the bottom edge on top of the floating button, which hid part of the message. They now appear above the button. - **Cancel did nothing after rotating while a file was opening**: When the device was rotated while a file was being downloaded for opening, the progress dialog came back as "Transfer in progress …", but its Cancel button did not stop the download, which then opened the file anyway. Cancel now stops it. - **Search results replaced by the folder after rotation**: Rotating the device while search results were shown kept "3 results found" in the toolbar but listed the current folder's content instead of the results. The results now stay. - **Back during multi-select left the folder**: With items selected in the file browser, the Back button discarded the selection and went to the parent folder (or closed the browser at the share root). Back now first ends the selection. - **Connection dialogs showed two titles**: "Add New Connection" appeared above the "Add SMB Connection" header, and the Edit dialog showed "Edit Connection" above "Add SMB Connection". Each dialog now has one title, and the Edit dialog's header says "Edit Connection". - **"1 files, 2 folders selected"**: The selection count in the file browser always used the plural ("1 files", "1 folders"; German "1 Dateien"). It now uses the singular and plural forms of each language. - **Background service notification and progress headline in English only**: The permanent notification ("SMB Service ready", "Processing…", "2 operations active", "Operation cancelled", timeouts), its notification channel and the headline of progress dialogs ("Downloading…") were English in every language. They are now translated. - **Share dialog's upload button said "Select"**: The button that starts the upload of shared items was labelled "Select" (German "Auswählen"), and the German message read "Freigabe 1 Element nach …". The button now says "Upload" in every language, and the German, French and Dutch messages were reworded. - **Shared files lost when the last target's connection was deleted, and other share target slips**: If the connection of the last browsed folder had been deleted, the share dialog offered a folder without share name and "Select" silently dropped the shared files. It now asks for a target folder and lets you pick one right away, keeping the shared items. Leaving the folder picker with Back no longer changes the target to the folders passed on the way out, and cancelling the connection list shows the target as "share/folder" again. - **Share dialog reopened on rotation and left text files behind**: Rotating the device while the "Share items" dialog was open closed and rebuilt it (with a "leaked window" error) and wrote the shared text to a second temporary file; cancelling a text share also left its file in the cache. The dialog now stays open on rotation and an unused text file is deleted. - **Crash after rotating the device**: Rotating the file browser stopped and immediately restarted SambaLite's background service. When the stop arrived after the restart had already been requested (e.g. with the share dialog open), Android closed the app with "Context.startForegroundService() did not then call Service.startForeground()". Rotation no longer stops the service, and a stop request no longer cancels a newer start. - **System Monitor always reported "Tracked files: 0"**: The "Timestamp Preservation Status" section said "No sync state data available" even after many synced files, because the database refused to be read on the main thread. The numbers are now read in the background and shown correctly. - **Removed syncs kept retrying**: When a "Sync Now" had failed (e.g. server not reachable) and the sync was then removed, its retry stayed queued and later ran and reported "Sync completed successfully" for a sync that no longer existed. Removing a sync, or the connection it belongs to, now also cancels its pending Sync Now. - **"Sync Now" in the file browser answered with "Sync Now"**: After choosing Sync Now in a folder's options, the confirmation repeated the menu label in green. It now says "Sync running…", as on the main screen. - **Sync dialog title shown twice**: "Set Up Folder Sync" appeared twice one above the other, and the "Edit Sync" dialog also showed the "Set Up Folder Sync" header. Each dialog now has one title that matches it. Screen readers announce the WiFi only, Mirror mode and trash switches by name instead of only "switch, off". - **Edited syncs moved to the end of the list**: Saving "Edit Sync" moved the sync's card to the bottom of "Your Folder Syncs". An edited sync now keeps its place. - **"Edit Sync" in the file browser reset the sync**: Saving the edit dialog deleted the sync and created a new one, so the card showed "Never synced" again and the record of synced files was deleted even when the local folder stayed the same (Mirror mode relies on it). The sync is now changed in place; only choosing another local folder starts it afresh. - **Old "Sync completed" messages and "completed" for skipped syncs**: The main screen repeated "Sync completed successfully" for earlier sync runs every time it was opened and whenever another sync started or a sync was removed, sometimes right after a sync that had actually failed. A manual sync of a "WiFi only" folder without WiFi also reported "Sync completed successfully" although nothing was synced. Each sync run is now announced once, and a skipped sync says "Sync skipped: WiFi only is on and the device is not connected to WiFi". - **Folder sync from search results used the wrong folder**: For a folder found by a search in a sub-folder, "Set Up Sync" proposed the current folder plus the name (e.g. "QA4/sub" instead of "QA4/Down/sub"), skipped the check for an already synced parent folder and would have synced a new, empty folder. Synced folders found by a search also did not offer Sync Now, Edit Sync and Remove Sync. The sync options now use the folder's real path. - **Folder sync setup reused an old folder or replaced another sync**: A local folder picked in a cancelled "Set Up Folder Sync" dialog was saved with the next setup for another folder, although that dialog showed "No folder selected". After an "Edit Sync" in the file browser was rejected (e.g. the folder was already synced), the next new setup silently replaced the sync that had been edited and ignored the limit of 5 syncs. Each sync dialog now starts empty and forgets its state when it is closed. - **Sync messages ended in ": null"**: The folder sync checks in the file browser showed messages such as "Please select a local folder first: null" or "A parent folder is already being synced. …: null". The messages now end with the sentence itself. - **Crash when a shared file came without read permission**: If the sharing app did not grant SambaLite access to the shared file, tapping "Select" in the share dialog crashed the app. It now shows "Upload failed" with a hint to share the files again or to upload them with "Upload files". Errors at this step were also closed before they could be read; the message now stays until OK is tapped. - **Screen readers in the transfer queue**: Each transfer's icon was announced as "File type icon" and its status badge as "Connection Status". The icon now says whether it is an upload or a download, and the badge is no longer announced, since the status is part of the spoken text. Folder downloads showed an upload arrow while they were being prepared; they now show the download arrow. - **Completed transfers in random order**: Sorted by status, the queue listed completed transfers in the order of their batch and position, so the transfer that had just finished could appear anywhere, and with more than 500 entries the list dropped arbitrary recent ones. Completed transfers are now listed newest first, and only the oldest fall beyond the 500-entry limit. - **Blank transfer queue with "Hide completed"**: When every transfer in the queue was completed and "Hide completed" was on, the screen showed only the counters above an empty area. It now says that all transfers are completed and hidden, and how to show them. - **Cancelled uploads left a truncated file on the server**: Cancelling a running upload in the queue stopped it, but the partly written file stayed on the server under the real name (e.g. 88 MB of a 210 MB file) and looked like a finished upload. The incomplete server file is now deleted when the upload is cancelled. - **Cancelled downloads left broken files behind**: Cancelling or removing a running download in the queue left the partly written file in the download folder (e.g. 28 MB of a 210 MB file) under the real name, and a download that had not started yet left an empty file. Such incomplete files are now deleted when the download is cancelled or removed; completed downloads are never touched. - **"Checking 4 files in 1 folders"**: The notice shown while an upload is compared with the server used the plural for one folder (and for one file). An upload into a single folder now says "Checking 4 files on the server…" with proper singular and plural forms in all languages. - **Queue counters broke words at random places**: In portrait, longer labels of the transfer queue's counters were split anywhere inside the word, e.g. "Abgeschlos / sen" and "Fehlgeschla / gen" in German or "Niepowodze / nie" in Polish. Labels that need two lines are now hyphenated properly ("Abgeschlos- / sen"). - **Transfer notification in German and without a tap action**: The transfer notification started with the German title "Transfer-Queue wird verarbeitet…" in every language, its channel was always called "Transfer Queue", and tapping the notification did nothing. Title and channel now follow the app language, and a tap opens the transfer queue. - **Completed transfers never left the open queue screen**: Completed transfers are shown for one hour, but the hour was counted from when the screen was opened, so they stayed in the list (and in the "Completed" counter) as long as the screen remained open or was rotated. The window now moves every minute and whenever the screen is shown again. - **Transfers stayed "Pending" forever when the device ran out of storage**: When free storage fell below 10 MB, the transfer queue stopped, but its transfers kept showing "Pending" without any reason, and nothing started them again after space was freed. They are now marked as failed with "Not enough free storage on this device. Free up space, then tap Retry.", and Retry in the queue starts them again. - **A second download of a file lost its extension**: Downloading a file into a folder that already had a file of that name created `readme.txt (1)`, which other apps no longer recognised as a text file. The "Save as" dialog now gets the file's type, so the copy is named `readme (1).txt`. - **Upload conflicts: case, same names in subfolders, one existing file**: Uploading `photo.jpg` into a folder with `Photo.JPG` was not reported as a conflict, so the server file was overwritten even after "Skip all". In a folder upload, the "Files already exist" list showed only file names: two `readme.txt` from different subfolders could not be told apart, and skipping one skipped every file of that name, including new ones that did not exist on the server. When exactly one file of a larger upload existed, the simple "File already exists" dialog appeared and its Cancel dropped the whole upload. Names are now compared without regard to case, the list shows the path below the current folder (`a/readme.txt`) and skips exactly the unchecked files, one existing file among others gets the list dialog with "Skip all", and its summary counts all files of the upload ("1 of 40 files already exist"). - **"Upload already queued" for a file on another server**: Before queuing an upload, the app compared the target path with all open transfers, regardless of connection and direction. An open upload of `photo.jpg` to one server, or a download of a file with that path, blocked uploading `photo.jpg` to another server with the notice "Upload already queued", and the file was not uploaded. Only open uploads to the same connection count now. - **Queue actions did not depend on the transfer's state**: Every queue entry offered Retry, Cancel and Remove. Retry on a completed upload transferred it again without asking and overwrote the file on the server, Retry on a running transfer queued it a second time, and Cancel on a completed transfer simply hid it. The actions now match the state: Retry only for failed transfers, Cancel only for pending, running and failed ones, Remove always. The same rules apply to a multi-selection. - **Cancelling selected transfers stopped the whole queue**: Cancelling some transfers in the queue's multi-selection also stopped the transfer worker, so all other pending transfers stayed "Pending" until a new transfer was added or the app was restarted. Only the selected transfers are cancelled now, and the rest of the queue continues. - **Cancelled or removed transfers were uploaded anyway**: The transfer worker reads the transfers of a connection before it starts the first one. Cancelling a pending transfer of that batch in the queue did not stop it: it was uploaded anyway and shown as completed. Removing one left an empty file on the server, and on an upload that overwrote a file this emptied the server file. A transfer is now only started while it is still queued. A transfer that the worker paused because it was stopped is also no longer marked completed with an incomplete file. - **Removing the screen lock silently turned off the access protection**: With "Authentication before share access" on, removing the device's screen lock made connections open without any prompt, the password could be revealed, and the security options showed both switches on but disabled, so they could not even be turned off. Without a screen lock, a protected connection and the password reveal are now refused with a notice that offers to set up a screen lock or to open the security options, where switches that are on can be turned off (but not on again until a screen lock exists). - **Photos from current phones got a generic file icon**: HEIC/HEIF photos (the iPhone and many Android cameras' default), AVIF, TIFF, SVG and DNG files were shown with the generic file icon when thumbnails were off, as were WebM, 3GP and MPEG videos and AAC, Opus, WMA and AIFF audio. They now get the image, video and audio icons. - **Search and sort dialogs had to be scrolled in landscape**: On a phone in landscape, part of the search types and the sort options were cut off and only reachable by scrolling. Both dialogs are more compact in landscape now, with the options of a group side by side, and fit without scrolling in all languages. - **A file could be renamed or deleted while it was being uploaded**: Long press and the ⋮ button were blocked during an upload or download of the file, but a plain tap still opened its actions with Rename and Delete. A tap on a file that is being transferred now shows "This file is currently being uploaded" (or downloaded) as well; folders still open. - **Deleting a large folder showed no progress**: Deleting a single folder with thousands of files gave no sign of progress, and after 30 seconds the notification claimed "Operation timed out" although the delete went on. The notification now counts the deleted items while the folder is removed ("2880 items deleted"), which also keeps the stall detection quiet. Verified with a folder of 3007 entries on a throttled server. - **A folder that was still loading showed the previous folder's files**: On a slow or unreachable server, opening a folder kept the previous folder's entries and item count under the new breadcrumbs until the server answered, which could take a minute; tapping one acted on a file of the other folder. If the listing takes longer than 0.4 s, the list and the count are now cleared while it loads. A folder that could not be loaded no longer shows "0 items". - **Folders were called files in messages**: Renaming or deleting a folder reported "File renamed/deleted successfully", errors said "Error renaming file", and deleting a selection with folders asked "Delete 2 files?" under the title "Delete files". These messages now use neutral wording ("Renamed successfully", "Delete 2 items?") in all languages, and the summary after a multi-delete picks the plural form for the total ("Deleted 1 of 5 items"). - **Search results did not show where a file lies**: Two results named `report.pdf` from different folders looked the same. Each search result now shows its folder below its date and size. - **A file could be queued twice for the same upload target**: The check for uploads already in the queue counted pending and running transfers only. A transfer that had failed and was waiting for its automatic retry was missed, so uploading the same folder again queued every file a second time, and both uploads then wrote the same remote files. In a test with 40 files, the retries of the duplicates left the files that the first uploads had already completed truncated on the server, while the queue still showed those uploads as completed. Failed transfers with retries left now count as queued as well. A file whose target is still in the queue is no longer queued again, neither from a folder nor as a single file: the dialog that offered "Upload again" is now a notice, and the rest of the folder is uploaded as usual. The queued upload reads the local file only when it runs, so nothing is lost. In addition, the uploads are checked against the queue right before they are stored, so two uploads started at the same time cannot queue the same target twice either. - **Connection dialog listed the forbidden characters incompletely**: The messages for an invalid share name or default folder dropped the characters `\` and `"` in every language, because they were not escaped in the string resources. The default folder message also named `\` as forbidden, although backslashes are allowed there and converted to `/`. - **Connection test showed no reason and was always in English**: A failed test said only "Connection failed: Failed to execute share operation after 1 attempts", because the real cause (e.g. a wrong password) was hidden in the wrapped exception. The test now names the reason, such as "Login to the server failed" or "Connection to the server failed", and its results as well as the "Edit / Test Connection / Delete" menu of a connection are translated into all app languages. - **Untranslated hints in the connection dialog**: The hints below Server, Share name, Username and Domain and the title of the System Monitor were fixed English texts in the layout and are now translated into all app languages. - **Doubled labels in the System Monitor**: The performance section showed "Memory: Memory: …" and "Performance: Performance: …"; each label now appears once. - **Passwords with leading or trailing spaces did not work**: The connection dialog trimmed the password like the other fields, so a password such as " pw x " was sent as "pw x" and the login failed. The password is now saved and tested exactly as typed; username, domain and the other fields are still trimmed. - **"Loading files…" while testing a connection**: Testing a connection or checking the default folder when saving showed "Loading files…"; it now says "Connecting to server…". - **Edited connection jumped to the end of the list**: Saving an edited connection removed it and appended it again, so it moved to the bottom of "Your connections". It now keeps its position. - **Sync card stayed after deleting its connection**: Deleting a connection removed its folder syncs, but the main screen kept showing their cards (with the server missing from the remote path) until the app was reopened. The list of folder syncs is now refreshed right away. - **Quotation marks in delete confirmations**: The questions before deleting a connection, a file or a folder sync put the name between two closing apostrophes (’Smoke’). They now use the quotation marks of each language, e.g. “Smoke” or „Smoke“. - **Folders that could not be loaded looked empty**: When the server was unreachable or refused access, the file browser showed "This directory is empty". It now says that the folder could not be loaded, names the reason (e.g. "Connection to the server failed") and suggests pulling down to try again. - **"Open" could show another file with the same name**: Opened files were cached by name only, so opening `Other/report.pdf` after `Docs/report.pdf` of the same size showed the first document. Each remote file now has its own cache entry per connection and folder. - **A failed search reported "0 results"**: When the server could not be reached, the search ended with "✓ 0 results found". It now says "Search failed" with the reason. A search without matches says "No matches found" instead of "This directory is empty", and the result count uses proper singular and plural forms ("1 result found"). - **Search showed hidden files**: With "Show hidden files/folders" off, a search still listed entries such as `.hidden.txt` and files inside hidden folders like `.config/`. Search results now follow the option, also when it is changed while the results are shown. - **Search notification was always in German**: The notification of a running search ("Suche: …", "Treffer gefunden…") and its channel name "Dateisuche" did not follow the app language; they are now translated. - **Thumbnails did not change with the file**: A thumbnail was cached by the file path only, so after an image was replaced on the server the old picture stayed, and the same path on another connection showed the first connection's picture. Thumbnails are now cached per connection, size and modification date. - **Opening a file again always downloaded it again**: The cached copy of an opened file kept the date of the file on the server, and the cleanup of copies older than an hour deleted it as soon as you returned to the app. Copies now count from the time they were downloaded, so opening the same file again within the hour is instant. - **Progress dialog showed an upload arrow for everything**: Opening a file and deleting several items showed the upload icon, which screen readers announced as "Uploading…". The icon now matches the operation (download for opening) and is no longer read out, since the title already says what is happening. - **Delete, rename and create folder errors gave no reason**: A failed operation said only "Failed to execute share operation after 1 attempts" (rename and create folder in English in every language). The messages now name the reason, e.g. "Rename failed: A file or folder with this name already exists" or "Could not create folder: No permission on the server". - **Renaming to a path moved the file**: Rename and "Create folder" accepted any text, so renaming `notes.txt` to `../moved.txt` silently moved the file to the parent folder, and names with `:` or `*` failed with an unclear server error. Names with `/ \ : * ? " < > |`, `.` and `..` are now rejected in the dialog, and an empty name says "Enter a name" instead of "Connection name is required". - **Rename and "Create folder" dialogs could get stuck**: After an invalid or empty name the error appeared as a popup over the Cancel and OK buttons, which then did not react until the text was changed. The error is now shown below the field. - **"Rename File" shown twice**: The rename dialog had a dialog title above its own header with the same text; the duplicate title is gone. - **Changing only the case of a name failed**: Renaming `Photo.JPG` to `photo.jpg` was refused with "already exists", because servers that ignore case find the file itself. A change of case only is now passed to the server. - **Deleting a folder looked like deleting a file**: The confirmation for a folder said "Delete File" and did not mention that everything inside is deleted too. It now says "Delete Folder" and asks whether to delete the folder and everything in it. - **Rotating the device cleared the multi-selection**: Turning the device while files were selected ended the selection. The selected items now stay selected; moving to another folder still ends the selection. - **File list froze after deleting several items**: After a multi-select delete the list kept showing the deleted entries, ignored taps and did not follow folder changes until it was scrolled, because the end of the delete updated the toolbar from a background thread. It is now handled on the main thread, and the list updates right away. - **Opening a folder from the search results kept showing the results**: Tapping a folder in the results changed the path row but left the result list and the search title on screen. The search now ends and the folder opens; back goes to its parent folder. - **Result count disappeared after a selection in search results**: Selecting results and then clearing the selection left the toolbar without its "✓ n results found" line; it is shown again. - **Second server on the same host could not be opened**: With two connections to one host on different ports (e.g. `10.0.2.2` and `10.0.2.2:4450`), whichever was opened second failed with "Different server found for same hostname" until the app was restarted. Each port now gets its own SMB client. - **Deleting many items: Cancel did not stop it, and the summary was wrong**: The progress of a multi-select delete stayed at 0 % until the end, Cancel only closed the dialog while the deletion went on, and on a slow server the operation was aborted after 30 seconds with "Deleted 0 of N; N failed" although many items were gone. The progress now advances per item, Cancel stops the remaining items, and the summary counts what was really deleted. ### Changed - **Transfer queue during large transfers**: The queue is sorted by status by default: the running transfer first, with a progress bar, then the pending ones in the order they will run, then failed and completed ones. Before, it was sorted by date, so the files that had just completed were on top and the running transfer somewhere in between. The list stays at the top while transfers move through it instead of following an entry down. Each transfer shows its status, size and remote folder on one line, so files of the same name from different folders can be told apart, and sizes are shown as in the file browser (10.49 MB instead of 10.0 MB for the same file). A failed transfer shows a readable reason such as "No permission on the server" instead of the SMB status code; the full error is under "Error details" in the transfer's actions. Sorting and "Hide completed" are in the toolbar, the number of transfers is its subtitle. The file browser shows one message when the queue has run empty, such as "40 transfers completed", instead of one message per file. The progress of a running transfer is saved at least once per second instead of only every 2 MiB, so the queue and the notification keep moving on slow connections, and the running entry updates without flickering. In landscape, the statistics card is more compact and leaves room for the list. The actions of a transfer close with "Close" instead of a second "Cancel" next to the "Cancel" action. - **"Files already exist" dialog with many files**: The list of files scrolls in its own box, so the "Skip all" and "Overwrite selected" buttons stay visible; before, they were only reachable by scrolling the whole dialog. - **Refreshed Material 3 look**: The app uses a full Material 3 colour scheme generated from the blue of its launcher icon, on every Android version and in light and dark mode: the icon colour itself is on icon tiles and buttons, while text, icons and buttons on light backgrounds use a darker shade of it that is easier to read. Dialogs no longer show the purple surface of the Material 3 default palette. The top bars use the surface colour instead of a solid blue bar, and cards are flat with a thin outline instead of a shadow. All icons are now Material icons that look the same on every device, replacing the old Android system icons. Folders show a folder icon, and files show an icon for their type (document, PDF, image, video, audio, archive, spreadsheet, presentation, installer). The six copies of the theme are merged into one, and light and dark colours come from one set of colour resources. - **Tidier file browser**: The toolbar shows the connection name with the number of entries below it, and the path below the toolbar is a row of breadcrumbs (`Data › Photos › 2026`): tapping one jumps straight to that folder, also out of a search. Search, sort and the transfer queue sit in the toolbar. The second bar with up, refresh, search and sort is gone: the back gesture goes up a folder and pulling the list down refreshes it. The statistics card with the file and folder counts is gone as well. Security settings, the system monitor and "Quit" are app-wide and are only on the start screen now. The two buttons for upload and new folder are one "New" button that offers creating a folder, uploading files and uploading folder contents. File dates follow the device's language and date format (e.g. "31.10.2026" instead of "Oct 31, 2026"), and the dot between date and size no longer dangles after folders, which have no size. The search icon was black in dark mode and is now visible. - **Back to where you left a folder**: Going back up to a folder, with the back gesture or a breadcrumb, shows it at the scroll position it had when you opened the subfolder, so in a long list you land on the folder you came from instead of at the top. If there is no remembered position, for instance after a connection opened directly in its default folder, the list scrolls to the subfolder you came from. Opening a folder always starts at the top; before, it sometimes kept an arbitrary scroll position from the previous folder. Rotating the device keeps the position too; before, the file list jumped back to the top. - **Landscape**: The toolbars and the breadcrumb row are indented by the camera cutout and the navigation bar like the content below them, instead of reaching under the cutout. The "empty folder" and "empty transfer queue" notices sit below the top bar instead of overlapping it, and the sort bar of the transfer queue is indented like the rest.