Skip to content

Conversation

zcsahok
Copy link
Member

@zcsahok zcsahok commented Oct 16, 2025

Aiming to resolve #356

Added RECALL_NO_SERIALS to control whether serial numbers from previous QSOs should be recalled.
Recalling is still enabled by RECALL_MULTS.

The logic is (provided RECALL_MULTS is active):

  • RECALL_NO_SERIALS unset/false (default): exchanges are looked up first in the log, then in initial exchange (IE) list. No checks are done.
  • RECALL_NO_SERIALS set/true: exchanges from the log that look like a serial number (all digits) are not considered. Values from IE are taken regardless if they are numbers or not.

This way errors from IE list are corrected in both cases as over-the-air value from the log takes precedence. The basic assumption is that contests doesn't use all-digit section exchanges.
Will update man page if this solution is generally OK.

(contest booleans have false default value, hence the double negation)

@df7cb
Copy link
Contributor

df7cb commented Oct 16, 2025

Good idea, that has been bugging me in the past.

"Negative" settings are an anti-pattern, is there a way to avoid that? Perhaps spell it RECALL_SERIALS and then it needs to be enabled explicitly? (Though it might be weird that contests that exchange zones like CQWW would need "serials" enabled.)

@dl1jbe
Copy link
Member

dl1jbe commented Oct 17, 2025

That will work +1.

Maybe more universal would be to have a regular expression based filter for allowed ie entries.
Something like
RECALL_IF_MATCH=".[a-zA-Z]."
for any ie entry containing at least one non-digit character.

@df7cb
Copy link
Contributor

df7cb commented Oct 17, 2025

A regex is maybe too much. How about a tri-state option?

RECALL=none
RECALL=non-numeric (or some better name)
RECALL=all

That seems quite natural to use.

@airween
Copy link
Member

airween commented Oct 17, 2025

A regex is maybe too much. How about a tri-state option?

RECALL=none RECALL=non-numeric (or some better name) RECALL=all

That seems quite natural to use.

Moreover we should pass an optional argument to RECALL_MULTIS, and if there is any of this listed option then it changes its behavior..

@zcsahok
Copy link
Member Author

zcsahok commented Oct 17, 2025

Switched to positive logic, had to initialize the flag to true explicitly in init_contests().

Yes, we could extend the existing RECALL_MULTS with an argument, but then again comes the negative logic problem ("non-numeric (or some better name)"). Or we use RECALL_MULTS=SECTIONS that actually internally does "non-numeric" but looks better...

I find however RECALL_SERIALS simpler.

@df7cb
Copy link
Contributor

df7cb commented Oct 17, 2025

Sorry for the continued bikeshedding. 🙂

It feels weird to have to set RECALL_SERIALS=on for a contest like CQWW where the exchange isn't a serial. (Even when the default is on and you'd only disable it for other contests.)

Could we name the option RECALL_NUMERIC_EXCH or similar? Then it's immediately clear what it does.

@zcsahok
Copy link
Member Author

zcsahok commented Oct 18, 2025

Ok, let's take the more explicit RECALL_NUMERIC_EXCHANGES.
So for WAG the configuration would be

INITIAL_EXCHANGE = wag.txt
RECALL_MULTS
RECALL_NUMERIC_EXCHANGES = NO

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

INITIAL_EXCHANGE handling

4 participants