From 12ebe79a894efaa0bd85427889c73d15da0d7e31 Mon Sep 17 00:00:00 2001 From: KIYINI Joseph Balamazze <73903994+josephkb87@users.noreply.github.com> Date: Thu, 24 Sep 2026 00:47:32 +0300 Subject: [PATCH 1/6] Enhance CI workflow with GTK dependencies and updates Updated GitHub Actions workflow to include installation of native GTK/GLib dependencies and upgraded checkout action to v4. --- .github/workflows/ci.yml | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 86e2a74..496e6b6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,5 +1,3 @@ -## This will test all three release channels (note a failure in any toolchain version will fail the entire job). - name: Cargo Build & Test on: @@ -13,14 +11,30 @@ jobs: build_and_test: name: Rust project - latest runs-on: ubuntu-latest + strategy: matrix: toolchain: - stable - beta - + steps: - - uses: actions/checkout@v3 - - run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} - - run: cargo build --verbose - - run: cargo test --verbose + - uses: actions/checkout@v4 + + - name: Install native GTK/GLib dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + pkg-config \ + libgtk-3-dev \ + libglib2.0-dev \ + libatk1.0-dev + + - name: Set Rust toolchain + run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} + + - name: Build + run: cargo build --verbose + + - name: Test + run: cargo test --verbose From 62476bc4138540bf9d5b76459e81a23a3d4ab84a Mon Sep 17 00:00:00 2001 From: KIYINI Joseph Balamazze <73903994+josephkb87@users.noreply.github.com> Date: Thu, 24 Sep 2026 00:50:39 +0300 Subject: [PATCH 2/6] Remove atk and atk-sys dependencies Removed atk and atk-sys dependencies from Cargo.toml --- Cargo.toml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 3766758..0d63891 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,14 +12,13 @@ trunk = "0.21.6" actix = { version = "0.13.3" } chrono = "0.4" futures = "0.3" -atk = "0.18.0" -atk-sys = ">= 0.18.0" cc = "1.1.20" + [profile.dev] opt-level = 0 [profile.release] opt-level = 3 time = "0.3.36" -tauri-build = "1.5.5" \ No newline at end of file +tauri-build = "1.5.5" From fa2efd2252d1abad4ddc03d6b6fed6dffefb9eaf Mon Sep 17 00:00:00 2001 From: KIYINI Joseph Balamazze <73903994+josephkb87@users.noreply.github.com> Date: Thu, 24 Sep 2026 00:55:18 +0300 Subject: [PATCH 3/6] Update ,gitignore Update .gitignore --- .gitignore | 325 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 325 insertions(+) diff --git a/.gitignore b/.gitignore index 2f02a97..1bb09de 100644 --- a/.gitignore +++ b/.gitignore @@ -3170,3 +3170,328 @@ $RECYCLE.BIN/ # Windows shortcuts *.lnk + +# ============================================================================= +# RF Systems Integration Cookbook (.gitignore) +# ============================================================================= +# Multi-language project: Rust · Python · Jupyter · Octave/MATLAB · LaTeX +# Maintained by the RF-SIC Project Team. +# Last reviewed: 2026-09-24 +# +# Organisation: +# 1. Rust / Cargo +# 2. Python / PyO3 / Jupyter +# 3. Octave / MATLAB +# 4. LaTeX +# 5. RF data formats (IQ, Touchstone, SigMF, CSV, HDF5) +# 6. Docker & local CI runners +# 7. Secrets & environment +# 8. Coverage & profiling +# 9. Documentation artefacts +# 10. Editor / IDE +# 11. Operating system +# 12. Project-specific exclusions +# ============================================================================= + + +# ----------------------------------------------------------------------------- +# 1. Rust / Cargo +# ----------------------------------------------------------------------------- +# Build artefacts for the workspace and per-crate targets. +/target/ +**/target/ + +# Rustfmt / rustc backups +**/*.rs.bk +*.pdb + +# Local Cargo overrides (never commit; each dev sets their own) +.cargo/config.toml +.cargo/config + +# Cargo incremental build cache +**/.cargo/ + +# IMPORTANT: Cargo.lock IS committed because the TUI is a binary crate. +# Uncomment the next two lines ONLY if a crate is ever converted to a library. +# Cargo.lock +# **/Cargo.lock + + +# ----------------------------------------------------------------------------- +# 2. Python / PyO3 / Jupyter +# ----------------------------------------------------------------------------- +# Bytecode +__pycache__/ +*.py[cod] +*$py.class + +# Packaging / distribution +build/ +dist/ +*.egg-info/ +*.egg +.eggs/ +pip-wheel-metadata/ +*.whl +.maturin/ + +# Virtual environments (multiple conventions) +.venv/ +venv/ +env/ +ENV/ +.env.d/ + +# PyO3 / maturin / setuptools-rust build intermediates +python-backend/target/ +python-backend/**/*.so +python-backend/**/*.pyd +python-backend/**/*.dylib +python-backend/**/*.dll + +# Test / lint / type caches +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ +.tox/ +.nox/ +.hypothesis/ + +# Jupyter +.ipynb_checkpoints/ +**/.ipynb_checkpoints/ +*.ipynb_checkpoints +jupyter_config.json +jupyter_notebook_config.py + +# NOTE: We *do* commit .ipynb notebooks with outputs stripped by nbstripout. +# See .gitattributes section below. + +# PyPI / Twine credentials +.pypirc + + +# ----------------------------------------------------------------------------- +# 3. Octave / MATLAB +# ----------------------------------------------------------------------------- +*.m~ +*.asv +*.autosave +octave-workspace +*.oct +*.mat +# Some .mat files are test fixtures; force-add those explicitly: +!matlab-octave/tests/fixtures/**/*.mat + + +# ----------------------------------------------------------------------------- +# 4. LaTeX +# ----------------------------------------------------------------------------- +*.aux +*.log +*.out +*.toc +*.lof +*.lot +*.fls +*.fdb_latexmk +*.synctex.gz +*.synctex(busy) +*.bbl +*.blg +*.nav +*.snm +*.vrb +*.run.xml +*.bcf +*-blx.bib +docs/latex/*.pdf +docs/latex/auto/ +docs/latex/*.pdf.sha256 + + +# ----------------------------------------------------------------------------- +# 5. RF data formats +# ----------------------------------------------------------------------------- +# Large IQ recordings — never commit raw captures; store in Zenodo/S3. +*.iq +*.iq.tar +*.wav.iq +*.complex16 +*.complex32 + +# SigMF recordings (keep metadata, ignore bulk data) +*.sigmf-data + +# Touchstone / S-parameter files — commit small fixtures, ignore bulk sweeps +*.s1p +*.s2p +*.s3p +*.s4p +*.s5p +*.s6p +*.snp +# Keep small reference fixtures under version control: +!python-backend/tests/fixtures/**/*.s2p +!docs/examples/**/*.s2p + +# RF sweep results / bulk CSV (keep example outputs, ignore generated sweeps) +python-backend/results/*.csv +python-backend/results/*.h5 +python-backend/results/*.hdf5 +matlab-octave/results/*.csv +matlab-octave/results/*.h5 +!python-backend/results/.gitkeep +!matlab-octave/results/.gitkeep + +# Golden reference images are committed (used for visual verification). +# But intermediate renders are ignored: +python-backend/results/intermediate/ +matlab-octave/results/intermediate/ + + +# ----------------------------------------------------------------------------- +# 6. Docker & local CI runners +# ----------------------------------------------------------------------------- +.docker/ +docker-compose.override.yml + +# nektos/act local GitHub Actions runner +.actrc +.act/ +act-artifacts/ + +# GitHub Actions local cache +.github/local/ + + +# ----------------------------------------------------------------------------- +# 7. Secrets & environment +# ----------------------------------------------------------------------------- +.env +.env.* +!.env.example +!.env.template + +# Keys and certificates +*.pem +*.key +*.p12 +*.pfx +*.crt +!docs/keys/*.example.pem + +# Secrets directory +secrets/ +!secrets/.gitkeep + + +# ----------------------------------------------------------------------------- +# 8. Coverage & profiling +# ----------------------------------------------------------------------------- +.coverage +.coverage.* +coverage/ +coverage.xml +lcov.info +*.profraw +*.profdata +perf.data* +flamegraph.svg +cargo-tarpaulin-report.* + + +# ----------------------------------------------------------------------------- +# 9. Documentation artefacts +# ----------------------------------------------------------------------------- +docs/_build/ +docs/site/ +docs/**/*.tmp +site/ +_build/ +book/ + + +# ----------------------------------------------------------------------------- +# 10. Editor / IDE +# ----------------------------------------------------------------------------- +# VS Code — keep shared settings, ignore personal ones +.vscode/* +!.vscode/settings.json +!.vscode/extensions.json +!.vscode/launch.json +!.vscode/tasks.json + +# JetBrains +.idea/ +*.iml +*.iws +*.ipr + +# Vim / Neovim +*.swp +*.swo +*.swn +*~ +.netrwhist + +# Emacs +*# +.#* +\#*# +.\#* + +# Helix / Zed / Sublime +.helix/ +.zed/ +*.sublime-project +*.sublime-workspace + +# Editor temp +.history/ +*.tmp +*.bak + + +# ----------------------------------------------------------------------------- +# 11. Operating system +# ----------------------------------------------------------------------------- +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +.AppleDouble +.LSOverride +Icon? +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +Desktop.ini +$RECYCLE.BIN/ +*.lnk +.fuse_hidden* + + +# ----------------------------------------------------------------------------- +# 12. Project-specific exclusions +# ----------------------------------------------------------------------------- +# Rust problem binary outputs (generated at runtime) +rust-backend/output/ +rust-backend/logs/ + +# Ratatui debug dumps +*.ratatui-dump + +# Release artefacts (published via GitHub Releases / Zenodo) +release-artifacts/ +rf-sic-*.tar.gz +rf-sic-*.zip + +# Golden image comparison diffs (kept locally only) +**/golden-diff/ +**/*.diff.png + +# Zenodo / DOI metadata drafts +.zenodo-draft.json From 6c2048b1e6ad82467a7ce9672b40700692653df6 Mon Sep 17 00:00:00 2001 From: KIYINI Joseph Balamazze <73903994+josephkb87@users.noreply.github.com> Date: Thu, 24 Sep 2026 00:57:13 +0300 Subject: [PATCH 4/6] Create: .gitattributes Create: .gitattributes --- ,gitattributes | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 ,gitattributes diff --git a/,gitattributes b/,gitattributes new file mode 100644 index 0000000..fa86104 --- /dev/null +++ b/,gitattributes @@ -0,0 +1,45 @@ +# ============================================================================= +# RF-SIC .gitattributes +# ============================================================================= + +# Normalise line endings +* text=auto eol=lf + +# Explicit text types +*.rs text eol=lf +*.toml text eol=lf +*.py text eol=lf +*.md text eol=lf +*.yml text eol=lf +*.yaml text eol=lf +*.tex text eol=lf +*.m text eol=lf +*.json text eol=lf +.gitignore text eol=lf + +# Binary types — never attempt diff or EOL conversion +*.iq binary +*.sigmf-data binary +*.snp binary +*.h5 binary +*.hdf5 binary +*.mat binary +*.pdf binary +*.png binary +*.jpg binary +*.svg text + +# Jupyter notebooks — strip outputs on commit via nbstripout filter +*.ipynb filter=nbstripout diff=jupyternotebook merge=jupyternotebook +*.ipynb linguist-language=Jupyter + +# Cargo.lock — mark as generated, collapse in PRs +Cargo.lock linguist-generated=true + +# LaTeX-generated PDFs — treat as binary, don't show diff +docs/latex/*.pdf binary + +# GitHub Linguist overrides — keep RF-SIC stats accurate +rust-backend/src/**/*.rs linguist-language=Rust +python-backend/**/*.py linguist-language=Python +matlab-octave/**/*.m linguist-language=MATLAB From 8c248dc8d3ce220ac5862b4b37f39d9db74613a1 Mon Sep 17 00:00:00 2001 From: KIYINI Joseph Balamazze <73903994+josephkb87@users.noreply.github.com> Date: Thu, 24 Sep 2026 01:04:31 +0300 Subject: [PATCH 5/6] Enhance CI workflow with pkg-config verification Updated the CI workflow to verify pkg-config dependencies and changed the order of installing native dependencies. --- .github/workflows/ci.yml | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 496e6b6..118f2f8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,12 +1,3 @@ -name: Cargo Build & Test - -on: - push: - pull_request: - -env: - CARGO_TERM_COLOR: always - jobs: build_and_test: name: Rust project - latest @@ -21,17 +12,25 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install native GTK/GLib dependencies + - name: Install native dependencies run: | sudo apt-get update sudo apt-get install -y \ pkg-config \ - libgtk-3-dev \ libglib2.0-dev \ - libatk1.0-dev + libatk1.0-dev \ + libgtk-3-dev - name: Set Rust toolchain - run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} + run: | + rustup update ${{ matrix.toolchain }} + rustup default ${{ matrix.toolchain }} + + - name: Verify pkg-config dependencies + run: | + pkg-config --modversion glib-2.0 + pkg-config --modversion gobject-2.0 + pkg-config --modversion atk - name: Build run: cargo build --verbose From dd6e1c52a0773428e72bce44e298783e0727cf0e Mon Sep 17 00:00:00 2001 From: KIYINI Joseph Balamazze <73903994+josephkb87@users.noreply.github.com> Date: Thu, 24 Sep 2026 18:03:22 +0300 Subject: [PATCH 6/6] Revise README for Rust Projects and links Updated README to reflect changes in project structure and added links to other Rust projects. --- README.md | 38 ++++---------------------------------- 1 file changed, 4 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 18fbef4..135dc58 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,8 @@ -## Rust Projects: RFSystemsCookbook +## Rust Projects: -This Rust Cookbook Projects include; -``` -rf-sic/ -├── Cargo.toml # Rust workspace -├── rust-backend/ -│ ├── src/ -│ │ ├── main.rs # Ratatui TUI entry point -│ │ ├── ui/ # Ratatui widgets, layouts, event loop -│ │ ├── rf/ # RF simulation engine (tpt-dsp, rustradio) -│ │ ├── problems/ # 50 problem modules (Rust-native solvers) -│ │ └── python_bridge/ # PyO3 bindings → Python backend -│ └── Cargo.toml -├── python-backend/ -│ ├── notebooks/ # Jupyter notebooks (scikit-rf, numpy, scipy) -│ ├── solvers/ # Python RF solvers (link budget, S-params) -│ └── requirements.txt -├── matlab-octave/ -│ ├── scripts/ # .m files (Octave-compatible) -│ └── results/ -├── docs/ -│ ├── NOTES.md # Private reasoning / reference model -│ ├── REPORTS.md # Research details & solution paths -│ ├── WHITEPAPER.md # Funding / standards justification -│ ├── latex/ -│ │ └── rf_sic_problems.tex # Shareable LaTeX problem compendium -│ └── problems_index.md # Tabular index of 50 problems -├── .github/workflows/ -│ ├── ci.yml # Rust + Python CI (test, lint, deny) -│ └── cd.yml # Release artefacts, Docker, docs -└── README.md -``` +## For other [Rust Projects](https://github.com/josephkb87/RustProjects/README.md) go to: -## For other Rust Projects go to: +- RFSystemsCookbook- A [RF Systems Cookbook](https://github.com/josephkb87/RFSystemsCookbook). - RustWebM - A [Rust_WASM WebApp CrossPlatform Tool(Application) for WebSystems Management](../Projects/RustWebApp/README.md) @@ -52,7 +22,7 @@ rf-sic/ - [**DocsGen**](https://github.com/josephkb87/docsgen) - A Documentation Generator made with Rust and OCaml. -#### [Docs](..docs/) +## [Docs](..docs/) * [About Me](https://github.com/josephkb87) * [AUTHORS](../docs/AUTHORS.md)