638 Commits

Author SHA1 Message Date
deepend-tildeclub
7a4f744093 Delete .github/workflows/openbsd-build.yml 2026-02-22 09:23:04 -07:00
0e5d7dfb9f Updated the macOS CI staging steps (both arm64 and x86_64 jobs) to stage locales under "$STAGE_PREFIX/share/locale/" by creating "$STAGE_PREFIX/share" and syncing from "$BREW_PREFIX/share/locale/" there, instead of using a top-level "$STAGE_PREFIX/locale" directory.
Updated the gtk-mac-bundler bundle translation roots for both gtk30 and zoitechat to ${prefix}/share/locale (from ${prefix}/locale).
2026-02-19 17:46:27 -07:00
ec875e0709 Updated macOS bundle translation sources to use ${prefix}/locale for both GTK and ZoiteChat catalogs, preventing the bad .../ocale/...-style resolution path caused by prefix/path mismatch during bundling.
Updated both CI macOS staging jobs (arm64 and x86_64) to copy app-installed locale catalogs from $STAGE_PREFIX/share/locale into $STAGE_PREFIX/locale when present, so zoitechat.mo is available to gtk-mac-bundler in the staged tree.
2026-02-19 17:35:13 -07:00
a88eae5318 Updated macOS CI staging (arm64 + x86_64) to copy locales into $STAGE_PREFIX/locale/ (instead of $STAGE_PREFIX/share/locale) so gtk-mac-bundler can resolve gtk30.mo at the path it expects.
Updated both macOS packaging steps to pass BUNDLE_PREFIX with a trailing slash (.../stage/<arch>/).

    Replaced cp -a with rsync -aL when staging enchant so symlinks are dereferenced into the staged tree (avoids Homebrew opt symlink pitfalls).

    Adjusted osx/makebundle.sh to preserve a caller-provided trailing slash when writing the XML default prefix (instead of stripping it), matching the CI fix for malformed x86_64locale path concatenation.
2026-02-19 17:19:05 -07:00
29a35843f1 Fixed macOS bundling prefix serialization in osx/makebundle.sh by removing the forced trailing slash from BUNDLE_PREFIX_XML, so gtk-mac-bundler translation path rebasing no longer produces malformed .../ocale/... paths.
Updated the inline comments to document the exact failure mode and why a slashless <prefix> is required for this code path.
2026-02-19 16:39:38 -07:00
819535679c Fixed macOS bundling prefix rendering by introducing BUNDLE_PREFIX_XML="${BUNDLE_PREFIX%/}/" so the bundle XML always gets a trailing slash, preventing malformed translation paths like .../x86_64locale/... during gtk-mac-bundler translation copy steps.
Kept runtime path checks and enchant defaults based on the original BUNDLE_PREFIX, so only the XML-injected default prefix behavior changed.
2026-02-19 16:30:14 -07:00
1efba4ffdf Fixed the three Perl substitutions in osx/makebundle.sh that remove missing GTK module <binary> entries by changing the regex delimiter from |...| to #...#. This avoids delimiter collisions with | used inside (?:so|dylib), which was causing the CI parse error Unmatched ( in regex. 2026-02-19 14:40:19 -07:00
c2d0e7860c Updated osx/makebundle.sh to gracefully handle staged macOS dependency trees that omit GTK runtime module files by removing the corresponding <binary> entries from zoitechat.bundle before invoking gtk-mac-bundler. This prevents the exact Cannot find source to copy .../immodules/*.so class of failure you hit in CI.
Kept the existing .so/.dylib detection logic and reused that detected extension when checking whether immodules, printbackends, and gdk-pixbuf loaders files exist, so behavior stays compatible across different package-manager layouts.
2026-02-19 14:10:52 -07:00
e45c86249d Updated the macOS bundling script to detect whether staged GTK runtime modules are provided as .so or .dylib, using the current bundle prefix paths for GTK and GDK-Pixbuf. This avoids hard-coding .so assumptions in environments where Homebrew ships .dylib modules.
Added conditional rewrite logic that updates zoitechat.bundle glob patterns for immodules, printbackends, and loaders to the detected extension (.dylib or .so) before running gtk-mac-bundler.
2026-02-19 13:54:50 -07:00
8a166a9824 Fixed the macOS x86_64 CI build pipeline by adding the missing install step (meson install -C build-macos-x86_64) immediately after compilation, so the staged binary exists before makebundle.sh runs. This resolves the Cannot find main binary: .../stage/x86_64/bin/zoitechat packaging failure path. 2026-02-19 13:49:14 -07:00
7ab4b8d2eb Updated the macOS x86_64 GitHub Actions job to use runs-on: macos-15-intel instead of macos-13, which addresses unsupported macOS runner configuration issues. 2026-02-19 13:43:09 -07:00
deepend-tildeclub
29f1ac31ec Update macOS build workflow for arm64 and x86_64
Refactor macOS build workflow to support arm64 and x86_64 architectures. Add steps for staging dependencies and packaging unsigned apps for both architectures.
2026-02-19 13:30:47 -07:00
deepend-tildeclub
b0c1388d45 Enable darwin-arch-sanity-check in macOS build 2026-02-19 12:37:10 -07:00
676e8c7305 Updated the Darwin architecture sanity check in meson.build to consider Meson-provided c_args and c_link_args in addition to CFLAGS/LDFLAGS, so x86_64/universal targeting is detected even when -arch flags are passed via Meson options. This makes the early configure-time guard catch the Homebrew arm64-vs-x86_64 mismatch before the later linker failure you hit.
Kept the existing error behavior intact; only the architecture signal source was expanded (all_cflags / all_ldflags), so the same user-facing failure path now triggers in more real-world universal build setups.
2026-02-19 12:29:21 -07:00
02a0b02f03 Added fs = import('fs') in meson.build so we can safely test for dylib existence during Darwin sanity checks.
Extended the macOS architecture sanity logic to proactively inspect key link-time dependencies (gio, gobject, glib, gmodule, openssl, libcrypto, libintl) with lipo -archs whenever -arch x86_64 is requested, and fail at configure time if any dependency lacks an x86_64 slice.

    Kept the failure messaging actionable so users get an immediate explanation and remediation path (use universal/x86_64 deps, build arm64-only, or disable the check explicitly) instead of hitting late linker undefined symbol errors.
2026-02-19 12:14:21 -07:00
5ce88345ee Updated the macOS CI workflow so the x86_64 Meson configure step explicitly passes -Ddarwin-arch-sanity-check=false, preventing the architecture sanity guard from aborting that leg when dependencies are discovered via /opt/homebrew in GitHub-hosted macOS runners. 2026-02-19 12:07:53 -07:00
8d51b02ca0 Updated the macOS Darwin arch sanity check to detect when a build is intentionally universal (-arch arm64 and -arch x86_64) instead of treating it as an x86_64-only mismatch. This allows universal binary compile flows to proceed through configuration.
Kept the protective failure for true x86_64-only builds that resolve ARM Homebrew libraries (/opt/homebrew) and updated the error text to explicitly mention universal builds as a supported path.
2026-02-19 12:03:27 -07:00
7d49831886 Updated macOS architecture sanity-check flow in meson.build to first read the Meson option into a variable and then allow an environment-variable override (ZOITECHAT_DARWIN_ARCH_SANITY_CHECK) before running the mismatch guard. Accepted disable values are 0, false, no, and off.
Kept the existing mismatch detection logic intact, but updated the error text to document both bypass methods (-Ddarwin-arch-sanity-check=false or ZOITECHAT_DARWIN_ARCH_SANITY_CHECK=0).
2026-02-19 11:54:54 -07:00
d2e6dabdca Added a new Meson option, darwin-arch-sanity-check (default true), so macOS users can explicitly disable the architecture-mismatch guard when they need to proceed in mixed toolchain environments.
Updated the Darwin architecture check to run only when darwin-arch-sanity-check is enabled, preserving current behavior by default while allowing opt-out.

    Improved the check implementation to use pkg-config --libs-only-L glib-2.0 and only evaluate Homebrew path detection when the pkg-config call succeeds.

    Extended the error message to include the explicit bypass flag -Ddarwin-arch-sanity-check=false for clearer remediation guidance.
2026-02-19 11:42:39 -07:00
36c9504a4d Added a macOS-only Meson configure-time guard that checks for the exact mismatch you hit: -arch x86_64 in build flags while pkg-config resolves GLib from /opt/homebrew (ARM Homebrew). This now fails early with a clear actionable error instead of letting the build continue to a long linker failure.
The new error message explicitly tells users to choose one consistent setup: native arm64 with /opt/homebrew, or Rosetta/x86_64 with an x86_64 dependency stack (typically /usr/local).
2026-02-19 11:36:36 -07:00
98208cbc44 Updated the DH parameter initialization path to use legacy direct DH field assignment only on OpenSSL versions older than 1.1.0 (and non-LibreSSL), and otherwise always use DH_set0_pqg, which avoids opaque-struct access errors on OpenSSL 3.x.
Updated DH key extraction in dh1080_generate_key to use legacy direct member reads only for truly old OpenSSL, and DH_get0_key for modern OpenSSL, preventing dh->pub_key/dh->priv_key compile failures.

    Updated private-key injection in dh1080_compute_key to use DH_set0_key(dh, NULL, priv_key_num) on modern OpenSSL, removing the prior unnecessary temporary public-key allocation and avoiding direct dh->priv_key access.
2026-02-19 11:27:30 -07:00
c3c5731a58 Updated _SSL_socket to stop accessing SSL_CTX internals (ctx->method) on OpenSSL 1.1+/3, where SSL_CTX is opaque, and instead use SSL_is_server(ssl) to choose connect vs accept state on modern OpenSSL. Legacy pre-1.1 behavior is preserved behind version guards.
This directly addresses the reported build error at method = ctx->method; while keeping backward compatibility for older OpenSSL versions.
2026-02-19 11:22:36 -07:00
cbc6844987 Fixed _SSL_get_cert_info() to stop dereferencing OpenSSL-internal struct fields, which is what caused the macOS/OpenSSL opaque-struct build failure (peer_cert->sig_alg->algorithm). It now uses X509_ALGOR_get0() for the public key algorithm OID and OBJ_obj2nid() from that accessor output.
Reworked signature algorithm detection to use X509_get_signature_nid() when available, and a compatibility fallback (X509_get0_signature() + X509_ALGOR_get0() + OBJ_obj2nid()) when HAVE_X509_GET_SIGNATURE_NID is not defined.
2026-02-19 11:17:17 -07:00
5f0a8a4c1f Updated Perl plugin Meson logic to gracefully disable the plugin (instead of failing the whole configure) when ExtUtils::Embed cflags/ldflags cannot be retrieved. This is now handled with warnings plus subdir_done().
Added explicit check: false to both run_command() calls, resolving the Meson deprecation warning about implicit boolean check behavior in future Meson versions.

Changed the Perl compile/link suitability probe failure from fatal error() to non-fatal warning + plugin disable, so unsupported host Perl setups do not abort the build entirely.
2026-02-19 10:51:11 -07:00
b3f31004e6 Added universal build support to the macOS bundler script: UNIVERSAL=1 now targets both arm64 and x86_64, can auto-discover per-arch build outputs, and uses lipo -create to produce a universal ZoiteChat-bin before architecture validation.
Updated the macOS GitHub Actions workflow to build both architectures (build-macos-arm64 + build-macos-x86_64), then package a universal app by passing both binaries into osx/makebundle.sh.

Documented the universal build invocation in osx/DEBUGGING.md so local builds can reproduce Intel + Apple Silicon compatibility packaging.
2026-02-19 10:43:16 -07:00
c16dc8754d Updated the macOS bundle script to stop failing when the repo has no tags by introducing ARCHIVE_VERSION from git describe --tags --always (with stderr suppressed).
Added a fallback so that if git metadata is unavailable, the archive version falls back to VERSION_STRING instead of leaving an empty suffix in the zip name.

    Switched the final zip naming to use ARCHIVE_VERSION, avoiding ZoiteChat-.app.zip outputs and fatal git describe errors.
2026-02-19 10:30:30 -07:00
93854e42df Updated macOS bundling to detect the host architecture and introduce TARGET_ARCHES (overrideable) so bundle validation can target one or multiple architectures explicitly.
Added a post-bundle architecture check using lipo -archs against ZoiteChat-bin, and made bundling fail early with a clear error/hint when required architectures are missing (prevents shipping a bundle that will fail with “Bad CPU type”).

    Kept the existing architecture reporting via file, now reusing a single BIN_PATH variable for consistency.
2026-02-19 10:19:40 -07:00
cf2d5e5778 Fixed the macOS launcher errors you hit:
suppressed noisy defaults read failures for missing preference keys,

        fixed unsafe/empty test expressions that caused test: argument expected,

        corrected the gettext app domain from APP=name to APP=zoitechat.

    Improved launcher behavior for architecture mismatches (Bad CPU type in executable) by detecting exit 126 and printing a clear hint plus file output for ZoiteChat-bin.

    Updated osx/makebundle.sh so bundling is more Intel/Apple Silicon friendly:

        dynamically resolves/writes prefix and prefix:enchant (Homebrew Intel vs Apple Silicon layouts),

        still adapts enchant data path (share/enchant vs share/enchant-2),

        prints bundled binary architecture after bundling so mismatches are immediately visible.

    Extended macOS debugging docs with a dedicated “Bad CPU type in executable” section and explicit Intel (x86_64) build commands.
2026-02-19 10:06:49 -07:00
8a1dcee8e1 Updated the macOS bundling script to dynamically adapt the enchant data path before invoking gtk-mac-bundler, instead of assuming share/enchant always exists. It now checks the resolved enchant prefix and rewrites the bundle definition to use share/enchant or share/enchant-2 depending on what is present.
Added a fallback that removes the enchant <data> copy stanza entirely when neither share directory exists, preventing the exact Cannot find source to copy bundler failure you reported.
2026-02-18 16:09:30 -07:00
de9a78b38d Removed the deprecated Pango modules <binary> block from the macOS bundle manifest (osx/zoitechat.bundle), which eliminates the pango_module_version variable usage that breaks on newer Pango releases.
Committed the change on the current branch as 7a41c7b with message: osx: remove deprecated pango module reference from bundle.
2026-02-18 15:39:40 -07:00
f6942c7f3c Updated the macOS bundle definition to match Enchant 2’s actual install layout by:
narrowing the core library glob to libenchant-2*.dylib,

bundling provider modules from lib/enchant-2 as a <binary>,

bundling Enchant config files from share/enchant as <data>.

Removed the stale Enchant provider globs that targeted older/nonexistent paths (lib/enchant/libenchant_*.dylib), which caused the CI bundling failure you reported.
2026-02-18 15:33:04 -07:00
ca45939144 Updated macOS bundle definitions for enchant provider modules to use .dylib patterns (in both lib/enchant and lib/enchant-2) instead of .so, which aligns with Homebrew macOS layouts and avoids the gtk-mac-bundler copy-source failure you hit. 2026-02-18 15:11:47 -07:00
f558c99c22 Switched Darwin/macOS dependency resolution to require gtk-mac-integration directly, and removed the legacy gtkosxapplication fallback path in src/fe-gtk/meson.build.
Kept existing mac integration wiring behavior intact (HAVE_GTK_MAC still enabled when this dependency is present, now mandatory on Darwin).
2026-02-18 14:53:16 -07:00
ff77f32033 Fixed the macOS bundle spec to remove the invalid mid-path wildcard that caused gtk-mac-bundler to throw ValueError: Can't have wildcards except in the last path component. Specifically, I replaced .../lib/enchant*/libenchant_*.so with explicit entries for both supported enchant module layouts.
Added two explicit plugin paths so both directory variants are bundled correctly:

${prefix:enchant}/lib/enchant/libenchant_*.so

