St. James, thank you for the list, and sorry it took a fortnight. I went through all of it. Here is what is in 1.8.0, what I found when I looked, and what is still open.
Fixed in 1.8.0
Saved searches could not be deleted. This one is worth reading carefully, because the fix is on your side and it takes a minute. The bug was real: our template built the delete link from the URL path instead of the route name, so the link lost the search id and the page 404'd. I fixed it in 1.2.4. But XenForo never replaces a template a board has customised, and you customise a lot, so your copy of xs_classifieds_saved_searches is still the one from before the fix. Appearance > Templates, filter on Outdated, and merge or revert that template; deletion works again immediately. 1.8.0 also adds a route alias so boards in this situation repair themselves without touching anything, but reverting the template is the clean fix.
The sale price privacy box. You were right about the layout: on a phone it took the whole row and pushed the Counter button out of view. It now sits on a line of its own. And there is a new option, "Let a seller keep the sale price private", which removes the box from all four places at once. A forged request cannot set the flag either when the option is off.
Reviews from a buyer without marketplace access. It was the permission, not the free feedback setting. Worse, nothing checked it before showing the form, so your member wrote a review and lost it on the error. The refusal now comes before the form, the invitation is no longer sent to someone who cannot accept it, and the button is hidden from them.
The moderator log. Not random: the type change was never logged at all. The only entries were the collateral edits from the same save, the title you rewrote and the price you cleared, because a wanted ad has none. It now reads "Changed listing type from For Sale to Wanted to Buy".
Idle deal reminders. The code was fine, so check three things in order. The deal tracker itself must be enabled, or the number of days is ignored in silence; the option text now says so. The scheduled task "Classifieds: remind idle deals" must be active, and an upgrade never switches it back on if it was turned off. And by design there is one reminder per step, so a deal that already got its reminder is not chased again until something moves. I did find a real bug beside it: a reminder was marked as sent even when it had not gone out, for instance to a member who had turned that alert off, and that deal was then never chased again. Fixed.
Bumped listings in two lists. You were right, "Latest Listings" and "Newest" were literally the same query, sorted by bump date. There is now a "Newly listed" sort that follows the posting date, "Oldest" means posted first rather than bumped first, and the default is called "Recently active" because that is what it is.
Price on request on a wanted ad. Gone. Somebody looking to buy is not withholding a price, so it says "No budget given" instead. A listing for sale with no price still says Price on request.
On the CSS classes
This deserves a straight answer, because it is the reason you are still on 1.5.0 and it is costing you the rest.
You are right that it happened, and wrong that it keeps happening. I measured it on the shipped archives. From 1.4.1 to 1.5.0 I removed 258 of 543 class names in a minor version, which was indefensible and is exactly what burned you. Since 1.5.4 it has been purely additive. From 1.5.0, your version, to 1.8.0: not one class removed, 22 added. Upgrading will not cost you a single selector.
I have also made that a rule rather than a promise: a check now runs before every build and refuses a release that takes away a class name. It would have refused 1.5.0.
Still open, and why
Multi-item trades. I traced this one end to end and the three items do reach the conversation. What does not work is the other direction: a trade can only ask for one listing, so "three for three" cannot be expressed at all, and I suspect that is what your members hit. Two smaller gaps are real and I will close them: the deal page never lists the items of a trade, and a trade conversation can open without naming them. A screenshot of one of those conversations would settle it in a minute.
Renaming "Make an offer" per listing type, the firm/negotiable suffix, disabling the pre-filled "Is this available?" message, the inactive Contact button until the message has text, the generic WTB image, a size limit on hosted photos, rich text custom fields, the seller profile flag and a time limit on editing a review rating: all noted, none in 1.8.0. The auto-generated title from category fields is the one I want to design properly rather than rush.
Fixed in 1.8.0
Saved searches could not be deleted. This one is worth reading carefully, because the fix is on your side and it takes a minute. The bug was real: our template built the delete link from the URL path instead of the route name, so the link lost the search id and the page 404'd. I fixed it in 1.2.4. But XenForo never replaces a template a board has customised, and you customise a lot, so your copy of xs_classifieds_saved_searches is still the one from before the fix. Appearance > Templates, filter on Outdated, and merge or revert that template; deletion works again immediately. 1.8.0 also adds a route alias so boards in this situation repair themselves without touching anything, but reverting the template is the clean fix.
The sale price privacy box. You were right about the layout: on a phone it took the whole row and pushed the Counter button out of view. It now sits on a line of its own. And there is a new option, "Let a seller keep the sale price private", which removes the box from all four places at once. A forged request cannot set the flag either when the option is off.
Reviews from a buyer without marketplace access. It was the permission, not the free feedback setting. Worse, nothing checked it before showing the form, so your member wrote a review and lost it on the error. The refusal now comes before the form, the invitation is no longer sent to someone who cannot accept it, and the button is hidden from them.
The moderator log. Not random: the type change was never logged at all. The only entries were the collateral edits from the same save, the title you rewrote and the price you cleared, because a wanted ad has none. It now reads "Changed listing type from For Sale to Wanted to Buy".
Idle deal reminders. The code was fine, so check three things in order. The deal tracker itself must be enabled, or the number of days is ignored in silence; the option text now says so. The scheduled task "Classifieds: remind idle deals" must be active, and an upgrade never switches it back on if it was turned off. And by design there is one reminder per step, so a deal that already got its reminder is not chased again until something moves. I did find a real bug beside it: a reminder was marked as sent even when it had not gone out, for instance to a member who had turned that alert off, and that deal was then never chased again. Fixed.
Bumped listings in two lists. You were right, "Latest Listings" and "Newest" were literally the same query, sorted by bump date. There is now a "Newly listed" sort that follows the posting date, "Oldest" means posted first rather than bumped first, and the default is called "Recently active" because that is what it is.
Price on request on a wanted ad. Gone. Somebody looking to buy is not withholding a price, so it says "No budget given" instead. A listing for sale with no price still says Price on request.
On the CSS classes
This deserves a straight answer, because it is the reason you are still on 1.5.0 and it is costing you the rest.
You are right that it happened, and wrong that it keeps happening. I measured it on the shipped archives. From 1.4.1 to 1.5.0 I removed 258 of 543 class names in a minor version, which was indefensible and is exactly what burned you. Since 1.5.4 it has been purely additive. From 1.5.0, your version, to 1.8.0: not one class removed, 22 added. Upgrading will not cost you a single selector.
I have also made that a rule rather than a promise: a check now runs before every build and refuses a release that takes away a class name. It would have refused 1.5.0.
Still open, and why
Multi-item trades. I traced this one end to end and the three items do reach the conversation. What does not work is the other direction: a trade can only ask for one listing, so "three for three" cannot be expressed at all, and I suspect that is what your members hit. Two smaller gaps are real and I will close them: the deal page never lists the items of a trade, and a trade conversation can open without naming them. A screenshot of one of those conversations would settle it in a minute.
Renaming "Make an offer" per listing type, the firm/negotiable suffix, disabling the pre-filled "Is this available?" message, the inactive Contact button until the message has text, the generic WTB image, a size limit on hosted photos, rich text custom fields, the seller profile flag and a time limit on editing a review rating: all noted, none in 1.8.0. The auto-generated title from category fields is the one I want to design properly rather than rush.