I also exposed global Lua aliases xchat and hexchat that both point to the zoitechat module table, so existing scripts calling xchat.* or hexchat.* work unchanged.
Added hexchat.py to the Visual Studio Python plugin project item list so it is tracked consistently in the Windows project metadata.
Added hexchat.py to the corresponding .vcxproj.filters entries under Source Files for IDE consistency.
Expanded ignored codepoints during highlight token comparison to include zero-width joiner (U+200D) in addition to variation selectors (U+FE0E/U+FE0F), which helps emoji entered from different input methods still match configured “extra highlight words.”
This logic is used by the alert/highlight matching path (alert_match_word) that compares configured extra words against extracted message tokens.
Added a Python hexchat.py compatibility module and ensured it is installed alongside zoitechat.py/xchat.py, enabling import hexchat scripts to run.
Updated the Perl API layer to support HexChat naming by aliasing HexChat:: to ZoiteChat::, adding EAT_HEXCHAT to exported constants, and adding an explicit Perl shim module HexChat.pm.
Extended Perl XS constant registration to export EAT_HEXCHAT as a compatibility alias, and wired HexChat.pm into the embedded Perl module generation list so it ships with the plugin.
Improved token scanning to use UTF-8-aware character classification (gunichar, g_unichar_isdigit, g_unichar_isalpha) instead of byte-only checks, avoiding split/mis-detection on multibyte characters.
Added a direct find_program() lookup for glib-genmarshal (with glib-genmarshal-2.0 fallback), so configuration no longer depends on the broken glib-2.0 pkg-config tool variable (glib_genmarshal) reported in your error.
Added a new GitHub Actions workflow .github/workflows/manjaro-package-build.yml that:
runs in a manjarolinux/base container,
installs Manjaro packaging/build tooling,
builds via makepkg as a non-root user,
generates .SRCINFO,
runs namcap checks on both PKGBUILD and the built package,
uploads package artifacts plus PKGBUILD/.SRCINFO.
narrowing the GDK include guard to #if defined(HAVE_GTK3), and
removing legacy HAVE_GTK2 / HAVE_GTK toolkit label branches from sysinfo_detect_toolkit(),
narrowing GDK display probing guard in sysinfo_detect_display_backend() to GTK3-only.
Updated Windows and macOS sysinfo backends to remove HAVE_GTK2 / HAVE_GTK fallback labels so sysinfo_detect_toolkit() now returns only "GTK3" (or NULL).
Updated API docs for sysinfo_backend_get_ui() to remove the outdated "GTK2 / X11" example so comments match runtime behavior.
Removed the deprecated Meson option option('gtk3', ... deprecated: true) from meson_options.txt, leaving gtk-frontend/text-frontend options intact.
Removed -Dgtk3=true from Debian’s Meson configure flags in debian/rules (override_dh_auto_configure).
Removed remaining active -Dgtk3=true packaging consumers in Flatpak config:
dropped it from config-opts
dropped -Dgtk3=true from cflags.
Removed -Dgtk3=true from Solus packaging Meson configure args.
Committed changes on the current branch (e018bfd) and created a PR record via the make_pr tool.
Simplified the Windows theme block in fe-gtk.c from a GTK3-conditional compile guard to a direct Windows guard (#ifdef G_OS_WIN32), matching the GTK3-only codebase direction.
Simplified native file chooser guards in gtkutil.c from WIN32 && HAVE_GTK3 to #ifdef WIN32, removing remaining GTK3 compatibility-condition clutter in that file.
Updated bundled runtime config payload from GTK2-style gtkrc to GTK3 settings.ini in the bundle manifest, and added a new osx/settings.ini with Mac theme/key-theme defaults and image settings.
Updated osx/launcher.sh to remove the GTK2-specific GTK2_RC_FILES usage, switch module file paths from gtk-2.0 to gtk-3.0, and add GTK3-appropriate GTK_THEME / GTK_KEY_THEME environment variables for macOS runtime behavior.
Checked the osx/ packaging scripts/manifests for other hardcoded GTK2 identifiers and confirmed none remain in that packaging scope after the migration.
Removed GTK2 compatibility shims from headers (fe-gtk.h, gtkutil.h), leaving direct GTK3-facing declarations/includes only (and platform-specific guards unrelated to GTK2 kept as-is).
Cleaned GTK2-specific comments/wording now that behavior is GTK3-native (menu accelerator note and emoji/userlist comment blocks).
Removed the GTK2 fallback branch in src/fe-gtk/meson.build, so the GTK frontend now always resolves gtk_dep from dependency('gtk+-3.0', version: '>= 3.22') and always defines -DHAVE_GTK3.
Kept AppIndicator logic gated for non-Windows builds and intact in behavior (Ayatana first, then AppIndicator, with error on enabled if neither is found).
Simplified non-Windows GDK X11 probing to always use gdk-x11-3.0, consistent with GTK3-only frontend builds.
Updated src/fe-gtk/meson.build to always resolve gtk_dep from dependency('gtk+-3.0', version: '>= 3.22'), removed the GTK2 fallback branch and -DHAVE_GTK2, and kept AppIndicator detection guarded under host_machine.system() != 'windows' as requested. The GTK X11 helper dep is now unconditionally checked within that same non-Windows block (no gtk3 toggle).
Updated Meson summary output to explicitly report the GTK frontend as GTK+ 3.22+ when enabled, reinforcing that GTK2 builds are no longer expected.
Kept the existing safe behavior intact: paths are only added if they exist and are not already in sys.path, so this broadens compatibility without duplicating entries.
existing sibling fallback (../python)
direct fallback (libdir/python)
AppImage-aware fallbacks under $APPDIR/usr/lib/zoitechat/python and $APPDIR/usr/lib/x86_64-linux-gnu/zoitechat/python.
Added guards so paths are appended only if the directory exists and is not already in sys.path, reducing duplicate/invalid entries while improving robustness across packaging layouts.
Updated AppRun Python environment setup to build PYTHONPATH dynamically from all bundled candidate directories instead of assuming only one path. This should address cases where the Python plugin fails to initialize in the AppImage due to missing import paths.