Skip to content

Releases: sandgraal/wowlab

wowlab v0.1.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 13:49
Immutable release. Only release title and notes can be modified.
fd5aab4

wowlab 0.1.0 runs on your own machine against your own World of Warcraft install. It is read-only by default. Every command that changes files asks first and goes through one write gate; a snapshot is taken before the change, and wowlab undo reverses it. The only network traffic is fetching public game tables, and nothing is uploaded (ADR-0031).

What is in it

The first public release. It reads an install and tells you what every file is, keeps snapshots of your setup, and puts them back.

  • Find and explain: doctor (finds the install; a first run says what wowlab will do and offers a first snapshot), install show, tree, explain (what a file is, who writes it, whether it is safe to touch, with the snapshot facts and the commands that read it), filemap gaps.
  • The explorer: wowlab ui opens a read-only view of the whole install in your browser. It runs the commands that read, and the ones that save only to wowlab's own data (snapshots, profiles, saved looks, the game-table cache, pages); never one that writes game files, never a command that takes --yes. It listens only on this machine behind a token.
  • Snapshots and undo: snap create, snap list, snap show, snap diff, snap restore, snap verify, snap gc, undo.
  • Settings, binds, macros, addons: cvar, binds, binds coach (from your own combat log: spells cast often on awkward keys, cast with no bind, and binds never used; read-only), macros list and macros check, addons, sv list, sv dump, sv merge, addon install lab (the lab-addon, which records your spellbook, action bars and bindings on logout).
  • Profiles and looks: profile save, apply, list, show, delete; looks import-char, options, races, compare, page.
  • Characters and game data: char list, char show, db2 builds, db2 fetch, db2 head, log tail.
  • For bug reports: doctor --redact prints output with no character, realm, account folder, BattleTag or home path in it; names it cannot find on its own, such as your guild's, go in --redact-name.

Platforms. macOS is tested by hand on the owner's install. Windows and Linux are untested: CI runs the test suite on both, but nobody has yet run the first-run flow on a real Windows install, and there is no native Linux client. See the README's platform table before relying on either.

--json. Every read command has a --json form backed by a Pydantic model named in its --help (DoctorReport, ExplainReport, TreeReport, SnapListReport, RestoreReport, UndoReport, CVarListReport, CVarGetReport, BindsReport, BindsCoachReport, MacrosReport, MacrosCheckReport, AddonsReport, AddonInstallReport, AddonRemoveReport, SvListReport, SvDumpReport, SvMergeReport, DiffReport, ProfileReport, ProfileListReport, ProfileApplyReport, ProfileDeleteReport, LookReport, LooksOptionsReport, LooksRacesReport, LooksCompareReport, LooksImportReport, LooksPageReport, CharListReport, CharShowReport, BuildsReport, FetchReport, HeadReport, LogTailReport (LogTailLine per line with --follow), InstallTreeReport, LooksListReport, and the GapReport, Install, Manifest (snap create and snap show), VerifyReport and GcReport models, which their help names as gaps.GapReport, install.Install, snapshot.Manifest, snapshot.VerifyReport and snapshot.GcReport). The generated command reference on the wiki lists each one.

Install

With uv installed:

uv tool install --python 3.12 https://github.com/sandgraal/wowlab/releases/download/v0.1.0/wowlab_core-0.1.0-py3-none-any.whl

Then run wowlab --version and wowlab doctor --offline.

Check the download

The wheel, the sdist and SHA256SUMS are attached below. Download them into one folder and run sha256sum -c SHA256SUMS (on macOS, shasum -a 256 -c SHA256SUMS); each file has to print OK. On Windows, run Get-FileHash -Algorithm SHA256 <file> in PowerShell for each file and compare the hash with its line in SHA256SUMS (the case of the letters does not matter).

Changes to --json output

Scripts that read wowlab … --json depend on the models behind it. A release that changes a model's shape lists here each model, what changed, and what a script reading it has to do (ADR-0031).

None listed.

