[chore](trx-rs): add Gitea Actions CI pipeline #2

Merged
sjg merged 8 commits from ci/gitea-actions into main 2026-07-18 12:39:58 +02:00
Owner

Summary

Introduces the project's first CI pipeline (Gitea Actions) and a tracker
for the broader improvement backlog discovered in the July 2026 repo scan.

CI — .gitea/workflows/ci.yml

Runs on push to main and on pull requests, with three jobs:

  • lintcargo fmt --all --check and
    cargo clippy --workspace --all-targets --all-features -- -D warnings
  • testcargo build and cargo test (--workspace --locked)
  • reusefsfe/reuse-action@v5 license-compliance check

Installs the required system libraries (libopus-dev, libasound2-dev,
libsoapysdr-devsoapysdr is a default feature), caches the cargo
registry and target, and installs the toolchain via rustup (with a
fallback that runs rustup-init if the runner image lacks it).

PATH handling is self-contained: each step that needs it prepends
$HOME/.cargo/bin to PATH directly, rather than relying on
$GITHUB_PATH propagation, which is not dependable on the Gitea
act_runner.

Tracker — aidocs/wip.md

Records all ten improvement areas across three tiers (infrastructure,
robustness, product) with a per-item Status column. aidocs/** is
registered in REUSE.toml alongside docs/**.

Runner assumptions

  • An act_runner registered with an ubuntu-latest label.
  • GitHub-action proxying enabled (needed by actions/checkout,
    actions/cache, and fsfe/reuse-action).

Notes

  • rustfmt is clean and the sampled core crates are clippy-clean, so
    -D warnings is enforced. If the first full --all-features run
    surfaces a warning in a less-travelled crate, fix it (preferred) or
    temporarily soften that step.

Commits

  • [chore] add Gitea Actions CI pipeline
  • [docs] track improvement areas in aidocs/wip.md
  • [chore] fix Rust PATH handling in CI (drop GITHUB_PATH reliance)

🤖 Generated with Claude Code

https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV

## Summary Introduces the project's first CI pipeline (Gitea Actions) and a tracker for the broader improvement backlog discovered in the July 2026 repo scan. ### CI — `.gitea/workflows/ci.yml` Runs on push to `main` and on pull requests, with three jobs: - **lint** — `cargo fmt --all --check` and `cargo clippy --workspace --all-targets --all-features -- -D warnings` - **test** — `cargo build` and `cargo test` (`--workspace --locked`) - **reuse** — `fsfe/reuse-action@v5` license-compliance check Installs the required system libraries (`libopus-dev`, `libasound2-dev`, `libsoapysdr-dev` — `soapysdr` is a default feature), caches the cargo registry and `target`, and installs the toolchain via rustup (with a fallback that runs `rustup-init` if the runner image lacks it). PATH handling is self-contained: each step that needs it prepends `$HOME/.cargo/bin` to `PATH` directly, rather than relying on `$GITHUB_PATH` propagation, which is not dependable on the Gitea `act_runner`. ### Tracker — `aidocs/wip.md` Records all ten improvement areas across three tiers (infrastructure, robustness, product) with a per-item **Status** column. `aidocs/**` is registered in `REUSE.toml` alongside `docs/**`. ## Runner assumptions - An `act_runner` registered with an `ubuntu-latest` label. - GitHub-action proxying enabled (needed by `actions/checkout`, `actions/cache`, and `fsfe/reuse-action`). ## Notes - `rustfmt` is clean and the sampled core crates are clippy-clean, so `-D warnings` is enforced. If the first full `--all-features` run surfaces a warning in a less-travelled crate, fix it (preferred) or temporarily soften that step. ## Commits - `[chore]` add Gitea Actions CI pipeline - `[docs]` track improvement areas in `aidocs/wip.md` - `[chore]` fix Rust PATH handling in CI (drop `GITHUB_PATH` reliance) 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
sjg added 2 commits 2026-07-17 21:23:59 +02:00
Introduce CI running on push to main and pull requests. Three jobs:
lint (rustfmt check + clippy with -D warnings), test (build and test the
workspace with --locked), and REUSE compliance. Installs the required
system libraries (opus, alsa, soapysdr) and caches the cargo registry
and target directory.

Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space>
[docs](trx-rs): track improvement areas in aidocs/wip.md
CI / reuse (pull_request) Successful in 35s
CI / lint (pull_request) Failing after 31s
CI / test (pull_request) Failing after 29s
bcde03de38
Record the three-tier improvement backlog (infrastructure, robustness,
product) with a per-item progress status column, so the work discovered
in the July 2026 repo scan is tracked. Register aidocs/** in REUSE.toml
alongside docs/**.

Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space>
sjg added 1 commit 2026-07-17 23:25:25 +02:00
[chore](trx-rs): fix Rust PATH handling in CI
CI / lint (pull_request) Failing after 3m18s
CI / reuse (pull_request) Has been cancelled
CI / test (pull_request) Has been cancelled
c7470acc1c
The Set up Rust step wrote the cargo bin dir to GITHUB_PATH, which does
not help within the same step and is not relied upon across steps on the
Gitea act_runner. Prepend $HOME/.cargo/bin to PATH directly in the setup
and each cargo step instead, so rustup and cargo resolve regardless of
GITHUB_PATH support.

Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space>
sjg added 1 commit 2026-07-17 23:30:52 +02:00
[chore](trx-rs): install libclang for soapysdr-sys in CI
CI / lint (pull_request) Failing after 4m7s
CI / reuse (pull_request) Has been cancelled
CI / test (pull_request) Has been cancelled
bf08c7ebc0
soapysdr-sys builds bindings with bindgen, which needs libclang at build
time. Add clang and libclang-dev to the system dependencies so the
soapysdr backend (a default feature) compiles under CI.

Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space>
sjg added 1 commit 2026-07-17 23:49:15 +02:00
[style](trx-rs): fix clippy warnings for -D warnings CI
CI / lint (pull_request) Failing after 4m14s
CI / test (pull_request) Successful in 15m22s
CI / reuse (pull_request) Successful in 7s
c6cd661676
The CI lint job runs clippy with -D warnings, which surfaced a set of
existing warnings across decoders, the client, and the soapysdr backend.
Resolve them so the workspace is clean under the enforced lint level:

- collapsible_match / identity_op / needless_range_loop / same_item_push
  in trx-rds, trx-wspr, trx-vdes, trx-wefax, trx-aprs (mostly tests)
- field_reassign_with_default -> struct-update syntax in trx-client config
  tests
- assign_op_pattern, useless vec!, and test-module ordering picked up by
  cargo clippy --fix in trx-client and the soapysdr WFM tests

No behaviour changes; all affected crates' tests pass.

Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space>
sjg added 1 commit 2026-07-18 09:25:15 +02:00
[style](trx-ftx): fix clippy question_mark and collapsible_match
CI / lint (pull_request) Failing after 2m22s
CI / test (pull_request) Successful in 3m27s
CI / reuse (pull_request) Successful in 8s
a2838b06a2
CI runs a newer clippy (1.97) than was available locally, which flagged
three lints in trx-ftx not caught earlier:

- question_mark: replace the Some/None match in CallsignHashTable::lookup
  with `self.entries[idx].as_ref()?`
- collapsible_match: fold the nested `if` in text.rs char/nchar into match
  guards on the AlphanumSpaceSlash arm

Behaviour is unchanged; verified clean with nightly clippy (1.93).

Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space>
sjg added 1 commit 2026-07-18 10:28:57 +02:00
[style](trx-ais): drop redundant u32 cast
CI / lint (pull_request) Failing after 2m28s
CI / test (pull_request) Successful in 3m23s
CI / reuse (pull_request) Successful in 7s
977f7b709e
get_uint returns Option<u32>, so `? as u32` is an unnecessary same-type
cast flagged by clippy under -D warnings (rust 1.97).

Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space>
sjg added 1 commit 2026-07-18 10:43:05 +02:00
[style](trx-ftx): use iterators in LDPC single-index loops
CI / lint (pull_request) Successful in 2m35s
CI / test (pull_request) Successful in 3m22s
CI / reuse (pull_request) Successful in 7s
CI / lint (push) Successful in 2m34s
CI / test (push) Successful in 3m26s
CI / reuse (push) Successful in 7s
4b17b4ac1d
clippy needless_range_loop (rust 1.97) flagged the loops in ldpc_check
and ldpc_decode that use a range only to index one array. Replace them
with iterator/enumerate forms. The belief-propagation loops that index
several arrays by the same variable are left as-is (not flagged).

Behaviour is unchanged; the transformations are index-for-index
equivalent. Verified the lib compiles and is clippy-clean; the crate's
LDPC tests run in the CI test job (they need a dev-dependency not
available in the local offline sandbox).

Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space>
sjg merged commit 4b17b4ac1d into main 2026-07-18 12:39:58 +02:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sjg/trx-rs#2