Skip to content

Latest commit

 

History

History
417 lines (338 loc) · 47.5 KB

File metadata and controls

417 lines (338 loc) · 47.5 KB

Changelog

0.7.0 - 2026-07-27

⛰️ Features

  • Add test setup helpers to Lab builder (#44) - (9f0d703)
  • [breaking] Realistic link emulation (congestion-buffer and bursty-loss knobs) (#43) - (7014aaa)
  • [breaking] Rework NAT taxonomy with behavior-only variants + ADF filtering (#37) - (8415da5)

0.6.0 - 2026-06-15

⛰️ Features

  • [breaking] Update deps and iroh-metrics@1.0 (#42) - (4332285)

0.5.2 - 2026-05-07

⛰️ Features

0.5.1 - 2026-05-04

⛰️ Features

⚙️ Miscellaneous Tasks

  • Refine tracing log levels for cleaner debug output (#35) - (f2582ba)

0.5.0 - 2026-04-14

⛰️ Features

  • [breaking] LabDropGuard with FlushRegistry for guaranteed clean shutdown (#29) - (4973d10)
  • [breaking] Replace LabOpts with Lab::builder() pattern (#31) - (09a33de)

🐛 Bug Fixes

  • Prevent mount namespace leaks and enforce user namespace isolation (#30) - (275ac1d)
  • Use AbortOnDropHandle for DNS server task lifecycle (#28) - (e001d5c)

📚 Documentation

  • Update all documentation for DNS server and Iface API (#25) - (78edca3)

⚙️ Miscellaneous Tasks

0.4.0 - 2026-04-10

⛰️ Features

  • [breaking] Replace DNS overlay with in-process DNS server (#13) - (699170f)
  • [breaking] Unified interface API with IfaceConfig, Iface handle, and isolated interfaces (#21) - (ccc77d9)

🐛 Bug Fixes

  • Two safeguard issues from crate review (#15) - (5c3cab9)
  • [breaking] Remove unused direction parameter from Lab::set_link_condition (#18) - (4c2c0a2)

🚜 Refactor

  • Split core.rs and handles.rs into focused modules (#14) - (765e38b)
  • Use rtnetlink for region link break/restore (#16) - (8983acd)

⚙️ Miscellaneous Tasks

0.3.0 - 2026-03-31

⛰️ Features

  • [breaking] Bidirectional per-device link impairment (#12) - (a26cf72)

🐛 Bug Fixes

  • Prepend https:// to view_url when Host header lacks scheme (#11) - (dff4873)

⚙️ Miscellaneous Tasks

  • Prepare patchbay v0.3.0 release - (6ad9f77)

0.2.0 - 2026-03-30

⛰️ Features

  • Add patchbay-serve binary with push API, ACME TLS, and retention - (aedf9c0)
  • Add systemd unit file, restructure testing docs - (94f77b0)
  • Add deep linking with react-router HashRouter - (f92295b)
  • Flat run dirs, sims tab in invocation view, fix deep linking - (c3d79aa)
  • Split bind into --http-bind and --https-bind - (bc821ac)
  • Add TestGuard for per-test pass/fail status in state.json - (d75987a)
  • Emit TestCompleted event, sort _lab first in timeline - (38f2226)
  • Move pushed-runs listing to React UI, add workflow template - (866aa8f)
  • Add [matrix] expansion for sim TOML files - (729bc67)
  • Rewrite variable refs during counted device expansion - (7544b19)
  • Add Apple container backend for patchbay-vm (#7) - (674b80b)
  • Unified CLI, compare mode, metrics collection (#9) - (3e92f5f)
  • Improve run discovery and group pages (#10) - (4fb9f73)

🐛 Bug Fixes

  • Deduplicate timeline events, fix jump-to-log precision, style span rendering - (2920b8c)
  • Correct view URL in CI snippet and runs index page - (1cfe67a)
  • Install rustls crypto provider at startup - (6424cbb)
  • Bind ACME listeners on 0.0.0.0 instead of [::] - (8f28d1f)
  • Validate ACME port requirements at startup - (ff8f0b6)
  • Replace SSE with REST for initial load, SSE only for live runs - (e69d513)
  • Block on writer completion in drop, create state.json if missing - (88f2344)
  • Apply proper fullcone NAT rules for CGNAT (EIM+EIF) - (78540fb)
  • Run prepare builds before binary assembly - (c3139af)
  • Extract AxisParams type alias to satisfy clippy type_complexity - (5ed18dc)
  • Bind-mount /proc/thread-self/net over /proc/net in namespaces (#5) - (9bdd7fc)
  • Reduce default capture timeout from 300s to 30s - (887f9ff)
  • Rewrite results capture keys during counted device expansion (#6) - (94876c4)
  • Share tracing dispatch between async and sync namespace workers - (9f41d41)

🚜 Refactor

  • Sync final state.json write via shared LabState mutex - (e905ff6)
  • Merge runs index, unify /api/runs with manifest data - (8efa131)
  • Put patchbay-server integration behind serve feature - (57641d4)

📚 Documentation

  • Add patchbay-server README with deploy and CI docs - (705c0d4)
  • Add matrix expansion and when field to TOML reference - (3a60cd9)

🧪 Testing

  • Add e2e test for push API and deep linking - (b31372d)
  • Add tests for counted device ref rewriting - (8fca4d0)

⚙️ Miscellaneous Tasks

[0.1.0] - 2026-03-12

⛰️ Features

  • (patchbay-vm) Add Apple Silicon (aarch64) support - (763de72)
  • (sim) Surface last out.log error in manifests and UI - (58a2dff)
  • (sim) Split stdio logs and add verbose live streaming - (e8cae16)
  • (sim) Additive infrastructure for generic capture-based results (Steps 1-6) - (7c32262)
  • (sims) Port all iroh/iperf sims to new template/group/captures model (Step 7) - (69fad18)
  • (tracing) Add structured span hierarchy with lab/router/device context - (58be1cb)
  • (ui) Stabilize timeline selection and log navigation - (2f0bd4c)
  • (ui-server) Use fixed shared default port for run/serve - (1573732)
  • Phase 1 — multi-interface Device, unified add_router, DeviceBuilder - (7d5a505)
  • Consolidate netns execution, docs, and vm tooling - (5325073)
  • Add iroh integration runner with vm workflow - (0ba5574)
  • Switch dynamic ops to rtnetlink - (b6bf73e)
  • Add iperf parser-backed sim reporting - (171812a)
  • Port legacy iroh sims and add chuck-compatible reports - (194356c)
  • Add standalone netsim-vm runner - (a35a2d8)
  • Refactor sim run layout and transfer args - (92e2122)
  • Add run manifest and per-sim summaries - (3404897)
  • Add browser UI for sim results, logs, timeline and qlog - (65a2990)
  • Unify serve/progress UX and remove netsim VM runtime code - (a9ae322)
  • Refactor UI to manifest/progress-driven sim workspace - (29255e2)
  • Use shared URL cache for binaries and reduce cleanup log noise - (66e73e9)
  • Add run overview UI and drop chuck compat outputs - (9338cfc)
  • Add ranged log loading and metadata-first log viewer - (90643ce)
  • Add inspect and run-in interactive debug workflow - (ac82689)
  • Complete rootless mode and remove setup-caps - (a018d37)
  • Refactor sim steps and utilities - (3aa5215)
  • Build ui in build script - (8b1a3b4)
  • Add prepare workflow and no-build sim runs - (f51789c)
  • Batch prepare builds and refresh README usage - (8ba2bb1)
  • Implement IPv6 dual-stack and v6-only support - (565286c)
  • Implement fullcone NAT for UDP hole punching - (0bd63bb)
  • Allow configuring downstream subnet on RouterBuilder - (7dc8473)
  • Per-device DNS entries via /etc/hosts bind-mount overlay - (b0667fb)
  • Mount-once write-through DNS overlay with resolv.conf support - (b204d0f)
  • NAT presets, API renames, Home NAT holepunching - (08844fb)
  • NatConfig builder API, rewrite NAT rule generation from config - (772b352)
  • Enhanced impairment presets, Nat::Custom, parallelized tests - (ae842e8)
  • MTU control, ICMP frag blocking, node removal, IP management - (0008731)
  • Implement first-class region routing with veths and netem - (1ea6723)
  • Add firewall presets (Corporate, CaptivePortal, Custom) - (f949cba)
  • Add Device::add_iface and Device::remove_iface for runtime interface management - (389be19)
  • IPv6 stateful firewall, public GUA pool, NAT64 plan - (df12349)
  • RouterPreset, unified FirewallConfig with PortPolicy - (3dbc3ff)
  • NAT64 userspace SIIT translator for IPv6-only mobile networks - (07050a3)
  • Unified devtools UI, per-namespace tracing, multi-run server - (f5e3944)
  • Add ipv6 link-local plumbing and router iface API - (be820f1)
  • Improve RA-driven IPv6 scoped default-route handling - (ee3fea7)
  • Add router RA controls and worker gating - (e729af5)
  • Emit RA advertisement events with lifetime metadata - (2053d34)
  • Handle RA lifetime zero for radriven default routes - (7752a12)
  • Emit rs tracing events in radriven control path - (6d96fa2)
  • Persist radriven router solicitation events to node logs - (1af73cd)
  • Add runtime router RA controls for radriven route refresh - (22e8b4c)
  • Reconcile radriven v6 default routes on runtime RA changes - (988d3d0)
  • Make ra worker react to runtime config updates - (878350b)
  • Add ipv6 deployment profiles for lab provisioning - (d354e13)
  • Map router presets to recommended ipv6 profiles - (e712356)
  • Allow per-device ipv6 provisioning overrides - (ac132e8)
  • Add --testdir flag to serve commands - (19358e6)
  • Improve patchbay-vm test command and fix virtiofs permissions - (2a35cca)
  • Support full directive syntax in PATCHBAY_LOG / RUST_LOG file filter - (9c8dde1)
  • Add .tracing.log ANSI output per namespace - (2668e1f)
  • Add invocation grouping and combined results view to UI - (66b7fc5)
  • Add --project-root, --timeout flags and fix capture/interpolation edge cases - (efb0f73)
  • Flat stdout/stderr log files, command lifecycle events, and UI improvements - (f21a94f)
  • Detect tracing-jsonl logs by content in server - (bd53b9a)
  • Add patchbay.toml config and recursive sim directory scanning - (af3801e)

🐛 Bug Fixes

  • (net) Repair NAT/routing wiring after refactor - (e82ba83)
  • (sim) Improve failure output and repair nat-switch sim - (390c54a)
  • (sim) Load binaries from extends files; fix assert syntax in sims - (6541057)
  • (ui) Enforce wall-time ordering in timeline - (e035886)
  • Improve vm run/test ergonomics - (b41bdd2)
  • Align inspect with run backend and keep session interactive - (397cd91)
  • Honor host build env and simplify transfer perf table - (4ac34c3)
  • Use cargo metadata target dir for local sim builds - (d3ac4f5)
  • Resolve 5 failing tests in netsim-core test suite - (d306082)
  • Apply region latency rules when routers are built via builder API - (1333936)
  • Complete IPv6 dual-stack test fixes and cleanup - (bf50efa)
  • Prevent EDEADLK panic in worker Drop, fix switch_uplink veth teardown - (f457914)
  • Address allocator overflow, doc inaccuracies, error propagation - (7b02bcd)
  • Make loss_udp_moderate less flaky - (7e76174)
  • V6 inter-region routing and test corrections - (7be1c91)
  • Enable unprivileged user namespaces in CI - (330f51a)
  • Make udp_send_recv_count robust against buffer overflow and reflector races - (fa8f15d)
  • NPTv6 prefix translation and v6 routing bugs - (74a2ed0)
  • Address code review findings (symlink safety, server lifecycle, event reducer) - (9eb24ed)
  • Preserve tracing span chains and verify in devtools e2e - (31b63df)
  • Improve log kind detection and qlog rendering - (ba5962b)
  • Resolve ipv6 link-local review findings - (28ab0ca)
  • Resolve clippy unnecessary_unwrap warnings - (21f00ba)
  • Retry tc commands on transient EAGAIN - (d9b40ed)
  • Reduce CI test parallelism to prevent EAGAIN flakes - (30bbd4b)
  • Add error context to bare socket/command spawns for EAGAIN diagnosis - (97ebb5e)
  • Add loss tests to serial-heavy group and increase warmup deadline - (2e19425)
  • Relax tight timeouts and RTT bounds, enable CI cache on failure - (e05f007)
  • Make spawn_reflector async with readiness signalling - (49846a2)
  • Tighten ipv6 default-route handling and align ipv6 ll docs - (9906e8f)
  • Make spawn_reflector async with readiness signalling - (1ee7570)
  • Make spawn_reflector async with readiness signalling - (1fdf0ff)
  • Split e2e into parallel CI job, fix stale netsim references - (7edde73)
  • Remove stale iroh e2e test - (8c8f3d6)
  • Apply netem loss after ARP warmup to prevent flaky loss tests - (ddc5f79)
  • Deduplicate v6 route dispatch, RA guard, and RS emit logic - (9134fac)
  • Json tree toggle, timeline detail cleanup, and lab stop status - (aeec33e)
  • Write stopped status on channel close instead of LabStopping event - (8c2c333)
  • Close SSE connections on page unload and fix JsonTree key click - (9310b1d)
  • Fix e2e test failures in CI - (203c6e9)

🚜 Refactor

  • (sim) Remove iroh-specific code and legacy step fields (Commit C) - (03eb9c2)
  • Add Qdisc abstraction for impairments - (c1c2371)
  • Simplify UI run views and transfer summaries - (c1a239d)
  • Remove ported sims for now - (a04386f)
  • Update sim files - (cb3dad7)
  • DRY, docs, simplifications + REVIEW.md - (f05bed9)
  • Apply REVIEW.md items 1–5, 7, 9–10; close 3, 6, 8 - (d4be5a3)
  • Split monolith into netsim-core, netsim-utils, netsim, netsim-vm - (d3d8112)
  • Report layer to steps model, MB/s throughput, human-readable UI - (ec4055e)
  • Netsim-core cleanup — split lib.rs, internalize naming, remove aliases - (88ac0c4)
  • Async namespace worker redesign + deterministic resource cleanup - (a4d51b3)
  • Persistent Netlink per namespace, RouterBuilder, async lab ops - (52a0568)
  • New Lab API with Device/Router handles and instant construction - (4149a73)
  • API cleanup — rename, deduplicate, remove debug cruft - (77fd3f2)
  • Migrate tests to Device/Router handle API, internalize core - (1e10faf)
  • Remove ResourceList cleanup, simplify Netlink, add task spans - (cd05f88)
  • Some cleanups - (4b19672)
  • Remove globals, add Ix handle, ns-free test helpers - (69b7c66)
  • Merge LabInner into NetworkCore, async reflector, remove TaskHandle - (a44a97f)
  • Remove Lab::ix_gw, use ix().gw() instead - (517d892)
  • Remove own_netns tracking, tighten visibility to pub(crate) - (70af3c8)
  • Merge ns creation + async worker thread, clean up netns module - (3b77b81)
  • API cleanup — rename Impair, remove deprecated, fix races - (40adab7)
  • Consolidate test helpers, remove duplicates, fix loss_udp_moderate - (005f125)
  • Split lab.rs into nat, firewall, and handles modules - (c055eaf)
  • Overhaul mutex/lock architecture for async soundness - (edf30a7)
  • Eliminate panics from Device/Router handles on removed nodes - (fe56fa8)
  • Make Lab::new() fallible instead of panicking - (bc89f35)
  • Split monolithic tests.rs into 16 focused submodules - (aa0a5a0)
  • Migrate String → Arc, extract lock bodies into NetworkCore - (56bd22b)
  • Rename spawn_command default to async, _sync suffix for sync - (4810393)
  • Remove sync server API, add devtools docs - (6f808da)
  • Drop patchbay dep from patchbay-server, remove live mode - (47049d4)
  • Replace events tab with lab_events file kind and DRY JSON rendering - (e87a72e)
  • Introduce OutDir enum and recursive server scan - (b0dd032)
  • Consolidate router presets and improve documentation - (49d2696)
  • Move simple example from patchbay-runner to patchbay - (c7fb67a)
  • Improve lib.rs docs, remove ObservedAddr, tighten visibility - (2770ff4)

📚 Documentation

  • Add rootless user-namespace implementation plan - (bf9df20)
  • Add maintainability review plan - (b8b523c)
  • Add iroh-isolation implementation plan - (ecb9cbd)
  • Add sim TOML reference and rewrite README - (43be619)
  • Readme and example - (eb0f54c)
  • Add real-world network patterns guide - (b1b5649)
  • Expand public API rustdoc across patchbay crate - (625993b)
  • Review all prose and doc comments for accuracy and wording - (5e39711)
  • Fix README API inaccuracies, add multi-region routing section - (ff830a3)
  • Fix stale API references, add RouterPreset/firewall sections - (b3c06d1)
  • Add NAT64/MobileV6 to docs, move holepunching to docs/ - (4416b87)
  • Add mdbook with guide section and reorganize reference docs - (9709bc5)
  • Rewrite guide for better prose, add motivation chapter - (084a1d4)
  • Ctor test pattern, VM guide, reorder NAT64, rework holepunching - (57c1925)
  • Replace README include with concise book introduction - (36dd6eb)
  • Add devtools & UI implementation plan - (c9cd0a2)
  • Document ipv6 link-local behavior and stabilize udp loss tests - (65dbcbd)
  • Finalize ipv6 link-local plan completion status - (3053fc4)
  • Clarify ipv6 fidelity and add limitations reference - (cba194c)
  • Refine prose style and normalize reference wording - (d9ff2a4)
  • Improve prose and writing style - (72a8235)
  • Update REVIEW.md and add Ipv6Profile divergence comment - (79e5ae2)
  • Add fmt-log command to testing guide - (b882445)

🎨 Styling

  • Apply rustfmt to lab.rs clippy fix - (4e62508)
  • Cargo fmt patchbay-vm - (b4bc8db)

🧪 Testing

  • (ui) Add playwright e2e for iroh-1to1-nat run - (82c4455)
  • Capture net_report QAD timeout with dev relay - (0293521)
  • Strengthen ui e2e assertions - (3c1ee4b)
  • Add 8 new coverage tests across feature areas - (f45440f)
  • Add coverage for BlockInbound, RouterPreset, and public v6 pool - (c476e03)
  • Cover local v6 routing without default router in radriven mode - (48ae37c)
  • Cover ra worker shutdown on router removal - (ae33db3)
  • Verify ra reconcile skips static override devices - (f73fed1)
  • Cover static override route switching with runtime iface changes - (8a9b8bf)
  • Assert static ipv6 mode skips ra and rs tasks - (018d9db)
  • Add runner sim e2e test - (917e5af)

⚙️ Miscellaneous Tasks

  • (logging) Normalize cleanup logs - (b5c70a3)
  • (sim) Finalize relay/dev-env runtime updates - (fd93dbb)
  • (sim) Align verbose log prefixes - (753da3a)
  • Update .gitignore - (35a66f3)
  • Remove outdated workflow file - (172cfee)
  • Remove obsolete qemu-vm.sh based instructions, use netsim-vm instead - (9973d15)
  • Remove #[serial] from all tests; drop serial_test dependency - (2716ece)
  • Add missing types and fmt ui - (5400adb)
  • Move tests to file - (d5eb87c)
  • Fmt - (f4a3bc1)
  • Remove duplicate test definitions - (8d535dc)
  • Fmt - (afc7572)
  • Add license - (f8aecf8)
  • Cargo.toml file cleanup - (e181ecc)
  • Mark no-globals-better-spawn plan as complete - (28d52e6)
  • Name all threads, configure nextest parallelism - (5dbf808)
  • Review fixes — remove dead code, dup docstring, stabilize flaky test - (339f355)
  • RouterBuilder::error helper, remove parse().unwrap(), dead code - (235aa1d)
  • Remove dead code and fix clippy warnings - (6130feb)
  • Remove deprecated API, replace stale tests, add lint gates - (5212853)
  • Fmt - (2210e90)
  • Add GitHub CI workflow and update format instructions - (3bfc41c)
  • Add GitHub Pages workflow for mdbook - (0365a50)
  • Add rolling release CI workflow - (a870303)
  • Fixup CI - (f47f582)
  • Update gitignore - (9355fc4)
  • Fmt - (1c1cd13)
  • Fmt patchbay-runner - (c300b99)
  • Bump GitHub Actions to v5 to fix Node.js 20 deprecation - (8b53233)
  • Update .gitignore - (e0c48e0)

Deps

  • Cleanup and bump all deps - (67fe8f0)

Merge

  • Bring main into ip6-link-local - (80e1001)
  • Bring main into ip6-link-local - (0058fe3)

Plan

  • Add exhaustive ipv6 link-local implementation roadmap - (9a8989c)

Plans

  • Initial commit - (8f0a55d)
  • Add workspace-reorg.md for 4-crate split proposal - (61f2ea4)
  • Add dns,ipv6,testing plans - (e5abc74)
  • Restructure plan management system - (d6f9279)
  • Update dns plan - (82f3e28)
  • Add new-api plan - (af9858d)
  • Mark new-api complete, update ipv6 plan for new API - (0dc7bc8)
  • Mark ipv6 plan complete - (b89f3f4)
  • Rewrite DNS plan focused on Rust API hosts-file overlay - (966d38e)
  • Mark DNS phase 1 as complete - (7e230c9)
  • Add real-world-conditions, virtual-time, update PLAN.md - (8d29f0f)
  • Mark region routing complete, update real-world-conditions checklist - (092397f)
  • Mark all real-world-conditions phases complete - (197c9fa)

Rename

  • Netsim → patchbay across entire workspace - (c7d9e44)