Release v2.0.0 – Kotlin rewrite, MVVM, dark theme & more#32
Merged
Conversation
sdk 34 is needed for newer dependencies to facilitate the much needed refactor.
This commit introduces a comprehensive architectural refactor of the application, adopting the MVVM pattern. Responsibilities are separated across a MainViewModel, a SensorRepository interface with its implementation, and lifecycle-aware components. Scanning, syncing, and streaming logic previously handled directly in MainActivity has been moved into structured layers to improve testability, maintainability, and clarity. Additionally, runtime permission handling has been modernized using a coroutine-based PermissionManager. The LSLService was also updated to expose a shared flow of service events, decoupling UI logic from service internals.
Refactors the codebase by moving classes into more semantically appropriate packages, enhancing modularity and project organization.
…dling This refactor consolidates and modernizes the logic in MainActivity and MainViewModel to improve maintainability and lifecycle handling: Introduced MainViewModelFactory to allow injection of SensorRepositoryImpl. Replaced bindStateObserver() and multiple render*() methods with a unified render(UiState) method. Moved service binding/unbinding to onStart() and onStop() respectively, aligning with Android lifecycle best practices. Simplified permission handling with a new askForPermissions() helper method. Refined startSelectedSensors() logic to streamline syncing and streaming. Removed redundant or commented-out code for clarity and reduced duplication.
…on start command Replaced the raw Int progress values in syncMovellaDevices() with a sealed class SyncStatus to encapsulate synchronization states more expressively (Progress, Success, and Failed). Updated all relevant parts of the codebase: SensorRepository interface and SensorRepositoryImpl implementation MainViewModel to handle the new SyncStatus types in the UI state transitions Also added: Timeout for device scanning using delay before stopScan() Improved cleanup logic for stopping bridges during stream stop Actually Start Movella bridges on start command
…s online by starting sensor only after outlet is initialized
…outs, update styles and drop unused preference XMLs
Development to mastr for latest PMaanen release
Added signing configuration for release builds using environment variables.
Removed keystore decoding step and redundant build command.
…ence before applying settings
* fix secrets for signing app and adapt build file to include feature branch build * Improve signing configuration handling by checking for keystore existence before applying settings
…feature branches and master
* adapt dark theme * adapt our files to 16KB compatibility, movella libs are not compatible yet * Refactor foreground service handling and update permissions for targetSdk 34+ * Update stream availability text and adjust layout margins in activity_main.xml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changelog
All notable changes to SENDA are documented in this file.
[v2.0.0] – 2026-05-22
This is a major release representing a complete overhaul of the SENDA codebase
and a significant expansion of features since v1.3.0.
Breaking changes
supported Android version remains Android 11.
New features
human-readable name, then reconnects for measurement.
Improvements & refactoring
targetSdk 34+.UI states provide clearer feedback.
alignment flags (Google Play requirement since November 2025). Note that the
bundled Movella SDK library is not yet compatible.
LinearLayout; old landscape / splash layouts andunused preference XMLs removed.
compileSdk/targetSdkraised to 35; NDK updated to r28.setup-gradleaction bumped; CIworkflow split into separate debug and release APK jobs.
LSL outlet is initialised).
MainViewModel.UI / UX
activity_main.xml.Build & CI
(master branch).
settings, preventing local-build failures.
[v1.3.0] – see NeuropsyOL/SENDA
Previous releases are tagged in the public repository at
https://github.com/NeuropsyOL/SENDA/releases.