@harry-kp/vortix 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,92 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.6] - 2026-03-08
11
+
12
+ ### Bug Fixes
13
+
14
+ - Fix `pkill openvpn` killing all system OpenVPN processes instead of only Vortix-managed ones ([#95](https://github.com/Harry-kp/vortix/issues/95))
15
+ - Fix kill switch state file written to world-readable `/tmp/` ([#96](https://github.com/Harry-kp/vortix/issues/96))
16
+ - Fix kill switch displaying "Blocking" without root, giving a false sense of security ([#97](https://github.com/Harry-kp/vortix/issues/97))
17
+ - Fix Unicode text input causing panic in text field handlers ([#98](https://github.com/Harry-kp/vortix/issues/98))
18
+ - Add `Drop` impl on `App` to clean up kill switch rules and VPN processes on panic ([#99](https://github.com/Harry-kp/vortix/issues/99))
19
+ - Fix disconnect failure leaving app in "Disconnected" state while VPN process may still be running ([#100](https://github.com/Harry-kp/vortix/issues/100))
20
+ - Fix spurious "VPN dropped" auto-reconnect triggered by force-kill
21
+ - Fix config viewer overlay not loading file contents on open
22
+ - Fix minimum terminal size check causing blank screen on small terminals
23
+ - Fix search and rename cursor position on multi-byte UTF-8 input
24
+ - Fix mouse events passing through overlays to background panels
25
+ - Fix help overlay not being scrollable
26
+ - Fix ISP and location text truncated too aggressively on narrow terminals ([#104](https://github.com/Harry-kp/vortix/issues/104))
27
+ - Fix connection details panel mostly empty when disconnected ([#102](https://github.com/Harry-kp/vortix/issues/102))
28
+ - Fix import overlay closing immediately on URL import or empty directory
29
+ - Fix `g`/`G`/Home/End keys not routing correctly when logs panel is focused
30
+ - Fix mouse scroll not working on hovered panel (only worked on focused panel)
31
+ - Fix profile names overflowing sidebar column when names are long
32
+ - Fix password mask using byte count instead of character count for multi-byte input
33
+ - Enable config viewer overlay to be scrollable with mouse
34
+ - Fix action menus not listing all available panel actions (Sort, Rename, Filter, Kill Switch)
35
+
36
+ ### Features
37
+
38
+ - Add human-readable connection duration format (e.g., "2h 15m" instead of seconds)
39
+ - Add throughput chart with upload/download speed labels and color legend ([#103](https://github.com/Harry-kp/vortix/issues/103))
40
+ - Add active connection badge (checkmark) next to connected profile in sidebar
41
+ - Clear stale telemetry data on disconnect to avoid showing previous session info
42
+ - Add keyboard accessibility for all panels with Tab/Shift+Tab cycling
43
+ - Add panel-specific keyboard shortcuts displayed in context footer
44
+ - Add log level filtering (Error/Warn/Info) with `f` key
45
+ - Show protocol tag (WG/OVPN) in cockpit header bar when connected
46
+ - Show DNS server provider name (Cloudflare, Google, Quad9) in security panel
47
+ - Add confirmation dialog when switching profiles while connected
48
+ - Add confirmation dialog when quitting with an active VPN connection
49
+ - Add profile sorting (name, protocol, last used) with `s` key
50
+ - Add connection quality thresholds (Poor/Fair/Excellent) based on latency, jitter, and packet loss
51
+ - Move toast notifications from bottom-right to top-right for better visibility
52
+
53
+ ### Refactor
54
+
55
+ - Split 2081-line `dashboard.rs` into 13 focused per-panel modules ([#114](https://github.com/Harry-kp/vortix/issues/114))
56
+ - Extract shared confirmation dialog component to reduce code duplication
57
+ - Adopt `tempfile` crate for panic-safe test cleanup across all 31 test sites ([#116](https://github.com/Harry-kp/vortix/issues/116))
58
+ - Sanitize profile names with strict ASCII-only validation for process management
59
+ - Consolidate confirmation dialog input handling into shared `handle_confirm_keys`
60
+ - Route inline key handlers (rename, search, help, log filter) through Message dispatch for TEA consistency
61
+
62
+ ### Testing
63
+
64
+ - Enable 6 previously-ignored auth tests to run without root privileges
65
+ - Add 19 new tests covering confirm dialog keys, Home/End panel awareness, profile name sanitization, truncation edge cases, and import overlay behavior
66
+ - Migrate all test temp file creation to `tempfile` crate for automatic cleanup on panic
67
+
68
+ ### CI
69
+
70
+ - Pin Rust 1.91.0 in CI and fix remaining lint issues
71
+
72
+
73
+
74
+ ## [0.1.5] - 2026-02-16
75
+
76
+ ### Bug Fixes
77
+
78
+ - Address PR review feedback for bug report feature
79
+
80
+ ### Documentation
81
+
82
+ - Add roadmap and feature voting links to README
83
+ - Add vortix report and Nix installation to README
84
+ - Rearrange badges, add Nix flake and npm downloads badges
85
+
86
+ ### Features
87
+
88
+ - Add `vortix report` bug report command
89
+
90
+ ### Miscellaneous
91
+
92
+ - **deps:** Bump the rust-minor group with 2 updates ([#40](https://github.com/Harry-kp/vortix/pull/40))
93
+
94
+
95
+
10
96
  ## [0.1.4] - 2026-02-12
11
97
 
12
98
  ### Documentation
@@ -111,5 +197,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
111
197
  - Config files stored with 600 permissions
112
198
  - Root privilege requirement for network interface management
113
199
 
114
- [Unreleased]: https://github.com/Harry-kp/vortix/compare/v0.1.0...HEAD
200
+ [Unreleased]: https://github.com/Harry-kp/vortix/compare/v0.1.6...HEAD
201
+ [0.1.6]: https://github.com/Harry-kp/vortix/compare/v0.1.5...v0.1.6
202
+ [0.1.5]: https://github.com/Harry-kp/vortix/compare/v0.1.4...v0.1.5
203
+ [0.1.4]: https://github.com/Harry-kp/vortix/compare/v0.1.3...v0.1.4
204
+ [0.1.3]: https://github.com/Harry-kp/vortix/compare/v0.1.2...v0.1.3
205
+ [0.1.2]: https://github.com/Harry-kp/vortix/compare/v0.1.1...v0.1.2
206
+ [0.1.1]: https://github.com/Harry-kp/vortix/compare/v0.1.0...v0.1.1
115
207
  [0.1.0]: https://github.com/Harry-kp/vortix/releases/tag/v0.1.0
package/README.md CHANGED
@@ -1,17 +1,19 @@
1
1
  # Vortix
2
2
 
3
- [![Crates.io](https://img.shields.io/crates/v/vortix.svg)](https://crates.io/crates/vortix)
4
- [![Downloads](https://img.shields.io/crates/d/vortix.svg)](https://crates.io/crates/vortix)
5
3
  [![CI](https://github.com/Harry-kp/vortix/actions/workflows/ci.yml/badge.svg)](https://github.com/Harry-kp/vortix/actions/workflows/ci.yml)
6
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
5
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)
6
+ [![Crates.io](https://img.shields.io/crates/v/vortix.svg)](https://crates.io/crates/vortix)
7
+ [![Crates.io Downloads](https://img.shields.io/crates/d/vortix.svg)](https://crates.io/crates/vortix)
8
+ [![npm](https://img.shields.io/npm/v/@harry-kp/vortix?logo=npm)](https://www.npmjs.com/package/@harry-kp/vortix)
9
+ [![npm Downloads](https://img.shields.io/npm/dm/@harry-kp/vortix?label=npm%20downloads)](https://www.npmjs.com/package/@harry-kp/vortix)
10
+ [![Homebrew](https://img.shields.io/badge/Homebrew-tap-orange?logo=homebrew)](https://github.com/Harry-kp/homebrew-tap)
11
+ [![Nix Flake](https://img.shields.io/badge/Nix-flake-blue?logo=nixos)](https://github.com/Harry-kp/vortix#installation)
7
12
  [![macOS](https://img.shields.io/badge/macOS-000000?logo=apple&logoColor=white)](https://github.com/Harry-kp/vortix)
8
13
  [![Linux](https://img.shields.io/badge/Linux-FCC624?logo=linux&logoColor=black)](https://github.com/Harry-kp/vortix)
9
14
  [![Rust](https://img.shields.io/badge/Rust-1.75+-orange?logo=rust)](https://www.rust-lang.org/)
10
- [![GitHub Sponsors](https://img.shields.io/github/sponsors/Harry-kp?logo=github)](https://github.com/sponsors/Harry-kp)
11
- [![Homebrew](https://img.shields.io/badge/Homebrew-tap-orange?logo=homebrew)](https://github.com/Harry-kp/homebrew-tap)
12
- [![npm](https://img.shields.io/npm/v/@harry-kp/vortix?logo=npm)](https://www.npmjs.com/package/@harry-kp/vortix)
13
- [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)
14
15
  [![GitHub Stars](https://img.shields.io/github/stars/Harry-kp/vortix?style=social)](https://github.com/Harry-kp/vortix)
16
+ [![GitHub Sponsors](https://img.shields.io/github/sponsors/Harry-kp?logo=github)](https://github.com/sponsors/Harry-kp)
15
17
 
16
18
  Terminal UI for WireGuard and OpenVPN with real-time telemetry and leak guarding.
17
19
 
@@ -118,6 +120,12 @@ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Harry-kp/vortix/release
118
120
 
119
121
  Download the `x86_64-unknown-linux-musl` release from the [releases page](https://github.com/Harry-kp/vortix/releases). This is a statically linked binary (no glibc needed), but you still need the runtime dependencies above (curl, openvpn/wireguard-tools, etc.).
120
122
 
123
+ **Nix (flakes):**
124
+ ```bash
125
+ nix run github:Harry-kp/vortix # Run without installing
126
+ nix profile install github:Harry-kp/vortix # Install to profile
127
+ ```
128
+
121
129
  **From source:**
122
130
  ```bash
123
131
  git clone https://github.com/Harry-kp/vortix.git
@@ -143,6 +151,7 @@ After this, `sudo vortix` works as expected.
143
151
  - `pacman -S vortix` (Arch) — **no**, installs to `/usr/bin/`
144
152
  - `brew install` (Homebrew) — **no**, installs to Homebrew prefix
145
153
  - `npm install -g` (npm) — **no**, installs to npm global bin
154
+ - Nix (`nix profile install`) — **no**, installs to Nix profile bin
146
155
  - macOS — **no**, sudo preserves user PATH
147
156
 
148
157
  ## Usage
@@ -152,6 +161,7 @@ sudo vortix # Launch TUI (requires root for VPN operations)
152
161
  vortix import <file> # Import a .conf or .ovpn profile
153
162
  vortix info # Show config directory and version
154
163
  vortix update # Self-update to latest release
164
+ vortix report # Generate a bug report with system diagnostics
155
165
  ```
156
166
 
157
167
  ### Keybindings
@@ -326,6 +336,10 @@ If config files are owned by root, fix ownership:
326
336
  sudo chown -R $(whoami) ~/.config/vortix/
327
337
  ```
328
338
 
339
+ ## Roadmap
340
+
341
+ See the [project board](https://github.com/users/Harry-kp/projects/6) for what's being explored. Have an idea? [Join the discussion](https://github.com/Harry-kp/vortix/discussions/34).
342
+
329
343
  ## Development
330
344
 
331
345
  ```bash
@@ -334,8 +348,17 @@ cargo test # Run unit/integration tests
334
348
  cargo clippy # Enforce code quality (Fail-fast via pre-commit)
335
349
  ```
336
350
 
351
+ **Nix users** can enter a development shell with all Rust tooling pre-configured:
352
+ ```bash
353
+ nix develop
354
+ ```
355
+
337
356
  ## Featured In
338
357
 
358
+ - [awesome-rust](https://github.com/rust-unofficial/awesome-rust) — A curated list of Rust code and resources
359
+ - [awesome-ratatui](https://github.com/ratatui/awesome-ratatui) — A curated list of Ratatui apps and tools
360
+ - [awesome-tuis](https://github.com/rothgar/awesome-tuis) — A list of the best TUI programs
361
+ - [Arch Linux [extra]](https://archlinux.org/packages/extra/x86_64/vortix/) — Official Arch Linux package repository
339
362
  - [Terminal Trove](https://terminaltrove.com/vortix/) — The $HOME of all things in the terminal
340
363
 
341
364
  ## Star History
@@ -23,7 +23,7 @@
23
23
  "hasInstallScript": true,
24
24
  "license": "MIT",
25
25
  "name": "@harry-kp/vortix",
26
- "version": "0.1.4"
26
+ "version": "0.1.6"
27
27
  },
28
28
  "node_modules/@isaacs/balanced-match": {
29
29
  "engines": {
@@ -515,5 +515,5 @@
515
515
  }
516
516
  },
517
517
  "requires": true,
518
- "version": "0.1.4"
518
+ "version": "0.1.6"
519
519
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "artifactDownloadUrl": "https://github.com/Harry-kp/vortix/releases/download/v0.1.4",
2
+ "artifactDownloadUrl": "https://github.com/Harry-kp/vortix/releases/download/v0.1.6",
3
3
  "author": "Harry KP <harrykp@users.noreply.github.com>",
4
4
  "bin": {
5
5
  "vortix": "run-vortix.js"
@@ -100,7 +100,7 @@
100
100
  "zipExt": ".tar.xz"
101
101
  }
102
102
  },
103
- "version": "0.1.4",
103
+ "version": "0.1.6",
104
104
  "volta": {
105
105
  "node": "18.14.1",
106
106
  "npm": "9.5.0"