
porthole
A port kill switch and service viewer for your terminal, TUI + CLI, project-aware, cross-platform
This release upgrades the TUI settings screen from a static viewer to a full-featured editor. You can now toggle booleans, cycle themes, and modify connection ranges or allow-lists directly within the terminal, with all changes validated inline and persisted explicitly with a save command. 
Version 1.2.0 introduces a dedicated settings screen to the TUI, accessible via the 'S' key. This view provides a clear, readable summary of all configurations currently loaded from your ~/.porthole.yaml file, making it much easier to verify your active settings at a glance. 
You can now view your active configuration directly within the application by pressing 'S'. This addresses the difficulty of auditing complex settings like port ranges, auto-kill lists, and display filters which were previously only visible by manually inspecting the YAML file. The new settings view is fully unit-tested to ensure all config values are rendered accurately. 
This release introduces configurable defaults, allowing you to customize display filters, themes, and interval timings via ~/.porthole.yaml. New display filters enable you to hide system processes or privileged ports from your views, and a global --all flag (or a in the TUI) makes it simple to toggle these filters on the fly. These enhancements provide more control over your terminal environment, ensuring you see only the services that matter most to your current workflow. 
We've added a centralized configuration system that reads from ~/.porthole.yaml, allowing you to persist preferences for display filters, themes, animations, and polling intervals. This update replaces previous hardcoded defaults with configurable settings and includes validation logic to ensure safe runtime behavior. Users can now easily toggle system processes, adjust port ranges for safety, and customize their TUI experience, with full support for overriding these via CLI flags or the new 'a' keybinding. 
This release fixes a TUI rendering issue by enabling the alternate screen buffer, which prevents table drawing from garbling the shell prompt. Additionally, we have added comprehensive architecture documentation and practical usage examples to help contributors and users better understand the system. 
We've enabled an alternate screen buffer in the TUI to fix persistent rendering issues. This ensures that fixed-height tables display correctly without misalignments or overflow problems during navigation, leading to a much cleaner user experience. 
We've added comprehensive ARCHITECTURE.md and EXAMPLES.md files to provide better insight into the system's core algorithms, data flow, concurrency models, and testing strategies. The new documentation also includes a practical cookbook covering real-world scenarios like JSON integration, status-bar setups, and automated workflows to help you hit the ground running. Contributing guidelines were also cleaned up to reduce duplication by linking directly to these new technical resources. 
We have significantly improved our project documentation by adding dedicated FAQ, ROADMAP, and SUPPORT files. The new docs provide clarity on safety guarantees, platform support, and upcoming project directions, helping users and contributors better navigate the codebase. This makes the project much easier to adopt and contribute to, while setting clearer expectations for future development. 
This update significantly improves the TUI experience by ensuring the cursor stays within the visible range of the table during navigation, filtering, and terminal resizing. We implemented new logic for calculating visible rows to prevent display overflow and added helper methods to keep the user's current focus clear. This makes the interface much more robust when interacting with larger datasets. 
This marks the v1.0.0 release of porthole, featuring a fully verified and functional GoReleaser configuration. The project's distribution pipelines—including Homebrew formulas and Scoop manifests—have been audited and tested against actual build outputs to ensure correct cross-platform binary generation and packaging. 
Updated .goreleaser.yaml to address breaking changes in GoReleaser v2, migrating from the deprecated 'archives.format' to the new 'formats' list. Additionally performed a full verification build to ensure cross-platform binary production, and corrected the packaging templates for Homebrew and Scoop to align with generated output. This ensures our release pipeline is both syntactically correct and functionally accurate. 
This update introduces significant new functionality including on-demand CPU/memory stats, a local web dashboard for process management, a firewall rule manager, and a safe auto-kill daemon. The auto-kill feature is carefully guarded, requiring explicit enable flags and providing dry-run protections to ensure safety. Additionally, distribution tooling templates have been added to prepare for future releases. 
Porthole has been updated to natively detect and list Docker containers, with the TUI and CLI now clearly identifying container-backed services via specialized glyphs and columns. Container kills are now safely routed through the Docker Engine API to ensure proper container lifecycles rather than signaling host-side proxy processes. These changes, alongside added UDP support and robust history tracking, significantly improve the visibility and management of containerized environments. 
This update significantly improves Windows process introspection by adding support for WOW64 PEB structures, allowing accurate readings for 32-bit processes running on 64-bit systems. We also added new stress tests for the process killing logic to exercise concurrent signal handling and investigate PID reuse scenarios. Finally, Linux process timing is now more robust by dynamically fetching USER_HZ instead of relying on hardcoded values. 
This update wraps up all milestone goals (M1-M5) for Porthole, adding a detailed TUI inspect pane, bulk-kill functionality, and a smart sudo-suggestion banner when services fail to resolve. It also refines the cross-platform project name detection and watch-mode animation, completing the core vision for a high-fidelity local service management tool. 
Users can now press enter on any row in the TUI to open a dedicated detail pane. This view provides comprehensive process metadata—including PID, user, project, cwd, and command line—along with a grouped list of all sockets sharing that PID. The data is snapshotted upon selection to ensure stability while the pane is open, making it much easier to inspect specific process activities. 
Users can now select multiple rows using space and execute a bulk kill using 'k' or 'K'. This update removes the need for individual interactive escalation prompts by implementing sequential auto-escalation, significantly improving efficiency when cleaning up several processes. Selection markers have been added for better visibility, and the system ensures the list stays consistent with a mandatory final rescan. 
We've improved the scanning functionality by integrating project name detection directly into the OS-specific scanners. Each scanner now uses a cached project detector during the listing phase to resolve process working directories to specific project names, such as identifying 'Steam' for steam.exe. Processes that cannot be resolved now gracefully fall back to 'system', resulting in cleaner and more actionable scan output. 
We've overhauled the TUI animation architecture by replacing disjointed timers with a centralized, reliable 60ms tea.Tick loop. This change unifies the streaming-reveal, status line updates, and kill-process animations, while also introducing an injectable clock to enable deterministic testing of UI behavior. We've also resolved a initialization bug and improved the handling of ephemeral status messages, resulting in a much smoother and more robust interface. 