Skip to content

Release v2.0.0 – Kotlin rewrite, MVVM, dark theme & more#32

Merged
s4rify merged 62 commits into
masterfrom
v2.0.0-release
May 22, 2026
Merged

Release v2.0.0 – Kotlin rewrite, MVVM, dark theme & more#32
s4rify merged 62 commits into
masterfrom
v2.0.0-release

Conversation

@s4rify
Copy link
Copy Markdown
Collaborator

@s4rify s4rify commented May 22, 2026

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

  • The app has been fully rewritten in Kotlin (previously Java). The minimum
    supported Android version remains Android 11.
  • The internal package structure was reorganised for improved modularity.

New features

  • Dark theme support (follows system setting).
  • In-app tutorial with multiple pages guiding new users through setup.
  • About dialog accessible from the action bar.
  • Movella DOT sensor support: connects once on discovery to resolve the
    human-readable name, then reconnects for measurement.

Improvements & refactoring

  • Migrated to MVVM architecture with ViewModel and Repository pattern.
  • Foreground service and wakelock handling refactored for targetSdk 34+.
  • Permissions handling streamlined; new transient starting / stopping
    UI states provide clearer feedback.
  • 16 KB ELF page-size compatibility: native code compiled with the required
    alignment flags (Google Play requirement since November 2025). Note that the
    bundled Movella SDK library is not yet compatible.
  • Main layout simplified to LinearLayout; old landscape / splash layouts and
    unused preference XMLs removed.
  • compileSdk / targetSdk raised to 35; NDK updated to r28.
  • Gradle plugin updated to 8.1.2 / 8.10; setup-gradle action bumped; CI
    workflow split into separate debug and release APK jobs.
  • LSL service start/stop made concurrency-safe.
  • LocationBridge crash on startup fixed.
  • MainActivity crash fixed by lazy-initialising the ViewModel.
  • Sensor outlet race condition fixed (sensor stream now starts only after the
    LSL outlet is initialised).
  • Unit test added for MainViewModel.
  • App correctly stops the foreground service when swiped away from recents.

UI / UX

  • Stream availability status text updated.
  • Layout margins adjusted in activity_main.xml.
  • Settings/gear menu icon removed (no configurable settings at this time).
  • Tutorial layout constraints and text corrected.

Build & CI

  • APK signed correctly via GitHub Actions using repository secrets.
  • Separate CI jobs for debug builds (feature branches) and signed release APKs
    (master branch).
  • Signing configuration now checks for keystore existence before applying
    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.

pmaanen added 30 commits April 9, 2025 11:50
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
s4rify and others added 26 commits February 16, 2026 12:08
Development to mastr for latest PMaanen release
Added signing configuration for release builds using environment variables.
Removed keystore decoding step and redundant build command.
* 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
* 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
Copilot AI review requested due to automatic review settings May 22, 2026 10:03
@s4rify s4rify merged commit 94fe41a into master May 22, 2026
2 checks passed
@s4rify s4rify review requested due to automatic review settings May 22, 2026 10:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants