Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 00:56
· 3 commits to main since this release

A native Windows program, which is what this should have been.

0.1.0 was a browser pointed at a local server. It works, and it is still here
for a shell or an ssh session, but nobody wants to double click it. This is a
real window.

Download tsdec-gui.exe and run it. That is the whole installation: the
decoder is inside the program, so there is nothing else to download and nothing
to put on your PATH.

What it does

One job at a time, because that is the honest scope.

  • Pick a .ts recording and a .cwl control word log, choose an output, run
    it.
  • A real progress bar with a percentage, a throughput and an estimate, fed by
    the decoder's progress events rather than a timer.
  • Stop a long recording. A request, not a kill, so whatever was already
    decrypted is kept, packet aligned and playable, and the result says how far
    it got rather than claiming the run finished. This is the button the 0.4.1
    Win32 GUI had, and the main reason this exists.
  • Survey the pids with how much of each is scrambled, and narrow the run to
    the ones wanted.
  • Thread count, cw blocker, resync past corrupt packets.
  • Light and dark, following the system preference.

The stop, which is the fix that mattered

Ctrl+C is a console control event. A windowed program has no console to
deliver one from, so on the real Windows build the stop either did nothing or
turned into a kill, and a kill throws away every packet already decrypted.
That is the one thing the stop button exists to prevent, and it only showed up
once the program was actually frozen into an exe.

The front end now asks for a stop by creating a file, which needs no terminal
and behaves the same on every platform. That needed a matching change in the
decoder, released as
2.3.0
.

Nothing asks before replacing an output

A stopped run leaves a partial file. Running again over the same name used to
destroy the part that had been written, silently. It asks now.

How it is checked

41 checks drive the window headless, 36 drive the web front end, and 14 check
the packaged executable as an artefact: a single exe in an empty folder, with
nothing on PATH, has to find its decoder inside itself, decrypt a recording,
stop one that is still going, and open a window.

That last one is the point. Every check against the Python modules passed while
the frozen build was quietly unable to stop a decode, because the Python
modules were never the thing that was broken. test_exe.py runs the artefact
in a job before it is published, so it cannot ship again.

Headless

The packaged program can also be driven without a window, which is how the
release job proves it works:

tsdec-gui.exe --decrypt -i recording.ts -f log.cwl -o clear.ts
tsdec-gui.exe --self-test

Licence

GPL v3, matching TSDEC.