sjg
ec59908e0d
refactor: convert background decode controls to TypeScript
2026-08-01 12:36:27 +02:00
sjg
7251ec276d
refactor: convert WEFAX plugin to TypeScript
2026-08-01 12:33:38 +02:00
sjg
0ab0f80986
refactor: convert VDES plugin to TypeScript
2026-08-01 12:30:17 +02:00
sjg
2cbcc23fec
refactor: move plugin loading into typed registry
2026-08-01 12:26:29 +02:00
sjg
968fb3ea2d
refactor: type the local Leaflet AIS adapter
2026-08-01 12:23:37 +02:00
sjg
5ba3ecf59b
refactor: make FT8 family a typed module
2026-08-01 12:21:13 +02:00
sjg
03bdc10b02
refactor: convert CW plugin to TypeScript
2026-08-01 12:18:51 +02:00
sjg
d96624be4f
refactor: convert WSPR plugin to TypeScript
2026-08-01 12:15:19 +02:00
sjg
a5dccd5489
refactor: consolidate FT2 and FT4 plugins in TypeScript
2026-08-01 12:12:27 +02:00
sjg
42e5dc8604
docs: record frontend migration baseline
2026-08-01 12:09:38 +02:00
sjg
e6f593b959
refactor: convert screenshot support to TypeScript
2026-08-01 12:08:44 +02:00
sjg
9ac6d7f82c
refactor: convert WebGL renderer to TypeScript
2026-08-01 12:07:02 +02:00
sjg
a58553ba66
refactor: convert decode history worker to TypeScript
2026-08-01 12:03:19 +02:00
sjg
7442437757
refactor: convert shared UI core to TypeScript
2026-08-01 12:01:07 +02:00
sjg
bbc53d56b0
feat: generate typed frontend API contracts
2026-08-01 11:58:09 +02:00
sjg
888f793eb8
build: add frontend TypeScript toolchain
2026-08-01 11:52:47 +02:00
sjg
860760ecfc
docs: add TypeScript migration plan
2026-08-01 11:48:20 +02:00
sjg
b4ea35baf8
feat(ui): add dedicated audio controls section
CI / lint (pull_request) Failing after 1s
CI / test (pull_request) Failing after 0s
CI / reuse (pull_request) Failing after 0s
CI / lint (push) Failing after 1s
CI / test (push) Failing after 1s
CI / reuse (push) Failing after 0s
2026-08-01 11:32:34 +02:00
sjg
508ed8a8e7
feat(ui): separate scheduler controls subsection
CI / lint (pull_request) Failing after 1s
CI / test (pull_request) Failing after 2s
CI / reuse (pull_request) Failing after 2s
CI / lint (push) Failing after 0s
CI / test (push) Failing after 1s
CI / reuse (push) Failing after 1s
2026-08-01 11:28:51 +02:00
sjg
d9fc623ef4
fix(ui): simplify operator layout picker
CI / lint (push) Failing after 1s
CI / test (push) Failing after 0s
CI / reuse (push) Failing after 0s
CI / lint (pull_request) Failing after 2s
CI / test (pull_request) Failing after 2s
CI / reuse (pull_request) Failing after 1s
2026-08-01 11:25:32 +02:00
sjg
53736ef750
fix(ui): hide SDR power and align header controls
CI / lint (pull_request) Failing after 1s
CI / test (pull_request) Failing after 2s
CI / reuse (pull_request) Failing after 1s
2026-08-01 11:23:57 +02:00
sjg
6566eae2c7
fix(ui): keep workspace and rig context visible
CI / lint (pull_request) Failing after 1s
CI / test (pull_request) Failing after 1s
CI / reuse (pull_request) Failing after 1s
CI / lint (push) Failing after 0s
CI / test (push) Failing after 0s
CI / reuse (push) Failing after 1s
2026-08-01 11:19:31 +02:00
sjg
f3eeddff7c
fix(ui): close mobile overlays predictably
2026-08-01 11:18:37 +02:00
sjg
1540ca5b4e
test(ui): cover shared component behavior
2026-08-01 11:17:17 +02:00
sjg
e449704fd2
feat(ui): explain unavailable workspaces
2026-08-01 11:16:03 +02:00
sjg
af74430551
fix(ui): make rig switching atomic and visible
2026-08-01 11:15:39 +02:00
sjg
d07dbdc645
feat(ui): focus broadcast workspace on reception
2026-08-01 11:14:10 +02:00
sjg
d07a627508
feat(ui): remember workspaces per rig
2026-08-01 11:13:21 +02:00
sjg
9fbf90ee91
feat(ui): explain operator workspace choices
2026-08-01 11:12:33 +02:00
sjg
d393b3cefc
feat(ui): drive workspaces from rig capabilities
2026-08-01 11:11:47 +02:00
sjg
35a492ec95
fix(ui): gate broadcast layout on rig capability
CI / lint (pull_request) Failing after 2s
CI / test (pull_request) Failing after 2s
CI / reuse (pull_request) Failing after 2s
CI / lint (push) Failing after 1s
CI / test (push) Failing after 3s
CI / reuse (push) Failing after 1s
2026-08-01 11:05:45 +02:00
sjg
b20da5c541
style(ui): polish shared interaction components
CI / lint (pull_request) Failing after 1s
CI / test (pull_request) Failing after 1s
CI / reuse (pull_request) Failing after 2s
CI / lint (push) Failing after 2s
CI / test (push) Failing after 1s
CI / reuse (push) Failing after 2s
2026-08-01 10:43:29 +02:00
sjg
a0bdaa2c4b
feat(ui): improve radio operator experience
CI / lint (pull_request) Failing after 1s
CI / test (pull_request) Failing after 1s
CI / reuse (pull_request) Failing after 1s
CI / lint (push) Failing after 1s
CI / test (push) Failing after 1s
CI / reuse (push) Failing after 0s
2026-08-01 02:24:47 +02:00
sjg
6676b66993
[fix](trx-frontend): account for WFM interference in auto bandwidth
CI / lint (pull_request) Failing after 1s
CI / test (pull_request) Failing after 1s
CI / reuse (pull_request) Failing after 0s
CI / lint (push) Failing after 0s
CI / test (push) Failing after 1s
CI / reuse (push) Failing after 1s
2026-08-01 02:07:32 +02:00
sjg
412651d612
[fix](trx-frontend): narrow weak WFM to 60 kHz
CI / lint (push) Failing after 1s
CI / test (push) Failing after 2s
CI / reuse (push) Failing after 1s
2026-08-01 02:04:14 +02:00
sjg
d347b493d9
[fix](trx-frontend): make auto bandwidth modulation-aware
2026-08-01 02:04:14 +02:00
sjg
39e59dca96
[fix](trx-server): gate test-only history imports
CI / lint (pull_request) Failing after 1s
CI / test (pull_request) Failing after 1s
CI / reuse (pull_request) Failing after 1s
CI / lint (push) Failing after 3s
CI / test (push) Failing after 2s
CI / reuse (push) Failing after 1s
2026-08-01 01:55:33 +02:00
sjg
5654520901
[fix](workspace): clear build and clippy warnings
CI / lint (push) Failing after 1s
CI / test (push) Failing after 1s
CI / reuse (push) Failing after 1s
2026-08-01 01:52:08 +02:00
sjg
ff75fcc692
[refactor](trx-server): extract decoder history store
CI / lint (pull_request) Failing after 2s
CI / test (pull_request) Failing after 2s
CI / reuse (pull_request) Failing after 1s
CI / lint (push) Failing after 2s
CI / test (push) Failing after 2s
CI / reuse (push) Failing after 1s
2026-08-01 01:45:19 +02:00
sjg
4728b578ae
[refactor](trx-server): extract history policy
2026-08-01 01:44:26 +02:00
sjg
7db7fad9b0
[refactor](trx-frontend): define module service boundaries
2026-08-01 01:44:26 +02:00
sjg
830f7299fe
[fix](trx-frontend): vendor Opus decoder
2026-08-01 01:44:26 +02:00
sjg
061738a63b
[fix](trx-frontend): serialize plugin loading
CI / lint (push) Failing after 1s
CI / test (push) Failing after 1s
CI / reuse (push) Failing after 1s
2026-08-01 01:43:50 +02:00
sjg
e8bd97655f
[fix](trx-server): offload history persistence
CI / reuse (push) Failing after 1s
CI / lint (push) Failing after 2s
CI / test (push) Failing after 2s
2026-08-01 01:43:47 +02:00
sjg
7d0b36450d
[fix](trx-server): persist all decoder histories
CI / reuse (push) Failing after 1s
CI / lint (pull_request) Failing after 3s
CI / test (pull_request) Failing after 1s
CI / reuse (pull_request) Failing after 2s
CI / lint (push) Failing after 1s
CI / test (push) Failing after 1s
2026-08-01 01:23:36 +02:00
Stan Grams
b12c83e8b5
[fix](trx-frontend): preload AIS map icons
CI / lint (pull_request) Failing after 6s
CI / test (pull_request) Failing after 2s
CI / reuse (pull_request) Failing after 1s
CI / lint (push) Failing after 1s
CI / test (push) Failing after 2s
CI / reuse (push) Failing after 0s
2026-08-01 01:14:07 +02:00
sjg
ff4e2a5c5d
[chore](trx-rs): install reuse with charset-normalizer extra
...
CI / lint (pull_request) Successful in 9m35s
CI / reuse (pull_request) Failing after 5s
CI / lint (push) Successful in 8m40s
CI / test (pull_request) Successful in 29m0s
CI / reuse (push) Failing after 5s
CI / test (push) Successful in 14m28s
The runner image's `reuse` failed to import (NoEncodingModuleError): it
needs an encoding-detection backend, which the bare `reuse` install does
not provide and which libmagic/`file` is not present to satisfy. Install
`reuse[charset-normalizer]` so the reuse job can run in the image.
Rebuild the runner image and recreate the containers to pick this up.
Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space >
2026-07-18 23:57:38 +02:00
sjg
2ef9f80fc1
[chore](trx-rs): drop redundant CI setup steps for baked runner image
...
CI / lint (pull_request) Successful in 9m14s
CI / reuse (pull_request) Failing after 6s
CI / test (pull_request) Successful in 15m15s
The host-executor runners run jobs inside one container that already has
the Rust toolchain and all build dependencies baked in, so the per-job
`apt-get install` and rustup steps were redundant. Worse, with two jobs
running concurrently in the same runner they collided on the dpkg lock
("Could not get lock /var/lib/dpkg/lock-frontend").
Remove the system-dependency, rustup and cache steps; jobs now run cargo
directly. The cargo registry persists in the long-lived runner container.
Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space >
2026-07-18 23:33:42 +02:00
sjg
6fe549e34e
[chore](trx-rs): run reuse lint directly instead of Docker action
...
CI / test (pull_request) Failing after 52s
CI / reuse (pull_request) Failing after 3s
CI / lint (pull_request) Successful in 3m34s
The host-executor runners have no Docker daemon, so fsfe/reuse-action
(a Docker action) fails with "Cannot connect to the Docker daemon". Call
the reuse CLI directly; it is baked into the runner image.
Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space >
2026-07-18 13:24:26 +02:00
sjg
406a8f86b1
[chore](trx-rs): add Podman act_runner CI deployment
...
CI / lint (pull_request) Successful in 2m43s
CI / test (pull_request) Successful in 3m20s
CI / reuse (pull_request) Successful in 7s
CI / lint (push) Successful in 2m36s
CI / test (push) Successful in 2m35s
CI / reuse (push) Failing after 4s
Add container/: a rootless Podman + systemd (Quadlet) setup to run
per-project Gitea Actions runners on one host instead of VMs. Uses the
host executor with a purpose-built image that bakes in the Rust toolchain
and all build dependencies (opus, alsa, soapysdr, clang), so CI runs skip
the per-run install and cold soapysdr-sys build.
Includes the runner Containerfile, first-boot registration entrypoint,
act_runner config template, two Quadlet units (trx-rs + a second project),
and a README covering build, registration, the required host-executor
workflow tweak, and tuning.
Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space >
2026-07-18 12:45:53 +02:00