What's Changed

  • feat(ui): the explorer view, first stage: tree, badges, detail (M13-25) by @sandgraal in #206
  • fix(explain): the leftovers from M13-23's final review (M13-32) by @sandgraal in #215
  • docs(ideas): crew-book covers good and bad players met by @sandgraal in #218
  • docs(backlog): file M13-33, tree --explain and placeholders by @sandgraal in #219
  • docs(backlog): v0.1 ships with Windows untested; M13-02's human run deferred by @sandgraal in #213
  • docs(m13): record the v0.1.0rc1 release dry run (M13-03) by @sandgraal in #216
  • docs(handoffs): the M13-05 schema-3 capture runbook by @sandgraal in #217
  • docs(backlog): file M13-34 (scrub .build.info geoip); release-day duties on M13-11 by @sandgraal in #223
  • docs(handoffs): record the macOS first run on a real install by @sandgraal in #222
  • fix(capture): scrub the geoip and account countries in .build.info (M13-34) by @sandgraal in #224
  • test(addon): the schema-3 capture; the barber record after Accept (M13-05) (M11-29) by @sandgraal in #221
  • docs(readme): the player-facing first screen (M13-10) by @sandgraal in #220
  • docs(backlog): M13-31 also covers the flaky M10-04 memory probe by @sandgraal in #225
  • fix(tree): judge paths under a non-link reparse point as explain does (M13-33) by @sandgraal in #228
  • feat(cli): wowlab macros check (M13-06) by @sandgraal in #227
  • test(ui): graders for the explorer's second stage (M13-27T) by @sandgraal in #226
  • docs(backlog): tick merged tickets; M13-27 names its Python changes by @sandgraal in #229
  • docs(backlog): file M13-36 (Windows job red on main); M13-07 owner runbook by @sandgraal in #230
  • harness: loosen six guardrails (owner decision 2026-10-17) by @sandgraal in #232
  • test(windows): four M13-22/M13-23 tests no longer assume a POSIX host (M13-36) by @sandgraal in #233
  • docs(backlog): tick M13-36; file M13-37 to M13-41; LAB_FORMATS §8 amendment for M13-08; M13-15 acceptance by @sandgraal in #243
  • test(windows): long-path graders for M13-15, with a long-paths-off step in windows.yml (M13-15T) by @sandgraal in #234
  • ci(wiki-daily): post-model gates run in their own job on a fresh runner (M13-19) by @sandgraal in #236
  • feat(ui): explorer second stage: whole install, gaps, snapshot facts, hints, previews (M13-27) by @sandgraal in #237
  • test(luadata): child memory probes read VmHWM on Linux and keep their input alive (M13-20T) by @sandgraal in #238
  • feat(filemap): executables under an addon folder are Edit "no" (M13-28) by @sandgraal in #231
  • fix(tree): a non-junction link is listed as a link and never walked (M13-35) by @sandgraal in #235
  • fix(explain): a path that does not exist is not a folder (M13-29) by @sandgraal in #242
  • fix(snap): a whole restore of a --screenshots snapshot restores the rest and reports the screenshots (M13-30) by @sandgraal in #239
  • ci(wiki-daily): the model's job restores and saves no cache (M13-39) by @sandgraal in #244
  • fix(check_wiki): a crash exits 2, or 3 once personal data was found; privacy runs first (M13-40) by @sandgraal in #245
  • feat(cli): wowlab binds coach (M13-08) by @sandgraal in #241
  • fix(install): discovery takes no link, by the one link test (M13-37) by @sandgraal in #248
  • fix(windows): extended-length paths where the graders need them; a partial snapshot is never written (M13-15) by @sandgraal in #247
  • harness: Windows on lab/ PRs, bot-finding reply, narrow re-checks, rebase comparison, off-branch findings by @sandgraal in #250
  • release: v0.1.0 (M13-11) by @sandgraal in #246

Full Changelog: v0.1.0rc1...v0.1.0

wowlab v0.1.0rc1

