Skip to content

Commit a1dba4e

Browse files
doublegateclaude
andcommitted
chore(release): bump version to v2.1.1
- Technical debt remediation complete - Cross-platform build fixes for Tauri clients - Updated patch-level dependencies - Documentation improvements Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 89eabde commit a1dba4e

File tree

45 files changed

+281
-71
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+281
-71
lines changed

.github/workflows/release.yml

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -459,25 +459,31 @@ jobs:
459459
CLIENT_NAME: ${{ matrix.client }}
460460
run: |
461461
mkdir -p client-artifacts
462-
# Find and copy AppImage, deb, rpm files
463-
find clients/$CLIENT_NAME/src-tauri/target/release/bundle -type f \
464-
\( -name "*.AppImage" -o -name "*.deb" -o -name "*.rpm" \) \
465-
-exec cp {} client-artifacts/ \;
462+
# Find and copy AppImage, deb, rpm files from workspace target
463+
# Tauri clients share the workspace target directory
464+
if [ -d "target/release/bundle" ]; then
465+
find target/release/bundle -type f \
466+
\( -name "*.AppImage" -o -name "*.deb" -o -name "*.rpm" \) \
467+
-exec cp {} client-artifacts/ \; || true
468+
fi
466469
echo "Linux artifacts:"
467-
ls -lh client-artifacts/
470+
ls -lh client-artifacts/ || echo "No artifacts found"
468471
469472
- name: Collect macOS artifacts
470473
if: matrix.os == 'macos-latest'
471474
env:
472475
CLIENT_NAME: ${{ matrix.client }}
473476
run: |
474477
mkdir -p client-artifacts
475-
# Find and copy dmg files
476-
find clients/$CLIENT_NAME/src-tauri/target/release/bundle -type f \
477-
-name "*.dmg" \
478-
-exec cp {} client-artifacts/ \;
478+
# Find and copy dmg and app files from workspace target
479+
# Tauri clients share the workspace target directory
480+
if [ -d "target/release/bundle" ]; then
481+
find target/release/bundle -type f \
482+
-name "*.dmg" \
483+
-exec cp {} client-artifacts/ \; || true
484+
fi
479485
echo "macOS artifacts:"
480-
ls -lh client-artifacts/
486+
ls -lh client-artifacts/ || echo "No artifacts found"
481487
482488
- name: Collect Windows artifacts
483489
if: matrix.os == 'windows-latest'
@@ -486,10 +492,13 @@ jobs:
486492
CLIENT_NAME: ${{ matrix.client }}
487493
run: |
488494
New-Item -ItemType Directory -Force -Path client-artifacts
489-
# Find and copy msi and exe files
490-
Get-ChildItem -Path "clients\$env:CLIENT_NAME\src-tauri\target\release\bundle" -Recurse -Include "*.msi","*.exe" | Copy-Item -Destination client-artifacts
495+
# Find and copy msi and exe files from workspace target
496+
# Tauri clients share the workspace target directory
497+
if (Test-Path "target\release\bundle") {
498+
Get-ChildItem -Path "target\release\bundle" -Recurse -Include "*.msi","*.exe" -ErrorAction SilentlyContinue | Copy-Item -Destination client-artifacts -ErrorAction SilentlyContinue
499+
}
491500
Write-Host "Windows artifacts:"
492-
Get-ChildItem client-artifacts
501+
Get-ChildItem client-artifacts -ErrorAction SilentlyContinue
493502
494503
- name: Upload client artifacts
495504
uses: actions/upload-artifact@v4

CHANGELOG.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,56 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
---
1111

