067
BazBags
067 (2026-05-02)
Full Changelog Previous Releases
- Categories: inline rule editor in place of the two-step Add Match Rule popup. Each existing match rule now renders as one full-width row with everything editable in place: a Type dropdown on the left, an Op dropdown (or static "is" label for single-op types like class/subclass/equipSlot) in the middle, the Value control (input box for name/ilvl, dropdown for class/subclass/equipSlot/quality) filling the rest of the row, and a Remove button right-aligned. Picking any value rebuilds the tag and writes back through Categories.UpdateTag, then refreshes the page so the row re-renders with the new shape - changing Type from "Item Class" to "Item Level" swaps the class-name dropdown for a numeric input automatically. Add Match Rule no longer opens a popup; it appends a default-shaped Name-contains tag and refreshes, so the new row appears in the list ready to edit. Implementation lives in a custom ruleRow widget factory registered against BazCore via O.widgetFactories.ruleRow + O.RegisterFullWidthBlockType("ruleRow"), so the LayoutEngine treats it as a block-level item that gets its own full-width row in the panel. The previous OpenAddTagPopup / OpenAddTagPopup_PickValue / ToValuesMap / SubclassMap / ParseSubclassKey / OPS_MAP helpers are all dead code now and got deleted (~150 lines). New Categories APIs: UpdateTag(key, index, tag) for inline edits, MakeDefaultTag(tagType) for the type-switch reset and the Add button's default tag. Subclass values still store as {classID, subclassID} pairs internally; the UI encodes them as composite "class:subclass" strings only when needed for the menu radio's value field, decodes back on save, bump to 067