From 727a4cc229abea1ffbf3474c160d901b0e60ed81 Mon Sep 17 00:00:00 2001 From: MarcelineVQ Date: Sat, 1 Aug 2026 18:04:54 -0700 Subject: [PATCH] Scrub remaining absolute machine paths from module docs --- RELEASE_NOTES.md | 38 ++++ RELEASING.md | 197 ++++++++++++++++++++ TODO.md | 15 ++ src/outline/README.md | 3 +- src/worldmarkers/MPQ_FILESYSTEM_RESEARCH.md | 4 +- 5 files changed, 253 insertions(+), 4 deletions(-) create mode 100644 RELEASE_NOTES.md create mode 100644 RELEASING.md create mode 100644 TODO.md diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md new file mode 100644 index 0000000..629e7c3 --- /dev/null +++ b/RELEASE_NOTES.md @@ -0,0 +1,38 @@ +# Unreleased Changes + +Track notable changes here between releases. Clear this file when cutting a new release +(move contents into the release notes on Codeberg). + +## What's New + +- **World Markers** - place up to 5 animated Cataclysm-style markers at any position in + the world. Slash commands (`/wm 1`, `/cwm`), keybindings, full Lua API, and automatic + group sync between WeirdUtils users. Requires party/raid leader or raid assist. + +- **DPSLog (COMBAT_LOG_EVENT)** - WotLK 3.3.5 CLEU parity for vanilla 1.12.1. 37 subevents + across 24 hooks with full structured data: source/dest names via name cache, spell names + via SpellRec, overkill/overheal from unit descriptors, WotLK-standard field ordering + (blocked before absorbed, separate glancing/crushing booleans). Drain Life reclassified + as SPELL_PERIODIC_LEECH. SPELL_ENERGIZE with actual amount/powerType via dedicated + SMSG_SPELLENERGIZELOG hook. Periodic energize divides by power display factor (rage/10). + Includes `GetSpellInfo(spellId)` Lua API (name, rank, icon, castTime, minRange, maxRange) + with verified SpellRec/SpellIcon/SpellRange/SpellCastTimes DBC offsets. + Embedded tracker addon (`/dpslog`). Full event reference in wiki. + +- **Interact** - smart interaction helpers: "Interact Nearest" right-clicks the closest + interactable NPC or object within 5 yards, "Loot All Corpses" bulk loots nearby corpses. + Keybindings and Lua API. Already documented in DLL_README but not yet released. + +- **Crash Fix (framecrash)** - prevents crashes from stale UI frame anchor pointers. + Already documented in DLL_README but not yet released. + +- **Outlines** - renders glowing colored outlines around units. Already documented in + DLL_README but not yet released. + +- **Addon Profiling Stub (addonperf)** - TBC+ addon CPU profiling API stub + (GetScriptCPUUsage). Internal/experimental, not in DLL_README. + +- **Minimap Quest Tracking** - shows nearby NPCs with available quests (yellow !) on the + minimap. Reads the per-player quest status cached on unit objects by the client's + SMSG_QUESTGIVER_STATUS handler. Enabled by default in the tracking dropdown, togglable + like other NPC tracking categories. diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 0000000..61a7d7e --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,197 @@ +# Releasing WeirdUtils + +> **Remote:** https://codeberg.org/MarcelineVQ/WeirdUtils + +## How the remote repo works + +`main` on the remote holds the full source, the user-facing `README.md`, +`include/weirdutils_api.h`, and issue templates under `.gitea/`. Releases +attach pre-built DLLs to a tag on `main`. + +This was previously a distribution-only remote - source lived locally and only +a trimmed README plus binaries were pushed. That is no longer the case; develop +against `main` and push directly. + +The wiki clone lives at `remote/wiki/`. `remote/WeirdUtils/` is the old +distribution-only clone and is obsolete - it can be deleted. + +## 0. Sync tags + +`tea` creates tags on Codeberg, so fetch them before comparing against the +previous release: + +```sh +git fetch --tags +``` + +## 1. Bump module versions + +Each module has a `version` field in `build.zig`'s `module_list`. This is what +`GetWeirdUtilsVersion()` reports to Lua addons. Before building, bump the +version for any module that has changed since the last release: + +```zig +// build.zig — module_list +.{ .name = "minimapicons", .version = "1.1", ... }, +``` + +Only bump modules that actually changed. Use `git log --oneline -- src//` +to check what changed since the last release tag. + +## 2. Build DLLs + +Decide which modules to include in this release. Check `build.zig` for the +current list of module flags (`b.option(bool, ...)` declarations) and their +defaults. List them with: + +```sh +zig build --help 2>&1 | grep 'Enable' +``` + +`all-variants` builds everything in one command: the combined DLL, the noperf +variant, and a standalone DLL per module. `-D` flags control which modules are +included across all of them -- disabled modules are excluded from the combined +DLL, noperf, and won't get a standalone variant built. + +```sh +zig build all-variants -Doptimize=ReleaseSmall \ + -Dworldmarkers=false -Dinteract=false -Doutline=false \ + -Dframecrash=false -Ddpslog=false -Daddonperf=false \ + -Dssemaths=false -Dsilicon=false -Dtransform44=false +``` + +### Output locations + +| Artifact | Path | +|----------|------| +| Combined DLL | `zig-out/bin/weirdutils.dll` | +| Variant DLLs | `zig-out/variants/.dll` | + +Verify: + +```sh +ls -lh zig-out/bin/weirdutils.dll zig-out/variants/*.dll +``` + +## 3. Update the README + +`README.md` documents every module, not just the released subset - the source +is public, so there is nothing to trim. Add a section for any new module. + +Do NOT remove trailing spaces in `README.md` - they are intentional Markdown +line breaks. + +## 4. Write the release notes + +Write the release notes to `/tmp/release-notes-vX.Y.Z.md` - NOT inside the +project directory. They are a transient artifact consumed by `tea --note-file` +and should not pollute the repo root or end up in git status. + +Use this template - fill in the sections that apply, delete the rest. +Use `-` (not em dash) anywhere a dash would be used. + +Always include an **Included** section listing every module in this release, +not just what changed. Users downloading a release should see the full list +of what they're getting: + +```markdown +## What's New + +- ... + +## Bug Fixes + +- ... + +## Included + +- **Module Name** - one-line description +- ... + +## Notes + +- Place DLLs next to `WoW.exe` and add to `dlls.txt` +- `weirdutils.dll` includes all features; individual DLLs are also provided +``` + +## 5. Create the release and upload DLLs + +Uses `tea` (Gitea/Forgejo CLI) which handles release creation, tagging, and +asset upload in one command. The tag is created on the remote automatically. + +Run from a clone of the remote repo, or specify `--repo` explicitly. +Only attach the combined DLL and the variant DLLs for modules in this release. + +Only attach DLLs to the release - do NOT attach `weirdutils_api.h` as a +release asset. The header belongs in the repo itself (pushed to `main`), +not in the release downloads. + +```sh +# Example: transmogfix + customassets + healtextfix release +tea release create \ + --repo MarcelineVQ/WeirdUtils \ + --tag vX.Y.Z \ + --target main \ + --title "vX.Y.Z" \ + --note-file release-notes.md \ + --asset zig-out/bin/weirdutils.dll \ + --asset zig-out/variants/transmogfix.dll \ + --asset zig-out/variants/customassets.dll \ + --asset zig-out/variants/healtextfix.dll +``` + +### Replacing a DLL on an existing release + +Delete the old asset by name, then upload the new one: + +```sh +tea release assets delete --repo MarcelineVQ/WeirdUtils -y v0.4.0 minimapicons.dll +tea release assets create --repo MarcelineVQ/WeirdUtils v0.4.0 zig-out/variants/minimapicons.dll +``` + +## 6. Source archives + +Codeberg attaches source tar/zip to each release automatically. Now that the +repo contains the source, leave them visible - they are a useful artifact. + +To hide them anyway, get your token from the tea config: + +```sh +grep 'token:' ~/.config/tea/config.yml | head -1 | awk '{print $2}' +``` + +Then hide the archives: + +```sh +curl -s -X PATCH \ + -H "Authorization: token " \ + -H "Content-Type: application/json" \ + -d '{"hide_archive_links":true}' \ + "https://codeberg.org/api/v1/repos/MarcelineVQ/WeirdUtils/releases/" +``` + +Get the release ID using the API (not `tea release list --output json`, which +mangles keys like `tag-_name`): + +```sh +tea api repos/MarcelineVQ/WeirdUtils/releases | python3 -c " +import sys,json; releases=json.load(sys.stdin) +r=[x for x in releases if x['tag_name']=='vX.Y.Z'] +print(r[0]['id']) if r else print('not found') +" +``` + +## Known Issues + +- **vanillafixes launcher**: Incompatible with WeirdUtils DLL injection. Users + should load the DLL via WoW.exe + `dlls.txt` or another loader instead. + +## Checklist + +- [ ] Remote clone tags synced (`cd remote/WeirdUtils && git fetch --tags`) +- [ ] Module versions bumped in `build.zig` for changed modules +- [ ] Check `RELEASE_NOTES.md` for unreleased changes — move into release notes +- [ ] Built with `ReleaseSmall` (both default and `all-variants`) +- [ ] `README.md` has a section for any new module +- [ ] `include/weirdutils_api.h` lists all module DLL names +- [ ] Release created and DLLs uploaded via `tea` diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..70a4c8e --- /dev/null +++ b/TODO.md @@ -0,0 +1,15 @@ +- [x] Setup Atelier #atelier + + Atelier helps you manage AI coding tasks, plans, and TODOs in a visual Kanban board. + + **Getting Started:** + - Click **Setup** to configure Atelier with recommended defaults + - Or click **Customize** to choose your own settings + - Drag items between columns to update their status + - Click an item to view and edit its content + [Full documentation](https://atelier.dev) + [Setup](vscode://Atelier.atelier/customize?agent=claude\&defaults=true) [Customize](vscode://Atelier.atelier/customize?agent=claude) +- [ ] add scaling to minimapicons +- [ ] Investigate the functions behind wow.exe lua string.find and find out how to optimize them as they seem to be extremely expensive for the work they do, at least when the game is ran via wine +- [ ] allow dead player-pets to be selectable in clikthrough +- [x] adjust our basic settings for atelier to use opus for work as the larger context window is useful diff --git a/src/outline/README.md b/src/outline/README.md index 0678347..ad92193 100644 --- a/src/outline/README.md +++ b/src/outline/README.md @@ -237,8 +237,7 @@ OutlineCommand("off") -- disable outlines ## Build ```sh -cd /media/storage/projects/zig/weirdutils -zig build +zig build # from the repo root ``` Target: x86-windows-msvc (32-bit DLL), Zig 0.15. diff --git a/src/worldmarkers/MPQ_FILESYSTEM_RESEARCH.md b/src/worldmarkers/MPQ_FILESYSTEM_RESEARCH.md index e002d78..98e0989 100644 --- a/src/worldmarkers/MPQ_FILESYSTEM_RESEARCH.md +++ b/src/worldmarkers/MPQ_FILESYSTEM_RESEARCH.md @@ -410,7 +410,7 @@ The hash table uses a specific encryption algorithm (documented in wowdev.wiki a ### Data Assets Synergy -The [customassets project](/media/storage/projects/zig/customassets/) already implements the glob pattern patch (`0x82edc2: '?' → '*'`) for multi-character patch names. If combined with customassets, the temp file could use any name like `patch-weirdutils.MPQ`. +The customassets module already implements the glob pattern patch (`0x82edc2: '?' → '*'`) for multi-character patch names. If combined with customassets, the temp file could use any name like `patch-weirdutils.MPQ`. --- @@ -536,7 +536,7 @@ If we could insert entries into this hash table mapping our asset paths to disk ### Concept -The [customassets project](/media/storage/projects/zig/customassets/) takes a different approach entirely: +The customassets module takes a different approach entirely: 1. **NOP two gates** in `File_FindInArchive` (0x654b5c, 0x654b6a) that restrict `CheckFileExistence` to only "Interface/AddOns" paths 2. **Hook `CheckFileExistence`** (0x654DD0) to check a hash map of loose disk files