Repository navigation
Added
- Rating filter: Flag or exclude posts by rating (safe / sensitive / questionable / explicit), with cross-site normalization. Danbooru's letter ratings are disambiguated (
g/smap to safe and sensitive on Danbooru;smaps to safe everywhere else). Flag mode shows an inline warning on post pages; exclude mode drops tags from disallowed posts and listings. Gelbooru listings do not expose ratings, so posts on those listings are never excluded. - NoobAI prefix preset:
masterpiece, best quality, newest, absurdres, highres, safe, verified against the official Laxhar Lab model cards. Also available as a per-site override. - Tag category order: User-defined output order of the five tag categories (character, copyright, artist, meta, general), configurable on the options page.
- .txt download: Save the current tag output as a
.txtfile via the selection panel's toolbar. File names are derived from the site and post ID. - Replacement rules: Up to 100 literal find → replace rules applied to tags before copying (for example,
1girl→1girl, solo), with a total size cap. - Per-tag selection: Collapsible checkbox panel on post pages for copying a subset of tags, with select all / none, copy selected, and .txt buttons.
- Listing multiselect for Gelbooru and Moebooru: The merged copy now works on all supported listing pages, not just Danbooru and e621. Moebooru tags and ratings are read from the preview image title; Gelbooru tags are read from
span.thumbpreviews. - Tag count cap warning: Listing pages warn when the merged tag set exceeds 75 tags, since many models degrade beyond that point.
Changed
- The options page gains sections for the new settings: a tag order picker (positions swap automatically to stay a valid permutation), a replacement rule editor with a live count, and a rating filter with mode and allowed-rating checkboxes.
- The content script is rebuilt around
sanitizeSettings, which fully validates the new setting shapes, including prototype-pollution guards. Family-aware rating normalization now lives inshared.js.