-
Notifications
You must be signed in to change notification settings - Fork 0
Changelog
lex edited this page May 28, 2026
·
1 revision
-
Interactive setup wizard —
ocular setupor auto-launched when no config exists- 7-step guided flow: mode → protocol → location → address → connectivity → confirm → add more
- Arrow-key navigation with Esc to go back, breadcrumb trail shows progress
- Async TCP connectivity check with protocol-specific troubleshooting hints
- Warns on duplicate remotes in different modes (instead of bailing)
- Config written to
~/.config/ocular/ocular.tomlwith overwrite protection - Pre-spawns proxies after wizard, skips dashboard, enters main TUI directly
-
Help popup in wizard — press
?on mode selection to see ASCII diagram explaining Proxy vs Capture- Shows network topology, port relationships, SSL visibility differences
- Dismiss with
?orEsc
- Wizard help popup screen corruption — clear full screen before/after overlay and toggle raw mode around re-render to prevent layout drift
-
--demoskips dashboard — goes directly to main view with simulated traffic -
Config override —
-c, --config <path>flag to specify config file location -
SUDO_USERconfig fallback — finds user config when running undersudo -
0.0.0.0listen default — CLI proxy listens on all interfaces by default
-
CLI subcommands —
ocular proxy <proto> [host]andocular capture/cap <proto> [host]- Skip the TUI dashboard, output events directly to terminal
- Colored output by default,
--rawfor plain text,--jsonfor JSON (one object per line) - Auto-detect: stdout is TTY → color, pipe → raw
- Default host
127.0.0.1and protocol default port when omitted - Proxy auto-assigns listen port (remote_port + 10000, fallback random)
- Capture auto-detects interface (local → loopback, remote → default NIC)
-
--tui/-tflag — launch minimal TUI preview from CLI subcommands- Full TUI features (vim nav, visual select, yank, filter, leader menu)
- No component pane,
qexits directly (no dashboard)
-
--help/-h— colored help with usage, shorthand examples, port/interface docs -
Linux capture mode — libpcap support with
setcap cap_net_raw+eppermissions- Auto-detect default interface via
ip route show default - Platform-specific permission hints in error messages
- Auto-detect default interface via
- Capture status indicator — component pane shows green dot when traffic flows (3s cooldown)
- Periodic TUI redraw — status indicators update without user input (1s tick)
-
Config under sudo —
$HOME/.config/ocularfallback whendirs::config_dir()fails - Empty interface default — TUI proxy form without interface uses platform default (lo0/lo)
-
ProtocolHandler trait extended —
capture_handshake(),message_length(),default_port()- Adding a new protocol no longer requires changes to capture core code
- MySQL handshake detection moved from hardcoded logic to trait method
- MongoDB message boundary detection moved to trait method
-
HandshakeAction enum —
Done/Skip/Completefor generic handshake handling -
Removed duplicate Direction enum — reuse
ocular_protocol::Directionin capture crate -
CLI default_port delegates to
handler.default_port()
- MySQL capture mode — skip multi-round auth handshake (caching_sha2_password)
- MySQL capture buffer — clear unparseable packets (COM_FIELD_LIST) to prevent pollution
- MongoDB capture — discard OP_QUERY/OP_REPLY packets that parser doesn't support
- MongoDB response buffer — drain complete but unparseable responses
- Leader menu in preview — hide irrelevant items (edit config, switch group, panel switch)
-
Passive capture mode — observe traffic without changing app connections (
mode = "capture")- macOS libpcap: supports loopback (
lo0) and Ethernet (en0) interfaces - TCP stream reassembly with per-connection 4-tuple tracking
- Buffers incomplete responses across TCP segments (e.g. large
KEYS *results) - Zero code changes, zero config changes on the application side
- macOS libpcap: supports loopback (
-
Mode selector in proxy form — switch between
proxyandcapturewith ◀ ▶- Capture mode shows
interfacefield (placeholder:lo0) - Proxy mode shows
listenfields as before
- Capture mode shows
- Component pane shows capture interface alongside proxy listen address
- Proxy inspect popup displays capture-specific fields when applicable
- Config validation for capture mode (interface must be non-empty)
- MongoDB response parsing — handle partial OP_MSG headers across TCP segments
- Kafka connection leak — close upstream connection when client disconnects
- TUI component width — truncate long component names with ellipsis
-
Proxy Groups — organize proxies by environment (dev, test, prod)
- Stored as separate files in
~/.config/ocular/group/ - Dashboard for group selection on startup
- Switch groups at any time with
Space→g - Create, rename, edit, delete groups from dashboard
- Stored as separate files in
-
Dashboard UI — landing page with group selector before connecting
- Vim-style navigation, fuzzy search, group CRUD
-
Proxy CRUD from component pane — create (
n), edit (e), delete (d), inspect (i) - Interactive proxy creation — guided form for adding new proxies
-
Hot-reload proxies — add/remove/modify
[[proxy]]entries without restarting -
Component filter — fuzzy search proxies in the component pane (
/) - Event log — configurable persistent event logging to file
Initial releases with core proxy functionality, TUI, Vim keybindings, and protocol support for Redis, MySQL, PostgreSQL, RabbitMQ, MongoDB, Memcached, Kafka, and HTTP/Elasticsearch.