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