Conversation
Add REPL issues section to TODO, fix ping help text ("Ping a peer"
instead of "Ping the daemon or a peer"), replace specific throughput
numbers with general multi-gigabit language on the website, and
fix stale task reference in async-correctness doc.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Align with the src/dst naming convention used throughout the codebase. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Document the reasoning behind each #[allow(clippy::...)] so future readers understand why the lint is suppressed. Also rename _ocsp → _ocsp_response in TLS verifiers for clarity. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace String error in TryFrom<ProtoNodeRole> with a dedicated NodeRoleError enum for better error handling at call sites. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The parameter is a configuration struct, not command-line arguments. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rename SocketPair/pair variables to SocketSet/set across the exit adapter trait, orchestrator, and response types. Add ExitNodeResponse::new() helper to reduce boilerplate in response construction. Also rename buf → data in tcp_send for semantic clarity. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Match the established src/dst convention used throughout wire, socket_set, entry-stack, and manager (42 existing usages). Renames 14 sites across 5 files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The guard form clippy suggests would require cloning resp (moved into send), so suppress with an explanatory comment. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4 tasks
maxholman
added a commit
that referenced
this pull request
May 6, 2026
Sweep of website/ deps to latest within ranges, plus a vite downgrade from 8 -> 7 to match astro's transitive vite (7.3.2) and avoid a rolldown regression with @tailwindcss/vite 4.2.4. Closes alerts #28 #29 #30 #31 #33 #34 #35 #36 #37 #38 #39 #40 #44 #48 covering vite, picomatch, postcss, yaml, astro, smol-toml. - vite ^8.0.1 -> ^7.3.2 (drops the now-redundant vite 8 lineage; astro pulls 7.3.2 transitively, which is the patched version) - astro 6.0.6 -> 6.2.2 (#44) - @tailwindcss/vite 4.2.2 -> 4.2.4 - smol-toml: lockfile bump to 1.6.1 (#28) - postcss: lockfile bump to 8.5.14 (#48) - picomatch: lockfile bumps to 2.3.2 + 4.0.4 (#29 #30 #39 #40) - yaml is now omitted entirely (it was an optional vite peer) Verified: pnpm build succeeds; no @tailwindcss/vite peer-dep warnings.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Quick wins batch
Scope
A grab-bag of small, self-contained improvements from TODO.md — code quality,
website copy, and minor UX fixes. Each item is independent.
1.
Metricsfield visibilityMake the seven
AtomicU64fields incrates/core/src/control/metrics.rsprivate. The existing
inc_*/dec_*methods are the correct API surface.Impl notes: Only two call sites read fields directly — both in
crates/core/src/control/handler.rs:handle_stats()(line ~101) andmetrics()(line ~286). Add a snapshot/read method toMetricsand use itfrom those two call sites.
2.
TryFrom<ProtoNodeRole>error typeReplace
type Error = Stringincrates/core/src/types.rs(line ~28) with aproper
NodeRoleErrorenum. Only one error case exists:RoleUnknown. Adesign is already sketched in
docs/tasks/10-type-system-improvements.md.3.
ExitNodeResponseconstruction boilerplateAdd a constructor to
ExitNodeResponse(protobuf-generated, defined incrates/wire/proto/data.protolines 136-146). Thepair: Some(…), response: Some(…)pattern is repeated ~20 times acrosscrates/core/src/exit/orchestrator.rsand
crates/exit-adapter/src/adapter.rs. A simplefn new(pair: Option<SocketAddressPair>, response: Response) -> Selfthat wrapsresponsein
Some(…)covers all cases. One test uses..Default::default()— leavethat alone.
4. Website stale benchmark claim
website/src/content/docs/index.mdocline ~30 claims "2.4 Gbps" but theactual benchmark table in
benchmarks.mdocshows TCP maxing at ~1.5 Gbps.Replace with "multi-gigabit" or similar. Also check the packet-loss claim on
line ~32 ("7.7 Mbps" / "17 Mbps") against the benchmark data.
6. Fix "ping the daemon" description
Two locations:
crates/cli/src/repl.rsline ~196:"ping [<peer>]\tPing the daemon or a peer"crates/cli/src/cli.rsline ~31:/// Ping the daemon or a peer.The daemon-ping path (
ipc.rsline ~215) returns status info (uptime, version,role) — that's the
infocommand, not ping. Peer ping returns "not yetimplemented". Fix the help text to say "Ping a peer". No-arg behavior should
auto-select the sole connected peer (the protobuf
PingRequest.peerfieldalready supports empty = auto-select). If zero or multiple peers are connected,
return a clear error.
7. Audit
#[allow(clippy::...)]suppressions33 instances total. Categories:
wire/src/{control,data,management}.rs,cli/src/version.rs,daemon/src/lib.rs— all suppressdoc_markdown/must_use_candidate/needless_raw_string_hashesoninclude!()blocks.Already commented or self-evident. Leave as-is.
too_many_lines(7): All marked// refactor candidate. Leave as-is(out of scope for this task).
cast_possible_truncation(6): Portu32→u16casts from protobuf,millis as u64, ICMP ident. All safe in context. Add brief comments.cast_precision_loss(2):usize as f64for throughput display. Safe.Add brief comments.
missing_errors_doc(2): Crate-level incoreandexit-adapter.Core already has a comment. Add comment to exit-adapter.
module_inception(2):client/mod.rsandserver/mod.rs. Intentionalstructure. Add brief comments.
result_large_err(2):client/ws/mod.rs. Add comments explainingthe error type.
needless_pass_by_value(1):entry-stackconstructor. Alreadycommented. Leave as-is.
struct_excessive_bools(1): CLI flags struct. Already commented.Leave as-is.
socket_set.rscrate-levelcast_possible_truncation(1): Blanketsuppression. Consider narrowing to specific sites or add a module-level
comment.
8. Parameter naming consistency
12 renames across 4 files where minority impls diverge from the established
convention:
pair→set(ExitAdapter trait / mock):crates/core/src/exit/net/adapter.rs:116—tcp_listen(pair → setcrates/core/tests/mock_exit.rs:27—tcp_close(pair → setcrates/core/tests/mock_exit.rs:54—tcp_listen(_pair → _setcrates/core/tests/mock_exit.rs:68—udp_send(_pair → _setcrates/core/tests/mock_exit.rs:77—icmp_session(_pair → _setcrates/core/tests/mock_exit.rs:85—udp_recv_session(_pair → _setcrates/core/tests/mock_exit.rs:92—tcp_recv_session(_pair → _setbuf→data(ExitAdapter::tcp_send trait def):crates/core/src/exit/net/adapter.rs:103—buf → datadst_addr→dest(RxSession::send impls):crates/exit-adapter/src/sessions/tcp.rs:31—_dst_addr → _destcrates/exit-adapter/src/sessions/icmp.rs:88—dst_addr → destargs→config(Client::try_new QUIC impl):crates/core/src/client/quic/mod.rs:70—args → config_ocsp→_ocsp_response(ServerCertVerifier):crates/core/src/tls/verifiers.rs:23—_ocsp → _ocsp_responseOut of scope
Why
Low-risk improvements that tighten the type system, reduce boilerplate, fix
stale docs, and clean up suppressions. All quick to implement and review.
Notes
just checkafter each item