github mrblomblo/blombooru v2.0.0

2 hours ago

Blombooru v2.0.0

Note

Blombooru now has an official Discord server! Feel free to join: https://discord.gg/ywpaZh4tHx

Blombooru is a private, self-hosted media tagging tool designed as an alternative to image boorus for managing personal media collections.

Key Features

  • Danbooru-Style Tagging: Includes a tagging system with categories (artist, character, copyright, meta, general), parent-child media relationships, albums, and full support for Danbooru-compatible search syntax.
  • AI Integration: Support for viewing AI metadata from tools such as SwarmUI, ComfyUI, and A1111. Includes integration with the WDv3 Auto Tagger for automated tag suggestions.
  • External Booru Import: Allows importing media directly from supported boorus (e.g., Danbooru, Gelbooru) via URL. Metadata such as tags, rating, and sources are automatically mapped and imported.
  • API Compatibility: Implements a Danbooru v2 compatible API. This allows you to connect third-party Booru clients (such as Grabber, Tachiyomi, or BooruNav) to your Blombooru instance.
  • Security & Access Control: Management actions (uploading, editing, deleting) require an admin login. A Secure Mode can also be enabled to require login to interact with Blombooru (including to view media), while still allowing access to shared media.
  • Customizable Interface: Built with Tailwind CSS for responsiveness. Includes built-in themes (Catppuccin variants, Gruvbox, Nord, Everforest, OLED) and supports adding custom CSS themes.
  • System Architecture: Built on Python (FastAPI) and PostgreSQL. Optional Redis caching is available for faster autocomplete and queries. Supports multi-instance setups and shared tag databases.

Installation Instructions

Docker is the recommended installation method. To deploy Blombooru using Docker:

  1. Download docker-compose.yml and example.env from the release assets below. If you intend to use hardware acceleration, then also download hwaccel.yml.
  2. (Optional) If you intend to use a shared tag database across multiple instances, also download docker-compose.shared-tags.yml.
  3. Follow the Installation instructions in the README to complete the setup.