wowlab v0.1.0rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Oct 19:02
Immutable release. Only release title and notes can be modified.
4b43bab

wowlab 0.1.0rc1 runs on your own machine against your own World of Warcraft install. It is read-only by default. Every command that changes files asks first and goes through one write gate; a snapshot is taken before the change, and wowlab undo reverses it. The only network traffic is fetching public game tables, and nothing is uploaded (ADR-0031).

Install

With uv installed:

uv tool install --python 3.12 https://github.com/sandgraal/wowlab/releases/download/v0.1.0rc1/wowlab_core-0.1.0rc1-py3-none-any.whl

Then run wowlab --version and wowlab doctor --offline.

Check the download

The wheel, the sdist and SHA256SUMS are attached below. Download them into one folder and run sha256sum -c SHA256SUMS (on macOS, shasum -a 256 -c SHA256SUMS); each file has to print OK. On Windows, run Get-FileHash -Algorithm SHA256 <file> in PowerShell for each file and compare the hash with its line in SHA256SUMS (the case of the letters does not matter).

Changes to --json output

Scripts that read wowlab … --json depend on the models behind it. A release that changes a model's shape lists here each model, what changed, and what a script reading it has to do (ADR-0031).

None listed.

What's Changed

  • chore(harness): agent-team harness and M0 scaffold (M0-02, M0-06) by @sandgraal in #1
  • chore(harness): tracked git hooks resolve per worktree (M0-02) by @sandgraal in #3
  • docs(decisions): ADR-0015 vault choices from /simc, ADR-0016 launch posture (owner to merge) by @sandgraal in #2
  • docs(setup): ~/.local/bin on PATH for interactive shells (M0-06) by @sandgraal in #4
  • feat(stack): docker compose local stack with pinned SimC worker (M0-03) by @sandgraal in #5
  • docs(landscape): competitive review of the owner's 28 WoW bookmarks (M0-06) by @sandgraal in #7
  • chore(harness): give the automated review the tools its prompt requires by @sandgraal in #8
  • fix(ci): pin the Claude review model and preflight API access by @sandgraal in #12
  • fix(ci): send the workspace header the Claude API key requires by @sandgraal in #13
  • chore(deps): Bump the actions group with 2 updates by @dependabot[bot] in #9
  • chore(deps-dev): Bump ruff from 0.16.6 to 0.16.7 in the python-dev-tooling group by @dependabot[bot] in #10
  • docs(landscape): record GSE tooling as a separate sibling project (M0-06) by @sandgraal in #11
  • docs(decisions): SimC pinned by commit SHA, not tag; tick M0-07 (M0-03, M0-07) by @sandgraal in #6
  • chore(repo): retire Bronze; wowlab becomes the Lab (M10-01) by @sandgraal in #14
  • feat(snapshot): content-addressed snapshot store (M10-10) by @sandgraal in #18
  • chore(harness): gitleaks scans inside compressed fixtures (M10-08) by @sandgraal in #20
  • fix(snapshot): entry paths stay platform-neutral; create() raises typed errors only (M10-10) by @sandgraal in #24
  • chore(deps): Bump anthropics/claude-code-action from 1.0.222 to 1.0.230 in the actions group by @dependabot[bot] in #15
  • feat(gamedata): build-keyed game table client with recorded wago fixtures (M10-08) by @sandgraal in #19
  • chore(harness): shepherd never changes behaviour after the review by @sandgraal in #23
  • chore(deps-dev): Bump ruff from 0.16.7 to 0.16.8 in the python-dev-tooling group across 1 directory by @dependabot[bot] in #16
  • feat(process): client process detection (M10-09) by @sandgraal in #17
  • feat(scripts): fixture capture and scrub tool (M10-02) by @sandgraal in #21
  • docs(plan): amend §6.7 process detection after the M10-09 security review (M10-09) by @sandgraal in #22
  • chore(harness): fixtures get a 16 MB large-file ceiling; ruff hook rev follows the lock by @sandgraal in #26
  • docs(handoffs): M10-03 runbook and §8 amendments for the reviewed capture tool (M10-02) by @sandgraal in #25
  • chore(harness): reviewer definitions follow the §6.7 amendment by @sandgraal in #28
  • docs(handoffs): runbook corrections from the domain review of #25 (M10-02) by @sandgraal in #30
  • chore(deps): Bump platformdirs from 4.11.8 to 4.11.10 in the python-runtime group by @dependabot[bot] in #27
  • docs(backlog): tick M10-02 M10-08 M10-09 M10-10; M10-11 and M10-14 amendments by @sandgraal in #31
  • ci(review): skip cleanly on exhausted credit or rate limit; large-file hook checks grown files by @sandgraal in #32
  • chore(harness): pin Opus-class work to claude-opus-5-5 by @sandgraal in #34
  • chore(harness): conductor on the 1M window, subagents on standard by @sandgraal in #36
  • fix(scripts): refuse foreign names behind region and Default words; wider partner and macro notes by @sandgraal in #33
  • test(lab): Forever beta install and config fixtures, part 1 by @sandgraal in #35
  • docs(backlog): exact wording for the M10-11 and M10-14 amendments by @sandgraal in #37
  • test(guard): write gate graders (M10-11T) by @sandgraal in #29
  • feat(wtfconfig): lossless Config.wtf, bindings and macros parsers (M10-07) by @sandgraal in #39
  • docs(backlog): tick M10-07 and M10-11T; extra_names wording by @sandgraal in #42
  • feat(core): install discovery from .build.info and .flavor.info (M10-05) by @sandgraal in #40
  • test(core): write-ahead journal and permission graders (M10-11T) by @sandgraal in #41
  • fix(core): snapshot walk treats junctions as links (M10-10) by @sandgraal in #44
  • feat(core): layout walker, file map and TOC parser (M10-06) by @sandgraal in #45
  • docs(backlog): tick M10-05 and M10-06; deferred review wording by @sandgraal in #46
  • feat(core): write gate and restore (M10-11) by @sandgraal in #43
  • docs(backlog): tick M10-11; record its follow-ups by @sandgraal in #47
  • fix(scripts): pair Forever twins by first name; refuse inside addon files and edit-mode caches by @sandgraal in #38
  • test(core): pin guard behaviours verified in the M10-11 reviews (M10-11T) by @sandgraal in #48
  • docs(handoffs): runbook for the scrub-tool follow-up (M10-03) by @sandgraal in #50
  • docs(plan): guard lock, temp cleanup and changed-file refusal (M10-16) by @sandgraal in #49
  • test(lab): Forever beta SavedVariables, AddOns.txt and a second TOC, part 2 (M10-03) by @sandgraal in #51
  • docs(plan): guard amendment clarifications from the M10-16T graders by @sandgraal in #53
  • fix(scripts): combat-log game text refuses identity; brace depth and positional arrays (M10-02) by @sandgraal in #52
  • docs(plan): luadata strings are bytes; Lua 5.1 escapes; to_python rules (M10-04) by @sandgraal in #55
  • test(core): luadata parser graders (M10-04T) by @sandgraal in #54
  • docs: owner decisions (serializer style, large-file gap); interface 16001 and Lua 5.1 confirmed by @sandgraal in #57
  • test(core): guard lock, temp cleanup and changed-file graders (M10-16T) by @sandgraal in #56
  • docs(plan): Windows lock past EOF; store_lock and journal rules from the M10-16 security review by @sandgraal in #60
  • feat(core): guard lock, temp cleanup and changed-file refusal (M10-16) by @sandgraal in #59
  • docs(backlog): tick M10-04T, M10-16T and M10-16; M10-16 follow-ups by @sandgraal in #61
  • test(core): pin M10-16 behaviours verified in its reviews (M10-16T) by @sandgraal in #62
  • feat(scripts): pseudonymise other players in a combat log on request (M10-02) by @sandgraal in #63
  • feat(sc...
Read more