feat(udp): Highlight Callsign and Replay — the decoder becomes log-aware
Message 13 paints callsigns in WSJT-X/JTDX's own Band Activity window with verdicts from the same cluster status cache that colours the spot grid: watchlist pink, new DXCC green, new band for its entity orange. Deduplicated per instance+call+verdict, one datagram each; a verdict that lapses (the operator worked them) clears that call, and turning the option off clears everything via the protocol's CLEARALL!. Off by default, switch in the Connections panel. Message 7 asks a program heard for the first time this session to replay the decodes already on its screen, so the FT decodes panel starts full instead of empty until the next period. Replayed lines arrive marked not-new and are shown but never auto-answered — the auto-caller now checks, on top of its 30-second freshness gate.
This commit is contained in:
@@ -2,6 +2,7 @@ import React, { useCallback, useEffect, useState } from 'react';
|
||||
import { Plus, Trash2, Edit2, RefreshCcw, ArrowDownToLine, ArrowUpFromLine } from 'lucide-react';
|
||||
import {
|
||||
ListUDPIntegrations, SaveUDPIntegration, DeleteUDPIntegration, ReloadUDPIntegrations,
|
||||
GetWsjtHighlight, SetWsjtHighlight,
|
||||
} from '../../wailsjs/go/main/App';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Input } from '@/components/ui/input';
|
||||
@@ -158,6 +159,8 @@ const TRIGGERS = [
|
||||
type Props = { onError: (msg: string) => void };
|
||||
|
||||
export function UDPIntegrationsPanel({ onError }: Props) {
|
||||
const [highlightOn, setHighlightOn] = useState(false);
|
||||
useEffect(() => { GetWsjtHighlight().then((v) => setHighlightOn(!!v)).catch(() => {}); }, []);
|
||||
const { t } = useI18n();
|
||||
const [items, setItems] = useState<UDPConfig[]>([]);
|
||||
const [loading, setLoading] = useState(true);
|
||||
@@ -229,6 +232,16 @@ export function UDPIntegrationsPanel({ onError }: Props) {
|
||||
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
{/* Log-aware colours in WSJT-X / JTDX's own window — lives HERE because
|
||||
this panel is where the WSJT-X link is configured. */}
|
||||
<label className="flex items-start gap-2 text-sm cursor-pointer max-w-2xl">
|
||||
<Checkbox checked={highlightOn}
|
||||
onCheckedChange={(c) => { setHighlightOn(!!c); void SetWsjtHighlight(!!c); }} />
|
||||
<span>
|
||||
{t('udpp.highlight')}
|
||||
<span className="block text-[11px] text-muted-foreground">{t('udpp.highlightHint')}</span>
|
||||
</span>
|
||||
</label>
|
||||
<Section
|
||||
title={t('udpp.inboundTitle')}
|
||||
icon={<ArrowDownToLine className="size-4" />}
|
||||
|
||||
Reference in New Issue
Block a user