Use updated meshcore-decoder library with TRACE patch and fixup frontend routing display on packet list

This commit is contained in:
Jack Kingsman
2026-03-09 12:45:51 -07:00
parent 463a0c9084
commit 5bfd9f4af2
5 changed files with 55 additions and 12 deletions

View File

@@ -562,7 +562,7 @@ THE SOFTWARE.
</details>
### @michaelhart/meshcore-decoder (0.2.7) — MIT
### @michaelhart/meshcore-decoder (0.3.0) — MIT
<details>
<summary>Full license text</summary>

View File

@@ -1,16 +1,16 @@
{
"name": "remoteterm-meshcore-frontend",
"version": "2.7.1",
"version": "2.7.9",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "remoteterm-meshcore-frontend",
"version": "2.7.1",
"version": "2.7.9",
"dependencies": {
"@codemirror/lang-python": "^6.2.1",
"@codemirror/theme-one-dark": "^6.1.3",
"@michaelhart/meshcore-decoder": "npm:meshcore-decoder-multibyte-patch@0.2.7",
"@michaelhart/meshcore-decoder": "npm:meshcore-decoder-multibyte-patch@0.3.0",
"@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-label": "^2.1.8",
@@ -1345,9 +1345,9 @@
},
"node_modules/@michaelhart/meshcore-decoder": {
"name": "meshcore-decoder-multibyte-patch",
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/meshcore-decoder-multibyte-patch/-/meshcore-decoder-multibyte-patch-0.2.7.tgz",
"integrity": "sha512-sk0SIsIg3wSaQKAmdROTzZw7xebRXwaR1d5O+Z6l+Ya956hcSel+8AOmSJUBo7kVA7MmCsHWtTdb9majDmRl0w==",
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/meshcore-decoder-multibyte-patch/-/meshcore-decoder-multibyte-patch-0.3.0.tgz",
"integrity": "sha512-qcGsi1/PbtCTQbZ7rf9G3iSk55eouiGaroeS1ZS+jiKWBELZPV3++xjRup2+xX0rjQtnX5Gg4SCcLvF7Y0M6Sg==",
"license": "MIT",
"dependencies": {
"@noble/ed25519": "^2.3.0",
@@ -5000,6 +5000,22 @@
"crypto-js": "^4.2.0"
}
},
"node_modules/meshcore-hashtag-cracker/node_modules/@michaelhart/meshcore-decoder": {
"name": "meshcore-decoder-multibyte-patch",
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/meshcore-decoder-multibyte-patch/-/meshcore-decoder-multibyte-patch-0.2.7.tgz",
"integrity": "sha512-sk0SIsIg3wSaQKAmdROTzZw7xebRXwaR1d5O+Z6l+Ya956hcSel+8AOmSJUBo7kVA7MmCsHWtTdb9majDmRl0w==",
"license": "MIT",
"dependencies": {
"@noble/ed25519": "^2.3.0",
"chalk": "^4.1.2",
"commander": "^12.0.0",
"crypto-js": "^4.2.0"
},
"bin": {
"meshcore-decoder": "dist/cli.js"
}
},
"node_modules/meshoptimizer": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.22.0.tgz",

View File

@@ -17,7 +17,7 @@
"dependencies": {
"@codemirror/lang-python": "^6.2.1",
"@codemirror/theme-one-dark": "^6.1.3",
"@michaelhart/meshcore-decoder": "npm:meshcore-decoder-multibyte-patch@0.2.7",
"@michaelhart/meshcore-decoder": "npm:meshcore-decoder-multibyte-patch@0.3.0",
"@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-label": "^2.1.8",

View File

@@ -157,9 +157,9 @@ function getRouteTypeColor(routeType: string): string {
return 'bg-info/20 text-info';
case 'Direct':
return 'bg-success/20 text-success';
case 'Transport Flood':
case 'TransportFlood':
return 'bg-purple-500/20 text-purple-400';
case 'Transport Direct':
case 'TransportDirect':
return 'bg-orange-500/20 text-orange-400';
default:
return 'bg-muted text-muted-foreground';
@@ -173,9 +173,9 @@ function getRouteTypeLabel(routeType: string): string {
return 'F';
case 'Direct':
return 'D';
case 'Transport Flood':
case 'TransportFlood':
return 'TF';
case 'Transport Direct':
case 'TransportDirect':
return 'TD';
default:
return '?';

View File

@@ -0,0 +1,27 @@
import { render, screen } from '@testing-library/react';
import { describe, expect, it } from 'vitest';
import { RawPacketList } from '../components/RawPacketList';
import type { RawPacket } from '../types';
function createPacket(overrides: Partial<RawPacket> = {}): RawPacket {
return {
id: 1,
timestamp: 1700000000,
data: '000000000000',
payload_type: 'REQ',
snr: null,
rssi: null,
decrypted: false,
decrypted_info: null,
...overrides,
};
}
describe('RawPacketList', () => {
it('renders TF badge for transport-flood packets', () => {
render(<RawPacketList packets={[createPacket()]} />);
expect(screen.getByText('TF')).toBeInTheDocument();
});
});