# BlueprintBazaar

## [v1.0.0](https://github.com/Adam5288/BlueprintBazaar/tree/v1.0.0) (2026-08-13)
[Full Changelog](https://github.com/Adam5288/BlueprintBazaar/commits/v1.0.0) [Previous Releases](https://github.com/Adam5288/BlueprintBazaar/releases)

- CraftyLuna's preview images for both builds - every shipped build now has a picture  
- bb-0003: use the author's own screenshot of the statue  
- Fifth code in: Archangel Statue (This-Pride-6854, KR) with preview from their reddit post  
- Point the submit CTA at the #blueprints Discord (owner-approved invite)  
- Scrying Chamber preview image (Derenly)  
- Submit CTA names the Discord flow so the link never looks broken  
- Add 'your build here?' call to action in the rail with a copyable address (ns.SUBMIT\_URL)  
- Detail pane respects the window height: item list stops above the credit block and the pane clips its own children  
- Thumbnails in 16:9 to match real screenshots; cards and hero sized to suit  
- Show the builds: preview image on every card and a hero image in the detail pane, both flowing so missing images collapse cleanly  
- bb-0004: correct treehouse code (I not l - transcribed from a screenshot, never again)  
- Empty manifest means unknown, not 100% buildable; hide zero budgets on cards  
- Fourth code in: Ellenor's storybook treehouse  
- Minimap button: round icon filling the button, drop the Blizzard border ring  
- Never ship internal curation notes; skip pending entries instead of blocking; readable minimap icon; first three real builds in the library  
- Detail pane: flow items below the status text instead of fixed offsets (import warning was overlapping the list); drop placeholder meta values  
- Add logo texture + hand-rolled minimap button (drag to move, right-click to hide, /bb minimap)  
- build\_library: accept live code format (length range, not fixed 28)  
- First live codes in (Derenly + CraftyLuna x2); fix chat linkify - live codes are 24 chars unpadded, not 28 with ==  
- Rewrite launch texts around the gallery angle: curation and artist credit lead, score supports  
- Strategy shift: Vamoose shipped blueprint inspection first - our moat is the curated library, launch when it has builds  
- CraftyLuna: title for the craft store confirmed, both builds set to room type  
- Fix unescaped quotes in bb-0002 status note  
- bb-0002: Derenly's YouTube playlist link confirmed  
- Version 1.0.0: TOC bump and launch changelog  
- Fix blank grid when filtering while scrolled deep: clamp scroll to content, reset to top on filter/sort/search  
- Import failure message covers dead/invalid codes, not just wrong location  
- Empty the shipped library: PTR spike codes die at the wipe, real entries land at launch  
- bb-0007 credit name confirmed; add reusable 'how to export your code' snippet for all builders  
- Release pre-flight guard + honest empty-library state  
    Two launch-day landmines, both invisible from the tag command:  
    1. Data/Library.lua still holds the three PTR spike entries (Griimi's  
       house/interior/exterior). PTR codes do not work on live, so a v1.0.0  
       tagged without regenerating the library would ship three entries with  
       dead Import buttons on day one. The release workflow now fails the tag  
       if the shipped library contains bb-test- ids or PENDING share codes.  
       Regenerating from Tools/library/*.json clears them naturally.  
    2. With an empty library, Browse said "No results - try clearing filters"  
       when there were no filters to clear - reads as broken to a first-time  
       user. An empty library now says the library fills up during launch week  
       and points at /bb code <code>, which works with zero entries.  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Build guard: refuse PENDING placeholder codes, validate real code shape  
    Launch-day pre-flight found the pipeline would happily bake an entry whose  
    share code was still "PENDING-BB-000X-LAUNCH-CODE==". Codes arrive in a rush  
    on patch day; one builder who doesn't answer in time would have shipped a  
    library entry with a dead Import button, silently.  
    - Building now FAILS on any PENDING code. Pass --allow-pending while the  
      library is still being filled (the normal working state until the 11th).  
    - Real codes are checked against the spike-verified shape: 28 chars, base64  
      charset. A truncated or mangled paste is caught here instead of in a  
      player's Import button.  
    Tested: PENDING blocked / --allow-pending passes / real 28-char code passes /  
    18-char paste rejected.  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Bug fixed on PTR (Kaivax): soften import warning behind BUG\_PARTIAL\_WIPE flag, update launch texts + roadmap  
- Workflow: map CF\_API\_KEY from the CORGEFORGE\_API\_TOKEN secret  
- Launch collage: title cell + three flagship builds with artist credits  
- Launch texts: release notes, day-1 + day-2 posts for both channels, builder thank-yous  
- TOC: CurseForge project ID (1631579)  
- Type-aware import warning for the 12.1 partial-blueprint wipe bug (our library is mostly partials - high exposure)  
- Import safety: two-click confirm + backup reminder (12.1 lost-build bug risk); ROADMAP with launch risk assessment  
- bb-0005: CraftyLuna codes arrive evening of the 11th at earliest  
- Outreach: Cottage\_Wizard politely declined (keeps builds private); note his POV video  
- Outreach: seventh yes - Oojni's Ring (Dord\_Lunsany, WWE ring)  
- bb-0005 + bb-0006: CraftyLuna credit name and YouTube link confirmed  
- Outreach: Crafty\_Luna says yes with two contest-winning builds (bb-0005, bb-0006)  
- Guard: feature-detection against API drift + launch plan with decision tree (v0.3.2)  
- Outreach: 4 confirmed builds with complete metadata, 3 new candidates contacted  
- bb-0003: KR region, ships in v1.0.1 (patch lands 1-2 days later there)  
- bb-0003 + bb-0004 metadata complete (credit names + links confirmed)  
- Outreach: fourth yes - Storybook Treehouse (Ellye), first Alliance build, inbound volunteer  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- TOC: Wago project ID (bGoyEk60) - Wago draft live with hidden alpha stub  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- bb-0001 metadata complete: name/link/faction confirmed, only launch code missing  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- bb-0001: showcase link + Horde faction confirmed (477-upvote AT-AT post)  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Outreach: third yes - Archangel Statue (This-Pride-6854), bb-0003 entry  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Search matches manifest item names (judge/provenance use case, per Fraerie)  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Release pipeline: BigWigs packager workflow + .pkgmeta + Wago listing prep  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- bb-0002: credit name confirmed (Derenly), YouTube link requested  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- M4: launch-library metadata pipeline started - first 2 confirmed builds as  
    pending JSON entries (code/manifest placeholders until live export);  
    build\_library.py now BOM-tolerant  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Outreach: second yes - Derenly/The Arkadian scrying chamber confirmed  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Outreach log: day 2 wrap - credit edit live, AI-thread defused, all loops waiting on replies  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Artist credit everywhere: credit block in detail pane, credit in chat shares,  
    credit in import celebration (v0.3.1)  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Outreach log: Fraerie advisor dialogue opened, Bas DM workaround  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Outreach: lock in approved casual reply voice  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Outreach: first volunteer (AT-AT exterior), faction-tag feedback, reply-style note  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Outreach log: r/WoWHousing announcement live with mod-approved flair  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Outreach log: r/WoWHousing modmail sent, candidates noted  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Outreach log: both #blueprints posts live, Media rank granted  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Outreach log: #blueprints channel created for us, announcement live  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Outreach log: joined HoAD Discord, mod permission requested, first 2 candidates  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Marketing: M4 outreach plan, channel research, DM + announcement templates  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Marketing: CurseForge listing text + logo  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Fix name-swapped house/interior seed codes, auto live-score fetch, final screenshots  
    - Library: AVoD11e is the full layout (incl. Orc House Small shell),  
      AVoBS6Qy the interior - confirmed by live TypeOf + collection payloads  
    - CardGrid: when baked ownership is unknown, request the authoritative  
      server score once per entry; chip upgrades from ? automatically  
    - Marketing: 6 final listing screenshots from clean PTR session  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Filters: restore persisted state into controls after reload  
    Saved filters kept applying to the grid while all buttons rendered  
    inactive, making the library look empty after /reload.  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Fix blueprint type enum (1=interior, 3=house, 4=exterior) + grid leak on My Blueprints tab  
    Enum verified against live collection payloads; RefreshGrid now no-ops  
    while the My Blueprints tab is active so the browse empty-state text  
    cannot bleed through.  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- DetailPane: hide budget line when unknown (shared codes)  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- Add dev screenshots from first M2/M3 PTR session  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- M3: chat links, ad-hoc code inspect, My Blueprints polish (v0.3.0)  
    - ChatLinks: auto-linkify raw share codes in chat (local validation),  
      Alt-click any [Housing Blueprint] link -> inspect in addon  
    - /bb code <sharecode>: live fetch + detail view for any code  
    - My Blueprints rows clickable; pre-12.1 API-missing banner  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- M2: Library & Browser - full UI, spike-bound core, seeded test data (v0.2.0)  
    - BlueprintAPI: per-code correlation, real payload normalize, one-click Import  
    - Score: FromLive (server numMissing) + Compute fallback with unknown state  
    - Catalog: entry-info enrichment with defensive owned-count probing  
    - UI: window/tabs, virtualized card grid, filter rail, detail pane w/ import+  
      chat link+verify+copy box, My Blueprints collection tab  
    - Data: 3 real PTR test blueprints; /bb mock 500-entry perf harness  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- docs(spike): M0 COMPLETE - all six questions answered with real codes  
    Run 2 with real share codes: contents payload includes per-entry numMissing  
    computed server-side (Can-I-Build-It core input handed to us), budgets and  
    requirement flags. One-click import CONFIRMED (IMPORT\_SUCCESS from insecure  
    call). 28-char base64 codes, local validation. Hyperlink type  
    housingblueprint. Export via ExportBlueprint(type, name) with code in  
    EXPORT\_SUCCESS. Blizzard UI path + export permissions documented. M2 unblocked.  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- docs(spike): M0 results 90% complete - full API surface captured  
    All six housing namespaces dumped (real function names differ from spec  
    assumptions). Key findings: contents-failure event echoes the share code  
    (per-code correlation possible); IsShareCodeValid is local (~0.06ms);  
    ImportBlueprint is NOT hard-protected (server-side error enum, no  
    ADDON\_ACTION\_FORBIDDEN); catalog exposes vendor/zone/cost in UI; ownership  
    via GetDecorTotalOwnedCount; browse via CreateCatalogSearcher. Remaining:  
    re-run code-dependent calls with real share codes (placeholders were used).  
    Adds /bbspike link2 <code>. Raw run data archived in Tools/spike-data.  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- docs(spike): add room-level export (Q1c) + Blizzard import-UI flow note (Q5b) to run protocol  
- fix(spike): detect protected calls via ADDON\_ACTION\_FORBIDDEN/BLOCKED + ctx snapshot  
    Architect review: pcall alone cannot answer Q5 - protected functions can  
    silently no-op and fire ADDON\_ACTION\_FORBIDDEN/BLOCKED instead. BBSpike now  
    registers both and logs their payloads as the authoritative Q5 answer.  
    Adds /bbspike ctx (location-dependent availability snapshot) and includes  
    it in the all battery for the two-context run protocol.  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
- feat: M0 spike addon + M1 core scaffold  
    BBSpike answers all 6 spec questions (namespace dumps, event capture,  
    protection tests) into SavedVariables. Core: event dispatcher, DB schema  
    with migrations, async BlueprintAPI request manager (queue/timeout/backoff),  
    pure unit-tested Score engine, spike-gated Catalog seam. Tools: JSON->Lua  
    library generator with tag vocabulary + TGA pipeline, plain-Lua test runner.  
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
