summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-06-19fix: free look releases the door peek camera (#6756)David Racine
* fix(camera): let free look release the door peek camera After walking through a door, the door camera (CAM_SET_DOORC) held the view and only handed control back once the player moved or pressed a button, so the right stick did nothing until then. With free look the camera appeared frozen after every door. Treat right-stick movement as a release condition too, using the same stick threshold as free-look activation. * refactor(camera): move door-cam free-look release to a VB_SHOULD hook Reimplements the door peek camera free-look release as a vanilla-behavior hook instead of inline logic in z_camera.c, keeping the decomp file close to upstream. - Add VB_RELEASE_DOORC_CAMERA wrapping the existing Camera_Special9 release condition; the vanilla button/xzSpeed expression is left untouched. - Move the right-stick / free-look threshold logic into a new enhancement, FreeLookDoorCamRelease.cpp, registered with COND_VB_SHOULD and gated on FreeLook.Enabled so the hook only exists while Free Look is on. Behavior is unchanged from the previous fix; this only relocates the logic. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19docs: document clang-format 14 setup and add an opt-in pre-commit hook (#6741)David Racine
Recent distros and Homebrew ship only newer clang-format, so contributors can't easily get the version CI uses (14, matching the OoT/MM decomp). - docs/FORMATTING.md: how to get a 14.x binary (apt, AUR, muttleyxd static binaries, uvx/pipx wheel, brew) and how to run the formatter. - run-clang-format.sh: default to clang-format-14 but honor $CLANG_FORMAT so any matching binary works. Any 14.x produces byte-identical output here. - .pre-commit-config.yaml: opt-in hook to format staged C/C++ on commit. - README: link the new doc. The llvm@14 formula is available on Linux too, so filing it under a macOS-only heading was too narrow. * Support spaced paths in CLANG_FORMAT; document run-clang-format.ps1 eval the clang-format invocation so CLANG_FORMAT can carry arguments (uvx clang-format@14) or a quoted path with spaces without one breaking the other. The NUL-separated file list reaches xargs over the pipe, so filenames never pass through eval. Document the native Windows run-clang-format.ps1 path alongside the Git Bash/WSL route. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18Dynamic Cosmetics Editor for Custom Models (#6429)Jameriquiah
* dynamic cosmetics editor for custom models * moved to separate cpp * remove unused includes * Update DynamicCosmeticsEditor.cpp * sanitization cleanup * better empty check? * remove some duped logic * new tab + better categories * changes * woops * cleanup * reset change * refresh removal * add CVarClearBlock * remove ClearCustomCosmeticValueCvars * fix merge conflict * woops
2026-06-18feat(camera): option for free look to follow the default camera distance (#6757)David Racine
Free Look pinned the camera to the fixed "Camera Distance" setting, so it never pulled in or out the way the vanilla camera does for the current situation. Add an opt-in "Follow Default Camera Distance" setting (FreeLook.UseGameDistance) that uses the game's per-mode default distance instead. The fixed distance slider is hidden while it is enabled. Closes #4050 Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18Redo Fishing Pole Gi Model (#6759)nickel246
Replaces the gi model for the randomizer Fishing Pole to be more consistent with the rest of the game's gi models
2026-06-18Fix Nabooru despawning from spirit when collecting an unrelated check (#6751)Pepper0ni
Fix nabooru cutscene skip setting the kidnapped flag too often
2026-06-18fix(audio): replace stray custom-sequence printf with a debug log (#6752)David Racine
The custom-sequence registration loop printed each assigned seqNum to stdout via a bare printf, spamming the console with context-free numbers on every launch. Convert it to LUSLOG_DEBUG and include the sequence name so it is hidden by default yet useful for diagnosing music-pack loading.
2026-06-18Ivan: Megaton Hammer rework (#6753)Shishu the Dragon
2026-06-18Fix Growdirection (#6761)Reppan
2026-06-18fix id conflicts (#6765)Jameriquiah
2026-06-17Remove duplicate prefixes for rocks and trees (#6749)A Green Spoon
remove prefix except OGC
2026-06-16asset purge (#6758)Jameriquiah
2026-06-16fix and improve test builds on distros workflow (#6748)briaguya
* Make distro test matrix dynamic Resolve Ubuntu LTS and Fedora releases from endoflife.date at workflow run time so the matrix tracks in-support versions automatically, and use Debian's rolling oldstable/stable/testing tags. Switch install-step gating from image-string equality to a packageManager key on each distro entry. Drop the fedora:39 nlohmann workaround now that fedora:39 is no longer in the matrix. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Bootstrap git and read apt deps from apt-deps.txt Add a per-package-manager step that installs git first so the checkout can fetch submodules inside the container, then move checkout above the main install steps so they have repo files on disk. The apt install now sources its package list from .github/workflows/apt-deps.txt, matching generate-builds.yml. Drop the redundant echo-the-command-then-run-it lines from each install step. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Move libzip deps into apt-deps.txt The libzip family (libzip-dev, zipcmp, zipmerge, ziptool) was previously appended to each workflow's apt install line because the appimage build needs libzip without crypto support. Add it to apt-deps.txt instead and have the appimage build job apt-remove libzip-dev before its from-source rebuild, mirroring the existing tinyxml2 pattern. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Drop libopengl-dev from distro test workflow libglew-dev (in apt-deps.txt) already pulls in the OpenGL headers via libgl-dev / libglvnd-dev, and generate-builds.yml has been building without libopengl-dev for a long time. The line was originally added on a guess; removing it brings the test workflow into alignment. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Move git, cmake, lsb-release into apt-deps.txt These are real build-time deps (git for submodule checkout, cmake for the build, lsb-release for soh CMakeLists distro detection). Moving them into apt-deps.txt makes the file a single canonical answer to what apt packages are needed to build, and reduces the distro test workflow's apt install line to just the compiler plus the file. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Move apt deps file out of .github and point BUILDING.md at it Rename .github/workflows/apt-deps.txt to linux-build-deps/apt.txt so the canonical list lives at a path users can reasonably be told to look at. Update both workflows to the new path. BUILDING.md grows a "Clone the repo and enter the directory" section before Install dependencies so its apt commands can source from the file via $(cat ...) — the clone snippet is dropped from the later Build block to avoid duplication. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Add cmake version verification section to BUILDING.md Older distros ship cmake too old for this project; point users at how to check their version against the project's minimum and link to a few ways to install a newer cmake (pypi, kitware apt repo, Homebrew). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Add cmake verify/update step to distro test workflow ubuntu:22.04 and debian:oldstable ship cmake older than the project's minimum (3.26+), failing at configure time. Add a step before Build SoH that compares the installed cmake to the project minimum and, if too old, installs a newer cmake via pipx (per-distro pipx package). The new cmake's bin dir is added to GITHUB_PATH so the Build SoH step picks it up. Mirrors the BUILDING.md guidance pointing users at pypi cmake. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Set ccache on PATH once per job in generate-builds Replace the repeated per-step `export PATH="/usr/lib/ccache:..."` with a single "Add ccache to PATH" step in each Linux job that writes both ccache dirs to GITHUB_PATH. From there it persists for every subsequent step in that job, so each from-source build (SDL, SDL_net, tinyxml2, libzip) and the final cmake compile pick up ccache automatically. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Extract tinyxml2 from-source build into a composite action generate-builds had the same 13-line tinyxml2 install block in both the generate-soh-otr and build-linux jobs, and the distro test workflow is about to need the same logic conditionally. Move it into a composite action at .github/actions/install-tinyxml2 and have generate-builds use it. The action only builds and installs from source; removing the distro package stays in the caller since that command is package-manager specific. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Add tinyxml2 troubleshooting tip to BUILDING.md Older distros ship tinyxml2 pre-10.0.0 which doesn't include the cmake config file the project's find_package call needs. Point users at either brew or the install-tinyxml2 composite action script when they hit the "Could not find a package configuration file" error. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Install latest tinyxml2 in distro test workflow when missing ubuntu:22.04 ships libtinyxml2-dev 9.0.0, which is before tinyxml2 started providing a cmake config file, so find_package(tinyxml2) fails. Add a step (apt-only) that checks for tinyxml2Config.cmake on disk and, if missing, removes the distro package and calls the install-tinyxml2 composite action to build 10.0.0 from source. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Extract SDL2_net from-source build into a composite action Same shape as the install-tinyxml2 action: generate-builds had identical SDL2_net install blocks in both the generate-soh-otr and build-linux jobs, and the distro test workflow is about to need the same logic conditionally. Move it into a composite action at .github/actions/install-sdl2-net. The cp of /usr/local/lib/libSDL* into the multiarch lib dir stays in the caller since it's appimage-specific. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Refactor cmake-config troubleshooting tip and add SDL2_net Restructure the troubleshooting tip into a generic "older distros ship packages without the cmake config files" framing with a list of known failing package versions, then two paths to install a newer version: Homebrew (with a note about CMAKE_PREFIX_PATH) or building from source using the install-* composite actions as reference. Add SDL2_net to the list alongside tinyxml2. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Install latest SDL2_net in distro test workflow when missing ubuntu:22.04 ships libsdl2-net-dev 2.0.x, which is before SDL2_net started providing a cmake config file, so find_package(SDL2_net) fails silently and the link step errors on the missing SDL2_net::SDL2_net target. Mirror the tinyxml2 pattern: an apt-only check for sdl2_net-config.cmake on disk that triggers the install-sdl2-net composite action when missing. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Document minimum GCC and Clang versions Minimums pinned empirically by walking up versions on the test-gcc-10 test branch until each compiler built clean. The version numbers live in linux-build-deps/minimum-{gcc,clang}-version.txt so the workflow can read them and BUILDING.md can link to a single source of truth. Test runs that pinned the floors: - GCC 9 failure (missing <compare> header): https://github.com/briaguya0/Shipwright/actions/runs/27491491936 - GCC 10 success: https://github.com/briaguya0/Shipwright/actions/runs/27490774081 - Clang 15 failure (structured-binding-capture in lambda): https://github.com/briaguya0/Shipwright/actions/runs/27491715930 - Clang 16 success: https://github.com/briaguya0/Shipwright/actions/runs/27492790573 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Add verify-compiler and install-newer-compiler actions Two composite actions that work together to keep the compiler used by the build at or above the project minimum. verify-compiler reads linux-build-deps/minimum-${compiler}-version.txt, compares against the installed default, and emits four outputs: needs_install, available_in_distro, cc, cxx, version. install-newer-compiler consumes those and installs ${compiler}-${version} either from the distro repos (apt or zypper) or via apt.llvm.org for clang on apt distros. Any combination without a known install path fails with "Minimum version not readily available. An alternative installation method for ${compiler} ${version} is needed." Validated on the test-verify-compiler branch via two dedicated test workflows that exercise every reachable matrix combination and assert expected outputs / install outcomes: - verify-compiler: https://github.com/briaguya0/Shipwright/actions/runs/27510863067 - install-newer-compiler: https://github.com/briaguya0/Shipwright/actions/runs/27512420765 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Wire verify-compiler and install-newer-compiler into distro test workflow Between the dependency-install step and the cmake verify step, run verify-compiler and (conditionally) install-newer-compiler so distros that ship a compiler below the project minimum get a newer one. Build SoH's CC/CXX env now reads the resolved binary names from verify-compiler's outputs instead of using matrix.cc/cxx directly, so a freshly-installed gcc-N/clang-N actually gets used by cmake. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Add fmt/clang consteval workaround tip to BUILDING.md Point users at the fmtlib/fmt#4807 issue and the -DCMAKE_CXX_FLAGS=-DFMT_CONSTEVAL=constexpr workaround when they hit the "call to consteval function" error while building with clang. Affects distros that ship libfmt 10.x with newer clang. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Probe fmt/clang consteval compat and apply workaround when needed Self-checking version of the BUILDING.md tip: between the dep-install steps and Build SoH, try to compile the minimal repro from fmtlib/fmt#4807. If the compile fails, the build job adds -DCMAKE_CXX_FLAGS=-DFMT_CONSTEVAL=constexpr to cmake's invocation; otherwise the flag stays empty. The probe uses the resolved CXX from verify-compiler, so it works regardless of whether the compiler came from the distro or a freshly-installed newer version. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Move Arch packages into linux-build-deps/pacman.txt Mirror the apt pattern: extract the Arch package list to linux-build-deps/pacman.txt (everything except the compiler) and point both BUILDING.md and the distro test workflow at it. Also brings the workflow's Arch install up to parity with BUILDING.md — it was missing opusfile and libvorbis. Add linux-build-deps/README.md explaining that apt.txt is verified on every push but the other per-distro lists can drift, and inviting PRs / issues / Discord messages when something's missing. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Move Fedora packages into linux-build-deps/dnf.txt Mirror the apt/pacman pattern: extract the Fedora package list to linux-build-deps/dnf.txt (everything except the compiler and the gcc-c++ companion package) and point both BUILDING.md and the distro test workflow at it. Brings the workflow's Fedora install up to parity with BUILDING.md — it was missing SDL2_net-devel, nlohmann-json-devel, opusfile-devel, and libvorbis-devel. Also drops the leftover wget that was only needed for an old from-source workaround. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Move openSUSE packages into linux-build-deps/zypper.txt Mirror the apt/pacman/dnf pattern: extract the openSUSE package list to linux-build-deps/zypper.txt and point the distro test workflow at it. The list adds SDL2_net-devel and the audio family (libogg-devel, libvorbis-devel, libopus-devel, opusfile-devel) that the workflow's inline list was missing — package names verified in a Tumbleweed distrobox. Also adds a new openSUSE section to BUILDING.md (it wasn't there before), with libstdc++-devel in the clang line because clang on openSUSE doesn't pull in libstdc++ headers transitively the way it does on other distros. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Add in-support openSUSE Leap releases to the distro test matrix Fetch openSUSE cycles from endoflife.date and include any with an EOL date in the future as opensuse/leap:${cycle} images alongside the rolling Tumbleweed entry. Today that's just Leap 16.0 (15.6 went EOL 2026-04-30); new Leap releases will appear automatically as they ship and old ones drop off as they EOL. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Move Nix flake into linux-build-deps/flake.nix Extract the flake.nix content out of BUILDING.md's inline code block into linux-build-deps/flake.nix and update the Nix section to point at it. Users run `nix develop ./linux-build-deps` from the repo root instead of copying the flake out to a file they have to maintain themselves. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Add build-nix job to distro test workflow Verifies that `nix develop ./linux-build-deps` produces a shell that builds SoH. Runs on its own (no distro matrix) and uses cachix/install-nix-action per nix.dev's CI guidance. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Drop LINUX_RUNNER override from distro test workflow vars.LINUX_RUNNER isn't referenced anywhere else in .github/ — the override is dead code. Replace all three call sites with plain ubuntu-latest. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-15Fix Bottom of the Well Coffin Logic (#6743)Brian
2026-06-15[Modding] Refactor CustomEquipment (#6708)Reppan
2026-06-14Fix bean guy showing in check tracker when unshuffled (#6742)aMannus
2026-06-14fix halfmilk RBA (#6670)ph
2026-06-14[Enhancement] Restore Saria's gesture animation in her house (#6569)Jordan Longstaff
under Graphical Restorations
2026-06-14fix(audio): Properly filter-out unavailable audio backends from UI (#6705)David Racine
2026-06-14fix(audio): Fix audio stutter when gfx hitches (#6704)David Racine
The audio thread will now self-pump every 5 ms in case the rendering loop takes too much time before waking up the audio thread, causing audio starvation. This is what was causing audio stutters/cuts during world loading. I had the issue constantly the first time I pressed start to get the game menu. To avoid issues, the first wakeup of the audio thread is behind a `primed` flag and will wait unconditionnally for the rendering loop to wake us up. This is to make sure the game has initialized properly and avoid a crash on boot.
2026-06-14Fix Guard pots being breakable with hookshot in logic (#6671)Pepper0ni
implement ItemUseAllowed
2026-06-14rando: option to allow swordless epona items (#6727)Philip Dubé
2026-06-14docs: fix missing sdl2-net (#6740)David Racine
Add the sdl2-net dev package that was missing from the Fedora and macOS lists
2026-06-13Ivan: New Farore’s Wind (#6735)Shishu the Dragon
2026-06-13Fix custom music corruption past 256 sequences (#5989) (#6736)David Racine
The resolved replacement id (which can exceed 255) rode a single per-player seqToPlay slot, written at enqueue but consumed asynchronously on the audio thread; back-to-back starts and priority-queue promotions clobbered it. sSeqFlags[0x6F] was also indexed by raw id, reading out of bounds past the authentic range. - func_800F9280 resolves the replacement and packs the full 16-bit id into the 0x82/0x85 play command; the handler reads opArgs & 0xFFFF. Audio_QueueSeqCmd no longer pre-writes the shared slot. - SyncInitSeqPlayerInternal uses the command-carried id and bounds-checks it against the calloc'd sequence map (+0xF headroom for reserved-range skips). - Route sSeqFlags reads through a bounded Audio_GetSeqFlags helper. - Warn and skip gracefully past the 16-bit id limit. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13Remove REMOTE_CONTROL flags while building (#6732)aMannus
2026-06-13Move Owl Locations to where they are in the world (#6725)ItsHeckinPat
2026-06-12Fix Outside ToT crash when using din's or dying (#6731)aMannus
2026-06-12Fix rando code not using rando rng (#6730)Philip Dubé
2026-06-12Add 6th notch to text speed which makes text speed instant (#6694)Philip Dubé
Helps frustration trying to read hints faster without skipping
2026-06-12Early Granny's Potion Shop (#6693)Philip Dubé
ZFG thinks it makes more sense not requiring Claim Check, so add option
2026-06-12Only store grotto entrance for voiding out when grottos mixed, or in ↵Philip Dubé
decoupled (#6721) Does some bookkeeping for shuffled spawns / warp songs / owl
2026-06-12Co op syncing and tower collapse softlock fixes. (#6684)Amber Burton
We now have both tower collapse corrected, and other potential softlocks and bugs that would occur from weird network timing causing an UNSET of values in the game with these fixes.
2026-06-11fix recent refactoring regression (#6724)Philip Dubé
2026-06-11Increase warnings in Windows and fix most of them (#5858)Pepe20129
/W3
2026-06-11Add the 2 "decoy" crates as NL crates (#6672)Pepe20129
2026-06-11Hard Code Small Key Doors (#6578)xxAtrain223
2026-06-11Single bombchu bag mode should give refills (#6717)Chris
2026-06-11[Bug Fix] Fix Dark Link Crash/Missing Trails Bug (#6720)ItsHeckinPat
Delete Unused Effect Slot
2026-06-10More MacOS CI iteration (#6382)Garrett Cox
2026-06-10Ivan: Hookify and improve spawning (#6707)Shishu the Dragon
Spawn/despawn Ivan immediately (not on next scene) Move Ivan’s boomerang code out of z_player.c
2026-06-10Fix extended file select info showing random triforce piece counts (#6687)Philip Dubé
2026-06-10skip text: cancel in shops (#6703)Philip Dubé
2026-06-10Skip Epona Race: don't set EVENTCHKINF_EPONA_OBTAINED until collecting ↵Philip Dubé
Epona's Song (#6706) Most notably this doesn't despawn gates allowing itemless epona steal
2026-06-10Merge pull request #6715 from serprex/ackbarPhilip Dubé
merge ackbar to develop
2026-06-09Merge remote-tracking branch 'origin/develop' into develop-ackbarDemur Rumed
2026-06-09Crop input viewer images (#6695)Philip Dubé
Addresses complaint that it's hard to stash in corner without getting black box
2026-06-09Add an option to limit the location of triforce pieces (#6710)lepideble
2026-06-09Enemy rando cleanup 3 (#6518)Pepe20129
* Fix bari's biris not respecting the seeded option * Randomize Peehat Larvas * Refactor `IsEnemyAllowedToSpawn` * Fix the issue where some enemies spawn above the ceiling * Partially fix twisted hallway issue * Prevent Baris from spawning Baris
2026-06-09Fix Malformed Preset Filenames (#6712)Philip Dubé
Sanitize preset names for filesystem safety, log errors without crashing Co-authored-by: Unreference <87878910+unreference@users.noreply.github.com>