= SvxLink release 26.05 -- 23 May 2026

IMPORTANT! This release may break your TCL event handler changes if they were
not done properly!

So, the TCL event handling system has been rewritten since the last release. It
has been changed to be more powerful and to better reflect the hierarchies in
the C++ code. If you have no local TCL changes you should be fine. If things
break or behave strange when you start the new version, move all your changes
out of the way so that there are no local TCL changes at all. Now it should
work with default behaviour. If you want your tweaked behaviour back, implement
each change one step at a time, testing every change before adding the next
change. Follow the rules below when implementing TCL changes.

* Never change or delete files in the events.d directory.
* Always put changes in the events.d/local directory.
* Never copy complete files from the events.d directory to the local directory.
* Always start out with an empty file in the local directory and then add just
  the namespace directive including it's opening and closing brace.
* From the original file, copy only the specific event handlers (functions)
  that you want to change.
* Don't copy any other code or variables unless you know why.
* Make your changes on the right hierarchy level. For example, changes in
  Logic.tcl will affect both SimplexLogic and RepeaterLogic but changes in
  RepeaterLogic.tcl will only affect that specific logic core.

The rules above are mostly valid both before and after this release. The
following bullet points list the most important changes in the TCL code.

* There is no need anymore to have a TCL file named the same as a logic core.
  Thus no need to for example copy RepeaterLogic.tcl to RepeaterLogic2.tcl if
  you have a second repeater logic.
* For each logic type, there now is a TCL file called XyzLogicType.tcl. That
  file contain all event handlers for that logic type.
* The XyzLogic.tcl files now only are a template for local modifications. Those
  files are the exception to the rule that no files should be copied from the
  events.d directory.
* Event handler functions are now inherited down in the hierarchy so you will
  not find a lot of functions that just call another function higher up in the
  hierarchy. So you will find that for example the SimplexLogicType.tcl file is
  essentially empty, because all needed functionality is implemented in
  Logic.tcl.
* As an example, the hierarchy for a repeater logic is:
  LogicBase -> Logic -> RepeaterLogicType -> RepeaterLogic.
* The "override" prefix can be used if you just want to make a smaller change
  to a function, like doing something before of after the original function.
  The "$SUPER" variable is used to call the original function. Have a look in
  squelch_timeout.tcl for a couple of examples.
* The loading of TCL files are now more selective. You cannot just drop a file
  in the local directory and expect it to be loaded. It must be properly named.
  SvxLink will print which files are loaded at startup. Functions in files
  loaded later will override functions in files loaded earlier.

Now at least read the ChangeLog for Svxlink below. It contains information in
short of bugfixes and new features.

And as usual, a number of bugs have been fixed. For a full list of changes and
more details, see below. For more information on configuration of new features,
see the manual pages.

'''

== Complete ChangeLog for SvxLink Server version 1.10.0

* Improved announcements for reflector connection state. If the connection is
  down when a talkgroup is active, a buzzing sound will be prepended to the
  roger sound.

* Writing to the logfile in SvxLink applications are now done from a separate
  thread.  That will increase the accuracy of the timestamps in some
  situations.  Previously multiple log rows could be lumped together in a
  block where all rows had the same timestamp. That made it harder to debug
  some timing critical problems.

* Support for hidraw PTT and squelch for the CM119A audio chip added.

* New config variable MACRO_PREFIX used to set a custom or no prefix for DTMF
  macro commands.

* New TCL event "siglev_updated" that is called when the siglev value is
  updated on the receiver.

* New configuration variable for RepeaterLogic, SQL_TIMEOUT, to set a soft
  timeout on transmissions.

* Handle module idle commands in ModulePropagationMonitor.

* Bugfix in ModuleSelCallEnc: If an invalid selcall variant ID was specified
  the module crashed.

* Bugfix in ModuleTclVoiceMail: If no password was specified on login the
  module crashed.

* The SvxLink applications can now log to syslog by specifying
  --logfile=syslog: (including the colon character).

* New configuration variable ACTIVATE_ON_TG that can be used in a logic
  linking configuration section to activate the link when a talkgroup is
  activated in a logic core.

* An APRS status message containing application name and version will now be
  sent every 24 hours.

* Improved TG inhibit activation in ReflectorLogic. When there is activity
  (e.g. squelch open) in another logic core, and the talkgroup is indicated as
  0, remote TG activation as well as local activity activation (e.g. CTCSS to
  TG) is inhibited. Previously only remote activation was inhibited. By
  default there now also is an announcement (e.g. "local") when the inhibited
  state is entered and the usual selection timeout sound when the state is
  existed.

* Improved auto-QSY. The SvxReflector auto-QSY timer is now not started until
  a talker has been active on the talkgroup. The auto-QSY procedure is
  triggered at the first talker stop that occur after an auto-QSY timeout

* Reduced CPU load for the http /status endpoint in SvxReflector.

* SvxReflector security fix.

* CTCSS_TO_TG_DELAY default value changed from 1000 to 0.

* Bugfix in the receiver voter. Tone detections was not buffered, like other
  signalling, until a receiver was selected.

* Bugfixes in SwSel5Decoder. Thanks to Rui Barreiros for reporting.
  - Potential buffer overflow fixed
  - Last defined tone was never detected

* Add support for GPIOD v2.
  Thanks to Rui Barreiros for implementing this.

* Add support for sigc++3

* Add new config variable DTMF_IGNORE_WHEN_NOT_UP.

* Changes in the reflector server command PTY commands based on PR from
  Rui Barreiros:
  - Implemented CA LS and CA RM
  - Renamed CA PENDING to CA LSP and implemented it
  - Added CA LSC to list certificates only
  - Responses are now sent to the PTY when appropriate

* New reflector server talkgroup configuration, ALLOW_MONITOR, to set which
  callsigns are allowed to monitor a specific talkgroup.

* SvxReflector Bugfix: Certificates that had passed their renewal time, but
  was still valid, was never sent to a client.

* Improved HIDRAW code
  The HIDRAW squelch and PTT code have been made more resiliant so that it
  can handle a device that disappear and then comes back. Previously it
  would flood the log with error messages and never recover.


== Complete ChangeLog for Qtel version 1.3.0

* Add support for Qt6 contributed by DL1JBE

* Update italian translation contributed by Giovanni Scafora (giovanni69)


== Complete ChangeLog for EchoLib version 1.3.6

* Add support for sigc++3


== Complete ChangeLog for the Async library version 1.9.0

* Async::AudioStreamStateDetector facelift

* Add support for sigc++3

* Add support for Qt6 contributed by DL1JBE