12+
## [2.1.1] - 2026-01-24 - Technical Debt Remediation & Cross-Platform Fixes
13+
14+
### Overview
15+
16+
This release focuses on technical debt remediation, cross-platform build fixes, and documentation improvements. The codebase maintainability grade remains at A (Excellent) with TDR reduced to ~2.5%.
17+
18+
### Fixed
19+
20+
#### Cross-Platform Build Fixes
21+
- **wraith-chat audio.rs**: Added `#[cfg(target_os = "linux")]` guards for `nnnoiseless` (RNNoise) dependency
22+
- Noise suppression now correctly enabled only on Linux where the library is available
23+
- macOS and Windows builds now succeed without the Linux-only dependency
24+
- **Release workflow**: Fixed artifact collection paths for Tauri 2.0
25+
- Bundles are now correctly collected from `target/release/bundle/` (workspace root)
26+
- Added graceful error handling for missing bundle directories
27+
28+
#### Bundle Configuration
29+
- **All 8 Tauri clients**: Changed bundle targets from Linux-only `["deb", "rpm", "appimage"]` to `"all"`
30+
- Linux: deb, rpm, AppImage
31+
- macOS: dmg, app bundle
32+
- Windows: msi, exe
33+
34+
### Improved
35+
36+
#### Technical Debt Remediation
37+
- Updated patch-level dependencies:
38+
- blake3: 1.8.2 -> 1.8.3
39+
- serde_json: 1.0.145 -> 1.0.149
40+
- tokio: 1.48.0 -> 1.49.0
41+
- thiserror: 2.0.17 -> 2.0.18
42+
- tracing: 0.1.43 -> 0.1.44
43+
- tempfile: 3.23.0 -> 3.24.0
44+
45+
#### Documentation
46+
- Added `#[must_use]` attributes to public pure functions for API safety
47+
- Added `# Errors` documentation to Result-returning functions
48+
- Added `# Panics` documentation to functions with panic conditions
49+
- Polished doc markdown formatting with proper backticks for code references
50+
- Reviewed and documented all 16 ignored tests with valid justifications
51+
- Reviewed all `#[allow(dead_code)]` annotations (11 files) - all intentional
52+
53+
### Technical Details
54+
55+
- **Tests:** 2,042 tests passing (99.2% pass rate, 16 intentionally ignored)
56+
- **Clippy:** Zero warnings with `-D warnings`
57+
- **TDR:** Reduced from ~3.5% to ~2.5%
58+
- **Maintainability Grade:** A (Excellent)
59+
60+
---
61+
1262
## [2.1.0] - 2026-01-24 - ICE Signaling & AF_XDP Implementation
1363

1464
### Overview

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Guidance for Claude Code when working with this repository.
66

77
WRAITH (Wire-speed Resilient Authenticated Invisible Transfer Handler) is a decentralized secure file transfer protocol implemented in Rust.
88

9-
**Status:** v2.1.0 - ICE Signaling & AF_XDP Implementation
9+
**Status:** v2.1.1 - Technical Debt Remediation & Cross-Platform Fixes
1010

