Skip to content

if like made 3 new features maby you can use the code of that use in the meshtastic app key word monitor email detection in longfast put them in list and a tv dashboard whit chromecast https://www.youtube.com/watch?v=kIslPJpNWjI#5315

Closed
tenij000 wants to merge 10 commits intomeshtastic:mainfrom
tenij000:main

Conversation

@tenij000
Copy link
Copy Markdown

@tenij000 tenij000 commented May 1, 2026

Thank you for sending in a pull request, here's some tips to get started!

(Please delete all these tips and replace with your text)

  • Before starting on some new big chunk of code, it it is optional but highly recommended to open an issue first to say "Hey, I think this idea X should be implemented and I'm starting work on it. My general plan is Y, any feedback is appreciated." This will allow other devs to potentially save you time by not accidentally duplicating work etc...
  • Mention "#(issue)" in the description, when applicable
  • Please do not check in files that don't have real changes
  • Please do not reformat lines that you didn't have to change the code on
  • If your other co-developers have comments on your PR please tweak as needed
  • Do not use any external image service, just paste or drag and drop the image here and it will be uploaded automatically
  • Please also enable "Allow edits by maintainers".

@CLAassistant
Copy link
Copy Markdown

CLAassistant commented May 1, 2026

CLA assistant check
All committers have signed the CLA.

@github-actions github-actions Bot added build Build system changes ai-generated labels May 1, 2026
@jamesarich
Copy link
Copy Markdown
Collaborator

What is this?

@jamesarich
Copy link
Copy Markdown
Collaborator

Closing this - undocumented, untested, not following CONTRIBUTORS.md

@jamesarich jamesarich closed this May 1, 2026
@rcarteraz
Copy link
Copy Markdown
Member

What in the world did I just read?

@tenij000

This comment has been minimized.

@tenij000
Copy link
Copy Markdown
Author

tenij000 commented May 2, 2026

update made so can run your android app > install on google tv runs on tv it self whit out a phone

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR attempts to add three major user-facing capabilities to the Meshtastic app—keyword monitoring (with optional auto-reply), an “email gateway” queue surfaced in Settings, and TV/Cast-related UI—while also introducing a new minimal build flavor and changing navigation/top-level destinations.

Changes:

  • Add keyword monitor preferences + UI, and message highlighting/auto-reply hooks.
  • Add an email queue database table/DAO + settings screens + email intent helper.
  • Add Cast-related dependencies/UI (Cast button in the app bar + a Presentation-based TV dashboard), plus a new minimal flavor and related build/nav changes.

Reviewed changes

Copilot reviewed 79 out of 83 changed files in this pull request and generated 17 comments.