What's Changed

  • feat: Add folder -> album mapping support to uploader (for #89)

  • feat: Add sidecar metadata and metadata extraction to uploader (for #89)

  • feat: Add support for uploading a text file list of links to uploader (for #107)

  • feat: Add multi-select and range selection support to uploader

  • feat: Add setting for automatically extracting and parsing tags from AI metadata in uploader (for #132)

  • feat: Add support for many more media formats, including JPEG-XL (for #140)

  • feat: Add support for Philomena, Szurubooru, Shimmie2, and Blombooru to the booru importer

  • feat: Add support for setting a proxy, used for direct web fetch and booru importer (for #138)

  • feat: Add Markdown support to media descriptions, with a description preview

  • feat: Add support for big descriptions, with enlarge and shrink controls

  • feat: Add tag rating implications (for #101, partly by @softnsleepi in #130)

  • feat: Add search query qualifier helper to tag search bars

  • feat: Add a tag gallery page (for #95, partly by @softnsleepi in #102)

  • feat: Add tag alias management (for #110)

  • feat: Add bulk tag alias and implication apply buttons (for #109)

  • feat: Add "related tags" section to the tag editor in the media page (for #125)

  • feat: Add random and tag count sorting options by @br33zy59 in #94 (partly for #112)

  • feat: Add custom date field for media, allowing sorting and filtering by custom date and custom age (for #144)

  • feat: Add manual sort mode to albums and album contents (for #121)

  • feat: Add a button for pruning empty albums by @highersky659 in #139

  • feat: Add a display toggle for implied tags in posts (for #133)

  • feat: Add album metrics recalculation button

  • feat: Add "Back to Album" button to media page

  • feat: Add post navigation buttons (Prev/Next) (for #86)

  • feat: Add keyboard shortcuts with customizable keybindings (for #86)

  • feat: Add keybinding cheatsheet to help modal

  • feat: Add GPU-accelerated (CUDA) AI tagging by @mrblomblo in #117 (for #91)

  • feat: Add support for PixAI Tagger v1.0 AI tagger model

  • feat: Add metadata extraction support for more AI imagegen services

  • feat: Add more granular control over API keys (for #88)

  • feat: Add current user access level info to instance info endpoint

  • feat: Add more search query options

  • feat: Add a "Forgot Password?" link in the login page

  • feat: Add password reset script

  • feat: Add changelog modal shown after updates

  • feat: Add acknowledgements generator

  • feat: Add a new "Default Light" light theme

  • feat: Add setting for blurring thumbnails of explicit-rated media (for #120)

  • feat: Allow managing AI tagger models via Admin Panel

  • feat: Allow blacklisting entire tag categories for AI tagger

  • feat: Allow merging tags

  • feat: Allow creating new tags on-the-fly in administrative tag inputs

  • feat: Allow re-linking media (for #113)

  • feat: Allow setting category weights for the similarity index

  • feat: Allow showing both rating filter buttons and custom filter buttons

  • feat: Allow using any rating/custom filter buttons at one time

  • feat: Apply tag aliases and implications on automated tagging operations (for #108)

  • feat: Completely remake and improve the media uploader

  • feat: Combine direct web fetch with booru importer (direct web fetching originally by @br33zy59 in #96)

  • feat: Deduplicate tags on automated tagging operations

  • feat: Display implied tags in posts with a dotted underline, an "implied by" popover on hover (for #133)

  • feat: Display more detailed bulk AI tagger progress info

  • feat: Display bulk AI tagger progress at the top of the modal too (for #147)

  • feat: Exclude parent/child/sibling media from related media suggestions (for #141)

  • feat: Fade-in media items as they load in the gallery

  • feat: Highlight new tags in administrative tag inputs

  • feat: Improve "From Device" Post Update modal layout

  • feat: Improve bulk ratings modal user-friendliness

  • feat: Improve styling, styling consistency, and compactness in various areas

  • feat: Improve tags tooltip in gallery

  • feat: Improve sorting options UI by @br33zy59 in #94

  • feat: Improve bulk tag modal action button placement and behavior & Remove tag clear button from bulk tags modal

  • feat: Improve accessibility with ARIA attributes and focus management in modals and custom selects

  • feat: Improve theme preview page

  • feat: Include thumbnail ratings in album and adjacent media endpoints

  • feat: Load GIF as thumbnail when thumbnail is hovered

  • feat: Make the bulk actions bar follow as you scroll down

  • feat: Make the "From URL" Post Update modal more detailed and user-friendly

  • feat: Only display related media from the album when viewing media from an album

  • feat: Reorganize parts of the Admin Panel and improve several of its sections' looks

  • feat: Replace "back to top" button with an acknowledgements button

  • feat: Respect album context for media hierarchy items

  • feat: Run implication expansion when accepting tag autocomplete suggestions

  • feat: Show current access level in instance info API

  • feat: Show more detailed info when downloading AI tagger models

  • feat: Show search results live in tag and album searcher

  • feat: Show tag implications counter in stats instead of categories counter

  • feat: Significantly improve the search parser's accuracy

  • feat: Stream bulk AI tagger results

  • feat: Stop suggesting tags that are already present in the tag input

  • feat: Support auto-fetch on URL drag 'n drop for booru importer

  • feat: Support tag negation symbol (-) in tag autocomplete suggestions

  • feat: Support wildcards and fuzzy search in tag autocomplete suggestions

  • feat: Switch thumbnail generator to WebP for transparency support, higher quality, and smaller file sizes

  • feat: Track which album media is viewed from

  • feat: Track implied tags in posts (for #133)

  • feat: Unload AI tagging model when not in use

  • feat: Use a better similarity algorithm (TF-IDF) for near-instant and significantly more accurate related post suggestions

  • fix: Actually cancel AI tag predictor when Cancel button is pressed

  • fix: Clean up staged files and sidecars on duplicate upload rejection

  • fix: Clean up console logging and silence autoplay errors in media components

  • fix: Display days with zero uploads in the stats page

  • fix: Disable default browser autocomplete in the search bar by @grognakmedia in #119

  • fix: Do not do hover effect on non-interactible tags

  • fix: Do not close media picker modal and bulk tag modals on outside click, and close bulk tag modals on Esc

  • fix: Do not allow aliases to also exist as tags under any circumstances

  • fix: Filter "I'm Feeling Lucky" and Related Media results more accurately

  • fix: Fix backup not working at all (for #103, #106)

  • fix: Fix full backup not actually fully backing up your instance (partly by @grognakmedia in #104)

  • fix: Fix album metrics not being recalculated on album mutations

  • fix: Fix not being able to reparent albums to root (for #146)

  • fix: Fix album media count display so it shows the actual amount of visible media in an album after applied filters

  • fix: Fix DB connection string formatting

  • fix: Fix DB session lifecycle in threadpool and executor workers

  • fix: Fix unbounded retries and async event loop starvation

  • fix: Fix issue where bulk AI tagger modal does not work (for #137)

  • fix: Fix shorthand rating filtering in media and tag endpoints

  • fix: Fix tag suggestions being clipped in scrollable containers

  • fix: Fix tags containing slashes not being routable

  • fix: Fix manual sort order in adjacent media navigation (for #145)

  • fix: Fix multi-item drag 'n drop on Chromium

  • fix: Fix mobile paste not triggering auto-fetch for media importer

  • fix: Fix currently applied custom theme not being publicly accessible if REQUIRE_AUTH is enabled

  • fix: Fix @import crashing custom themes

  • fix: Fix custom BG setting not being disableable

  • fix: Fix video MIME type for transcoded media

  • fix: Fix unresponsive chevron in media hierarchy dropdown

  • fix: Fix issues with viewport cutoff on mobile

  • fix: Fix issue where a few modals' buttons don't respond to inputs

  • fix: Fix broken loading spinner in a few places

  • fix: Fix wrong order of bulk action buttons in albums

  • fix: Fix GPU acceleration not working in Docker and DLL loading for CUDA on Windows by @br33zy59 in #118

  • fix: Hide header while dragging to allow autoscrolling on upper and lower edges

  • fix: Hide albums that would be empty if opened due to applied filters

  • fix: Increase rate limiter threshold (for #116)

  • fix: Improve Danbooru commentary parsing, gallery-dl DText detection, and DText to Markdown conversion in booru importer

  • fix: Improve untracked file scan reporting and systemic error handling (for #134)

  • fix: Improve tertiary text contrast in Default Dark theme

  • fix: Improve API call error handling, admin 401 redirect, and notification accessibility

  • fix: Improve service worker caching, bypass API requests, and use cache buster

  • fix: Normalize and deduplicate booru domains in booru credential config

  • fix: Only select visible media when double-clicking "Select All" button

  • fix: Persist AI tagger model in Docker-hosted instances by storing it in /data folder

  • fix: Prevent duplicate tag implications in backend by @j-penrose in #127 (for #126)

  • fix: Prevent duplicate tag implications in frontend (for #105)

  • fix: Prevent concurrent admin media maintenance jobs

  • fix: Prevent duplicate files from stopping mass file and archive imports (for #142)

  • fix: Recalculate album metrics on backup restore

  • fix: Reduce unnecessary network requests when using the AI tag predictor

  • fix: Remove chunked downloading for one-shot download requests by @br33zy59 in #115 (for #114)

  • fix: Remove cap on the commit list in the updater

  • fix: Show "Login" instead of "Admin Panel" in header nav when not logged in

  • fix: Standardize booru error handling, rate limit handling, and credential redaction, with localized auth messages

  • fix: Sync fresh DB build structure with migrated DB structure (for #129)

  • fix: Sync mobile and desktop search inputs (for #143)

  • fix: Unify small styling inconsistencies throughout

  • fix: Update instance name and theme on-the-fly without requiring a page reload

  • fix: Use safe instead of questionable when rating is missing in booru importer

  • fix: Use media loading skeleton in more places

  • fix: Validate selected custom sidebar filter button

  • perf: Cache template auth result

  • perf: Enable Redis by default

  • perf: Make TF-IDF tag similarity index rebuilds more responsive (for #123)

  • perf: Significantly improve efficiency and speed of album handling

  • perf: Significantly improve handling of large tag implication sets (for #129)

  • perf: Significantly optimize external booru fetching by reusing HTTP sessions & connection pools

  • perf: Significantly optimize bulk modals

  • perf: Significantly reduce number of requests sent to the server when visiting the media page as admin

  • perf, refac: Speed up bulk tag updates with common implication expansion code by @j-penrose in #136 (for #135)

  • refac: Add test suite

  • refac: Add reusable album tree component

  • refac: Add registry for supported file types

  • refac: Add booru domain overrides and subdomain aliasing

  • refac: Add user ID to user agent for requests to Danbooru

  • refac: Deduplicate common functions, cookie helpers, and notification calls

  • refac: Extract tag management modals from Admin Panel

  • refac: Improve media cache handling

  • refac: Move all SVG icons into proper icons system

  • refac: Normalize and parse rating in enums module

  • refac: Refactor AI metadata extraction to be backend-only

  • refac: Refactor markdown parser to be a reusable component

  • refac: Set HTML document language properly based on currently selected locale

  • refac: Unify clientside rating filter storage locations to be cookie-based

  • security: Add noopener and noreferrer policy to more links that previously were missed

  • security: Add env var for setting trusted proxies (for GHSA-689j-rf45-qcw2)

  • security: Improve X-Forwarded-For handling (for GHSA-689j-rf45-qcw2)

  • security: Escape album names and more dynamic HTML messages during rendering (XSS)

  • security: Fix privilege escalation bug for API keys

  • security: Fix SSRF via unchecked HTTP redirects in URL and booru imports

  • security: Fix open redirect and DOM XSS in login return handling

  • security: Harden security in general & add missing filename length limit

  • docs: Add Changelog and Acknowledgements files

  • docs: Add license files for TailwindCSS and Chart.JS

  • docs: Add many more screenshots to screnshot gallery

  • docs: Add notice about AI-generated security advisories to SECURITY.md

  • docs: Bring Swedish docs up to speed

  • docs: Move screenshot gallery from README to dedicated docs

  • docs: Move search syntax guide modal content to docs

  • docs: Remove outdated CSV tag list from suggestions

  • docs: Update internal API documentation

  • docs: Update the contributing docs

  • i18n: Add missing strings to Swedish i18n keys

  • i18n: Fix a few locale inconsistencies

  • i18n: Move more hardcoded strings to the i18n system

  • i18n: Update Russian translation and docs by @cobaltcobaltcobalt in #128, #149

  • chore: Add PySocks dependency

  • chore: Update PWA description

  • chore: Upgrade Wenmode by @lepture in #131

  • note: I have most certainly missed something as these release notes are not automatically generated, some likely also refer to previous pre-releases too

Full Changelog: v1.40.1...v2.0.0

Credits & Acknowledgements

Thank you to the following contributors and community members for their help in improving Blombooru:

  • @cobaltcobaltcobalt for continuing to maintain the Russian translation and suggesting features.
  • @grognakmedia for PRing bug fixes, reporting bugs, and for allowing me to use ideas from their fork.
  • @br33zy59 for making several code contributions and reporting a bug.
  • @softnsleepi for PRing the base for the tags gallery and tag ratings features, suggesting features, and for reporting bugs.
  • @j-penrose for PRing a bug fix and a refactor, reporting a lot of bugs, and suggesting features.
  • @lepture for PRing an update to Wenmode and for providing guidance on best practices with Wenmode.
  • @falchionenjoyer for reporting several bugs and suggesting a feature.
  • @denylizer for reporting a bug.
  • @Spy426-IW16 for reporting a bug.
  • @IZA09 for suggesting features.
  • @PureDragon666 for suggesting a feature.
  • @sanityy55 for suggesting a feature.
  • @Pahvikapteeni for suggesting a feature.
  • @leopoldious for suggesting a feature.

New Contributors

Contributors who have had their first pull request merged:

Don't miss a new blombooru release

NewReleases is sending notifications on new releases.