Revision history for Chandra

0.04  2026-03-29
    - Chandra::Socket::Hub - IPC server with Unix domain socket and TCP transport
    - Chandra::Socket::Client - IPC client with auto-reconnect and request/response
    - Chandra::Socket::Connection - length-prefixed JSON wire protocol
    - App: hub(), client() methods with integrated poll loop
    - Channel-based message routing, broadcast, send_to
    - on_connect/on_disconnect lifecycle hooks
    - Security: token-based handshake authentication
    - Security: socket path in $XDG_RUNTIME_DIR with 0600 permissions
    - Security: token file (0600) written alongside socket for client auth
    - Security: max frame size (16 MB) and buffer overflow protection (64 MB)
    - Security: malformed JSON frame warnings
    - Security: duplicate client name collision handling
    - TCP transport: opt-in TLS via IO::Socket::SSL (tls_cert, tls_key, tls)
    - Examples: socket_ipc_example.pl, chat_hub.pl, chat_window.pl

0.03  2026-03-29
    - Switch from JSON to Cpanel::JSON::XS
    - Add Cpanel::JSON::XS to PREREQ_PM
    - Bail out of Makefile.PL on Linux when GTK/WebKit2 dev libraries are missing

0.02  2026-03-28
    - Chandra::App - high-level OO application wrapper
    - Chandra::Element - Moonshine-compatible DOM builder with render()
    - Event handler compilation (onclick subs → JS wiring)
    - Handler registry with unique IDs
    - Chandra::Bind - function registry + JSON dispatch
    - Chandra::Bridge - JS bridge auto-injection
    - Chandra::Event - event object with accessors
    - Promise-based return values (js_resolve + dispatch_eval_js)
    - set_content, update, alert convenience methods
    - Examples: bind_example, counter_app, element_example
    - Comprehensive test suite (303 tests)

0.01  2026-03-28
    - Initial prototype
    - Basic webview_run() support
    - Event loop control (init/loop/exit)
    - JavaScript evaluation
    - JS -> Perl callback via external.invoke()
    - macOS (Cocoa/WebKit), Linux (GTK/WebKit2), Windows (MSHTML) support
