feat: v0.3.0 — alerts, firewall, containers, tracing, and fullscreen views#1
Merged
Conversation
…wn ports, fullscreen views Major release adding data enrichment (known ports DB, connection aging, suspicious detector, container awareness, bandwidth estimation), new fullscreen views (chart, topology, process detail, namespaces), action features (firewall quick-block, strace attach, SSH forwarding), new CLI modes (NDJSON streaming, port watch), TOML config with alert rules, ViewMode-based UI architecture with context-sensitive footer and scrollable fullscreen views. Includes code review fixes for container double-wait deadlock, namespace bind-mount resolution, and try_sudo missing retain call. 188 tests, 0 clippy warnings.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
dirs v6 → dirs-sys → option-ext uses MPL-2.0 (weak copyleft, compatible with MIT/Apache-2.0). Also remove unused ISC and Unicode-DFS-2016 entries to silence warnings.
- Expand all 3 READMEs (EN/RU/ZH) with detailed per-feature docs: each feature gets its own section with explanation, usage, and examples - Remove Sparkline History from CHANGELOG (backend exists but UI not wired) - Remove SSH Port Forwarding from CHANGELOG (backend exists but no keybinding) - Update CLAUDE.md: mark history as internal, note forward.rs status - Update CONTRIBUTING.md: remove forward from module list - Update crate READMEs with accurate module descriptions
SSH Port Forwarding (F key): - Input dialog prompts for remote host:port - Creates SSH -L tunnel from selected local port - Active tunnels shown in header bar (⇄ summary) - Health-checked each tick, auto-killed on exit via Drop - Input parser with 7 unit tests Sparkline History removal: - Deleted history.rs (168 lines, 8 tests) — backend was never connected to UI rendering - Removed ConnectionHistory from Session, update_history() calls - Clean removal: no dead code left i18n: added forward_prompt_title, forward_host_label, forward_confirm_hint, hint_forward in all 3 languages Documentation: updated all 8 doc files with forwarding feature, removed history references 188 tests, 0 clippy warnings, fmt clean.
rekurt
pushed a commit
that referenced
this pull request
Jun 12, 2026
…t, model health Auto-reconnect (#1,#2,#3,#8): - Backoff now actually grows for unreachable hosts. The reset was tied to a 'successful' 150ms spawn, which an unreachable host passes (it blocks on TCP timeout), so the delay never increased. Growth now happens on every attempt and is reset only after a tunnel stays Alive for STABLE_THRESHOLD (30s), via refresh_health. - reconnect uses a new non-blocking restart_async() (no 150ms sleep in the render thread); failures are caught on the next tick. Manual restart() stays blocking for immediate feedback. - After MAX_RETRIES attempts without recovery a tunnel is marked permanently failed (auto_reconnect=false); drop_failed() now prunes only those, so 'save' no longer discards a tunnel that's mid-reconnect. auto_reconnect is now a meaningful flag. Listener health in the model (#4,#5): - New TunnelStatus::Unhealthy (process alive, local port not listening). Decision extracted to a pure, unit-tested decide_status(); a HEALTH_GRACE window and a scan_usable flag suppress false 'no listener' right after start and while auto-refresh is paused. cleanup() now takes the listening port set; the view no longer reaches into the scan. Cleanups: - command_string() shell-quotes args via shlex (#6). - uptime column reuses prt-core format_duration (#7). - private from_parts() constructor removes spawn duplication (#9). - cross-reference comments between PROXY_PORTS and known_ports (#10). New unit tests: decide_status, next_backoff, command_string quoting.
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.
Summary
Major v0.3.0 release: 16 new features across monitoring, security,
containers, and navigation — plus critical bug fixes for lsof parsing.
New Features
Monitoring & Alerts
highlight/bellactionsBandwidthTrackerSecurity & Networking
ForwardManagerViews & Navigation
(port, pid)identity across refreshesCLI & Config
--jsonstreaming — NDJSON output, one entry per scan cyclewatchsubcommand — compact UP/DOWN monitor with BEL on changes~/.config/prt/config.tomlfor rules, known ports, overridesBug Fixes
lsof -Foutput never contained"UDP"in the
nfield, so all UDP connections were classified as TCP. AddedPfield to lsof flags and parse protocol explicitly.
TST=LISTENarrives AFTER thenline in lsof-Foutput; parser now buffers address and flushes on fd/process boundary.sort_entrieswas allocating strings on everycomparison; added
OrdtoProtocol/ConnectionStateenums.iface_bind, localizedfmt_kill_sent/fmt_sudo_error, alignedconn_processpadding in ru.rs.arboarddep from prt-core (only used in TUI crate).Breaking Changes
prt-corepublic API significantly expanded. New modules:config,known_ports,core::{alerts, firewall, container, namespace, process_detail, bandwidth, suspicious}.Sessiongained publicconfigand
bandwidthfields.