Releases: egdels/SambaLite
Releases · egdels/SambaLite
Release list
SambaLite v1.6.0
SambaLite v1.6.0
Downloads
- APK: For direct installation (sideloading)
- AAB: For Google Play Store and other app stores
Verification
Both files include SHA256 checksums for integrity verification.
Changelog
Added
- Adaptive launcher icons for improved visual consistency across Android devices and launchers.
SharesDiffCallbackfor efficient RecyclerView list updates when browsing SMB shares.- GitHub Actions workflow for automated code quality checks (CI).
- New unit tests for caching, file utilities, diff callbacks, and progress formatting.
- Open files directly from SMB shares: New utility classes for file opening (
FileOpenHelper), MIME type resolution (MimeTypeUtils), cache management (OpenFileCacheManager), and a customFileProviderwith_datacolumn support for broad app compatibility. downloadToCachemethod inFileOperationsViewModelfor managing open-file downloads and cache handling.- Leave confirmation dialog when navigating away from the file browser during active file transfers.
- New unit tests for
MimeTypeUtilsandOpenFileCacheManagercovering MIME type resolution, cache cleanup, and size-based eviction logic. - Translations for leave confirmation and file open strings in all supported languages.
- FileProvider configuration (
file_paths.xml) for external file sharing via content URIs.
Changed
- Comprehensive
@NonNulland@Nullableannotations added across the entire codebase (~40 classes) for improved null safety, API clarity, andNullPointerExceptionprevention. Affected areas include ViewModels, controllers, adapters, repositories, utilities, cache classes, sync classes, Dagger components, and more. - Enabled stricter lint checks with a new lint baseline for better code quality enforcement.
- Updated WorkManager dependencies to version 2.11.1.
- Removed unused resources, plurals, and obsolete strings; simplified layout attributes for dialogs.
- Refactored
SambaLiteAppand utility classes for enhanced readability and formatting consistency. - Removed redundant API-level checks in
BatteryOptimizationUtils. - Replaced
getMimeTypeimplementation inFolderSyncWorkerwith shared utility method fromMimeTypeUtils. - Prevented potential memory leaks in
DialogControllerby replacing strongContextreferences withWeakReferenceand adding null checks. - Made
instancefield volatile inIntelligentCacheManagerto ensure thread-safe singleton access. - Improved keyboard handling: New utility method for hiding keyboard in dialogs; dialogs now resize correctly with keyboard visibility.
- Added file transfer activity checks before finishing
FileBrowserActivityand streamlined FAB visibility logic. - Added default case handling in
SmartErrorHandlerswitch statements for improved code clarity. - Used UTF-8 charset explicitly in
hashStringmethod and simplified fallback hash calculation logic. - Removed redundant code: unused
Localeimport andgetSubnetFromIpmethod inNetworkScanner, unusedlastByteCountfield inBandwidthMonitor, redundantifchecks inDiscoveredServerAdapterandSharesAdapter, unusedisLifecycleAtLeastStartedmethod inProgressController, redundant fallback cache key logic inSearchViewModel, unnecessary type checks inSerializationValidator. - Suppressed lint warnings in
FileListCacheOperations,CacheMaintenanceManager,SmbBackgroundService,SmbRepositoryImpl,SearchCacheOperations, andShareReceiverActivityfor future-use variables and non-API types. - Open-file cache cleanup now runs on app start in
SambaLiteAppinitialization. - Updated
AndroidManifest.xml: Added FileProvider for external file sharing and handle configuration changes inMainActivity.
Fixed
FileDiffCallback.areContentsTheSamenow compares timestamps correctly.- Keyboard dismissal logic fixed in
MainActivitydialogs.
Developer Notes
- Lint baseline file added to track and gradually resolve pre-existing lint issues.
SharesDiffCallback: NewDiffUtil.ItemCallbackimplementation forSmbFileItemlists, enabling efficient partial RecyclerView updates.- Null safety annotations applied systematically to:
FileBrowserUIState,FileListController,FileListViewModel,ConnectionAdapter,FileOperationCallbacks,FileSkippedException,FileUploadTask,InputController,LogUtils,PreferenceUtils,ProgressController,ProgressFormat,UIHelper,UserFeedbackProvider,ActivityResultController,DialogController,MemoryCacheStrategy,DiscoveredServerAdapter,SmbFileItem,LoadingIndicator,SearchCacheOperations,ShareReceiverViewModel,ShareReceiverActivity,SimplePerformanceMonitor,BatteryOptimizationUtils,SmartErrorHandler,CacheKeyGenerator,CacheExceptionHandler,SambaLiteApp, Dagger components,ViewModelFactory,ConnectionRepository,SmbRepository, and related test classes. - CI workflow: GitHub Actions pipeline for lint, unit tests, and build verification.
MimeTypeUtils: Extracted shared MIME type resolution utility, used by bothFolderSyncWorkerand the new file open feature.OpenFileCacheManager: Size-based eviction cache for temporarily stored files opened from SMB shares.DialogController: Refactored to useWeakReference<Context>to prevent activity leak on configuration changes.
If you like this update, support SambaLite here: https://ko-fi.com/egdels • https://www.paypal.com/paypalme/egdels
test-release-170
Test build for release 1.7.0
test-release-160
Test build for release 1.6.0
test-issue-4
SambaLite v1.5.1
SambaLite v1.5.1
Downloads
- APK: For direct installation (sideloading)
- AAB: For Google Play Store and other app stores
Verification
Both files include SHA256 checksums for integrity verification.
Changelog
Added
- Hide hidden files/folders: New "Show hidden files/folders" toggle in the sort dialog. Files and folders starting with a dot (e.g.
.config,.cache) are now hidden by default, reducing clutter when browsing Linux home directories or other locations with many dotfiles. - The setting is persisted across app restarts and applies to both normal browsing and search results.
- Translations for the new option in all 7 languages (EN, DE, ES, FR, NL, PL, ZH).
Fixed
- Sync icon was incorrectly shown on parent folders (e.g. "Podcasts") when only a deeper subfolder (e.g. "Podcasts/BundB") was configured for sync. Now only the actual sync-configured folder displays the sync icon.
- Local folder collision check for sync configurations: Prevents setting up sync on a local folder that is already synced, or is a parent/child of an already-synced folder. Supports Android Content-URIs with encoded path separators (
%2F). Translations in all 7 languages. - Memory leak:
FileBrowserUIState(Dagger singleton) retained a reference to a destroyedFileBrowserActivityviasyncFolderDisplay(TextView), causing a ~2 MB leak on every activity recreation (e.g. rotation). - Navigation state lost on device rotation: Browsing a subfolder and rotating the device would reset the file browser to the root directory, because
FileBrowserState.setConnection()cleared the current path on every activity restart.
Developer Notes
PreferencesManager: NewsaveShowHiddenFiles()/getShowHiddenFiles()methods withshow_hidden_filesSharedPreferences key (default:false).FileBrowserState: NewshowHiddenFilesfield andshowHiddenFilesLiveData, loaded from preferences on initialization.FileListViewModel: NewfilterHiddenFiles()method applied after sorting in allloadFilespaths (cache, server, force-refresh) and in search results. NewsetShowHiddenFiles()triggers cache invalidation and reload.DialogController.showSortDialog(): Wiredshow_hidden_files_checkboxtoFileListViewModel.dialog_sort.xml(portrait + landscape): Added CheckBox for the new option.
If you like this update, support SambaLite here: https://ko-fi.com/egdels • https://www.paypal.com/paypalme/egdels
test-issue-16-15-14-4: Expand folder sync functionality and UI handling
test-issue-15-14
SambaLite v1.3.2
SambaLite v1.3.2
Downloads
- APK: For direct installation (sideloading)
- AAB: For Google Play Store and other app stores
Verification
Both files include SHA256 checksums for integrity verification.
Changelog
Changed
- Improved button visibility in Scan and Connection dialogs for large font settings: buttons now use full-width vertical layout.
- Increased minimum height of Scan and Connection dialogs (400dp) for better usability on various display configurations.
- Streamlined welcome screen by removing redundant "Add Connection" button (FAB remains available).
Fixed
- Buttons in Network Scan dialog were not visible with certain display and font settings.
- Buttons in Add/Edit Connection dialog were not visible with large font configurations.
Developer Notes
dialog_network_scan.xml: Wrapped inNestedScrollViewwithfillViewport="true"andminHeight="400dp"; button bar changed to vertical orientation with full-width buttons.dialog_add_connection.xml: AddedminHeight="400dp"andfillViewport="true"; added custom vertical button bar with Save/Cancel buttons.MainActivity.java: Updated Add and Edit connection dialogs to use custom buttons instead of AlertDialog default buttons.activity_main.xml: Removedwelcome_add_buttonfrom welcome card.
SambaLite v1.3.1
SambaLite v1.3.1
Downloads
- APK: For direct installation (sideloading)
- AAB: For Google Play Store and other app stores
Verification
Both files include SHA256 checksums for integrity verification.
Changelog
Added
- Multi-select for files with batch Download and Delete actions.
Changed
- Reused existing progress UI and Cancel flow; hardened dialog lifecycle (reliable open/close on success, error, or cancel).
- Unified wording and internationalization: replaced hardcoded strings in controllers/viewmodels with resources; consistent labels and summaries.
- Cleanup of temporary files/folders across success, error, and cancel paths.
- Selection UX: long-press to enter selection mode, tap toggles items, toolbar shows selected count; contextual FAB icons in multi-select mode (Download, Delete).
Developer Notes
- Controller-driven iteration without repository API changes; improved cancel propagation and progress reporting.
- Key components: FileOperationsController, FileOperationsViewModel, ProgressController, and string resources.
If you like this update, support SambaLite here: https://ko-fi.com/egdels • https://www.paypal.com/paypalme/egdels
SambaLite v1.3.0
SambaLite v1.3.0
Downloads
- APK: For direct installation (sideloading)
- AAB: For Google Play Store and other app stores
Verification
Both files include SHA256 checksums for integrity verification.
Changelog
Added
- Per-connection security options in Add/Edit Connection: toggles to "Require encryption (SMB3)" and "Require signing".
- Translations for the new security options: de, es, fr, nl, pl, zh.
Changed
- Use a per-connection SMB client configuration (encryption/signing) when needed instead of relying solely on a single global client.
Fixed
- Connection failures to Samba shares with
smb encrypt = requiredor signing requirements. The app now negotiates encrypted/signed sessions when configured per connection.
Developer Notes
- SmbConnection: added boolean fields
encryptDataandsigningRequired(persisted via ConnectionRepositoryImpl; defaults to false for existing entries). - SmbRepositoryImpl: new
getClientFor(SmbConnection)builds anSmbConfigwithwithEncryptData(...)andwithSigningRequired(...)(fallback towithSigningEnabled(...)if needed) and uses it across search/list/withShare. - UI:
dialog_add_connection.xmladds security switches; MainActivity wires them for Add/Edit and Test Connection.