@harry-kp/vortix 0.1.7 → 0.2.0

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,69 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.0] - 2026-03-31
11
+
12
+ ### Added
13
+
14
+ - Add a CLI-first headless mode with structured JSON output for scripting, automation, and AI-agent workflows, including `vortix status` for scriptable connection and kill-switch visibility ([#156](https://github.com/Harry-kp/vortix/issues/156), [#176](https://github.com/Harry-kp/vortix/pull/176)).
15
+ - Add the new flip-panel dashboard interaction with animated card transitions ([#165](https://github.com/Harry-kp/vortix/pull/165)).
16
+
17
+ ### Changed
18
+
19
+ - VPN sessions can now keep running after the TUI or CLI exits, so leaving the interface no longer tears down an active connection unexpectedly ([#155](https://github.com/Harry-kp/vortix/issues/155), [#176](https://github.com/Harry-kp/vortix/pull/176)).
20
+ - Make `vortix down` wait for the OpenVPN daemon to fully exit before reporting success ([#176](https://github.com/Harry-kp/vortix/pull/176)).
21
+
22
+ ### Fixed
23
+
24
+ - Remove the stale quit confirmation now that active connections can continue independently of the UI process ([#179](https://github.com/Harry-kp/vortix/issues/179), [#182](https://github.com/Harry-kp/vortix/pull/182)).
25
+ - Fix help overlay scrolling edge cases, including opening before the first resize and clamping scroll correctly after keyboard and mouse input ([#180](https://github.com/Harry-kp/vortix/issues/180), [#182](https://github.com/Harry-kp/vortix/pull/182)).
26
+ - Harden CLI lifecycle handling around disconnect flow, error paths, and config isolation ([#176](https://github.com/Harry-kp/vortix/pull/176)).
27
+
28
+ ### Documentation
29
+
30
+ - Clarify current Linux support expectations and improve Linux bug-reporting guidance for distro-specific issues ([#185](https://github.com/Harry-kp/vortix/pull/185)).
31
+
32
+ ### CI
33
+
34
+ - Add Fedora 41 CI coverage for `cargo check`, `cargo clippy`, `cargo test`, and `cargo doc`, including unprivileged test execution for Linux-specific validation ([#160](https://github.com/Harry-kp/vortix/issues/160), [#183](https://github.com/Harry-kp/vortix/pull/183)).
35
+
36
+
37
+
38
+ ## [0.1.8] - 2026-03-19
39
+
40
+ ### Features
41
+
42
+ - Add centralized theming system — all colors now flow through `theme.rs`, replacing hardcoded `Color::Rgb` across 13 UI files ([#109](https://github.com/Harry-kp/vortix/issues/109), [#147](https://github.com/Harry-kp/vortix/issues/147))
43
+ - Add mouse click-to-select for profiles in the sidebar ([#139](https://github.com/Harry-kp/vortix/issues/139))
44
+ - Add Wayland clipboard support via `wl-copy`, with `xclip`/`xsel` fallback on X11 ([#107](https://github.com/Harry-kp/vortix/issues/107))
45
+ - Add word-wrapped log messages with accurate scroll using `Paragraph::line_count()` — long OpenVPN errors no longer truncate
46
+
47
+ ### Bug Fixes
48
+
49
+ - Fix OpenVPN error messages not shown in UI — vortix now reads the daemon log file when stderr is empty due to `--daemon --log` ([#154](https://github.com/Harry-kp/vortix/issues/154))
50
+ - Fix footer truncating Help and Quit hints first on narrow terminals — critical hints now have priority, with unicode-aware width calculation ([#134](https://github.com/Harry-kp/vortix/issues/134))
51
+ - Fix cursor style inconsistent across overlays — all text fields now use the same blinking block cursor ([#135](https://github.com/Harry-kp/vortix/issues/135))
52
+ - Fix URL import leaving temp files behind in system temp directory ([#136](https://github.com/Harry-kp/vortix/issues/136))
53
+ - Fix race condition where temp file could be deleted before import completes on TUI URL import
54
+ - Fix clipboard copy reporting success without checking the tool's exit status
55
+ - Fix toast messages logged at wrong severity level (e.g., connection failures logged as INFO instead of ERROR)
56
+
57
+ ### Refactor
58
+
59
+ - Generalize `centered_rect` helper to support both percentage-based and fixed-size centering, removing duplicate code ([#123](https://github.com/Harry-kp/vortix/issues/123))
60
+ - Eliminate per-frame `String` allocations in footer hint rendering
61
+
62
+ ### Testing
63
+
64
+ - Add unit tests for rename-profile path traversal validation with rejection assertions ([#137](https://github.com/Harry-kp/vortix/issues/137))
65
+ - Add unit tests for `cleanup_temp_download`, footer hint width calculations, `centered_rect` variants, and theme alias consistency
66
+
67
+ ### Miscellaneous
68
+
69
+ - **deps:** Bump the rust-minor group with 2 updates ([#152](https://github.com/Harry-kp/vortix/pull/152))
70
+
71
+
72
+
10
73
  ## [0.1.7] - 2026-03-11
11
74
 
12
75
  ### Bug Fixes
package/README.md CHANGED
@@ -49,6 +49,14 @@ Existing options (`wg show`, NetworkManager, Tunnelblick) either lack real-time
49
49
  - **Config Viewer** — Inspect profile configurations directly within the TUI
50
50
  - **Keyboard-driven** — No mouse required
51
51
 
52
+ ## Platform Support
53
+
54
+ Vortix is actively developed and used primarily on macOS.
55
+
56
+ Linux support is a current focus and is improving quickly, with CI coverage for Ubuntu and Fedora. Linux environments still vary a lot across distributions, firewall backends, DNS tooling, and privilege models, so distro-specific issues may still exist.
57
+
58
+ If you use Vortix on Linux and hit a problem, please open an issue and include `vortix report` output when possible. Ubuntu, Fedora, and Arch users are especially helpful when testing release candidates and validating fixes before release. If you want to help test Linux support, join the [Linux tester discussion](https://github.com/Harry-kp/vortix/discussions/184).
59
+
52
60
  ## Requirements
53
61
 
54
62
  ### Runtime dependencies
@@ -154,16 +162,88 @@ After this, `sudo vortix` works as expected.
154
162
  - Nix (`nix profile install`) — **no**, installs to Nix profile bin
155
163
  - macOS — **no**, sudo preserves user PATH
156
164
 
165
+ ### Linux support note
166
+
167
+ Most day-to-day development happens on macOS. Linux support is continuously tested in CI, but real-world distro coverage is still growing. If something behaves differently on your Linux setup, please treat that as useful signal and report it rather than assuming it is expected.
168
+
157
169
  ## Usage
158
170
 
171
+ Vortix has two modes: an interactive TUI dashboard (default) and a headless CLI for scripting, automation, and AI agents.
172
+
159
173
  ```bash
160
- sudo vortix # Launch TUI (requires root for VPN operations)
161
- vortix import <file> # Import a .conf or .ovpn profile
162
- vortix info # Show config directory and version
163
- vortix update # Self-update to latest release
164
- vortix report # Generate a bug report with system diagnostics
174
+ sudo vortix # Launch TUI dashboard (default)
165
175
  ```
166
176
 
177
+ ### CLI Commands
178
+
179
+ Every subcommand supports `--json` for machine-readable output and `--quiet` for silent operation (exit code only).
180
+
181
+ **Connection:**
182
+ ```bash
183
+ sudo vortix up work-vpn # Connect to a profile
184
+ sudo vortix down # Disconnect (graceful)
185
+ sudo vortix down --force # Force-disconnect (SIGKILL)
186
+ sudo vortix reconnect # Reconnect to last used profile
187
+ vortix status # Show connection state + telemetry
188
+ vortix status --brief # One-line: "● Connected to work-vpn"
189
+ vortix status --watch # Live updates every 2s
190
+ vortix status --watch --json # NDJSON stream for monitoring
191
+ ```
192
+
193
+ **Profile Management:**
194
+ ```bash
195
+ vortix list # List all imported profiles
196
+ vortix list --names-only # Profile names for scripting
197
+ vortix list --sort last-used # Most recently used first
198
+ vortix import ./work.conf # Import a WireGuard profile
199
+ vortix import ./configs/ # Bulk import from directory
200
+ vortix show work-vpn # Display profile configuration
201
+ vortix show work-vpn --raw # Raw config file contents
202
+ vortix delete old-vpn --yes # Delete without confirmation
203
+ vortix rename old-vpn new-vpn # Rename a profile
204
+ ```
205
+
206
+ **Security:**
207
+ ```bash
208
+ sudo vortix killswitch auto # Set kill switch to auto mode
209
+ sudo vortix killswitch always # Always-on kill switch
210
+ vortix killswitch # Show current mode
211
+ sudo vortix release-killswitch # Emergency firewall release
212
+ ```
213
+
214
+ **System:**
215
+ ```bash
216
+ vortix info # Config paths, versions, profile count
217
+ vortix update # Self-update from crates.io
218
+ vortix report # Generate bug report
219
+ vortix completions bash >> ~/.bashrc # Shell completions
220
+ vortix completions zsh > ~/.zfunc/_vortix
221
+ ```
222
+
223
+ **JSON output for AI agents / scripts:**
224
+ ```bash
225
+ # Structured JSON envelope on every command
226
+ vortix status --json
227
+ # {"ok":true,"command":"status","data":{...},"next_actions":[...]}
228
+
229
+ vortix list --json | jq '.data[].name' # Extract profile names
230
+
231
+ # NDJSON stream for monitoring
232
+ vortix status --watch --json
233
+ ```
234
+
235
+ **Exit codes** are semantic and scriptable:
236
+
237
+ | Code | Meaning |
238
+ |------|---------|
239
+ | 0 | Success |
240
+ | 1 | General error |
241
+ | 2 | Permission denied (needs sudo) |
242
+ | 3 | Not found (profile doesn't exist) |
243
+ | 4 | State conflict (already connected) |
244
+ | 5 | Missing dependency |
245
+ | 6 | Timeout |
246
+
167
247
  ### Keybindings
168
248
 
169
249
  | Key | Action |
@@ -23,7 +23,7 @@
23
23
  "hasInstallScript": true,
24
24
  "license": "MIT",
25
25
  "name": "@harry-kp/vortix",
26
- "version": "0.1.7"
26
+ "version": "0.2.0"
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.7"
518
+ "version": "0.2.0"
519
519
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "artifactDownloadUrl": "https://github.com/Harry-kp/vortix/releases/download/v0.1.7",
2
+ "artifactDownloadUrl": "https://github.com/Harry-kp/vortix/releases/download/v0.2.0",
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.7",
103
+ "version": "0.2.0",
104
104
  "volta": {
105
105
  "node": "18.14.1",
106
106
  "npm": "9.5.0"