1111
### Metrics
1212
| Metric | Value |

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ members = [
3232
exclude = ["crates/wraith-xdp", "fuzz"]
3333

3434
[workspace.package]
35-
version = "2.1.0"
35+
version = "2.1.1"
3636
edition = "2024"
3737
rust-version = "1.85"
3838
license = "MIT"

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ A decentralized secure file transfer protocol optimized for high-throughput, low
99
[![CI Status](https://github.com/doublegate/WRAITH-Protocol/actions/workflows/ci.yml/badge.svg)](https://github.com/doublegate/WRAITH-Protocol/actions/workflows/ci.yml)
1010
[![CodeQL](https://github.com/doublegate/WRAITH-Protocol/actions/workflows/codeql.yml/badge.svg)](https://github.com/doublegate/WRAITH-Protocol/actions/workflows/codeql.yml)
1111
[![Release](https://github.com/doublegate/WRAITH-Protocol/actions/workflows/release.yml/badge.svg)](https://github.com/doublegate/WRAITH-Protocol/actions/workflows/release.yml)
12-
[![Version](https://img.shields.io/badge/version-2.1.0-blue.svg)](https://github.com/doublegate/WRAITH-Protocol/releases)
12+
[![Version](https://img.shields.io/badge/version-2.1.1-blue.svg)](https://github.com/doublegate/WRAITH-Protocol/releases)
1313
[![Security](https://img.shields.io/badge/security-audited-green.svg)](docs/security/SECURITY_AUDIT_v1.1.0.md)
1414
[![Rust](https://img.shields.io/badge/rust-1.85%2B-orange.svg)](https://www.rust-lang.org/)
1515
[![Edition](https://img.shields.io/badge/edition-2024-orange.svg)](https://doc.rust-lang.org/edition-guide/rust-2024/index.html)
@@ -409,7 +409,7 @@ See [CI Workflow](.github/workflows/ci.yml) and [Release Workflow](.github/workf
409409

410410
### Completed
411411

412-
WRAITH Protocol v2.1.0 represents 2,685 story points across 24 development phases:
412+
WRAITH Protocol v2.1.1 represents 2,685+ story points across 24 development phases:
413413

414414
- Core protocol implementation (cryptography, transport, obfuscation, discovery)
415415
- 10 production-ready client applications
@@ -490,6 +490,6 @@ WRAITH Protocol builds on excellent projects and research:
490490

491491
**WRAITH Protocol** - *Secure. Fast. Invisible.*
492492

493-
**Version:** 2.1.0 | **License:** MIT | **Language:** Rust 2024 (MSRV 1.85) | **Tests:** 1,993 passing | **Clients:** 10 applications
493+
**Version:** 2.1.1 | **License:** MIT | **Language:** Rust 2024 (MSRV 1.85) | **Tests:** 2,042 passing | **Clients:** 10 applications
494494

495495
*Last Updated: 2026-01-24*

clients/wraith-chat/src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "wraith-chat"
3-
version = "2.1.0"
3+
version = "2.1.1"
44
description = "WRAITH-Chat - Secure E2E Encrypted Messaging"
55
authors = ["WRAITH Protocol Contributors"]
66
edition = "2024"

clients/wraith-chat/src-tauri/src/audio.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use audiopus::{
77
coder::{Decoder as OpusDecoder, Encoder as OpusEncoder},
88
packet::Packet,
99
};
10+
#[cfg(target_os = "linux")]
1011
use nnnoiseless::DenoiseState;
1112
use std::collections::VecDeque;
1213
use thiserror::Error;
@@ -140,8 +141,10 @@ impl Default for AudioConfig {
140141
pub struct VoiceEncoder {
141142
encoder: OpusEncoder,
142143
config: AudioConfig,
144+
#[cfg(target_os = "linux")]
143145
denoise: Option<Box<DenoiseState<'static>>>,
144146
/// Buffer for resampling (for noise suppression at 48kHz)
147+
#[cfg(target_os = "linux")]
145148
resample_buffer: Vec<f32>,
146149
}
147150

@@ -174,20 +177,24 @@ impl VoiceEncoder {
174177
.set_dtx(true)
175178
.map_err(|e| AudioError::EncoderError(format!("Failed to enable DTX: {:?}", e)))?;
176179

177-
// Initialize noise suppression if enabled
180+
// Initialize noise suppression if enabled (Linux only - uses nnnoiseless/RNNoise)
181+
#[cfg(target_os = "linux")]
178182
let denoise = if config.enable_noise_suppression {
179183
Some(DenoiseState::new())
180184
} else {
181185
None
182186
};
183187

184188
// RNNoise requires 480 samples at 48kHz (10ms frames)
189+
#[cfg(target_os = "linux")]
185190
let resample_buffer = vec![0.0f32; 480];
186191

187192
Ok(Self {
188193
encoder,
189194
config,
195+
#[cfg(target_os = "linux")]
190196
denoise,
197+
#[cfg(target_os = "linux")]
191198
resample_buffer,
192199
})
193200
}
@@ -201,7 +208,8 @@ impl VoiceEncoder {
201208
/// # Returns
202209
/// Number of bytes written to output, or 0 if VAD detected silence
203210
pub fn encode(&mut self, pcm: &[i16], output: &mut [u8]) -> Result<usize, AudioError> {
204-
// Apply noise suppression if enabled
211+
// Apply noise suppression if enabled (Linux only - uses nnnoiseless/RNNoise)
212+
#[cfg(target_os = "linux")]
205213
let processed_pcm: Vec<i16> = if self.denoise.is_some() {
206214
// We need to take denoise out temporarily to avoid borrow issues
207215
let mut denoise = self.denoise.take().unwrap();
@@ -212,6 +220,10 @@ impl VoiceEncoder {
212220
pcm.to_vec()
213221
};
214222

223+
// On non-Linux platforms, noise suppression is not available
224+
#[cfg(not(target_os = "linux"))]
225+
let processed_pcm: Vec<i16> = pcm.to_vec();
226+
215227
let pcm_to_encode = &processed_pcm;
216228

217229
// Simple VAD: check if audio is mostly silent
@@ -233,7 +245,8 @@ impl VoiceEncoder {
233245
Ok(len)
234246
}
235247

236-
/// Apply RNNoise noise suppression to PCM samples
248+
/// Apply RNNoise noise suppression to PCM samples (Linux only)
249+
#[cfg(target_os = "linux")]
237250
fn apply_noise_suppression(&mut self, pcm: &[i16], denoise: &mut DenoiseState) -> Vec<i16> {
238251
let mut output = Vec::with_capacity(pcm.len());
239252

clients/wraith-chat/src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
},
1212
"bundle": {
1313
"active": true,
14-
"targets": ["deb", "rpm", "appimage"],
14+
"targets": "all",
1515
"icon": [
1616
"icons/32x32.png",
1717
"icons/128x128.png",

clients/wraith-mesh/src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "wraith-mesh"
3-
version = "2.1.0"
3+
version = "2.1.1"
44
description = "WRAITH-Mesh - Network Topology Visualization and Diagnostics"
55
authors = ["WRAITH Protocol Contributors"]
66
license = "MIT OR Apache-2.0"

clients/wraith-mesh/src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
},
3030
"bundle": {
3131
"active": true,
32-
"targets": ["deb", "rpm", "appimage"],
32+
"targets": "all",
3333
"icon": [
3434
"icons/32x32.png",
3535
"icons/128x128.png",

0 commit comments

Comments
 (0)