Show a summary per file
File Description
gradle/libs.versions.toml Add Cast + MediaRouter libs to catalog
feature/widget/build.gradle.kts Lower widget module minSdk to 24
feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/navigation/SettingsNavigation.kt Add routes for Email queue/settings screens
feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/filter/FilterSettingsViewModel.kt Add keyword monitor state + mutations
feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/filter/FilterSettingsScreen.kt Add keyword monitor UI to filter settings
feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/email/EmailSettingsScreen.kt New email settings UI screen
feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/email/EmailQueueViewModel.kt New VM for email queue + toggle
feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/email/EmailQueueScreen.kt New email queue list UI
feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/SettingsScreen.kt Add email queue entry + TV dashboard section
feature/settings/build.gradle.kts Add Room/SQLite deps to settings feature
feature/messaging/src/jvmMain/kotlin/org/meshtastic/feature/messaging/MessageExportHandler.kt JVM stub for export handler
feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageScreenComponents.kt Add “export CSV” overflow menu item
feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageItem.kt Add keyword-monitor highlighting icon
feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/MessageViewModel.kt Wire CSV export write path
feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/Message.kt Add expect/actual export handler entry point
feature/messaging/src/androidMain/kotlin/org/meshtastic/feature/messaging/MessageExportHandler.kt Android document-create export handler
desktop/src/test/kotlin/org/meshtastic/desktop/ui/DesktopTopLevelDestinationParityTest.kt Update desktop nav parity expectations
desktop/src/main/kotlin/org/meshtastic/desktop/Main.kt Update keyboard shortcut destination
core/ui/src/jvmMain/kotlin/org/meshtastic/core/ui/component/CastButton.kt JVM stub Cast button
core/ui/src/iosMain/kotlin/org/meshtastic/core/ui/component/CastButton.kt iOS stub Cast button
core/ui/src/commonMain/kotlin/org/meshtastic/core/ui/navigation/TopLevelDestinationExt.kt Update top-level icon mapping
core/ui/src/commonMain/kotlin/org/meshtastic/core/ui/component/MeshtasticNavigationSuite.kt Allow custom destinations + special tint
core/ui/src/commonMain/kotlin/org/meshtastic/core/ui/component/MainAppBar.kt Always show CastButton in app bar
core/ui/src/commonMain/kotlin/org/meshtastic/core/ui/component/CastButton.kt Add expect CastButton declaration
core/ui/src/androidMain/kotlin/org/meshtastic/core/ui/component/CastButton.kt Android MediaRouteButton-backed Cast button
core/ui/build.gradle.kts Add Cast/MediaRouter dependencies for Android
core/testing/src/commonMain/kotlin/org/meshtastic/core/testing/FakeAppPreferences.kt Adjust preference fakes (incomplete)
core/service/build.gradle.kts Add serialization + Ktor/Room deps to service module
core/resources/src/commonMain/composeResources/values/strings.xml Add EN strings for email + TV dashboard
core/resources/src/commonMain/composeResources/values-nl/strings.xml Add NL strings for email + TV dashboard
core/resources/src/commonMain/composeResources/drawable/ic_crown.xml Add crown icon drawable
core/repository/src/commonMain/kotlin/org/meshtastic/core/repository/AppPreferences.kt Add keyword monitors + EmailPrefs interfaces
core/prefs/src/commonMain/kotlin/org/meshtastic/core/prefs/ui/UiPrefsImpl.kt Persist keyword monitors in DataStore
core/prefs/src/commonMain/kotlin/org/meshtastic/core/prefs/email/EmailPrefsImpl.kt New EmailPrefs DataStore-backed impl
core/prefs/src/androidMain/kotlin/org/meshtastic/core/prefs/di/CorePrefsAndroidModule.kt Provide EmailDataStore on Android
core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/AndroidRadioTransportFactory.kt Change mock transport detection behavior
core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/MultiBackstackTest.kt Update tests for renamed top-level destination
core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/TopLevelDestination.kt Replace Map top-level with Location/Position
core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/Routes.kt Add SettingsRoute.EmailQueue/EmailSettings
core/database/src/commonMain/kotlin/org/meshtastic/core/database/entity/EmailQueueEntity.kt New Room entity for email queue
core/database/src/commonMain/kotlin/org/meshtastic/core/database/entity/DiscordQueueEntity.kt New (unused) discord queue entity
core/database/src/commonMain/kotlin/org/meshtastic/core/database/dao/EmailQueueDao.kt New DAO for email queue
core/database/src/commonMain/kotlin/org/meshtastic/core/database/dao/DiscordQueueDao.kt New (unused) DAO for discord queue
core/database/src/commonMain/kotlin/org/meshtastic/core/database/MeshtasticDatabase.kt Add email queue table + bump schema version
core/database/src/commonMain/kotlin/org/meshtastic/core/database/DatabaseProvider.kt Add global db singleton holder
core/database/src/commonMain/kotlin/org/meshtastic/core/database/DatabaseManager.kt Assign global DatabaseProvider.db on open
core/database/schemas/org.meshtastic.core.database.MeshtasticDatabase/39.json New Room schema snapshot
core/data/src/commonMain/kotlin/org/meshtastic/core/data/manager/MeshDataHandlerImpl.kt Add keyword + email detection/auto-reply logic
core/common/src/jvmMain/kotlin/org/meshtastic/core/common/util/EmailUtil.kt JVM stub sendEmailIntent
core/common/src/iosMain/kotlin/org/meshtastic/core/common/util/EmailUtil.kt iOS stub sendEmailIntent
core/common/src/commonMain/kotlin/org/meshtastic/core/common/util/EmailUtil.kt Add expect sendEmailIntent
core/common/src/androidMain/kotlin/org/meshtastic/core/common/util/EmailUtil.kt Android implementation of sendEmailIntent
core/barcode/src/minimal/kotlin/org/meshtastic/core/barcode/BarcodeAnalyzerFactory.kt ZXing analyzer for minimal flavor
core/barcode/build.gradle.kts Add ZXing dep for minimal flavor
config.properties Lower MIN_SDK to 24 globally
build-logic/convention/src/main/kotlin/org/meshtastic/buildlogic/MeshtasticFlavor.kt Introduce minimal flavor
build-logic/convention/src/main/kotlin/AnalyticsConventionPlugin.kt Disable analytics tasks for minimal
app/src/minimal/kotlin/org/meshtastic/app/ui/MapNavigation.kt Disable map graph in minimal
app/src/minimal/kotlin/org/meshtastic/app/di/MinimalNetworkModule.kt No-op API service for minimal
app/src/minimal/kotlin/org/meshtastic/app/di/FlavorModule.kt Minimal DI module entry point
app/src/minimal/kotlin/org/meshtastic/app/analytics/MinimalPlatformAnalytics.kt Minimal analytics implementation
app/src/minimal/kotlin/org/meshtastic/app/MapLocals.kt Minimal map locals no-op
app/src/minimal/kotlin/org/meshtastic/app/AnalyticsIntro.kt Minimal analytics intro no-op
app/src/minimal/AndroidManifest.xml Remove location permissions; adjust FGS type
app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml Add/update adaptive icon definition
app/src/main/kotlin/org/meshtastic/app/ui/Main.kt Register map graph via flavor hook
app/src/main/kotlin/org/meshtastic/app/di/AppKoinModule.kt Remove FeatureMapModule from base modules
app/src/main/kotlin/org/meshtastic/app/cast/TvDashboardPresentation.kt New Presentation-based TV dashboard
app/src/main/kotlin/org/meshtastic/app/cast/CastOptionsProvider.kt Provide CastOptions for GMS cast framework
app/src/main/kotlin/org/meshtastic/app/MainActivity.kt Add MediaRouter/Cast session wiring; refactor locals
app/src/main/AndroidManifest.xml Register Cast OPTIONS_PROVIDER meta-data
app/src/google/kotlin/org/meshtastic/app/ui/MapNavigation.kt Enable map graph in google flavor
app/src/google/kotlin/org/meshtastic/app/di/FlavorModule.kt Include FeatureMapModule in google flavor
app/src/google/kotlin/org/meshtastic/app/MapLocals.kt Provide map-related CompositionLocals (google)
app/src/google/kotlin/org/meshtastic/app/AnalyticsIntro.kt Move analytics intro into base package
app/src/fdroid/kotlin/org/meshtastic/app/ui/MapNavigation.kt Enable map graph in fdroid flavor
app/src/fdroid/kotlin/org/meshtastic/app/di/FlavorModule.kt Include FeatureMapModule in fdroid flavor
app/src/fdroid/kotlin/org/meshtastic/app/MapLocals.kt Provide map-related CompositionLocals (fdroid)
app/src/fdroid/kotlin/org/meshtastic/app/AnalyticsIntro.kt Move analytics intro into base package
app/build.gradle.kts Make map feature flavor-scoped; add cast deps; packaging excludes