${prefix:enchant}/lib/enchant-2/libenchant_*.so
2026-02-18 14:39:52 -07:00
858f9daf64 Updated the macOS bundle definition to stop requiring a single hard-coded Enchant provider file (libenchant_applespell.so) and instead include any available Enchant provider modules under versioned/non-versioned provider directories (lib/enchant*/libenchant_*.so). This fixes bundling when Homebrew installs providers in paths like enchant-2 or when applespell isn’t present. 2026-02-18 14:21:02 -07:00
d3ae9d9d5d Updated the macOS bundle definition to default the enchant prefix to Homebrew’s enchant formula path (/usr/local/opt/enchant) instead of the older enchant-applespell path, aligning the bundle config with current installs.
Changed the bundled enchant dylib entry from a fixed filename to a wildcard (libenchant*.dylib) so gtk-mac-bundler can resolve versioned Homebrew library names (for example libenchant-2.2.dylib
2026-02-18 14:10:31 -07:00
a68a49f394 Fixed the macOS CI packaging step by exporting PREFIX and ENCHANT_PREFIX before the Perl substitutions that rewrite <prefix> entries in osx/zoitechat.bundle. This ensures $ENV{...} is populated during replacement and avoids invalid/empty metadata values that can crash gtk-mac-bundler with the NoneType error. 2026-02-18 14:00:26 -07:00
fdea5b25cb Fixed the macOS bundle definition by giving <run-install-name-tool> an explicit string value (yes) instead of leaving it empty, which prevents gtk-mac-bundler from receiving a None for that metadata node and hitting the reported NoneType crash path. 2026-02-18 13:26:57 -07:00
83143ff89d Fixed the macOS bundle definition by changing <run-install-name-tool/> to an explicit open/close tag, which avoids gtk-mac-bundler treating that node as None during <meta> parsing and crashing with the reported traceback. 2026-02-18 13:20:57 -07:00
e9869db82b Updated the macOS GitHub Actions dependency-install step to add a fallback installer for gtk-mac-bundler when neither the CLI executable nor the Python module is already available. The fallback downloads the upstream tarball, extracts it, and runs make install so osx/makebundle.sh can proceed in CI. 2026-02-18 13:12:40 -07:00
f1fe8f924e 7
Updated the Meson post-install script to import shutil and add a helper that checks tool availability before invoking post-install commands. This prevents hard failures when optional desktop tooling is not installed (e.g., on macOS/Homebrew CI).

Replaced direct subprocess.call(...) calls for gtk-update-icon-cache and update-desktop-database with guarded calls that emit a clear “Skipping …: command not found” message when absent, while preserving existing behavior when present.
2026-02-18 13:04:26 -07:00
3d9833ce4f Fixed dependency propagation in zoitechat_common_dep so it now exports common_deps (which includes OpenSSL when found) instead of only libgio_dep. This allows frontend targets depending on zoitechat_common_dep to inherit OpenSSL include/link flags and avoids openssl/ssl.h not found build failures. 2026-02-18 12:53:07 -07:00
2c4da1ff5e Reworked the prior change to preserve cross-OS default behavior by restoring with-lua default to luajit (instead of auto), so downstream builds that rely on historical defaults are not surprised.
Kept Lua fallback probing logic, but now it applies to both with-lua=auto and the default with-lua=luajit: Meson tries luajit, then lua-5.4, lua5.4, lua-5.3, lua5.3, and lua; if none are present it warns and disables the Lua plugin instead of hard-failing configure.

Updated the Lua plugin dependency selection so plugins/lua/meson.build consumes the pre-resolved fallback dependency for both auto and luajit paths, while keeping explicit custom pkg-config names unchanged.
2026-02-18 12:46:59 -07:00
bf24249001 Updated Meson DBus dependency handling so macOS always forces DBus support off before resolving dbus-glib-1, preventing configure-time failure on Darwin hosts where dbus-glib is unavailable. This now applies regardless of whether the dbus option is auto or enabled.
Added a clear Meson warning when -Ddbus=enabled is requested on macOS, so users get explicit feedback that DBus is being disabled on that platform.
2026-02-18 12:24:55 -07:00
505449f165 Updated Meson’s DBus dependency gating so that on macOS (darwin) with -Ddbus=auto, dbus-glib-1 is treated as optional instead of hard-required. This prevents configure-time failure in Homebrew CI environments where dbus-glib-1 is absent, while preserving strict behavior when -Ddbus=enabled is explicitly set.
Kept the existing libcanberra and surrounding dependency flow intact; only the required: logic for dbus-glib-1 was adjusted.
2026-02-18 11:53:12 -07:00
125c69c1b0 Updated the macOS CI workflow’s Meson configure step to explicitly disable libcanberra by adding -Dlibcanberra=disabled, which prevents Meson from treating that unavailable macOS dependency as required when -Dauto_features=enabled is set. 2026-02-18 11:34:25 -07:00
55d2dab620 Updated the macOS CI workflow to install gtk-mac-integration instead of gtk-mac-bundler in the Homebrew dependency list, resolving the reported “No available formula” failure during brew install. 2026-02-18 11:16:14 -07:00
590b44946b Updated the macOS GitHub Actions workflow to install enchant instead of the removed enchant-applespell Homebrew formula in the dependency step, which addresses the reported brew failure.
Updated the bundling step to resolve ENCHANT_PREFIX from brew --prefix enchant so packaging remains aligned with the installed formula.
2026-02-18 11:10:48 -07:00
857c8918d8 Fixed the invalid workflow expression by removing secrets.* checks from the job-level if on macos_release_signed (job-level expressions can’t reference secrets in that way).
Added a Check signing secrets availability step that inspects all required Apple signing/notarization secrets and emits a ready output for downstream gating.

Added an explicit skip message step when secrets are missing, and gated all signing/notarization/artifact-upload steps behind steps.signing_secrets.outputs.ready == 'true' so the workflow remains valid while preserving intended behavior.
2026-02-18 11:01:52 -07:00
04b8f1d5fa Added a new GitHub Actions workflow at .github/workflows/macos-build.yml with branch triggers aligned to existing CI (push/pull_request on master) and a two-job structure for unsigned CI build plus optional release signing/notarization.
Implemented the build-only unsigned macOS phase on macos-latest: installs Meson/Ninja/GTK tooling via Homebrew, configures/builds with Meson, installs for bundling, generates the .app zip via the existing macOS bundle script, and uploads the unsigned artifact with retention (14 days).

Implemented the release-grade gated phase: job is gated to push on master and only runs when required Apple signing/notarization secrets are present; it downloads the unsigned artifact, imports Developer ID cert, codesigns, notarizes with Apple API key credentials, staples the ticket, and uploads a signed artifact with retention (30 days).
2026-02-18 10:55:53 -07:00
1ab7e14422 Updated macOS app metadata in osx/Info.plist.in:
Raised LSMinimumSystemVersion to 11.0.

Aligned CFBundleIdentifier with project naming (net.zoite.Zoitechat).

Kept version placeholders (@VERSION@) in CFBundleGetInfoString, CFBundleShortVersionString, and CFBundleVersion so they map cleanly via template substitution.

Confirmed icon/document declarations still point to zoitechat.icns and zct/hct extensions.

Made Info.plist generation deterministic in bundling workflow by updating osx/makebundle.sh:

Force script execution from its own directory for stable relative paths.

Always render Info.plist from Info.plist.in before bundling.

Use a single explicit version source: VERSION env var or fallback to meson.build project version.

Use LC_ALL=C substitution and atomic temp-file move for stable output behavior.
2026-02-18 10:54:55 -07:00
815df2aeb0 Updated osx/makebundle.sh to use a robust bundler invocation flow: prefer gtk-mac-bundler, fall back to python3 -m gtk_mac_bundler, fail fast with clear install guidance if neither is available, and verify the .app was actually produced before zipping. Also added macOS prefix/library expectation comments.
Updated osx/zoitechat.bundle to target GTK3 (gtk+-3.0), refreshed runtime module paths (immodules, printbackends, gdk-pixbuf, pango), removed GTK2-specific engine/theme entries, and added prefix comments. This also keeps the requested anchor locations (launcher-script, ${prefix}/lib/${gtkdir}).

Updated osx/launcher.sh to remove obsolete GTK2 environment assumptions (including GTK2_RC_FILES and old GTK2 loader file paths), set GTK3-relevant variables (GTK_IM_MODULE_FILE, GDK_PIXBUF_MODULE_FILE, GSETTINGS_SCHEMA_DIR), and minimize DYLD path hacking by only prepending when already set. Added launcher-script comment anchor and prefix/library docs.
2026-02-18 10:50:24 -07:00
668c391a8a Added a dedicated darwin branch in src/fe-gtk/meson.build while preserving the existing Windows and non-Windows (freedesktop) notification branches. In this macOS branch, notifications/notification-osx.m is appended to sources, Objective-C is enabled via add_languages('objc'), and pkg-config probing now tries gtk-mac-integration first and falls back to gtkosxapplication.
When either mac integration dependency is found on darwin, Meson now adds that dependency and defines -DHAVE_GTK_MAC in zoitechat_gtk_cflags, which activates the existing #ifdef HAVE_GTK_MAC blocks in the GTK frontend code.

Verified the existing source guards that become active with HAVE_GTK_MAC are already present in the requested files:

fe-gtk.h (mac header include + extern).

fe-gtk.c (global mac app object and mac-specific paths).

menu.c (mac menubar/app-menu integration).

maingui.c (mac dock attention request).
2026-02-18 10:46:04 -07:00
e8f4044f8c Updated the Solus workflow to grant packages: read (alongside contents: read) at workflow scope, so the Actions token can authenticate for GHCR package pulls.
Added a conditional GHCR login step (docker/login-action@v3) that runs when the selected image is under ghcr.io/*, using ${{ github.actor }} and ${{ github.token }} before docker pull.

Left the existing build/pull flow intact after authentication, so behavior is unchanged except for fixing anonymous-pull denial cases.
2026-02-18 10:44:45 -07:00
deepend-tildeclub
10f6b4913e Merge pull request #63 from ZoiteChat/emoji
fixing replaced emoji menu
2026-02-18 10:02:13 -07:00
7568c73062 Updated the Network List Connect button icon on GTK3 to use the bundled zc-menu-connect asset, which avoids theme-dependent missing network-connect behavior.
Added a Help menu _Update entry with a dedicated zc-menu-update icon constant, so Windows builds can display an appropriate update icon in the Help menu.

    Extended icon mapping/fallback logic so emoji/update icons resolve correctly across stock/icon-name paths (zc-menu-emoji, zc-menu-update) including GTK2 stock fallback compatibility.

    Added zc-menu-emoji to the input entry fallback icon list so the emoji affordance has a deterministic built-in fallback when theme emoji icons are missing.

    Added new update and emoji icon assets in both SVG and PNG for light/dark variants, and registered the PNG resources in the gresource manifest for runtime loading.
2026-02-18 01:30:45 -07:00
6ce7de23a3 Switched menu resource loading to use bundled PNG assets (instead of SVG paths) for zc-menu-* icons, so menu icon resolution is consistent and no longer depends on SVG/icon-theme availability on different platforms (including Win32 builds).
Updated the GResource manifest so all menu icons now come from data/icons/menu/{light,dark} PNG files and are embedded with to-pixdata preprocessing, ensuring the app uses one unified internal icon set across platforms.

    Generated and added PNG assets for both light and dark menu icon variants under data/icons/menu/ to back the new resource paths used by the GTK menu code.

    Fixed menu icon resource detection to fall back from PNG to SVG when probing zc-menu-* entries, so menu item icon lookup no longer fails just because one format is unavailable at runtime.

    Updated GTK menu icon loading to use gdk_pixbuf_new_from_resource (instead of ..._at_scale) and added explicit fallback order across variant/light and PNG/SVG resources, which addresses the “red no-entry square” missing-icon behavior you reported.

    Kept compatibility with your previous menu resource setup while making loading more resilient on Win32 and other environments where resource/pixbuf behavior differs.
2026-02-18 01:16:03 -07:00
dbc517de99 Updated channel list icon button creation to always use gtkutil_image_new_from_stock(..., GTK_ICON_SIZE_MENU) so it follows the same zc-menu-* icon resolution path on all GTK targets instead of mixing direct stock-image calls.
Updated the GTK2 channel list context-menu icon path to use the same helper, removing direct gtk_image_new_from_stock usage for menu icons.

    Updated the GTK2 spell-entry popup icon path to use gtkutil_image_new_from_stock, aligning it with the same menu icon set/mapping pipeline used elsewhere (data/icons/menu).
2026-02-18 00:57:58 -07:00
e214c76bdf Unified GTK3 menu icon resolution so menu-sized icons now consistently map to the bundled zc-menu-* icon set (from data/icons/menu) even when callers pass freedesktop icon names (like edit-copy, go-next) instead of legacy stock IDs. This removes the mixed behavior where some items came from system themes while others came from bundled resources.
Added a new icon-name→zc-menu-* mapping helper and wired it into gtkutil_image_new_from_stock() as a fallback path for GTK_ICON_SIZE_MENU, after the existing stock-name mapping.
2026-02-18 00:52:49 -07:00
3ccd8c44b3 Added a centralized menu icon resolver in menu.c so menu items consistently prefer the bundled zc-menu-* resource icons (from data/icons/menu) instead of relying on platform/theme fallback behavior. This includes:
checking whether a matching zc-menu-* resource exists,

        preserving support for absolute file paths and <config>/... relative icon paths,

        mapping plain icon names (for example, copy) to zc-menu-copy when available.

    Updated menu_quick_item() to use the new resolver (menu_icon_widget_new) for all icon-bearing quick/popup menu entries, making icon rendering behavior consistent across platforms.
2026-02-18 00:47:10 -07:00
5df6f68cd9 Unified menu icon loading so zc-menu-* icons can be loaded directly from the bundled data/icons/menu/light/*.svg resource set via a new helper (gtkutil_menu_icon_pixbuf_new), instead of depending only on platform stock themes. This makes menu icon resolution consistent across platforms for the custom menu icon namespace.
Updated the GTK2 (!HAVE_GTK3) code path in gtkutil_image_new_from_stock to first try the bundled zc-menu-* SVG resource icons and only fall back to GTK stock icons if a bundled icon cannot be loaded.
2026-02-18 00:41:55 -07:00
45d4025ad7 Updated the built-in popup menu defaults to stop using mixed legacy GTK stock icon names and instead use the app’s unified zc-menu-* icon IDs (backed by data/icons/menu resources). Specifically changed: Open Dialog Window, Send a File, User Info (WhoIs), Add to Friends List, and Ignore. 2026-02-18 00:38:18 -07:00
f6b78bd167 Standardized GTK menu-icon fallback mapping so stock names for Save As, Previous, and Next now resolve through the bundled zc-menu-* icon family (and map back correctly on GTK2), ensuring these menu actions use the same icon set path as the rest of your menu icons.
Updated search controls in the main UI to use zc-menu-previous / zc-menu-next and to load through gtkutil_image_new_from_stock(...), so those menu-sized icons are rendered from the same data/icons/menu resources instead of theme-dependent icon names.

    Updated URL Grabber and Raw Log “Save As” icon constants to use zc-menu-save-as for consistency with the menu icon set.

    Added new menu SVGs (save-as, previous, next) in both light and dark variants, and registered all of them in the GResource manifest so they’re available cross-platform from the bundled resource system.
2026-02-18 00:32:42 -07:00
17f239e6fc Unified tray menu icon definitions to always use the zc-menu-* identifiers (instead of conditional stock GTK icons), so Preferences/Quit resolve through the same menu icon set on all builds.
Unified plugin manager action icons to use zc-menu-load-plugin, zc-menu-delete, and zc-menu-refresh across platforms.

Unified channel list action icons to only use the zc-menu-* icon names (join/copy/find/refresh/save), matching data/icons/menu usage.

Unified spell-entry menu action icons to only use zc-menu-add, zc-menu-remove, and zc-menu-spell-check.
2026-02-18 00:24:43 -07:00
fcf00ebd8f Updated menu-item icon resolution in menu_quick_item() to always go through gtkutil_image_new_from_stock(..., GTK_ICON_SIZE_MENU) when not loading from a file path, so icon-bearing menu items consistently use the same icon pipeline.
Standardized the main menu icon identifiers to the zc-menu-* set (the icon set backed by data/icons/menu) across builds, instead of splitting between custom IDs and GTK stock IDs.

    Updated create_icon_menu() to use the same stock-to-image helper for stock-backed menu entries, so all menu icons follow the same resolution logic.

    Added a non-GTK3 compatibility mapper that converts zc-menu-* icon IDs to GTK stock names before calling gtk_image_new_from_stock, keeping behavior consistent on older GTK platforms while still using the unified zc-menu-* identifiers in menu definitions.
2026-02-18 00:16:04 -07:00
e347fdc899 Unified GTK3 menu-item icon loading to use the same helper path everywhere (gtkutil_image_new_from_stock(..., GTK_ICON_SIZE_MENU)), so stock/menu icon names consistently resolve through the shared custom menu icon logic (which uses data/icons/menu first, then fallback). This was applied in menu_quick_item.
Unified main menubar icon creation to the same helper in create_icon_menu, removing the separate/duplicated icon-mapping and platform-specific loading logic from menu.c.
2026-02-18 00:09:56 -07:00
b419804ddb Updated GTK3 icon resolution so gtkutil_image_new_from_stock() now preserves zc-menu-* icon IDs (when no stock-to-theme mapping exists), allowing those items to load directly from the data/icons/menu resource set instead of falling back inconsistently to theme icon names.
Updated channel list popup menu icon creation to pass the original icon ID directly into the shared loader, so those menu items use the same icon pipeline and set as other menus (data/icons/menu).
2026-02-18 00:05:44 -07:00
bdfabcf800 Standardized GTK3 menu icon resolution so stock-style menu icons are first mapped to the bundled zc-menu-* names (which are backed by data/icons/menu/...), but only for menu-sized icon requests. This keeps non-menu button icons unaffected while making menu icons consistent.
Updated menu construction paths to resolve both zc-menu-* and legacy gtk-* stock names through one custom mapping before loading icons from the bundled menu icon assets, with fallback to light theme assets and then theme icon names. This affects both quick/user menus and standard icon menu items.
2026-02-18 00:00:59 -07:00
ebf695abdf Standardized GTK3 menu-related icon constants to the bundled zc-menu-* namespace so menu actions stop depending on mixed system-theme icon names (edit-copy, view-refresh, etc.) and instead use the same internal set. This was updated in channel list, plugin manager, URL grabber, and spell-entry menu definitions.
Updated GTK3 icon rendering paths in affected UI helpers to call gtkutil_image_new_from_stock(...), which is the path that resolves zc-menu-* resources correctly and consistently from data/icons/menu (instead of raw theme lookup).

Added new icons to the shared bundled menu icon set (light/dark) for copy, delete, add, remove, spell-check, and refresh, and registered them in the GResource manifest so they are always available at runtime.
2026-02-17 23:56:49 -07:00
bc2b1bd509 Standardized GTK3 menu-related icon constants to use the bundled zc-menu-* icon set (from data/icons/menu) in the places that had direct equivalents, including raw log, URL grabber, channel list actions, tray menu, and plugin load action.
Updated menu_quick_item() so zc-menu-* icons now fall back to the light variant if the current theme variant is unavailable, which helps avoid missing icons.

    Added centralized zc-menu-* resource loading to gtkutil_image_new_from_stock() (theme-variant detection + light fallback), so menu/button icon rendering uses the same bundled source path consistently.
2026-02-17 23:49:59 -07:00
8642d8bde4 Updated the Network List menu entry to use the same menu icon mechanism as the other iconized menu items by switching it from M_MENUPIX (pix_book) to M_MENUSTOCK with a zc-menu-* icon name (zc-menu-network-list).
Added the new network-list SVG icon in both light and dark variants under data/icons/menu, so it comes from the same icon set as the rest of the menu icons.

    Registered both new icon files in the compiled GResource manifest so they are available through the existing resource-loading path.
2026-02-17 23:44:22 -07:00
01e890eb3f Updated GTK3 menu item rendering so any zc-menu-* icon passed into menu_quick_item() is treated as a bundled ZoiteChat menu icon and loaded via menu_icon_image_from_data_icons(...) using the active light/dark variant, which makes dynamic/custom menu entries use the same icon source as the main menu icons.
Added GTK3 forward declarations for menu_icon_theme_variant() and menu_icon_image_from_data_icons() so menu_quick_item() can call those helpers before their later definitions in the file.

    Kept fallback behavior intact: if bundled icon loading fails, the code still falls back to icon-theme lookup by name.
2026-02-17 23:35:32 -07:00
7af8f069e7 Reworked the GTK3 menu icon pipeline so zc-menu-* entries now load from the bundled data/icons/menu assets only, with shared theme-variant detection (light/dark).
Split menu icon loading by platform:

        Windows: loads from installed share/icons/menu/<variant>/<icon>.svg.

        Non-Windows: loads from embedded GResource /icons/menu/<variant>/<icon>.svg.

    Removed the old per-icon fallback mapping for zc-menu-* (system icon substitutions), so menu icons stay consistent with the exact bundled icon set; non-zc-menu-* stock behavior remains unchanged.
2026-02-17 23:26:26 -07:00
b5db1685da Removed the unresolved version-control conflict markers from create_icon_menu and kept the custom_alt_fallback_icon declaration intact so the later fallback icon assignments remain valid for compilation. 2026-02-17 23:15:51 -07:00
335a8f4d6b Added stronger icon fallback handling for zc-menu-* menu items (including Server dropdown icons and Preferences) by introducing alternate fallback icon names and choosing an alternate only when the primary fallback icon is unavailable in the active icon theme. This specifically improves connect, disconnect, join, and preferences cases on Windows theme variations.
Kept the custom resource/file loading path in place (resource SVG + installed file fallback), then layered the improved theme fallback selection after it so menu icons still resolve if resource decoding is unavailable.

Added emoji entry fallback logic: if GTK’s built-in show-emoji-icon leaves the secondary icon empty, the input box now picks the first available icon from a fallback list (face-smile-symbolic, face-smile, insert-emoticon-symbolic, insert-emoticon)
2026-02-17 23:12:34 -07:00
e316413f60 Added stronger icon fallback handling for zc-menu-* menu items (including Server dropdown icons and Preferences) by introducing alternate fallback icon names and choosing an alternate only when the primary fallback icon is unavailable in the active icon theme. This specifically improves connect, disconnect, join, and preferences cases on Windows theme variations.
Kept the custom resource/file loading path in place (resource SVG + installed file fallback), then layered the improved theme fallback selection after it so menu icons still resolve if resource decoding is unavailable.

    Added emoji entry fallback logic: if GTK’s built-in show-emoji-icon leaves the secondary icon empty, the input box now picks the first available icon from a fallback list (face-smile-symbolic, face-smile, insert-emoticon-symbolic, insert-emoticon).
2026-02-17 23:07:17 -07:00
e8ca0a1213 attempting to fix menu icon loading issues on the windows build. 2026-02-17 22:50:34 -07:00
15d918f1fb Added Windows-side icon theme fallback logic in win32_configure_icon_theme that now checks (in addition to the existing <base>/share/icons) these paths:
ZOITECHAT_ICON_PATH (user override env var),
    current working directory + share/icons,
    argv[0] directory + share/icons.
    Valid directories are appended to GTK’s icon search path.
Added diagnostic logging so startup clearly reports either the selected icon path source/path or that none of the expected locations were usable, to speed up Windows missing-icon triage.
Reused/stored the computed argv[0] directory in fe_args (via win32_argv0_dir) so it can be used both for chdir and for icon fallback resolution.
2026-02-17 22:19:50 -07:00
329a641adf I added a Windows-specific fallback to load custom menu icons directly from the installed share/icons/menu/<variant>/ path when GResource lookup doesn’t return an icon. This uses g_win32_get_package_installation_directory_of_module() plus g_build_filename() to avoid separator/path issues.
The new fallback tries *.svg first, then *.png, so if resources aren’t available at runtime but files were installed, menu icons still render.
After that, the existing icon-name fallback chain still runs (custom_fallback_icon → stock mapping → stock name), so non-file-based fallback behavior is preserved.
2026-02-17 22:03:51 -07:00
9bdf654cbc Fixed the Windows packaging pipeline to include the app’s bundled menu icons from data/icons/menu/** by adding a dedicated ZoiteChatMenuIcons item group in the copy project. This ensures both light and dark menu icon files are staged during Windows builds.
Added an explicit copy step that places those menu icons into $(ZoiteChatRel)\share\icons\menu\..., which is already included by the installer’s share\icons\* rule, so they now get installed on Windows.
2026-02-17 21:46:46 -07:00
1a920ba955 I fixed the Windows runtime path so gdk-pixbuf can actually find/use its loader modules before GTK initializes, by adding win32_configure_pixbuf_loaders() and calling it in startup on Windows. This sets GDK_PIXBUF_MODULEDIR / GDK_PIXBUF_MODULE_FILE from the bundled install tree so SVG resources can render instead of placeholder icons.
I also fixed Windows packaging to include what the SVG path needs at runtime: librsvg DLLs, gdk-pixbuf loader modules, and loaders.cache in the release bundle.
2026-02-17 21:30:51 -07:00
afc490aa18 Fixed GTK3 menu icon fallback handling so Windows no longer falls through to non-standard zc-menu-* icon IDs (which show as placeholders in many setups). The code now maps each custom menu icon key (new, connect, disconnect, save, help, etc.) to a concrete freedesktop icon name before calling gtk_image_new_from_icon_name().
Kept the existing preferred behavior intact: load bundled SVG menu icons from GResource first (light/dark variant), and only use fallback icon names when those resources are unavailable.
2026-02-17 21:19:22 -07:00
0a5c95c6b4 Fixed the Windows installer so it now installs GTK icon theme assets (share\icons) into the app directory. This ensures icon-name lookups used by menus/widgets can resolve real icons instead of placeholders on Windows installs.
The change was made in the [Files] section by adding a recursive copy rule for share\icons\* under the libs component.
2026-02-17 21:08:18 -07:00
a078d00eef Updated GTK3 tab dropdown icon constants to use ZoiteChat’s bundled zc-menu-* icon names (detach/close) instead of theme-dependent names, so Windows builds render the intended menu icons consistently.
Updated GTK3 tray menu icon constants for Preferences/Quit to use bundled zc-menu-* icon names, fixing theme-missing icon issues in Windows menu/dropdown contexts.
2026-02-17 20:58:15 -07:00
18632bc5fd Added a new tree-store column (COL_UNDERLINE) for channel rows so the UI can track underline state per channel entry in the channel list model.
Initialized each new channel row with PANGO_UNDERLINE_NONE so only the active channel gets emphasized.
Updated tree selection handling to remove underline from the previously focused row and apply PANGO_UNDERLINE_SINGLE to the newly selected row, creating a clear “currently viewed channel” indicator.
Bound the channel name renderer’s underline property to the new model column so underline changes are reflected immediately in the channel list UI.
2026-02-17 20:51:13 -07:00
f90783c298 Updated Windows packaging to include all dependency-provided icon assets by adding a new DepsRootIcons item ($(DepsRoot)\share\icons\**\*) in win32/copy/copy.vcxproj.
Added a corresponding copy step so those icons are emitted into the Windows release tree at $(ZoiteChatRel)\share\icons\..., ensuring parity with Linux icon availability in installed builds.
2026-02-17 20:47:20 -07:00
643ea9c7fb Removed the Windows-specific forced Adwaita icon theme override from win32_configure_icon_theme(), so ZoiteChat will no longer switch to Adwaita at runtime and can use the app’s own icon assets from the configured icon search path.
Removed Adwaita icon bundle copy rules from the Windows packaging project (copy.vcxproj), so share/icons/Adwaita is no longer pulled into Windows build artifacts.
Removed Adwaita icon inclusion from the Windows installer manifest (zoitechat.iss.tt), so installer builds no longer ship Adwaita icon files.
2026-02-17 20:39:12 -07:00
39aa63057e Added a centralized menu_new() helper in the GTK menu code that creates menus and disables GTK3’s reserved toggle gutter (gtk_menu_set_reserve_toggle_size(..., FALSE)), which removes the awkward empty left-side spacing for normal menu items.
Updated menu construction callsites in the main menu paths (top-level, submenus, nick/url/channel context menus) to use menu_new(), so the spacing fix applies broadly across menus instead of only one location.
Committed the change on the current branch (976970f) and created a PR record via the make_pr tool.
2026-02-17 20:37:37 -07:00
5d4eec3b71 updated, fixed or replaced menu icons. 2026-02-17 20:05:13 -07:00
6bd7a309b3 Updated Windows GTK startup environment handling so ZoiteChat always prepends its bundled share directory to XDG_DATA_DIRS (without breaking existing values), which enables GTK to discover packaged runtime data used by icon/theme and emoji resources. Also changed GSETTINGS_SCHEMA_DIR logic so it no longer short-circuits this setup when GSETTINGS_SCHEMA_DIR is already set.
Added a Win32 icon-theme setup helper that appends bundled share/icons to GtkIconTheme search paths and forces Adwaita when available, so the emoji chooser’s category/menu symbolic icons resolve instead of showing placeholder squares.
Invoked the new Win32 icon-theme configuration immediately after gtk_init() so it applies before UI usage, including the emoji chooser popover created from entries.
2026-02-17 18:55:38 -07:00
dd452f82ff The Windows copy project already stages Adwaita icons into win32/rel\share\icons\Adwaita, but the Inno Setup script did not include that folder in [Files], so installed builds could miss those icons. I added an installer file rule to include share\icons\Adwaita\* recursively under the libs component. 2026-02-17 18:25:29 -07:00
cb0fd33089 updated the Windows packaging project to include Adwaita icons in the bundle by adding an AdwaitaIcons item from $(DepsRoot)\share\icons\Adwaita\**\* and copying it into $(ZoiteChatRel)\share\icons\Adwaita\....
Added a Windows-packaged attribution file at win32/copy/share/adwaita-icons-attribution.txt; because win32/copy/copy.vcxproj already copies share\**\*, this file will be included in the Windows output under share\adwaita-icons-attribution.txt.
The attribution text explicitly uses “GNOME Project” and includes the requested link http://www.gnome.org.
2026-02-17 15:43:15 -07:00
ee107621c4 Removed the custom emoji picker/menu implementation from maingui.c (including its callbacks and helper declarations), so the old in-app emoji menu is no longer present. The code now transitions directly from emoji font fallback logic to the search-bar section.
updated the input entry creation to stop creating a separate emoji button, and instead enable GTK’s built-in emoji menu icon with show-emoji-icon on GTK3+ builds only (no GTK2 fallback path).
2026-02-17 15:23:03 -07:00
deepend-tildeclub
54de067a13 Merge pull request #61 from ZoiteChat/theme_updates
fixed some theming issues with Windows build aka dark mode etc.
fixed chat message lag when channel had large scrollback.
2026-02-17 15:03:07 -07:00
ae50735311 Identified and fixed an obvious UI-path delay in message rendering: when a new line is appended and the user is already at the bottom of the channel buffer (scrollbar_down), the code now renders immediately instead of always waiting for an idle callback. This removes the subtle “sent but appears a moment later” effect in large-scrollback channels.
Preserved the previous idle-batched behavior for users who are not at the bottom (scrolling history), so performance-friendly deferred redraws still apply in that case.
2026-02-17 14:49:15 -07:00
97cbe98b3d added a min_indent threshold and only grow indent when the change is meaningful (greater than one space width), then only run the expensive gtk_xtext_recalc_widths() path when indent truly increased.
I also kept the existing correctness behavior: when indent does materially change, it still fixes/recalculates and updates ent->indent/force_render as before.
2026-02-17 14:33:16 -07:00
eb112f9cd7 appended lines were scheduled with a timer (REFRESH_TIMEOUT * 2 where REFRESH_TIMEOUT is 20), which effectively adds ~40ms before draw in this path. I changed that specific path to render on the next idle cycle (g_idle_add) so locally echoed sent messages appear sooner. 2026-02-17 14:26:02 -07:00
6025195234 fixed the delayed selection paint by changing gtk_xtext_render_ents() to queue a GTK redraw when called outside ::draw on GTK3, instead of attempting direct window painting. This addresses the “double-click/drag selection only appears after some other window change” behavior.
Added an in-code comment explaining why this path is needed (GTK3/Wayland frame-driven presentation).
2026-02-17 13:24:42 -07:00
7fd8e5455d fixing zoitechat/hexchat theme usage. 2026-02-17 10:51:42 -07:00
deepend-tildeclub
e424d9325c Update Python plugin version to 2.18.0-pre1 2026-02-17 09:39:01 -07:00
78754ff194 Added a Windows-only fe_apply_windows_theme(gboolean dark) function under #ifdef G_OS_WIN32 that:
sets gtk-application-prefer-dark-theme when that GtkSettings property exists, and
    applies an app-level GtkCssProvider with dark/light fallback classes (zoitechat-dark / zoitechat-light) to keep non-chat widgets aligned with mode changes.
Updated the shared theme apply path so fe_apply_theme_for_mode() still applies the palette layer (palette_apply_dark_mode) and now also applies the Windows GTK layer, ensuring auto/manual modes flow through one path.
Extended toplevel theme application to add/remove the new dark/light CSS classes on Windows GTK3 windows, while preserving native titlebar dark-mode handling.
Made AUTO mode resolve from the cached auto_dark_mode_enabled state, and initialized that state in fe_init() before the first fe_apply_theme_for_mode() call so initial and subsequent behavior are consistent.
2026-02-16 20:41:27 -07:00
deepend-tildeclub
242f4a6dec Update fe-gtk.vcxproj with new configurations 2026-02-16 20:29:25 -07:00
5460855ea4 Implemented a Windows-specific theme detection path with High Contrast safeguards, including helpers to detect HC mode, read Windows system theme preference from the registry, and gate native titlebar dark mode updates when HC is active. Also added DWM header usage for native titlebar APIs.
Added a unified theme application pipeline via fe_apply_theme_for_mode() and fe_apply_theme_to_toplevel(), and routed auto-mode refresh logic through it so palette + GTK input styling are applied consistently from one place.
Switched startup and settings-apply flows to use the unified theming function, replacing direct palette-only calls so system-mode detection → theme apply is consistent across initialization and preferences changes.
Applied native titlebar updates when top-level windows are shown and during setup reapply across open sessions, and wired Windows builds to link dwmapi in both Meson and MSVC project files.
2026-02-16 20:26:45 -07:00
deepend-tildeclub
605ca4da04 Merge pull request #48 from ZoiteChat/gtk3-prep
gtk3/many minor fixes and updates.
2026-02-16 19:52:05 -07:00
ebb9aa48ae Added GTK2 compatibility macros in fe-gtk.h so calls to gtk_widget_set_hexpand() / gtk_widget_set_vexpand() become no-ops when !HAVE_GTK3, fixing the GTK2 implicit-declaration build failures introduced by GTK3-oriented layout code.
Kept the macros warning-safe using (void) casts and G_STMT_START/G_STMT_END, so they compile cleanly in strict warning configurations.
2026-02-16 19:33:50 -07:00
deepend-tildeclub
99b93d1b71 Merge pull request #60 from ZoiteChat/raw_bytes_keyboard_shortcut
Raw bytes keyboard shortcut
2026-02-16 19:16:11 -07:00
ef87b569d7 Updated the Windows copy project to explicitly include GLib GSettings schema files from $(DepsRoot)\share\glib-2.0\schemas\* and copy them into the release tree at share\glib-2.0\schemas\..., ensuring gschemas.compiled is bundled with portable/release artifacts.
Updated the Inno Setup installer file list to install share\glib-2.0\schemas\* into {app}\share\glib-2.0\schemas under the libs component, so installed builds also ship required schema data.
Updated gtkutil_file_req_response() so only GTK_RESPONSE_ACCEPT runs the file-selection path; all non-accept responses now immediately destroy the dialog via the callback’s dialog pointer, avoiding chooser access on cancel paths.
Kept native chooser handling aligned with that behavior: chooser reads are still gated behind GTK_RESPONSE_ACCEPT, while cleanup remains a single unref path deferred to idle to avoid teardown-in-signal-stack issues on Windows.
2026-02-16 18:57:48 -07:00
3872c4fcdf Updated the GTK3 Help menu icon constant so _Contents now uses help-contents instead of help-browser, which fixes the oversized icon appearance on Linux and keeps it consistent with other menu icons.
Updated menu_setting_foreach() to safely handle sessions where menu_item[id] is still NULL by storing it in a local pointer and only toggling check state when it exists. This avoids GTK/GLib criticals during layout/menu synchronization paths while preserving normal behavior for initialized menu items.
Fixed the a few dialog box layout so the scrolled keybindings list expands to fill available vertical space in the window. It now packs the scroller into the parent GtkBox with expand/fill enabled (gtk_box_pack_start(..., TRUE, TRUE, 0)) instead of adding it as a generic container child. This allows the window height to be fully utilized.
2026-02-16 18:40:15 -07:00
09a4d3923a Fixed the GTK3 unrealize lifecycle in gtk_xtext_unrealize() by removing the early gdk_window_set_user_data(window, NULL) path, so the widget/window ownership remains valid until parent unrealize runs. This matches GTK’s expected unregister flow and addresses the user_data == NULL abort pattern you described.
Kept GTK2 behavior unchanged (#if !HAVE_GTK3 still clears widget->window user data in the legacy path).
Added an in-code comment documenting why GTK3 must preserve user-data until chaining to parent unrealize.
2026-02-16 18:11:37 -07:00
6df8a98fa0 Updated the Windows GTK3 native file-dialog flow to use asynchronous handling (gtk_native_dialog_show + "response" signal) instead of synchronous gtk_native_dialog_run, reducing risky dispose/unrealize timing during dialog close.
Added gtkutil_native_file_req_response() to keep completion semantics consistent: process selected files on accept, send the trailing callback(..., NULL) completion notification, free request state, and defer dialog unref to idle.
2026-02-16 17:29:25 -07:00
a6af143ba7 Fixed the Windows GTK3 native file chooser lifetime handling by adding an idle callback (gtkutil_native_dialog_unref_idle) that performs g_object_unref(native) outside the button-release signal stack. This avoids the crash path when cancelling the Load file dialog.
Updated the native chooser code path to replace immediate unref with deferred unref via g_idle_add(...) after gtk_native_dialog_run, while preserving the existing accept-only file handling behavior.
2026-02-16 15:37:59 -07:00
287afb4b1d Refactored file-selection completion logic so it can operate on any GtkFileChooser object, not only GtkFileChooserDialog, by introducing gtkutil_file_req_done_chooser() and reusing it from the existing dialog path. This keeps validation/callback behavior identical between chooser implementations.
Updated gtkutil_file_req() to resolve an effective_parent (fallback to global parent_window when no parent is passed), which ensures consistent transient parenting and modal assertions in this code path.
Added a Windows GTK3-specific path that uses GtkFileChooserNative (instead of the GTK file chooser dialog widget path implicated by your stack trace), while preserving existing behavior for initial folder/name, filters, multi-select, and overwrite confirmation before invoking the same file-check callback flow.
Left the existing non-Windows / non-GTK3 dialog flow in place unchanged in behavior, so platforms outside the crash scenario continue using the prior implementation.
2026-02-16 15:06:59 -07:00
eb677e412c Fixed Windows RC version generation for prerelease tags by sanitizing each version segment to numeric-only before emitting COMMA_VERSION in zoitechat.rc.tt. This prevents RC2237: numeric value expected for versions like 2.18.0-pre1. 2026-02-16 14:48:05 -07:00
3853343918 Added a new 2.18.0-pre1 top entry in changelog.rst (dated 2026-02-16) for the GTK3/packaging work on this branch, and preserved the existing 2.17.4 entry instead of rewriting it.
Added a new AppStream release block for 2.18.0-pre1 and restored the prior 2.17.4 release record, so release history remains additive.
Fixed Debian changelog handling by prepending a new pre-release entry 2.18.0~pre1-1 and restoring the historical 2.17.0-1 / 2.17.0-0 entries unchanged.
2026-02-16 14:34:23 -07:00
fe55334f5c Updated the Debian CI workflow to collect generated package files into a workspace-local artifacts/ directory before upload, avoiding disallowed ../ path traversal patterns in actions/upload-artifact@v4.
Updated the upload step to use path: artifacts/*, which is compatible with v4 artifact path validation rules.
2026-02-16 14:03:59 -07:00
7ff4cb9b8a Added package install manifests for split binary packages so files previously left in debian/tmp are assigned to the correct outputs:
zoitechat-common (desktop integration, dbus service, icons, locales, appdata, mime).
    zoitechat-dev (plugin development header + pkg-config file).
    zoitechat-lua, zoitechat-perl, zoitechat-plugins, and zoitechat-python3 (plugin/shared module payloads).
Simplified zoitechat.install to only the core executable + man page, with shared data moved to zoitechat-common to match package split intent.
2026-02-16 13:59:59 -07:00
7143aec20d Updated channel tree theming to always apply the current input font (input_style->font_desc) when re-theming, so channel list font type/size stays in sync with font preference changes.
Updated user list creation to apply the current input font in GTK3 when palette styling is applied, so the user list reflects font changes consistently.
Updated channel view creation in GTK3 to always pass the current input font to chanview_new, ensuring channel list typography starts with the configured font.
Updated settings re-apply logic to always include the current input font for the user list in GTK3, so runtime font updates take effect there as well.
2026-02-16 13:58:10 -07:00
65d399fa5b Updated Debian packaging manifest to install the missing manpage (usr/share/man/man1/zoitechat.1) and MIME package XML (usr/share/mime/packages/net.zoite.Zoitechat.mime.xml) so they are no longer left unassigned in debian/tmp and triggering dh_missing errors. 2026-02-16 13:53:54 -07:00
deepend-tildeclub
8ce3787429 Change changelog installation from changelog.txt to changelog.rst 2026-02-16 03:40:14 -07:00
deepend-tildeclub
c4c5964588 Create documentation directories for zoitechat packages
Add directories for documentation of various zoitechat packages.
2026-02-16 03:31:06 -07:00
2d61db57ef Updated the Debian GitHub Actions workflow to use Debian packaging tooling/dependencies (including dpkg-dev, debhelper, fakeroot, iso-codes, and liblua5.3-dev) so the job is set up for Debian package builds from debian/.
Replaced the previous direct Meson configure/build/test/install steps with a Debian package build step using dpkg-buildpackage -us -uc -b.
Added artifact upload for generated Debian package outputs (*.deb, *.changes, *.buildinfo).
2026-02-16 03:26:00 -07:00
a9d8ffe3fe Updated Debian build dependencies to target GTK 3 by replacing libgtk2.0-dev with libgtk-3-dev, and updated the package description text to explicitly say “GTK 3 GUI.”
Updated Debian build rules to pass -Dgtk3=true to Meson during dh_auto_configure, ensuring the GTK3 frontend is selected in package builds.
2026-02-16 03:22:44 -07:00
deepend-tildeclub
ab21af908c Add GDK_SCROLL_MASK to event mask for widget 2026-02-16 03:12:57 -07:00
deepend-tildeclub
fffbe5228c Forward mouse wheel messages to hovered window
Handle mouse wheel messages by forwarding them to the hovered window.
2026-02-16 03:05:43 -07:00
deepend-tildeclub
87ec58f9d3 Fix component selection for Python in installer script 2026-02-16 02:52:46 -07:00
deepend-tildeclub
805baea90b Fix packing order in hex GUI window 2026-02-16 02:47:34 -07:00
deepend-tildeclub
91238d99ae Refactor plugingui_load to improve directory handling 2026-02-16 02:42:00 -07:00
deepend-tildeclub
d5561a21e3 Set hexpand and vexpand for scrolled window and tree view
Enable horizontal and vertical expansion for the scrolled window and tree view.
2026-02-16 02:20:25 -07:00
deepend-tildeclub
f78ae92419 Merge pull request #59 from ZoiteChat/master
sync with master
2026-02-16 02:17:16 -07:00
deepend-tildeclub
cbb233ad06 Fix packing order for GUI panes based on preferences 2026-02-16 02:01:21 -07:00
deepend-tildeclub
07571330ba Remove redundant gtk_paned_pack calls in maingui.c 2026-02-16 02:00:45 -07:00
deepend-tildeclub
0e48187238 Fix packing order for GUI panes based on preferences 2026-02-16 01:59:53 -07:00
deepend-tildeclub
e32574ed9b Enable column expansion in chanview tree 2026-02-16 01:50:23 -07:00
deepend-tildeclub
a41e8a0f5d Disable debug libraries in project properties 2026-02-16 01:27:53 -07:00
c20a6424e5 Added explicit MSVC runtime-check settings in the shared Windows build props so optimized builds don’t inherit /RTC1 and conflict with /Ox: BasicRuntimeChecks=Default and SmallerTypeCheck=false in the ClCompile block of win32/zoitechat.props. 2026-02-16 01:22:47 -07:00
deepend-tildeclub
f5a4d8f84b Enable Whole Program Optimization in project properties 2026-02-16 01:18:40 -07:00
6f97c060b3 Added defensive input validation in waitline() to return -1 when bufsize <= 0, preventing invalid buffer handling paths.
Added a Windows-specific guard in waitline() that checks _get_osfhandle(sok) before calling read() in non-socket mode; if the CRT file descriptor is invalid, it now fails gracefully with -1 instead of hitting the debug CRT assertion you reported.
2026-02-16 01:09:16 -07:00
deepend-tildeclub
2bfd96c9e0 Fix vsnprintf handling for MSVC compiler
Add handling for MSVC's vsnprintf behavior
2026-02-16 00:45:59 -07:00
deepend-tildeclub
c815a4629c Update python3.vcxproj with new configurations 2026-02-15 23:05:59 -07:00
deepend-tildeclub
41f140c971 Fix XML encoding issues in python3.vcxproj
Updated the Python plugin Visual Studio project to also undefine _DEBUG and Py_DEBUG (in both Release|Win32 and Release|x64), alongside the existing Py_REF_DEBUG and Py_TRACE_REFS, to avoid pulling in debug-only Python refcount symbols during linking.
2026-02-15 22:58:35 -07:00
deepend-tildeclub
89b0bc667b Update python3.vcxproj with UndefinePreprocessorDefinitions
Updated the Windows Python plugin project file to explicitly undefine Py_REF_DEBUG and Py_TRACE_REFS in both Release|Win32 and Release|x64 compile settings, preventing the build from pulling in CPython debug-refcount import symbols that are missing from normal Python import libraries.
2026-02-15 22:50:37 -07:00
deepend-tildeclub
d8cbab3bfc Modify python3.vcxproj with new preprocessor definitions
Updated the Python plugin Visual Studio project to define Py_NO_LINK_LIB in both Release|Win32 and Release|x64 configurations, so CPython headers won’t auto-link a debug import library like python314_d.lib.

Kept explicit linker input ("$(Python3Lib).lib") unchanged, so linking continues to use the configured Python library from project properties.
2026-02-15 22:40:12 -07:00
deepend-tildeclub
5a5daf153e Fix optimization settings in zoitechat.props 2026-02-15 22:33:01 -07:00
deepend-tildeclub
bf4782d3e1 Set wide handle for GTK3 horizontal paned widget 2026-02-15 22:31:45 -07:00
deepend-tildeclub
4ba03065bc Enable debug libraries and disable optimizations 2026-02-15 22:24:35 -07:00
747a1dca97 I made a targeted fix for the Plugins/Scripts Load button on Windows: before issuing LOAD ..., the selected file path is now copied and normalized to forward slashes (\ → /) under #ifdef WIN32, then quoted if needed. This keeps Linux behavior unchanged and avoids Windows path parsing issues in the command path.
The load dialog wiring remains the same (same callback and filters), only the command path construction was hardened.
2026-02-15 22:13:13 -07:00
16f2c6cc0d Updated Windows sysinfo HDD querying to use Win32_LogicalDisk filtered to local fixed drives (DriveType = 3) instead of Win32_Volume, with an inline comment explaining this avoids provider/RPC probe failures (such as Plan9/WSL-backed providers) seen in debugger sessions.
Updated the HDD size property read from WMI from Capacity to Size so it matches the new Win32_LogicalDisk query schema.
2026-02-15 16:51:11 -07:00
b569d24cd1 Added a new Windows-only startup helper, win32_set_gsettings_schema_dir(), that sets GSETTINGS_SCHEMA_DIR to <install-dir>/share/glib-2.0/schemas when the environment variable is not already set and the directory exists. This is intended to prevent GTK/GSettings initialization failures (like the file chooser crash path you shared).
Called that helper in fe_args() before gtk_init() on Windows so schema resolution is configured early in process startup.
2026-02-15 16:37:51 -07:00
7f4ffdb1e5 Added defensive path validation in gtkutil_file_req() so the file chooser only receives existing directories for initial/current folder setup, with fallback to get_xdir() when the requested folder is invalid. This is aimed at preventing the Windows crash that occurs immediately on pressing the Plugin GUI Load button (before file selection).
Wrapped shortcut-folder setup with existence checks and explicit GError handling so invalid config paths don’t propagate into GTK chooser failures/crashes on Windows.
Removed an unused get_xdir_fs extern declaration from this function while introducing a single xdir value reused across chooser setup logic.
2026-02-15 16:15:25 -07:00
60c05710b1 Reviewed src/fe-gtk/plugingui.c and fixed several crash-prone assumptions in the plugin GUI code path that can surface on Windows during plugin load/unload lifecycle edges:
Added type guards before using the stored plugin view/model (GTK_IS_TREE_VIEW, GTK_IS_LIST_STORE) so stale or unexpected object data doesn’t get dereferenced.
    Switched plugin list population to always pass non-null strings for name/version/description via plugingui_safe_string, preventing null string propagation into GTK model setters.
    Added an unload guard for empty/null modname before calling unload logic, preventing unsafe calls into plugin teardown paths with invalid identifiers.
2026-02-15 15:57:19 -07:00
3e59822753 Reviewed the plugin GUI code path and fixed two crash-prone null-handling cases that are especially risky on Windows plugin metadata paths:
fe_pluginlist_update() now guards against pl == NULL, pl->version == NULL, and pl->filename == NULL before dereferencing, and uses safe empty-string fallbacks for filename-backed columns. This prevents null dereferences from malformed or partially-populated plugin entries.
plugingui_unload() now early-returns when the selected plugin filepath is NULL/empty before suffix checks and command formatting, preventing invalid string operations in unload flow.
2026-02-15 15:41:28 -07:00
47a9729737 Added a new session guard helper for the plugin GUI so addon commands only run when there is a valid active session, and emit a user-facing error otherwise. This prevents handle_command() calls with an invalid/null session context (a likely crash path on Windows in edge UI states).
Updated plugin Unload and Reload callbacks to use the guarded session helper before issuing command-based unload/reload for script plugins, and to exit cleanly when no session is available.
Fixed plugin list layout sizing by forcing the tree view’s scrolled container to expand/fill inside the plugin window’s vbox, so the loaded-plugins list now uses full available height above the button row.
2026-02-15 15:23:39 -07:00
3f31d9bd5a Fixed the plugin/script load callback to avoid using a potentially stale session pointer from the file dialog callback userdata; it now resolves a safe target session at callback time. This prevents crashes when the original session is no longer valid.
Added a defensive check that reports a user-facing error ("No active session available for loading addons.") and exits early when no valid session exists, instead of calling handle_command() with invalid state.
Updated the file request call to pass NULL userdata for load operations, so the callback no longer retains a stale session pointer while the chooser is open.
2026-02-15 15:12:00 -07:00
95538794e3 Fixed the GTK file chooser handling to avoid dereferencing/processing invalid filenames by adding an early guard in gtkutil_check_file() for NULL/empty selections, which prevents the load flow from continuing with bad input.
Fixed the single-file open path in gtkutil_file_req_done() to fetch the filename once and only call gtkutil_check_file() when a non-NULL filename is returned, preventing the crash path when GTK returns no file on accept/load.
2026-02-15 15:02:26 -07:00
371b1caaa6 Updated win32/copy/copy.vcxproj to keep only fixed (non-wildcard) items in the top-level project ItemGroup, which is the part Visual Studio analyzes for the wildcard warning.
Moved all wildcard-based includes (*.dll, **\*, etc.) into an ItemGroup inside the Build target so they’re evaluated at build time instead of as VC project item definitions, preserving the copy behavior
2026-02-15 14:35:19 -07:00
deepend-tildeclub
64909893e7 Add additional DLLs to installer configuration 2026-02-15 14:19:00 -07:00
deepend-tildeclub
815f1c810e Add additional DLL dependencies to copy.vcxproj 2026-02-15 14:18:26 -07:00
deepend-tildeclub
1f031d8966 Add new DLLs and remove conditional helper sources 2026-02-15 10:18:20 -07:00
deepend-tildeclub
2a4aa2f8ac Fix Lua file path in installer script 2026-02-15 10:06:02 -07:00
deepend-tildeclub
d646607066 Update Lua file paths in installer script 2026-02-15 10:02:01 -07:00
deepend-tildeclub
c37b45308e Update Lua LGI DLL source path in installer script 2026-02-15 09:57:49 -07:00
deepend-tildeclub
2cec6a6778 Update library sources in installer script
Removed conditional compilation for x64 libraries and updated to use newer versions of libcrypto and libssl.
2026-02-15 09:52:40 -07:00
deepend-tildeclub
a4c635ee52 Rename fontconfig.dll to fontconfig-1.dll 2026-02-15 09:48:52 -07:00
deepend-tildeclub
4fc859d9ef Fix fontconfig DLL source name in installer script 2026-02-15 09:48:38 -07:00
deepend-tildeclub
f945e3c292 Update fontconfig.dll to fontconfig-1.dll 2026-02-15 09:48:15 -07:00
deepend-tildeclub
37d8126128 Update freetype.dll to freetype-6.dll in installer 2026-02-15 09:45:11 -07:00
deepend-tildeclub
86ab733de0 Add skipifsourcedoesntexist flag to theme source 2026-02-15 09:41:03 -07:00
deepend-tildeclub
95d87732c4 Implement fallback procedures for Inno Download Plugin
Added no-op procedures for Inno Download Plugin fallback.
2026-02-15 09:34:30 -07:00
deepend-tildeclub
8338e701b4 Clean up installer script by removing unused code
Removed Inno Download Plugin fallback procedures.
2026-02-15 09:33:46 -07:00
deepend-tildeclub
a384b8e295 Implement fallback procedures for Inno Download Plugin
Added no-op fallback procedures for Inno Download Plugin.
2026-02-15 09:32:34 -07:00
deepend-tildeclub
019f591627 Update installer.vcxproj with new configurations 2026-02-15 09:24:18 -07:00
deepend-tildeclub
8cbfb29a49 Modify installer project file for Inno Setup paths
Updated the installer project file to include checks for Inno Setup executable paths and added a directory creation command for the output path.
2026-02-15 09:14:24 -07:00
deepend-tildeclub
12470fd954 Update zoitechat.props for x64 platform support 2026-02-14 23:47:41 -07:00
deepend-tildeclub
fd9cd61991 Simplify build matrix for Windows workflow 2026-02-14 23:43:06 -07:00
deepend-tildeclub
4a40af7eda Update Inno Setup paths to version 6 2026-02-14 23:34:51 -07:00
deepend-tildeclub
58eed1682c Change Inno Setup path to version 6
Updated Inno Setup path from version 5 to 6.
2026-02-14 23:34:03 -07:00
deepend-tildeclub
481e7f78bc Update Inno Setup version in Windows build workflow 2026-02-14 23:33:29 -07:00
deepend-tildeclub
34de343fa6 Update installer.vcxproj with new XML structure 2026-02-14 23:23:46 -07:00
deepend-tildeclub
1c4fd1d02d Add ISCC path for pre-build event
Added ISCC path configuration for Inno Setup.
2026-02-14 23:18:26 -07:00
deepend-tildeclub
4c3b8cbec7 Remove Inno Setup 6 ISCC.exe path conditions
Removed conditions for Inno Setup 6 ISCC.exe paths.
2026-02-14 23:04:50 -07:00
deepend-tildeclub
727d08519a Update IsccPath conditions for Inno Setup versions 2026-02-14 23:00:02 -07:00
deepend-tildeclub
bb796bb364 Update installer.vcxproj.filters for resource files 2026-02-14 22:58:36 -07:00
deepend-tildeclub
b413762457 Update installer.vcxproj for new file inclusion 2026-02-14 22:58:15 -07:00
deepend-tildeclub
45ef0fcd26 Update artifact handling in Windows build workflow 2026-02-14 22:47:42 -07:00
deepend-tildeclub
eaef68f827 Fix artifact paths in Windows build workflow 2026-02-14 22:39:06 -07:00
deepend-tildeclub
5c4b04615d Update OwnFlags and add Lua and Python conditions 2026-02-14 22:27:30 -07:00
deepend-tildeclub
b77690d046 Refactor zoitechat.props configuration for clarity 2026-02-14 22:27:00 -07:00
deepend-tildeclub
49c97108e5 Update zoitechat.props for dependency paths and flags 2026-02-14 22:26:00 -07:00
deepend-tildeclub
14e15fa79d Add conditional library references for GTK3 and others 2026-02-14 22:22:34 -07:00
deepend-tildeclub
fc3e36e255 Refactor dependency paths in zoitechat.props 2026-02-14 22:20:34 -07:00
deepend-tildeclub
3bbce082de Merge branch 'master' into gtk3-prep 2026-02-14 22:14:01 -07:00
deepend-tildeclub
de7807bc6a Fix XML formatting in installer.vcxproj 2026-02-14 22:12:58 -07:00
deepend-tildeclub
45b9de5ff6 Update installer.vcxproj with new XML structure 2026-02-14 22:12:36 -07:00
deepend-tildeclub
63808bebde Fix XML formatting in installer.vcxproj 2026-02-14 22:11:23 -07:00
deepend-tildeclub
4927413bcb Change plugin and language descriptions to custom 2026-02-14 21:55:15 -07:00
deepend-tildeclub
c3c814b28d Modify installer project file for pre-build event
Updated pre-build event command to include ISCC path.
2026-02-14 21:37:13 -07:00
deepend-tildeclub
e0d22f7f6a Update GTK3 download URL in windows-build.yml 2026-02-14 21:32:01 -07:00
deepend-tildeclub
2a24686f29 Update Windows build workflow for GTK dependencies 2026-02-14 21:28:41 -07:00
deepend-tildeclub
be97bc30e3 Update perl.vcxproj to new XML format 2026-02-14 21:18:46 -07:00
deepend-tildeclub
c23d1d493f Fix XML formatting issues in python3.vcxproj 2026-02-14 21:17:28 -07:00
deepend-tildeclub
74934de4b8 Refactor lua.vcxproj to remove LuaEnabled condition 2026-02-14 21:04:24 -07:00
deepend-tildeclub
6efe62e277 Add error checks for Lua dependencies in props file 2026-02-14 20:56:46 -07:00
deepend-tildeclub
ae2757c515 Add Lua runtime and share directory conditions 2026-02-14 20:55:48 -07:00
deepend-tildeclub
c55b46e67f Remove hcpython3.dll check from Windows build workflow 2026-02-14 20:48:26 -07:00
deepend-tildeclub
15eae4f606 Refactor Python directory setup in Windows build 2026-02-14 20:43:02 -07:00
deepend-tildeclub
a1b339eecf Update Windows build workflow to exclude hcperl.dll
Removed 'hcperl.dll' from the plugin verification process in the Windows build workflow.
2026-02-14 20:17:57 -07:00
ba892240cb Fixed the Windows installer pre-build PowerShell invocation by replacing the bare powershell command with a configurable $(PowerShellPath) call in installer.vcxproj, and added stable flags (-NoProfile -ExecutionPolicy Bypass) to reduce environment-specific failures. This addresses the MSB3073/9009 command-not-found class of error you reported.
Added a PowerShellPath resolution chain in zoitechat.props so builds can use:

    POWERSHELL_EXE override,

    %WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe when present,

    fallback powershell.exe from PATH.
2026-02-14 17:56:27 -07:00
173d10f336 revert: back to 874ea99 2026-02-14 17:40:42 -07:00
deepend-tildeclub
14b08d1001 Update .gitattributes for binary file types 2026-02-14 17:27:31 -07:00
deepend-tildeclub
b52a2ca4cf Update YourGendefPath to point to gtk-build 2026-02-14 17:21:38 -07:00
b512c215a4 chore: enforce line endings via gitattributes 2026-02-14 17:05:04 -07:00
3e2268b391 chore: normalize line endings 2026-02-14 17:02:11 -07:00
874ea99492 win32/copy/copy.vcxproj
Switched hardcoded DLL names to wildcard patterns (ex: atk-1.0-0.dll → *atk-1.0-0.dll, iconv.dll → *iconv*.dll, etc.) so it correctly picks up lib* prefixed builds.
  Made Enchant provider copying resilient by copying lib\enchant\*.dll instead of a single hardcoded libenchant_myspell.dll.
  Added optional copy support for LuaJIT DLLs (luajit*.dll) alongside lua51.dll.

win32/installer/zoitechat.iss.tt
  Updated DLL Source: entries to match real-world names from dependency bundles using wildcards (*glib-2*.dll, *gtk-3*.dll, etc.).
  Added optional LuaJIT inclusion (skip if missing) and wildcarded girepository.

win32/zoitechat.props
  Added env overrides so CI (and humans) can actually control paths:
  ZOITECHAT_DEPS_PATH
  ZOITECHAT_PYTHON3_PATH
  already supported ISCC_EXE and now it actually matters.
  Fixed glib-genmarshal handling to prefer glib-genmarshal.exe if present (and only use Python script path if needed).
  Added library-name auto-detection for MSVC import libs (gtk-3.lib vs gtk-3.0.lib vs libgtk-3.lib, etc.) so linking doesn’t die just because the bundle names differ.
  Ensured InstallerEnabled gets re-evaluated after IsccPath is resolved (GTK3 had the order wrong, so installer builds could be silently disabled).

.github/workflows/windows-build.yml
  Made artifact collection and plugin validation tolerate win32 vs Win32 output directory naming, instead of assuming humans are consistent (they aren’t).
2026-02-14 15:57:41 -07:00
deepend-tildeclub
20b0aab470 Modify pre-build event for locale directory handling
Updated pre-build event command to check for existence before removing the locale directory.
2026-02-14 14:23:53 -07:00
deepend-tildeclub
4c3e9ffad4 Add Lua dependency installation and validation steps 2026-02-14 14:05:17 -07:00
deepend-tildeclub
a8db164ef7 Change plugin and language types to normal custom 2026-02-14 13:25:05 -07:00
deepend-tildeclub
f5feb7a0de Update Windows build workflow for GTK3 Gvsbuild
Refactor GTK3 Gvsbuild download and extraction logic based on architecture.
2026-02-14 13:14:24 -07:00
deepend-tildeclub
fdd3664a6e Update zoitechat.props with new XML structure 2026-02-14 12:51:52 -07:00
deepend-tildeclub
9fdc5cdf28 Update Lua plugin build message for clarity 2026-02-14 12:50:35 -07:00
deepend-tildeclub
e9cf931714 Fix XML formatting in zoitechat.props 2026-02-14 12:16:41 -07:00
deepend-tildeclub
9b2cf3de43 Update copy.vcxproj with new XML structure 2026-02-14 12:10:10 -07:00
deepend-tildeclub
7f9920554e Update typelib source path from girepository-2.0 to 1.0 2026-02-14 11:55:20 -07:00
deepend-tildeclub
0e3322d4a8 Update download link for GTK3 Gvsbuild archive 2026-02-14 11:49:41 -07:00
deepend-tildeclub
3a5fc95725 Update GTK download link and extraction path 2026-02-14 09:42:03 -07:00
deepend-tildeclub
b7496a4732 Implement error handling for GTK extraction
Added error handling for gtk.7z extraction failure.
2026-02-14 02:58:17 -07:00
deepend-tildeclub
6fd191f32d Rename girepository-2.0.dll to girepository-2.0-0.dll 2026-02-14 02:31:35 -07:00
deepend-tildeclub
eba86758f2 Update copy.vcxproj with new XML structure 2026-02-14 02:27:44 -07:00
deepend-tildeclub
7fa5e6db3c Update copy.vcxproj with new XML structure 2026-02-14 02:21:57 -07:00
deepend-tildeclub
f678491eb3 Fix XML formatting in copy.vcxproj 2026-02-14 02:21:03 -07:00
deepend-tildeclub
b1f3bf85c4 Update copy.vcxproj with new XML structure 2026-02-14 02:20:26 -07:00
deepend-tildeclub
0117092f83 Update girepository DLL and typelib references 2026-02-14 02:15:37 -07:00
deepend-tildeclub
8ea9bffba2 Refactor zoitechat.props for dependency paths and validation
Updated the XML structure and paths in zoitechat.props to ensure correct dependency resolution and build environment validation.
2026-02-14 02:08:48 -07:00
deepend-tildeclub
12d805fad4 Add Inno Setup compiler path detection in workflow 2026-02-14 02:08:12 -07:00
deepend-tildeclub
2742b62ef1 Update zoitechat.props for dependency paths 2026-02-14 01:58:53 -07:00
deepend-tildeclub
0872d3b445 Fix XML formatting in installer.vcxproj 2026-02-14 01:55:01 -07:00
deepend-tildeclub
e654bfd127 Update zoitechat.props with new configuration 2026-02-14 01:54:11 -07:00
deepend-tildeclub
6f493ed47e Update zoitechat.props with new property definitions 2026-02-14 01:47:51 -07:00
deepend-tildeclub
2028a21d14 Update Visual Studio path in Windows build workflow 2026-02-14 01:41:21 -07:00
deepend-tildeclub
08d0b25619 Update Windows build runner to use 2022 version 2026-02-14 01:36:46 -07:00
deepend-tildeclub
eba4edf7a7 Merge branch 'master' into gtk3-prep 2026-02-14 01:35:34 -07:00
deepend-tildeclub
f8e1536336 Change toolset to v142 and update dependencies
Updated project file to use v142 toolset and modified dependencies.
2026-02-14 01:32:39 -07:00
deepend-tildeclub
8b90555511 Change PlatformToolset from v143 to v142 2026-02-14 01:32:00 -07:00
deepend-tildeclub
f32b8534a4 Change PlatformToolset from v143 to v142 2026-02-14 01:31:14 -07:00
deepend-tildeclub
26453a8ad4 Update print statement from 'Hello' to 'Goodbye' 2026-02-14 01:30:39 -07:00
deepend-tildeclub
98f1e8af57 Update print statement from 'Hello' to 'Goodbye' 2026-02-14 01:29:09 -07:00
deepend-tildeclub
ce597da1a3 Upgrade PlatformToolset from v142 to v143 2026-02-14 01:28:39 -07:00
deepend-tildeclub
dba80a5a9e Upgrade PlatformToolset from v142 to v143 2026-02-14 01:28:08 -07:00
deepend-tildeclub
3c94112aeb Upgrade project to use v143 toolset
Updated project file to use v143 toolset and adjusted configurations.
2026-02-14 01:27:37 -07:00
deepend-tildeclub
855b892b1e Update fmt.Println message from 'Hello' to 'Goodbye' 2026-02-14 01:25:25 -07:00
deepend-tildeclub
22b74dc70b Upgrade PlatformToolset from v142 to v143 2026-02-14 01:24:53 -07:00
deepend-tildeclub
014ba9e868 Upgrade PlatformToolset from v142 to v143 2026-02-14 01:24:25 -07:00
deepend-tildeclub
11f3beae8b Upgrade project to use v143 toolset
Updated project file to use v143 toolset and modified dependencies.
2026-02-14 01:23:43 -07:00
deepend-tildeclub
ac1065bfa6 Change Windows build runner from 2022 to 2019 2026-02-14 01:17:43 -07:00
deepend-tildeclub
84501d087c Simplify Visual Studio setup in Windows build workflow 2026-02-14 01:14:30 -07:00
deepend-tildeclub
60f2b53866 Enhance Visual Studio setup in Windows build workflow 2026-02-14 01:10:05 -07:00
deepend-tildeclub
c9e8d24e06 Change build environment to Windows 2022
Updated the Windows build workflow to use Visual Studio 2022.
2026-02-14 01:01:25 -07:00
deepend-tildeclub
2436c3bad1 Update installer.vcxproj XML structure 2026-02-14 00:53:47 -07:00
deepend-tildeclub
32358a876b Update zoitechat.props for dependency paths 2026-02-14 00:49:32 -07:00
deepend-tildeclub
a05c596e48 Update print statement from 'Hello' to 'Goodbye' 2026-02-13 22:08:09 -07:00
b2d8336dd0 changes to innosetup version / path. changed to precompiled gtk3 binaries. 2026-02-13 21:49:58 -07:00
cfdc275a88 Updated the Windows GitHub Actions workflow to stop cloning/installing gvsbuild and running gvsbuild build for GTK dependencies, and instead download/extract the precompiled GTK archive you specified (gtk-x64-2026.7z).
Preserved the existing Win32 alias junction logic, but now gate it on both the win32 matrix target and the presence of C:\gtk-build\gtk\x86 from the extracted archive.
2026-02-13 21:40:35 -07:00
2dd2d18ade removed extra character 2026-02-13 20:47:03 -07:00
3d9a92787b Fixed IsccPath values in win32/zoitechat.props by removing embedded quotes from the default Program Files paths, so the path is stored raw and can be quoted exactly once at invocation time. This addresses the “cannot find iscc.exe” behavior caused by double/nested quoting. 2026-02-13 20:44:39 -07:00
9acec081a4 Fixed installer detection to evaluate IsccPath safely when the path contains spaces by changing the existence check to Exists('$(IsccPath)').
Fixed ISCC path normalization by trimming surrounding quotes from ZOITECHAT_ISCC_PATH and storing discovered default paths unquoted (so they can be checked reliably with Exists(...)).
Fixed installer invocation by quoting $(IsccPath) at execution time in the pre-build command, which supports paths like C:\Program Files (x86)\Inno Setup 6\ISCC.exe
2026-02-13 20:40:48 -07:00
6d101c4e10 Updated Windows build props so IsccPath can be set explicitly with ZOITECHAT_ISCC_PATH, then auto-detected across common install locations (ProgramFiles, ProgramFiles(x86), ProgramW6432) before falling back to the default path. This reduces false “iscc.exe not found” skips when Inno Setup is installed in a non-default location. 2026-02-13 20:26:36 -07:00
deepend-tildeclub
09e9e7314b Update dependency paths and Inno Setup version 2026-02-13 20:19:47 -07:00
a86dc5ae85 Added build capability switches in the shared Windows props file so optional components are only enabled when their prerequisites exist:
Python3Enabled (python executable + import lib + cffi)
   PerlEnabled (perl executable + perl runtime DLL + gendef.exe)
   InstallerEnabled (Inno Setup iscc.exe).
Updated the Python plugin project to compile only when Python3Enabled is true, and otherwise emit a clear skip message instead of failing prebuild/import steps.
Updated the Perl plugin project similarly to gate build steps on PerlEnabled and print a skip message when prerequisites are missing.
Updated the installer project so it only uses C++ targets when InstallerEnabled is true, with a fallback skip message when Inno Setup is unavailable.
2026-02-13 20:14:39 -07:00
bb70bcb4e3 Updated the Windows installer pre-build script to create $(ZoiteChatBin) if it doesn’t exist before generating zoitechat.iss, which addresses the “The system cannot find the path specified” failure path during installer project builds. 2026-02-13 20:04:12 -07:00
c86701ee3c fix extra character on line 47 2026-02-13 19:59:25 -07:00
01ec120536 Updated Windows build property resolution so GlibGenMarshal runs through Python when only $(DepsRoot)\bin\glib-genmarshal (no .exe) exists. This prevents MSBuild from trying to execute a script as a native executable on Windows.
Kept existing behavior intact for glib-genmarshal.exe and glib-genmarshal.py paths; only the script-without-extension case changed.
2026-02-13 19:56:49 -07:00
f734f230fd fix path for girepository dll 2026-02-13 19:47:45 -07:00
5c7697a765 Reworked win32/zoitechat.props to follow the original GTK2-style dependency layout for GTK3 by setting DepsRoot back to $(YourDepsPath)\$(PlatformName)\release (removing the GtkPlatform indirection and direct-root auto-detection added previously). 2026-02-13 19:41:13 -07:00
ca7340530d Updated Win32 path macro handling in win32/zoitechat.props so local Your*Path values can now be sourced from environment variables (ZOITECHAT_DEPS_PATH, ZOITECHAT_GENDEF_PATH, ZOITECHAT_PERL_PATH, ZOITECHAT_PYTHON3_PATH, ZOITECHAT_WINSPARKLE_PATH) before falling back to the existing c:\gtk-build\... defaults. This makes CI/dev-shell overrides much easier without manually editing the props file each time.
Added a new MSBuild target (ValidateWindowsBuildEnvironment) that runs before build prep and fails fast with explicit errors when GTK/GLib/OpenSSL headers or Python are missing, instead of allowing a long cascade of downstream compile/link/copy failures.
2026-02-13 19:28:34 -07:00
9aceea0134 Fixed the preferences layout packing so the main content region can expand vertically and use the full window height in GTK3 builds by packing the notebook with expand/fill enabled (TRUE, TRUE).
Fixed the top-level preferences window layout so the central horizontal content area expands within the main vertical container, instead of staying at natural height.
2026-02-13 18:45:13 -07:00
deepend-tildeclub
7df778fc71 Merge pull request #45 from ZoiteChat/c17
C17
2026-02-12 22:24:04 -07:00
e855b9f160 Added Ctrl+Alt+S (<Primary><Alt>s) to the default keyboard shortcut list in fkeys.c and mapped it to Insert in Buffer with D1:\036 (strikethrough control code), so strikethrough is available by default via that shortcut. 2026-02-12 15:19:22 -07:00
54428e9e40 Added a shared escape decoder for keybinding Data fields so key actions can interpret \n, \r, \t, \\, and hex-byte escapes like \x1e (raw byte insertion), with graceful fallback for invalid/unknown escapes. This is what enables entering strikethrough control byte 0x1E via keybindings (e.g., Data 1: \x1e).
Updated Run Command to use the shared decoder instead of its previous newline-only parser, so it now supports the same escape set consistently.
Updated Insert in Buffer to decode escapes before insertion, so \xNN inserts raw bytes rather than literal text.
Updated key action help text to document the supported escape syntax for both Run Command and Insert in Buffer.
2026-02-12 14:34:38 -07:00
deepend-tildeclub
a975ddc80a Merge pull request #57 from ZoiteChat/master
merge master changes into C17.
2026-02-12 14:27:21 -07:00
deepend-tildeclub
b128a7ca59 Merge pull request #56 from ZoiteChat/master
merge master changes into gtk3-prep
2026-02-12 14:26:11 -07:00
3dd54d5fea Added additional Windows GTK glib-genmarshal discovery fallbacks for Python-based script locations to handle missing executables in common layouts.
Broadened ATK import library detection to include libatk-1.0-0.lib for Win32 builds.
2026-02-07 08:45:47 -07:00
45ef2da0ac Added Windows dependency detection to enable/disable the Lua plugin build based on available headers and skip builds when missing.
Updated the Windows build to prefer glib-genmarshal executables with a Python fallback for marshal generation.
Made GTK link dependencies more robust by selecting available ATK library names before assembling GTK libs.
2026-02-06 00:24:24 -07:00
6491dc1bde Added JPEG runtime DLL patterns to the Windows release copy step so the build artifacts include JPEG dependencies required by GTK stack DLLs.
Included JPEG runtime DLLs in the Windows installer payload to ensure they are shipped with both x86 and x64 packages.
2026-02-06 00:03:08 -07:00
1eee70ff9b Updated the Windows installer to package Lua lgi DLLs and scripts from the Lua 2.1 paths produced by the build, instead of the older paths, so the files are found during packaging. 2026-02-05 23:16:12 -07:00
deepend-tildeclub
e77aca2037 Fix hicolor icon theme package name in build script 2026-02-05 22:31:36 -07:00
deepend-tildeclub
981cf94719 Add luajit and gstreamer to build process 2026-02-05 22:14:47 -07:00
0550fb90c5 Documented that the GTK 3 immodules are input method (IME) modules and printbackends are GTK 3 printing backends, noting they are still GTK-related but may be absent in some CI dependency bundles. 2026-02-05 21:33:17 -07:00
deepend-tildeclub
8cf9f8ba9d Change SourceDir from '..\release' to '..\rel' 2026-02-05 16:51:43 -07:00
deepend-tildeclub
1eb61cfd24 Update dependencies in openbsd-build.yml
Removed 'libappindicator' from the list of dependencies.
2026-02-05 15:38:02 -07:00
75d54e25e9 Made tray_menu_destroy available in GTK3 builds to avoid implicit declaration errors during tray menu cleanup callbacks. 2026-02-05 15:33:59 -07:00
930e91834f Updated the tray menu callback compilation guard so the GtkStatusIcon popup handler is built for non-AppIndicator backends, fixing the missing symbol during linking. 2026-02-05 15:24:17 -07:00
8ad1394f1a Expanded the GTK3 deprecated-status-icon prototype guard so non-AppIndicator builds can compile without implicit function errors. 2026-02-05 15:12:30 -07:00
deepend-tildeclub
a53ac4479b Modify GTK3 status icon definitions for Windows
Updated conditional compilation for GTK3 on Windows to exclude appindicator backend.
2026-02-05 14:55:37 -07:00
bd707e7514 Yes — it should fall back to the X11/StatusIcon backend, but the GTK3 code path was unconditionally including the appindicator header and selecting the appindicator backend. I updated the tray backend selection to only use appindicator when the library is available and otherwise fall back to GtkStatusIcon, which avoids the missing header error and restores the intended X11 fallback. 2026-02-05 14:17:46 -07:00
deepend-tildeclub
eafc9ec997 Update gio-2.0 and GLIB version requirements 2026-02-05 12:01:49 -07:00
deepend-tildeclub
9a8b3fc232 Update gio-2.0 dependency version requirement 2026-02-05 11:56:31 -07:00
deepend-tildeclub
fda50f0ff3 Update Meson version requirements and dependencies 2026-02-05 11:54:10 -07:00
deepend-tildeclub
65411b8ccb Update gio-2.0 and GLib version requirements 2026-02-05 11:53:17 -07:00
deepend-tildeclub
5c7991e873 Update gio-2.0 and GLib version requirements 2026-02-05 11:51:03 -07:00
f42157fdd7 Made GTK3 AppIndicator dependencies optional and only define AppIndicator macros when the dependency is found.
Added compile-time selection to use AppIndicator when available and fall back to GtkStatusIcon otherwise, keeping the status-icon backend available for non-AppIndicator builds (including GTK3 fallback).
2026-02-05 11:25:07 -07:00
deepend-tildeclub
f80c3adfe0 Update SourceDir from 'rel' to 'release' 2026-02-05 11:20:29 -07:00
deepend-tildeclub
1c8db65b20 Change SourceDir path in installer script 2026-02-05 11:20:06 -07:00
deepend-tildeclub
1e21f2b148 Update SourceDir from 'rel' to 'release' 2026-02-05 11:19:02 -07:00
deepend-tildeclub
629f0d6502 Add libappindicator to OpenBSD build dependencies 2026-02-05 10:24:04 -07:00
deepend-tildeclub
b69edb7936 Update GTK version in OpenBSD build workflow 2026-02-05 10:04:20 -07:00
c49d8e4d44 Updated the Windows installer file list to accept both legacy libxml2-*.dll and new xml2-*.dll names, avoiding missing-file failures in builds. 2026-02-05 09:57:26 -07:00
045134fcff Updated the Windows installer file list to include libcrypto/libssl DLLs via wildcard matches, covering OpenSSL 3 artifacts and avoiding missing-file errors in builds. 2026-02-05 09:03:50 -07:00
9e9a0be80d Ensure gtkutil.h derives HAVE_GTK3 from GTK_MAJOR_VERSION when missing so GTK3/GTK4 builds select the correct typedefs and declarations in Windows builds that include gtkutil.h directly.
Link libX11 on non-Windows builds regardless of GTK2/GTK3 to satisfy the X11 symbols used in gtkutil.c, fixing the GTK2 linker failure.
2026-02-05 08:14:59 -07:00
0dd25cb631 Set the GTK program name/class to the desktop ID before initialization to ensure window-to-desktop-entry mapping uses the correct identifier.
Updated the desktop file’s StartupWMClass to match the desktop ID for consistent icon matching.
2026-02-05 02:05:48 -07:00
eb46631a7d Added GTK utility helpers for box/grid creation and attachment that map GTK3 layout settings while preserving GTK2 fallbacks.
Updated multiple GTK UI layout paths (setup, server list, notify, ban list, join dialog, and menu) to use the new helpers for GTK3-safe box/grid creation and attachment behavior.
Added GTK3-safe attach option definitions and updated helper signatures to avoid GTK2-only types/macros in public headers.
Updated gtkutil grid-attachment helpers to use the new attach option type in alignment/expansion logic.
Switched banlist grid attachments to the new helper option flags for GTK3 builds.
2026-02-05 01:59:15 -07:00
0074a8ba1e Updated the Windows installer script to skip missing MS-Windows theme sources so builds don’t fail when that directory is absent. 2026-02-05 01:31:03 -07:00
e187252afd Scoped GTK2 action-area layout to #if !HAVE_GTK3 in the quit dialog while keeping GTK3 action widget usage unchanged.
Switched the join dialog OK button to gtk_dialog_add_action_widget() for GTK3 while preserving GTK2 action-area packing and layout.
2026-02-05 00:04:07 -07:00
0349e44856 Guarded the GTK3/Wayland redraw path in gtk_xtext_render_page with #if HAVE_GTK3 so GTK2 builds render immediately instead of waiting for expose events. 2026-02-05 00:03:35 -07:00
deepend-tildeclub
d8985e9f91 Refactor copy.vcxproj for improved XML structure
Updated XML formatting and adjusted file includes for dependencies.
2026-02-04 23:38:03 -07:00
deepend-tildeclub
4a70ae125d Update DLL source patterns in installer script 2026-02-04 23:36:29 -07:00
deepend-tildeclub
0b785c8e59 Add enchant library to Windows build process 2026-02-04 23:29:05 -07:00
ae303db62b Added a fallback for gdk-3.lib detection in the Windows dependency library list to cover builds where the import library is named without the .0/-0 suffix. 2026-02-04 22:28:04 -07:00
45300a233b Fixed GTK2 build guard in gtkutil_tray_icon_supported by using #if HAVE_GTK3 so GTK2 builds skip the GTK3-only GDK_IS_X11_DISPLAY check. 2026-02-04 21:07:49 -07:00
65f417cf7d Added a GTK3 version fallback in sexy-spell-entry.c so Windows builds use the GTK3 code paths even when HAVE_GTK3 isn’t defined by config headers.
Avoided MSVC unused-variable warnings in setup.c by scoping GTK2-only locals to GTK2 code paths.
2026-02-04 21:03:04 -07:00
deepend-tildeclub
07322293f3 Update zoitechat.props with new configuration 2026-02-04 18:16:59 -07:00
deepend-tildeclub
3efd975d2f Update DLL sources for GTK 3 in installer script 2026-02-04 18:08:52 -07:00
deepend-tildeclub
c9ddfc086c Migrate project from GTK 2 to GTK 3
Updated project file to include GTK 3 dependencies and configurations.
2026-02-04 17:45:39 -07:00
deepend-tildeclub
fb952dd209 Add GTK version check in fe-gtk.h
Added a fallback in the GTK frontend header to derive HAVE_GTK3 from GTK_MAJOR_VERSION when the macro is missing, so Windows GTK3 builds don’t compile GTK2-only code paths by mistake.
2026-02-04 15:34:24 -07:00
deepend-tildeclub
572e2173c3 Merge pull request #54 from ZoiteChat/master
sync with master
2026-02-04 14:46:48 -07:00
752b10273b Updated the gtkobject.h include guard to rely on GTK_MAJOR_VERSION, preventing GTK3 Windows build failures when HAVE_GTK3 isn’t defined. 2026-02-04 14:42:34 -07:00
9aba312c8e Resolved the merge conflict in STS capability handling by keeping the clearer warning message for missing values. 2026-02-04 13:13:51 -07:00
983ae5337b Added a diagnostic message when an STS capability token is missing its value, while keeping the ignore behavior intact. 2026-02-04 12:57:07 -07:00
deepend-tildeclub
0fd51e5c8a Modify zoitechat.props for Gtk3 support and dependencies
Updated project properties to include Gtk3 definitions and improved dependency handling.
2026-02-04 12:46:32 -07:00
f58785c2e0 Added an explicit diagnostic when an STS capability token lacks a value while keeping the ignore policy unchanged. 2026-02-04 12:42:22 -07:00
3d030a96b7 Updated sts_handle_capability to return FALSE after logging the no‑TLS warning, so the insecure upgrade path doesn’t stop capability negotiation; it still returns TRUE only when an STS upgrade/reconnect is initiated or already in progress.
Confirmed inbound_cap_ls only returns early when sts_upgrade_triggered is set by sts_handle_capability, which now only happens for real upgrade/reconnect initiation or in‑progress upgrades.
2026-02-04 12:42:04 -07:00
2ecf1c18fb Added STS value parsing in CAP ACK handling so sts= capability values are applied immediately before toggling capabilities. 2026-02-04 12:41:32 -07:00
eae5a209d3 Updated STS parsing to ignore preload tokens that include a value while preserving duplicate-preload rejection for valid tokens. 2026-02-04 11:58:13 -07:00
78a00b5b88 Updated STS policy handling to preserve any existing stored port on secure updates rather than overwriting it from the current TLS port, keeping secure-path updates focused on duration/preload. 2026-02-04 11:57:54 -07:00
deepend-tildeclub
1ac688ec19 Update zoitechat.props with new dependencies and settings 2026-02-04 11:41:47 -07:00
b9bc65e3c2 Updated STS parsing to only accept preload when it appears without a value, ignoring tokens like preload=0. 2026-02-04 11:39:20 -07:00
3d8d3958ea Updated STS parsing to treat duplicate port, duration, or preload keys as invalid by returning FALSE immediately when repeats are encountered. 2026-02-04 11:35:40 -07:00
deepend-tildeclub
1567062636 Update zoitechat.props with new project settings 2026-02-04 10:53:20 -07:00
b09e6a5405 Updated STS policy handling to require an active connection port when already on TLS, ignoring any advertised port token before storing the profile. 2026-02-04 10:30:13 -07:00
89a8f3eb0a Updated STS handling to require an explicit port in insecure-connection capability upgrades, ignoring incomplete policies without upgrading. 2026-02-04 10:19:26 -07:00
deepend-tildeclub
b90a9a3357 Update zoitechat.props with new XML structure 2026-02-04 10:15:23 -07:00
deepend-tildeclub
fe4abe7d85 Fix formatting and update artifact upload settings 2026-02-04 09:31:40 -07:00
deepend-tildeclub
a650916105 Fix XML formatting in zoitechat.props 2026-02-04 09:14:32 -07:00
deepend-tildeclub
4f294f4eae Add libxml2 to gvsbuild command in workflow 2026-02-04 08:16:44 -07:00
deepend-tildeclub
3ad525533d Update Windows build workflow to exclude Lua steps
Removed Lua build and extraction steps from the workflow.
2026-02-04 00:08:58 -07:00
deepend-tildeclub
6979dce7e8 Merge pull request #53 from ZoiteChat/master
sync to master
2026-02-03 22:10:53 -07:00
deepend-tildeclub
6f1f82a7fb Delete .github/workflows/msys-build.yml 2026-02-03 22:10:35 -07:00
deepend-tildeclub
3290f15439 Remove MSYS2 Build badge from README
Removed MSYS2 build badge from the README.
2026-02-03 22:06:42 -07:00
deepend-tildeclub
0a737c4d72 Delete .github/workflows/msys-build.yml 2026-02-03 22:05:48 -07:00
8025884e3b fix windows build lua dependency.
Add attempted Solus Build.
2026-02-03 22:00:51 -07:00
a8a7627161 Updated the Windows CI Lua download/extraction step to use tar -xzf and added a guard to fail fast if the extract folder is missing, preventing missing-path errors later in the job. 2026-02-03 21:18:19 -07:00
18e4b74d0b Added a fallback to TEMP and ensured the temp directory exists before downloading/extracting Lua in the Windows workflow to avoid invalid RUNNER_TEMP paths. 2026-02-03 19:34:30 -07:00
614bbd1a0b Added Lua 5.4.6 download/build steps in the Windows GitHub Actions workflow, staging headers, libraries, and DLLs into the dependency tree for the build to consume. 2026-02-03 16:22:26 -07:00
deepend-tildeclub
c4d4dd1e5a Update build command to include OpenSSL
Added OpenSSL to the build command for GTK3.
2026-02-03 13:46:39 -07:00
303d5cc581 preparation for upcoming release 2.17.4 2026-02-03 13:28:35 -07:00
deepend-tildeclub
6055170b19 Merge pull request #52 from ZoiteChat/codex/update-project-settings-for-gtk3-builds
Windows MSBuild: improve gvsbuild OpenSSL/Lua/zlib detection and include wiring
2026-02-03 13:22:43 -07:00
deepend-tildeclub
b30ee02353 Merge branch 'gtk3-prep' into codex/update-project-settings-for-gtk3-builds 2026-02-03 13:22:34 -07:00
deepend-tildeclub
8b22990eba Improve gvsbuild dependency detection 2026-02-03 13:20:25 -07:00
deepend-tildeclub
f402699512 Merge pull request #51 from ZoiteChat/codex/update-project-settings-for-gtk3-builds
Windows MSBuild: detect gvsbuild OpenSSL/Lua/zlib layouts
2026-02-03 13:00:11 -07:00
deepend-tildeclub
8606e505d1 Adjust Windows build paths for gvsbuild deps 2026-02-03 12:59:31 -07:00
deepend-tildeclub
eeee22c914 Merge pull request #50 from ZoiteChat/codex/update-build-configuration-for-gtk3
Update Windows gvsbuild dependency paths and library detection
2026-02-03 12:35:12 -07:00
deepend-tildeclub
0f4420b8c7 Update gvsbuild Windows deps settings 2026-02-03 12:34:22 -07:00
d2140e4cec Updated the Windows CI workflow to run gvsbuild against Visual Studio 2019 to match the runner’s installed toolchain. 2026-02-03 12:14:15 -07:00
872c5d6572 Switched tray menu icon defines to use GTK3 icon names when GTK3 is enabled, avoiding deprecated GTK stock IDs on Windows builds.
Added GtkStatusIcon function prototypes for GTK3 Windows builds when deprecated APIs are hidden, preventing implicit declaration errors.
2026-02-03 12:06:04 -07:00
11b11c9166 Guarded AppIndicator includes and GTK3 tray integration so Windows builds skip libappindicator, while Windows uses the status icon tray backend instead.
Enabled Windows tray menu handling paths to match the status icon backend on WIN32, even when GTK3 is enabled.
2026-02-03 11:52:22 -07:00
995cba88ff Updated the Windows CI gvsbuild invocation to use the named Visual Studio version vs2022 instead of the numeric value, matching current gvsbuild options. 2026-02-03 11:39:58 -07:00
deepend-tildeclub
92a35ea3e9 Remove libayatana-appindicator from build dependencies 2026-02-03 11:38:49 -07:00
c22d141237 Updated the Windows GitHub Actions workflow to build GTK3 from the ZoiteChat gvsbuild repo (and map Win32 output paths) instead of using the older prebuilt GTK archive, aligning with the required GTK3 build flow for Windows CI. 2026-02-03 11:34:18 -07:00
415066345a Fixed the GTK3 input-style toggle to remove the CSS provider and reset cached theme/color state when the preference is disabled, preventing stale styling from persisting or blocking a clean re-apply later. 2026-02-03 11:15:52 -07:00
deepend-tildeclub
81a669a199 Merge pull request #49 from ZoiteChat/master
sync with master
2026-02-03 11:09:39 -07:00
ffa7afd09c adjustment for windows builds 2026-02-02 15:53:38 -07:00
deepend-tildeclub
dab682f90d Refactor Windows build workflow for GTK dependencies
Removed MSYS2 setup step and adjusted dependency installation for GTK build. Updated various paths and commands for consistency.
2026-02-02 12:30:44 -07:00
deepend-tildeclub
35740637df Update Windows build workflow for branch restrictions
Restrict push events to the master branch and remove unused functions for DLL aliasing and Enchant2 setup.
2026-02-02 00:23:49 -07:00
deepend-tildeclub
57fb1eb27b Update Windows build workflow for branch handling 2026-02-02 00:15:47 -07:00
deepend-tildeclub
069c6a3f81 Implement alias handling for DLLs and headers
Added functions to copy DLL and header aliases for Enchant2 and other libraries, ensuring they are present in the specified directories.
2026-02-02 00:06:24 -07:00
deepend-tildeclub
61da248c41 Add Ensure-LibJpeg function to manage JPEG library 2026-02-01 23:54:45 -07:00
deepend-tildeclub
0f36b273f1 Add Ensure-LibXml2 function for libxml2 management
Added Ensure-LibXml2 function to manage libxml2.lib generation from DLLs. This function checks for existing libraries, generates a new one if necessary, and creates compatibility aliases.
2026-02-01 23:46:04 -07:00
deepend-tildeclub
770922cdda Implement Ensure-Zlib function for zlib handling
Added Ensure-Zlib function to build and install zlib.lib if missing.
2026-02-01 23:36:15 -07:00
deepend-tildeclub
343ad0ffd5 Replace Ensure-LuaHeaders with Ensure-LuaJit function 2026-02-01 23:27:51 -07:00
deepend-tildeclub
e134a99e12 Update MSYS2 setup and enhance comments
Refactor MSYS2 setup and improve comments for clarity.
2026-02-01 23:04:16 -07:00
deepend-tildeclub
f8139d094a Change Lua dependency to Lua 5.1.5 in build script
Updated Lua dependency from LuaJIT to Lua 5.1.5 and modified related build steps.
2026-02-01 22:49:30 -07:00
deepend-tildeclub
1e8efcdc5a Refactor comments and add zlib legacy support
Updated comments for clarity and added zlib legacy name handling.
2026-02-01 22:39:34 -07:00
deepend-tildeclub
81abfe3175 Refactor Windows build workflow and clean up comments 2026-02-01 22:25:35 -07:00
deepend-tildeclub
cf2e44f3d5 Refactor Windows build workflow by removing MSYS2 setup
Removed MSYS2 setup and dependency installation steps for GTK build fallback. Updated Python version syntax and adjusted paths for dependencies.
2026-02-01 22:25:20 -07:00
deepend-tildeclub
049d3c19af Add MSYS2 setup and improve dependency installation
Added MSYS2 setup step for GTK build fallback and updated the installation process for dependencies. Enhanced error handling and ensured proper paths for GTK and Lua headers.
2026-02-01 22:24:25 -07:00
deepend-tildeclub
ffe8a9f7a6 Setup MSYS2 for GTK build fallback
Added MSYS2 setup step for GTK build fallback in GitHub Actions workflow.
2026-02-01 22:00:38 -07:00
deepend-tildeclub
2da635c048 Refactor GTK3 bundle extraction and handling 2026-02-01 21:29:24 -07:00
deepend-tildeclub
83ed374b99 Enhance GTK3 bundle handling in Windows build workflow
Updated PowerShell script to include new functions for GTK3 bundle handling and improved error handling. Adjusted the build process to ensure compatibility with legacy GTK bundles.
2026-02-01 20:39:34 -07:00
deepend-tildeclub
9837ef901b Add libayatana-appindicator to MSYS build dependencies 2026-02-01 19:46:04 -07:00
deepend-tildeclub
01e48bc074 Update Zoitechat JSON configuration
Removed unnecessary environment variable and socket arguments.
2026-02-01 19:33:16 -07:00
deepend-tildeclub
49c0299d68 Add environment variable for GDK backend options 2026-02-01 19:22:44 -07:00
deepend-tildeclub
4a8e17e80e Change Python dependency to false in Zoitechat config 2026-02-01 19:08:50 -07:00
deepend-tildeclub
8c8912c651 Change Python build option to specify interpreter 2026-02-01 18:59:57 -07:00
deepend-tildeclub
8be35d2a30 Refactor Windows build workflow for improved clarity 2026-02-01 18:51:09 -07:00
deepend-tildeclub
2a4612672a Refactor Windows build workflow and update steps 2026-02-01 18:35:44 -07:00
deepend-tildeclub
a98cb3606f Update zoitechat.props with Gtk3 support 2026-02-01 18:30:12 -07:00
deepend-tildeclub
20056cb9c4 Disable Perl support in Zoitechat build options 2026-02-01 18:12:03 -07:00
deepend-tildeclub
1e36865bb3 Refactor Windows build workflow for better dependency handling
Updated the Windows build workflow to improve dependency installation and streamline the build process.
2026-02-01 18:05:38 -07:00
deepend-tildeclub
306aef3ef9 Refactor glib-genmarshal handling and compatibility aliases 2026-02-01 17:47:56 -07:00
deepend-tildeclub
f5ebe3efc8 Enhance libxml2 compatibility handling in build script
Added compatibility checks and aliases for libxml2 library to ensure it exists regardless of naming variations.
2026-02-01 17:34:46 -07:00
deepend-tildeclub
2bbe9dccc6 Refactor Python wrapper creation in build script 2026-02-01 17:19:34 -07:00
deepend-tildeclub
2723d49b3a Refactor Python script execution in Windows build 2026-02-01 17:13:29 -07:00
deepend-tildeclub
87b9e52719 Improve GTK3 stack layout detection in workflow
Refactor GTK3 stack detection and fallback mechanism for Windows builds.
2026-02-01 17:12:24 -07:00
deepend-tildeclub
bfe13386c5 Enhance Windows build workflow and error handling
Updated the Windows build workflow to improve asset handling and extraction processes. Added error handling for GTKROOT and LuaJIT dependencies.
2026-02-01 17:06:40 -07:00
deepend-tildeclub
766299a15c Add Wayland dependencies to appimage build 2026-02-01 17:04:32 -07:00
deepend-tildeclub
fe30e00bc1 Add libayatana-appindicator module to Zoitechat 2026-02-01 16:58:38 -07:00
deepend-tildeclub
0dcc35df8f Update appimage-build.yml for SSL and Wayland support 2026-02-01 16:41:10 -07:00
deepend-tildeclub
7be145b94a Clarify OpenSSL trust store override and clean up code
Added a comment to clarify the purpose of the OpenSSL trust store override and removed unnecessary code related to GDK_BACKEND configuration.
2026-02-01 16:39:38 -07:00
deepend-tildeclub
e365266b4a Update OpenSSL trust store and GDK_BACKEND settings 2026-02-01 16:37:34 -07:00
deepend-tildeclub
e8f9ea0784 Enable GTK3 support in OpenBSD build workflow 2026-02-01 16:17:54 -07:00
deepend-tildeclub
76fdce8576 Remove gtk3 option from msys-build.yml
Remove gtk3 option from meson setup in CI workflow
2026-02-01 16:17:23 -07:00
deepend-tildeclub
72dfc10b1b Update Debian build dependencies in workflow
Added libayatana-appindicator3-dev to dependencies.
2026-02-01 16:16:48 -07:00
deepend-tildeclub
c472a4ccd6 Update dependencies in appimage-build.yml
Added libayatana-appindicator3-dev to dependencies.
2026-02-01 16:16:23 -07:00
deepend-tildeclub
74c09bdebc Enable Perl and Python support in Zoitechat build 2026-02-01 16:10:02 -07:00
56e1c402f6 gtk3 github actions fix 2026-02-01 16:04:16 -07:00
b1e7155c6d gtk3 github actions fixes 2026-02-01 16:01:48 -07:00
7dd47dbd2e Adjust for GTK3 github actions compile testing.
fixed gtk2 compiling.
2026-02-01 15:23:36 -07:00
e5673e9a7b fix compile errors with GTK3 and Wayland. Now compiles/Runs using GTK3+Wayland. 2026-02-01 14:04:56 -07:00
8abc95205a Replaced GTK3 palette font styling with CSS-compliant properties derived from PangoFontDescription, avoiding the deprecated Pango font: syntax in generated CSS.
Added a GTK3-only helper to translate Pango font fields into font-family, font-size, font-style, font-weight, font-variant, and font-stretch CSS declarations while preserving GTK2 behavior under #if !HAVE_GTK3.
Reused the GTK3 font CSS helper in the main UI font styling path to eliminate remaining Pango font: shorthand usage that triggers GTK3 theme parsing warnings.
Exposed the GTK3 font CSS helper in gtkutil so callers can emit CSS-compliant font properties consistently.
2026-01-31 16:37:15 -07:00
d8a8e6ce73 dded GTK3 draw handling while keeping GTK2 expose handling wrapped under #if !HAVE_GTK3 for the spell entry widget.
Updated gtk_entry_find_position to use GTK3-safe layout offsets and cursor position APIs while preserving GTK2-only field access behind #if !HAVE_GTK3.
2026-01-31 16:22:35 -07:00
e44e801e3a Replaced the GTK3 G_DECLARE_DERIVABLE_TYPE usage in sexy-spell-entry.h with explicit typedefs/macros so the SexySpellEntry instance struct (and priv) remains visible in GTK3 builds.
Replaced the GTK3 G_DECLARE_DERIVABLE_TYPE usage with explicit GtkXText typedefs/macros to keep the instance struct visible in GTK3 builds and avoid missing member errors.
2026-01-31 16:00:49 -07:00
5170e037b5 Guarded the GTK2-only set_scroll_adjustments_signal assignment in GtkXText class initialization to avoid GTK3 build errors while preserving GTK2 behavior. 2026-01-31 15:47:49 -07:00
b121fa7287 Ensured GTK3 buttons created via gtkutil_button always display their images by enabling gtk_button_set_always_show_image when an icon is set. 2026-01-31 15:35:43 -07:00
29ac0f9ee6 Added a GTK3 CSS font provider helper and updated emoji font application to avoid deprecated override APIs in GTK3 builds.
Switched GTK3 setup color previews, entry styling, and user list palette updates to use gtkutil_apply_palette instead of deprecated GTK3 overrides.
2026-01-31 13:49:06 -07:00
1fb1865aca Switched palette type selection and color conversion helpers to use the HAVE_GTK3 guard consistently in palette definitions and helpers.
Updated GTK3-specific palette color storage handling in DCC, notify, and user list views to align with HAVE_GTK3 guards.
Standardized setup color application and dialog logic to use HAVE_GTK3 branches for GTK3/GTK2 separation.
2026-01-31 13:38:05 -07:00
d314856f82 Updated the GTK3 rawlog scrolled window to set expansion and pack it explicitly while leaving GTK2 behavior unchanged, keeping the button box packed at the bottom. 2026-01-31 13:27:21 -07:00
0a0dbd384c Added GTK3 icon theme change handling to refresh themed icons and reapply the current tray icon state after theme updates.
Disconnects the GTK3 icon theme signal during backend cleanup to avoid stale handlers.
2026-01-31 13:24:04 -07:00
3ef9540a57 Updated the About dialog to use the GTK3 license enum and kept the manual license text for non-GTK3 builds, removing the outdated comment. 2026-01-31 13:13:31 -07:00
84647201b1 Added GTK3 input style state tracking (theme, dark mode, colors, and preference) so the CSS provider reloads when those values change, while preserving GTK2 one-time RC parsing 2026-01-31 13:07:54 -07:00
f31ef7cfe2 Added GTK3-only CSS styling for alternating rows in the fkeys treeview and set a widget name to target the rules.
Wrapped gtk_tree_view_set_rules_hint so it only applies to non-GTK3 builds.
2026-01-31 13:03:14 -07:00
9af54f5ed7 Added a shared size-request helper plus GTK3 preferred-size vfuncs to reuse the existing sizing logic while keeping GTK2’s size_request path intact.
Guarded the GTK2 size_request assignment and wired the new GTK3 preferred-size handlers in class init.
2026-01-31 12:59:58 -07:00
5788bd90e2 Updated the tab context menu popup to use GTK3 gtk_menu_popup_at_pointer with GTK2 fallback in maingui.c.
Updated the emoji menu popup to use GTK3 gtk_menu_popup_at_widget with GTK2 fallback in maingui.c.
2026-01-31 12:57:05 -07:00
729b1eb8de Explicitly show GTK3 menu item widgets (image, label, box) after building the menu item to ensure labels/icons display reliably. 2026-01-31 12:42:35 -07:00
9a92fa33a8 Made the cursor/adwaita RC strings available for GTK3 and derive the caret color from the cursor RC string when building CSS equivalents.
Updated the GTK3 input CSS generation to include base/foreground colors, caret color, and the Adwaita/Yaru background-image override while applying the provider to the screen.
2026-01-31 12:25:56 -07:00
5c8f50a9f5 Added GTK3 tray icon fallback caching to concrete file paths using bundled pixmaps for missing themed icons and wired the check into themed icon resolution for app indicator usage. 2026-01-31 12:12:55 -07:00
56845a64d9 Added a shared render helper and GTK3 draw handler with clip handling while keeping GTK2 expose wiring behind build guards in xtext.c.
Added a stored GTK3 draw cairo context to the widget struct and initialized it during setup.
2026-01-31 12:09:02 -07:00
36a369fac8 Ensured GTK3 icon menu items show their child widgets by calling gtk_widget_show_all(item) after assembling the box in create_icon_menu. 2026-01-31 12:02:20 -07:00
a5d1dfe81f Added a GTK3 CSS provider path in create_input_style to mirror GTK2 input base/foreground colors, caret color, and Adwaita/Yaru background-image workaround, while preserving GTK2 RC parsing behavior. 2026-01-31 11:56:37 -07:00
946a39c361 Updated the disabled drag-motion block to traverse parents with gtk_widget_get_parent() and use GTK3-safe paned child accessors while retaining legacy fields for non-GTK3 builds. 2026-01-31 11:36:47 -07:00
3710da43c9 Updated GTK3 menu item label/state handling and join dialog accessors while preserving GTK2 field access under !HAVE_GTK3 guards.
Switched GTK3 menu child list usage and menu reordering calculations to container-based APIs with list cleanup in GTK3 paths.
2026-01-31 11:31:35 -07:00
a9f8e1e897 Replaced legacy GTK type macro blocks with G_DECLARE_* declarations for GtkXText, CustomList, and SexySpellEntry, and aligned the GtkXText parent field naming across GTK2/GTK3 guards.
Updated RemoteObject to use G_DECLARE_FINAL_TYPE and the parent_instance field naming convention
2026-01-31 11:15:42 -07:00
9e46407e89 Replaced manual type macros with G_DECLARE_DERIVABLE_TYPE in GtkXText, CustomList, SexySpellEntry, and RemoteObject declarations while aligning parent instance naming.
Switched GtkXText and CustomList implementations to G_DEFINE_TYPE/G_DEFINE_TYPE_WITH_CODE and preserved parent chaining behavior
Added GTK3/GTK2 conditional type declarations for GtkXText while restoring the legacy macro block for GTK2 builds.
Restored GTK2-friendly typedefs/macros and parent field naming for CustomList alongside GTK3 G_DECLARE_DERIVABLE_TYPE usage.
Restored GTK2-friendly typedefs/macros and parent field naming for SexySpellEntry while keeping GTK3 declarations intact.
Restored legacy RemoteObject typedefs and GType macros in the D-Bus plugin to keep GTK2 builds from seeing incomplete types or missing fields/macros.
2026-01-31 10:45:22 -07:00
e1b4e18153 Updated the GTK3 tray icon types to use GIcon values, added themed/file icon creation helpers, and converted icons to names for AppIndicator usage while preserving GTK2 behavior unchanged.
Added GTK3 icon cache initialization/cleanup in the tray backend lifecycle to manage icon lifetimes safely.
2026-01-30 20:47:26 -07:00
01104844e8 Added a GTK3 AppIndicator tray backend with a unified tray interface while keeping the GtkStatusIcon backend for GTK2 builds.
Reworked tray menu population and tray initialization to use the backend abstraction and GTK3 menu refresh behavior.
Linked AppIndicator dependencies conditionally for GTK3 builds in Meson.
2026-01-30 20:07:36 -07:00
d1e1ef3a82 Documented the GTK3 tray backend choice and added GTK3-safe tooltip property handling with a title fallback while keeping GTK2 APIs gated behind build flags.
Guarded embedded notification handling by GTK version to avoid GTK2-only APIs on GTK3 builds.
2026-01-30 19:37:29 -07:00
907211a733 Unified tray tooltip handling so GTK3 uses the tooltip-text property while GTK2 keeps the legacy API behind guards, and wired fe_tray_set_tooltip to the shared helper.
Centralized embedded-state checks through a GTK3-safe helper in the tray notification callback, avoiding GTK2-only calls under GTK3.
2026-01-30 19:33:56 -07:00
dec2aff37d Added GTK3-specific helpers for tray tooltip updates and embedded checks with a safe fallback when the embedded property is unavailable.
Updated tooltip handling and tray restore detection to use GTK3 helpers while keeping GTK2-only APIs behind GTK2 guards.
2026-01-30 19:30:02 -07:00
4bd67e4933 Updated tray tooltip handling to use GTK3 tooltip-text property while keeping GTK2-only tooltip API calls behind #if !HAVE_GTK3.
Switched GTK3 embedded checks to use the embedded property instead of GTK2-only API calls, preserving the restore timer behavior.
2026-01-30 19:26:34 -07:00
328c85e6b3 Added a GTK2/GTK3-aware helper to compute tab viewport size based on orientation and reused it in sizing/scroll handlers to centralize logic. 2026-01-30 19:23:34 -07:00
c7b5ce0346 Wrapped horizontal paned creation in GTK3/GTK2 conditionals and use gtk_paned_new(GTK_ORIENTATION_HORIZONTAL) for GTK3 while preserving existing layout logic. 2026-01-30 19:02:51 -07:00
ca92d14db6 Updated make_sbutton() to use GTK3 symbolic pan icons (up/down/start/end) while retaining GTK2 arrow widgets and ensuring the created widget is added and shown on the button. 2026-01-30 19:00:01 -07:00
e0bae25136 Added a GTK3-specific vertical separator in the channel list while keeping the GTK2 separator for non-GTK3 builds, preserving packing and visibility behavior.
Updated the horizontal tab separator creation to use GTK3’s vertical separator API with a GTK2 fallback, keeping the same packing and show logic.
2026-01-30 18:56:29 -07:00
1b23b5b7a6 Added GTK3-friendly tray icon name definitions plus explicit tray icon state tracking and helpers for GTK2/GTK3 paths.
Reworked tray flashing/custom icon logic to use the new state instead of pixbuf pointer comparisons while preserving behavior across GTK versions.
Updated tray initialization and notification callbacks to use the GTK3 icon-name API with state-aware flashing for message/highlight events.
2026-01-30 18:47:23 -07:00
9bdbeffeb0 Updated the chanview API to use GTK3-safe font descriptions while keeping GTK2 style handling conditional in the header and implementation.
Guarded tree view palette application to use GTK3 font descriptions or GTK2 styles appropriately.
Adjusted the chanview creation call site to pass GTK3 font descriptions or GTK2 styles based on the build.
2026-01-30 18:39:49 -07:00
6c17f4bc16 Added the GTK3 InputStyle abstraction and updated input style/chanview declarations to avoid direct GtkStyle usage in GTK3 builds.
Updated input style initialization and kept GTK2-only RC parsing while applying GTK3 palette styling for the channel tree via CSS-aware paths.
2026-01-30 18:19:01 -07:00
d0d6a573a7 Added a GTK3-only icon loader that maps stock names to non-stock icon theme names and uses the icon theme to populate cached DCC pixbufs.
Guarded the GTK2 gtk_widget_render_icon() usage with #if !HAVE_GTK3 while keeping cached pix_up/pix_dn logic intact.
2026-01-30 18:09:31 -07:00
8c9f193114 Added GTK2/GTK3-conditional declarations and definitions for sexy_spell_entry_editable_init to match the appropriate editable interface type. 2026-01-30 18:06:11 -07:00
5bac77f6bb Wrapped the GTK2-only font selection helper functions in #if !HAVE_GTK3 guards while keeping the GTK3 font chooser response handler and GTK3 browse font path intact. 2026-01-30 18:03:29 -07:00
e815b1d6ae Updated the hscale callback to use GtkRange and simplified range value access to avoid GtkHScale usage.
Switched GTK3 hscale creation to gtk_scale_new_with_range while keeping GTK2 gtk_hscale_new_with_range under the non-GTK3 branch.
2026-01-30 17:52:14 -07:00
1406eec197 Updated server list UI to use GTK3 vertical button boxes and horizontal separators behind GTK3 guards while keeping GTK2 constructors under #if !HAVE_GTK3.
Swapped the vertical tab separator to GTK3’s horizontal separator under #if HAVE_GTK3, preserving the GTK2 constructor for non-GTK3 builds.
2026-01-30 17:48:25 -07:00
5e73127f9a Updated the main GUI scrollbar creation to use the GTK3 vertical scrollbar constructor while keeping the GTK2 call behind #if !HAVE_GTK3.
Split vertical paned widget creation in the main GUI and events dialog for GTK3 vs GTK2, ensuring GTK2 calls remain under #if !HAVE_GTK3.
2026-01-30 17:44:30 -07:00
541ee90d27 Updated mg_progressbar_update() to toggle GTK3 progress bar direction via gtk_progress_bar_set_inverted() while keeping GTK2 orientation enums behind #if !HAVE_GTK3, preserving the flip behavior each cycle for both builds. 2026-01-30 17:40:44 -07:00
d330d6d537 Updated emoji font fallback/primary application to use GTK3 style context fonts with gtk_widget_override_font, while keeping GTK2 style/modify calls behind #if !HAVE_GTK3.
Applied GTK3 font overrides for the user list font setting in setup_apply_to_sess, with GTK2 fallback preserved under #if !HAVE_GTK3
2026-01-30 17:28:09 -07:00
5b28ae17cf Added a GTK3 font chooser dialog flow that preloads the current font and handles responses via the dialog response signal.
Kept the GTK2 font selection dialog implementation under the non-GTK3 branch for existing behavior.
2026-01-30 17:21:49 -07:00
af2678a3a0 Updated the DCC transfer view and notify dialog to use GtkGrid with GTK3 spacing and attachment equivalents while keeping GTK2 table behavior intact.
Switched GTK3 layout helpers and table sections in the server list and setup UI to grid-based attachments and spacing for consistent GTK3 behavior.
2026-01-30 17:13:44 -07:00
3a8a9332d6 Added GTK3 button box creation branches with explicit layout settings across the fe-gtk dialogs while keeping GTK2-only gtk_hbutton_box_new() paths gated under !HAVE_GTK3. 2026-01-30 17:03:27 -07:00
2bce91de0b Updated GTK3 handling in setup_create_color_button to align the color button’s child widget without using GtkAlignment, while keeping the GTK2 alignment path intact. 2026-01-30 16:21:41 -07:00
7b3a9dd30f Mirrored GTK2 padding and alignment intent for the quit dialog checkbox and label in GTK3, including explicit expand/align settings and left-aligned text handling.
Wrapped GTK3 chanview attachment logic in braces for the POS_HIDDEN branch to keep conditional behavior correct.
2026-01-30 16:14:35 -07:00
1f7ed3f1cb Added GTK3 expand/alignment setup before attaching widgets in banlist, chanlist, DCC, and main window layouts to mirror legacy table options.
Introduced a servlist table-attach helper and applied it across servlist UI attachments to keep GTK_FILL/GTK_EXPAND confined to GTK2-only paths while setting GTK3 alignment/margins explicitly.
2026-01-30 16:04:50 -07:00
db3fd73d09 Updated chanlist icon buttons to use GTK3 icon names while keeping GTK2 stock image usage behind #if !HAVE_GTK3. 2026-01-30 15:40:02 -07:00
7d83394e35 Updated GTK3 dialog/button creation in gtkutil.c to use label strings with GTK2 stock fallbacks for file and input dialogs.
Added GTK3 icon-name macros and applied them to tab menu/search button icon usage in maingui.c, keeping GTK2 stock fallbacks intact.
Introduced GTK3 icon-name helpers and macro splits for server list buttons/connect controls in servlistgui.c.
Tightened GTK2/GTK3 icon macro separation in sexy-spell-entry.c.
2026-01-30 15:27:01 -07:00
f880dacdd7 Added GTK3 icon name macros with GTK2 stock fallbacks for spell menu actions so GTK2-only stock identifiers remain under #if !HAVE_GTK3.
Updated spell menu item creation to use the new icon macros for Add/Ignore/Suggestions entries.
2026-01-30 09:36:52 -07:00
b48376c370 Added per-file ICON_* macros with GTK3 icon-name mappings and GTK2 stock fallbacks across GTK UI modules like banlist, DCC, editlist, ignore, URL grabber, notify, text events, tray menu, chanview tabs, and join dialog UI.
Updated GTK helper usages to reference the new ICON_* (and label) macros so GTK3 builds no longer pass stock IDs to button/icon helpers or dialogs, including banlist buttons, DCC windows, rawlog actions, notify dialog/buttons, pevent dialog buttons, tray menu items, and join dialog image helper usage.
2026-01-30 09:23:52 -07:00
e0c1796035 Split GTK3/GTK2 button creation guards in the server list UI so stock button calls live under explicit #if !HAVE_GTK3 blocks while GTK3 uses icon-name images. 2026-01-30 09:04:26 -07:00
ffc9af18be Updated server list add/remove buttons in the edit dialog to use GTK3 mnemonic labels with icon-name images while keeping GTK2 stock fallbacks behind !HAVE_GTK3.
Updated network list add/remove/close buttons similarly with GTK3 icon-name images and GTK2 stock fallbacks guarded by !HAVE_GTK3.
2026-01-30 08:56:06 -07:00
7c2b94eee8 Split GTK3 icon creation and GTK2 stock usage into explicit conditional blocks for the quit dialog warning image and buttons, keeping GTK2-only calls contained under #if !HAVE_GTK3.
Applied the same explicit GTK3/GTK2 split for search bar close/previous/next button images to isolate GTK2 stock usage.
2026-01-30 08:52:42 -07:00
d5a8479294 Added GTK3 icon-name variants for the quit confirmation warning and action buttons while keeping GTK2 stock icon usage under #if !HAVE_GTK3.
Updated search UI button icons to use GTK3 icon names with GTK2 stock fallbacks.
2026-01-30 08:47:31 -07:00
29f614b7b7 Routed hscale and entry widget attachments through setup_table_attach to centralize GTK3 expand/alignment handling while preserving GTK2 behavior.
Updated the commented legacy label example to use the helper (removing the GTK_SHRINK reference).
Switched the sound settings table attachments to use setup_table_attach for consistent GTK3 alignment/expand behavior.
2026-01-30 08:36:01 -07:00
98d813a00b Added a GTK3-aware table attachment helper that maps alignment, expansion, and margins while preserving GTK2 attach options behind the non-GTK3 path.
Updated setup UI table attachments to use the helper for labels, toggles, entries, and color page widgets, replacing GTK_SHRINK usage with explicit alignment/expand settings.
2026-01-30 08:30:18 -07:00
a2b35c289c Updated the join dialog to use gtkutil stock helpers for the network image and OK button with an explicit label.
Clarified GTK2-specific stock widget handling with explicit #elif !HAVE_GTK3 guards in the helper implementations.
2026-01-30 08:21:55 -07:00
2d3e1f8122 Replaced GTK stock macro usage in setup dialog buttons with string IDs passed through gtkutil_button_new_from_stock, keeping GTK2/GTK3 handling in the helper path. 2026-01-30 08:00:08 -07:00
537167cd61 Added gtkutil helpers to create stock-based images and buttons while keeping GTK3 icon-name mapping centralized in gtkutil.c.
Exposed the new gtkutil stock helper APIs in the header for reuse.
Swapped setup dialog stock button creation to the new gtkutil_button_new_from_stock helper (including the sound play button fallback).
2026-01-30 07:53:50 -07:00
004786655c Updated GTK3 adjustment assignment to use floating-safe GObject ref handling while preserving GTK2 behavior in the existing path. 2026-01-30 07:43:34 -07:00
1ee2433b28 Cached adjustment value and page size in gtk_xtext_render_page and reused them for start line, pixel offset, page size check, and scroll position calculations to ensure accessor usage for GTK3. 2026-01-30 07:39:09 -07:00
eb7a15dc9d Centralized buffer adjustment updates to use xtext_adjustment_apply when switching buffers, reducing repeated adjustment mutations while preserving existing behavior. 2026-01-30 07:35:18 -07:00
5f8dcd286e Added the xtext_adjustment_apply helper to consolidate GTK2/GTK3 adjustment updates and direct field assignments.
Updated adjustment setup and GTK3 buffer refresh logic to use the new helper and keep page increment/signaling handling consistent.
2026-01-30 07:26:54 -07:00
4cfe5274b5 Updated GtkAdjustment helper guards to use explicit !HAVE_GTK3 branches for direct field access while keeping GTK3 accessors in the HAVE_GTK3 path. 2026-01-30 07:20:43 -07:00
f6613cbad1 Added GtkAdjustment helper accessors for value/upper/lower/page size/page increment to encapsulate GTK3 accessors and GTK2 struct fields.
Updated xtext adjustment logic to use the helpers in adjustment updates and rendering paths, eliminating direct field access in scroll/render flows.
2026-01-30 07:15:06 -07:00
3806b33aab Split GTK3 vs GTK2 setup in gtk_xtext_realize so GTK2-only parent window/colormap access is guarded under #if !HAVE_GTK3. 2026-01-30 06:57:14 -07:00
fa3c7c9059 Consolidated GTK3 realization setup to use parent window/visual and keep GTK2-only colormap/parent window under the GTK2 branch in gtk_xtext_realize. 2026-01-30 06:20:21 -07:00
c0c0b2ec4c Moved GTK2-only parent window and colormap handling into the GTK2 code path while keeping GTK3 setup relying on gtk_widget_get_parent_window and visual-only attributes in gtk_xtext_realize. 2026-01-29 23:06:21 -07:00
d553862e52 Guarded the GtkXText double-buffering toggle behind a GTK3 compile check and added a GTK3 render pipeline note in gtk_xtext_new 2026-01-29 23:01:02 -07:00
7cbd905fae Guarded GTK2-only GtkObjectClass declaration/assignment with explicit #if !HAVE_GTK3 checks in gtk_xtext_class_init. 2026-01-29 22:57:13 -07:00
49e23b7df5 Added a GTK3 finalize handler for GtkXText that chains to the parent class alongside the existing dispose cleanup path.
Registered the GTK3 finalize handler in gtk_xtext_class_init while keeping GTK2 destroy registration intact.
2026-01-29 22:49:13 -07:00
bf529ba1ff Guarded GTK2-only GtkObject includes in the xtext header for GTK2 builds only.
Added a shared cleanup helper plus GTK2 destroy/GTK3 dispose handlers with correct parent chaining for cleanup parity across GTK versions.
Updated class initialization to register GTK3 dispose or GTK2 destroy handlers with appropriate object class setup.
2026-01-29 22:44:54 -07:00
aa0b271aa9 Made GTK2 window access explicitly guarded in scroll/selection update code paths to keep GTK3 using gtk_widget_get_window.
Applied the same explicit GTK3/GTK2 window guards in render paths to keep direct GTK2 field access isolated.
2026-01-29 22:07:58 -07:00
1584764809 Consolidated gtk_xtext_size_allocate to use a guarded window pointer before resizing, preserving GTK3 gtk_widget_get_window and GTK2 direct access paths.
Aligned GTK3/GTK2 window selection blocks in scrolling/selection and render routines (including gtk_xtext_render_page) to use #else guards for GTK2 direct access.
2026-01-29 21:57:50 -07:00
31130197eb Routed window access in scroll/selection helpers through guarded GTK3 window lookups while retaining GTK2 field access under #if !HAVE_GTK3.
Consolidated window handling in layout, render, visibility, and buffer display paths to avoid direct GTK2 window fields in GTK3 builds.
2026-01-29 21:45:57 -07:00
723d8759ff Wrapped size allocation and window resize handling with explicit GTK3/GTK2 guards for allocation/window access while preserving GTK2 field usage under !HAVE_GTK3.
Applied explicit GTK3/GTK2 window access guards across render/scroll/buffer sizing paths, including gtk_xtext_render_page and gdk_window_get_width/height callsites.
2026-01-29 21:35:06 -07:00
667a56ca6c Added GTK3 window guard handling for scrolling/selection height calculations while keeping GTK2 direct window access for those paths.
Switched sizing/visibility calculations and buffer show sizing to use GTK3 window retrieval with GTK2 fallbacks in layout/rendering paths.
2026-01-29 21:21:40 -07:00
c009c30211 Updated size allocation and draw/paint paths to use GTK3 allocation accessors while preserving GTK2 direct field access under guards.
Switched render-page and input/cursor handling to use gtk_widget_get_window on GTK3 with guarded window usage, keeping GTK2 behavior intact.
2026-01-29 21:14:09 -07:00
deepend-tildeclub
b6094244ac Merge pull request #47 from ZoiteChat/c17
C17
2026-01-29 21:01:45 -07:00
deepend-tildeclub
2741c40580 Merge pull request #46 from ZoiteChat/master
sync to master
2026-01-29 21:00:38 -07:00
deepend-tildeclub
c90f3c659a Fix include directive for glib.h 2026-01-27 12:13:47 -07:00
e78251ee29 fix(win32): replace netdb.h with ws2tcpip.h for addrinfo APIs 2026-01-26 18:19:14 -07:00
b960f62d2a fix(fe-text): replace strdup with g_strdup for C17 builds 2026-01-26 18:12:49 -07:00
deepend-tildeclub
dc76c2ea37 Change C standard from C17 to c17 2026-01-26 18:08:01 -07:00
6e5149fbe6 add C17 to meson.build 2026-01-26 16:01:47 -07:00
4008d94571 fix(portability): replace POSIX-only string funcs and legacy hostent fields 2026-01-26 15:56:52 -07:00
deepend-tildeclub
4ad5df0370 Update documentation links in README 2026-01-26 14:15:31 -07:00
deepend-tildeclub
887d891541 Merge pull request #44 from ZoiteChat/glib-dependency-cleanup
Glib dependency cleanup + Makefile
2026-01-26 01:36:54 -07:00
041288cdad Removed the GLib dependency from the Windows 8 spellcheck provider by swapping in Windows/stdlib UTF-8/UTF-16 conversions and standard allocation/free routines. 2026-01-25 23:52:52 -07:00
c8ee118f00 Replaced GLib allocation helpers in history management with standard free/strdup to reduce unnecessary GLib coupling.
Updated the network helper API to use uint32_t and standard allocation/duplication routines, dropping the GLib include from the implementation and adding <stdint.h> to the header.
2026-01-25 23:37:09 -07:00
d4134c94b3 Swapped glib integer types in the sysinfo interface for standard stdint types to remove glib coupling in the header.
Replaced glib string/util usage in the win32 sysinfo backend with local helpers, a small string builder, and Windows UTF-8 conversion, removing the glib dependency there.
2026-01-25 23:32:33 -07:00
5ca3e835a7 Replaced GLib allocation helpers in history management with standard free/strdup to reduce unnecessary GLib coupling.
Updated the network helper API to use uint32_t and standard allocation/duplication routines, dropping the GLib include from the implementation and adding <stdint.h> to the header.
2026-01-25 23:00:20 -07:00
6c85c796d3 Merge branch 'master' of https://github.com/ZoiteChat/zoitechat
sync with master
2026-01-25 19:09:54 -07:00
992215ee91 Fix invalid call to g_io_channel_set_buffered 2026-01-25 19:09:17 -07:00
deepend-tildeclub
1729cfcb3f Merge pull request #43 from ZoiteChat/master
Merge pull request #42 from ZoiteChat/zoite-sts
2026-01-25 18:49:25 -07:00
deepend-tildeclub
4cf1b52982 Merge pull request #42 from ZoiteChat/zoite-sts
IRCv3 STS Specification Support.
2026-01-25 18:48:26 -07:00
1226224858 Merge branch 'zoite-sts' into gtk3-prep
IRCv3 STS Support
2026-01-25 18:31:03 -07:00
bc1d2e5f7a Updated STS upgrade handling to fall back to the current connection port when servers omit a port in the STS capability, enabling TLS upgrades for non-TLS connections in that case. 2026-01-25 18:26:20 -07:00
a0f0c48bc5 Added STS profile persistence and policy parsing/enforcement (including load/save, upgrades, and expiry rescheduling) to the STS module.
Integrated STS capability handling and connection lifecycle hooks (ignore CAP DEL, trigger upgrades, reschedule on disconnect, new server fields).
Initialized and cleaned up STS state during startup/shutdown to persist policies across sessions.
2026-01-25 17:20:53 -07:00
4d6c77704c Added STS profile data structures plus serialize/deserialize helpers for storing profile state in a compact string form.
Registered the new STS source file in the Meson and Visual Studio build definitions.
2026-01-25 16:51:43 -07:00
deepend-tildeclub
f3855583dd Merge pull request #41 from ZoiteChat/master
HEXCHAT -> ZOITECHAT
2026-01-25 16:15:37 -07:00
2b98ebc544 HEXCHAT -> ZOITECHAT 2026-01-25 16:13:47 -07:00
deepend-tildeclub
8b5358fbcc Merge pull request #40 from ZoiteChat/master
sync with master.
2026-01-25 16:09:41 -07:00
deepend-tildeclub
4ed7032fd5 Update lua.c
Allowed Lua scripts to be located by basename (script name only) when resolving /lua unload and related operations, while keeping path-based matching for explicit paths.
Ensured /lua load reports failures when script creation fails and added explicit failure feedback to the user.
Added unload feedback that distinguishes immediate unloads from deferred unloads, so users see confirmation right away.
2026-01-25 16:02:58 -07:00
d4d2483161 Updated the GTK3 adjustment update path in gtk_xtext_buffer_show to explicitly set adjustment bounds/page sizing and emit value-changed, while keeping GTK2 behavior unchanged. 2026-01-25 15:16:37 -07:00
deepend-tildeclub
4e01192979 Add badge references to README
Added badge references for GitHub version, downloads, size, last commit, and contributors.
2026-01-25 14:52:49 -07:00
deepend-tildeclub
2127820ae0 Enhance README with build badges and links
Updated README to include build badges and documentation link.
2026-01-25 14:47:08 -07:00
361308962e Routed GTK3 render-time adjustment updates through gtk_xtext_adjustment_set to apply setter updates and emit value-changed, while keeping the GTK2 path on gtk_adjustment_changed 2026-01-25 13:58:11 -07:00
e0c8409971 Updated GTK3 adjustment updates in gtk_xtext_adjustment_set to use GtkAdjustment setters and gtk_adjustment_value_changed, preserving the GTK2 path with gtk_adjustment_changed.
Adjusted GTK3 buffer-show scroll value updates and change signaling to rely on adjustment accessors while keeping the GTK2 flow intact.
2026-01-25 13:07:55 -07:00
6f31e33094 Refactored gtkutil_icon_name_from_stock() to use a lookup table with explicit GTK stock icon aliases (including GTK3 mappings) while keeping the stock-name fallback intact.
Spot-checked GTK stock icon usage in chanlist.c, menu.c, and sexy-spell-entry.c to confirm expected GTK3 icon mapping coverage at the call sites you flagged.
2026-01-25 12:53:15 -07:00
bad5eab21c Expanded the GTK3 stock-to-themed icon mapping to cover additional stock IDs (add, yes/no, navigation, dialog error, media play, network, spell check) while keeping the stock fallback unchanged.
Spot-checked GTK3 callers in chanlist, menu, and spell-entry code paths that rely on stock icon mappings for menu items and spelling UI icons.
2026-01-25 12:29:00 -07:00
c9ec0527dd Avoided re-adding the same GTK3 palette CSS provider by tracking when the provider is first created before attaching it to the style context. 2026-01-25 12:19:44 -07:00
ac3ce1ceac Updated gtkutil_apply_palette declarations to use GTK-specific Gdk color types for GTK3 vs GTK2 builds.
Adjusted the gtkutil_apply_palette definition to match GTK3/GTK2 Gdk color signatures while preserving existing behavior.
2026-01-25 11:37:04 -07:00
6fffdba876 Merge branch 'gtk3-prep' of https://github.com/ZoiteChat/zoitechat into gtk3-prep 2026-01-25 11:32:06 -07:00
94789a9100 Added gtkutil_apply_palette declaration and implementation to apply palette colors/fonts via GTK3 CSS providers with GTK2 fallbacks preserved.
Switched channel tree and theme application logic to use the new palette helper.
Updated entry and user list styling to route palette/font application through the helper.
2026-01-25 11:30:21 -07:00
deepend-tildeclub
1475d02be0 Merge pull request #39 from ZoiteChat/master
Add 'standard-replies' to inbound.c
2026-01-25 11:16:51 -07:00
deepend-tildeclub
a40f53a1f3 Add 'standard-replies' to inbound.c
Add support for the standard-replies capability.
2026-01-25 11:09:31 -07:00
08d357dc98 Added explicit GTK3-only branches in gtk_xtext_unrealize() so gtk_widget_get_window() is used without GTK2 struct access leaking into the GTK3 path.
Split the GTK3 and GTK2 initialization paths in gtk_xtext_realize() so the GTK3 branch uses gtk_widget_get_allocation()/gtk_widget_get_parent_window() and the GTK2 branch keeps the direct struct access under #if !HAVE_GTK3.
2026-01-23 22:08:17 -07:00
0df299acf5 Updated gtk_xtext_unrealize() to use GTK3 accessors (gtk_widget_get_window(), gtk_widget_set_window(), and gtk_widget_set_realized()) while keeping the GTK2 struct access in the #if !HAVE_GTK3 branch.
Consolidated the GTK3 vs GTK2 branching in gtk_xtext_realize() so GTK3 uses gtk_widget_get_allocation(), gtk_widget_get_parent_window(), and gtk_widget_set_window(), with the existing GTK2 direct struct access preserved under #if !HAVE_GTK3.
2026-01-23 22:00:36 -07:00
00eb2de4c8 Split the GTK3 and GTK2 branches in gtk_xtext_unrealize() so GTK3 uses gtk_widget_get_window() while the GTK2 path remains under #if !HAVE_GTK3 with direct struct access.
Split the GTK3 and GTK2 branches in gtk_xtext_realize() so GTK3 uses gtk_widget_get_allocation(), gtk_widget_get_parent_window(), and gtk_widget_set_window(), while keeping the existing GTK2 struct access under #if !HAVE_GTK3.
2026-01-23 21:55:46 -07:00
f65f350965 Moved gtk_widget_set_realized() into the GTK3 branch and used GTK_WIDGET_SET_FLAGS(widget, GTK_REALIZED) for GTK2, keeping allocation/parent-window access split by #if HAVE_GTK3 2026-01-23 21:52:40 -07:00
1d32aed8dc Added a GTK3-specific branch in gtk_xtext_unrealize() that clears user data via gtk_widget_get_window() while preserving the GTK2 struct access under #if !HAVE_GTK3.
Updated gtk_xtext_realize() to use gtk_widget_get_allocation(), gtk_widget_get_parent_window(), and gtk_widget_set_window() on GTK3, and routed all subsequent window usage through the local window variable instead of direct struct access; the GTK2 path remains intact under #if !HAVE_GTK3.
Adjusted gtk_xtext_clear_background() to use gtk_widget_get_window() on GTK3 rather than widget->window.
2026-01-23 21:40:22 -07:00
ab3bdf219f Added #if HAVE_GTK3 / #elif !HAVE_GTK3 branches around gtk_hbox_new / gtk_vbox_new call sites in the GTK front-end, using gtk_box_new(GTK_ORIENTATION_*, spacing) for GTK3 while keeping the GTK2 constructors explicitly gated under !HAVE_GTK3.
Applied gtk_box_set_homogeneous() in GTK3 branches where the GTK2 code requested homogeneous layout (e.g., dialog hboxes).
Updated remaining helpers and setup/preferences UI box constructors (including the shared mg_box_new helper) to follow the same GTK3/GTK2 branching approach consistently across src/fe-gtk/
2026-01-23 21:28:32 -07:00
5b1a58195e Verified the requested #if HAVE_GTK3 / #if !HAVE_GTK3 alignment branches are already present across the noted src/fe-gtk/ files, then refined the GTK3 join dialog icon alignment by adding a small top margin to better approximate the legacy y = 0.06 alignment behavior.
Removed a lingering commented-out gtk_misc_set_alignment call in servlistgui.c so the remaining legacy alignment calls surfaced by search are all active and guarded.
2026-01-23 21:16:43 -07:00
7f5d92addb Searched the requested GTK alignment usages across src/fe-gtk/ and found the #if HAVE_GTK3 branches were already in place for the gtk_misc_set_alignment() call sites; the remaining gap was an implicit #else around gtk_alignment_new() in setup_create_spin, which I made explicit as #elif !HAVE_GTK3 while keeping the GTK3 halign/valign branch intact. 2026-01-23 21:09:21 -07:00
7a37918ec7 Replaced #else with #elif !HAVE_GTK3 anywhere the legacy alignment calls appear, so the GTK2/legacy path is now explicitly scoped to non-GTK3 builds while preserving the existing GTK3 halign/valign behavior across the requested files (maingui.c, chanlist.c, dccgui.c, joind.c, servlistgui.c).
Applied the same explicit !HAVE_GTK3 guard style in setup.c, including the gtk_alignment_* block and the padding/margin section you called out.
2026-01-23 20:34:48 -07:00
31e198f772 Added GTK3 halign/valign handling (and GTK3 label margins) across setup UI elements, including spin widgets, color buttons, sound labels, and page headers while keeping GTK2 fallbacks intact.
Applied GTK3 alignment updates to DCC detail labels in the DCC GUI.
Updated join dialog widgets to use GTK3 alignment calls for the image and labels, retaining legacy alignment for GTK2.
Added GTK3 alignment handling for server list dialogs and labels in the server list UI.
2026-01-23 20:18:49 -07:00
366039eb2b Adjusted GTK3 menu item icon-name fallbacks for quick items and stock icon menus in the menu helpers.
Updated channel list icon menu items to convert stock icon IDs to GTK3 icon names with a fallback path.
Added a GTK3 icon-name fallback for spell entry menu items when building the icon/label box layout.
2026-01-23 18:08:39 -07:00
fd83f3636d Consolidated the GTK3/GTK2 branching for icon menu items in menu_quick_item and create_icon_menu to use the GtkMenuItem + GtkBox path under GTK3 and GtkImageMenuItem under GTK2.
Unified the GTK3/GTK2 icon menu item construction branches in the channel list menu helper to match the GtkBox + GtkImage + GtkLabel pattern for GTK3 while preserving GTK2 behavior.
Aligned the spelling menu icon item helper with the same GTK3/GTK2 branching structure, keeping GTK2 GtkImageMenuItem intact.
2026-01-23 18:01:07 -07:00
c2e8507402 Guarded GTK3 chanlist menu item image creation on a non-null icon name before packing into the menu item box.
Updated GTK3 create_icon_menu to build menu items with explicit image/label composition using icon names or pixbufs before packing into the box.
Adjusted GTK3 spell entry icon menu item to create the image only when an icon name is available.
2026-01-23 17:35:01 -07:00
3923bd915c Updated GTK3 menu quick items to build a GtkMenuItem with a box, icon-name image, and mnemonic label before packing into the menu item.
Ensured chanlist GTK3 icon menu items always create images from icon names before packing with the mnemonic label.
Adjusted spell entry GTK3 icon menu items to create icon-name images for the boxed menu item layout.
2026-01-23 17:26:59 -07:00
d1163a4ee8 Updated create_icon_menu to build GTK3 menu items with a boxed image + mnemonic label and icon-name-based images. 2026-01-23 17:17:17 -07:00
5538e738a8 Expanded GTK3 icon-menu construction in menu.c to build menu items with a GtkBox, GtkImage, and mnemonic label when using icon names.
Updated channel list icon menu items to build GTK3 menu items with GtkBox/GtkImage/GtkLabel while preserving GTK2 GtkImageMenuItem paths.
Updated sexy spell entry icon menu items to build GTK3 menu items with GtkBox/GtkImage/GtkLabel while preserving GTK2 GtkImageMenuItem paths
2026-01-23 16:00:02 -07:00
b0a9f34dc4 Added GTK3 icon-name menu item helper and used it when building icon-based menu items in the main menu paths, while keeping the GtkImageMenuItem fallback for GTK2 intact.
Guarded GTK3 chanlist icon menu item creation to handle missing icon names safely while still creating the boxed menu layout.
Applied the same GTK3 icon-name guard for the sexy-spell-entry menu items while preserving GTK2 code paths.
2026-01-23 14:46:19 -07:00
65ca665e25 Added a GTK3 helper to build menu items with image + mnemonic label and reused it for icon menu item creation in the main menu helpers.
Added GTK3 helper builders for icon menu items in the channel list and spell entry menus, reusing them in the GTK3 branches while keeping GTK2 paths intact.
2026-01-23 14:33:11 -07:00
72b9560c32 Made the GTK3 vs GTK2 icon menu item paths explicit in menu_quick_item, keeping the GTK3 boxed menu item and guarding the GtkImageMenuItem path under #if !HAVE_GTK3.
Updated the chanlist icon menu item to keep the GTK2 GtkImageMenuItem logic under #if !HAVE_GTK3.
Updated the spelling menu icon item to keep the GTK2 GtkImageMenuItem logic under #if !HAVE_GTK3.
2026-01-23 14:18:37 -07:00
7694d4dd18 Restructured icon menu item creation in menu_quick_item to use explicit GTK3 GtkMenuItem + GtkBox + GtkImage/GtkLabel handling with a GTK2 GtkImageMenuItem fallback.
Added GTK3 image null checks and explicit GTK3/GTK2 branching for chanlist icon menu items.
Added GTK3 image null checks and explicit GTK3/GTK2 branching for sexy spell entry icon menu items.
2026-01-23 14:09:50 -07:00
853c16a9bc Updated create_icon_menu to build GTK3 icon menu items by packing an image and mnemonic label into a box while keeping GTK2 GtkImageMenuItem handling intact.
Expanded channel list icon menu items to handle GTK3 box-based layout and GTK2 image menu items in one helper, and used that helper for the context menu entries.
Unified sexy spell entry icon menu item creation across GTK versions, using stock IDs for both and centralizing the GTK3 box-based layout with GTK2 image menu items preserved.
2026-01-23 13:58:53 -07:00
905cc2f22e Added a GTK3 helper to build icon+label menu items for the channel list context menu entries.
Added a GTK3 helper for icon-name menu items and reused it when building stock icon menu entries.
Added a GTK3 helper for spelling-related menu items and reused it for add/ignore/suggestions entries.
2026-01-23 13:42:11 -07:00
edbe5c405c Updated GTK3 menu item creation in menu_quick_item and create_icon_menu to use GtkBox with GtkImage and GtkLabel while keeping GTK2 image menu items intact.
Reworked GTK3 channel list context menu items to use GtkBox-packed images and mnemonic labels, preserving GTK2 behavior under !HAVE_GTK3.
Added GTK3 menu item layouts for spell entry actions and suggestion menu with icon-name images and mnemonic labels, while retaining GTK2 image menu items.
2026-01-23 13:27:40 -07:00
07bd2d4c13 Split GTK entry icon updates into explicit HAVE_GTK3 and !HAVE_GTK3 guards in the server list callbacks to keep GTK3 icon-name usage separate from stock icons.
Applied the same explicit GTK3 vs non-GTK3 guard structure for search entry icon handling in the main GUI search flow
2026-01-23 13:16:45 -07:00
d57f66ef75 Updated server list entry icon handling to use GTK3 icon names with stock fallbacks for GTK2.
Switched main search entry error/clear icons to GTK3 icon-name API while preserving GTK2 stock icons.
2026-01-23 13:09:02 -07:00
19ecc6a284 Updated GTK3 entry icon handling in the server list UI to use icon names (and NULL clears) while keeping GTK2 stock calls under #if !HAVE_GTK3.
Updated GTK3 entry icon handling in the main search UI to use icon names (and NULL clears) while keeping GTK2 stock calls under #if !HAVE_GTK3.
2026-01-23 13:04:19 -07:00
2b6fc7dbe5 Added GTK3 icon-name handling around entry error icon updates in the server list UI while keeping stock icon calls for non-GTK3 builds.
Updated search UI entry icon handling to use GTK3 icon-name APIs with GTK2 fallbacks for stock icons.
2026-01-23 12:57:52 -07:00
8d76d94131 Added a GTK3-only helper to build button images from stock IDs via icon-name mapping, and refactored gtkutil_button to use it while keeping GTK2 stock handling intact.
Verified gtkutil_button(...) callers with rg -n "gtkutil_button\\s*\\(" src/fe-gtk.
2026-01-23 11:17:28 -07:00
246bcd06a2 Updated gtkutil_button() to build button images via GTK3 icon names (with stock mapping) and to skip image creation when no stock name is provided, while keeping GTK2 stock usage intact. 2026-01-23 10:52:17 -07:00
e4f1b20211 Added a helper to create button images from stock names using GTK3 icon mapping, and used it in gtkutil_button for consistent GTK2/GTK3 handling. 2026-01-23 10:48:01 -07:00
ef5d8c482a Extended the GTK3 stock-to-icon mapping to cover apply/remove so GTK stock buttons continue to map to themed icon names in GTK3 builds. 2026-01-23 10:41:18 -07:00
c346055b42 Added a shared GTK3 stock-to-icon-name helper in gtkutil and exposed it for reuse.
Updated gtkutil_button() to use icon-name images on GTK3 while preserving stock image usage on GTK2.
Switched menu icon creation to the shared GTK3 mapping helper.
2026-01-23 10:32:17 -07:00
63fd0dc103 Mapped stock icon identifiers to GTK3 named icons when creating stock menu items so GTK3 always uses gtk_image_new_from_icon_name. 2026-01-23 10:12:47 -07:00
7f05fda41a Added GTK3 named icon mappings for cancel/ok stock identifiers to align menu imagery with icon-name usage.
Clarified GTK3 vs GTK2 popup menu handling with an explicit conditional split while preserving GTK2 fallback behavior
2026-01-23 09:23:34 -07:00
9c691db910 Added a GTK3 helper to map legacy GTK stock icon IDs to themed icon names for menu items, improving GTK3 icon lookups for legacy strings.
Routed GTK3 menu icon creation through the new stock-to-name mapping before calling gtk_image_new_from_icon_name.
2026-01-23 09:17:36 -07:00
d7966a7234 Clarified GTK3 vs. GTK2 icon macro guards in the channel list and plugin UI sources to keep named icons for GTK3 and stock icons for GTK2 builds.
Split GTK3/GTK2 popup handling into explicit conditional blocks and made GTK3/GTK2 menu icon definitions explicit in the menu implementation.
2026-01-23 09:07:23 -07:00
e70c50ab1a Consolidated GTK3 vs GTK2 icon macro guards in the channel list UI to keep named icons on GTK3 and stock icons on GTK2 behind a single conditional block.
Aligned plugin UI icon macros with the same GTK3/GTK2 conditional pattern for named icons vs stock icons.
Ensured GTK3 popup helper usage and clarified GTK3/GTK2 icon macro selection in the main menu handling code.
2026-01-23 08:56:27 -07:00
74c16fabe6 Defined shared GTK2/GTK3 icon constants for the channel list and reused them for menu items and action buttons to keep GTK3 named icons centralized.
Added plugin manager icon constants for GTK2/GTK3 and applied them to the load/unload/reload buttons
2026-01-23 08:33:48 -07:00
70d5113180 Added a GTK3 icon-button helper for the channel list and reused it for the action buttons, plus guarded the GTK2 popup timestamp handling.
Added a GTK3 icon-button helper for the plugin list controls and used it for the load/unload/reload buttons.
Added a GTK3 help icon to the join-channel dialog button configuration.
2026-01-23 08:17:22 -07:00
6b089d3fba Added a GTK3 fallback to anchor the chanlist context menu at the tree widget when no event is available, while keeping the GTK2 popup path unchanged. 2026-01-23 08:05:16 -07:00
03ab236b67 Anchored GTK3 menu popups to the parent window when no pointer event is available, while preserving the GTK2 popup path. 2026-01-23 07:58:26 -07:00
8ba068041d Made GTK2-only chanlist menu popup and button icon paths explicit with #if !HAVE_GTK3, keeping GTK3 named-icon usage separate from stock icons.
Applied the same GTK2-guarded stock icon usage in plugingui and menu handling, including menu popups and icon helpers, to isolate GTK2-only calls.
2026-01-23 07:47:16 -07:00
fae83a34bc Updated GTK3 menu icon fallback to use icon names instead of stock IDs while preserving GTK2 behavior. 2026-01-23 07:38:43 -07:00
b934b1b940 Updated the channel list context menu, buttons, and popup handling to use GTK3 icon names and gtk_menu_popup_at_pointer while keeping GTK2 stock fallbacks.
Switched the plugin GUI action buttons to GTK3 icon-name images with GTK2 stock fallbacks.
Added GTK3 icon-name mappings for menu entries, updated menu popups to gtk_menu_popup_at_pointer, and set GTK3 dialog button icons while preserving GTK2 stock behavior.
2026-01-23 07:32:38 -07:00
7f7fd71fe4 Guarded the Win32 GDK header include with GDK_WINDOWING_WIN32 while keeping the Win32 system header include intact. 2026-01-23 00:48:15 -07:00
d65cef176e Guarded the tray icon X11 code path with GDK_WINDOWING_X11 while preserving the non-X11 fallback behavior in gtkutil_tray_icon_supported.
Switched Win32 window handle retrieval to gdk_win32_window_get_handle and wrapped the usage in GDK_WINDOWING_WIN32 in fe_gui_info_ptr.
2026-01-23 00:43:30 -07:00
5715245080 Updated the GTK3 pointer position query to use gdk_device_get_position without a temporary screen variable while keeping GTK2/GTK3 code paths split by HAVE_GTK3. 2026-01-23 00:38:14 -07:00
796c991dd8 Guarded cursor unref with a null check while keeping GTK2/GTK3-specific cleanup behavior centralized.
Added a helper to clear window backgrounds using GTK2/GTK3-specific APIs and used it during widget realize.
2026-01-23 00:32:59 -07:00
7ac74220c4 Added a GTK3-safe null guard before unrefing cursors while keeping GTK2 behavior under !HAVE_GTK3.
Added a GTK3 pointer-device null fallback in gtk_xtext_get_pointer to safely handle missing devices before using gdk_device_get_position.
2026-01-23 00:27:02 -07:00
1bb0451d75 Updated GTK3 palette color parsing to use full 16-bit hex strings when converting to RGBA in palette handling and setup color dialogs.
Switched GtkCellRendererText foreground bindings to the palette foreground property macro in user list, notify list, and DCC views.
2026-01-23 00:23:00 -07:00
ea4ef5be90 Updated GTK3 color parsing in the palette/setup helpers to use RGBA-friendly hex strings with gdk_rgba_parse fallbacks while preserving GTK2 behavior.
Switched GtkCellRendererText foreground property selection to foreground-rgba on GTK3 paths (with GTK2 guarded), covering userlist, notify, and DCC views.
2026-01-23 00:13:14 -07:00
131691156a Updated notify tree cell rendering to use the palette foreground property while preserving GTK2/GTK3 color cleanup logic.
Reused the palette foreground property macro for user list and DCC text renderers to match RGBA usage in GTK3 while keeping GTK2 behavior intact.
Aligned GTK2 setup color callbacks with PaletteColor and ensured RGBA parsing initialization in the palette helper.
2026-01-22 23:55:49 -07:00
864bf5e059 Parsed palette color strings with RGBA/GdkColor parsing fallbacks for GTK3/GTK2 palette updates.
Adjusted setup RGBA conversion fallback to explicit channel conversion when parsing fails.
Updated GtkCellRendererText foreground property handling for GTK2/GTK3 in user list, DCC list, and notify list rendering.
2026-01-22 23:45:02 -07:00
5596c8825b Added a GTK2/GTK3-compatible cursor unref helper to centralize cleanup logic.
Switched cursor destruction to use the new helper in the widget teardown path.
2026-01-22 23:32:50 -07:00
a05c064466 Wrapped GTK2-only cursor cleanup with #if !HAVE_GTK3, keeping GTK3 paths on g_object_unref.
Moved GTK2 pointer/background calls into #if !HAVE_GTK3 blocks, leaving GTK3-compatible implementations in #else.
2026-01-22 23:28:24 -07:00
ae86a8db0f Added a GTK3-aware pointer helper that uses gdk_device_get_position while retaining GTK2 behavior under #if !HAVE_GTK3.
Wrapped GTK2-only cursor unref and background pixmap calls with GTK3-compatible g_object_unref and gdk_window_set_background_pattern alternatives.
2026-01-22 23:24:43 -07:00
dae5eadf1a Updated setup color dialog RGBA derivation to parse hex palette components with gdk_rgba_parse for GTK3 paths.
Standardized GtkCellRendererText foreground color binding to use the palette foreground property macro across user list, DCC, and notify views.
2026-01-22 23:18:59 -07:00
bc11f40a7a Updated notify list cell rendering to apply GTK3 RGBA foreground properties and free boxed colors correctly while keeping GTK2 behavior intact.
Switched user list and DCC tree view text columns to select the GTK3 foreground-rgba property (with GTK2 fallbacks) for cell renderer text colors.
Reused RGBA parsing for palette-backed color chooser defaults and clarified palette change tracking comments.
2026-01-22 23:03:50 -07:00
51fd0fca91 Routed GTK cell renderer foreground bindings through PALETTE_FOREGROUND_PROPERTY for user list, notify, and DCC views to ensure GTK3 uses RGBA while preserving GTK2 behavior.
Tightened GTK3 RGBA parsing by using stack buffers in palette color conversion and guarded parsing in the setup color chooser dialog.
2026-01-22 22:47:11 -07:00
3c0a4e4995 Updated RGB16 palette parsing to use 16-bit RGBA strings with gdk_rgba_parse for GTK3 builds.
Parsed palette colors before initializing the GTK3 color chooser dialog to ensure RGBA normalization.
Switched GTK3 GtkCellRendererText foreground bindings to foreground-rgba with GTK2 fallbacks in user list, notify, and DCC views.
2026-01-22 22:36:49 -07:00
9959cf1f24 Standardized GtkCellRendererText foreground bindings to use the palette foreground property macro across user list, notify list, and DCC views (GTK2/GTK3 aware).
Generated GTK3 caret-color CSS using GdkRGBA string conversion instead of manual RGB math for input styling.
Simplified palette RGB16 parsing by building a GdkRGBA-compatible color string before parsing.
2026-01-22 22:25:26 -07:00
61669f6b98 Added a GTK3 fallback when parsing palette RGB16 values into GdkRGBA colors to keep RGBA initialization robust.
Updated GTK3 list-model color storage and GtkCellRendererText foreground properties to use RGBA values in the user list, notify list, and DCC views while retaining GTK2 behavior.
Copied palette RGBA values before initializing the GTK3 color chooser dialog to ensure RGBA usage on the GTK3 path.
2026-01-22 22:03:31 -07:00
d7d29a843f Added a forward declaration for userlist_store_color to prevent implicit declaration errors in GTK2 builds. 2026-01-20 12:51:11 -07:00
dbb9168426 Parse GTK3 palette RGB16 values into explicit GdkRGBA structs before assignment in the palette helper.
Copy RGBA values from the GTK color chooser into palette entries for the setup dialog path.
Added RGBA-aware list-store color helpers and usage for userlist, notify, and DCC views to keep color handling consistent across GTK versions.
2026-01-20 12:26:01 -07:00
cd52ebd7e8 Centralized the palette foreground property definition for GTK2/GTK3 and applied it to the user list, notify list, and DCC tree renderers to use RGBA where supported.
Removed legacy colormap allocation/free calls in palette handling and setup color selection while preserving the GTK2 path logic.
2026-01-19 22:58:52 -07:00
99e20751a8 Converted palette storage to GdkRGBA with GTK2-guarded helpers, including RGB16 conversion support for shared consumers and dark-mode palette handling.
Updated setup color selection and styling to use RGBA-aware GTK3 overrides/CSS while preserving GTK2 behavior in guarded paths.
Switched tree view color models/renderers and other palette consumers (user list, notify, DCC, menus, spell entry, input style) to RGBA-aware types/properties with shared RGB16 conversion usage.
2026-01-19 22:50:17 -07:00
01108d7c2f Aligned the GTK3 quit dialog checkbox to fill horizontally and stay vertically centered within the grid layout, keeping GTK2 behavior unchanged. 2026-01-19 22:17:57 -07:00
7e5ca51486 Added a GTK3/GTK2-aware helper to create the banlist table/grid with consistent spacing setup.
Updated the banlist UI setup to use the new helper when building the table container.
2026-01-19 22:01:45 -07:00
5441ab1a58 Aligned ban list checkboxes in GTK3 grids to preserve GTK2-style placement using GTK3 alignment helpers. 2026-01-19 21:42:55 -07:00
0c34c94397 Added a GTK2/GTK3-aware helper for channel list horizontal boxes and reused it for the filter rows to keep the GtkBox/GtkHBox split in one place. 2026-01-19 20:35:13 -07:00
a5f97fc018 Added mg_box_new to centralize GTK3/GTK2 GtkBox creation with homogeneous/spacing handling in maingui.c.
Updated main GUI layout construction to use mg_box_new for topic bars, text areas, meters, search/entry bars, dialog buttons, and generic tabs to keep GTK3-friendly box creation consistent while preserving GTK2 behavior.
2026-01-19 20:11:07 -07:00
91cdc28846 Added a chanlist label alignment helper and reused it for the filter labels to keep GTK3/GTK2 alignment behavior consistent.
Added a main GUI alignment helper and applied it to the quit dialog label alignment path for GTK3/GTK2 compatibility
2026-01-19 19:37:03 -07:00
2470954006 Added a Meson option to enable building the GTK frontend against GTK 3.
Switched the GTK frontend build logic to select GTK2/GTK3 dependencies and emit corresponding preprocessor defines.
Added GTK3 GtkGrid/alignment handling and GTK3 GtkBox replacements for the channel list controls while preserving GTK2 table behavior behind guards.
Switched the ban list layout to use GtkGrid under GTK3 with GTK2 table fallback for checkbox placement.
Updated main GTK UI layouts to use GTK3 GtkGrid/GtkBox and alignment/attachment logic (quit dialog, topic bar, search/entry, chanview placement, main window table) while keeping GTK2 behavior via HAVE_GTK3 guards.
2026-01-19 19:26:29 -07:00
deepend-tildeclub
0e661dec95 Delete win32/installer/zoitechat-arm64.iss 2026-01-19 14:43:40 -07:00
deepend-tildeclub
e503bec31a Fix command line argument formatting in installer script 2026-01-19 14:42:57 -07:00
deepend-tildeclub
628bb2e157 Update submodule URL for shared-modules 2026-01-19 13:06:09 -07:00
deepend-tildeclub
afeae7380d Update submodule URL for shared-modules 2026-01-18 21:01:04 -07:00
deepend-tildeclub
3530a5c191 Add options for Perl and Python in Meson setup 2026-01-18 19:16:40 -07:00
deepend-tildeclub
92b9577a19 Update .mailmap
undoing email change that shouldn't have changed.
2026-01-18 18:48:01 -07:00
deepend-tildeclub
56dc9b1b4a Merge pull request #30 from ZoiteChat/auto-dark-mode-on-windows-fix
fix auto dark/light mode on windows.
2026-01-18 15:53:02 -07:00
8c3986ffe0 fix auto dark/light mode on windows. 2026-01-18 10:46:41 -07:00
deepend-tildeclub
c2b67e647d Merge pull request #29 from ZoiteChat/gtk-ciaro
Gtk ciaro
2026-01-18 02:11:54 -07:00
6137fdbd91 Updated the channel list theme application to honor explicit light mode selection so it applies the light palette instead of staying dark. 2026-01-18 01:21:51 -07:00
35ecc2c643 Standardized non-numbered color selector button labels to use two figure spaces so their width matches the numbered palette buttons. 2026-01-18 01:14:49 -07:00
cb8b8bd4cc - Added a helper to apply the selected palette color across all GTK button states so color selector backgrounds stay consistent in preferences (GTK Ciara compatible).
- Reused the helper when initializing and updating color selector buttons to keep the UI in sync with chosen colors.
2026-01-17 23:50:44 -07:00
7279e3592f - Replaced the dark mode checkbox with an Auto/Dark/Light selector in Preferences → Colors and added the new mode labels/setting metadata to match the combo box UI.
- Updated palette handling to respect the effective dark mode (including auto) when saving colors, applying themes, and refreshing user list styling.
- Added auto dark-mode tracking that listens to system theme changes and reapplies palette/styles live when Auto is selected, so updates happen without restart (including channel list styling updates via setup_apply_real).
- Synced the stored auto dark-mode state when preferences are applied, keeping Auto mode consistent after manual changes.
- Exposed a helper for keeping the Auto state synchronized from the GTK layer to preferences handling.
2026-01-17 23:09:38 -07:00
8d275ddb31 - Added dark mode mode constants, config storage as an integer, and a helper to resolve Auto/Dark/Light using system preferences where available.
- Replaced the dark mode checkbox with an Auto/Dark/Light color mode selector and ensured palette edits use the resolved mode.
- Applied the resolved color mode consistently across palette saving and GTK styling in the user list and channel tree/theme application paths.
2026-01-17 22:52:32 -07:00
cf41615cb3 - Reworked GTK window snapshotting in the main GUI to capture into cairo surfaces and convert via gdk_pixbuf_get_from_surface.
- Added a Cairo surface → RGBA pixbuf conversion helper that unpremultiplies ARGB32 data for GTK2 compatibility while keeping window snapshots Cairo-based.
- Updated window snapshotting to use the new Cairo surface conversion instead of gdk_pixbuf_get_from_surface
2026-01-17 22:25:12 -07:00
c1f855c2ab - Updated main GUI color helpers and tab palette generation to use XTextColor, and simplified drag icon snapshotting to use gdk_pixbuf_get_from_window with a null guard.
- Added pixbuf-based cairo surface capture for xtext window scrolling with a fallback to full redraw when capture fails.
2026-01-17 21:56:00 -07:00
4ac836fc66 - Added a shared XTextColor definition and a palette conversion helper for Cairo-ready colors, decoupling renderer palettes from GdkColor usage in the API surface.
- Updated xtext palette APIs to accept internal color arrays directly for rendering setup.
- Wired xtext palette creation through UI entry points to use the new palette helper when constructing or refreshing text views.
2026-01-17 21:39:45 -07:00
5986e6a78b -Added the standard type attribute to the GTK file info query so file type checks no longer trigger GLib-GIO warnings.
-Replaced GtkStyle application in the channel tree view with explicit base/text/font modifications to avoid style attach/detach issues on teardown.

-Updated user list styling to apply the font directly instead of setting a shared GtkStyle instance.

-Switched color button updates to use background modifications instead of creating per-button styles, reducing detach warnings on shutdown.
2026-01-17 18:31:04 -07:00
0601be026c - Converted text background loading to build Cairo surfaces directly from pixbufs for renderer use.
- Updated the xtext renderer to accept Cairo background surfaces and dropped the GtkStyle attach during realize to keep rendering Cairo/Pango-focused.
- Switched background surface ownership and cleanup to use cairo_surface_t across the shared state and settings update path.
2026-01-17 18:19:00 -07:00
24b0a3d75f - Introduced the XTextColor struct and stored xtext palette/foreground/background colors in internal renderer state rather than GdkColor fields.
- Converted palette colors and background pixmaps into cairo-ready values/surfaces for rendering (including background tiling and separator colors).
2026-01-17 17:44:49 -07:00
2ac5234803 - Added Cairo-based window snapshot conversion (with unpremultiplication) for drag icons and updated drag rendering to use the new helper instead of drawable capture.
- Updated GtkXText to track the draw window and use a pixmap-to-surface helper for Cairo contexts, avoiding drawable references in the struct and rendering flow.
- Added a Cairo helper for capturing window-backed surfaces and used it when blitting during scrolling, fixing the build break from the removed drawable helper.
2026-01-17 17:34:38 -07:00
30e309853c Added the required gdk/gdk.h include before gdkcairo.h in maingui.c to satisfy GDK header include order requirements on Windows builds.
Added cairo surface tracking and context creation helpers for xtext rendering, including state initialization for the new draw surface field.

Replaced GdkPixmap-based offscreen text buffering with cairo surfaces and routed rendering/underline/strikethrough operations through the cairo context helper.
2026-01-17 16:56:35 -07:00
944ce69906 Added a Cairo color helper for drag highlight rendering and applied it to the drag motion drawing path.
Replaced GDK source helpers in the text rendering pipeline with Cairo surface/color helpers for lines, backgrounds, and blits.

Updated render sizing to use window dimensions and switched window copy paths to Cairo surfaces.
2026-01-17 16:46:21 -07:00
4bf5316cfa Replaced legacy GDK rectangle drawing in the drag highlight path with Cairo calls and ensured cleanup before early return 2026-01-17 16:34:38 -07:00
136e63a6cd ciaro fixes 2026-01-17 16:19:56 -07:00
5ea424d0e8 start of ciaro implementation. 2026-01-17 16:08:00 -07:00
deepend-tildeclub
d0e7e45a41 Revise changelog for ZoiteChat 2.17.3 release
Updated changelog for ZoiteChat version 2.17.3 with new features, fixes, and known issues.
2026-01-17 15:34:53 -07:00
306 changed files with 13670 additions and 4279 deletions

View File

@@ -29,9 +29,11 @@ jobs:
build-essential pkg-config meson ninja-build cmake \
gettext \
libcanberra-dev libdbus-glib-1-dev libglib2.0-dev \
libgtk2.0-dev libgtk-3-dev \
libgtk-3-dev \
libwayland-client0 libwayland-cursor0 libwayland-egl1 \
libxkbcommon0 \
libgtk-3-bin libglib2.0-bin shared-mime-info gsettings-desktop-schemas \
libluajit-5.1-dev libpci-dev libperl-dev libssl-dev \
libluajit-5.1-dev libpci-dev libperl-dev libssl-dev libayatana-appindicator3-dev \
python3-dev python3-cffi mono-devel desktop-file-utils \
patchelf file curl
@@ -41,7 +43,10 @@ jobs:
rm -rf build
meson setup build \
--prefix=/usr \
-Dgtk3=true \
-Dtext-frontend=true \
-Dwith-perl=perl \
-Dwith-python=python3 \
-Dauto_features=enabled
- name: Build
@@ -72,11 +77,9 @@ jobs:
chmod +x linuxdeploy-plugin-gtk
export PATH="${PWD}:${PATH}"
# Bundle CA certificates into the AppDir
install -Dm644 /etc/ssl/certs/ca-certificates.crt \
AppDir/etc/ssl/certs/ca-certificates.crt
# Custom AppRun: preserve typical AppDir runtime paths AND force CA bundle
cat > AppRun <<'EOF'
#!/bin/sh
set -eu
@@ -97,15 +100,26 @@ jobs:
export GIO_EXTRA_MODULES="$APPDIR/usr/lib/gio/modules${GIO_EXTRA_MODULES:+:$GIO_EXTRA_MODULES}"
fi
# OpenSSL trust store override (fixes “unable to get local issuer certificate (20)”)
# OpenSSL trust store override
export SSL_CERT_FILE="${SSL_CERT_FILE:-$APPDIR/etc/ssl/certs/ca-certificates.crt}"
export SSL_CERT_DIR="${SSL_CERT_DIR:-$APPDIR/etc/ssl/certs}"
export CURL_CA_BUNDLE="${CURL_CA_BUNDLE:-$SSL_CERT_FILE}"
# Prefer Wayland if the session provides it, but keep X11 fallback.
# Don't override if the user already set GDK_BACKEND explicitly.
if [ -z "${GDK_BACKEND:-}" ]; then
if [ -n "${WAYLAND_DISPLAY:-}" ] || [ "${XDG_SESSION_TYPE:-}" = "wayland" ]; then
export GDK_BACKEND="wayland,x11"
else
export GDK_BACKEND="x11"
fi
fi
exec "$APPDIR/usr/bin/zoitechat" "$@"
EOF
chmod +x AppRun
VERSION="$(git describe --tags --always)"
./linuxdeploy-x86_64.AppImage \

View File

@@ -13,47 +13,36 @@ jobs:
image: debian:bookworm
steps:
- name: Install base tooling (git + deps)
- name: Install packaging tooling and build dependencies
run: |
set -eux
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y --no-install-recommends \
git ca-certificates \
build-essential pkg-config meson ninja-build cmake \
gettext \
libcanberra-dev libdbus-glib-1-dev libglib2.0-dev libgtk2.0-dev \
libluajit-5.1-dev libpci-dev libperl-dev libssl-dev \
python3-dev python3-cffi mono-devel desktop-file-utils
build-essential dpkg-dev debhelper fakeroot \
pkg-config meson ninja-build \
gettext iso-codes \
libcanberra-dev libdbus-glib-1-dev libglib2.0-dev libgtk-3-dev libayatana-appindicator3-dev \
liblua5.3-dev libpci-dev libperl-dev libssl-dev \
python3-dev python3-cffi desktop-file-utils
- uses: actions/checkout@v4
with:
submodules: true
- name: Configure
- name: Build Debian packages
run: |
set -eux
rm -rf build
meson setup build \
-Dtext-frontend=true \
-Dauto_features=enabled
# If configure fails, show the project's actual option names in the log.
- name: Show Meson options (on failure)
if: failure()
run: |
set -eux
meson configure build || true
dpkg-buildpackage -us -uc -b
- name: Build
- name: Collect Debian artifacts
run: |
set -eux
ninja -C build
mkdir -p artifacts
cp -v ../*.deb ../*.changes ../*.buildinfo artifacts/
- name: Test
run: |
set -eux
ninja -C build test
- name: Install
run: |
set -eux
ninja -C build install
- name: Upload Debian artifacts
uses: actions/upload-artifact@v4
with:
name: zoitechat-debian-packages
path: artifacts/*

359
.github/workflows/macos-build.yml vendored Normal file
View File

@@ -0,0 +1,359 @@
name: macOS Build
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
macos_build_arm64:
runs-on: macos-15-arm64
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install build dependencies
run: |
set -eux
brew update
brew install \
meson ninja pkg-config gettext perl \
gtk+3 gdk-pixbuf pango adwaita-icon-theme \
hicolor-icon-theme glib dbus \
enchant gtk-mac-integration
if ! command -v gtk-mac-bundler >/dev/null 2>&1 && ! python3 -c 'import gtk_mac_bundler' >/dev/null 2>&1; then
curl -fsSL https://codeload.github.com/jralls/gtk-mac-bundler/tar.gz/refs/heads/master -o /tmp/gtk-mac-bundler.tar.gz
rm -rf /tmp/gtk-mac-bundler
mkdir -p /tmp/gtk-mac-bundler
tar -xzf /tmp/gtk-mac-bundler.tar.gz -C /tmp/gtk-mac-bundler --strip-components=1
(cd /tmp/gtk-mac-bundler && make install)
fi
- name: Configure and build (arm64)
run: |
set -eux
rm -rf build-macos-arm64 stage/arm64
CFLAGS="-arch arm64" LDFLAGS="-arch arm64" meson setup build-macos-arm64 \
--prefix="$PWD/stage/arm64" \
-Dgtk3=true \
-Dtext-frontend=true \
-Dlibcanberra=disabled \
-Dwith-perl=perl \
-Dwith-python=python3 \
-Dauto_features=enabled
CFLAGS="-arch arm64" LDFLAGS="-arch arm64" meson compile -C build-macos-arm64
meson install -C build-macos-arm64
- name: Stage runtime dependencies for bundling (arm64)
run: |
set -eux
STAGE_PREFIX="$PWD/stage/arm64"
BREW_PREFIX="$(brew --prefix)"
ENCHANT_PREFIX="$(brew --prefix enchant)"
mkdir -p "$STAGE_PREFIX/lib" "$STAGE_PREFIX/share"
rsync -a "$BREW_PREFIX/lib/gtk-3.0" "$STAGE_PREFIX/lib/"
rsync -a "$BREW_PREFIX/lib/gdk-pixbuf-2.0" "$STAGE_PREFIX/lib/"
rsync -a "$BREW_PREFIX/share/locale/" "$STAGE_PREFIX/share/locale/"
mkdir -p "$STAGE_PREFIX/opt"
rm -rf "$STAGE_PREFIX/opt/enchant"
rsync -aL "$ENCHANT_PREFIX/" "$STAGE_PREFIX/opt/enchant/"
- name: Package unsigned .app (arm64)
run: |
set -eux
VERSION="$(git describe --tags --always)"
export VERSION
(
cd osx
BUNDLE_PREFIX="$PWD/../stage/arm64/" \
ENCHANT_PREFIX="$PWD/../stage/arm64/opt/enchant" \
TARGET_ARCHES="arm64" \
./makebundle.sh
)
mv osx/ZoiteChat-*.app.zip ./ZoiteChat-arm64.app.zip
- name: Upload arm64 macOS app artifact
uses: actions/upload-artifact@v4
with:
name: zoitechat-macos-arm64
path: ZoiteChat-arm64.app.zip
if-no-files-found: error
retention-days: 14
macos_build_x86_64:
runs-on: macos-15-intel
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install build dependencies
run: |
set -eux
brew update
brew install \
meson ninja pkg-config gettext perl \
gtk+3 gdk-pixbuf pango adwaita-icon-theme \
hicolor-icon-theme glib dbus \
enchant gtk-mac-integration
if ! command -v gtk-mac-bundler >/dev/null 2>&1 && ! python3 -c 'import gtk_mac_bundler' >/dev/null 2>&1; then
curl -fsSL https://codeload.github.com/jralls/gtk-mac-bundler/tar.gz/refs/heads/master -o /tmp/gtk-mac-bundler.tar.gz
rm -rf /tmp/gtk-mac-bundler
mkdir -p /tmp/gtk-mac-bundler
tar -xzf /tmp/gtk-mac-bundler.tar.gz -C /tmp/gtk-mac-bundler --strip-components=1
(cd /tmp/gtk-mac-bundler && make install)
fi
- name: Configure and build (x86_64)
run: |
set -eux
rm -rf build-macos-x86_64 stage/x86_64
CFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" meson setup build-macos-x86_64 \
--prefix="$PWD/stage/x86_64" \
-Dgtk3=true \
-Dtext-frontend=true \
-Dlibcanberra=disabled \
-Ddarwin-arch-sanity-check=true \
-Dwith-perl=perl \
-Dwith-python=python3 \
-Dauto_features=enabled
CFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" meson compile -C build-macos-x86_64
meson install -C build-macos-x86_64
- name: Stage runtime dependencies for bundling (x86_64)
run: |
set -eux
STAGE_PREFIX="$PWD/stage/x86_64"
BREW_PREFIX="$(brew --prefix)"
ENCHANT_PREFIX="$(brew --prefix enchant)"
mkdir -p "$STAGE_PREFIX/lib" "$STAGE_PREFIX/share"
rsync -a "$BREW_PREFIX/lib/gtk-3.0" "$STAGE_PREFIX/lib/"
rsync -a "$BREW_PREFIX/lib/gdk-pixbuf-2.0" "$STAGE_PREFIX/lib/"
rsync -a "$BREW_PREFIX/share/locale/" "$STAGE_PREFIX/share/locale/"
mkdir -p "$STAGE_PREFIX/opt"
rm -rf "$STAGE_PREFIX/opt/enchant"
rsync -aL "$ENCHANT_PREFIX/" "$STAGE_PREFIX/opt/enchant/"
- name: Package unsigned .app (x86_64)
run: |
set -eux
VERSION="$(git describe --tags --always)"
export VERSION
(
cd osx
BUNDLE_PREFIX="$PWD/../stage/x86_64/" \
ENCHANT_PREFIX="$PWD/../stage/x86_64/opt/enchant" \
TARGET_ARCHES="x86_64" \
./makebundle.sh
)
mv osx/ZoiteChat-*.app.zip ./ZoiteChat-x86_64.app.zip
- name: Upload x86_64 macOS app artifact
uses: actions/upload-artifact@v4
with:
name: zoitechat-macos-x86_64
path: ZoiteChat-x86_64.app.zip
if-no-files-found: error
retention-days: 14
macos_assemble_universal_unsigned:
needs:
- macos_build_arm64
- macos_build_x86_64
runs-on: macos-latest
steps:
- name: Download arm64 app artifact
uses: actions/download-artifact@v4
with:
name: zoitechat-macos-arm64
path: dist/arm64
- name: Download x86_64 app artifact
uses: actions/download-artifact@v4
with:
name: zoitechat-macos-x86_64
path: dist/x86_64
- name: Merge app bundles into universal
run: |
set -eux
unzip -q dist/arm64/ZoiteChat-arm64.app.zip -d dist/arm64
unzip -q dist/x86_64/ZoiteChat-x86_64.app.zip -d dist/x86_64
ARM_APP="$(find dist/arm64 -maxdepth 2 -name 'ZoiteChat.app' -type d | head -n 1)"
X86_APP="$(find dist/x86_64 -maxdepth 2 -name 'ZoiteChat.app' -type d | head -n 1)"
UNIVERSAL_APP="dist/universal/ZoiteChat.app"
rm -rf "$UNIVERSAL_APP"
mkdir -p dist/universal
cp -a "$ARM_APP" "$UNIVERSAL_APP"
while IFS= read -r relpath; do
arm_file="$ARM_APP/$relpath"
x86_file="$X86_APP/$relpath"
out_file="$UNIVERSAL_APP/$relpath"
if [ -f "$x86_file" ] && file -b "$arm_file" | grep -q 'Mach-O'; then
mkdir -p "$(dirname "$out_file")"
lipo -create "$arm_file" "$x86_file" -output "$out_file"
fi
done < <(cd "$ARM_APP" && find . -type f | sed 's|^./||')
while IFS= read -r macho_path; do
archs="$(lipo -archs "$macho_path")"
echo "$macho_path -> $archs"
echo " $archs " | grep -q ' arm64 '
echo " $archs " | grep -q ' x86_64 '
done < <(find "$UNIVERSAL_APP" -type f -exec sh -c 'file -b "$1" | grep -q "Mach-O" && printf "%s\n" "$1"' _ {} \;)
VERSION="$(git -C "$GITHUB_WORKSPACE" describe --tags --always)"
ditto -c -k --sequesterRsrc --keepParent "$UNIVERSAL_APP" "dist/ZoiteChat-$VERSION.app.zip"
- name: Upload unsigned macOS app artifact
uses: actions/upload-artifact@v4
with:
name: zoitechat-macos-unsigned
path: dist/ZoiteChat-*.app.zip
if-no-files-found: error
retention-days: 14
macos_release_signed:
needs: macos_assemble_universal_unsigned
runs-on: macos-latest
if: >-
github.event_name == 'push' &&
github.ref == 'refs/heads/master'
steps:
- name: Check signing secrets availability
id: signing_secrets
env:
APPLE_DEVELOPER_ID_APPLICATION: ${{ secrets.APPLE_DEVELOPER_ID_APPLICATION }}
APPLE_DEVELOPER_ID_CERT_P12: ${{ secrets.APPLE_DEVELOPER_ID_CERT_P12 }}
APPLE_DEVELOPER_ID_CERT_P12_PASSWORD: ${{ secrets.APPLE_DEVELOPER_ID_CERT_P12_PASSWORD }}
APPLE_NOTARY_API_KEY: ${{ secrets.APPLE_NOTARY_API_KEY }}
APPLE_NOTARY_API_KEY_ID: ${{ secrets.APPLE_NOTARY_API_KEY_ID }}
APPLE_NOTARY_ISSUER_ID: ${{ secrets.APPLE_NOTARY_ISSUER_ID }}
run: |
set -eu
required_secrets=(
APPLE_DEVELOPER_ID_APPLICATION
APPLE_DEVELOPER_ID_CERT_P12
APPLE_DEVELOPER_ID_CERT_P12_PASSWORD
APPLE_NOTARY_API_KEY
APPLE_NOTARY_API_KEY_ID
APPLE_NOTARY_ISSUER_ID
)
missing=0
for key in "${required_secrets[@]}"; do
if [ -z "${!key:-}" ]; then
echo "Missing secret: $key"
missing=1
fi
done
if [ "$missing" -eq 1 ]; then
echo "ready=false" >> "$GITHUB_OUTPUT"
else
echo "ready=true" >> "$GITHUB_OUTPUT"
fi
- name: Skip signing because required secrets are missing
if: steps.signing_secrets.outputs.ready != 'true'
run: echo "Signing and notarization skipped due to missing required secrets."
- name: Download unsigned app artifact
if: steps.signing_secrets.outputs.ready == 'true'
uses: actions/download-artifact@v4
with:
name: zoitechat-macos-unsigned
path: dist
- name: Import Developer ID certificate
if: steps.signing_secrets.outputs.ready == 'true'
env:
CERT_P12_BASE64: ${{ secrets.APPLE_DEVELOPER_ID_CERT_P12 }}
CERT_PASSWORD: ${{ secrets.APPLE_DEVELOPER_ID_CERT_P12_PASSWORD }}
run: |
set -eux
echo "$CERT_P12_BASE64" | base64 --decode > certificate.p12
security create-keychain -p "" build.keychain
security set-keychain-settings -lut 21600 build.keychain
security unlock-keychain -p "" build.keychain
security import certificate.p12 -k build.keychain -P "$CERT_PASSWORD" -A -T /usr/bin/codesign
security list-keychains -d user -s build.keychain $(security list-keychains -d user | tr -d '"')
security set-key-partition-list -S apple-tool:,apple: -s -k "" build.keychain
- name: Codesign app bundle
if: steps.signing_secrets.outputs.ready == 'true'
env:
CODESIGN_IDENTITY: ${{ secrets.APPLE_DEVELOPER_ID_APPLICATION }}
run: |
set -eux
unzip -q dist/ZoiteChat-*.app.zip -d dist
APP_PATH="$(find dist -maxdepth 1 -name 'ZoiteChat.app' -type d | head -n 1)"
codesign --force --deep --options runtime --timestamp \
--sign "$CODESIGN_IDENTITY" "$APP_PATH"
codesign --verify --deep --strict --verbose=2 "$APP_PATH"
spctl --assess --type execute --verbose "$APP_PATH"
- name: Notarize and staple
if: steps.signing_secrets.outputs.ready == 'true'
env:
NOTARY_API_KEY_BASE64: ${{ secrets.APPLE_NOTARY_API_KEY }}
NOTARY_KEY_ID: ${{ secrets.APPLE_NOTARY_API_KEY_ID }}
NOTARY_ISSUER_ID: ${{ secrets.APPLE_NOTARY_ISSUER_ID }}
run: |
set -eux
APP_PATH="$(find dist -maxdepth 1 -name 'ZoiteChat.app' -type d | head -n 1)"
NOTARY_ZIP="dist/ZoiteChat-notarize.zip"
SIGNED_ZIP="dist/ZoiteChat-signed.app.zip"
echo "$NOTARY_API_KEY_BASE64" | base64 --decode > AuthKey_${NOTARY_KEY_ID}.p8
ditto -c -k --keepParent "$APP_PATH" "$NOTARY_ZIP"
xcrun notarytool submit "$NOTARY_ZIP" \
--key "AuthKey_${NOTARY_KEY_ID}.p8" \
--key-id "$NOTARY_KEY_ID" \
--issuer "$NOTARY_ISSUER_ID" \
--wait
xcrun stapler staple "$APP_PATH"
xcrun stapler validate "$APP_PATH"
ditto -c -k --sequesterRsrc --keepParent "$APP_PATH" "$SIGNED_ZIP"
- name: Upload signed macOS app artifact
if: steps.signing_secrets.outputs.ready == 'true'
uses: actions/upload-artifact@v4
with:
name: zoitechat-macos-signed
path: dist/ZoiteChat-signed.app.zip
if-no-files-found: error
retention-days: 30

View File

@@ -1,56 +0,0 @@
name: MSYS2 Build
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
msys2_build:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v4
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: >-
mingw-w64-x86_64-gcc
mingw-w64-x86_64-pkg-config
mingw-w64-x86_64-python-cffi
mingw-w64-x86_64-meson
mingw-w64-x86_64-ninja
mingw-w64-x86_64-gtk2
mingw-w64-x86_64-gtk-update-icon-cache
mingw-w64-x86_64-luajit
mingw-w64-x86_64-desktop-file-utils
mingw-w64-x86_64-gettext-tools
- name: Sanity check gettext ITS rules
run: |
set -eux
which msgfmt || true
msgfmt --version
ls -la /mingw64/share/gettext-*/its || true
- name: Configure
run: |
set -eux
rm -rf build
meson setup build \
-Dtext-frontend=true \
-Ddbus=disabled \
-Dwith-upd=false \
-Dwith-perl=false
- name: Build
run: ninja -C build
- name: Test
run: ninja -C build test

View File

@@ -1,117 +0,0 @@
name: OpenBSD Build
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
openbsd_package:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Build OpenBSD package
uses: vmactions/openbsd-vm@v1
with:
release: '7.5'
usesh: true
sync: rsync
run: |
set -eux
rdate -n pool.ntp.org
export PKG_PATH="https://ftp.openbsd.org/pub/OpenBSD/7.5/packages/$(uname -m)/"
pkg_add -U \
git \
meson ninja pkgconf gmake \
gettext-tools \
glib2 gtk+2 dbus-glib libcanberra \
luajit mono libgdiplus openssl
work="$(mktemp -d /tmp/zoitechat.XXXXXX)"
trap 'rm -rf "$work"' EXIT
rsync -a --delete "$GITHUB_WORKSPACE"/ "$work/src/"
cd "$work/src"
rm -rf build
meson setup build \
--prefix=/usr/local \
-Dtext-frontend=true \
-Dplugin=false \
-Dauto_features=enabled
ninja -C build
staging="$work/staging"
rm -rf "$staging"
mkdir -p "$staging"
# Staged install
DESTDIR="$staging" meson install -C build --no-rebuild
# If these exist, something ignored DESTDIR (install scripts are leaking)
ls -l /usr/local/bin/zoitechat /usr/local/bin/thememan 2>/dev/null || true
sync
sleep 1
sync
# Freeze staged tree so pkg_create doesn't see moving targets
snap="$work/staging-snap"
rm -rf "$snap"
mkdir -p "$snap"
(cd "$staging" && pax -rw -pe . "$snap")
version="$(meson introspect --projectinfo build | sed -n 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')"
pkg_name="zoitechat-${version}"
pkg_file="${pkg_name}.tgz"
plist="$work/openbsd-plist"
desc="$work/DESCR"
cat >"$desc" <<'EOF'
ZoiteChat is an IRC client (HexChat-derived) with a GTK UI and optional tools.
EOF
{
echo "@cwd /usr/local"
# Files + symlinks
find "$snap/usr/local" \( -type f -o -type l \) -print \
| LC_ALL=C sort \
| sed "s#^$snap/usr/local/##"
# Directories (reverse so children removed first)
find "$snap/usr/local" -mindepth 1 -type d -print \
| LC_ALL=C sort -r \
| sed "s#^$snap/usr/local/##" \
| sed 's#^#@dir #'
} > "$plist"
# OpenBSD pkg_create: COMMENT is set via -D COMMENT=... (mandatory), no -c flag exists.
# Create the .tgz in $work so we can copy it back out.
cd "$work"
pkg_create \
-B "$snap" \
-p /usr/local \
-f "$plist" \
-d "$desc" \
-D "COMMENT=ZoiteChat IRC client" \
-D "FULLPKGPATH=net/zoitechat" \
"$pkg_file"
mkdir -p "$GITHUB_WORKSPACE/artifacts"
cp "$work/$pkg_file" "$GITHUB_WORKSPACE/artifacts/"
- name: Upload OpenBSD package
uses: actions/upload-artifact@v4
with:
name: openbsd-package
path: artifacts/*.tgz

72
.github/workflows/solus-eopkg-build.yml vendored Normal file
View File

@@ -0,0 +1,72 @@
name: Solus eopkg build
on:
workflow_dispatch:
inputs:
package_yml:
description: "Path to Solus package.yml for ypkg build"
required: false
default: "packaging/solus/package.yml"
solus_image:
description: "Solus container image"
required: false
default: "ghcr.io/getsolus/solus:latest"
push:
branches:
- main
- master
permissions:
contents: read
packages: read
jobs:
build-eopkg:
runs-on: ubuntu-latest
env:
SOLUS_IMAGE: ${{ inputs.solus_image || 'ghcr.io/getsolus/solus:latest' }}
PACKAGE_YML: ${{ inputs.package_yml || 'packaging/solus/package.yml' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Log in to GHCR (for ghcr.io images)
if: startsWith(env.SOLUS_IMAGE, 'ghcr.io/')
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Build eopkg package in Solus container
run: |
if [ ! -f "$PACKAGE_YML" ]; then
echo "Expected Solus packaging file at $PACKAGE_YML" >&2
echo "Available package.yml files:" >&2
find . -name "package.yml" -print >&2 || true
echo "Add a package.yml (ypkg) file or update the workflow input PACKAGE_YML." >&2
exit 1
fi
docker pull "$SOLUS_IMAGE"
docker run --rm \
-v "$PWD":/workspace \
-w /workspace \
-e PACKAGE_YML="$PACKAGE_YML" \
"$SOLUS_IMAGE" \
sh -lc '
set -euo pipefail
eopkg update-repo -y
eopkg install -y ypkg git
ypkg build "$PACKAGE_YML"
mkdir -p /workspace/artifacts
find . -maxdepth 3 -name "*.eopkg" -type f -exec cp -v {} /workspace/artifacts/ \;
'
- name: Upload eopkg artifacts
uses: actions/upload-artifact@v4
with:
name: solus-eopkg
path: artifacts/*.eopkg
if-no-files-found: error

View File

@@ -10,7 +10,7 @@ on:
jobs:
windows_build:
runs-on: windows-2019
runs-on: windows-2022
permissions:
contents: read
@@ -20,13 +20,8 @@ jobs:
strategy:
matrix:
platform: [x64, win32]
arch: [x64, x86]
exclude:
- platform: x64
arch: x86
- platform: win32
arch: x64
platform: [x64]
arch: [x64]
fail-fast: false
steps:
@@ -39,16 +34,16 @@ jobs:
- name: Install Dependencies
run: |
New-Item -Name "deps" -ItemType "Directory"
New-Item -Name "deps" -ItemType "Directory" -Force | Out-Null
Invoke-WebRequest http://files.jrsoftware.org/is/5/innosetup-5.5.9-unicode.exe -OutFile deps\innosetup-unicode.exe
Invoke-WebRequest https://files.jrsoftware.org/is/6/innosetup-6.7.0.exe -OutFile deps\innosetup-unicode.exe
& deps\innosetup-unicode.exe /VERYSILENT | Out-Null
Invoke-WebRequest https://github.com/zoitechat/gvsbuild/releases/download/zoitechat-2.17.0/idpsetup-1.5.1.exe -OutFile deps\idpsetup.exe
& deps\idpsetup.exe /VERYSILENT
Invoke-WebRequest https://github.com/zoitechat/gvsbuild/releases/download/zoitechat-2.17.0/gtk-${{ matrix.platform }}-2018-08-29-openssl1.1.7z -OutFile deps\gtk-${{ matrix.arch }}.7z
& 7z.exe x deps\gtk-${{ matrix.arch }}.7z -oC:\gtk-build\gtk
Invoke-WebRequest https://github.com/ZoiteChat/gvsbuild/releases/download/zoitechat-2.18.0-pre1/GTK3_Gvsbuild_zoitechat-2.18.0-pre1_${{ matrix.platform }}.7z -OutFile deps\gtk-${{ matrix.arch }}.7z
& 7z.exe x deps\gtk-${{ matrix.arch }}.7z -oC:\gtk-build\gtk\x64\release
Invoke-WebRequest https://github.com/zoitechat/gvsbuild/releases/download/zoitechat-2.17.0/gendef-20111031.7z -OutFile deps\gendef.7z
& 7z.exe x deps\gendef.7z -oC:\gtk-build
@@ -76,7 +71,7 @@ jobs:
- name: Build
run: |
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat"
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
set "PYTHON_DIR=C:\gtk-build\python-3.14.2\${{ matrix.platform }}"
if not exist "%PYTHON_DIR%\libs\python314.lib" (
@@ -93,7 +88,7 @@ jobs:
- name: Preparing Artifacts
run: |
move ..\zoitechat-build\${{ matrix.platform }}\ZoiteChat*.exe .\
move ..\zoitechat-build\${{ matrix.platform }}\ZoiteChat-*.exe .\
move ..\zoitechat-build .\
shell: cmd
@@ -102,7 +97,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: Installer ${{ matrix.arch }}
path: ZoiteChat*.exe
path: ZoiteChat-*.exe
- name: Attest Installer (Artifact Attestation)
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }}

View File

@@ -1,5 +1,5 @@
Berke Viktor <github.bviktor@outlook.com> <berkeviktor@aol.com>
Berke Viktor <github.bviktor@outlook.com> <bviktor@zoitechat.org>
Berke Viktor <github.bviktor@outlook.com> <bviktor@hexchat.org>
Berke Viktor <github.bviktor@outlook.com> <bviktor@outlook.com>
Berke Viktor <github.bviktor@outlook.com> berkeviktor@aol.com
Patrick Griffis <tingping@tingping.se> TingPing <tingping@fedoraproject.org>

45
Makefile Normal file
View File

@@ -0,0 +1,45 @@
PREFIX ?= /usr/local
BUILD_DIR ?= build
MESON ?= meson
NINJA ?= ninja
C_STD ?= c17
MESON_SETUP_ARGS ?=
MESON_SETUP_ARGS += -Dc_std=$(C_STD)
MESON_COMPILE_ARGS ?=
MESON_INSTALL_ARGS ?=
CONFIG_STAMP := $(BUILD_DIR)/build.ninja
.PHONY: all configure build reconfigure install uninstall clean distclean
all: build
# Only run initial meson setup if we don't have a configured build dir yet.
$(CONFIG_STAMP):
@mkdir -p $(BUILD_DIR)
@env NINJA=$(NINJA) $(MESON) setup $(BUILD_DIR) --prefix=$(PREFIX) $(MESON_SETUP_ARGS)
configure: $(CONFIG_STAMP)
build: configure
@env NINJA=$(NINJA) $(MESON) compile -C $(BUILD_DIR) $(MESON_COMPILE_ARGS)
reconfigure:
@mkdir -p $(BUILD_DIR)
@env NINJA=$(NINJA) $(MESON) setup --reconfigure $(BUILD_DIR) --prefix=$(PREFIX) $(MESON_SETUP_ARGS)
install: build
@env NINJA=$(NINJA) $(MESON) install -C $(BUILD_DIR) $(MESON_INSTALL_ARGS)
uninstall: configure
@$(NINJA) -C $(BUILD_DIR) uninstall
clean:
@if [ -f "$(CONFIG_STAMP)" ]; then \
env NINJA=$(NINJA) $(MESON) compile -C $(BUILD_DIR) --clean; \
else \
echo "Nothing to clean (no $(CONFIG_STAMP))."; \
fi
distclean:
rm -rf $(BUILD_DIR)

1122
changelog.rst Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="8" cy="8" r="5.5" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M8 7v4" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
<circle cx="8" cy="4.8" r=".9" fill="#e5e7eb"/>
</svg>

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="8" cy="8" r="4.8" fill="none" stroke="#e5e7eb" stroke-width="1.3"/><path d="M8 5.8v4.4M5.8 8h4.4" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<rect x="2.5" y="3" width="11" height="10" rx="1.2" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M4.5 5.5h7M4.5 8h7M4.5 10.5h5" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
<circle cx="3.5" cy="5.5" r=".2" fill="#e5e7eb"/>
</svg>

After

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M3.2 5.2h9.6" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
<path d="M5 5.2v7.3c0 .6.4 1 1 1h4c.6 0 1-.4 1-1V5.2" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M6.5 3.5h3" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
<path d="M6.8 7v4M9.2 7v4" stroke="#e5e7eb" stroke-width="1.2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<rect x="2.5" y="2.5" width="11" height="11" rx="1.6" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M5.2 5.2l5.6 5.6M10.8 5.2 5.2 10.8" stroke="#e5e7eb" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M2.5 8a5.5 5.5 0 0 1 11 0" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M4.5 10.5h7" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
<circle cx="8" cy="8" r="1.1" fill="#e5e7eb"/>
</svg>

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M6 4.5h6.5v8H6z" fill="none" stroke="#e5e7eb" stroke-width="1.3"/><path d="M3.5 2.5H10v1.8" fill="none" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/><path d="M3.5 2.5v8.8H5.3" fill="none" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M5.2 5.3h5.6v7.2H5.2z" fill="none" stroke="#e5e7eb" stroke-width="1.3"/><path d="M4 5.3h8" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/><path d="M6.3 3.7h3.4" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/><path d="M7.1 6.6v4.6M8.9 6.6v4.6" stroke="#e5e7eb" stroke-width="1.1" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<rect x="2" y="4" width="8" height="8" rx="1.2" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M8 8h5M10.5 5.5 13 8l-2.5 2.5" fill="none" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M2.5 8a5.5 5.5 0 0 1 11 0" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M4.5 10.5h7" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
<path d="M5 5l6 6" stroke="#e5e7eb" stroke-width="1.4" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="5.6" fill="rgb(255,199,64)" stroke="rgb(240,240,240)" stroke-width="1"/><circle cx="6" cy="7" r="0.8" fill="rgb(240,240,240)"/><circle cx="10" cy="7" r="0.8" fill="rgb(240,240,240)"/><path d="M5.5 9.4c.6 1 1.4 1.6 2.5 1.6s1.9-.6 2.5-1.6" fill="none" stroke="rgb(240,240,240)" stroke-width="1" stroke-linecap="round"/></svg>

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="7" cy="7" r="3.5" fill="none" stroke="#e5e7eb" stroke-width="1.4"/>
<path d="M9.8 9.8 13 13" stroke="#e5e7eb" stroke-width="1.5" stroke-linecap="round"/>
<path d="M7 5.4v3.2M5.4 7h3.2" stroke="#e5e7eb" stroke-width="1.2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="8" cy="8" r="5.5" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M6.4 6.2a1.8 1.8 0 1 1 2.8 1.5c-.7.5-1.2.9-1.2 1.8" fill="none" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
<circle cx="8" cy="11.8" r=".8" fill="#e5e7eb"/>
</svg>

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M2.5 8h6" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
<path d="M6 5l3 3-3 3" fill="none" stroke="#e5e7eb" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="10" y="3" width="3.5" height="10" rx="1" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
</svg>

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M2.5 8h6" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
<path d="M6 5l2.8 3L6 11" fill="none" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="9" y="4" width="4.5" height="8" rx="1" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M11.25 6v1.8" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<rect x="2.5" y="3" width="11" height="10" rx="1.2" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M4.5 5.5h7M4.5 8h7M4.5 10.5h5" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
<circle cx="3.5" cy="5.5" r=".2" fill="#e5e7eb"/>
</svg>

After

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M3 2.5h6l4 4V13.5a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M9 2.5v4h4" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M8 8v4M6 10h4" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M5.5 3.5 10.5 8l-5 4.5" fill="none" stroke="#e5e7eb" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="8" cy="8" r="2.1" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<path d="M8 2.8v1.4M8 11.8v1.4M13.2 8h-1.4M4.2 8H2.8M11.7 4.3l-1 1M5.3 10.7l-1 1M11.7 11.7l-1-1M5.3 5.3l-1-1" stroke="#e5e7eb" stroke-width="1.2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M10.5 3.5 5.5 8l5 4.5" fill="none" stroke="#e5e7eb" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M8 2.5v5" stroke="#e5e7eb" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5 4.3a5 5 0 1 0 6 0" fill="none" stroke="#e5e7eb" stroke-width="1.4" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M12.8 7.4A4.8 4.8 0 1 0 8 12.8" fill="none" stroke="#e5e7eb" stroke-width="1.4" stroke-linecap="round"/><path d="M13 3.5v3.7H9.3" fill="none" stroke="#e5e7eb" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="8" cy="8" r="4.8" fill="none" stroke="#e5e7eb" stroke-width="1.3"/><path d="M5.8 8h4.4" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M3 2.5h8l2 2v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<rect x="5" y="3.5" width="4.5" height="2.5" fill="none" stroke="#e5e7eb" stroke-width="1.2"/>
<rect x="5" y="9" width="3.4" height="3" fill="none" stroke="#e5e7eb" stroke-width="1.2"/>
<path d="M9.8 8.9v3.6M8.1 10.7l1.7-1.8 1.8 1.8" fill="none" stroke="#e5e7eb" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M3 2.5h8l2 2v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z" fill="none" stroke="#e5e7eb" stroke-width="1.3"/>
<rect x="5" y="3.5" width="4.5" height="2.5" fill="none" stroke="#e5e7eb" stroke-width="1.2"/>
<rect x="5" y="9" width="6" height="3" fill="none" stroke="#e5e7eb" stroke-width="1.2"/>
</svg>

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="7" cy="7" r="3.5" fill="none" stroke="#e5e7eb" stroke-width="1.4"/>
<path d="M9.8 9.8 13 13" stroke="#e5e7eb" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M4 4.2h4M6 4.2v7.4M3.2 7.2h5.6" fill="none" stroke="#e5e7eb" stroke-width="1.2" stroke-linecap="round"/><path d="m8.9 9.3 1.5 1.5 2.8-3" fill="none" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><g fill="none" stroke="rgb(240,240,240)" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M13 5.8A5.5 5.5 0 1 0 5 13"/><path d="M13 2.2v3h-3"/><path d="M3 10.2A5.5 5.5 0 1 0 11 3"/><path d="M3 13.8v-3h3"/></g></svg>

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="8" cy="8" r="5.5" fill="none" stroke="#1f2937" stroke-width="1.3"/>
<path d="M8 7v4" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
<circle cx="8" cy="4.8" r=".9" fill="#1f2937"/>
</svg>

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="8" cy="8" r="4.8" fill="none" stroke="#1f2937" stroke-width="1.3"/><path d="M8 5.8v4.4M5.8 8h4.4" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<rect x="2.5" y="3" width="11" height="10" rx="1.2" fill="none" stroke="#1f2937" stroke-width="1.3"/>
<path d="M4.5 5.5h7M4.5 8h7M4.5 10.5h5" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
<circle cx="3.5" cy="5.5" r=".2" fill="#1f2937"/>
</svg>

After

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M3.2 5.2h9.6" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
<path d="M5 5.2v7.3c0 .6.4 1 1 1h4c.6 0 1-.4 1-1V5.2" fill="none" stroke="#1f2937" stroke-width="1.3"/>
<path d="M6.5 3.5h3" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
<path d="M6.8 7v4M9.2 7v4" stroke="#1f2937" stroke-width="1.2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<rect x="2.5" y="2.5" width="11" height="11" rx="1.6" fill="none" stroke="#1f2937" stroke-width="1.3"/>
<path d="M5.2 5.2l5.6 5.6M10.8 5.2 5.2 10.8" stroke="#1f2937" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M2.5 8a5.5 5.5 0 0 1 11 0" fill="none" stroke="#1f2937" stroke-width="1.3"/>
<path d="M4.5 10.5h7" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
<circle cx="8" cy="8" r="1.1" fill="#1f2937"/>
</svg>

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M6 4.5h6.5v8H6z" fill="none" stroke="#1f2937" stroke-width="1.3"/><path d="M3.5 2.5H10v1.8" fill="none" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/><path d="M3.5 2.5v8.8H5.3" fill="none" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M5.2 5.3h5.6v7.2H5.2z" fill="none" stroke="#1f2937" stroke-width="1.3"/><path d="M4 5.3h8" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/><path d="M6.3 3.7h3.4" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/><path d="M7.1 6.6v4.6M8.9 6.6v4.6" stroke="#1f2937" stroke-width="1.1" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<rect x="2" y="4" width="8" height="8" rx="1.2" fill="none" stroke="#1f2937" stroke-width="1.3"/>
<path d="M8 8h5M10.5 5.5 13 8l-2.5 2.5" fill="none" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M2.5 8a5.5 5.5 0 0 1 11 0" fill="none" stroke="#1f2937" stroke-width="1.3"/>
<path d="M4.5 10.5h7" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
<path d="M5 5l6 6" stroke="#1f2937" stroke-width="1.4" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="5.6" fill="rgb(255,211,67)" stroke="rgb(56,56,56)" stroke-width="1"/><circle cx="6" cy="7" r="0.8" fill="rgb(56,56,56)"/><circle cx="10" cy="7" r="0.8" fill="rgb(56,56,56)"/><path d="M5.5 9.4c.6 1 1.4 1.6 2.5 1.6s1.9-.6 2.5-1.6" fill="none" stroke="rgb(56,56,56)" stroke-width="1" stroke-linecap="round"/></svg>

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="7" cy="7" r="3.5" fill="none" stroke="#1f2937" stroke-width="1.4"/>
<path d="M9.8 9.8 13 13" stroke="#1f2937" stroke-width="1.5" stroke-linecap="round"/>
<path d="M7 5.4v3.2M5.4 7h3.2" stroke="#1f2937" stroke-width="1.2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="8" cy="8" r="5.5" fill="none" stroke="#1f2937" stroke-width="1.3"/>
<path d="M6.4 6.2a1.8 1.8 0 1 1 2.8 1.5c-.7.5-1.2.9-1.2 1.8" fill="none" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
<circle cx="8" cy="11.8" r=".8" fill="#1f2937"/>
</svg>

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M2.5 8h6" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
<path d="M6 5l3 3-3 3" fill="none" stroke="#1f2937" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="10" y="3" width="3.5" height="10" rx="1" fill="none" stroke="#1f2937" stroke-width="1.3"/>
</svg>

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M2.5 8h6" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
<path d="M6 5l2.8 3L6 11" fill="none" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="9" y="4" width="4.5" height="8" rx="1" fill="none" stroke="#1f2937" stroke-width="1.3"/>
<path d="M11.25 6v1.8" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<rect x="2.5" y="3" width="11" height="10" rx="1.2" fill="none" stroke="#1f2937" stroke-width="1.3"/>
<path d="M4.5 5.5h7M4.5 8h7M4.5 10.5h5" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
<circle cx="3.5" cy="5.5" r=".2" fill="#1f2937"/>
</svg>

After

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M3 2.5h6l4 4V13.5a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z" fill="none" stroke="#1f2937" stroke-width="1.3"/>
<path d="M9 2.5v4h4" fill="none" stroke="#1f2937" stroke-width="1.3"/>
<path d="M8 8v4M6 10h4" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 375 B

Some files were not shown because too many files have changed in this diff Show More