CHANGELOG: cover the post-#518 wave + add flat PR index - #747
Merged
Conversation
The 3.0.0 entry only documented the initial 91 PRs through amule-project#518. 136 follow-up PRs have landed since 2026-05-05 and most of them belong to clearly identified themes (EC big-library performance, AICH / SharedFileList algorithmic fixes, the shared-folder watcher, the NSIS / .dmg / autostart packaging additions, crash diagnostics, the SVN -> GIT rename, translation gap-fills, …). Expand each existing 3.0.0 section in place with the relevant follow-up bullets, update the contributor counts (98 -> 234 total PRs; got3nks 57 -> 182, mrjimenez 12 -> 17, danim7 promoted to a named entry, cardpuncher added), and add a "Merged PRs in this release" appendix listing every PR number for traceability.
1 task
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Jun 4, 2026
…ndex Adds 55+ merged PRs to the 3.0.0 changelog since the last update (amule-project#747, 2026-05-27). Narrative additions cover: - Packaging: expanded the top list to include the macOS per-arch .app bundles and the Windows NSIS installer alongside the existing AppImage / Flatpak / .dmg / .zip entries. New bullets for amule-project#785 (alc/alcc/cas/wxcas everywhere + Windows amuleweb), amule-project#794 (.dmg amuleweb path), amule-project#789 (<OS>-<arch> artifact naming), amule-project#780 / amule-project#796 (Windows DPI + comctl32 manifest), amule-project#784 (FHS share/amule paths). - Bug Fixes & Stability: post-amule-project#744 fixes including EC notification leak (amule-project#797), big-library scaling (amule-project#736, amule-project#840 superseding amule-project#728), amulegui ghost entries (amule-project#810, amule-project#819, amule-project#841, amule-project#824, amule-project#830, amule-project#760), PartFile early hash (amule-project#762), server protocol fixes (amule-project#835, amule-project#788, amule-project#721, amule-project#787), crypto stream UB (amule-project#779), UAF prevention (amule-project#756), Kad rotation (amule-project#795, amule-project#799/amule-project#805), GTK warning silencing (amule-project#833, amule-project#826/amule-project#836), and the clang-tidy worklist (amule-project#770, amule-project#772-amule-project#774). - Translations: late-cycle wave covering French/Turkish manpages (amule-project#753/amule-project#754/amule-project#776), Galician (amule-project#763), Slovenian (amule-project#771), pt-BR (amule-project#768/amule-project#775/amule-project#812), French (amule-project#811), plus man-page tooling for date+version drift (amule-project#802). - Contributors: added ngosang for UX feedback on the late-3.0 cycle (amule-project#817/amule-project#818/amule-project#821/amule-project#828/amule-project#844) and ongoing work on the user-facing manual at amule-org.github.io. - Merged PRs flat index: extended with amule-project#746-amule-project#845 + amule-project#841.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Jun 4, 2026
Captures translatable strings introduced after the previous po refresh (post-amule-project#747 wave). Notable new entries: - "Connection failed. Please check the host, port, and password." (amule-project#841 — amulegui retry-on-connect-failure) - "Force ZLIB compression" (amule-project#840 — EC client-tag locality override) - "Follow symbolic links in shared folders" (amule-project#809) - "Connection Type:" (amule-project#824 — ED2K Info readability) - "Documentation: https://amule-org.github.io/docs " (amule-project#801 — wiki URL migration) Generated with `scripts/update-po.sh` from a working tree that has PR amule-project#841 applied locally, so the new amulegui retry-loop strings are included even though amule-project#841 itself is not in this branch — when amule-project#841 lands on master, the .po files will already reflect its strings without needing a second regeneration pass. The remaining churn is line-number realignment across the ~38 language files from a month of source-code drift.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Jun 4, 2026
…ndex Adds 55+ merged PRs to the 3.0.0 changelog since the last update (amule-project#747, 2026-05-27). Narrative additions cover: - Packaging: expanded the top list to include the macOS per-arch .app bundles and the Windows NSIS installer alongside the existing AppImage / Flatpak / .dmg / .zip entries. New bullets for amule-project#785 (alc/alcc/cas/wxcas everywhere + Windows amuleweb), amule-project#794 (.dmg amuleweb path), amule-project#789 (<OS>-<arch> artifact naming), amule-project#780 / amule-project#796 (Windows DPI + comctl32 manifest), amule-project#784 (FHS share/amule paths). - Bug Fixes & Stability: post-amule-project#744 fixes including EC notification leak (amule-project#797), big-library scaling (amule-project#736, amule-project#840 superseding amule-project#728), amulegui ghost entries (amule-project#810, amule-project#819, amule-project#841, amule-project#824, amule-project#830, amule-project#760), PartFile early hash (amule-project#762), server protocol fixes (amule-project#835, amule-project#788, amule-project#721, amule-project#787), crypto stream UB (amule-project#779), UAF prevention (amule-project#756), Kad rotation (amule-project#795, amule-project#799/amule-project#805), GTK warning silencing (amule-project#833, amule-project#826/amule-project#836), and the clang-tidy worklist (amule-project#770, amule-project#772-amule-project#774). - Translations: late-cycle wave covering French/Turkish manpages (amule-project#753/amule-project#754/amule-project#776), Galician (amule-project#763), Slovenian (amule-project#771), pt-BR (amule-project#768/amule-project#775/amule-project#812), French (amule-project#811), plus man-page tooling for date+version drift (amule-project#802). - Contributors: added ngosang for UX feedback on the late-3.0 cycle (amule-project#817/amule-project#818/amule-project#821/amule-project#828/amule-project#844) and ongoing work on the user-facing manual at amule-org.github.io. - Merged PRs flat index: extended with amule-project#746-amule-project#845 + amule-project#841.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Jun 4, 2026
Captures translatable strings introduced after the previous po refresh (post-amule-project#747 wave). Notable new entries: - "Connection failed. Please check the host, port, and password." (amule-project#841 — amulegui retry-on-connect-failure) - "Force ZLIB compression" (amule-project#840 — EC client-tag locality override) - "Follow symbolic links in shared folders" (amule-project#809) - "Connection Type:" (amule-project#824 — ED2K Info readability) - "Documentation: https://amule-org.github.io/docs " (amule-project#801 — wiki URL migration) Generated with `scripts/update-po.sh` from a working tree that has PR amule-project#841 applied locally, so the new amulegui retry-loop strings are included even though amule-project#841 itself is not in this branch — when amule-project#841 lands on master, the .po files will already reflect its strings without needing a second regeneration pass. The remaining churn is line-number realignment across the ~38 language files from a month of source-code drift.
mrjimenez
pushed a commit
that referenced
this pull request
Jun 4, 2026
Adds 55+ merged PRs to the 3.0.0 changelog since the last update (#747, 2026-05-27). Narrative additions cover: - Packaging: expanded the top list to include the macOS per-arch .app bundles and the Windows NSIS installer alongside the existing AppImage / Flatpak / .dmg / .zip entries. New bullets for #785 (alc/alcc/cas/wxcas everywhere + Windows amuleweb), #794 (.dmg amuleweb path), #789 (<OS>-<arch> artifact naming), #780 / #796 (Windows DPI + comctl32 manifest), #784 (FHS share/amule paths). - Bug Fixes & Stability: post-#744 fixes including EC notification leak (#797), big-library scaling (#736, #840 superseding #728), amulegui ghost entries (#810, #819, #841, #824, #830, #760), PartFile early hash (#762), server protocol fixes (#835, #788, #721, #787), crypto stream UB (#779), UAF prevention (#756), Kad rotation (#795, #799/#805), GTK warning silencing (#833, #826/#836), and the clang-tidy worklist (#770, #772-#774). - Translations: late-cycle wave covering French/Turkish manpages (#753/#754/#776), Galician (#763), Slovenian (#771), pt-BR (#768/#775/#812), French (#811), plus man-page tooling for date+version drift (#802). - Contributors: added ngosang for UX feedback on the late-3.0 cycle (#817/#818/#821/#828/#844) and ongoing work on the user-facing manual at amule-org.github.io. - Merged PRs flat index: extended with #746-#845 + #841.
mrjimenez
pushed a commit
that referenced
this pull request
Jun 4, 2026
Captures translatable strings introduced after the previous po refresh (post-#747 wave). Notable new entries: - "Connection failed. Please check the host, port, and password." (#841 — amulegui retry-on-connect-failure) - "Force ZLIB compression" (#840 — EC client-tag locality override) - "Follow symbolic links in shared folders" (#809) - "Connection Type:" (#824 — ED2K Info readability) - "Documentation: https://amule-org.github.io/docs " (#801 — wiki URL migration) Generated with `scripts/update-po.sh` from a working tree that has PR #841 applied locally, so the new amulegui retry-loop strings are included even though #841 itself is not in this branch — when #841 lands on master, the .po files will already reflect its strings without needing a second regeneration pass. The remaining churn is line-number realignment across the ~38 language files from a month of source-code drift.
mrjimenez
pushed a commit
to mrjimenez/amule
that referenced
this pull request
Aug 4, 2026
…rovider (amule-project#675) (amule-project#747) * feat(gui): migrate 22 of 27 clientImages() status icons to CamuleArtProvider (amule-project#675) Continues the icon-system cleanup scoped in amule-project#675. clientImages() is the last of the raw-bitmap banks, and the riskiest: it's consumed through a wxImageList built once at startup (Apply_Clients_Skin, amuleDlg.cpp) by iterating index 0..26 in ClientSkinEnum order, and four call sites then index that list with arithmetic (Client_InvalidRating_Smiley + rating - 1) rather than calling clientImages() directly. The enum order is load-bearing; this PR does not touch it, the calling loop, or the arithmetic call sites -- only what clientImages(index) returns for each index. 22 of the 27 icons are generic pictograms (smileys, a checkmark, an X, stars, an arrow, a key, ...) with no external branding, migrated to new "amule:client_<name>" SVG/PNG art. The remaining 5 -- indices 12, 15, 16, 17, 18 (eMule/aMule/lphant/Shareaza/xMule) -- are specific client-software mascots and are deliberately left as the original raw artwork: a generated pictogram is one thing, but redrawing someone else's brand mascot risks not matching the real logo, which is worse than not touching it. amule-project#675 discussion flagged this distinction explicitly. New art, per icon: - Green/Red/Yellow/Grey/White: the 5 base transfer-state smileys. - ExtendedProtocol/SecIdent/BadGuy/Encryption: badge overlays drawn per GenericClientListCtrl.cpp's own comments ("the '-'", "the 'v'", "the 'X'", "the '\xc2\xbf' except it's a key"). - CreditsGrey/CreditsYellow: the two credit-system stars. - Upload: the upload-active arrow. - Friend: the friend-list badge. - mlDonkey/eDonkeyHybrid: kept generic/abstract (a checkmark badge, a simple ghost) rather than attempting their real logos -- same reasoning as the 5 mascots, lower bar since these were already more abstract marks than full character art in the original raster. - Unknown: the unresolved-client-type question mark. - InvalidRating/PoorRating/FairRating/GoodRating/ExcellentRating: one potion-bottle SVG re-tinted per rating (red/red/orange/green/green), with Invalid and Excellent composited as two bottles side by side in a single 16x16 square canvas -- matching the original art's single-vs-double-bottle distinction for the two rating extremes. - CommentOnly: the comment-icon badge. Implementation: a static art-id lookup table indexed by ClientSkinEnum value, checked first; a null entry falls through to the corresponding raw-bitmap `if (index == N)` block for the 5 mascot indices, which are otherwise untouched. src/icons/icon_data.c regenerated via embed_icons.py to match. Testing: full build verified (macOS), both Release and Debug config. Debug build launched with a live window (Apply_Clients_Skin runs at startup, touching all 27 indices) and produced no wxFAIL_MSG assertion (amule-project#739) -- confirms every index resolves. Each new icon reviewed individually via rasterized contact sheets at both ~96px and actual 16x16 before being wired in. NOT independently verified: seeing these icons rendered in an actual populated client list (Downloads sources, Shared Files clients, Search results, Friends) requires live eD2k/Kad network data, which a from-scratch test config doesn't have. Same limitation already flagged for fileDetails/clientDetails/CategoriesEditWindow in amule-project#744. * fix(gui): recentre double-bottle rating icons, add ClientSkinEnum static_assert (amule-project#747 review) got3nks, reviewing amule-project#747: 1. client_invalidrating.svg / client_excellentrating.svg didn't fill their 2048x2048 viewport like their poor/fair/good siblings (53%x73% fill for those vs. 83%x44% for these, with the left bottle clipped at x=-47). Recentred both bottle <g> transforms to translate(-110,452)/translate(940,452) with scale raised to 0.8 (from 0.6), matching the visual weight of the single-bottle ratings next to them in the same column. Both files are otherwise identical apart from fill colour, so the one fix applies to both. 2. Nothing tied artIds[] to ClientSkinEnum, and wxFAIL_MSG (amule-project#739) compiles out in release builds -- so a future enum member could silently push a wxNullBitmap into the 16x16 image list instead of failing loudly anywhere. Added static_assert(WXSIZEOF(artIds) == CLIENT_SKIN_SIZE, ...), which catches it at compile time in every build config. Needed "amuleDlg.h" (CLIENT_SKIN_SIZE's home) added to muuli_wdr.cpp's includes -- checked first that amuleDlg.h doesn't include muuli_wdr.h back, no circular include. Verified via a full amule build (macOS) -- the static_assert compiling clean confirms artIds[] and ClientSkinEnum agree on 27 entries, and a visual check that the two rating icons now match their siblings' size and no longer clip. * fix(gui): recompute double-bottle composition, verified numerically (amule-project#747 review) My previous fix (eedcac3) just moved the problem: applying got3nks's suggested translate values verbatim together with the also-suggested scale=0.8 pushed the right bottle past the viewBox edge (measured: x range 13%-107%, i.e. clipped on the right instead of the left). The two numbers were each individually reasonable but hadn't been re-verified together -- exactly the mistake the last commit's message claimed to have checked and hadn't. Recomputed from the natural bounding box instead of iterating on coordinates by eye: two bottles at scale 0.68 with a 40-unit gap, each positioned so both are fully inside the 0-2048 viewBox with equal margins. Verified numerically (not just visually) before committing: both groups' bboxes land at x 12.9%-49.0% and 51.0%-87.1%, y 25.2%-74.8% -- fully in bounds, no clipping on either side. Worth being upfront about the height: overall fill is 74%x50%, not poor/fair/good's 53%x73%. That's not a leftover bug -- fitting two full-height copies of the same bottle side by side in a square without overlap is not geometrically possible; matching the single bottles' 73% height would require the pair to be over twice as wide as the viewBox. 50% is the tradeoff of choosing "fits, no clipping, similar per-bottle proportions" over an unreachable exact size match. Verified via a full amule build (macOS) and the bounding-box computation above, re-run against the actual committed SVG files rather than the standalone drafts, to catch exactly the kind of last-mile mismatch that slipped through last time. * fix(gui): unify bottle height across all 5 rating icons (amule-project#747 review) got3nks: rather than treat the double-bottle pair as a special case with its own (necessarily shorter) height, make all five ratings share one consistent bottle height, maximizing what the double-bottle pair allows without clipping and bringing poor/fair/good down to match -- they sit in the same column, so consistency across the set matters more than any one icon being as large as it could be alone. Recomputed from the natural bottle bounding box: scale 0.909 is the largest that fits two bottles side by side (24-unit gap) inside the 2048x2048 viewBox with no clipping. Applied that same scale to the single-bottle ratings, centred. All five now render their bottle at the same height. Verified numerically against the actual committed files: all five land at y 16.8%-83.2% (66.3% height) and are within the 0-100% x range -- identical height across poor/fair/good/invalid/excellent, zero clipping. Verified via a full amule build (macOS). * fix(gui): brighten client_green to match the rest of the set's saturation (amule-project#747 review) got3nks measured across every opaque pixel: red and yellow gained brightness/saturation moving to the new art, but green lost both, landing dimmer (53% mean brightness) than red (64%) and yellow (72%) -- inverting the original's balance, where green and red were level at 57%/55%. Green carries the most meaning of the three (actively transferring), so it being the dimmest state undersells it. Replaced Material Green 500 (#4CAF50, 57% sat / 69% val) with #22CC1A (87% sat / 80% val), inside the ~#1BD816-#2ECC1F range got3nks suggested to restore the original's emphasis. Red and yellow untouched, per the review ("read fine as they are"). Verified via a full amule build (macOS) and a visual check of the icon at 96px. * fix(gui): corner-anchor badge overlays, add null-bitmap guard (amule-project#747 review) got3nks caught a real functional regression I'd missed (a second, earlier review comment I hadn't seen when I replied to the later one about colour): 6 of these icons aren't standalone -- GenericClientListCtrl.cpp draws them as overlays on top of the base client icon at the same point.x/realY. The original raw art kept each in a corner so the base icon stayed visible underneath; my replacements were designed as standalone centered pictograms, so they covered the icon they were meant to annotate (creditsyellow at 14x13 was larger than the 12x12 base smiley it sat on). Recomputed each as a corner badge, scaled/positioned to roughly the original's measured footprint and anchor (his measurements, converted from 16x16 pixel terms to the 2048x2048 viewBox): - extendedprotocol: top-right, ~8x4 - secident: bottom-left, ~7x6 - creditsgrey/creditsyellow: top-right, ~9x9 - encryption: top-left, ~6x8 badguy is the one exception, and deliberately so: the original struck through the *entire* icon rather than badging a corner, which reads as intentional (a bad-guy client's status is fully overridden, not just annotated) -- kept that full-cover behaviour rather than shrinking it to a corner mark. Also added the null-bitmap guard he flagged: wxArtProvider::GetBitmap() returning wxNullBitmap for an unresolvable id was returning straight through the new early-return path, never reaching the wxFAIL_MSG that amule-project#739 added for exactly this failure mode. Added a wxASSERT_MSG on the early-return path so a future icon rename can't silently regress back to the "fails into a blank icon" state amule-project#725/amule-project#739 fixed. Verified via a full amule build (macOS) and a visual check of all 6 badges at both 96px and actual 16x16, confirmed each sits in its corner without covering the centre of the base icon.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The 3.0.0 CHANGELOG entry was last updated at #438c9fcc7 (2026-05-05) covering the initial 91 PRs through #518. 136 follow-up PRs have landed since then. This PR brings the 3.0.0 entry up to current master (
d7f9088ad).The structure follows the existing one — every existing section (Highlights, Performance, Networking & Discovery, Build System & Dependencies, Packaging, Internals & Refactoring, Translations, Bug Fixes & Stability, Contributors) is expanded in place with the new work. No prior wording removed; no narrative reshuffled.
What's new in the narrative
#### Big-library / big-shareset scalingsubsection covering EC payload caches (EC: cache ed2k:// link + partmet basename on file objects for big-library performance #725, EC: per-file bytes cache for the FULL GET_SHARED_FILES / GET_DLOAD_QUEUE paths #736), EC skip-unchanged (EC: skip unchanged files in INC_UPDATE for big-library performance #727), local-peer ZLIB bypass (EC: skip ZLIB compression on local peers #728), eight O(N²) → O(N log N) / O(1) algorithmic fixes acrossSharedFileList,SharedFilesCtrl,KnownFileList,wxListCtrl,ExternalConn, and amuleweb, plus the disk-I/O work, memory bounds (incl. the LibSocketAsio: fix amuleIPV4Address operator= leaking endpoint on every assign #716 amuleIPV4Address leak), and backpressure / yielding additions.boost::asiobecoming mandatory (Remove wxWidgets-sockets fallback path; make boost::asio mandatory #603), and the post-po: localize AppImage integration prompt + Italian translation #518 CMake polish.aMuleGUI.appDMG bundling (packaging.yml: ship aMuleGUI.app in macOS Universal2 .dmg #529), the NSIS installer (packaging/windows: add NSIS installer .exe alongside the portable .zip #740), and the cross-platform autostart toggle (Add cross-platform autostart-on-login toggle #744).wl_app_id, the y2038 unification (y2038: unify to uint64 GetTickCount64() to properly manage milliseconds #702), amulecmd search-filter exposure (amulecmd: expose search filters (type, extension, availability, size) #542), the first-run nodes.dat prompt (dialog: prompt for nodes.dat on first run alongside server.met #558), and a long list of smaller polish items.CFileSIGSEGV + concurrent-corruption fix, the wake-from-sleep SIGSEGV, and several smaller stability items.### Merged PRs in this releaseappendix lists all 226 PR numbers in numerical order for traceability — every PR referenced in narrative is also in the list, and every PR in the list is referenced at least once in the narrative.Verification
Bidirectional citation check on the 3.0.0 block:
#486) from the appendix that doesn't correspond to a real PR.Test plan
amule-project/amule