Scrub remaining absolute machine paths from module docs

This commit is contained in:
MarcelineVQ
2026-08-01 18:04:54 -07:00
parent 69051fd486
commit 727a4cc229
5 changed files with 253 additions and 4 deletions
+38
View File
@@ -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.
+197
View File
@@ -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/<module>/`
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/<name>.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 <your-token>" \
-H "Content-Type: application/json" \
-d '{"hide_archive_links":true}' \
"https://codeberg.org/api/v1/repos/MarcelineVQ/WeirdUtils/releases/<release-id>"
```
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`
+15
View File
@@ -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
+1 -2
View File
@@ -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.
+2 -2
View File
@@ -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