-
Automatic Port Sync
Detects the current VPN port and updates the BitTorrent client's listening port automatically. Supports qBittorrent (Web API), Transmission (RPC), and Deluge (Web JSON-RPC).
-
Sync on Network Change
In addition to the scheduled interval, qbPortWeaver can run a sync the moment a network or VPN connection change is detected, so the client follows a VPN reconnect within seconds instead of waiting for the next cycle. Rapid changes are coalesced into a single sync, and pausing still suppresses it. Enabled by default; configurable via Settings > General.
-
Multi-VPN Support
Supports ProtonVPN (via log file parsing or NAT-PMP), Private Internet Access (via piactl CLI), and any NAT-PMP capable VPN gateway or router (via RFC 6886 UDP port mapping). Configurable through the Settings dialog.
-
Default Port Fallback
When VPN is not connected, optionally sets the client's listening port to a configured default. Useful if you have a port forwarded in your router for direct connections without VPN.
-
Restart After Port Change
Optionally restart the BitTorrent client after updating the port to ensure changes take effect immediately.
-
Force Start
Optionally launch the BitTorrent client automatically if it is not running.
-
Restart on Disconnect (qBittorrent only)
Optionally restart qBittorrent when its connection status changes to disconnected. Requires the Executable and Process name to be configured.
-
Port Verification
After each sync, optionally checks that the listening port is actually reachable from the Internet - not just configured. Runs after a port change and periodically (every 5th cycle); a closed result is confirmed on the next cycle before a warning is logged and a tray notification is shown. Transmission and Deluge use their built-in online port checkers; qBittorrent infers reachability from incoming connections, so an idle client may report closed. Enabled by default.
-
Pause and Resume Syncing
A Pause Syncing item in the tray menu temporarily stops sync cycles (including Media Manager imports) without changing any settings. While paused, Sync Port Now still runs a single cycle on demand. Syncing always resumes when the application restarts.
-
VPN Interface Mismatch Warning (qBittorrent only)
Shows a tray balloon tip and logs a warning if qBittorrent's network interface does not match the configured VPN provider, or if qBittorrent is bound to all interfaces (which may cause traffic leaks).
-
Port Update Notification
Optionally shows a tray balloon tip when the BitTorrent client's listening port is successfully updated to a new value. Enabled by default. Configurable via Settings > General.
-
Log Alert Notifications
When a warning or error is logged, a one-shot tray balloon appears; clicking it opens the log viewer at the latest issue. The Show Logs item and the tray tooltip show a running warning/error count, which clears when you open the log viewer or clear the logs.
-
Auto-Recovery
After a configurable number of consecutive failed cycles (VPN disconnected, or connected but no port assigned), recovery runs through a lightweight helper service (qbPortWeaverHelper, LocalSystem, no UAC): for ProtonVPN/PIA it restarts the VPN service and client; for a generic NAT-PMP gateway it cycles the adapter via netsh. Recovery is also held until the failures have persisted long enough, so a brief blip raced through by network-change re-syncs does not force a restart. A second, independent trigger runs the same recovery when port verification confirms the port closed for a set number of checks (on by default; requires Verify port after sync); it fires once and re-arms only when the port tests open again. Use with care on qBittorrent, where an idle client can report closed indefinitely. A Test button next to the Auto-recovery settings runs the recovery action on demand (after a confirmation), so the whole chain can be verified before a real failure needs it.
-
Post-Update Command
Optionally run a custom command after a successful port update (fire-and-forget). See SampleSendMail.ps1 for an example of sending an email notification with status details.
-
Media Manager
Imports movie and TV episode files into Plex-compatible library folders each cycle, using TMDB for titles and years and Plex naming (Title (Year).ext, Show (Year) - SxxExx.ext, multi-episode SxxExxExx) via hardlink (falling back to copy across volumes), copy, or move. Beyond the SxxExx pattern, episodes in season subfolders with numbered filenames (Show/Season N/01-Title.mp4) are recognised too (English, French, Spanish, and Italian season indicators). It can create Plex subfolders (Movies/Title (Year)/, TV Shows/Show (Year)/Season XX/) and delete emptied source folders (including .nfo-only ones).
A dedicated Media Manager dialog (tray menu → Media Manager) configures source and library folders, previews imports (Scan Now), and applies or corrects them (Import Now), highlighting uncertain TMDB matches. A free TMDB API key is required.
-
Tray Icon Interface
Runs quietly in the background with a system tray icon for quick access to logs, settings, and controls.
-
Tray Status Indicator
After each sync cycle the tray icon shows a colored status dot: green (ports aligned), orange (VPN not connected), red (error), gray (sync paused), or no dot (port sync disabled). Hovering over the icon displays the current port and status, and an unviewed log count if warnings or errors have occurred (e.g. "2 Warnings, 1 Error").
-
Status Panel
A Status window (tray menu → Show Status, or double-click the tray icon) shows the live sync chain at a glance: VPN provider and connection, forwarded port, client and whether it is running, listening port (with an in-sync indicator), reachability (with how long ago it was last checked), the last sync time and result, and an estimate of the next sync. Color accents flag anything out of sync, closed, or in error. A Recent Port Changes list shows the latest port assignments, confirmed-closed results, and auto-recovery actions with timestamps, kept across restarts (right-click the list to clear it); port changes note their cause when a network change or a recovery prompted them. A Statistics section summarizes stability at a glance: the current port, how many times it changed today, and this session's sync and recovery counts (right-click the section to reset the session counters). The panel refreshes after each cycle and updates its live timers every second. A Sync Now button runs an immediate cycle, Pause/Resume stops or restarts automatic cycles (the same toggle as the tray menu), Test Port checks reachability on demand, and Run Diagnostics health-checks the whole chain.
-
Diagnostics
A Run Diagnostics action (Status panel and tray menu) runs a read-only health check across the whole sync chain and shows a pass/warning/fail checklist with a fix hint for each step: configuration, helper service, VPN connection and forwarded port, client running and reachable, ports in sync, interface binding, and outside reachability. Re-run refreshes it and Copy Report puts the results on the clipboard for a support request. It never changes the port or restarts anything.
-
Settings Dialog
All configuration options are editable through a dedicated Settings form (tray menu → Settings), organised into General, Client, and Extra tabs, with inline descriptions and tooltips for each option. A Detect button on the General tab finds a running or installed client (qBittorrent, Transmission, or Deluge) and fills in its selection and process details, asking you to choose when more than one is found.
-
Connection Test
Each client section in Settings has a Test button next to the URL. It checks the connection to qBittorrent, Transmission, or Deluge using the values currently entered (no need to save first), then reports success along with the current listening port, or points you to the log if it cannot connect.
-
Log Viewer
Built-in log viewer (tray menu → Show Logs) displays the log file with color-coded entries by level (error, warn, info, debug) and follows new entries in real time. Includes a search bar with match highlighting and prev/next navigation, dedicated prev/next buttons to step between warnings and errors without affecting the search, toggle buttons to filter by log level, a subsystem filter to isolate entries from a specific component, and a file picker to browse rotated backup files. The view is virtualized, so filters apply instantly and scrolling stays smooth even on very large logs, and the viewer keeps a low, steady memory footprint when left open for days. Adapts to the application color theme (System, Dark, or Light).
-
Consistent Theming
All windows - Settings, Status, Diagnostics, the log viewer, Media Manager, and the tray menu - follow your chosen color theme (System, Dark, or Light) uniformly, using the native Windows colors so text and surfaces stay legible in both light and dark mode.
-
Logging
Logs all operations and errors, with automatic log size management (20 MB per file, up to 5 files total). Clear logs directly from the tray menu.
-
Last-Run Status File
Writes a JSON status file (%LocalAppData%\qbPortWeaver\qbPortWeaver.status.json) after each sync cycle, exposing VPN port, client port, timestamps, and completion status for external scripts.
-
Automatic Update Checker & In-App Update
Checks GitHub for new releases on startup and every 12 hours, surfacing a newer version via an Update available (X.Y.Z) tray item and tooltip (the 12-hour check is non-intrusive; the startup form can be turned off under Settings > General). A Check for Updates item checks on demand and always reports a result. When an update is available, the update window offers Download & Install - it downloads the installer, runs it, and the app relaunches when the update finishes (falling back to the release page if anything goes wrong). The About dialog shows the current and latest version, update status, contributor links, and a What's New button.
-
Built-in User Guide
A Help item in the tray menu opens this user guide in a built-in viewer with a browsable table of contents, text search (Ctrl+F with match navigation), formatted headings, tables, and clickable links - no browser or internet connection needed.
-
Startup Option
Allows enabling or disabling automatic startup with Windows.