* Handle node public key mismatch and show warning
- Add a mismatchKey flag to Node and MessageTopBar to indicate a public key mismatch.
- Set the public key to a default error value (all zeros) when a node's public key changes.
- Display a warning in the MessageTopBar when a key mismatch is detected in PKC.
- Only clear all nodes when a different mynode number is present.
* feat: Add key mismatch detection to NodeInfoDao
This commit introduces a new feature to the `NodeInfoDao` that detects and handles public key mismatches for existing nodes.
- A new function `upsertCheckKeyMatch` is added to `NodeInfoDao` that checks for public key changes when upserting a node. If a mismatch is detected, the public key is set to `ERROR_BYTE_STRING`, and a warning is logged.
- The function `upsertCheckKeyMatch` is used instead of `upsert` in `NodeRepository` and in `putAll` inside of `NodeInfoDao`.
- A new test `testPkcMismatch` is added to `NodeInfoDaoTest` to verify the key mismatch detection.
- Changed `testNodes` to have unique public keys.
- Added `mismatchKey` state to the node model.
* detekt spacing
* Refactor: Correctly handle different node installations in NodeRepository
The logic for detecting different node installations in `NodeRepository.kt` was inverted, this commit fixes the logic to use `!=` instead of `==` to detect if the node number has changed.
* 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>
* 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