Skip to content

Releases: egdels/SambaLite

SambaLite v1.6.0

Choose a tag to compare

@github-actions github-actions released this 14 Mar 10:15

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.
  • SharesDiffCallback for 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 custom FileProvider with _data column support for broad app compatibility.
  • downloadToCache method in FileOperationsViewModel for 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 MimeTypeUtils and OpenFileCacheManager covering 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 @NonNull and @Nullable annotations added across the entire codebase (~40 classes) for improved null safety, API clarity, and NullPointerException prevention. 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 SambaLiteApp and utility classes for enhanced readability and formatting consistency.
  • Removed redundant API-level checks in BatteryOptimizationUtils.
  • Replaced getMimeType implementation in FolderSyncWorker with shared utility method from MimeTypeUtils.
  • Prevented potential memory leaks in DialogController by replacing strong Context references with WeakReference and adding null checks.
  • Made instance field volatile in IntelligentCacheManager to 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 FileBrowserActivity and streamlined FAB visibility logic.
  • Added default case handling in SmartErrorHandler switch statements for improved code clarity.
  • Used UTF-8 charset explicitly in hashString method and simplified fallback hash calculation logic.
  • Removed redundant code: unused Locale import and getSubnetFromIp method in NetworkScanner, unused lastByteCount field in BandwidthMonitor, redundant if checks in DiscoveredServerAdapter and SharesAdapter, unused isLifecycleAtLeastStarted method in ProgressController, redundant fallback cache key logic in SearchViewModel, unnecessary type checks in SerializationValidator.
  • Suppressed lint warnings in FileListCacheOperations, CacheMaintenanceManager, SmbBackgroundService, SmbRepositoryImpl, SearchCacheOperations, and ShareReceiverActivity for future-use variables and non-API types.
  • Open-file cache cleanup now runs on app start in SambaLiteApp initialization.
  • Updated AndroidManifest.xml: Added FileProvider for external file sharing and handle configuration changes in MainActivity.

Fixed

  • FileDiffCallback.areContentsTheSame now compares timestamps correctly.
  • Keyboard dismissal logic fixed in MainActivity dialogs.

Developer Notes

  • Lint baseline file added to track and gradually resolve pre-existing lint issues.
  • SharesDiffCallback: New DiffUtil.ItemCallback implementation for SmbFileItem lists, 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 both FolderSyncWorker and the new file open feature.
  • OpenFileCacheManager: Size-based eviction cache for temporarily stored files opened from SMB shares.
  • DialogController: Refactored to use WeakReference<Context> to prevent activity leak on configuration changes.

If you like this update, support SambaLite here: https://ko-fi.com/egdelshttps://www.paypal.com/paypalme/egdels

test-release-170

test-release-170 Pre-release
Pre-release

Choose a tag to compare

@egdels egdels released this 14 Mar 14:17

Test build for release 1.7.0

test-release-160

test-release-160 Pre-release
Pre-release

Choose a tag to compare

@egdels egdels released this 13 Mar 11:33

Test build for release 1.6.0

test-issue-4

test-issue-4 Pre-release
Pre-release

Choose a tag to compare

@egdels egdels released this 09 Mar 15:07

Test build for Issue #4

see User Guide

SambaLite v1.5.1

Choose a tag to compare

@github-actions github-actions released this 08 Mar 11:06

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 destroyed FileBrowserActivity via syncFolderDisplay (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: New saveShowHiddenFiles()/getShowHiddenFiles() methods with show_hidden_files SharedPreferences key (default: false).
  • FileBrowserState: New showHiddenFiles field and showHiddenFilesLiveData, loaded from preferences on initialization.
  • FileListViewModel: New filterHiddenFiles() method applied after sorting in all loadFiles paths (cache, server, force-refresh) and in search results. New setShowHiddenFiles() triggers cache invalidation and reload.
  • DialogController.showSortDialog(): Wired show_hidden_files_checkbox to FileListViewModel.
  • dialog_sort.xml (portrait + landscape): Added CheckBox for the new option.

If you like this update, support SambaLite here: https://ko-fi.com/egdelshttps://www.paypal.com/paypalme/egdels

test-issue-16-15-14-4: Expand folder sync functionality and UI handling

Choose a tag to compare

@egdels egdels released this 08 Mar 07:48

Test build for Issues

#16 #15 #14 #4

For #4 see User Guide

Should only be used with test data. This build is still experimental.

test-issue-15-14

test-issue-15-14 Pre-release
Pre-release

Choose a tag to compare

@egdels egdels released this 04 Mar 09:37

Test build for Issues #15 #14

SambaLite v1.3.2

Choose a tag to compare

@github-actions github-actions released this 14 Jan 06:28

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 in NestedScrollView with fillViewport="true" and minHeight="400dp"; button bar changed to vertical orientation with full-width buttons.
  • dialog_add_connection.xml: Added minHeight="400dp" and fillViewport="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: Removed welcome_add_button from welcome card.

SambaLite v1.3.1

Choose a tag to compare

@github-actions github-actions released this 25 Oct 11:11

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/egdelshttps://www.paypal.com/paypalme/egdels

SambaLite v1.3.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 12:32

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 = required or signing requirements. The app now negotiates encrypted/signed sessions when configured per connection.

Developer Notes

  • SmbConnection: added boolean fields encryptData and signingRequired (persisted via ConnectionRepositoryImpl; defaults to false for existing entries).
  • SmbRepositoryImpl: new getClientFor(SmbConnection) builds an SmbConfig with withEncryptData(...) and withSigningRequired(...) (fallback to withSigningEnabled(...) if needed) and uses it across search/list/withShare.
  • UI: dialog_add_connection.xml adds security switches; MainActivity wires them for Add/Edit and Test Connection.