Skip to content

feat(icons): refresh per-platform icon assets from new 256x256 master - #15

Merged
got3nks merged 1 commit into
amule-org:masterfrom
got3nks:feat/icon-refresh
Jun 8, 2026
Merged

feat(icons): refresh per-platform icon assets from new 256x256 master#15
got3nks merged 1 commit into
amule-org:masterfrom
got3nks:feat/icon-refresh

Conversation

@got3nks

@got3nks got3nks commented Jun 8, 2026

Copy link
Copy Markdown

Summary

Refreshes every platform's icon asset from a single high-quality 256×256 master, and adds a 256×256 hicolor install rule for Linux hi-DPI desktops.

What changed

File Before After
org.amule.aMule.png (Linux hicolor 128) 128×128 (old master) 128×128, Lanczos downsample from new 256 master, metadata stripped
org.amule.aMule-256.png (Linux hicolor 256) 256×256, new master, metadata stripped (only IHDR/IDAT/IEND chunks)
amule.ico (Windows) 5 entries, 16×16 + 32×32 only 4 entries, 16 / 32 / 48 / 256, generated from the 256 master
platforms/MacOSX/amule.icns (macOS) Single 128×128 it32 entry Apple-canonical iconset shape: 16, 32, 64, 128, 256 native + Lanczos-upscaled 512, 1024 for the @2x Retina slots

Why each one matters

  • Windows: the old .ico had only 16/32 sizes, so Windows 10/11 was upscaling 32×32 for the 48 / 256 contexts (Start menu, taskbar at hi-DPI, alt-tab thumbnail). Visibly blurry. New .ico ships a native 256.
  • macOS: the old .icns had a single it32 entry. The Dock at 100% scale uses 64–128, Finder previews use 256–512, and Spotlight uses 1024. Without those entries macOS upscaled the 128. New .icns has all 10 standard sizes including the @2x Retina variants.
  • Linux hicolor 256: previously we only shipped a 128×128 icon. Hi-DPI Linux desktops (KDE Plasma + Wayland fractional scaling, GNOME 200%) prefer 256-and-up; without one they upscaled 128.

Validation

  • appstreamcli validate --strict --pedantic --no-net on org.amule.aMule.metainfo.xml: ✔ passes (1 pedantic-level warning about uppercase letter in the app-id, unchanged from before — fixing would require an app-id rename).
  • magick identify amule.ico: confirms 4 entries at 256, 48, 32, 16.
  • iconutil -c icns round-trips the iconset cleanly; file reports Mac OS X icon, 1052391 bytes, "ic12" type (modern format).
  • Transparency preserved on all assets: alpha channel min=0 max=255 on the 128 PNG.

Caveat — macOS Retina sizes upscaled

The 512 and 1024 entries in .icns are 2× / 4× Lanczos upscales from the 256 master because the project doesn't have a vector or higher-resolution source. The result is acceptable for icon-style content (high contrast, no fine texture detail), but slightly softer than a hand-crafted Retina master would be. If anyone produces an SVG or a 1024 master, regenerate from that.

Refs

Initial icon refresh prep for Flathub submission. The other readiness items — manifest tag/commit pinning — will follow in a separate PR.

Adds a higher-quality 256x256 master PNG and regenerates all derived
assets from it:

- Linux: org.amule.aMule.png (128x128) re-rendered from the 256 master
  via Lanczos downscale; new org.amule.aMule-256.png installed under
  hicolor/256x256/apps for hi-DPI displays.
- Windows: amule.ico rebuilt with modern sizes (16, 32, 48, 256). The
  previous .ico had only 16 + 32, causing blurry upscaling on Windows
  10/11 hi-DPI Start menu and taskbar.
- macOS: amule.icns regenerated via iconutil with the full Apple
  iconset shape — native 16/32/64/128/256 + Lanczos-upscaled 512/1024
  for the @2x Retina variants. Previous .icns was a single 128 it32
  entry, dated 2010-era.

Also pins the metainfo screenshot URLs to the 3.0.0 tag so the
screenshots displayed in Flathub / GNOME Software / KDE Discover
listings can't silently change when master moves on.

