* Removed repeated calculation.
* Centralized the radius used to plot points and draw lines within GraphUtil.kt.
* Updated the signal metrics chart to use the scroll features.
* SignalMetricsChart long method warning suppression.
* feat(config): implement excluded modules validation
* feat: hide excluded configs from metadata
* refactor: save local metadata from WantConfig
* refactor: delete metadata from deleted nodes
* fix: always request metadata for admin routes
* feat: show node firmware when metadata is available
* refactor: rename filter function
* feat: add `ServiceAction` request metadata
* The battery line is only drawn from point to point when we don't have a significant break in time.
* Implemented GraphUtil.plotPoint
* Implemented GraphUtil.createPath
* Added licence to GraphUtil.kt.
* Add tapback emojis to message bubbles
Added TapBackEmojiItem composable to display tapback emojis.
Included it in MessageItem composable for incoming messages.
Added a FlowRow to show tapback emojis below the message bubble.
* feat: Add EmojiPicker View
* feat: show emojis for local messages
* feat: Add emoji tapbacks to messages
This commit introduces the ability to send and receive emoji tapbacks for messages.
- Adds emoji and replyId fields to DataPacket.
- Adds emoji tapback support to the MeshService
- Modifies UIState to handle emojis in message lists.
* feat: store tapbacks in database
Store tapbacks in the database and display them in the message list.
- Add a new table to the database to store tapbacks.
- Add a new DAO method to insert and retrieve tapbacks.
- Update the message list UI to display tapbacks.
* refactor: relation db and other changes
---------
Co-authored-by: Andre K <andrekir@pm.me>
* Started horizontal scrolling for DeviceMetrics. Drawing lines based on the TimeFrame and setting the dp.
* Wrote YAxisLabels(), it will replace the Y labels portion of the ChartOverlay(). The composable works for either side of the graph.
* Wrote HorizontalLinesOverlay(), it will replace the horizontal lines portion of the ChartOverlay().
* Updated the data points to use their actual x values.
* Based the width of the scrollable graph on time.
* Added a date label to the TimeAxisOverlay.
* Composable that provides the snr and rssi within a row, along with docs for the two exposed functions in LoraSignalIndicator.kt.
* Fancied up the signal data within the NodeItem.
* 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.
- Consolidates `MetricViewModel` back to a single state flow
- Introduces a `MutableStateFlow` for state updates, allowing more independent control
- Moves `Telemetry`, `MeshPacket`, and config updates into separate coroutines