feat(app): auto-call, PSK Reporter analysis and the decode band change

The Wails boundary for the two features above, plus the pieces that
belong to neither:

- decodes are cut into periods PER RECEIVER, and judged 0.8 s after the
  last one arrives rather than a slot and four seconds after the period
  they belong to. That stamp is the START of the slot, thirteen seconds
  before its decodes exist, so every answer left four seconds into the
  next slot and the decoder began its call late.

- WSJT-X colouring can grey out a station already worked on this band
  AND in this mode. Its own switch, off by default: the other three
  verdicts pick out a handful of decodes, this one can match most of a
  period on a full log.

- the watch list's contest auto-add takes a list of callsigns as well
  as a pattern. A pattern collects a fleet that shares a string; it
  cannot collect the station taking part under a callsign that says
  nothing about the event.
This commit is contained in:
2026-09-05 21:45:51 +02:00
parent 470eaf5d80
commit e4a5d42b85
4 changed files with 57 additions and 2 deletions
+10
View File
@@ -1962,6 +1962,8 @@ export namespace main {
misses: number;
max_rounds: number;
rest_min: number;
on_screen_only: boolean;
trace: boolean;
static createFrom(source: any = {}) {
return new AutoCallSettings(source);
@@ -1976,6 +1978,8 @@ export namespace main {
this.misses = source["misses"];
this.max_rounds = source["max_rounds"];
this.rest_min = source["rest_min"];
this.on_screen_only = source["on_screen_only"];
this.trace = source["trace"];
}
}
export class AutoCallStatus {
@@ -1987,6 +1991,7 @@ export namespace main {
misses: number;
max_miss: number;
stopped: boolean;
greylisted: number;
reason: string;
static createFrom(source: any = {}) {
@@ -2003,6 +2008,7 @@ export namespace main {
this.misses = source["misses"];
this.max_miss = source["max_miss"];
this.stopped = source["stopped"];
this.greylisted = source["greylisted"];
this.reason = source["reason"];
}
}
@@ -4962,6 +4968,8 @@ export namespace pskr {
last_err?: string;
broker: string;
bands: string[];
near_km: number;
squares: number;
static createFrom(source: any = {}) {
return new Status(source);
@@ -4975,6 +4983,8 @@ export namespace pskr {
this.last_err = source["last_err"];
this.broker = source["broker"];
this.bands = source["bands"];
this.near_km = source["near_km"];
this.squares = source["squares"];
}
convertValues(a: any, classs: any, asMap: boolean = false): any {