Commit graph

248 commits

Author SHA1 Message Date
James Rich
451be0b98c
feat #1688: Add UDP mesh toggle (#1689)
Adds a toggle to enable or disable mesh via UDP.
2025-03-18 18:44:39 -05:00
Ken Piper
c7c29cb1c1
feat: Initial implementation of low battery notifications for nodes (#1653)
* Add initial implementation of low battery notifications for locally-connected and favorite nodes

* Hopefully make detekt happy

* detekt pls.

* Deduplicate some of the code

* detekt'd
2025-03-08 04:52:30 -06:00
James Rich
d78bea2365
feat: Show ALERT_APP notifications and override DND (#1515)
* feat: Show alert notifications and override silent mode

This commit adds support for showing alert notifications with high priority and the ability to override silent mode to ensure they are delivered to the user.

The changes include:
- Adding `showAlertNotification` function which overrides silent mode and configures a custom volume, shows a notification with high priority.
- Creating a new notification channel for alerts.
- Adding the alert app port number to the list of remembered data types.
- Modifying `rememberDataPacket` to check for alert app messages and show alert notification.

* Add notification policy access permission and DND override for alerts

This commit adds the `ACCESS_NOTIFICATION_POLICY` permission to the manifest and requests this permission from the user. It also adds a check for notification policy access in the MainActivity, and if it's not granted, shows a rationale dialog.

Additionally, the commit adds a notification override to the `showAlertNotification` function in `MeshServiceNotifications` to temporarily disable DND for alert notifications and restore the original ringer settings afterwards.

* Refactor: Enhance Android Notification and DND Handling

-   **Notification Channel Improvements:**
    -   Added `notificationLightColor` for better customization.
    -   Set `enableLights` and `enableVibration` in the alert channel.
    -   Use `alert.mp3` sound for alert channel.
-   **DND Permission Request:**
    -   Introduced a new permission request flow for Do Not Disturb (DND) access.
    -   Show a rationale dialog before requesting permission.
    -   Persist if rationale was shown to avoid re-prompting.
    - Added a `notificationPolicyAccessLauncher` to handle the permission request result.
-   **Critical Alert Text**
    - Added critical alert text in strings.
    - Used critical alert text if the alert message is empty.
-   **Other Changes**
    - Removed unused imports and constants.
    - Updated snackbar to support action.

* Refactor alert notification logic

- Change `notificationLightColor` to be lazy initialized.
- Update alert notification to use `CATEGORY_ALARM`.
- Use `dataPacket.alert` instead of `dataPacket.text` for alert content.
- Add `alert` property to `DataPacket` to handle alert messages.

* Set notification light color back to blue.

* Request notification permissions on grant

The app now checks for notification policy access after notification permissions are granted.

* make detekt happy

* updates dnd dialog text

* Refactor notification channel creation and critical alerts

- Initialize notification channels on service creation.
- Remove `ACCESS_NOTIFICATION_POLICY` permission.
- Modify the logic for requesting "Do Not Disturb" override permission to align with channel settings.
- Add new string resources for Alerts Channel Settings.
- Update wording for critical alert DND override.
- Update DND override request flow.
- Create notification channels on the service creation using `initChannels`.
- Adjust logic to check for "Do Not Disturb" override permission to align with notification channel settings.
- Ensure notification channels are created only if they do not already exist.

* refactor: Update DnD dialog with instructions for Samsung

- Renamed "Alerts Channel Settings" to "Channel Settings".
- Added Samsung-specific instructions and a link to Samsung's support page for Do Not Disturb mode in the alerts dialog.
- Updated the dialog to display Samsung-specific instructions when on a Samsung device.

* Refactor critical alerts instructions

- Updated the critical alerts instructions to include a link to Samsung's support page directly within the alert dialog.
- Removed the separate "Samsung Instructions" string and incorporated the information into the main instruction text, improving clarity and reducing redundancy.
- Made improvements to the UI.
2025-03-05 07:28:52 -06:00
James Rich
2859bed416
feat #1611: Add confirmation dialog when changing to router role (#1636)
* Add confirmation dialog for changing to router role

Introduced a confirmation dialog that will be shown when changing the device role to "router".
The confirmation dialog includes links to the "Device Role Documentation" and "Choosing The Right Device Role" blog post.
The user must check a checkbox to confirm.

* Update router role handling

Modified the handling of the router role in `DeviceConfigItemList.kt` to avoid returning prematurely from the `onItemSelected` lambda. This ensures that the role is updated properly when a user selects the "ROUTER" role.

* removes konami code check, remove testing code

* Refactor router role confirmation text

- Moves the router role confirmation text to strings.xml.
- Updates to use `AnnotatedString.fromHtml` instead of `buildAnnotatedString` and `withLink`.
- Changes from hard-coded strings to string resources.
2025-03-05 07:26:19 -06:00
Joshua Soberg
c597b3b000
fix #1554 (a11y): Add content description to tabs for screen reader support (#1631) 2025-03-02 09:22:24 -06:00
Ken Piper
e15ad23c46
feat: Initial implementation of adding nodes to favorites (#1520)
* Implement initial support for adding and removing nodes from favorites

* Make favorite nodes' names show up bold in the node list

* Forgot to add this here when I was fixing the previous merge conflicts. Whoops!

* Make detekt happy

---------

Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-02-16 06:02:02 -06:00
Robert-0410
b067a0c0b3
feat: Power graph (#1556)
* Refactor: We can draw the horizontal lines for the graphs independent of min and max entries.

* Added navigation to the PowerMetrics log with a skeleton screen.

* Drew channel 1 voltage.

* Refactor: Assigned colors for the data within the enum instead of a list-ordinal combo.

* Plotted Ch1 current line.

* Refactor: Did not need the parameters being used to get the desired ui in the TimeLabels composable.

* Added a row to help distinguish between units.

* Refactor: MetricsTimeSelector.kt to SlidingSelector.kt; the new version allows for generic options.

* Added a sliding selector to choose between power channels and changed the legend data to instead display current and voltage.

* We now plot the line for which the user has selected a power channel option.

* Don't need the current line to be dotted anymore.

* Don't think we need to display an info dialog for voltage and current.

* Wrote card to display the power channel data entries.

* detekt

* Refactor: current color change to accommodate the themes better

---------

Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-02-15 22:37:05 -06:00
andrekir
41b067bad2 chore: update Crowdin localization strings 2025-01-04 15:48:15 -03:00
andrekir
5dcfe0e68a feat: add ROUTER_LATE role description 2025-01-02 08:05:40 -03:00
andrekir
13b615a470 chore: update license header 2025-01-02 07:00:51 -03:00
andrekir
8226207dbf fix: node key status dialog public key selection 2024-12-17 12:31:16 -03:00
rcarteraz
5d0b0e7d72
chore: Remove Discourse Links, Replace with Discussions (#1455)
* Update README.md

* update discourse links to discussions
2024-12-11 11:40:46 -03:00
andrekir
f9424f2abc feat: add Alert Bell to Quick Chat actions
closes #972
2024-12-03 10:23:27 -03:00
Andre K
3c581f81a8
refactor: migrate MessagesFragment to Compose (#1444) 2024-11-30 23:20:09 -03:00
draen
e412faecb9
feat: Copy message to clipboard (#1443) 2024-11-30 14:19:01 -03:00
Espié.R
d76eac258b
feat: add text/plain intent to send message (#1389) 2024-11-30 14:12:08 -03:00
andrekir
1219d3037e chore: add GPL-3.0 license headers to source files 2024-11-26 08:54:18 -03:00
andrekir
f73d909cd0 refactor: consolidate QR code scanning methods 2024-11-21 10:32:37 -03:00
James Rich
fb04805255
Fix: Show 'unknown' for position logs older than 6 months (#1416)
* Fix: Show 'unknown' for position logs older than 6 months

Display 'unknown' instead of the timestamp for position logs older than 6 months. This addresses an issue where unknown timestamps were incorrectly shown as 1970 (unix epoch).

* Fix: make detekt happy

* Replace "Unknown" with "Unknown Age" in position logs

The text displayed for positions older than six months in position logs has been changed from "Unknown" to "Unknown Age". This update adds clarity and context to the age of positions in the log.
2024-11-19 10:29:44 -03:00
andrekir
bcc131e369 fix: missing string resource positional arguments 2024-11-15 08:13:38 -03:00
andrekir
30b7cc90ce feat: add new NeighborInfo config 2024-11-15 06:51:32 -03:00
Robert-0410
013e3de792
refactor: Conducting time filter at the component lvl to avoid metric nav cards from being disabled when we don't have recent data (#1402) 2024-11-13 07:24:40 -03:00
Robert-0410
7e54ad950c
feat: Metrics time selection (#1396) 2024-11-11 17:54:26 -03:00
andrekir
683b354dd4 feat: add optional summary text to SwitchPreference 2024-11-11 17:08:24 -03:00
Andre K
227c65f191
feat: node map position history log (#1384) 2024-11-06 11:00:38 -03:00
andrekir
a8c810bae2 feat: add DeviceConfig RebroadcastMode descriptions 2024-11-06 10:22:31 -03:00
andrekir
adbe5952fc feat: position logs 2024-11-02 17:22:54 -03:00
andrekir
e682254fe3 chore: remove unused resources 2024-10-26 05:42:25 -03:00
Andre K
a557bff3d7
feat: traceroute log (#1348) 2024-10-25 08:14:32 -03:00
Robert-0410
bb345e7437
feat: Signal Metrics (#1340) 2024-10-23 17:31:31 -03:00
andrekir
6be44675e2 feat: add NodeDetailsScreen with metrics and remote admin navigation 2024-10-18 20:09:37 -03:00
James Rich
f6ec3e8bab
feat: Add notification for new node seen (#1316)
* Add notification for new node seen

This change adds a new notification that is displayed when a new node is seen.
The notification includes the node's
 name.
It also updates the message notification to include the node name.

* Show individual notification for each new node

* Add new nodes notifications

Adds a new notification channel for new nodes seen.
This channel is set to high importance with sound and light.
2024-10-15 06:07:22 -03:00
andrekir
8af225b998 feat: add new remote admin routing errors 2024-10-06 08:36:22 -03:00
James Rich
f944a236ac
feat: Adds Request user info (#1279)
* Request user info

* safe calls

* Fix: Ensure NodeInfo is sent when requesting user info

The `requestUserInfo` function now correctly sends `NodeInfo` when requesting user info by using the `
toNodeInfo()` method on `ourNodeInfo`. This ensures the recipient receives the necessary information.

* fix: remove unused parameters, use service's node db for our node entity

---------

Co-authored-by: musznik <bymucha@gmail.com>
2024-10-03 05:02:13 -03:00
andrekir
2370e8b596 feat: add DeviceConfig Role descriptions
closes #848
2024-09-28 09:00:25 -03:00
andrekir
a075dfbd3a feat: add dialog for message status information 2024-09-24 22:06:15 -03:00
andrekir
22b1cf0f16 feat: add encryption status icon and dialog to node list items 2024-09-23 10:13:27 -03:00
Andre K
36a13d7687
fix(conifg): implement sessionPasskey handling for admin requests (#1263) 2024-09-20 06:07:35 -03:00
andrekir
f8898def89 chore: remove unused resources 2024-09-18 19:48:04 -03:00
James Rich
9b90c128fb
feat: Add IAQ to environment metrics (#1258)
Adds Indoor Air Quality (IAQ) to the environment metrics chart and card.

The IAQ is displayed as a green line on the chart and as a dot with a numerical value on the card.
The IAQ scale is available as a legend in the IAQ component.
2024-09-18 18:42:58 -03:00
Robert-0410
843e423648
Device metric lines and info dialog (#1252)
* Removed constants from CommonCharts only used in specific charts.

* Altered CommonCharts.ChartOverlay to take a list of colors for the lines. Adjusted the device metrics line colors for channel utilization.

* Started an info dialog in the device metric chart to help users better understand Meshtastic.
2024-09-18 06:57:01 -03:00
Robert-0410
2c426d470c
Refactor NodeDetails to Metrics (#1222)
* Synced the string used for ChUtil and AirUtilTX in the NodeInfo and Device Metrics.

* Refactored NodeDetails to Metrics.

* Added string resources for "Hops Away".
2024-09-08 07:36:44 -03:00
Robert-0410
9f136fb31b
feat: Telemetry charts (#1198) 2024-08-31 08:05:42 -03:00
andrekir
d30a4d146a feat: add SHORT_TURBO modem preset 2024-08-25 10:40:34 -03:00
andrekir
c0955e7687 feat: add dialog to handle WiFi Credential QR code scan errors 2024-08-20 18:19:38 -03:00
Andre K
13606ad1f9
refactor: QrCodeScanDialog with single channel list and Add/Remove toggle (#1179) 2024-08-03 10:47:16 -03:00
andrekir
bc05280988 refactor: remove Companion Device Pairing
https://developer.android.com/develop/connectivity/bluetooth/companion-device-pairing
2024-08-03 07:53:59 -03:00
AddisonTustin
e4c6000a10
feat: support add=true in QR codes (#1151) 2024-07-28 08:50:54 -03:00
James Rich
fc2559f5f5
Expanding node info cards (#1144) 2024-07-28 07:04:50 -03:00
Robert-0410
ed17ae0734
Channel scan select (#1141) 2024-07-28 06:58:41 -03:00