122 Commits

Author SHA1 Message Date
deepend-tildeclub
7762d689f8 Merge pull request #110 from ZoiteChat/appimage-emoji
ci: bundle GTK emoji chooser data into AppImage runtime
2026-03-13 14:52:07 -06:00
deepend-tildeclub
f2ee361b3a Merge pull request #116 from ZoiteChat/appimage-workflow-fixes
Appimage workflow fixes
2026-03-13 14:51:41 -06:00
deepend-tildeclub
a0345c831a Merge pull request #117 from ZoiteChat/pre3-incoming
release: bump 2.18.0~pre3; sync version refs + release notes
2026-03-13 14:47:17 -06:00
deepend-tildeclub
61c4a7f3eb Merge pull request #115 from ZoiteChat/enable-installer-dir-selector
installer: show install dir page on Windows setup
2026-03-13 14:46:37 -06:00
7fc7eaa847 fix: AppImage locks GIO to bundled modules; drops host GTK junk 2026-03-13 14:43:32 -06:00
7bb2331f43 release: bump 2.18.0~pre3; sync version refs + release notes 2026-03-13 14:41:42 -06:00
e373000cdb installer: show install dir page on Windows setup 2026-03-13 14:36:38 -06:00
deepend-tildeclub
a228110583 Merge pull request #114 from ZoiteChat/button-icon-consistency
ui: bundle ok/cancel icons; improve emoji fallback, incl PNG/SVG on W…
2026-03-13 13:47:20 -06:00
6ae1956b2a ui: updated icons, changed close button over as well. 2026-03-13 13:32:08 -06:00
a8a879f2a0 ui: bundle ok/cancel icons; improve emoji fallback, incl PNG/SVG on Windows 2026-03-13 12:39:55 -06:00
7e113cdec2 ci: bump upload-artifact to v6 for newer Node runtime 2026-03-13 11:05:14 -06:00
f9111c1107 fix: AppImage GTK runtime cleanup; clear host env, bundle modules/theme, set GTK_PATH 2026-03-13 10:11:24 -06:00
1fdd7f3804 missed servlist.c checker script in previous PR. 2026-03-13 09:56:48 -06:00
deepend-tildeclub
288fa3caf7 Merge pull request #112 from ZoiteChat/servlist.c_update
Updated servlist.c to remove dead servers + Added bash script for che…
2026-03-13 09:44:22 -06:00
27e9b4933d Updated servlist.c to remove dead servers + Added bash script for checking servlist.c. 2026-03-13 09:19:19 -06:00
deepend-tildeclub
c43915d609 Merge pull request #111 from ZoiteChat/perl-python-flatpak
flatpak: enable Python/Perl plugins; bundle Perl runtime module
2026-03-13 01:04:32 -06:00
989ecc5a23 flatpak: bump pycparser/cffi 2026-03-13 00:48:56 -06:00
a225af6d71 fix: add strings.h for Perl strcasecmp funcs 2026-03-12 22:33:28 -06:00
d2407c39c7 flatpak: fix Perl source checksum for 5.40.1 build 2026-03-12 20:38:54 -06:00
4754cf3927 flatpak: enable Python/Perl plugins; bundle Perl runtime module 2026-03-12 20:28:24 -06:00
deepend-tildeclub
b23c1a73ca Merge pull request #109 from ZoiteChat/fix-tray-icon-restore-hide
fix: keep tray hide/restore label synced to real window state
2026-03-12 19:40:40 -06:00
4cebe2ac8b fix: expose shared tray label updater on Windows; keep non-win tray bits guarded 2026-03-12 19:34:17 -06:00
44431d2c10 fix: unnest tray cb guards so Windows callbacks actually get defined 2026-03-12 19:13:26 -06:00
14a1ac0dfb fix: keep tray hide/restore label synced to real window state 2026-03-12 18:51:07 -06:00
deepend-tildeclub
166542f1e3 Merge pull request #108 from ZoiteChat/fix-flatpak-titlebar
Fix flatpak titlebar
2026-03-12 18:45:48 -06:00
05f4bf382d flatpak: enable GTK_CSD=1 for GTK titlebars on KDE 2026-03-12 18:39:22 -06:00
52af960175 fix: refresh AppIndicator tray label on menu map/open 2026-03-12 18:31:20 -06:00
deepend-tildeclub
a2e2bdf803 Merge pull request #106 from ZoiteChat/remove-icons
ui: drop menubar icons
2026-03-12 18:15:12 -06:00
deepend-tildeclub
3baa5d92f4 Merge pull request #105 from ZoiteChat/plugins-retention
fix: persist manual addons by copying em into user addon dir
2026-03-12 16:54:27 -06:00
99f97b82a6 ui: drop menubar icons; make Away plain item w/ toggle handler 2026-03-12 16:52:06 -06:00
deepend-tildeclub
6d1e7da475 Merge pull request #104 from ZoiteChat/bug-fixes-pre3-prep
Merge color-changer: import colors.conf, fix userlist/GTK3 tabs, embed SVG icon, clean GTK/OpenSSL warnings.
2026-03-12 15:22:04 -06:00
81ad7c5816 fix: persist manual addons by copying em into user addon dir 2026-03-12 15:16:42 -06:00
84544a5e91 feat: import colors.conf; fix userlist colors, GTK3 defaults, chanview tabs 2026-03-12 14:51:10 -06:00
7ece6faaad ui: embed zoitechat.svg; use 32px headerbar icon w/ PNG fallback 2026-03-11 21:04:00 -06:00
031018a29e ci: bump checkout/upload-artifact/setup-python actions to current versions 2026-03-11 09:21:42 -06:00
0f036383b2 build: GTK deprecation cleanup + follow-up warning fixes 2026-03-11 01:49:14 -06:00
c0e5ef79ec build: fix GTK/OpenSSL warnings + tab color OOB 2026-03-10 23:05:56 -06:00
0aa6c26490 fix: quiet GTK/GLib warn spam; fix include order; normalize imported CSS 2026-03-09 14:21:20 -06:00
deepend-tildeclub
a11687e3eb Merge pull request #8 from deepend-tildeclub/color-changer
Color changer
2026-03-09 11:37:00 -06:00
deepend-tildeclub
f676aa56e6 Merge pull request #103 from ZoiteChat/theme-features-fixes
Theme update
2026-03-09 10:50:12 -06:00
a53802cfef fix(win): tolerate tar/PS nonzero if files extracted; add path_tree_has_entries() to verify real output 2026-03-08 10:40:20 -06:00
b47c45d4cc feat: merge GTK3 Theme into Appearance (new Advanced section); fix+scale chat bg image + use FileChooserNative picker 2026-03-08 10:10:59 -06:00
f2354a7fa2 refactor: unify tree/xtext/input colors via ThemeWidgetStyleValues (canonical widget-style path) 2026-03-07 22:11:09 -07:00
ca043be197 fix: KDE Wayland alert flash—detect Plasma+Wayland, present() before urgency hint 2026-03-07 19:21:37 -07:00
50346683a1 feat: GTK3-only theming overhaul—new theme service (discover/import/inherits), layered CSS+settings.ini apply w/ safe rollback + caching; widget/xtext palette mapping + all-colors editor; lots of win32/CI libarchive plumbing + installer assets; 2026-03-04 23:28:01 -07:00
deepend-tildeclub
43374f4fae Merge pull request #4 from deepend-tildeclub/theme-module
feat: centralize theming in theme-manager (palette/tokens, CSS, dark-…
2026-03-02 20:44:49 -07:00
deepend-tildeclub
5e86f363ed Merge pull request #100 from ZoiteChat/theme-module
Theme module
2026-03-02 19:59:43 -07:00
d9be0a7b1c feat: centralize theming in theme-manager (palette/tokens, CSS, dark-mode, setup UI), add tests + win32/meson wiring 2026-03-02 19:42:48 -07:00
deepend-tildeclub
f3086fa389 Merge pull request #2 from deepend-tildeclub/consistent-icons
gtk: centralize icon lookup (new icon-resolver), move mappings out of…
2026-03-01 15:01:19 -07:00
deepend-tildeclub
0523b0639b Merge pull request #99 from ZoiteChat/consistent-icons
icon-resolver unifies gtk icons; win32/ci now ships real hicolor theme
2026-03-01 14:55:32 -07:00
1a32bff274 win32 icons: actually copy hicolor subdirs. 2026-03-01 13:16:52 -07:00
349d7f4c55 win32: install hicolor icons + CI now pulls real hicolor-icon-theme 2026-03-01 11:09:19 -07:00
734d194cb0 win32: stage hicolor icon theme into rel share/icons 2026-03-01 10:58:17 -07:00
5983befd5b icons: add system_icon_name API, make gtkutil fall back via resolver registry 2026-03-01 10:14:41 -07:00
e63e68dfde icons: dedupe resolver tables, add unified menu-action API, route gtkutil/pixmaps through one registry + fallback chain 2026-03-01 09:58:04 -07:00
1ef81951b7 win32: wire icon-resolver into VS build, kill old menu icon payload (copy + installer) 2026-02-28 23:39:08 -07:00
395ccb0706 gtk: centralize icon lookup (new icon-resolver), move mappings out of gtkutil/pixmaps, add sane fallback chain + meson hookup 2026-02-28 23:17:27 -07:00
deepend-tildeclub
b3f692f00c Update server addresses for Zoite 2026-02-28 23:02:02 -07:00
deepend-tildeclub
64c2fd4e51 Merge pull request #96 from ZoiteChat/win-dependencies-cleanup
Win dependencies cleanup
2026-02-28 10:44:44 -07:00
deepend-tildeclub
dd698ecab4 Merge pull request #95 from ZoiteChat/userlist-highlight
userlist highlight: focusable treeview
2026-02-28 10:23:23 -07:00
b93bad9859 windows x64-only purge: kill Win32 configs, simplify installer. 2026-02-28 09:53:37 -07:00
733f932b78 squash: win32 packaging detox (no comsupp/VC2013, trim payload, gate lua/python) 2026-02-28 09:36:50 -07:00
50d99e1314 userlist highlight: focusable treeview + palette CSS gets real :selected theme colors 2026-02-27 09:28:44 -07:00
deepend-tildeclub
90b7d7c5a1 Delete packaging/solus directory
Removing Solus build.  Will bring this back in future when I have more time.
2026-02-26 12:51:51 -07:00
deepend-tildeclub
7e422e10a6 Delete .github/workflows/solus-eopkg-build.yml
Removing Solus Build.  Will possibly bring this back when I have more time.
2026-02-26 12:51:11 -07:00
deepend-tildeclub
2bf32fc770 Merge pull request #90 from ZoiteChat/code-cleanup
Code cleanup
2026-02-25 18:16:54 -07:00
3e095c3c33 Removed two redundant inline comments in the file dialog response/done handlers, leaving the behavior unchanged and the control flow cleaner.
Removed an old commented-out helper function block (gtkutil_treeview_get_selected_iter) that was dead/commented code.
2026-02-25 18:07:26 -07:00
3445d946bc Removed a redundant inline comment in icon loading/scaling logic, leaving behavior unchanged.
Removed a redundant inline comment in the Windows sysinfo volume-name guard path, with no functional impact.
Removed a redundant inline comment in WinRT toast setup while keeping the same notification/audio attribute behavior.
2026-02-25 18:05:21 -07:00
7578928199 Cleaned up redundant/outdated inline comments in the text frontend argument/config and GUI control paths while leaving behavior unchanged (comment-only cleanup). 2026-02-25 16:22:46 -07:00
deepend-tildeclub
428127ef40 Merge pull request #91 from ZoiteChat/fix-application-focus
Added a Windows-only helper (mg_win32_allow_autohide_taskbar) that ge…
2026-02-25 16:20:47 -07:00
e3f932aa6b Updated the Win32 window-state handling to include shellapi.h and query taskbar auto-hide/taskbar edge state via SHAppBarMessage, so maximized windows can leave a 1px reveal edge for the auto-hidden taskbar.
Added monitor-aware work-area adjustment when maximized (MonitorFromWindow + GetMonitorInfo) and shrink by 1px on the detected taskbar edge (including bottom edge), then apply that rectangle with SetWindowPos. This addresses the “mouse at bottom edge should unhide taskbar” behavior.
Kept the existing HWND_NOTOPMOST safeguard in place after the adjustment, preserving prior not-topmost behavior.
2026-02-25 14:48:18 -07:00
7cfa3b3513 Added a Windows-only helper (mg_win32_allow_autohide_taskbar) that gets the native HWND and calls SetWindowPos(..., HWND_NOTOPMOST, ...) for non-fullscreen window-state transitions, so a maximized ZoiteChat window no longer blocks the taskbar auto-hide reveal edge.
Hooked that helper into mg_windowstate_cb so it runs whenever the main window state changes (while preserving existing maximize/fullscreen preference handling).
2026-02-25 14:18:23 -07:00
81c691491c Removed three redundant inline comments in joind_ok_cb that duplicated obvious control flow, leaving behavior unchanged and improving readability. 2026-02-25 13:55:44 -07:00
c361602b1a Removed four unneeded section comments in src/common/notify.h (WATCH/MONITOR/general/old ISON labels), leaving only the function declarations for a cleaner header interface. 2026-02-25 13:51:22 -07:00
99b969067e Removed one stale, commented-out debug/error line in the PCI device-name lookup path (pci_find_fullname), leaving behavior unchanged and making the function cleaner. 2026-02-25 13:29:20 -07:00
6e8b750c68 Removed an obsolete commented-out hdiutil line from the macOS bundling script, leaving only the active packaging path (zip) to keep the script cleaner and easier to scan. 2026-02-25 13:04:05 -07:00
df37b44cc8 Cleaned up unneeded comment noise in the Solus eopkg workflow by replacing an 11-line explanatory block with a concise 2-line comment while preserving the key rationale for --ignore-file-conflicts and required Meson tooling install. 2026-02-25 13:01:21 -07:00
9548be0cec Removed redundant inline comments in the Winamp plugin by simplifying the plugin handle declaration and cleanup comments around initialization/return values, while keeping functional comments intact.
Removed the redundant return 1 inline comment in the Exec plugin init function.
2026-02-25 12:57:42 -07:00
deepend-tildeclub
588e27b456 Remove Debian Build badge from README
Removed Debian Build badge from README.
2026-02-25 10:32:21 -07:00
deepend-tildeclub
7032d0c6b7 Update contact email in appdata XML file 2026-02-25 10:23:59 -07:00
deepend-tildeclub
72e9a99315 Update developer information and homepage URL 2026-02-25 10:17:14 -07:00
3cff6742f5 Removed unneeded inline comments around the Win32 error-formatting fallback in errorstring() and simplified matching block-closing lines, without changing behavior. 2026-02-25 02:37:08 -07:00
6a02f578b6 Removed obsolete commented-out lines from fe_cleanup() so the function no longer contains dead commented code.
Removed an unnecessary explanatory comment above the unconditional early return in log_handler(), leaving only the active behavior.

Removed an unneeded section marker comment before fe_idle() to keep surrounding code cleaner.
2026-02-25 02:34:50 -07:00
e62769b361 Cleaned up unneeded comments in DCC receive/connect code by removing:
a stale commented-out ACK block in the DCC receive error path,

    an unnecessary speculative note before the quoted filename handling,

    and an editorial inline comment on a static variable declaration.
2026-02-25 02:30:46 -07:00
9df9776238 Removed a stale multi-line # TODO note block from the common Meson build file to clean up unneeded comments without changing build logic.
Removed an old commented-out /* FIXME ... */ prototype block from servlist.h, leaving only active declarations.
2026-02-25 02:28:10 -07:00
4beabb6bf5 Removed a stale commented-out debug function block from the fishlim plugin source to reduce dead/commented code.
Removed the corresponding commented-out RAW LINE hook entry so only active handlers remain in plugin initialization.
2026-02-25 02:24:11 -07:00
10d5bb91ab Cleaned up unneeded, commented-out debug logging lines in Perl plugin callback handlers (server_cb, command_cb, and print_cb) without changing runtime behavior. 2026-02-25 02:14:38 -07:00
7c9c615aed Removed redundant inline comments from the fishlim IRC parsing helpers where the comments only repeated obvious code behavior, while preserving all function docblocks and logic. 2026-02-25 02:12:10 -07:00
fd48c97209 Removed four redundant inline comments in src/fe-gtk/urlgrab.c to clean up readability without changing behavior (treeview enum declaration area, right-click selection block, headers visibility call, and URL list overflow trimming block). 2026-02-25 02:09:35 -07:00
e58bf2be22 Cleaned up redundant comments in dcc_listen_init by removing obvious/explanatory noise and an obsolete commented-out debug printf, while leaving logic unchanged. 2026-02-25 02:07:38 -07:00
dc6453e230 Removed redundant inline comments in lastact_update and lastact_getfirst where the code was already self-explanatory, without changing behavior.
Simplified away_check by removing comment clutter and keeping only the logic flow, including the WHO batching behavior.
Removed unneeded commentary around lag-check helpers and timer reinitialization to keep the core timer code cleaner and easier to scan.
2026-02-25 02:04:31 -07:00
b3a0288fd9 Cleaned up stale inline comments in the tab scrolling handlers by removing outdated explanatory text while keeping behavior unchanged (tab_left_is_moving / tab_right_is_moving reset paths).
Removed an old commented-out gtk_container_set_border_width(...) line that was dead/commented code in cv_tabs_init.
Simplified the tab-switch condition by removing a legacy commented expression from if (is_switching).
2026-02-25 02:01:11 -07:00
9c86f18982 Cleaned up unneeded inline comments in plugins/python/python.py while keeping runtime behavior unchanged (comment-only cleanup around version declaration, compile helpers, wordlist/timer handling, and autoload path handling). 2026-02-25 01:58:19 -07:00
1bf0140652 Cleaned up redundant inline comments in the SCRAM implementation so the file is less noisy while preserving behavior exactly as-is (no logic changes). 2026-02-25 01:54:34 -07:00
bb72f8afab Removed redundant inline comments from the common header includes/platform guards in src/common/zoitechat.h (e.g., comments like “need time_t”, “for win32”, “for unix”), while preserving meaningful explanatory comments. 2026-02-25 01:50:00 -07:00
bb11c4676b Cleaned up src/fe-gtk/meson.build by removing an outdated commented-out WinRT build block in the Windows section, leaving only active build logic.
Removed an inline TODO comment from the gnome.compile_resources call to keep the Meson configuration concise and focused on current settings.
2026-02-25 01:47:32 -07:00
32fe3e54f1 Removed redundant section-divider comments in the Windows spellcheck provider to reduce clutter without changing behavior.
Removed non-essential inline comments that restated obvious return values and assignment intent (return -1/1/0, add_to_exclude alias), keeping logic identical.
2026-02-25 01:45:20 -07:00
9d2187ca4d Cleaned up unneeded inline comments in src/fe-text/fe-text.c where control-character switch cases were already self-explanatory, while keeping behavior unchanged.
Removed a redundant comment from the done global flag declaration for a cleaner declaration section.
2026-02-25 01:43:01 -07:00
0e94432c24 Removed four redundant comments in plugins/sysinfo/sysinfo.c while keeping behavior unchanged (the command parsing, channel checks, and menu add/remove calls are intact). 2026-02-25 01:40:34 -07:00
c4890d157a Cleaned up redundant inline comments in the exec plugin’s command execution path (pipe creation, buffer termination, per-line announce handling, sleep loop, and trailing newline output) without changing behavior. 2026-02-25 01:38:06 -07:00
ef2befa698 Cleaned up redundant comments in src/fe-gtk/fkeys.c by removing section-divider noise and a stale XXX line near key-action helpers, while keeping useful function-level documentation.
Removed repetitive inline comments from return 2; statements in tab-move/history key actions, since behavior is already clear from the surrounding code.
Removed an unnecessary separator comment before replace_handle() for a cleaner transition between functions.
2026-02-25 01:35:30 -07:00
5f9ce549f8 Removed redundant inline comments in the timer plugin that did not add useful context (plugin handle declaration and return value comment), keeping behavior unchanged.
Removed an obsolete visual alignment guide comment above the timer list header print call to clean up the function body.
2026-02-25 01:32:27 -07:00
cb435f0d15 Cleaned up unneeded comments in default config initialization by removing:
a stale commented-out assignment line,

    an outdated inline TODO/FIXME note on hex_irc_who_join,

    and an inline /*FIXME*/ marker on hex_flood_msg_time.
2026-02-25 01:29:05 -07:00
105e259f2c Removed redundant inline /* plugin handle */ comments from the ph declarations in three plugin source files, keeping behavior unchanged and making the declarations cleaner. 2026-02-25 01:06:13 -07:00
51bf0c3fe0 Removed redundant explanatory comments in chanopt_command so the control flow reads cleanly without inline narration, while keeping behavior unchanged.
Simplified the chanopt_in_memory struct and helper routines by removing comments that repeated obvious intent (allocation/default initialization/loading notes), with no logic changes.
2026-02-25 01:02:37 -07:00
e6311a5fe7 Removed two stale, commented-out lines in ignore_showlist() (an unused EMIT_SIGNAL call and its note), cleaning up unneeded comments without changing runtime behavior. 2026-02-25 00:59:53 -07:00
2c90c14d72 Removed an unneeded comment above the $(CONFIG_STAMP) target in Makefile, leaving behavior unchanged and just cleaning up the file. 2026-02-25 00:57:30 -07:00
6c9aeac36f Cleaned up unneeded inline comments in swtype by removing index/reserved annotations that didn’t add value, while keeping the data unchanged.
Removed a stale commented-out ST_HEADER line from tabs_settings so the settings table only contains active entries.
Removed a dead commented-out call from setup_apply_trans to reduce noise in the function body.
Removed redundant trailing declaration comments from proxy_user and proxy_pass since the types are already explicit.
2026-02-25 00:55:37 -07:00
48f7693eac Removed redundant comments in the notification plugin implementation to clean up the code without changing behavior (including comments around color stripping, alert gating logic, and special-event hook registration). 2026-02-25 00:53:10 -07:00
71d3ba576f Removed an outdated TODO comment in plugins/python/python.py above the module-level state variables, keeping behavior unchanged while reducing noise.
Removed two stale TODO comments in plugins/python/_zoitechat.py above command() and hook_command(), with no functional changes to those APIs.
2026-02-25 00:49:54 -07:00
067670bd01 Removed three redundant inline comments in the server helper code to clean up readability without changing any behavior:
Deleted comment above the serv->network check in server_get_network.
 Deleted comment above the server_session->channel check in server_get_network.
 Deleted comment above the name != serv->servername guard in server_set_name.
2026-02-25 00:46:18 -07:00
610d6fa1c0 Removed stale, commented-out SSL debug code in ssl_cb_info, leaving the function behavior unchanged while cleaning dead comments.
Removed an old commented-out rsa_tmp_bits certificate logging block in the SSL certificate info path.
Removed commented-out “Verify OK” signal lines in the SSL verification switch for cleaner control-flow comments.
2026-02-25 00:43:03 -07:00
5d6fa503c9 Cleaned up redundant CI workflow comments in AppImage workflow sections where the commands are already self-explanatory, including plugin listing and environment export blocks.
Replaced a long explanatory Solus packaging comment block with a concise single-line comment that preserves the key intent for --ignore-file-conflicts and toolchain installation.
Removed unneeded inline comments in the Windows build workflow around Python root resolution and junction creation while keeping behavior unchanged.
2026-02-25 00:40:36 -07:00
375e747014 Removed four redundant section-label comments from plugins/python/generate_plugin.py to clean up non-essential commentary while keeping behavior unchanged (# zoitechat-plugin.h, # This is very specific..., # python.py, # python.c). 2026-02-25 00:38:03 -07:00
5cab7be8a9 Removed redundant inline comments in notify network filtering and server-entry lookup paths to clean up noise without changing behavior.
Simplified notify list preparation in notify_save into a single reverse-copy expression and normalized GLib call spacing for consistency.
2026-02-25 00:34:59 -07:00
4808d83b26 Cleaned up unneeded inline comments in IRC inbound handling by removing redundant // comments around session selection and SCRAM auth status branches, with no logic changes. 2026-02-25 00:32:23 -07:00
c4951a06f3 Cleaned up unneeded commented-out debug lines in maingui.c (old printf/puts and an obsolete commented call), without changing behavior or logic flow.
Committed the cleanup on the current branch with commit message: Remove stale debug comments from maingui.
2026-02-25 00:29:52 -07:00
bd418160e1 Removed four redundant inline comments in print_sha256_result so the function is cleaner without changing behavior or control flow. 2026-02-25 00:26:56 -07:00
90a3d6d839 Removed redundant comments in url_save_node() and url_add() so the function bodies are cleaner without changing logic.
Removed an outdated performance note comment before the cached match state variables and a redundant comment in match_nick(); behavior remains unchanged.
2026-02-25 00:23:42 -07:00
deepend-tildeclub
e2511e8be1 Delete .github/workflows/debian-build.yml 2026-02-24 22:41:00 -07:00
deepend-tildeclub
33e1403b98 Delete debian directory 2026-02-24 22:40:49 -07:00
deepend-tildeclub
596a134ef3 Add Manjaro Package Build badge to README 2026-02-24 22:11:51 -07:00
310 changed files with 14290 additions and 5034 deletions

View File

@@ -17,7 +17,7 @@ jobs:
artifact-metadata: write artifact-metadata: write
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
with: with:
submodules: true submodules: true
@@ -29,12 +29,14 @@ jobs:
build-essential pkg-config meson ninja-build cmake \ build-essential pkg-config meson ninja-build cmake \
gettext \ gettext \
libcanberra-dev libdbus-glib-1-dev libglib2.0-dev \ libcanberra-dev libdbus-glib-1-dev libglib2.0-dev \
libarchive-dev \
libgtk-3-dev \ libgtk-3-dev \
libwayland-client0 libwayland-cursor0 libwayland-egl1 \ libwayland-client0 libwayland-cursor0 libwayland-egl1 \
libxkbcommon0 \ libxkbcommon0 \
libgtk-3-bin libglib2.0-bin shared-mime-info gsettings-desktop-schemas \ libgtk-3-bin libglib2.0-bin shared-mime-info gsettings-desktop-schemas \
libluajit-5.1-dev libpci-dev libperl-dev libssl-dev libayatana-appindicator3-dev \ libluajit-5.1-dev libpci-dev libperl-dev libssl-dev libayatana-appindicator3-dev \
perl python3 python3-minimal python3-dev python3-cffi mono-devel desktop-file-utils \ perl python3 python3-minimal python3-dev python3-cffi mono-devel desktop-file-utils \
fonts-noto-color-emoji breeze-gtk-theme \
patchelf file curl patchelf file curl
- name: Configure - name: Configure
@@ -103,6 +105,26 @@ jobs:
cp -a /usr/lib/x86_64-linux-gnu/libpython3*.so* AppDir/usr/lib/x86_64-linux-gnu/ cp -a /usr/lib/x86_64-linux-gnu/libpython3*.so* AppDir/usr/lib/x86_64-linux-gnu/
fi fi
if [ -d "/usr/share/gtk-3.0/emoji" ]; then
install -d AppDir/usr/share/gtk-3.0
cp -a /usr/share/gtk-3.0/emoji AppDir/usr/share/gtk-3.0/
fi
if [ -f "/usr/share/fonts/truetype/noto/NotoColorEmoji.ttf" ]; then
install -d AppDir/usr/share/fonts/truetype/noto
cp -a /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf AppDir/usr/share/fonts/truetype/noto/
fi
if [ -d "/usr/lib/x86_64-linux-gnu/gtk-3.0/modules" ]; then
install -d AppDir/usr/lib/x86_64-linux-gnu/gtk-3.0
cp -a /usr/lib/x86_64-linux-gnu/gtk-3.0/modules AppDir/usr/lib/x86_64-linux-gnu/gtk-3.0/
fi
if [ -d "/usr/lib/gtk-3.0/modules" ]; then
install -d AppDir/usr/lib/gtk-3.0
cp -a /usr/lib/gtk-3.0/modules AppDir/usr/lib/gtk-3.0/
fi
- name: Verify bundled plugins - name: Verify bundled plugins
run: | run: |
set -eux set -eux
@@ -143,6 +165,26 @@ jobs:
export PATH="${PATH:-/usr/bin:/bin}:$APPDIR/usr/bin" export PATH="${PATH:-/usr/bin:/bin}:$APPDIR/usr/bin"
export LD_LIBRARY_PATH="$APPDIR/usr/lib:$APPDIR/usr/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH:-}" export LD_LIBRARY_PATH="$APPDIR/usr/lib:$APPDIR/usr/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH:-}"
export XDG_DATA_DIRS="$APPDIR/usr/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" export XDG_DATA_DIRS="$APPDIR/usr/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
export GTK_EXE_PREFIX="$APPDIR/usr"
export GTK_DATA_PREFIX="$APPDIR/usr"
gtk_path_entries=""
if [ -d "$APPDIR/usr/lib/x86_64-linux-gnu/gtk-3.0" ]; then
gtk_path_entries="$APPDIR/usr/lib/x86_64-linux-gnu/gtk-3.0"
fi
if [ -d "$APPDIR/usr/lib/gtk-3.0" ]; then
gtk_path_entries="${gtk_path_entries:+$gtk_path_entries:}$APPDIR/usr/lib/gtk-3.0"
fi
if [ -n "$gtk_path_entries" ]; then
export GTK_PATH="$gtk_path_entries${GTK_PATH:+:$GTK_PATH}"
fi
if [ -d "$APPDIR/etc/fonts" ]; then
export FONTCONFIG_SYSROOT="$APPDIR"
export FONTCONFIG_PATH="$APPDIR/etc/fonts${FONTCONFIG_PATH:+:$FONTCONFIG_PATH}"
if [ -f "$APPDIR/etc/fonts/fonts.conf" ]; then
export FONTCONFIG_FILE="$APPDIR/etc/fonts/fonts.conf"
fi
fi
if [ -d "$APPDIR/usr/lib/x86_64-linux-gnu/zoitechat/plugins" ]; then if [ -d "$APPDIR/usr/lib/x86_64-linux-gnu/zoitechat/plugins" ]; then
export ZOITECHAT_LIBDIR="$APPDIR/usr/lib/x86_64-linux-gnu/zoitechat/plugins" export ZOITECHAT_LIBDIR="$APPDIR/usr/lib/x86_64-linux-gnu/zoitechat/plugins"
@@ -155,11 +197,20 @@ jobs:
fi fi
if [ -d "$APPDIR/usr/lib/x86_64-linux-gnu/gio/modules" ]; then if [ -d "$APPDIR/usr/lib/x86_64-linux-gnu/gio/modules" ]; then
export GIO_EXTRA_MODULES="$APPDIR/usr/lib/x86_64-linux-gnu/gio/modules${GIO_EXTRA_MODULES:+:$GIO_EXTRA_MODULES}" gio_module_dir="$APPDIR/usr/lib/x86_64-linux-gnu/gio/modules"
elif [ -d "$APPDIR/usr/lib/gio/modules" ]; then elif [ -d "$APPDIR/usr/lib/gio/modules" ]; then
export GIO_EXTRA_MODULES="$APPDIR/usr/lib/gio/modules${GIO_EXTRA_MODULES:+:$GIO_EXTRA_MODULES}" gio_module_dir="$APPDIR/usr/lib/gio/modules"
else
gio_module_dir=""
fi fi
if [ -n "$gio_module_dir" ]; then
export GIO_MODULE_DIR="$gio_module_dir"
export GIO_EXTRA_MODULES="$gio_module_dir"
fi
unset GTK_MODULES
export PYTHONHOME="$APPDIR/usr" export PYTHONHOME="$APPDIR/usr"
python_stdlib_dir="$(find "$APPDIR/usr/lib" -maxdepth 1 -type d -name 'python3.*' | head -n 1 || true)" python_stdlib_dir="$(find "$APPDIR/usr/lib" -maxdepth 1 -type d -name 'python3.*' | head -n 1 || true)"
pythonpath_entries="" pythonpath_entries=""
@@ -191,6 +242,16 @@ jobs:
fi fi
fi fi
for hook_dir in "$APPDIR/apprun-hooks" "$APPDIR/usr/apprun-hooks"; do
if [ -d "$hook_dir" ]; then
for hook in "$hook_dir"/*.sh; do
if [ -f "$hook" ]; then
. "$hook"
fi
done
fi
done
exec "$APPDIR/usr/bin/zoitechat" "$@" exec "$APPDIR/usr/bin/zoitechat" "$@"
EOF EOF
chmod +x AppRun chmod +x AppRun
@@ -216,7 +277,7 @@ jobs:
subject-path: Zoitechat-*-x86_64.AppImage subject-path: Zoitechat-*-x86_64.AppImage
- name: Upload AppImage artifact - name: Upload AppImage artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v6
with: with:
name: zoitechat-appimage name: zoitechat-appimage
path: Zoitechat-*-x86_64.AppImage path: Zoitechat-*-x86_64.AppImage

View File

@@ -1,48 +0,0 @@
name: Debian Build
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
debian_build:
runs-on: ubuntu-24.04
container:
image: debian:bookworm
steps:
- 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 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: Build Debian packages
run: |
set -eux
dpkg-buildpackage -us -uc -b
- name: Collect Debian artifacts
run: |
set -eux
mkdir -p artifacts
cp -v ../*.deb ../*.changes ../*.buildinfo artifacts/
- name: Upload Debian artifacts
uses: actions/upload-artifact@v4
with:
name: zoitechat-debian-packages
path: artifacts/*

View File

@@ -21,7 +21,7 @@ jobs:
options: --privileged options: --privileged
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
with: with:
submodules: true submodules: true
@@ -36,7 +36,7 @@ jobs:
- name: Upload Flatpak Bundle - name: Upload Flatpak Bundle
id: upload_flatpak id: upload_flatpak
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v6
with: with:
name: zoitechat.flatpak name: zoitechat.flatpak
path: zoitechat.flatpak path: zoitechat.flatpak

View File

@@ -44,7 +44,7 @@ jobs:
pciutils pciutils
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
fetch-depth: 0 fetch-depth: 0
submodules: true submodules: true
@@ -74,7 +74,7 @@ jobs:
cp -v "$GITHUB_WORKSPACE"/packaging/manjaro/.SRCINFO artifacts/ cp -v "$GITHUB_WORKSPACE"/packaging/manjaro/.SRCINFO artifacts/
- name: Upload package artifacts - name: Upload package artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v6
with: with:
name: zoitechat-manjaro-package name: zoitechat-manjaro-package
path: artifacts/* path: artifacts/*

View File

@@ -1,88 +0,0 @@
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: "docker.io/silkeh/solus:latest"
push:
branches:
- main
- master
permissions:
contents: read
packages: read
jobs:
build-eopkg:
runs-on: ubuntu-latest
env:
SOLUS_IMAGE: ${{ inputs.solus_image || 'docker.io/silkeh/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
if ! docker pull "$SOLUS_IMAGE"; then
echo "Failed to pull SOLUS_IMAGE=$SOLUS_IMAGE" >&2
echo "Set workflow input 'solus_image' to a valid image that provides eopkg/ypkg." >&2
exit 1
fi
docker run --rm \
-v "$PWD":/workspace \
-w /workspace \
-e PACKAGE_YML="$PACKAGE_YML" \
"$SOLUS_IMAGE" \
sh -lc '
set -euo pipefail
eopkg update-repo -y
# Do not remove openssl-11 here: it can trigger a very large
# dependency cascade (including python3/eopkg itself), which
# breaks the build environment before package build starts.
# Some Solus base images still contain openssl-11 files that
# conflict with openssl 3.x when the package set is refreshed.
# Allowing file-conflict resolution keeps the CI image usable
# long enough to install ypkg and complete the package build.
# The base image does not guarantee Meson toolchain packages,
# while our package.yml setup phase calls meson directly.
# Install the essential build tools up front to avoid
# `/tmp/ypkg-setup*: meson: command not found` failures.
eopkg install -y --ignore-file-conflicts \
ypkg git meson ninja pkgconf gcc gettext
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

@@ -25,9 +25,9 @@ jobs:
fail-fast: false fail-fast: false
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- uses: actions/setup-python@v5 - uses: actions/setup-python@v6
with: with:
python-version: '3.14.2' python-version: '3.14.2'
architecture: ${{ matrix.arch }} architecture: ${{ matrix.arch }}
@@ -36,29 +36,79 @@ jobs:
run: | run: |
New-Item -Name "deps" -ItemType "Directory" -Force | Out-Null New-Item -Name "deps" -ItemType "Directory" -Force | Out-Null
Invoke-WebRequest https://files.jrsoftware.org/is/6/innosetup-6.7.0.exe -OutFile deps\innosetup-unicode.exe python -m pip install --upgrade pip
python -m pip install cffi
python -m pip install zstandard
$ProgressPreference = 'SilentlyContinue'
function Download-WithRetry {
param(
[string]$Url,
[string]$OutFile,
[int]$MaxAttempts = 5,
[int]$InitialDelaySeconds = 2
)
for ($attempt = 1; $attempt -le $MaxAttempts; $attempt++) {
try {
Invoke-WebRequest -Uri $Url -OutFile $OutFile -ErrorAction Stop
return
}
catch {
if ($attempt -eq $MaxAttempts) {
throw
}
Start-Sleep -Seconds ($InitialDelaySeconds * [math]::Pow(2, $attempt - 1))
}
}
}
Download-WithRetry -Url https://files.jrsoftware.org/is/6/innosetup-6.7.0.exe -OutFile deps\innosetup-unicode.exe
& deps\innosetup-unicode.exe /VERYSILENT | Out-Null & 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 Download-WithRetry -Url https://github.com/zoitechat/gvsbuild/releases/download/zoitechat-2.17.0/idpsetup-1.5.1.exe -OutFile deps\idpsetup.exe
& deps\idpsetup.exe /VERYSILENT & deps\idpsetup.exe /VERYSILENT
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 Download-WithRetry -Url 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 & 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 Download-WithRetry -Url https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-hicolor-icon-theme-0.18-1-any.pkg.tar.zst -OutFile deps\hicolor-icon-theme.pkg.tar.zst
python -c "import tarfile,zstandard,pathlib;archive=pathlib.Path(r'deps\\hicolor-icon-theme.pkg.tar.zst');target=pathlib.Path(r'C:\\gtk-build\\gtk\\x64\\release');dctx=zstandard.ZstdDecompressor();f=archive.open('rb');reader=dctx.stream_reader(f);tf=tarfile.open(fileobj=reader,mode='r|');[tf.extract(m,path=target) for m in tf if m.name.startswith('mingw64/share/icons/hicolor/')];tf.close();reader.close();f.close()"
Download-WithRetry -Url https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libarchive-3.8.1-1-any.pkg.tar.zst -OutFile deps\libarchive.pkg.tar.zst
python -c "import tarfile,zstandard,pathlib;archive=pathlib.Path(r'deps\\libarchive.pkg.tar.zst');target=pathlib.Path(r'C:\\gtk-build\\gtk\\x64\\release');dctx=zstandard.ZstdDecompressor();f=archive.open('rb');reader=dctx.stream_reader(f);tf=tarfile.open(fileobj=reader,mode='r|');[tf.extract(m,path=target) for m in tf if m.name.startswith(('mingw64/include/archive','mingw64/lib/libarchive','mingw64/bin/libarchive'))];tf.close();reader.close();f.close()"
if (Test-Path C:\gtk-build\gtk\x64\release\mingw64\share\icons\hicolor) {
New-Item -Path C:\gtk-build\gtk\x64\release\share\icons -ItemType Directory -Force | Out-Null
Copy-Item -Path C:\gtk-build\gtk\x64\release\mingw64\share\icons\hicolor -Destination C:\gtk-build\gtk\x64\release\share\icons\hicolor -Recurse -Force
}
if (Test-Path C:\gtk-build\gtk\x64\release\mingw64\include) {
New-Item -Path C:\gtk-build\gtk\x64\release\include -ItemType Directory -Force | Out-Null
Copy-Item -Path C:\gtk-build\gtk\x64\release\mingw64\include\archive* -Destination C:\gtk-build\gtk\x64\release\include -Recurse -Force
}
if (Test-Path C:\gtk-build\gtk\x64\release\mingw64\lib) {
New-Item -Path C:\gtk-build\gtk\x64\release\lib -ItemType Directory -Force | Out-Null
Copy-Item -Path C:\gtk-build\gtk\x64\release\mingw64\lib\libarchive* -Destination C:\gtk-build\gtk\x64\release\lib -Force
}
if (Test-Path C:\gtk-build\gtk\x64\release\mingw64\bin) {
New-Item -Path C:\gtk-build\gtk\x64\release\bin -ItemType Directory -Force | Out-Null
Copy-Item -Path C:\gtk-build\gtk\x64\release\mingw64\bin\libarchive*.dll -Destination C:\gtk-build\gtk\x64\release\bin -Force
}
if (Test-Path C:\gtk-build\gtk\x64\release\mingw64) {
Remove-Item -Path C:\gtk-build\gtk\x64\release\mingw64 -Recurse -Force
}
Download-WithRetry -Url 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 & 7z.exe x deps\gendef.7z -oC:\gtk-build
Invoke-WebRequest https://github.com/zoitechat/gvsbuild/releases/download/zoitechat-2.17.0/WinSparkle-20151011.7z -OutFile deps\WinSparkle.7z Download-WithRetry -Url https://github.com/zoitechat/gvsbuild/releases/download/zoitechat-2.17.0/WinSparkle-20151011.7z -OutFile deps\WinSparkle.7z
& 7z.exe x deps\WinSparkle.7z -oC:\gtk-build\WinSparkle & 7z.exe x deps\WinSparkle.7z -oC:\gtk-build\WinSparkle
Invoke-WebRequest https://github.com/zoitechat/gvsbuild/releases/download/zoitechat-2.17.0/perl-5.20.0-${{ matrix.arch }}.7z -OutFile deps\perl-${{ matrix.arch }}.7z Download-WithRetry -Url https://github.com/zoitechat/gvsbuild/releases/download/zoitechat-2.17.0/perl-5.20.0-${{ matrix.arch }}.7z -OutFile deps\perl-${{ matrix.arch }}.7z
& 7z.exe x deps\perl-${{ matrix.arch }}.7z -oC:\gtk-build\perl-5.20\${{ matrix.platform }} & 7z.exe x deps\perl-${{ matrix.arch }}.7z -oC:\gtk-build\perl-5.20\${{ matrix.platform }}
# Resolve python root from setup-python
$pyRoot = $env:pythonLocation $pyRoot = $env:pythonLocation
if (-not $pyRoot) { $pyRoot = & python -c "import sys; print(sys.prefix)" } if (-not $pyRoot) { $pyRoot = & python -c "import sys; print(sys.prefix)" }
# Create BOTH paths because the .vcxproj hard-codes python-3.14\...
foreach ($pyDir in @("C:\gtk-build\python-3.14.2", "C:\gtk-build\python-3.14")) { foreach ($pyDir in @("C:\gtk-build\python-3.14.2", "C:\gtk-build\python-3.14")) {
New-Item -Path $pyDir -ItemType Directory -Force | Out-Null New-Item -Path $pyDir -ItemType Directory -Force | Out-Null
$target = Join-Path $pyDir "${{ matrix.platform }}" $target = Join-Path $pyDir "${{ matrix.platform }}"
@@ -66,9 +116,6 @@ jobs:
New-Item -Path $pyDir -Name "${{ matrix.platform }}" -ItemType Junction -Value $pyRoot | Out-Null New-Item -Path $pyDir -Name "${{ matrix.platform }}" -ItemType Junction -Value $pyRoot | Out-Null
} }
python -m pip install --upgrade pip
python -m pip install cffi
- name: Build - name: Build
run: | run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
@@ -83,6 +130,8 @@ jobs:
set "LIB=%PYTHON_DIR%\libs;%LIB%" set "LIB=%PYTHON_DIR%\libs;%LIB%"
set "INCLUDE=%PYTHON_DIR%\include;%INCLUDE%" set "INCLUDE=%PYTHON_DIR%\include;%INCLUDE%"
powershell -NoProfile -ExecutionPolicy Bypass -Command "$archiveLib='C:\gtk-build\gtk\x64\release\lib\libarchive.lib'; if (-not (Test-Path $archiveLib)) { $archiveDll = Get-ChildItem 'C:\gtk-build\gtk\x64\release\bin\libarchive*.dll' | Select-Object -First 1; if ($archiveDll) { Push-Location 'C:\gtk-build\gtk\x64\release\lib'; & 'C:\gtk-build\gendef\gendef.exe' $archiveDll.FullName | Out-Null; $archiveDef = Get-ChildItem 'libarchive*.def' | Select-Object -First 1; if ($archiveDef) { & lib /def:$archiveDef.Name /machine:${{ matrix.platform }} /out:libarchive.lib | Out-Null }; Pop-Location } }"
msbuild win32\zoitechat.sln /m /verbosity:minimal /p:Configuration=Release /p:Platform=${{ matrix.platform }} msbuild win32\zoitechat.sln /m /verbosity:minimal /p:Configuration=Release /p:Platform=${{ matrix.platform }}
shell: cmd shell: cmd
@@ -94,7 +143,7 @@ jobs:
- name: Upload Installer - name: Upload Installer
id: upload_installer id: upload_installer
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v6
with: with:
name: Installer ${{ matrix.arch }} name: Installer ${{ matrix.arch }}
path: ZoiteChat-*.exe path: ZoiteChat-*.exe
@@ -108,7 +157,7 @@ jobs:
- name: Upload Build Files - name: Upload Build Files
id: upload_buildfiles id: upload_buildfiles
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v6
with: with:
name: Build Files ${{ matrix.arch }} name: Build Files ${{ matrix.arch }}
path: zoitechat-build path: zoitechat-build

View File

@@ -14,7 +14,6 @@ CONFIG_STAMP := $(BUILD_DIR)/build.ninja
all: build all: build
# Only run initial meson setup if we don't have a configured build dir yet.
$(CONFIG_STAMP): $(CONFIG_STAMP):
@mkdir -p $(BUILD_DIR) @mkdir -p $(BUILD_DIR)
@env NINJA=$(NINJA) $(MESON) setup $(BUILD_DIR) --prefix=$(PREFIX) $(MESON_SETUP_ARGS) @env NINJA=$(NINJA) $(MESON) setup $(BUILD_DIR) --prefix=$(PREFIX) $(MESON_SETUP_ARGS)

View File

@@ -1,6 +1,25 @@
ZoiteChat ChangeLog ZoiteChat ChangeLog
================= =================
2.18.0~pre3 (2026-03-13)
------------------------
- Added a major GTK3 theming overhaul with improved theme importing, inheritance, rollback safety, and caching.
- Merged theme settings into Appearance and added a new Advanced section.
- Added a full color editor and improved widget, chat text, userlist, and tab color handling.
- Added `colors.conf` import support and improved compatibility with older themes.
- Improved chat background image handling and switched to a native file picker.
- Bundled more built-in icons, including OK/Cancel, and improved emoji fallback support.
- Embedded the app SVG icon and improved headerbar icon handling.
- Fixed KDE Wayland alert flashing.
- Fixed tray hide/restore labels so they stay in sync with the real window state.
- Fixed several GTK3 styling issues, warning spam, and imported CSS cleanup problems.
- Removed menubar icons and simplified Away menu behavior.
- Improved Flatpak behavior on KDE and enabled Python/Perl plugin support.
- Manual addons now persist properly by being copied into the user addon directory.
- Updated `servlist.c` to remove dead servers and added a checker script.
2.18.0~pre2 (2026-02-25) 2.18.0~pre2 (2026-02-25)
------------------------ ------------------------

Binary file not shown.

Before

Width:  |  Height:  |  Size: 841 B

After

Width:  |  Height:  |  Size: 806 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 498 B

After

Width:  |  Height:  |  Size: 646 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<circle cx="8" cy="8" r="5.5" fill="none" stroke="#e5e7eb" stroke-width="1.3"/> <defs>
<path d="M8 7v4" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<circle cx="8" cy="4.8" r=".9" fill="#e5e7eb"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="8" r="5.5" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M8 7v4" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="4.8" r=".9" fill="#ffffff" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 316 B

After

Width:  |  Height:  |  Size: 959 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 B

After

Width:  |  Height:  |  Size: 708 B

View File

@@ -1,3 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#22a05a" stroke="#157347" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="8" r="4.8" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M8 5.8v4.4M5.8 8h4.4" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 281 B

After

Width:  |  Height:  |  Size: 885 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 B

View File

@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#ff6b81" stroke="#d9485f" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="rgba(255,255,255,0.25)" stroke-width="0.9" stroke-linecap="round"/>
</g>
<path d="M5.0 5.0l6.0 6.0M11.0 5.0l-6.0 6.0" stroke="#ffffff" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 700 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 B

After

Width:  |  Height:  |  Size: 616 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<rect x="2.5" y="3" width="11" height="10" rx="1.2" fill="none" stroke="#e5e7eb" stroke-width="1.3"/> <defs>
<path d="M4.5 5.5h7M4.5 8h7M4.5 10.5h5" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<circle cx="3.5" cy="5.5" r=".2" fill="#e5e7eb"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#6366f1" stroke="#4338ca" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<rect xmlns="http://www.w3.org/2000/svg" x="2.5" y="3" width="11" height="10" rx="1.2" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M4.5 5.5h7M4.5 8h7M4.5 10.5h5" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<circle xmlns="http://www.w3.org/2000/svg" cx="3.5" cy="5.5" r=".2" fill="#ffffff" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 1006 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 B

After

Width:  |  Height:  |  Size: 685 B

View File

@@ -1,6 +1,21 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M3.2 5.2h9.6" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/> <defs>
<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"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<path d="M6.5 3.5h3" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
<path d="M6.8 7v4M9.2 7v4" stroke="#e5e7eb" stroke-width="1.2" stroke-linecap="round"/> </filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#6b7280" stroke="#4b5563" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M3.2 5.2h9.6" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M5 5.2v7.3c0 .6.4 1 1 1h4c.6 0 1-.4 1-1V5.2" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M6.5 3.5h3" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M6.8 7v4M9.2 7v4" stroke="#ffffff" stroke-width="1.2" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 468 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 445 B

After

Width:  |  Height:  |  Size: 669 B

View File

@@ -1,4 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<rect x="2.5" y="2.5" width="11" height="11" rx="1.6" fill="none" stroke="#e5e7eb" stroke-width="1.3"/> <defs>
<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"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#d9485f" stroke="#b02a37" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<rect xmlns="http://www.w3.org/2000/svg" x="2.5" y="2.5" width="11" height="11" rx="1.6" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M5.2 5.2l5.6 5.6M10.8 5.2 5.2 10.8" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 320 B

After

Width:  |  Height:  |  Size: 924 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 399 B

After

Width:  |  Height:  |  Size: 682 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M2.5 8a5.5 5.5 0 0 1 11 0" fill="none" stroke="#e5e7eb" stroke-width="1.3"/> <defs>
<path d="M4.5 10.5h7" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<circle cx="8" cy="8" r="1.1" fill="#e5e7eb"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#14b8a6" stroke="#0f766e" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M2.5 8a5.5 5.5 0 0 1 11 0" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M4.5 10.5h7" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="8" r="1.1" fill="#ffffff" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 969 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 B

After

Width:  |  Height:  |  Size: 594 B

View File

@@ -1,3 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M6 4.5h6.5v8H6z" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M3.5 2.5H10v1.8" fill="none" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M3.5 2.5v8.8H5.3" fill="none" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 383 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 B

After

Width:  |  Height:  |  Size: 626 B

View File

@@ -1,3 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#d9485f" stroke="#b02a37" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M5.2 5.3h5.6v7.2H5.2z" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M4 5.3h8" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M6.3 3.7h3.4" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M7.1 6.6v4.6M8.9 6.6v4.6" stroke="#ffffff" stroke-width="1.1" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 449 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 B

After

Width:  |  Height:  |  Size: 661 B

View File

@@ -1,4 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<rect x="2" y="4" width="8" height="8" rx="1.2" fill="none" stroke="#e5e7eb" stroke-width="1.3"/> <defs>
<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"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#6b7280" stroke="#4b5563" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<rect xmlns="http://www.w3.org/2000/svg" x="2" y="4" width="8" height="8" rx="1.2" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M8 8h5M10.5 5.5 13 8l-2.5 2.5" fill="none" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 345 B

After

Width:  |  Height:  |  Size: 949 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 B

After

Width:  |  Height:  |  Size: 720 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M2.5 8a5.5 5.5 0 0 1 11 0" fill="none" stroke="#e5e7eb" stroke-width="1.3"/> <defs>
<path d="M4.5 10.5h7" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<path d="M5 5l6 6" stroke="#e5e7eb" stroke-width="1.4" stroke-linecap="round"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#d9485f" stroke="#b02a37" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M2.5 8a5.5 5.5 0 0 1 11 0" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M4.5 10.5h7" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M5 5l6 6" stroke="#ffffff" stroke-width="1.4" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 359 B

After

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 B

After

Width:  |  Height:  |  Size: 625 B

View File

@@ -1 +1,17 @@
<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> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#f4b63b" stroke="#c98d0f" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="8" r="5.6" fill="#ffffff" stroke="#ffffff" stroke-width="1" />
<circle xmlns="http://www.w3.org/2000/svg" cx="6" cy="7" r="0.8" fill="#ffffff" />
<circle xmlns="http://www.w3.org/2000/svg" cx="10" cy="7" r="0.8" fill="#ffffff" />
<path xmlns="http://www.w3.org/2000/svg" d="M5.5 9.4c.6 1 1.4 1.6 2.5 1.6s1.9-.6 2.5-1.6" fill="none" stroke="#ffffff" stroke-width="1" stroke-linecap="round" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 431 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 B

After

Width:  |  Height:  |  Size: 664 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<circle cx="7" cy="7" r="3.5" fill="none" stroke="#e5e7eb" stroke-width="1.4"/> <defs>
<path d="M9.8 9.8 13 13" stroke="#e5e7eb" stroke-width="1.5" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<path d="M7 5.4v3.2M5.4 7h3.2" stroke="#e5e7eb" stroke-width="1.2" stroke-linecap="round"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="7" cy="7" r="3.5" fill="none" stroke="#ffffff" stroke-width="1.4" />
<path xmlns="http://www.w3.org/2000/svg" d="M9.8 9.8 13 13" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M7 5.4v3.2M5.4 7h3.2" stroke="#ffffff" stroke-width="1.2" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 1011 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 579 B

After

Width:  |  Height:  |  Size: 678 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<circle cx="8" cy="8" r="5.5" fill="none" stroke="#e5e7eb" stroke-width="1.3"/> <defs>
<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"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<circle cx="8" cy="11.8" r=".8" fill="#e5e7eb"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="8" r="5.5" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" 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="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="11.8" r=".8" fill="#ffffff" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 373 B

After

Width:  |  Height:  |  Size: 1016 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 B

After

Width:  |  Height:  |  Size: 664 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M2.5 8h6" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/> <defs>
<path d="M6 5l3 3-3 3" fill="none" stroke="#e5e7eb" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<rect x="10" y="3" width="3.5" height="10" rx="1" fill="none" stroke="#e5e7eb" stroke-width="1.3"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#22a05a" stroke="#157347" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M2.5 8h6" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M6 5l3 3-3 3" fill="none" stroke="#ffffff" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" />
<rect xmlns="http://www.w3.org/2000/svg" x="10" y="3" width="3.5" height="10" rx="1" fill="none" stroke="#ffffff" stroke-width="1.3" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 410 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 377 B

After

Width:  |  Height:  |  Size: 636 B

View File

@@ -1,6 +1,21 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M2.5 8h6" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/> <defs>
<path d="M6 5l2.8 3L6 11" fill="none" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<rect x="9" y="4" width="4.5" height="8" rx="1" fill="none" stroke="#e5e7eb" stroke-width="1.3"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
<path d="M11.25 6v1.8" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/> </filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#f59e0b" stroke="#c87500" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M2.5 8h6" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M6 5l2.8 3L6 11" fill="none" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" />
<rect xmlns="http://www.w3.org/2000/svg" x="9" y="4" width="4.5" height="8" rx="1" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M11.25 6v1.8" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 495 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 B

After

Width:  |  Height:  |  Size: 616 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<rect x="2.5" y="3" width="11" height="10" rx="1.2" fill="none" stroke="#e5e7eb" stroke-width="1.3"/> <defs>
<path d="M4.5 5.5h7M4.5 8h7M4.5 10.5h5" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<circle cx="3.5" cy="5.5" r=".2" fill="#e5e7eb"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#6366f1" stroke="#4338ca" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<rect xmlns="http://www.w3.org/2000/svg" x="2.5" y="3" width="11" height="10" rx="1.2" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M4.5 5.5h7M4.5 8h7M4.5 10.5h5" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<circle xmlns="http://www.w3.org/2000/svg" cx="3.5" cy="5.5" r=".2" fill="#ffffff" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 1006 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 B

After

Width:  |  Height:  |  Size: 655 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<path d="M9 2.5v4h4" fill="none" stroke="#e5e7eb" stroke-width="1.3"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<path d="M8 8v4M6 10h4" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#22a05a" stroke="#157347" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M3 2.5h6l4 4V13.5a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M9 2.5v4h4" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M8 8v4M6 10h4" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 375 B

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 B

After

Width:  |  Height:  |  Size: 601 B

View File

@@ -1,3 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M5.5 3.5 10.5 8l-5 4.5" fill="none" stroke="#ffffff" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 240 B

After

Width:  |  Height:  |  Size: 805 B

BIN
data/icons/menu/dark/ok.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 669 B

View File

@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#37d67a" stroke="#1f9d57" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="rgba(255,255,255,0.25)" stroke-width="0.9" stroke-linecap="round"/>
</g>
<path d="M4.1 8.2l2.1 2.2L11.9 4.8" stroke="#ffffff" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 691 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 405 B

After

Width:  |  Height:  |  Size: 659 B

View File

@@ -1,4 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<circle cx="8" cy="8" r="2.1" fill="none" stroke="#e5e7eb" stroke-width="1.3"/> <defs>
<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"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#8b5cf6" stroke="#6d28d9" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="8" r="2.1" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" 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="#ffffff" stroke-width="1.2" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 361 B

After

Width:  |  Height:  |  Size: 965 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 B

After

Width:  |  Height:  |  Size: 598 B

View File

@@ -1,3 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M10.5 3.5 5.5 8l5 4.5" fill="none" stroke="#ffffff" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 239 B

After

Width:  |  Height:  |  Size: 804 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 B

After

Width:  |  Height:  |  Size: 702 B

View File

@@ -1,4 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M8 2.5v5" stroke="#e5e7eb" stroke-width="1.5" stroke-linecap="round"/> <defs>
<path d="M5 4.3a5 5 0 1 0 6 0" fill="none" stroke="#e5e7eb" stroke-width="1.4" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#d9485f" stroke="#b02a37" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M8 2.5v5" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M5 4.3a5 5 0 1 0 6 0" fill="none" stroke="#ffffff" stroke-width="1.4" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 898 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 457 B

After

Width:  |  Height:  |  Size: 660 B

View File

@@ -1,3 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#06b6d4" stroke="#0e7490" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M12.8 7.4A4.8 4.8 0 1 0 8 12.8" fill="none" stroke="#ffffff" stroke-width="1.4" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M13 3.5v3.7H9.3" fill="none" stroke="#ffffff" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 346 B

After

Width:  |  Height:  |  Size: 950 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 B

After

Width:  |  Height:  |  Size: 694 B

View File

@@ -1,3 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#d9485f" stroke="#b02a37" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="8" r="4.8" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M5.8 8h4.4" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 271 B

After

Width:  |  Height:  |  Size: 875 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

After

Width:  |  Height:  |  Size: 643 B

View File

@@ -1,6 +1,21 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<rect x="5" y="3.5" width="4.5" height="2.5" fill="none" stroke="#e5e7eb" stroke-width="1.2"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<rect x="5" y="9" width="3.4" height="3" fill="none" stroke="#e5e7eb" stroke-width="1.2"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
<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"/> </filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M3 2.5h8l2 2v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z" fill="none" stroke="#ffffff" stroke-width="1.3" />
<rect xmlns="http://www.w3.org/2000/svg" x="5" y="3.5" width="4.5" height="2.5" fill="none" stroke="#ffffff" stroke-width="1.2" />
<rect xmlns="http://www.w3.org/2000/svg" x="5" y="9" width="3.4" height="3" fill="none" stroke="#ffffff" stroke-width="1.2" />
<path xmlns="http://www.w3.org/2000/svg" d="M9.8 8.9v3.6M8.1 10.7l1.7-1.8 1.8 1.8" fill="none" stroke="#ffffff" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 547 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 633 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<rect x="5" y="3.5" width="4.5" height="2.5" fill="none" stroke="#e5e7eb" stroke-width="1.2"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<rect x="5" y="9" width="6" height="3" fill="none" stroke="#e5e7eb" stroke-width="1.2"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M3 2.5h8l2 2v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z" fill="none" stroke="#ffffff" stroke-width="1.3" />
<rect xmlns="http://www.w3.org/2000/svg" x="5" y="3.5" width="4.5" height="2.5" fill="none" stroke="#ffffff" stroke-width="1.2" />
<rect xmlns="http://www.w3.org/2000/svg" x="5" y="9" width="6" height="3" fill="none" stroke="#ffffff" stroke-width="1.2" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 400 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 B

After

Width:  |  Height:  |  Size: 666 B

View File

@@ -1,4 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<circle cx="7" cy="7" r="3.5" fill="none" stroke="#e5e7eb" stroke-width="1.4"/> <defs>
<path d="M9.8 9.8 13 13" stroke="#e5e7eb" stroke-width="1.5" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="7" cy="7" r="3.5" fill="none" stroke="#ffffff" stroke-width="1.4" />
<path xmlns="http://www.w3.org/2000/svg" d="M9.8 9.8 13 13" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 276 B

After

Width:  |  Height:  |  Size: 880 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 B

After

Width:  |  Height:  |  Size: 692 B

View File

@@ -1,3 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#14b8a6" stroke="#0f766e" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M4 4.2h4M6 4.2v7.4M3.2 7.2h5.6" fill="none" stroke="#ffffff" stroke-width="1.2" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="m8.9 9.3 1.5 1.5 2.8-3" fill="none" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 957 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 B

After

Width:  |  Height:  |  Size: 623 B

View File

@@ -1 +1,14 @@
<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> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#06b6d4" stroke="#0e7490" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<g xmlns="http://www.w3.org/2000/svg" fill="none" stroke="#ffffff" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M13 5.8A5.5 5.5 0 1 0 5 13" fill="#ffffff" /><path d="M13 2.2v3h-3" fill="#ffffff" /><path d="M3 10.2A5.5 5.5 0 1 0 11 3" fill="#ffffff" /><path d="M3 13.8v-3h3" fill="#ffffff" /></g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 324 B

After

Width:  |  Height:  |  Size: 964 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 B

After

Width:  |  Height:  |  Size: 646 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<circle cx="8" cy="8" r="5.5" fill="none" stroke="#1f2937" stroke-width="1.3"/> <defs>
<path d="M8 7v4" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<circle cx="8" cy="4.8" r=".9" fill="#1f2937"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="8" r="5.5" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M8 7v4" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="4.8" r=".9" fill="#ffffff" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 316 B

After

Width:  |  Height:  |  Size: 959 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 486 B

After

Width:  |  Height:  |  Size: 708 B

View File

@@ -1,3 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#22a05a" stroke="#157347" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="8" r="4.8" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M8 5.8v4.4M5.8 8h4.4" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 281 B

After

Width:  |  Height:  |  Size: 885 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

View File

@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#d9485f" stroke="#b02a37" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="rgba(255,255,255,0.35)" stroke-width="0.9" stroke-linecap="round"/>
</g>
<path d="M5.0 5.0l6.0 6.0M11.0 5.0l-6.0 6.0" stroke="#ffffff" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 700 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 B

After

Width:  |  Height:  |  Size: 616 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<rect x="2.5" y="3" width="11" height="10" rx="1.2" fill="none" stroke="#1f2937" stroke-width="1.3"/> <defs>
<path d="M4.5 5.5h7M4.5 8h7M4.5 10.5h5" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<circle cx="3.5" cy="5.5" r=".2" fill="#1f2937"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#6366f1" stroke="#4338ca" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<rect xmlns="http://www.w3.org/2000/svg" x="2.5" y="3" width="11" height="10" rx="1.2" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M4.5 5.5h7M4.5 8h7M4.5 10.5h5" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<circle xmlns="http://www.w3.org/2000/svg" cx="3.5" cy="5.5" r=".2" fill="#ffffff" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 1006 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 364 B

After

Width:  |  Height:  |  Size: 685 B

View File

@@ -1,6 +1,21 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M3.2 5.2h9.6" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/> <defs>
<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"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<path d="M6.5 3.5h3" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
<path d="M6.8 7v4M9.2 7v4" stroke="#1f2937" stroke-width="1.2" stroke-linecap="round"/> </filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#6b7280" stroke="#4b5563" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M3.2 5.2h9.6" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M5 5.2v7.3c0 .6.4 1 1 1h4c.6 0 1-.4 1-1V5.2" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M6.5 3.5h3" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M6.8 7v4M9.2 7v4" stroke="#ffffff" stroke-width="1.2" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 468 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 458 B

After

Width:  |  Height:  |  Size: 669 B

View File

@@ -1,4 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<rect x="2.5" y="2.5" width="11" height="11" rx="1.6" fill="none" stroke="#1f2937" stroke-width="1.3"/> <defs>
<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"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#d9485f" stroke="#b02a37" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<rect xmlns="http://www.w3.org/2000/svg" x="2.5" y="2.5" width="11" height="11" rx="1.6" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M5.2 5.2l5.6 5.6M10.8 5.2 5.2 10.8" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 320 B

After

Width:  |  Height:  |  Size: 924 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 B

After

Width:  |  Height:  |  Size: 682 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M2.5 8a5.5 5.5 0 0 1 11 0" fill="none" stroke="#1f2937" stroke-width="1.3"/> <defs>
<path d="M4.5 10.5h7" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<circle cx="8" cy="8" r="1.1" fill="#1f2937"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#14b8a6" stroke="#0f766e" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M2.5 8a5.5 5.5 0 0 1 11 0" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M4.5 10.5h7" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="8" r="1.1" fill="#ffffff" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 969 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 B

After

Width:  |  Height:  |  Size: 594 B

View File

@@ -1,3 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M6 4.5h6.5v8H6z" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M3.5 2.5H10v1.8" fill="none" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M3.5 2.5v8.8H5.3" fill="none" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 383 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 B

After

Width:  |  Height:  |  Size: 626 B

View File

@@ -1,3 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<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"/> <defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#d9485f" stroke="#b02a37" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M5.2 5.3h5.6v7.2H5.2z" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M4 5.3h8" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M6.3 3.7h3.4" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M7.1 6.6v4.6M8.9 6.6v4.6" stroke="#ffffff" stroke-width="1.1" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 449 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 B

After

Width:  |  Height:  |  Size: 661 B

View File

@@ -1,4 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<rect x="2" y="4" width="8" height="8" rx="1.2" fill="none" stroke="#1f2937" stroke-width="1.3"/> <defs>
<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"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#6b7280" stroke="#4b5563" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<rect xmlns="http://www.w3.org/2000/svg" x="2" y="4" width="8" height="8" rx="1.2" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M8 8h5M10.5 5.5 13 8l-2.5 2.5" fill="none" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 345 B

After

Width:  |  Height:  |  Size: 949 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 448 B

After

Width:  |  Height:  |  Size: 720 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M2.5 8a5.5 5.5 0 0 1 11 0" fill="none" stroke="#1f2937" stroke-width="1.3"/> <defs>
<path d="M4.5 10.5h7" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<path d="M5 5l6 6" stroke="#1f2937" stroke-width="1.4" stroke-linecap="round"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#d9485f" stroke="#b02a37" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M2.5 8a5.5 5.5 0 0 1 11 0" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" d="M4.5 10.5h7" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M5 5l6 6" stroke="#ffffff" stroke-width="1.4" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 359 B

After

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 589 B

After

Width:  |  Height:  |  Size: 625 B

View File

@@ -1 +1,17 @@
<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> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<defs>
<filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#f4b63b" stroke="#c98d0f" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="8" r="5.6" fill="#ffffff" stroke="#ffffff" stroke-width="1" />
<circle xmlns="http://www.w3.org/2000/svg" cx="6" cy="7" r="0.8" fill="#ffffff" />
<circle xmlns="http://www.w3.org/2000/svg" cx="10" cy="7" r="0.8" fill="#ffffff" />
<path xmlns="http://www.w3.org/2000/svg" d="M5.5 9.4c.6 1 1.4 1.6 2.5 1.6s1.9-.6 2.5-1.6" fill="none" stroke="#ffffff" stroke-width="1" stroke-linecap="round" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 419 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 B

After

Width:  |  Height:  |  Size: 664 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<circle cx="7" cy="7" r="3.5" fill="none" stroke="#1f2937" stroke-width="1.4"/> <defs>
<path d="M9.8 9.8 13 13" stroke="#1f2937" stroke-width="1.5" stroke-linecap="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<path d="M7 5.4v3.2M5.4 7h3.2" stroke="#1f2937" stroke-width="1.2" stroke-linecap="round"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="7" cy="7" r="3.5" fill="none" stroke="#ffffff" stroke-width="1.4" />
<path xmlns="http://www.w3.org/2000/svg" d="M9.8 9.8 13 13" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M7 5.4v3.2M5.4 7h3.2" stroke="#ffffff" stroke-width="1.2" stroke-linecap="round" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 1011 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 587 B

After

Width:  |  Height:  |  Size: 678 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<circle cx="8" cy="8" r="5.5" fill="none" stroke="#1f2937" stroke-width="1.3"/> <defs>
<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"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<circle cx="8" cy="11.8" r=".8" fill="#1f2937"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#2d8cff" stroke="#1d63c6" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="8" r="5.5" fill="none" stroke="#ffffff" stroke-width="1.3" />
<path xmlns="http://www.w3.org/2000/svg" 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="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<circle xmlns="http://www.w3.org/2000/svg" cx="8" cy="11.8" r=".8" fill="#ffffff" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 373 B

After

Width:  |  Height:  |  Size: 1016 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 B

After

Width:  |  Height:  |  Size: 664 B

View File

@@ -1,5 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M2.5 8h6" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/> <defs>
<path d="M6 5l3 3-3 3" fill="none" stroke="#1f2937" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/> <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
<rect x="10" y="3" width="3.5" height="10" rx="1" fill="none" stroke="#1f2937" stroke-width="1.3"/> <feDropShadow dx="0" dy="0.5" stdDeviation="0.45" flood-color="#000000" flood-opacity="0.18"/>
</filter>
</defs>
<g filter="url(#shadow)">
<circle cx="8" cy="8" r="6.5" fill="#22a05a" stroke="#157347" stroke-width="1"/>
<path d="M3.8 4.0A5.2 5.2 0 0 1 8 2.8c1.4 0 2.7 0.45 3.8 1.2" stroke="#ffffff" stroke-opacity="0.35" stroke-width="0.9" stroke-linecap="round"/>
</g>
<g transform="translate(2.240 2.240) scale(0.720)">
<path xmlns="http://www.w3.org/2000/svg" d="M2.5 8h6" stroke="#ffffff" stroke-width="1.3" stroke-linecap="round" />
<path xmlns="http://www.w3.org/2000/svg" d="M6 5l3 3-3 3" fill="none" stroke="#ffffff" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" />
<rect xmlns="http://www.w3.org/2000/svg" x="10" y="3" width="3.5" height="10" rx="1" fill="none" stroke="#ffffff" stroke-width="1.3" />
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 410 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 388 B

After

Width:  |  Height:  |  Size: 636 B

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