Nils Andreas Svee
f9c6728855
feat(tui): add time-based graph navigation and zooming
...
Implement a scrollable and zoomable viewport for the TUI graphs, allowing users to pan through historical data using arrow keys and adjust the time window with zoom controls. This transitions graph rendering from sample-count based to timestamp-based for more accurate temporal visualization.
2026-07-04 23:44:18 +07:00
Nils Andreas Svee
b9f5367ed1
feat(tui): add manual Y-axis scaling and improve graph axis logic
...
Introduce a toggleable graph scale (Auto, 100ms–2s) via the 's' key to provide better control over visualization ranges and implement smarter Y-axis bounds that handle signed versus non-negative metrics.
2026-07-04 22:54:47 +07:00
Nils Andreas Svee
c483a12173
chore(deps): update time crate to 0.3.53
...
Update the time dependency in Cargo.lock to the latest patch version to maintain the lockfile and incorporate upstream fixes.
2026-07-03 00:58:05 +07:00
Nils Andreas Svee
c5ca3d5a93
test(cli): add integration tests for disabled client feature
...
Verify that the CLI correctly reports the unavailability of the client applet and provides instructions on how to enable it via features.
2026-07-03 00:57:37 +07:00
Nils Andreas Svee
baa2a862f5
feat(tui): expand multi-target graph metrics and enhance visualization
...
Enable switching between different RTT metrics in multi-target mode and add color-coded labels to the target table for better correlation with graph series.
2026-07-03 00:53:57 +07:00
Nils Andreas Svee
a62c53a77e
feat(tui): improve multi-target lifecycle management and UI clarity
...
Refine the TUI event loop to explicitly handle different exit conditions and ensure sessions stop correctly on idle timeouts or interruptions. Update UI labels to clarify when metrics or headers refer specifically to the first target in multi-target sessions.
2026-06-23 23:41:35 +07:00
Nils Andreas Svee
836a8abbeb
feat(tui): add multi-target support and improved dashboard visualization
...
Enable simultaneous probing of multiple targets within the TUI using a new target status table and multi-series RTT graph. Refactor target resolution logic into a shared module to support consistent behavior across CLI and TUI components.
2026-06-23 22:36:49 +07:00
Nils Andreas Svee
2065fe5e11
test(cli): add comprehensive tests for multi-target resolution and output
...
Add unit tests for target normalization and address family filtering, and expand integration tests to verify column rendering and CSV output for multiple targets. Update subscriber config to drop oldest events under backpressure for better CLI stability.
2026-06-23 21:38:23 +07:00
Nils Andreas Svee
69fd24ce64
feat(cli): add multi-target probing support and labels
...
Enable concurrent probing of multiple targets using positional arguments or the `--target` flag with unique labels. Update output formats to include a `target` column for logical attribution in multi-target runs.
2026-06-23 21:26:46 +07:00
Nils Andreas Svee
a8622ee15a
build: allow Zlib license in cargo-deny configuration
...
Add Zlib to the list of accepted licenses to support new dependencies or updates that utilize this license.
2026-06-23 21:20:39 +07:00
Nils Andreas Svee
5dce8d55ee
build: update time crate from 0.3.50 to 0.3.51
...
Update the time dependency in Cargo.lock to the latest patch version.
2026-06-23 21:14:28 +07:00
Nils Andreas Svee
543f0e57c8
fix(client): prevent premature task rescheduling in staggered pacing
...
Ensure targets are only scheduled when they are actually due to prevent unchanged targets from resending too early when the active set changes.
2026-06-23 21:12:01 +07:00
Nils Andreas Svee
acffc3cd4e
feat(client): implement multi-target ManagedClientGroup for shared-socket probing
...
Introduce a managed group runner to support concurrent probing of multiple targets over a single UDP socket with coordinated send pacing. Refactor the existing client logic into a reusable SessionRuntime to support both individual and grouped session management.
2026-06-23 21:02:54 +07:00
Nils Andreas Svee
ac82537043
docs: clarify applet availability and server implementation status
...
Update README to specify that irtt-tui requires the tui feature and explicitly state that server support is not yet implemented.
2026-06-22 17:03:56 +07:00
Nils Andreas Svee
170f229e7b
refactor: update build documentation and switch comparison script to CSV
...
Update README with comprehensive build/verification instructions and modify the client comparison script to consume CSV output instead of the legacy machine format.
2026-06-22 16:01:25 +07:00
Nils Andreas Svee
5b40593fda
refactor(tui): normalize late reply processing and display warning counts
...
Treat late replies as diagnostic events without RTT metadata to ensure consistent TUI statistics and add a visibility toggle for warning events in the packet panel.
2026-06-22 15:22:41 +07:00
Nils Andreas Svee
b33f01cfe1
feat(cli): enhance help documentation and dynamic applet dispatch
2026-06-22 15:13:36 +07:00
Nils Andreas Svee
f1d442d798
refactor(cli): separate binary entry points from library logic
...
Move the main execution logic to a dedicated internal module and create distinct entry files for each binary to improve project structure and build configuration.
2026-06-22 13:41:28 +07:00
Nils Andreas Svee
d05d6a941b
chore(deps): maintain cargo lockfile
2026-06-22 13:31:14 +07:00
Nils Andreas Svee
9c63a03454
feat(cli): refine default table output and introduce "default" column alias
...
Simplify the default table view by moving verbose columns to the verbose mode and allow users to explicitly request the default layout using `--columns default`.
2026-06-22 13:25:16 +07:00
Nils Andreas Svee
b02bc53cd8
feat(cli): introduce flexible event row output formats and column selection
...
Replace fixed output modes with customizable table, CSV, TSV, and JSON Lines formats. This allows users to select specific data columns and control header visibility for better integration with scripts and monitoring tools.
2026-06-22 13:16:33 +07:00
Nils Andreas Svee
193487ae64
refactor(cli): align machine output wall clock field and refine visibility
...
Update the machine-readable wall clock field to "event_wall_ns" for consistency and restrict visibility of internal rendering types. The extensive test suite was removed as part of this cleanup.
2026-06-21 00:19:38 +07:00
Nils Andreas Svee
cfbac69ac6
build: update lockfile to version 4 and deduplicate dependencies
...
Upgrade Cargo.lock to version 4 and remove redundant versions of crossterm, rustix, and windows-sys to reduce binary size and build complexity.
2026-06-21 00:12:23 +07:00
Nils Andreas Svee
f72f8fda5a
refactor(cli): harden client output formatter
2026-06-21 00:10:56 +07:00
Nils Andreas Svee
c7d03c0358
test(client): strengthen assertions for session cleanup after peer closure
...
Update tests to ensure no packets at all are sent following a peer-initiated closure, rather than just checking for the absence of the close flag.
2026-06-20 23:08:00 +07:00
Nils Andreas Svee
97dc1b3f8d
test(client): add tests for peer-initiated session closure
2026-06-20 22:59:48 +07:00
Nils Andreas Svee
e33ae1d0fc
fix(client): handle peer-initiated session closure gracefully
2026-06-20 22:59:48 +07:00
Nils Andreas Svee
d4976fb811
refactor(client): track session closure source
2026-06-20 22:59:48 +07:00
Nils Andreas Svee
74ceef6a70
test(cli): add unit and integration tests for applet dispatching
2026-06-20 22:59:48 +07:00
Nils Andreas Svee
fe776e6672
feat(cli): add multi-applet dispatcher with subcommand support
2026-06-20 22:59:48 +07:00
Nils Andreas Svee
efaa60cbd4
refactor(cli): simplify applet detection and remove feature-based defaults
2026-06-20 22:59:48 +07:00
Nils Andreas Svee
dc65daec75
build: bump minimum supported rust version to 1.85
...
Update the rust-version in Cargo.toml and the installation requirements in README.md to reflect the new MSRV.
2026-06-20 22:35:07 +07:00
Nils Andreas Svee
e3b74441a7
fix(deps): update rust crate ratatui to 0.30.2
2026-06-20 22:32:43 +07:00
Nils Andreas Svee
afe07f0b9a
refactor(cli): reorganize feature flags and update distribution config
2026-06-10 15:19:34 +07:00
Nils Andreas Svee
352cebb5c3
build: enable tui feature in distribution workspace
...
Include the TUI module in release builds to ensure command-line interface functionality is available in distributed binaries.
2026-06-10 00:59:40 +07:00
Nils Andreas Svee
58fd017d4f
build(ci): update cargo-dist to v0.32.0 and revert runner to ubuntu-22.04
...
Upgrade CI tooling to use cargo-dist v0.32.0 and switch to the ubuntu-22.04 runner to ensure environment compatibility. Pin GitHub Actions to major versions for better maintainability.
2026-06-10 00:47:34 +07:00
Nils Andreas Svee
5efb8a1870
build: bump workspace and crate versions to 0.3.0
2026-06-10 00:44:10 +07:00
Nils Andreas Svee
f41fd4a8e7
refactor: simplify lib.rs and update feature gating for cmd modules
2026-06-10 00:41:03 +07:00
Nils Andreas Svee
5de1bf7343
docs: update README with multi-applet usage and installation instructions
2026-06-09 23:23:51 +07:00
Nils Andreas Svee
7e89d11e6e
build: configure multi-binary targets and feature-gate dependencies
2026-06-09 23:23:51 +07:00
Nils Andreas Svee
196fc29f76
feat(tui): optimize terminal UI and simplify graph data series
2026-06-09 23:23:51 +07:00
Nils Andreas Svee
ded8a5f87d
refactor(client): encapsulate session lifecycle and stream output
2026-06-09 23:23:51 +07:00
Nils Andreas Svee
133ff71b72
feat(cli): implement multi-applet binary dispatch and signal handling
2026-06-09 23:23:50 +07:00
Nils Andreas Svee
d7cdcc5cee
refactor(cli): reorganize project structure into modular commands
2026-06-09 23:23:41 +07:00
Nils Andreas Svee
c31ad07d61
feat(irtt-cli): add optional tui output mode
2026-06-09 13:29:00 +07:00
Nils Andreas Svee
9b0cc2b395
test(ci): split netem interop summaries into local and GitHub-specific reports
...
Create separate markdown files for local browsing with relative links and GitHub Action summaries with artifact notices. This ensures the GitHub Step Summary remains readable and informative without broken links.
2026-06-05 17:13:51 +07:00
Nils Andreas Svee
64be840c1e
test(ci): enhance netem interop reporting and loss validation
2026-06-04 09:16:32 +07:00
Nils Andreas Svee
b8b0425c4e
test(ci): add deterministic Linux netem interop testing
2026-06-03 14:48:51 +07:00
Nils Andreas Svee
3e07732934
test(scripts): add interoperability harness to compare irtt clients
...
Add a Python-based black-box testing script to validate the Rust client's output and metrics against the upstream Go implementation.
2026-05-25 16:22:46 +07:00
Nils Andreas Svee
c739764476
ci: split actionlint into separate steps for handwritten and generated workflows
...
Disable ShellCheck globally for the cargo-dist generated release workflow to replace brittle regex ignore patterns with a cleaner configuration.
2026-05-18 13:50:18 +07:00
Nils Andreas Svee
5c96024c4f
ci: simplify actionlint ignore patterns for generated release workflow
...
Update the regex patterns to be more robust and improve the clarity of comments regarding cargo-dist generated workflows.
2026-05-18 13:46:26 +07:00
Nils Andreas Svee
5d653dac13
fix(client): remove duplicate constant exports and definitions
2026-05-18 11:12:21 +07:00
Nils Andreas Svee
6f77d38a7f
docs: document client errors and bounds
2026-05-18 10:56:58 +07:00
Nils Andreas Svee
01c10e2e0d
docs: document client public API
2026-05-18 01:34:04 +07:00
Nils Andreas Svee
8fd0b803e9
docs: add public crate landing docs
2026-05-18 01:22:08 +07:00
Nils Andreas Svee
614ad5b5cd
ci: ignore specific shellcheck warnings in generated release workflow
...
Suppress SC2086 and SC2129 linting errors for the generated release.yml to prevent build noise while maintaining checks for logic issues.
2026-05-18 01:05:40 +07:00
Nils Andreas Svee
2fcef0adc5
docs: clarify params validation boundaries
2026-05-18 00:36:18 +07:00
Nils Andreas Svee
c7a0e5d055
chore: tighten release readiness checks
2026-05-18 00:30:07 +07:00
Nils Andreas Svee
e117813578
test: consolidate and prune redundant unit tests
...
Simplify the test suite by merging similar test cases and removing redundant assertions that verify trivial initialization and basic container logic.
2026-05-18 00:16:51 +07:00
Nils Andreas Svee
3b5336a487
refactor(client): use SignedDuration for one-way delay to support negative values
...
Allow one-way delay samples to represent negative values caused by wall-clock skew between client and server. Update CLI output and statistics collection to correctly handle and report these signed durations.
2026-05-17 23:55:01 +07:00
Nils Andreas Svee
0b16ee802d
fix(stats): support sequence number wraparound in IPDV tracking
...
Use wrapping arithmetic instead of checked arithmetic to ensure inter-packet delay variation (IPDV) is correctly calculated when sequence numbers wrap from u32::MAX to 0.
2026-05-17 23:11:26 +07:00
Nils Andreas Svee
64da60d480
feat(proto): enforce maximum length for server fill parameter
...
Move MAX_SERVER_FILL_BYTES to irtt-proto and validate it during decoding to prevent processing oversized parameters.
2026-05-17 22:59:57 +07:00
Nils Andreas Svee
2d6581f31f
refactor(client): encapsulate SignedDuration and enhance its API
...
Hide internal fields to improve type safety and provide helper methods for unit conversions and negative value checks. Fix several feature-gated test compilation issues.
2026-05-17 22:47:16 +07:00
Nils Andreas Svee
bec56d4114
refactor(client): use SignedDuration for effective RTT to support negative values
...
Simplify RttSample by merging signed and unsigned fields into a single SignedDuration for adjusted and effective RTT. This ensures accurate reporting and statistics when server processing time exceeds raw RTT.
2026-05-17 21:30:51 +07:00
Nils Andreas Svee
37de7c96a1
test(client): remove redundant probe/reply tests
2026-05-17 15:22:08 +07:00
Nils Andreas Svee
6c5972aa58
test(client): refactor probes and replies tests into submodules
...
Split the monolithic `probes_replies.rs` file into logical submodules and expose internal packet processing methods to improve test maintainability and coverage of boundary conditions.
2026-05-17 14:54:59 +07:00
Nils Andreas Svee
bed877760e
test: prune client tests that assert private implementation details
2026-05-17 14:48:45 +07:00
Nils Andreas Svee
39d414d588
test: consolidate formatter and hub policy cases
2026-05-17 00:39:23 +07:00
Nils Andreas Svee
00fd0ebb15
test: consolidate duplicate CLI and client config cases
2026-05-17 00:34:18 +07:00
Nils Andreas Svee
ddd420cc21
test: consolidate and prune implementation-coupled tests
2026-05-17 00:28:05 +07:00
Nils Andreas Svee
a7288cc612
test(client): extract backend smoke tests into a dedicated module
2026-05-17 00:17:10 +07:00
Nils Andreas Svee
fdcdb3b9d7
test(client): remove implementation-coupled client tests
2026-05-16 23:41:11 +07:00
Nils Andreas Svee
bd9ed7eb88
test(client): trim implementation-coupled probe tests
2026-05-16 23:41:11 +07:00
Nils Andreas Svee
5d471b77fb
refactor(irtt-cli): split stream runtime path
2026-05-13 22:20:51 +07:00
Nils Andreas Svee
61c527eb26
refactor(irtt-cli): rename stream output helper
2026-05-13 22:12:03 +07:00
Nils Andreas Svee
f5c35e8142
feat(irtt-cli): note running-only continuous summaries
2026-05-13 22:05:18 +07:00
Nils Andreas Svee
9adab6882d
test(cli): add tests for interrupted continuous mode summary
2026-05-13 22:01:56 +07:00
Nils Andreas Svee
67ef912ba0
feat(cli): print summary when continuous mode is interrupted
2026-05-13 22:01:56 +07:00
Nils Andreas Svee
f2f5728c72
refactor(cli): rename print_finite_summary to print_final_summary
2026-05-13 22:01:56 +07:00
Nils Andreas Svee
c19dac5aef
docs(irtt-cli): expand duration flag documentation
...
Add detailed help text to clarify the difference in statistics handling between finite and continuous test modes.
2026-05-13 21:36:30 +07:00
Nils Andreas Svee
480cb4fa92
warn(irtt-cli): flag large finite stats runs
2026-05-13 20:18:45 +07:00
Nils Andreas Svee
ea85384ced
docs(irtt-stats): clarify event contribution for rolling_count
2026-05-13 16:58:12 +07:00
Nils Andreas Svee
aa6c3f4fa6
refactor(irtt-stats): remove unknown loss field
2026-05-13 16:25:11 +07:00
Nils Andreas Svee
dd1b08c51c
docs(irtt-stats): enforce public API documentation
2026-05-13 15:26:37 +07:00
Nils Andreas Svee
a180388dc6
docs(irtt-stats): Add documentation comments to public-facing types and fields
...
Add docstrings to clarify the purpose of statistics collection types and describe the units and behaviors of metric fields.
2026-05-13 15:15:41 +07:00
Nils Andreas Svee
19e0e7aab9
refactor(irtt-stats): extract core aggregation module
2026-05-13 14:57:19 +07:00
Nils Andreas Svee
c26008a0b6
refactor(irtt-stats): extract event normalization module
2026-05-13 14:53:13 +07:00
Nils Andreas Svee
1469a2d9e8
refactor(irtt-stats): extract rolling events module
2026-05-13 14:44:56 +07:00
Nils Andreas Svee
ebc0d46621
refactor(irtt-stats): extract loss stats module
2026-05-13 14:32:12 +07:00
Nils Andreas Svee
cc43b43f00
refactor(irtt-stats): extract IPDV tracking module
2026-05-13 14:25:54 +07:00
Nils Andreas Svee
04d5b634a2
refactor(irtt-stats): extract time stats module
2026-05-13 14:16:07 +07:00
Nils Andreas Svee
557c946796
refactor(irtt-stats): split snapshot builders
2026-05-13 14:07:43 +07:00
Nils Andreas Svee
bda1d83c27
refactor(irtt-stats): extract rolling event storage
2026-05-13 13:59:54 +07:00
Nils Andreas Svee
820304f6eb
refactor(irtt-stats): split unique reply accounting
2026-05-13 13:49:43 +07:00
Nils Andreas Svee
f211845645
refactor(irtt-stats): extract IPDV update recording
2026-05-13 13:45:28 +07:00
Nils Andreas Svee
851825822d
refactor(irtt-stats): split CoreStats event handlers
2026-05-13 13:40:55 +07:00
Nils Andreas Svee
969d26d0f1
refactor(irtt-stats): extract event normalization boundary
2026-05-13 13:31:27 +07:00
Nils Andreas Svee
c1b2486046
refactor(irtt-stats): split reply and IPDV samples
2026-05-13 13:28:08 +07:00
Nils Andreas Svee
90bb29cd75
refactor(irtt-stats): extract IPDV tracker
2026-05-13 13:20:58 +07:00
Nils Andreas Svee
0dd137a59e
refactor(irtt-stats): rename WindowEvent to StatsEvent
2026-05-13 13:12:06 +07:00