Release v9.3.0 - #22
Merged
Merged
Conversation
Backport the world import fix (Prism #5282) and accept root-level level.dat when identifying world saves, so dropping a world ZIP onto the launcher installs it into an instance instead of falling back to the import-modpack dialog. Nested world ZIPs no longer fail silently.
ToastNotification's API split into prepareToast() (contents) and showToast(pos) (animated reveal); maybeShowStarToast() still called the old 5-argument showToast(), breaking every build. Strip trailing NUL bytes from MainWindow.cpp and drop unused 'this' lambda captures.
Merge pull request #16 from fuis18/main
Fixing drag & drop and dont delete v9.2.7, only add v9.2.8 to testing branch
Linux binary tarball now bundles libcmark.so.0.30.2, libtomlplusplus.so.3 and
libqrencode.so.4 into bin/ (RUNPATH=$ORIGIN/), so the launcher no longer
fails on distros whose cmark has a different SONAME (e.g. openSUSE's 0.31.2).
The Arch source tarball is written to /tmp and moved into packaging/arch/ so
tar no longer reads its own output ("file changed as we read it") and dies
under set -e.
Windows builds compile cmark 0.31.2 from source: MSYS2 dropped
mingw-w64-x86_64-cmark for the MINGW64 environment, so the setup step failed
with 'target not found'.
Fixing binaries on Arch Linux and Windows
Updated version number from v9.2.9 to v9.2.8 and adjusted changelog entries accordingly.
Added Linux binary tarball and completed translations for Finnish, Hungarian, Japanese, and Laotian.
…l dirs
Instances vanishing after an update: the data root moves between the install
folder and the user data folder, so the launcher looked at an empty directory
while the instances sat untouched in the old one.
- Launcher.in: portable.txt is now checked via ${LAUNCHER_DIR}, so portable
mode no longer depends on the caller's working directory
- Application: handleFlippedDataRoot() offers instances stranded in the other
data root (AppData <-> install dir) and migrates them, asking at most once
- NSIS upgrade: resolves the real install path via InstallLocation, and never
recursively wipes $INSTDIR when it holds portable.txt, UserData or instances
- installer.nsi (unused duplicate of pollymc_installer.nsi) removed
- DisplayVersion now uses ${VERSION} instead of a hardcoded 9.0.0
Packaging:
- PKGBUILD: cmark moved to depends, fixes libcmark.so.0.31.2 load failure
- CPack DEB Recommends uses commas, the semicolon form made the published
.deb and apt index uninstallable (dpkg: invalid package name)
- bot-server and bots.json fall back to per-user locations when the install
dir is read-only, fixing npm install EACCES and silently dropped bot lists
- README: how to install a downloaded .pkg.tar.zst (pacman -U)
Housekeeping: drop stale "Readme [skip-all]" and the unused releases.json.
- InstanceList: group lookup hits the index directly instead of resolving the instance first, which was a linear scan per query and made view sorting/layout quadratic - InstanceDelegate: cache the shaped text layout per text and width instead of re-running QTextLayout for every visible row on each repaint and sizeHint - Application: batch the startup setting migrations into one file write with SettingsObject::Lock, and defer the D-Bus/shared-library capability probes past first paint (MSA/Flame flags stay synchronous because the first-run wizard reads them from the constructor) - MainWindow: fill in the status bar description after the UI has painted so selecting an instance no longer parses component JSON first, and reuse one theme QActionGroup instead of leaking a group per rebuild - MTPixmapCache: cap auto-growth at 128 MB instead of INT_MAX/4 KB (~512 GB) - Application::logo(): keep the decoded SVG icon instead of re-reading it - INISettingsObject::resumeSave(): clear the pending save flag after saving
Rename the placeholder v9.2.8 changelog section to v9.3.0 and document the unreleased work: instance-loss and packaging fixes, bot-server read-only install fallback, and the startup/sorting/repaint optimizations. Bump Launcher_VERSION and the Arch pkgver to match so tag builds and the changelog check agree.
slideOut() and updatePosition() bailed whenever any animation was running, so a click in the first 250ms stopped the auto-hide timer and left the card stuck on screen, a close click never emitted dismissed(), and a resize mid-animation left the card at the old spot. Stop an in-flight slide-in and continue from the current position, and retarget the running animation's end value instead of only storing it. Note added to the v9.3.0 changelog.
…randed logo on every card
Updated the changelog to reflect improvements in instance list sorting, text caching, icon caching, and Discord Rich Presence branding.
Updated changelog for version 9.3.0 with changes related to startup performance and UI improvements.
A new "View skins online" button opens a browser for the crafty.gg skin catalog: page navigation, player-name search, the player behind every skin, a rotatable 3D preview and a "Use skin" button that downloads the picked skin, adds it to the local skin library and applies it right away (uploaded for Microsoft accounts, stored for the offline skin agent for offline accounts). Textures are cached under cache/skins so a revisit costs no requests. The skin upload now refreshes an expired 24 hour launcher token before sending the upload instead of only after it, which is what made skin changes fail with HTTP 401. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… check All crafty.gg requests pass one shared gate - at most 120 per rolling minute with 500 ms between starts - so browsing and previewing skins online never reaches the API's 150/minute rate limit, and a rare HTTP 429 is retried after the wait the server asks for instead of failing the page. The macOS bundle verification now greps text files only and matches the real git ref, so the local branch name inside third-party binaries no longer fails the job.
cmake --build was called without a directory, so it printed its usage text and the macOS job failed before compiling anything.
… check All crafty.gg requests pass one shared gate - at most 120 per rolling minute with 500 ms between starts - so browsing and previewing skins online never reaches the API's 150/minute rate limit, and a rare HTTP 429 is retried after the wait the server asks for instead of failing the page. The macOS bundle verification now greps text files only and matches the real git ref, so the local branch name inside third-party binaries no longer fails the job.
… check [skip release] All crafty.gg requests pass one shared gate - at most 120 per rolling minute with 500 ms between starts - so browsing and previewing skins online never reaches the API's 150/minute rate limit, and a rare HTTP 429 is retried after the wait the server asks for instead of failing the page. The macOS bundle verification now greps text files only and matches the real git ref, so the local branch name inside third-party binaries no longer fails the job.
…ip release] The main window title is PollyMC-Continued <version> with no branch/channel suffix, and no application display name is registered with Qt anymore, so the other windows (Quick Setup, offline player name dialog, every other dialog) keep just their own title instead of getting the launcher name and version appended after it. Linux, Windows and .deb CI packages now hide git metadata like the macOS and Arch packages already did, so their version string carries no commit hash.
Searching in the View skins online browser now asks crafty.gg's own text search (player names, tags and styles - the same search the crafty.gg site uses) and merges its hits with the matched player's own skins into one scrollable list, instead of jumping to whatever single player happened to match the query. The text matches lead the first page and the player's own skins paginate behind it, so a name search still lists every skin of that player while a tag search shows what the catalog has for that word. Rows show a plain mannequin while their texture downloads instead of an empty square, and the player name is filled in together with the texture, so results look like a normal list right away. The search field now says it matches players, tags and styles. The crafty request gate now reserves the slot it has to wait for, so a burst of downloads (one page of textures, for example) goes out one every 500 ms instead of all at once after the same delay.
Homebrew stopped shipping bottles for macOS 14, so the job compiled ccache -> asciidoctor -> ruby -> rust -> llvm@22 from source and died on an llvm@22 patch checksum. macOS 15 has bottles for every formula the job installs, so the install step pours prebuilt bottles again instead of building LLVM for an hour.
The Help slot showed a "Will fix later." message box because Launcher_HELP_URL is empty in this fork. It now falls back to Launcher_DISCORD_URL (the same invite as the Discord menu entry), so the button always opens the server in the browser.
…release] Split the main toolbar into separator-delimited groups (Add instance | Folders, Settings, Performance presets | More | Accounts), rename the Help toolbar button to More, and keep Check for update inside its dropdown with its icon instead of showing it as a separate button.
Order the Help/More menu by what each entry does (update, logs and bug report first, then wiki/news/bots, community links, maintenance, About last) - the toolbar dropdown copies that order, so both change together. Enable QMenu tooltips on the three menus built in code (More, Accounts, Export) since toolTipsVisible defaults to off, and add tooltips to the 11 actions that had none.
…ase] Ran lupdate over launcher/ to pull in the57 strings missing from the catalog (skin browser and skin manager, the More menu, the new toolbar tooltips) and translated all of them for Russian, Ukrainian, German and Afrikaans, matching each file's existing terminology. lrelease compiles all four with 2416/2416 finished and none left unfinished.
…[skip release] French gets the same57 new strings as ru/uk/de/af (skin browser, More menu, toolbar tooltips), bringing those five languages to 2416/2416 finished. Also repairs five translations that lost a placeholder: ru and uk printed a literal 1%2%/$2, and fr had "ce 1%" plus "a ete" written as "à été" in the three shortcut messages.
Placeholder audit across every catalog found 210 finished translations that could not render their message: reversed (1%), spaced (% 1), dropped or duplicated tokens, plus strays where the source has no placeholder at all. Fixed all of them across 47 languages, keeping each file's own wording. Also wrapped the two plural messages in fi and lo with <numerusform>, since bare text in a numerus message makes lrelease fail and neither language compiled at all. All 90 finished files now build a .qm with zero placeholder mismatches.
All 1876 unfinished entries now carry Hindi text (the skin browser, the More menu and the new toolbar tooltips among them), the two empty plural forms are translated, and the log-length message's %l typo is repaired in both places. lrelease builds 2416/2416 finished, none left unfinished.
All 2043 unfinished entries now carry Bangla text, matching the file's existing terminology, and the two messages that used the Bengali digit for the commit and build-date placeholders are repaired. lrelease builds 2416/2416 finished with none left unfinished.
Added a new online skin browser, improved skin application process, and completed Hindi and Bangla translations. Enhanced startup speed, instance list sorting, and caching mechanisms, while fixing various bugs related to instance detection, translations, and Discord Rich Presence.
Removed pagination buttons and added a new bottom bar layout with navigation and action buttons.
Removed unnecessary comments and reorganized the layout to include a button box for closing the dialog.
Disable site button when no skin is selected.
Removed the on_siteBtn_clicked method from SkinBrowserDialog.
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.
What's included
This PR promotes the tested v9.3.0 changes from
testingtomain.Highlights
Notes