No source changes; the existing org.amule.aMule app-id and hicolor
icon name are preserved.
@got3nks
got3nks merged commit 192f24e into amule-org:master Jun 8, 2026
10 checks passed
got3nks added a commit that referenced this pull request Jun 8, 2026
Stages the Flathub-strict version of the aMule Flatpak manifest in `packaging/flathub/` — the file that will be submitted to flathub/flathub once domain attestation for the app-id is resolved. Differences from the internal `packaging/linux/flatpak/org.amule.aMule.yaml.in`:

- All `${...}` template variables resolved to concrete values (Flathub forbids envsubst).
- The amule source: `branch:` swapped for `tag: + commit:` (Flathub forbids mutable refs).
- The cryptopp source: existing tag augmented with a pinned commit.

Pinned at master tip post-#15 (icon refresh), #17 (metainfo / desktop polish), and #19 (ENABLE_BFD option). Carries -DENABLE_BFD=NO so the Flathub-built bundle inherits the libbfd-runtime-missing fix.

Companion file `packaging/flathub/README.md` documents the two-manifest layout, the submission flow against flathub/flathub:new-pr, and how to refresh the pin on each new aMule release tag.
@got3nks
got3nks deleted the feat/icon-refresh branch June 8, 2026 16:32
got3nks added a commit that referenced this pull request Jun 8, 2026
…#21)

Reverts the icon-design change introduced in #15 while preserving #15's structural improvements (256x256 hicolor install path, metainfo screenshot URL pinning to the 3.0.0 tag).

Context in amule-org/amule-org.github.io#156: #15 was intended as a resolution refresh but ended up swapping to a noticeably different design. The team will revisit a proper identity refresh on its own track later.

- org.amule.aMule.png (128x128): restored bit-identical to the pre-#15 version.
- org.amule.aMule-256.png (256x256): regenerated via Lanczos upscale of the restored 128.
- amule.ico: rebuilt with sizes 16/32/48/128/256 from the restored 128.
- platforms/MacOSX/amule.icns: rebuilt with iconset sizes up to 256 (drops #15's 512/1024 @2x slots since we have no native source data above 256).
got3nks added a commit that referenced this pull request Jun 14, 2026
…atforms

The macOS-only `std::_Exit(0)` block in OnExit() was added to dodge a
wxWebSessionURLSession dtor bug under wx 3.3.2. Turns out the
Linux backend (wxWebSessionCURL, wx 3.2.6) hits the same class of
shutdown crash: its dtor calls curl_multi_cleanup, libcurl invokes the
registered socket callback (wxWebSessionCURL::SocketCallback) to drop
tracked sockets, and that callback dereferences session state the
dtor's earlier steps have already torn down. wxASSERT fires,
wxFatalSignalHandler raise(SIGABRT)s.

Verified with a debug-symbol Flatpak + gdb on a user-supplied core,
fully symbolicated:

    #19 main                                amule-gui.cpp:98
    #18 wxEntry                             wx/init.cpp:500
    #17 wxEntryCleanup                      wx/init.cpp:205
    #16 wxModule::CleanUpModules            wx/module.cpp:191
    #15 wxModule::DoCleanUpModules          wx/module.cpp:200
    #14 wxRefCounterMT::DecRef
        wxWebSession::Close                 wx/webrequest.cpp:1074
    #13 wxWebSessionCURL::~wxWebSessionCURL wx/webrequest_curl.cpp:932
    #12 wxWebSessionCURL::~wxWebSessionCURL wx/webrequest_curl.cpp:929
    #11-#6 libcurl curl_multi_cleanup
    #5  wxWebSessionCURL::SocketCallback    wx/webrequest_curl.cpp:1047
    #4  raise()
    #3  wxFatalSignalHandler                wx/unix/utilsunx.cpp:1523
    #0  abort

Same justification used for the macOS guard applies on every
platform: by this point in OnExit we have saved state, joined
threads, and flushed logs -- nothing aMule-owned remains to clean up.
_Exit bypasses atexit and static destructors uniformly, so the buggy
wx dtor never runs and the process terminates cleanly.

Remove this once the upstream wx fix lands in a release we depend on.

Reported in #18.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant