Revision history for Chandra

0.06  2026-03-29
    - Phase 6: Client-Side Routing (SPA)
    - App: route(), layout(), navigate(), not_found() methods
    - :param route placeholders with pattern matching
    - JS router: intercepts link clicks, pushState history
    - Layout wrapper for shared navigation/chrome
    - Integrates with DevTools, Protocol, HotReload (refresh re-renders current route)
    - Zero behaviour change when no routes registered

0.05  2026-03-30
    - Phase 5: Advanced Features
    - Chandra::Dialog - native file open/save/alert dialogs via webview_dialog()
    - Chandra::Protocol - custom URL scheme handling (app://, myscheme://)
    - XS: dialog(), inject_css(), set_fullscreen(), set_color() bindings
    - App: dialog(), protocol(), inject_css(), fullscreen(), set_color() methods
    - Auto-inject protocol handlers on run() and refresh()
    - Note: system tray and multiple windows not supported by webview-c

0.04  2026-03-30
    - Phase 4: Developer Experience
    - Chandra::Error - centralised error handling with stack traces
    - Chandra::DevTools - in-browser developer panel (Console, Bindings, Elements)
      Toggle with F12 or Ctrl+Shift+I
    - Chandra::HotReload - file watching with stat-based polling
    - App: devtools(), on_error(), watch(), refresh() methods
    - Bind: errors now captured with full stack traces via Chandra::Error
    - Examples: devtools_example.pl, hot_reload_example.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