New in Forever
New in Forever is two lists. Release notes are what Market shipped. The price list is items whose published AHledger history starts latest. A late start is the record in this bundle, not proof the item was added to Forever that day.
Release notes
Market 0.18.0 — the whole market
The price pack now fills in a going price across the Auction House. Trading's chart draws that history in pencil beside the listings you saw. A search opens the item, and the watchlist groups the professions you know. Your saved data carries over unchanged.
What's new
- The whole-market table. The free price pack carries AHledger's table for the market, so Market can show a median for an item you have not scanned. Your own scan from the last hour still wins. After that, the median is marked "† augmented by AHledger". The same prices are on the site. You do not need AHledger's addon.
- A combined chart. Trading opens on Combined. AHledger's daily lows are pencil. A listing you saw in the last hour is ink, and it wins that part of the chart. The legend says "Prices from AHledger" and how old each source is. Options can show Your scans or AHledger on their own.
- Search opens the item. Press Enter in the search box, type /market silk cloth, or press Market on the Scan bar while the Auction House search box has text. One match opens that item on Trading. Several matches are a short pick list. No match reads No item called "…". Recent items list under the search box while it is empty and focused.
- Profession lists. Mining, Skinning, Tailoring, Herbalism and Enchanting appear when you know that profession, then My list. Lists turns a profession on or off. Show and Hide fold a group. My list still holds the 20 items you pin yourself. A profession list does not replace those pins.
- Market Sync. A small free program on the site puts the price pack beside Market and, on Windows and Mac, refreshes it every 2 hours. It only downloads. Type /reload to read a new pack.
Upgrading
Close the game, replace the market folder in Interface/AddOns, and log in. Saves stay market.saved-variables.v12, so rolling back to 0.17.0 is safe. 0.17.0, 0.16.1, 0.16.0 and 0.15.0 can still open a 0.18.0 save. Profession list choices stay in the save. 0.17.0 leaves them alone, and they come back when you return to 0.18.0. Recent searches are kept only for the session.
Prices from AHledger are credited wherever Market shows them.
Market 0.17.0 — the ledger book
Market now looks like part of the game: a leather-bound ledger with parchment pages. This release fixes everything from the 0.16.1 playtest (issues #86 to #90). Your saved data carries over unchanged.
What's new
- The ledger look. Trading and the Ledger open as a two-page book. Ink shows what Market saw itself. Pencil shows anything carried forward, estimated or unknown. Type /market look panels to switch back to the dark panels, or /market look ledger to return.
- Gold is now the Ledger. Item names fill in instead of "Item 755". Unexplained gold changes are grouped, and changes made while you were logged out are shown in their own row.
- A new Overview. One spread covers this session, the last 7 days of gold, your biggest market movers and your professions.
- One price per item. Market shows a single going price. Your own fresh scan wins, and AHledger's median fills the gap when you haven't scanned, marked "† augmented by AHledger".
- Honest charts. Each real auction listing you saw is a dot. Where Market only carried an old price forward, the line is drawn in pencil and marked "last seen". There is one row of chart controls, and every control has a tooltip.
Fixes from the playtest
- The Scan bar no longer covers the minimap. It stays hidden out in the world and appears above the Auction House, where scanning works.
- The window opens at about two-thirds of your screen height and remembers its size and position.
- The search box's "Search" hint disappears while you type.
- Empty panels explain themselves in plain words instead of showing "—".
Upgrading
Close the game, replace the market folder in Interface/AddOns, and log in. Saves stay market.saved-variables.v12, so 0.16.1, 0.16.0 and 0.15.0 can still open a 0.17.0 save if you need to roll back.
Prices from AHledger are credited wherever Market shows them.
Market 0.16.1 collection fixes and the ask tape
2026-10-10
Run 2026-10-10-market-collection. Built from Shane's first 0.16.0 play-test save (2026-10-10 11:53 local, 4,055,015 bytes, v12) and the Grok bot's note on it. Saves stay market.saved-variables.v12: 0.16.0 and 0.15.0 open a 0.16.1 save (ADR 0039 D1, tools/market/tests/test_two_way.py, now with a sealed scan record, the ask tape at budget and the progress ring at budget).
Fixes
- Trainer catalog on a first visit (Catalog.lua, Professions.lua). A profession the character has not learned is cataloged: the skill requirement's name, then the visit's line for rows with no requirement, then a census of all twelve lines (C_TradeSkillUI.GetTradeSkillLineInfoByID, C_SkillInfo.GetSkillLineInfoByID), then the enUS names (M.PROFESSION_LINES). GetTrainerServiceSkillLine, which Forever does not have, is no longer called.
- Skinning is a gather (Capture.lua). A loot window opened by the character's own gathering cast (by recipe or by spell name through M.professionLine; "Herb Gathering" aliased to Herbalism) records a gather whatever the source is. One window has one verdict, bound at LOOT_OPENED; a re-fired open keeps it; an unclosed window's verdict expires after 30 s.
- Real-byte accounting (ADR 0042). M.bytes counts the bytes the client writes. The 0.16.0 estimator was 3.4x pessimistic: Shane's event log held 1.19 MB when it reported its 4 MiB cap, and 94% of all events ever written had been evicted. Caps are now real bytes (events 4 MiB, scan record 1 MiB, prices 2 MiB, history 512 KB, depth 1 MiB, trades 1 MiB, stock events 576 KB, ledger 128 KB); row caps are unchanged. A scan record's saved budgetBytes keeps the 0.15.0 estimator so that addon still accepts the record. Bridge ceilings never tighten below what 0.16.0 wrote.
New data
- Ask tape (ADR 0043, root asks). Every browse row is a line itemID,copper,qty,at,src[,level,suffix] inside 4,096-byte chunks, about 28 bytes and 1/100th of a parser field per observation, 2 MiB in all (about 75,000 observations against 1,101 browse_quote events before). Eviction is oldest-first across markets; a ninth market key sheds stale keys instead of refusing. browse_quote events are no longer written. Bridge table ask_observations, command asks.
- Progress markers (ADR 0044, root progress). Login, level-up, quest turn-in (quest ID, XP, copper) and zone change rows in a 2,000-row ring under the collection budget. Bridge table progress, command progress.
Checks
bash tools/verify-market on the integration head: see .scratch/orchestrate/2026-10-10-market-collection/run.md for the PASS lines, the four blind gate rounds and their fixes. Worst-case save 28,951,126 bytes and 832,998 fields against the 28 MiB and 950,000 ceilings. In-client validation remains separate: .scratch/collection/issues/01-playtest-0.16.1.md.
Market 0.16.0 weekend collection build
2026-10-10
Run 2026-10-10-market-weekend. It was built from Shane's first in-game 0.15.0 session, saved 2026-10-10 01:18 local. That save was imported and analysed offline (analyses kept in the run directory). M.VERSION and the TOC are 0.16.0. tools/package-market derives market-addon-0.16.0.zip. The landing PR records the commit, the tree and the zip SHA-256. Not client-accepted: .scratch/weekend/issues/01-playtest-0.16.0.md is the ready-for-human sitting.
The AddOns list shows Market. The addon folder and market.toc stay market, so an existing SavedVariables/market.lua keeps loading. CurseForge project 1736848, slug market. The default zip is the market folder. market-provider-snapshot is a separate staged companion (tools/package-market --companion), not this project.
Saves: two-way (ADR 0039)
Saves stay market.saved-variables.v12. 0.16.0 adds only new top-level roots and optional keys on money and loot event data. The roots are diagnostics, telemetry, catalog, skills, skillLog, crafts, gathered, gathers, ui, repairs and collectMarkets. 0.15.0 opens a 0.16.0 save, collects into it and writes the roots back unchanged. The 0.15.0 bridge imports it (tools/market/tests/test_two_way.py). Rollback is the 0.15.0 addon folder; no backup is needed unless the file is damaged. The new roots share one budget of 1.5 MB and 120,000 parser fields, with string keys for every ID map. A malformed…
What changed, by capability
- Gold ledger (ADR 0038, ADR 0039 D5).
- Logout no longer reads money or bags. Forever's GetMoney() returns 0 at PLAYER_LOGOUT, which booked the whole balance as an expense.
- A one-time historical repair reverses a logout-zero row only on positive evidence from that character's next login reading, and only the row's own money event counts. On Shane's save it repairs s65 at his next login and s64 at the alt's next login. It skips s60 and s63, whose evidence was trimmed.
- Exact attribution now covers more cases: whole-stack and right-click merchant buys, buybacks with their stack count, and coin loot from the client's own money line. Only the copper amount is parsed; no text is stored. Equal receipts stay separate.
- The unpriced loot-window fallback lasts its full 3 s through the 1 s hold.
- An unmatched delta records why on its money event: the near candidate (near*) or the open frames (openFrames).
- Loot events gain srcType/srcID (creature or object entry ID only) and the last player spell.
- Money events behind sales carry professionID/provenance.
- Gold view.
- "Unattributed" is gone. Rows read "Unexplained in/out", each with a plain reason: No source, Two sources fit, or Amount differs.
- Up to 20 rows show newest first, with a near line such as "Purchase? Quoted …, charged …" that names the trade it cited.
- Logout-shaped rows read "At logout — likely not a real expense". This is display only.
- Scan (ADR 0040).
- Replicate rows are read up to 1,000 per tick under an 8 ms budget, and are priced at first read without waiting for item metadata.
- A cancelled read keeps its quotes in the scan record only, protected items first.
- A complete read (every row read) finishes saving even if the AH closes.
- Per-phase timing integers sit on the nested scan summary, and diagnostics.ahLatency counts throttle events.
- Unchanged: the 15-minute cooldown, the one guarded AH-open attempt, no new search, and no retry.
- Collection.
- A census of the 12 profession skill lines, plus a skill log.
- Extra recipe facts and difficulty bands in catalog.recipes/catalog.difficulty.
- Crafts are recorded from casts of indexed recipes only. A held craft takes one item per signal. Gathering recipes are excluded, including after a reload.
- New Catalog.lua records profession-trainer services and merchant offers. It reads only; it never sets filters and never reads NPC names.
- Profession windows are read only when the client reports Linked, Guild and NPC all == false.
- Diagnostics: API failures by name, the capability matrix per build, load cost and capacity peaks.
- Telemetry: player actions that changed the Terminal, and dwell time per view. Local only.
- Store.
- Asks keep at most 3,000 rows / 2 MiB inside the 6,000 / 4 MiB event caps, so a scan never evicts play.
- Repeated browse quotes are skipped.
- The scan ring drops empty records first.
- A workspace carries across a region-ID change.
- UI.
- Minimap button (ADR 0041): an unnamed Button on Minimap with a saved angle. Left click opens Market; right click toggles the Workflow bar; /market minimap hides or shows it.
- Chart: fits sparse data, uses one native series, steps across carries, shows markers at 40 vertices or fewer, labels minutes, and no longer holds on hover.
- Plainer words in the Workflow bar, value tab, Tools and Gold.
Market 0.15.0 test prerelease
2026-10-09
This note identifies the integration of the offline TradingView line through 621d916, the native Terminal polish in e38f2fe (ADR 0036, renumbered in 1c1aba5), and the parked TradingView task docs. 565b2bf sets M.VERSION and the TOC to 0.15.0. tools/package-market derives market-addon-0.15.0.zip from the TOC. The bridge has no separate application-version constant; use the bridge from the same tree. Version text is not an install manifest. A delivery records the commit, the tree (git rev-parse HEAD HEAD^{tree}), and the zip SHA-256. This note records no installed hash.
Not installed. Not client-accepted. TV-25 and TV-27 client sittings have not been run. TradingView feature development is paused as of 2026-10-09.
What is in this tree, by capability:
- Compact Overview and Trading, the shared chart display, and a browser preview of the real addon Lua (ADRs 0027, 0028, 0036).
- Physical Positions from one frozen Book page. Average cost and holding P&L stay blank. Estimated bag P&L is a separate labeled scenario (ADR 0036).
- One manual selected cached-commodity Refresh. Market's Button callback makes one query attempt (ADR 0032). A committed snapshot is an observation, not an exclusive query receipt.
- Ticket drafts and native translators (ADR 0031). Exact variant asks sit beside item-ID aggregates (ADR 0034).
- History projection keeps the native series unless a cited native/provider pair exists (ADR 0033). Pan, zoom, price scale, and OHLC are built from observed asks. There is no invented volume.
- Offline archive planning, a rolling window schedule that does not fetch, and native rearchive of stored snapshots (ADRs 0024, 0026). Crafting research is comparison only (ADR 0035). The terminal does not show those rows.
What stays disabled: senders, automatic selected Refresh, scheduled queries, and financial actions. Watch Refresh has no enabled sender (ADR 0029). Production permission and origin verifiers are false. There is no archive service.
Saves are market.saved-variables.v11. Migration from v10 adds empty exact maps. It does not copy, relabel, or delete legacy prices (ADR 0034). Older readers refuse v11. The upgrade is one way. Close the game and back up SavedVariables/market.lua and the bridge database before upgrading. Rollback is that backup plus the older addon and bridge. Do not roll back by editing the schema marker.
Verification was bash tools/verify-market on 2026-10-09, commit 2876d4d16e46404a43d13ab1b1cf844dd66f5073, tree 98701573371b73c009264087dbbb8084693f070f. Exit 0. The log recorded: module table 38 files PASS; addon globals PASS; Lua 886 passed, 0 failed; Python Ran 322 tests OK and Ran 19 tests OK; provider UI 66 nearby native regressions passed; cross-language mail 6 fixtures, depth 9 books, lowest-ask-7d 9 cases and reserves 4 allocations, capacity 40 prices and 36 refusals; trades to positions 5 items and 23 trades; stock book 3 items at revision 7; worst-case stock 4 x 1600 items;…
Market 0.14.0 test prerelease
2026-10-09
Historical (2026-10-09); current status: docs/roadmap.md. This note is the 0.14.0 package only. Later integration is 0.15.0 (docs/release-0.15.0.md). Version text alone does not identify installed features.
This release packages the shared Overview and Trading frontend from PR #45, including the standalone host, readable chart layouts, and linked personal ledger evidence. The release version distinguishes this package from the earlier installed 0.13.1 build.
The native TOC and M.VERSION are both 0.14.0. tools/package-market derives market-addon-0.14.0.zip from the TOC. The optional Python bridge has no separate application-version constant; use the bridge from the same reviewed source tree. SavedVariables remain v10 and SQLite storage remains at its existing schema versions. This release adds no migration or installation step.
Preserve the installed 0.13.1 addon and existing saves before any separately authorized client installation. Client acceptance remains pending: the actual Auction House host, watchlist search driver, and order execution are not enabled by this release. Offline tests do not establish live client capabilities.
The previous frontend candidate package is retained outside the checkout as /tmp/market-final-package/market-addon-0.13.1.zip, SHA-256 0b3a1c27dfb84eaed9ca2526dee936cd9e37238fa6152e3089d77ae777234ef6, from source 242161228bb472d94a516b7fbcd62080fa5cb3e5. It is superseded for new delivery by the 0.14.0 package; its version alone does not identify the installed 0.13.1 build.
First seen in the published history
† Prices from AHledger. No mark: an ask seen in a Market scan in the last hour.
Markets with no prices yet