Releases: wszqkzqk/PvZ-Portable
Releases · wszqkzqk/PvZ-Portable
Release list
0.2.1
What's Changed
- Fix: correct several behaviors that differ from the original GOTY by @peashooter2 in #391
- Fix: correct gold sunflower trophy scale and position on award screen by @wszqkzqk in #390
- Fix: correct assorted issues in docs, issue templates, and packaging by @wszqkzqk in #393
- Chore: enable vcpkg binary caching and cache Gradle home in CI by @wszqkzqk in #396
- Fix: correct mind-controlled zombie tint color to match original by @wszqkzqk in #398
- Chore: move single-user constants from headers into their .cpp files by @wszqkzqk in #399
- Refactor: replace ClampInt/ClampFloat/ClampByte helpers with std::clamp by @wszqkzqk in #401
- Refactor: inject default font into SexyAppBase instead of widgets reading game resources by @wszqkzqk in #402
- Fix: correct assorted memory-safety and logic bugs in framework and game code by @wszqkzqk in #403
- Fix: eliminate ResourceManager object-lifetime UB and modernize DataArray iteration by @wszqkzqk in #404
- Refactor: split GameSelector slide displacement from button layout offset by @wszqkzqk in #407
- Refactor: make GameSelector buttons child widgets by @wszqkzqk in #408
- Fix: add missing widget background in Zombatar list screen by @peashooter2 in #411
- Feat: tag demo files with the program version and warn on mismatch during replay by @wszqkzqk in #410
- Fix: render Zombatar facial hair above the zombie tie by @wszqkzqk in #413
- Chore: remove the broken, discontinued Nintendo 3DS port by @wszqkzqk in #416
- Feat: add 32-bit MSVC (x86) Windows build and fix vcpkg CI cache invalidation by @wszqkzqk in #419
- Chore: remove the broken ModVal runtime tuning module by @wszqkzqk in #417
- Fix: correct Zombatar list carousel positions and clipping by @wszqkzqk in #421
- Fix: keep iOS vcpkg ports on the declared deployment target by @wszqkzqk in #420
- Chore: unify comment style, retab to tabs, and drop dead code by @wszqkzqk in #428
- Fix: object lifetime races across modal waits and board lifecycle by @wszqkzqk in #424
- Feat: add slide transition animation to Zombatar confirm screen by @wszqkzqk in #400
- Fix: hide Zombatar portrait prev/next buttons at list boundaries by @wszqkzqk in #426
- Fix: correct Zombatar avatar part stacking and visibility by @wszqkzqk in #430
- Feat: add static Linux build to CI by @wszqkzqk in #432
- Fix: use SDL's built-in iconv for the Linux static build by @wszqkzqk in #436
Full Changelog: 0.2.0...0.2.1
0.2.0
What's Changed
- Fix: join loading thread instead of detaching it by @wszqkzqk in #359
- Feat: implement clean-room Zombatar support and improve UI by @wszqkzqk in #319
- Fix: enable C++ exception catching in Emscripten builds by @wszqkzqk in #362
- Fix: keep edit widgets visible above the soft keyboard on Android by @wszqkzqk in #363
- Fix: write challenge records to the correct profile in AddPreviewProfiles by @wszqkzqk in #366
- Fix: enable edit-widget copy/paste/undo shortcuts when text input is active by @wszqkzqk in #367
- Fix: make demo recording/playback actually work by @wszqkzqk in #369
- Fix: make wall-clock time deterministic in demo sessions by @wszqkzqk in #375
- Fix: bundle SDL3 in macOS CI artifacts by @wszqkzqk in #380
- Fix: eliminate remaining demo replay divergence sources by @wszqkzqk in #379
- Feat: support full UTF-8 text input in edit widgets by @wszqkzqk in #371
- Feat: use timestamped demo file names and replay the newest by default by @wszqkzqk in #373
- Fix: eliminate signed overflow in runtime frame counters by @wszqkzqk in #382
- Feat: sign Android release APKs with a CI-provided keystore by @wszqkzqk in #384
- Feat: derive version info from git tags across platforms by @wszqkzqk in #385
- Fix: derive the Android version with providers.exec for Gradle 9 by @wszqkzqk in #387
- Fix: eliminate object-lifetime UB in DataArray with a real array by @wszqkzqk in #383
- Feat: support space-separated option values and explicit -play/-record files by @wszqkzqk in #389
Full Changelog: 0.1.27...0.2.0
0.1.27
What's Changed
- Fix: correct duplicate notifications for achievements in-game popup by @wszqkzqk in #344
- Fix: save mid-level game before Shutdown() halts music by @wszqkzqk in #345
- Fix: disable growable array buffers for WASM to avoid TextDecoder error by @wszqkzqk in #348
- Fix: use live mouse position in GameButton::IsMouseOver by @wszqkzqk in #343
- Fix: unify resource error handling and use SDL message box for fatal errors on most platforms by @wszqkzqk in #341
- Chore: bump GitHub Actions to latest major versions (setup-android v4, setup-emsdk v16) by @wszqkzqk in #350
- Feat: lower Android floor to API 24 by @wszqkzqk in #349
- Refactor: unify logging to SDL_Log and remove obsolete trace functions by @wszqkzqk in #351
- Feat: load Android native libraries directly and handle edge-to-edge insets by @wszqkzqk in #352
- Refactor: replace manual clamping logic with std::min/max/clamp by @wszqkzqk in #324
- Fix: handle UTF-8 whitespace by code point in Sexy::Trim by @wszqkzqk in #353
- Chore: add AI agent tooling directories to .gitignore by @wszqkzqk in #354
- Fix: eliminate undefined behavior in DataReader::ReadString and narrow-type DataSync overloads by @wszqkzqk in #355
Full Changelog: 0.1.26...0.1.27
0.1.26
What's Changed
- Fix: harden GIF decoding in ImageLib by @wszqkzqk in #307
- Fix memory management issues and refactor for RAII usage by @wszqkzqk in #308
- Fix: Revise the description of the "Roll Some Heads" achievement to match the original version by @peashooter2 in #310
- Fix: avoid credits note after achievements in non-adventure modes by @wszqkzqk in #312
- Fix: award Morticulturalist when all shop plants are owned by @wszqkzqk in #313
- Fix: set Let's Rock button label hilite color to white by @wszqkzqk in #314
- Refactor: rewrite Color class constructors and methods to use constexpr by @wszqkzqk in #321
- Fix: clean up latent UB and modernize string handling by @wszqkzqk in #320
- Fix: remove redundant sell-dialog label override and dead purchase dialog by @wszqkzqk in #323
- Feat: map Android back button to escape key by @wszqkzqk in #143
- Fix: support UTF-8 decoding and safe rect lookup in TodDrawStringMatrix by @wszqkzqk in #327
- Fix: fix dialog button casing and localize hardcoded strings across versions by @wszqkzqk in #325
- Fix: correct trophy count font size by @Vector-Syobon-812 in #329
- Fix: handle UTF-8 by code point in MessageWidget and ChallengeScreen by @wszqkzqk in #330
- Fix: open menu instead of debug play on seed chooser escape by @wszqkzqk in #332
- Fix: keep Continue dialog wide enough for its buttons by @wszqkzqk in #331
- Fix: avoid color pollution in TodWriteString width measurement by @wszqkzqk in #335
- Fix: correct loading task accounting by @wszqkzqk in #336
- Fix: ensure texturing is enabled in multi-piece BltTriangles path by @wszqkzqk in #337
Full Changelog: 0.1.25...0.1.26
0.1.25
What's Changed
- Fix: ensure Jalapeno-headed zombie dies with loot when burned by @wszqkzqk in #296
- Feat: replace LIMBO_PAGE build option with in-game unlock via rapid clicks by @wszqkzqk in #297
- Fix: update vcpkg baseline to 2026.06.01 for CMake 4.0 compatibility by @wszqkzqk in #299
- Chore: remove iOS libvorbis overlay port and VCPKG_OVERLAY_PORTS usage by @wszqkzqk in #301
- Fix: correct plant tooltip and dialog text casing by @wszqkzqk in #300
- Chore: add CONFIGURE_DEPENDS to source file GLOB by @wszqkzqk in #302
- Fix: enforce LF line endings and remove redundant .gitattributes by @wszqkzqk in #304
- Feat: toggle fullscreen with Alt+Enter by @wszqkzqk in #306
Full Changelog: 0.1.24...0.1.25
0.1.24
What's Changed
- Feat: suppress right-click context menu on canvas for WASM builds by @peashooter2 in #266
- Fix: correct KillDialog mResult sentinel from -1 to 0x7FFFFFFF by @wszqkzqk in #271
- Fix: restrict Zombiquarium floating check to placed plants only by @wszqkzqk in #273
- Fix: correct PARTICLE_VASE render layer from TOP to GROUND by @wszqkzqk in #276
- Fix: swap grave spawn weight in WhackAZombie by @Vector-Syobon-812 in #278
- Fix: correct zombie velocity of dolphin-riders and plain zombies by @windbell0711 in #277
- Fix: adjust golden sunflower trophy sparkle position upward by @wszqkzqk in #275
- Fix: apply Dancer Zombie scale in DrawSeedType by @wszqkzqk in #268
- Fix: disable C++ language extensions for stricter standard compliance by @wszqkzqk in #279
- Feat: add AUR publishing workflow and split PKGBUILD variants by @wszqkzqk in #269
- Fix: duration of STATE_SQUASH_LOOK should be 45 instead of 30 by @windbell0711 in #283
- Fix: remove incorrect -0.5f offset in Reanimator matrix translation by @wszqkzqk in #285
- Fix: correct Imitater tooltip string key from NOT_RECOMMEND_FOR_LEVEL to NOT_RECOMMENDED_FOR_LEVEL by @wszqkzqk in #289
- Fix: green gap in selector screen grass after achievements slide by @wszqkzqk in #287
- Fix: call SexyAppBase::Shutdown before early return in LawnApp::Shutdown by @wszqkzqk in #294
- Feat: disable LIMBO_PAGE by default, enable explicitly in Arch testing PKGBUILD by @wszqkzqk in #282
New Contributors
- @peashooter2 made their first contribution in #266
- @windbell0711 made their first contribution in #277
Full Changelog: 0.1.23...0.1.24
0.1.23
What's Changed
- Fix: correct dave upgrade dialog by @Vector-Syobon-812 in #238
- Fix: now dave can't choose not recommended plants by @Vector-Syobon-812 in #243
- Fix: enable floating plants in Zombiquarium background by @wszqkzqk in #236
- Fix: restrict HomeSecurity achievement trigger to Adventure Level 1 by @wszqkzqk in #245
- Fix: use mBoard->mLevel instead of mPlayerInfo->mLevel for adventure special-level checks by @wszqkzqk in #247
- Fix: move Whack-a-Zombie hammer cursor initialization to StartLevel by @wszqkzqk in #252
- Fix: correct intro camera pan direction in CutScene by @wszqkzqk in #256
- Fix: increase intro presentation text size in CutScene by @wszqkzqk in #258
- Fix: correct Dancing Zombie phase and summon behavior by @wszqkzqk in #261
Full Changelog: 0.1.22...0.1.23
0.1.22
What's Changed
- Fix: correct caustic UV computation in PoolEffect to match original behavior by @wszqkzqk in #210
- Fix: correct particle freeze conditions for Grave Buster and Pool Sparkly in cutscene by @wszqkzqk in #213
- Fix: defer LawnApp cleanup to destructor to avoid Zen Garden store close crash by @wszqkzqk in #214
- Fix: correct Zen button layout and wave rendering by @Vector-Syobon-812 in #216
- Fix: correct shop pagestring display and coinbank by @Vector-Syobon-812 in #217
- Change counter fields to uint32_t for consistency in Board and PlayerInfo by @wszqkzqk in #211
- Fix: disable vcpkg binary caching to avoid GHA token errors by @wszqkzqk in #222
- Fix: correct flag wave countdown condition in UpdateZombieSpawning by @wszqkzqk in #221
- Fix: prevent interaction with menu buttons during reward acquisition by @12471220 in #224
- Fix winter melon splash on shielded zombies, balloon pool spawning, and blover wind-up by @wszqkzqk in #226
- Fix: correct store PACKET_UPGRADE description range by @Vector-Syobon-812 in #229
- Fix: enable texture repeat for pool caustic effect by @wszqkzqk in #215
New Contributors
Full Changelog: 0.1.21...0.1.22
0.1.21
What's Changed
- Fix: ensure screen redraw only occurs when necessary and mark all widgets as dirty on window resize by @wszqkzqk in #187
- Fix: update OpenGL ES initialization for Nintendo Switch by @wszqkzqk in #190
- Feat: implement SDL cursor enforcement and custom cursor support by @wszqkzqk in #189
- Fix: update mouse position handling in MouseDown function by @wszqkzqk in #198
- Fix: use original track image dimensions for pivot calculation in reanimator by @wszqkzqk in #208
- Fix: correct snorkel zombie speed after eating in pool by @wszqkzqk in #207
- Fix: adjust scale handling for dancer and backup dancer zombies in ApplyBurn function by @wszqkzqk in #209
- Fix: stabilize long-run animation and flashing counters by @wszqkzqk in #199
Full Changelog: 0.1.20...0.1.21
0.1.20
What's Changed
- Fix: remove unnecessary SDL_MOUSEWHEEL_FLIPPED check to correct mouse wheel scrolling by @wszqkzqk in #186
- Fix: adjust golden sunflower tooltip update area boundaries by @wszqkzqk in #178
- Fix: prevent state transitions and concurrent slides during screen animation by @wszqkzqk in #185
Full Changelog: 0.1.19...0.1.20