You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ All notable changes to the BoxViewer project will be documented in this file.
11
11
12
12
### Added
13
13
-**Expanded System Diagnostics**: System Diagnostics copy action now includes active home screen widget counts, system locale, app preferences, database state, and saved crash stack traces.
14
-
-**7 New Locales Supported**: Prepared language picker and resource infrastructure for Czech (`cs`), Spanish (`es`), French (`fr`), Hungarian (`hu`), Italian (`it`), Dutch (`nl`), and Polish (`pl`).
14
+
-**7 New Locales Added**: Integrated complete translations from POEditor for Czech (`cs`), Spanish (`es`), French (`fr`), Hungarian (`hu`), Italian (`it`), Dutch (`nl`), and Polish (`pl`), expanding in-app language picker and system locale support to 8 languages total.
Copy file name to clipboardExpand all lines: README.md
+33-29Lines changed: 33 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,7 +34,7 @@ Crafted with **Kotlin** and **Jetpack Compose** following Material Design 3 guid
34
34
***📈 Rich Telemetry Analysis**: Deep telemetry streams visualization including units, last updated timestamps, coordinates, station type, and exposure type (indoor vs. outdoor).
35
35
***🔍 Smart Discovery Engine**: Locate public senseBoxes from the openSenseMap community using direct search by name/ID, location address auto-complete, or on-demand GPS discovery.
36
36
***🌡️ Local Unit Conversion**: Per-sensor unit switching for temperature (°C/°F/K), pressure (hPa/mbar/Pa/inHg/mmHg), and wind (m/s/km/h/mph/kn) performed entirely on-device.
37
-
***🌐 Multi-Language Support**: BoxViewer currently ships in English and German and is prepared for additional languages (see below)
37
+
***🌐 Multi-Language Support**: BoxViewer supports 8 languages (English, German, Czech, Spanish, French, Hungarian, Italian, Dutch, Polish) with POEditor translation integration.
38
38
***🔗 Quick Sharing & Deep Linking**: Generate local QR codes to share senseBox stations. Recipients scan the code or open a sharing web link to view the station directly inside the BoxViewer app.
39
39
***🔋 Battery & API-Friendly**: Seamless local SQLite caching (`SensorCacheEntity`) and awake-on-unlock widget refresh logic ensure you get fresh data without draining your battery or hammering openSenseMap servers.
40
40
***🔒 Privacy-First & De-Googled Friendly**: 100% free of Google Play Services (GMS) dependencies in the app code. Core functionality relies on the native Android `LocationManager` and direct openSenseMap APIs. Address search and location labels may use the device’s native geocoder (ROM-dependent backend) or an OpenStreetMap-based fallback; see the Privacy Policy for details. Zero telemetry, analytics, or third-party trackers.
@@ -45,21 +45,25 @@ Crafted with **Kotlin** and **Jetpack Compose** following Material Design 3 guid
45
45
46
46
## ⬇️ Download & Install
47
47
48
-
BoxViewer is distributed as an independent APK package and is compatible with Android 7.0 (API 24) and above.
48
+
BoxViewer is compatible with Android 7.0 (API 24) and above and is distributed via Google Play as well as direct APK downloads.
49
49
50
-
### 🧪 Google Play Open Testing
51
-
***[Join Open Testing on Google Play](https://play.google.com/store/apps/details?id=de.nichu42.boxviewer)**: Open testing builds may receive new features and fixes earlier than stable GitHub release APKs.
<imgalt="Get it on Google Play"src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"height="80" />
53
+
</a>
52
54
53
-
### 🚀 Direct Download
54
-
You can download stable APKs directly from GitHub — no account required:
55
+
* Opt-in directly on Google Play to test the latest beta builds (no sign-up or approval required).
55
56
56
-
***[Download Stable APKs](https://github.com/nichu42/boxviewer/releases)**: Recommended for most users. Contains vetted, officially tagged stable releases.
57
+
### 🚀 Direct Download & GitHub Releases
58
+
You can download APK packages directly from the **[GitHub Releases](https://github.com/nichu42/boxviewer/releases)** page:
59
+
***Latest Releases**: Official stable releases, tested and recommended for general use.
60
+
***Pre-Releases**: Early test builds (Open Beta) published in parallel with the Google Play Open Testing track for users who prefer to try the newest features immediately.
57
61
58
62
### 🔄 Automatic Updates with Obtainium
59
-
To receive automatic updates on de-googled systems, we recommend using **[Obtainium](https://obtainium.imranr.dev/)**:
60
-
1. Copy the GitHub repository link: `https://github.com/nichu42/boxviewer`
61
-
2. Open Obtainium and select **Add App**.
62
-
3.Paste the URL and click **Add** to start tracking releases.
63
+
To receive automatic updates on de-googled ROMs or without Google Play Services, we recommend using **[Obtainium](https://obtainium.imranr.dev/)**:
64
+
1. Copy the repository URL: `https://github.com/nichu42/boxviewer`
65
+
2. Open Obtainium, tap **Add App**, and paste the URL.
66
+
3.Obtainium will automatically track GitHub releases (including pre-releases if enabled).
63
67
64
68
---
65
69
@@ -74,24 +78,6 @@ BoxViewer is developed with love as an open-source project. If you are happy wit
BoxViewer adheres to the strict guidelines of modern Android architecture (MVVM / Clean Architecture style) enabling clean decoupling between database layers, networking models, and the UI.
82
-
83
-
***UI Framework**: [Jetpack Compose](https://developer.android.com/jetcompose) (declarative UI with type-safe compose navigation).
***Local Persistence Layer**: [Room Database](https://developer.android.com/training/data-storage/room) using Kotlin Symbol Processing (KSP) compilation to persist configurations, widgets, and offline caches.
86
-
***Networking Server-Client**: [Retrofit 3](https://square.github.io/retrofit/) coupled with [OkHttp 5](https://square.github.io/okhttp/) and [Moshi](https://github.com/square/moshi) to carry out efficient JSON processing of the openSenseMap API.
***QR Code Utilities**: [ZXing Core](https://github.com/zxing/zxing) barcode image processing library for local generation of station QR sharing codes.
89
-
***Core Security Integration**: Secrets Gradle Plugin configured with safe `.env` runtime configurations to decouple keys and configurations from version-control processes.
90
-
***Local Testing Ecosystem**: Fully integrated [Robolectric](https://robolectric.org/) testing suites running on high-speed headless JVM surfaces combined with [Roborazzi](https://github.com/takahirom/roborazzi) for visual screenshot regression testing.
91
-
</details>
92
-
93
-
---
94
-
95
81
## 🌍 Data, Geocoding & Attribution
96
82
97
83
### openSenseMap API
@@ -143,6 +129,24 @@ For more details on translating and how the sync workflow works, check our [CONT
BoxViewer adheres to modern Android architecture guidelines (MVVM / Clean Architecture) with clean decoupling between database, networking, and presentation layers.
137
+
138
+
***UI Framework**: [Jetpack Compose](https://developer.android.com/jetcompose) (declarative UI with type-safe Compose Navigation).
***Local Persistence Layer**: [Room Database](https://developer.android.com/training/data-storage/room) compiled with KSP to manage configurations, widgets, and offline caches.
141
+
***Networking**: [Retrofit 3](https://square.github.io/retrofit/) with [OkHttp 5](https://square.github.io/okhttp/) and [Moshi](https://github.com/square/moshi) for JSON parsing of the openSenseMap API.
0 commit comments