Chandra
view release on metacpan or search on metacpan
#include "include/chandra/chandra_devtools.h"
#include "include/chandra/chandra_internal.h"
#include "include/chandra/chandra_socket_common.h"
#include "include/chandra/chandra_socket_token.h"
#include "include/chandra/chandra_socket_hub.h"
#include "include/chandra/chandra_socket_client.h"
#include "include/chandra/chandra_notify.h"
#include "include/chandra/chandra_store.h"
#include "include/chandra/chandra_log.h"
#include "include/chandra/chandra_assets.h"
#include "include/chandra/chandra_clipboard.h"
#include "include/chandra/chandra_contextmenu.h"
#include "include/chandra/chandra_window.h"
#include "include/chandra/chandra_splash.h"
#include "include/chandra/chandra_form.h"
#include "include/chandra/chandra_bridge_ext.h"
#include "include/chandra/chandra_canvas.h"
/* Window registry - maps native wid to Perl SV* objects */
static HV *_window_registry = NULL;
static IV _window_id_counter = 0;
INCLUDE: xs/shortcut.xs
INCLUDE: xs/socket_connection.xs
INCLUDE: xs/socket_token.xs
INCLUDE: xs/socket_hub.xs
INCLUDE: xs/socket_client.xs
INCLUDE: xs/app.xs
INCLUDE: xs/assets.xs
INCLUDE: xs/clipboard.xs
INCLUDE: xs/dragdrop.xs
INCLUDE: xs/contextmenu.xs
INCLUDE: xs/store.xs
INCLUDE: xs/log.xs
INCLUDE: xs/window.xs
INCLUDE: xs/splash.xs
INCLUDE: xs/form.xs
INCLUDE: xs/canvas.xs
INCLUDE: xs/toast.xs
INCLUDE: xs/modal.xs
- Page reload recovery via WKUserScript + on_reload callback
- Bridge JS re-injection on reload (window.chandra restored)
- $app->on_reload(sub { ... }) for re-mounting components after reload
- Fix Linux notification shell escaping (single quotes properly escaped)
- Bridge extension circular dependency detection with extension names in error
- Canvas batch rendering wrapped in requestAnimationFrame for vsync
- Windows Pack: Authenticode signing via signtool (sign_cert/sign_password)
- Windows notifications: Shell_NotifyIcon balloon tips (replaces MessageBox)
0.23 2026-04-16
- Fix t/47_clipboard.t test for empty string on FreeBSD/headless systems
- Empty clipboard behavior is now platform-tolerant (undef or empty allowed)
- Fix t/63_pack.t path separator comparison on Windows
- Fix t/26_socket.t plan mismatch on Windows (use done_testing instead of fixed plan)
- Skip Unix socket Hub/Client tests on Windows
- Adds Chandra::Canvas
0.22 2026-04-11
- make manifest to include edge header
0.21 2026-04-11
- Add Edge/WebView2 backend for Windows (Chromium-based rendering)
0.20 2026-04-09
- Update deps - bump min version of File::Raw to 0.08 to get file_join
- Make tests environment agnostic
0.19 2026-04-08
- Add Chandra::Pack - Bundle Chandra apps into distributable packages
0.18 2026-04-08
- Add Chandra::Bridge::Extension - register custom JS modules on window.chandra
- Add App->extend_bridge() convenience method
- Fix clipboard test on FreeBSD: tolerate undef from get_text after set_text('')
0.17 2026-04-07
- Add Chandra::Form - HTML Form helpers with two-way binding for Chandra applications
- Auto-detect any installed webkit2gtk version via pkg-config
- Fix splash test skip on headless Linux (probe with Window not Splash)
0.16 2026-04-07
- Fix Win32 builds: gettimeofday/localtime_r/flock/urandom portability
- Fix headless Linux test failures to satisfy cpantesters
- More test fixes for Strawberry Perl
- Makefile fix for darwin intel arch
0.14 2026-04-06
- Add Chandra::ContextMenu - Context menus for Chandra applications
- A few more fixes to try and get Strawberry to build
0.13 2026-04-05
- Add Chandra::Window - Multi-window management
- Add Chandra::Assets - Asset bundling and resource loading for Chandra apps
- Add Chandra::Clipboard - System clipboard access (text, HTML, images)
- Add Chandra::DragDrop - File drops, text drops, intra-app drag and drop
- Auto-detect headless environments in Makefile.PL for CPAN Testers
- Fix Windows/Strawberry Perl builds (MULTIPLICITY-safe Win32 APIs)
0.12 2026-04-04
- Add Chandra::Store - Persistent key-value storage for Chandra apps
0.10 2026-04-02
- Add Chandra::Shortcut - keyboard shortcuts and global hotkeys
Chandra.xs
Changes
examples/assets_example.pl
examples/assets_mount_example.pl
examples/bind_example.pl
examples/bridge_extension_example.pl
examples/canvas_demo.pl
examples/chat_hub.pl
examples/chat_window.pl
examples/clipboard_example.pl
examples/contextmenu_example.pl
examples/counter.pl
examples/counter_app.pl
examples/devtools_example.pl
examples/dialog_example.pl
examples/dragdrop_example.pl
examples/element_example.pl
examples/form_example.pl
examples/hot_reload_content.html
examples/hot_reload_example.pl
examples/splash_example.pl
examples/splash_simple.pl
examples/store_example.pl
examples/table.pl
examples/tray_example.pl
include/chandra/chandra.h
include/chandra/chandra_assets.h
include/chandra/chandra_bind.h
include/chandra/chandra_bridge_ext.h
include/chandra/chandra_canvas.h
include/chandra/chandra_clipboard.h
include/chandra/chandra_contextmenu.h
include/chandra/chandra_devtools.h
include/chandra/chandra_element.h
include/chandra/chandra_error.h
include/chandra/chandra_form.h
include/chandra/chandra_internal.h
include/chandra/chandra_log.h
include/chandra/chandra_notify.h
include/chandra/chandra_socket_client.h
include/chandra/chandra_socket_common.h
t/37_css_js.t
t/38_notify.t
t/39_shortcut.t
t/40_shortcut_edge.t
t/41_store.t
t/42_store_edge.t
t/43_window.t
t/44_window_edge.t
t/45_assets.t
t/46_assets_edge.t
t/47_clipboard.t
t/48_clipboard_edge.t
t/49_dragdrop.t
t/50_dragdrop_edge.t
t/51_contextmenu.t
t/52_contextmenu_edge.t
t/53_canvas.t
t/54_canvas_paths.t
t/57_log.t
t/58_log_edge.t
t/59_form.t
t/60_form_edge.t
t/79_validation.t
t/80_nav.t
t/lib/Chandra/Test/Display.pm
typemap
xs/app.xs
xs/assets.xs
xs/bind.xs
xs/bridge.xs
xs/bridge_extension.xs
xs/canvas.xs
xs/clipboard.xs
xs/contextmenu.xs
xs/core.xs
xs/devtools.xs
xs/dialog.xs
xs/dragdrop.xs
xs/element.xs
xs/error.xs
xs/event.xs
xs/form.xs
xs/hotreload.xs
examples/clipboard_example.pl view on Meta::CPAN
# Clear
Chandra::Clipboard->clear;
print "Clipboard cleared.\n";
print "Has text after clear: ", Chandra::Clipboard->has_text ? 'yes' : 'no', "\n";
# Integration with Chandra::App (commented - requires running app)
# use Chandra::App;
# my $app = Chandra::App->new(title => 'Clipboard Demo');
# $app->bind('copy', sub {
# my ($text) = @_;
# $app->clipboard->set_text($text);
# });
# $app->bind('paste', sub {
# return $app->clipboard->get_text;
# });
( run in 1.204 second using v1.01-cache-2.11-cpan-84e82930d8c )