mirror of
https://github.com/usetrmnl/trmnl-android.git
synced 2026-04-29 13:35:26 -07:00
[UPDATE] Change app name from TRMNL Mirror to just TRMNL
This avoids some confusion about this being just mirror app for TRMNL devices.
This commit is contained in:
@@ -69,13 +69,13 @@ jobs:
|
||||
- name: Rename APK
|
||||
run: |
|
||||
mkdir -p artifact
|
||||
cp app/build/outputs/apk/release/app-release.apk artifact/trmnl-mirror-v${{ steps.version.outputs.VERSION }}.apk
|
||||
cp app/build/outputs/apk/release/app-release.apk artifact/trmnl-v${{ steps.version.outputs.VERSION }}.apk
|
||||
|
||||
- name: Upload Release APK
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: trmnl-mirror-app
|
||||
path: artifact/trmnl-mirror-v${{ steps.version.outputs.VERSION }}.apk
|
||||
name: trmnl-app
|
||||
path: artifact/trmnl-v${{ steps.version.outputs.VERSION }}.apk
|
||||
# Use maximum allowed retention period
|
||||
# https://github.com/actions/upload-artifact?tab=readme-ov-file#retention-period
|
||||
retention-days: 30
|
||||
@@ -101,8 +101,8 @@ jobs:
|
||||
echo "Found release ID: $RELEASE_ID"
|
||||
|
||||
# Upload APK to the release
|
||||
APK_FILE="artifact/trmnl-mirror-v${{ steps.version.outputs.VERSION }}.apk"
|
||||
APK_NAME="trmnl-mirror-v${{ steps.version.outputs.VERSION }}.apk"
|
||||
APK_FILE="artifact/trmnl-v${{ steps.version.outputs.VERSION }}.apk"
|
||||
APK_NAME="trmnl-v${{ steps.version.outputs.VERSION }}.apk"
|
||||
|
||||
echo "Uploading $APK_NAME to release..."
|
||||
|
||||
|
||||
+5
-5
@@ -1,10 +1,10 @@
|
||||
# Contributing Guide
|
||||
|
||||
Thank you for your interest in contributing to TRMNL Display Mirror App! This document provides guidelines and instructions to help you contribute effectively.
|
||||
Thank you for your interest in contributing to TRMNL App! This document provides guidelines and instructions to help you contribute effectively.
|
||||
|
||||
## Application Overview
|
||||
|
||||
This guide will help you get started with the TRMNL Display Mirror Android application development.
|
||||
This guide will help you get started with the TRMNL Android application development.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -22,7 +22,7 @@ The app uses a modern Android architecture with the following components:
|
||||
|
||||
#### Key Features/Screens
|
||||
|
||||
- Main TRMNL Mirror Display visualization in `TrmnlMirrorDisplayScreen`
|
||||
- Main TRMNL visualization in `TrmnlMirrorDisplayScreen`
|
||||
- Settings management via `AppSettingsScreen`
|
||||
- Image refresh log/history in `DisplayRefreshLogScreen`
|
||||
- Background refresh scheduling with `TrmnlWorkScheduler` & `TrmnlImageRefreshWorker`
|
||||
@@ -107,11 +107,11 @@ Automatic snapshot release builds are available in the [release workflow](https:
|
||||
- [Circuit UDF Architecture](https://slackhq.github.io/circuit/)
|
||||
- [Android Work Manager](https://developer.android.com/topic/libraries/architecture/workmanager)
|
||||
|
||||
Thank you for contributing to TRMNL Display Mirror App!
|
||||
Thank you for contributing to TRMNL App!
|
||||
|
||||
|
||||
## TRMNL App Image Loading Flow
|
||||
Here is a generated sequence diagram illustrating the flow of image loading in the TRMNL Display Mirror application.
|
||||
Here is a generated sequence diagram illustrating the flow of image loading in the TRMNL application.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
[](https://github.com/usetrmnl/trmnl-android/actions/workflows/android.yml) [](https://github.com/usetrmnl/trmnl-android/actions/workflows/android-release.yml) [](https://github.com/usetrmnl/trmnl-android/releases/latest)
|
||||
|
||||
# Android - TRMNL Display Mirror 🪞
|
||||
A simple app to mirror existing TRMNL's content to your Android devices like Phone, Tablet, e-Ink Display.
|
||||
# Android - TRMNL
|
||||
A simple app to show TRMNL's content to your Android devices like Phone, Tablet, e-Ink Display.
|
||||
|
||||
## Application Overview
|
||||
|
||||
The TRMNL Display Mirror app serves as a digital display mirror for TRMNL e-ink devices. The app connects to the TRMNL API, fetches display data, and shows it on Android devices.
|
||||
The TRMNL app serves as a digital display for TRMNL e-ink devices and BYOS installations. The app connects to the TRMNL or BYOS API server, fetches display data, and shows it on Android devices. It can function both as a mirror for existing TRMNL devices or as a standalone TRMNL device connected directly to BYOS or TRMNL (with BYOD add-on) servers.
|
||||
|
||||
### Key Features
|
||||
|
||||
@@ -39,7 +39,7 @@ Check installable APK from Assets in [latest release](https://github.com/usetrmn
|
||||
### 📱 F-Droid
|
||||
The app will *soon* be available on F-Droid, providing a free and open source Android app repository.
|
||||
1. Add the F-Droid repository to your F-Droid client
|
||||
2. Search for "TRMNL Display Mirror"
|
||||
2. Search for "TRMNL"
|
||||
3. Install the app
|
||||
-->
|
||||
|
||||
|
||||
@@ -33,8 +33,11 @@ import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
* Main activity for the TRMNL display mirror app.
|
||||
* This activity sets up the Circuit framework and handles navigation.
|
||||
* Main activity for the TRMNL app.
|
||||
*
|
||||
* This activity serves as the entry point for the Android TRMNL application.
|
||||
* It can function as either a mirror for existing TRMNL devices or as a
|
||||
* standalone TRMNL display connected directly to BYOS servers.
|
||||
*/
|
||||
@ContributesMultibinding(AppScope::class, boundType = Activity::class)
|
||||
@ActivityKey(MainActivity::class)
|
||||
|
||||
@@ -30,11 +30,13 @@ import androidx.window.core.layout.WindowSizeClass.Companion.WIDTH_DP_EXPANDED_L
|
||||
import androidx.window.core.layout.WindowSizeClass.Companion.WIDTH_DP_MEDIUM_LOWER_BOUND
|
||||
|
||||
/**
|
||||
* Displays a set of configuration and control actions for the TRMNL mirror display.
|
||||
* Displays a set of configuration and control actions for the TRMNL display.
|
||||
*
|
||||
* This composable provides quick access to device configuration, manual image refresh,
|
||||
* playlist navigation, and viewing refresh logs. It adapts its layout and button sizes
|
||||
* based on the current window size class, making it suitable for both phones and tablets.
|
||||
* This overlay provides quick access to common display controls such as:
|
||||
* - Manual refresh functionality
|
||||
* - Loading next playlist image
|
||||
* - Viewing refresh history logs
|
||||
* - Accessing app settings
|
||||
*
|
||||
* @param state The current state of the TRMNL mirror display, including refresh info and event sink.
|
||||
* @param windowSizeClass The current window size class, used to adapt the UI for different screen sizes.
|
||||
@@ -109,7 +111,7 @@ internal fun OverlaySettingsView(
|
||||
},
|
||||
text = {
|
||||
Text(
|
||||
"Configure Mirror Device",
|
||||
"Configure TRMNL",
|
||||
style = fabTextStyle,
|
||||
fontWeight = FontWeight.Bold,
|
||||
)
|
||||
|
||||
@@ -346,7 +346,7 @@ fun TrmnlMirrorDisplayContent(
|
||||
}
|
||||
}
|
||||
|
||||
@Preview(name = "Trmnl Mirror Display Image Preview")
|
||||
@Preview(name = "TRMNL Display Image Preview")
|
||||
@PreviewScreenSizes
|
||||
@Composable
|
||||
fun PreviewTrmnlMirrorDisplayImageContent() {
|
||||
@@ -365,7 +365,7 @@ fun PreviewTrmnlMirrorDisplayImageContent() {
|
||||
}
|
||||
}
|
||||
|
||||
@Preview(name = "Trmnl Mirror Display With Controls")
|
||||
@Preview(name = "TRMNL Display With Controls")
|
||||
@PreviewScreenSizes
|
||||
@Composable
|
||||
fun PreviewTrmnlMirrorDisplayWithControls() {
|
||||
@@ -384,7 +384,7 @@ fun PreviewTrmnlMirrorDisplayWithControls() {
|
||||
}
|
||||
}
|
||||
|
||||
@Preview(name = "Trmnl Mirror Display Error Content Preview")
|
||||
@Preview(name = "TRMNL Display Error Content Preview")
|
||||
@Composable
|
||||
fun PreviewTrmnlMirrorDisplayErrorContent() {
|
||||
Surface {
|
||||
|
||||
@@ -121,15 +121,13 @@ import java.time.ZoneId
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
/**
|
||||
* Screen for configuring the TRMNL mirror app settings.
|
||||
* Screen for configuring the TRMNL app settings.
|
||||
*
|
||||
* This screen allows users to set up and validate their TRMNL access token,
|
||||
* which is required to connect to the TRMNL API service. It displays validation
|
||||
* results, image previews when successful, and provides options to save the
|
||||
* configuration which in turn schedules refresh job using [TrmnlWorkScheduler].
|
||||
*
|
||||
* The screen can be configured to either return to the mirror display after
|
||||
* saving or to pop back to the previous screen.
|
||||
* This screen allows users to:
|
||||
* - Configure API authentication (access token or device ID)
|
||||
* - Set custom server URLs for BYOS installations
|
||||
* - Configure refresh intervals and behavior
|
||||
* - Manage display preferences
|
||||
*/
|
||||
@Parcelize
|
||||
data class AppSettingsScreen(
|
||||
@@ -338,7 +336,7 @@ class AppSettingsPresenter
|
||||
apiAccessToken = accessToken,
|
||||
deviceMacId = deviceMacId.ifBlank { null },
|
||||
)
|
||||
// For TRMNL mirror device type, use getCurrentDisplayData
|
||||
// For TRMNL device type, use getCurrentDisplayData
|
||||
// For all other device types, use getNextDisplayData
|
||||
// See https://discord.com/channels/1281055965508141100/1331360842809348106/1382865608236077086
|
||||
val response =
|
||||
@@ -593,7 +591,7 @@ fun AppSettingsContent(
|
||||
)
|
||||
|
||||
Text(
|
||||
text = "Display Mirror Configuration",
|
||||
text = "Display Configuration",
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
fontWeight = FontWeight.Bold,
|
||||
textAlign = TextAlign.Center,
|
||||
|
||||
@@ -23,7 +23,7 @@ import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
* Worker to refresh the image displayed on the TRMNL mirror display.
|
||||
* Worker to refresh the image displayed on the TRMNL display.
|
||||
*
|
||||
* The worker result is observed in [MainActivity] and then updated via the [TrmnlImageUpdateManager].
|
||||
* Whenever the image is updated, the [TrmnlImageUpdateManager] will notify the observers.
|
||||
|
||||
@@ -11,8 +11,11 @@ import kotlinx.coroutines.flow.asStateFlow
|
||||
import timber.log.Timber
|
||||
|
||||
/**
|
||||
* Manages the image update process for the TRMNL mirror display.
|
||||
* Acts as a central source of truth for image updates from WorkManager.
|
||||
* Manages the image update process for the TRMNL display.
|
||||
*
|
||||
* This manager handles communication between the background image refresh workers
|
||||
* and the UI components that display the TRMNL images. It maintains a flow of
|
||||
* image metadata that UI components can observe to update their content.
|
||||
*/
|
||||
@SingleIn(AppScope::class)
|
||||
class TrmnlImageUpdateManager
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<resources>
|
||||
<string name="app_name">TRMNL Mirror</string>
|
||||
<string name="app_name">TRMNL</string>
|
||||
</resources>
|
||||
@@ -1,2 +1,2 @@
|
||||
- Updated to latest version 1.9.4
|
||||
- Latest TRMNL Mirror app with F-Droid support
|
||||
- Latest TRMNL app with F-Droid support
|
||||
@@ -1,2 +1,2 @@
|
||||
- Updated to the latest version (1.9.5)
|
||||
- Latest TRMNL Mirror app with F-Droid support
|
||||
- Latest TRMNL app with F-Droid support
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
TRMNL Display Mirror serves as a digital display mirror for TRMNL e-ink devices. The app connects to the TRMNL API, fetches display data, and shows it on Android devices.
|
||||
TRMNL serves as a digital display for TRMNL e-ink devices and BYOS installations. The app connects to the TRMNL or BYOS API, fetches display data, and shows it on Android devices. It can function both as a mirror for existing TRMNL devices or as a standalone TRMNL display connected directly to BYOS servers.
|
||||
|
||||
Key Features:
|
||||
• Token-based authentication with TRMNL/BYOS API
|
||||
|
||||
@@ -1 +1 @@
|
||||
TRMNL Display Mirror
|
||||
TRMNL
|
||||
@@ -9,11 +9,11 @@ SourceCode: https://github.com/usetrmnl/trmnl-android
|
||||
IssueTracker: https://github.com/usetrmnl/trmnl-android/issues
|
||||
Changelog: https://github.com/usetrmnl/trmnl-android/releases
|
||||
|
||||
AutoName: TRMNL Mirror
|
||||
AutoName: TRMNL
|
||||
|
||||
RepoType: git
|
||||
Repo: https://github.com/usetrmnl/trmnl-android.git
|
||||
Binaries: https://github.com/usetrmnl/trmnl-android/releases/download/v%v/trmnl-mirror-v%v.apk
|
||||
Binaries: https://github.com/usetrmnl/trmnl-android/releases/download/v%v/trmnl-v%v.apk
|
||||
|
||||
Builds:
|
||||
- versionName: 2.0.3
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
# TRMNL Display App - Product Requirements Document (PRD)
|
||||
# TRMNL App - Product Requirements Document (PRD)
|
||||
|
||||
## 1. Introduction
|
||||
|
||||
The TRMNL Display app serves as a digital display mirror for TRMNL e-ink devices. It connects to the
|
||||
TRMNL API, fetches display data, and shows it on Android mobile devices. This app supports multiple
|
||||
The TRMNL app serves as a digital display for TRMNL e-ink devices and BYOS installations. It connects to the
|
||||
TRMNL or BYOS API, fetches display data, and shows it on Android mobile devices. This app can function both as a mirror
|
||||
for existing TRMNL devices or as a standalone TRMNL device connected directly to BYOS servers. The app supports multiple
|
||||
device types including official TRMNL devices, Bring Your Own Device (BYOD), and Bring Your Own Server
|
||||
(BYOS) configurations. The app provides automatic and manual refresh capabilities to keep the display
|
||||
synchronized with the TRMNL content.
|
||||
|
||||
This document outlines the requirements for the TRMNL Display Mirror Android application.
|
||||
This document outlines the requirements for the TRMNL Android application.
|
||||
|
||||
## 2. User Requirements
|
||||
|
||||
@@ -198,7 +199,7 @@ This document outlines the requirements for the TRMNL Display Mirror Android app
|
||||
|
||||
## 6. Implementation Considerations for Cross-Platform Development
|
||||
|
||||
This section provides guidance for teams implementing the TRMNL Display app on other platforms, ensuring feature parity while leveraging platform-specific capabilities.
|
||||
This section provides guidance for teams implementing the TRMNL app on other platforms, ensuring feature parity while leveraging platform-specific capabilities.
|
||||
|
||||
### iOS Specific
|
||||
|
||||
@@ -262,4 +263,4 @@ This section provides guidance for teams implementing the TRMNL Display app on o
|
||||
| LIM-11 | Flutter has more limited e-ink display optimization capabilities compared to native implementations. |
|
||||
| LIM-12 | React Native may have performance limitations when handling large image rendering on low-end devices. |
|
||||
|
||||
This PRD provides a comprehensive guide for implementing and maintaining the TRMNL Display app. Development teams should use this document to ensure the application meets all required functionality while following platform-specific best practices.
|
||||
This PRD provides a comprehensive guide for implementing and maintaining the TRMNL app. Development teams should use this document to ensure the application meets all required functionality while following platform-specific best practices.
|
||||
Reference in New Issue
Block a user