Comment on lines 100 to 104
private val adminPacketHandler: AdminPacketHandler,
private val uiPrefs: UiPrefs,
private val workerManager: org.meshtastic.core.repository.MeshWorkerManager,
private val radioController: Lazy<org.meshtastic.core.model.RadioController>,
@Named("ServiceScope") private val scope: CoroutineScope,
import androidx.mediarouter.media.MediaRouteSelector
import androidx.mediarouter.media.MediaRouter
import androidx.mediarouter.media.MediaControlIntent
import com.google.android.gms.cast.CastMediaControlIntent
Comment on lines 50 to 54
override val supportedDeviceTypes: List<DeviceType> = listOf(DeviceType.BLE, DeviceType.TCP, DeviceType.USB)

override fun isMockTransport(): Boolean =
buildConfigProvider.isDebug || Settings.System.getString(context.contentResolver, "firebase.test.lab") == "true"
Settings.System.getString(context.contentResolver, "firebase.test.lab") == "true"

Comment on lines +412 to +420
private fun ExportMessagesMenuItem(onDismiss: () -> Unit, onExport: () -> Unit) {
DropdownMenuItem(
text = { Text("Exporteer gesprekken (.csv)") },
onClick = {
onDismiss()
onExport()
},
leadingIcon = { Icon(imageVector = MeshtasticIcons.FileDownload, contentDescription = "Export") },
)
Comment on lines 53 to 56
import org.meshtastic.core.ui.icon.MeshtasticIcons
import org.meshtastic.core.ui.icon.Send
import org.meshtastic.core.ui.icon.Send
import org.meshtastic.core.ui.icon.Wifi
Comment on lines +131 to +136
Text(
"Geen zoekwoorden ingesteld",
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.padding(vertical = 8.dp),
)
Comment on lines 152 to +158
fun shouldProvideNodeLocation(nodeNum: Int): StateFlow<Boolean>

fun setShouldProvideNodeLocation(nodeNum: Int, provide: Boolean)

val keywordMonitors: StateFlow<Set<String>>

fun setKeywordMonitors(keywords: Set<String>)
Comment on lines 299 to 313
@@ -290,12 +309,5 @@ class FakeAppPreferences : AppPreferences {
override val radio = FakeRadioPrefs()
override val mesh = FakeMeshPrefs()
override val tak = FakeTakPrefs()
}

class FakeTakPrefs : org.meshtastic.core.repository.TakPrefs {
override val isTakServerEnabled = MutableStateFlow(false)

override fun setTakServerEnabled(enabled: Boolean) {
isTakServerEnabled.value = enabled
}
override val discord = FakeDiscordPrefs()
}
Comment on lines +260 to +272
if (text.contains(keyword)) {
Logger.i { "Keyword trigger detected on channel 0: $text (keyword: $keyword)" }

// UI Notification (Silent)
scope.handledLaunch {
notificationManager.dispatch(
Notification(
title = "Keyword: $keyword",
message = "Bericht: ${dataPacket.text}",
category = Notification.Category.Message,
isSilent = true,
),
)
Comment on lines 133 to 136
_currentDb.value = db
_currentAddress.value = address
DatabaseProvider.db = db
markLastUsed(dbName)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-generated build Build system changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants