Skip to content

Changelog

lex edited this page May 28, 2026 · 1 revision

Changelog

v0.13.0 (2026-05-28)

New Features

  • Interactive setup wizardocular setup or 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.toml with 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 ? or Esc

Bug Fixes

  • Wizard help popup screen corruption — clear full screen before/after overlay and toggle raw mode around re-render to prevent layout drift

v0.12.0 (2026-05-28)

New Features

  • --demo skips dashboard — goes directly to main view with simulated traffic
  • Config override-c, --config <path> flag to specify config file location
  • SUDO_USER config fallback — finds user config when running under sudo
  • 0.0.0.0 listen default — CLI proxy listens on all interfaces by default

v0.11.0 (2026-05-27)

New Features

  • CLI subcommandsocular proxy <proto> [host] and ocular capture/cap <proto> [host]
    • Skip the TUI dashboard, output events directly to terminal
    • Colored output by default, --raw for plain text, --json for JSON (one object per line)
    • Auto-detect: stdout is TTY → color, pipe → raw
    • Default host 127.0.0.1 and 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 / -t flag — launch minimal TUI preview from CLI subcommands
    • Full TUI features (vim nav, visual select, yank, filter, leader menu)
    • No component pane, q exits directly (no dashboard)
  • --help / -h — colored help with usage, shorthand examples, port/interface docs
  • Linux capture mode — libpcap support with setcap cap_net_raw+ep permissions
    • Auto-detect default interface via ip route show default
    • Platform-specific permission hints in error messages

Improvements

  • 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/ocular fallback when dirs::config_dir() fails
  • Empty interface default — TUI proxy form without interface uses platform default (lo0/lo)

Refactoring

  • ProtocolHandler trait extendedcapture_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 enumDone / Skip / Complete for generic handshake handling
  • Removed duplicate Direction enum — reuse ocular_protocol::Direction in capture crate
  • CLI default_port delegates to handler.default_port()

Bug Fixes

  • 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)

v0.10.0 (2026-05-26)

New Features

  • 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
  • Mode selector in proxy form — switch between proxy and capture with ◀ ▶
    • Capture mode shows interface field (placeholder: lo0)
    • Proxy mode shows listen fields as before

Improvements

  • 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)

Bug Fixes

  • 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

v0.9.0 (2026-05-25)

New Features

  • 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 Spaceg
    • Create, rename, edit, delete groups from dashboard
  • 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

Improvements

  • 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

v0.8.0 and earlier

Initial releases with core proxy functionality, TUI, Vim keybindings, and protocol support for Redis, MySQL, PostgreSQL, RabbitMQ, MongoDB, Memcached, Kafka, and HTTP/Elasticsearch.

Clone this wiki locally