Releases: pullboxapp/pullbox
Release list
Pullbox v1.1.1
What's Changed
Patch release improving direct-download reliability for collected issue packs.
Fixed
- Accept safe, separately packaged contiguous direct-download issue packs when
their declared coverage includes the requested issue; extract and import the
explicitly selected issue plus any other wanted members without replacing
existing files. - Preserve direct-acquisition fallback source metadata and accept configured
alternate series names when validating extracted pack members.
CI / Build
- Refreshed narrow Docker Hardened Image vulnerability exceptions for the
current Debian 13 package revisions that have no upstream fix.
Commit Details
✨ Features
- import separable direct-download issue packs
🐛 Bug Fixes
- harden direct pack post-processing
- preserve direct pack acquisition intent
- accept spaced direct pack ranges
- accept direct packs for covered issues
- validate separable direct-download packs
🧰 Chores
- bump version to 1.1.1 for release
🏗️ CI / Build
- refresh DHI vulnerability exceptions
🐳 Docker Images
docker pull ghcr.io/pullboxapp/pullbox:1.1.1
docker pull docker.io/pullbox/pullbox:1.1.1Digest: sha256:35d97268159f0f22481632c5c2fdf8accc6dfab4df2b7a4b1e46685b4e3754f9
🔐 Image Verification
Release images are signed with keyless Sigstore/Cosign using GitHub Actions OIDC.
These commands verify the exact multi-architecture image digest published by this release.
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.1.1$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
ghcr.io/pullboxapp/pullbox@sha256:35d97268159f0f22481632c5c2fdf8accc6dfab4df2b7a4b1e46685b4e3754f9
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.1.1$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
docker.io/pullbox/pullbox@sha256:35d97268159f0f22481632c5c2fdf8accc6dfab4df2b7a4b1e46685b4e3754f9Full Changelog: v1.1.0...v1.1.1
Pullbox v1.1.0
What's Changed
Minor release introducing native direct acquisition, an embedded comic reader,
and significant operational resilience improvements for large libraries and
long-running imports.
Added
- Added native Jackett indexer management with Prowlarr-consistent test and
synchronization controls, one independently managed Torznab source per
configured tracker, and duplicate-manager warnings. - Added direct acquisition as a first-class search and download path, with
GetComics and Anna's Archive provider support, source-aware matching, and
user-controlled provider priority. - Added configured artifact-host support for PixelDrain, MEGA, MediaFire,
TeraBox, DataNodes, Rootz, and generic HTTPS routes, including encrypted
credentials, reachability checks, fallback routing, per-host blocklisting,
and manual source switching. - Added browser challenge resolvers with ranked FlareSolverr, ByParr, and TRAWL
support for direct providers and manually configured Torznab indexers. - Added a lightweight embedded comic reader with private reading progress,
bounded page caching, responsive controls, and operational cache limits. - Added direct-download recovery entries to the Intervention Queue so users can
retry failed mirrors with a newly planned route instead of reusing a stale
artifact. - Added a database optimization utility and expanded health detail for direct
acquisition routes, Jackett indexers, and database maintenance. - Added manual refresh for stale What's New release data.
Changed
- Preserve missing Prowlarr and Jackett tracker records as unavailable history
instead of deleting them, and give Jackett-managed searches a proxy-aware
timeout and request cadence while Jackett retains challenge ownership. - Allow Anna's Archive users to edit the configured official URL while limiting
the accepted values to the supported.gl,.pk, and.gddomains. - Reworked direct-download settings into consistent provider, artifact-host,
and challenge-resolver configuration surfaces with connection status and
ordered preference controls. - Extended matching for collected editions, graphic novels, omnibuses, titled
trade volumes, one-shots, and subtitle-bearing releases while preserving the
review-first path for uncertain matches. - Improved download and intervention history with direct-provider and artifact
host context, parsed release details, and clearer recovery actions.
Fixed
- Corrected direct acquisition planning when a release exposes multiple
artifact mirrors, including unavailable or unsafe routes, stale landing
pages, host fallback, and source-specific retries. - Routed one-click issue downloads through the same cross-source acquisition
path as scheduled searches, so direct results honor source priority and work
when no indexer result is available. - Kept direct-review and direct-recovery entries actionable when background
dispatch cannot start, instead of resolving them before a transfer is queued. - Prevented direct downloads from appearing stalled during slow transfers and
report a clear slow-source status after sustained low throughput. - Preserved direct-download issue state as downloading throughout acquisition
and corrected post-processing source resolution across mounted paths. - Kept recovery-only Intervention Queue rows out of generic bulk approve and
reject actions, and report untested enabled direct routes as needing
attention rather than falsely healthy. - Improved import safety-review rematching, folder naming tokens, targeted
import type classification, and rematch review refresh behavior. - Preserved in-place series monitoring changes, list state after deletion, and
interactive cursor affordances across the application. - Prevented reader worker, progress-write, cache-budget, fullscreen, and image
validation edge cases from disrupting reading sessions.
Performance
- Reduced sidebar navigation query work and kept manual monitoring changes
reactive without full-page reloads. - Improved database contention handling for concurrent imports, scheduled work,
health checks, and direct acquisition recovery.
Testing
- Expanded direct acquisition, reader, health, intervention, import, and
browser workflow regression coverage.
Documentation
CI / Build
- Updated GitHub Actions and axe-core dependencies and recorded the reviewed
base-image OpenSSL CVE triage.
Internal
Commit Details
✨ Features
- separate direct download recovery from match review
- add Jackett indexer health monitoring
- include direct sources in health checks
- add database optimization utility
- harden reader runtime and operations
- add responsive embedded comic reader
- add reader delivery and private progress
- add bounded comic page sources
- add resilient direct download source switching
- add durable wanted sweeps and source fallback
- refine manual Torznab indexer setup
- refresh stale What's New data on demand
- show artifact hosts in download history
- add dedicated challenge resolvers settings tab
- scope artifact hosts to provider capabilities
- track artifact host reachability
- order artifact hosts by preference
- align artifact host configuration
- simplify direct download settings hierarchy
- refine direct provider configuration
- add native Jackett indexer management
- add browser resolution for manual Torznab
- add ranked browser resolver chains
- support DataNodes premium downloads through TRAWL
- add resilient direct download host routing
- integrate direct downloads into search and acquisition
- finalize artifact host release modes
- record artifact host account health
- add native artifact host settings UI
- add direct artifact host settings API
- add durable direct acquisition execution
- add secure direct artifact transport
- add native artifact host adapters
- define artifact host registry contract
- add bounded browser challenge resolver
- add direct provider protocol registration
- add direct acquisition persistence foundation
🐛 Bug Fixes
- route direct issue downloads consistently
- harden intervention and direct route health
- open post-processing issues as full pages
- update monitored series in place
- keep approved safety files actionable during rematch
- distinguish one-shot targeted import folders
- honor type token during targeted imports
- enforce reader page cache budget
- make initial reader progress writes atomic
- avoid reader compression false positives
- target reader shell for fullscreen
- swap comic reader footer controls
- verify baseline PNG reader pages safely
- retain reader worker bounds on cancellation
- materialize direct imports safely
- close direct download review gaps
- preserve MEGA bridge loader path
- tolerate fast MEGA bridge close
- harden direct transfer review paths
- align candidate union ordering
- sync direct download issue status
- reuse safety-reviewed direct artifacts
- open download queue issues as full pages
- classify non-standard series from metadata evidence
- honor direct provider priority after matching
- match subtitle-bearing graphic novels
- resolve collection download alternatives
- distinguish collected editions from numbered issues
- match titled collection volumes correctly
- preserve series list state after deletion
- standardize interactive cursor affordances
- clarify incomplete intervention routes
- improve collection matching and fallback
- accept exact collection download alternatives
- fall back from unsafe artifact routes
- honor source and indexer priorities
- classify unavailable direct download mirrors
- improve direct download intervention and progress feedback
- harden direct download planning and fallback
- allow keyless manual indexers
- align search language dropdown contract
- restore settings indexer card spacing
- keep indexer action status visible
- allow indexer priority updates after tests
- show artifact host intervention details
- stabilize intervention history details
- skip retired direct-download artifact hosts
- preserve download queue actions across polling
- align resolver settings and preserve health history
- simplify Jackett connection guidance
- harden direct download transfer recovery
- harden direct acquisition recovery checkpoints
🧪 Testing
- stabilize release validation contracts
- wait for reader resume after reopen
- align search flow integration seams
📝 Docs
- record reader acceptance benchmark
🧰 Chores
- bump version to 1.1.0 for release
- update actions and axe-core
- raise cryptography security floor
- sync develop after v1.0.6 release
🏗️ CI / Build
- triage deferred openssl base image cve
⚡ Performance
- reduce sidebar navigation query cost
- add direct download readiness baseline
🐳 Docker Images
docker pull ghcr.io/pullboxapp/pullbox:1.1.0
docker pull docker.io/pullbox/pullbox:1.1.0Digest: sha256:251f032037d0d2354e1c7ebc5f6e12b3b3a7586895065987a9cf2be74b667b72
🔐 Image Verification
Release images are signed with keyless Sigstore/Cosign using GitHub Actions OIDC.
These commands verify the exact multi-architecture image digest published by this release.
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.1.0$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
ghcr.io/pullboxapp/pullbox@sha256:251f032037d0d2354e1c7ebc5f6e12b3b3a7586895065987a9cf2be74b667b72
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.1.0$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
docker.io/pullbox/pullbox@sha256:251f032037d0d2354e1c7ebc5f6e12b3b3a7586895065987a9cf2be74b667b72Full Changelog: v1.0.6...v1.1.0
Pullbox v1.0.6
What's Changed
Patch release focused on reliable wanted searches, user-controlled series
lifecycle status, and faster large-library management.
Added
- Added manual continuing and ended lifecycle overrides on series details;
metadata refreshes preserve the user-selected status. - Added configurable Pull List page sizes, lifecycle status in the series list,
acquisition most-to-least and least-to-most sorting, and file-explorer-style
checkbox selection with Shift and Command/Ctrl modifiers.
Fixed
- Made automatic and manual wanted searches recover promptly from indexer
backoff, stream outcomes progressively, and preserve search-on-add results. - Serialized shared database-session work during concurrent searches without
reducing provider request concurrency. - Cleaned completed Usenet source directories and preserved expanded download
history details during live refreshes. - Preserved Pull List breadcrumb context when opening and returning from series
details. - Prevented provider metadata refreshes from restoring an end year on series
manually marked as continuing.
CI / Build
- Updated Tailwind dependencies and pinned GitHub Actions releases.
Commit Details
✨ Features
- add file explorer selection controls
- add acquisition sorting to series
- show lifecycle status in series list
- add pull list page size control
- add manual series lifecycle overrides
🐛 Bug Fixes
- address release review regressions
- address search concurrency and lifecycle overrides
- preserve pull list breadcrumb origin
- clean completed usenet source directories
- preserve open download history details
- stream search-on-add results progressively
- stream wanted search results progressively
- make indexer backoff recoverable
🧪 Testing
- isolate selection modifier coverage
🧰 Chores
- bump version to 1.0.6 for release
- bump Tailwind packages to 4.3.3
- sync develop after v1.0.5 release
🏗️ CI / Build
- update pinned GitHub Actions
🐳 Docker Images
docker pull ghcr.io/pullboxapp/pullbox:1.0.6
docker pull docker.io/pullbox/pullbox:1.0.6Digest: sha256:99988fb96bb7a2847ae313f288f5c217cd75cc4b56859df1247cab702e7231bb
🔐 Image Verification
Release images are signed with keyless Sigstore/Cosign using GitHub Actions OIDC.
These commands verify the exact multi-architecture image digest published by this release.
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.6$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
ghcr.io/pullboxapp/pullbox@sha256:99988fb96bb7a2847ae313f288f5c217cd75cc4b56859df1247cab702e7231bb
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.6$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
docker.io/pullbox/pullbox@sha256:99988fb96bb7a2847ae313f288f5c217cd75cc4b56859df1247cab702e7231bbFull Changelog: v1.0.5...v1.0.6
Pullbox v1.0.5
What's Changed
Patch release focused on production reliability under sustained background work
and large-library metadata synchronization.
Fixed
- Hardened indexer, download-client, scheduled-search, metadata, and ComicInfo
background workflows against remote failures, provider throttling, and SQLite
lock contention. - Preserved failed and rejected indexer outcomes so retry, intervention, and
blocklist handling remain visible instead of silently losing results. - Deferred ComicInfo enrichment safely when providers throttle requests, while
allowing imports to complete and enrichment to resume later. - Made series sorting deterministic across all pages and compatible with native
PostgreSQL enum columns. - Reconciled issue wanted/skipped states during bulk monitor changes across all
selected results. - Preserved the active page and selected series during metadata hydration, and
stopped expanded search-history details from flashing during live polling. - Prevented automatic health checks from probing disabled indexers.
- Corrected scheduled-task table styling and pointer feedback for enabled import
rule saves.
Commit Details
🐛 Bug Fixes
- harden series sorting and search lock retries
- pause search history polling for open details
- preserve series selection during metadata sync
- keep series metadata refresh on active page
- make series sorting deterministic across pages
- reconcile issue states during bulk monitoring
- round scheduled task table header
- show pointer for enabled import rules save
- avoid automatic disabled indexer checks
- preserve failed indexer search outcomes
- defer ComicInfo enrichment after provider throttling
- prevent background metadata database contention
- harden download client health checks
- handle rejected torrent retries gracefully
- harden indexer checks for production load
🧰 Chores
- bump version to 1.0.5 for release
- sync develop after v1.0.4 release
🐳 Docker Images
docker pull ghcr.io/pullboxapp/pullbox:1.0.5
docker pull docker.io/pullbox/pullbox:1.0.5Digest: sha256:e1b079926bcfde3c5af40672847d642df57e79329464a58813efcb1ebf82ba61
🔐 Image Verification
Release images are signed with keyless Sigstore/Cosign using GitHub Actions OIDC.
These commands verify the exact multi-architecture image digest published by this release.
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.5$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
ghcr.io/pullboxapp/pullbox@sha256:e1b079926bcfde3c5af40672847d642df57e79329464a58813efcb1ebf82ba61
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.5$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
docker.io/pullbox/pullbox@sha256:e1b079926bcfde3c5af40672847d642df57e79329464a58813efcb1ebf82ba61Full Changelog: v1.0.4...v1.0.5
Pullbox v1.0.4
What's Changed
Maintenance release focused on reliable multi-platform publication across
Docker runtimes with classic image stores.
CI / Build
- Evicted the digest-selected image between AMD64 and ARM64 runtime checks so
sequential verification cannot fail with Docker'scannot overwrite digest
error after manifests are published.
Commit Details
🧰 Chores
- bump version to 1.0.4 for release
- sync develop after v1.0.3 release
🐳 Docker Images
docker pull ghcr.io/pullboxapp/pullbox:1.0.4
docker pull docker.io/pullbox/pullbox:1.0.4Digest: sha256:6ddc2b70a71896d2ecea8bdaa879db546d507cdba804633ad8141c840424d6c6
🔐 Image Verification
Release images are signed with keyless Sigstore/Cosign using GitHub Actions OIDC.
These commands verify the exact multi-architecture image digest published by this release.
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.4$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
ghcr.io/pullboxapp/pullbox@sha256:6ddc2b70a71896d2ecea8bdaa879db546d507cdba804633ad8141c840424d6c6
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.4$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
docker.io/pullbox/pullbox@sha256:6ddc2b70a71896d2ecea8bdaa879db546d507cdba804633ad8141c840424d6c6Full Changelog: v1.0.3...v1.0.4
Pullbox v1.0.3
What's Changed
Maintenance release focused on faster multi-architecture image publication and
dependency security while preserving the existing release gates.
Fixed
- Raised the Pillow dependency floor to 12.3.0 to include upstream fixes for
crafted font/image memory exhaustion and Windows viewer command injection.
CI / Build
- Parallelized AMD64 and ARM64 release builds across two Docker runners while
preserving Grype, smoke-test, dual-registry, attestation, and signing gates.
Commit Details
🐛 Bug Fixes
- evict platform image between release checks (#81)
🧰 Chores
- bump version to 1.0.3 for release
- sync develop after v1.0.2 release
🏗️ CI / Build
- parallelize Docker release platform builds (#79)
- add isolated Docker release benchmark (#77) (#78)
- add isolated Docker release benchmark (#77)
🐳 Docker Images
docker pull ghcr.io/pullboxapp/pullbox:1.0.3
docker pull docker.io/pullbox/pullbox:1.0.3Digest: sha256:3672f34321deef16fae9cb5367813a24e23966e85e736cdd6310807f9be47a5c
🔐 Image Verification
Release images are signed with keyless Sigstore/Cosign using GitHub Actions OIDC.
These commands verify the exact multi-architecture image digest published by this release.
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.3$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
ghcr.io/pullboxapp/pullbox@sha256:3672f34321deef16fae9cb5367813a24e23966e85e736cdd6310807f9be47a5c
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.3$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
docker.io/pullbox/pullbox@sha256:3672f34321deef16fae9cb5367813a24e23966e85e736cdd6310807f9be47a5cFull Changelog: v1.0.2...v1.0.3
Pullbox v1.0.2
What's Changed
Maintenance release focused on container runtime reliability, migration
correctness, and faster self-hosted CI without weakening release gates.
Fixed
- Added the missing PostgreSQL enum migration for paused import jobs so
PostgreSQL deployments upgrade cleanly. - Made shell-free production images resilient to Python path changes between
Docker Hardened Image builder and runtime releases.
CI / Build
- Hardened release image validation with an Expat runtime floor, exact reviewed
Grype exceptions, and pre-signing checks for both AMD64 and ARM64 images. - Routed lightweight checks to a dedicated runner, increased Python test
parallelism, sharded browser tests, and disabled routine E2E video encoding
while retaining opt-in diagnostics. - Updated the pinned CodeQL actions to 4.37.0.
Commit Details
🐛 Bug Fixes
- preserve venv interpreter in DHI runtime (#74)
- harden container validation and enum migrations (#72)
🧰 Chores
- bump version to 1.0.2 for release
- sync develop after v1.0.1 release
🏗️ CI / Build
- bump the actions-all group across 1 directory with 3 updates (#70)
- separate lightweight checks from test runners (#73)
🐳 Docker Images
docker pull ghcr.io/pullboxapp/pullbox:1.0.2
docker pull docker.io/pullbox/pullbox:1.0.2Digest: sha256:fb5952ac34f13bbfdf93803732bceac1dd6569b316911fe7223f5ea08474b00d
🔐 Image Verification
Release images are signed with keyless Sigstore/Cosign using GitHub Actions OIDC.
These commands verify the exact multi-architecture image digest published by this release.
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.2$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
ghcr.io/pullboxapp/pullbox@sha256:fb5952ac34f13bbfdf93803732bceac1dd6569b316911fe7223f5ea08474b00d
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.2$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
docker.io/pullbox/pullbox@sha256:fb5952ac34f13bbfdf93803732bceac1dd6569b316911fe7223f5ea08474b00dFull Changelog: v1.0.1...v1.0.2
Pullbox v1.0.1
What's Changed
Patch maintenance release focused on dependency freshness and release-pipeline
hygiene after the 1.0 launch.
CI / Build
- Updated pinned GitHub Actions used by CI, Docker validation, CodeQL branch
probing, release image publication, and security scanning workflows. - Updated Tailwind CSS and the Tailwind CLI to 4.3.2 and regenerated the
compiled stylesheet. - Added a narrow local and CI
pip-auditignore for the current Safety
toolchain's transitivenltkadvisory while no fixed upstream version is
available.
Commit Details
🧰 Chores
- bump version to 1.0.1 for release
- integrate dependabot maintenance batch
- bump @tailwindcss/cli from 4.3.1 to 4.3.2
- bump tailwindcss from 4.3.1 to 4.3.2
- sync develop after v1.0.0 release
🏗️ CI / Build
- bump the actions-all group with 8 updates
🐳 Docker Images
docker pull ghcr.io/pullboxapp/pullbox:1.0.1
docker pull docker.io/pullbox/pullbox:1.0.1Digest: sha256:aa066660091db96a20ddea2075ba673409e6bfeb6970e495d92d33be9d5981fd
🔐 Image Verification
Release images are signed with keyless Sigstore/Cosign using GitHub Actions OIDC.
These commands verify the exact multi-architecture image digest published by this release.
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.1$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
ghcr.io/pullboxapp/pullbox@sha256:aa066660091db96a20ddea2075ba673409e6bfeb6970e495d92d33be9d5981fd
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.1$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
docker.io/pullbox/pullbox@sha256:aa066660091db96a20ddea2075ba673409e6bfeb6970e495d92d33be9d5981fdFull Changelog: v1.0.0...v1.0.1
Pullbox v1.0.0
What's Changed
The first stable release. Pullbox 1.0 is a complete, self-hosted comic library
manager: pull list automation, weekly release discovery, a matching engine built
for how comics actually get named, and the operational depth to run unattended
on your server.
Library & Collection
- Series management with eleven distinct series types, including annuals, trade
paperbacks, omnibuses, hardcovers, one-shots, and more, so collections
organize the way comics actually work. - Pull list monitoring: mark a series monitored and new issues are searched,
grabbed, and filed automatically. - Review-first collection import: scan a folder, match against ComicVine,
resolve conflicts and duplicates explicitly, then import with full rollback. - Mylar3 importer: reads a Mylar3 database strictly read-only, preserves its
ComicVine matches as high-confidence imports, and preserves external source
folders during import. - File-level tracking with naming templates per series type, configurable
transfer methods, and ComicInfo.xml metadata writing.
Acquisition
- Five download clients with full lifecycle management: SABnzbd, NZBGet,
qBittorrent, Transmission, and Deluge. - Indexer support: Prowlarr integration plus direct Newznab and Torznab
connections, with health checks and per-indexer priority. - Matching engine: a three-stage parse, match, validate pipeline developed
against a corpus of more than 20,000 real-world release names, with an
intervention queue for ambiguous matches instead of silent wrong grabs. - Universal blocklist across all client types, with configurable expiry,
wildcard release-group patterns, and per-series clearing. - Two-pass search with configurable thresholds, size guardrails, scoring
weights, and ignored-phrase filters.
Weekly Release Discovery
- What's New: this week's releases, filterable by publisher.
- Coming Soon: upcoming weeks, with graceful offline fallback to cached data.
Metadata
- ComicVine integration with your own free API key, encrypted at rest, with
aggressive caching and internal rate limiting to stay well inside ComicVine's
limits.
Utilities
- Seven built-in tools, job-queue backed with live progress: File Converter,
Mass Convert, Mass Rename, Integrity Check, Library Permissions, DB Check &
Cleanup, and Export Library.
Operations
- Health dashboard covering database, filesystem, ComicVine, clients, indexers,
scheduler, and system resources, with actionable guidance on failures. - One-click diagnostics packages with secrets redacted.
- Scheduled database backups with retention and restore.
- Audit log of security-relevant events.
- Full REST API behind the same auth as the UI, with an interactive reference
served from the instance at/docs.
Security & Runtime
- Ships on Python 3.14 using Docker Hardened Images, running as a fixed non-root
user with a minimal attack surface. - Encrypted credentials at rest, CSRF protection, tiered rate limiting, bcrypt
password hashing, signed sessions, and API keys stored as hashes. - Native HTTPS with your own certificates, or reverse-proxy friendly with
trusted-proxy support. - Multi-architecture images for
amd64andarm64on GHCR and Docker Hub. - Anonymous usage telemetry that is opt-in, off by default, and documented
field-by-field on the public transparency page.
Interface
- Light and dark themes with system-preference detection.
- Responsive layout from phone to desktop.
- Targets WCAG 2.2 AA with automated contrast, keyboard, focus, and axe
regression checks.
Commit Details
✨ Features
- support issue file replacement workflows
🐛 Bug Fixes
- harden issue replacement cancellation
- address release review findings
- show intervention bulk action progress
- force history issue links to navigate
- stagger metadata refresh schedule
- show pointer cursor on library file rows
- report manual import transfer progress
- keep partial-catalog duplicates importable
- refresh import review after series override
- strip parenthesized webrip metadata
- weight step 2 import eta
- preserve collection import sources
- protect imports from scheduler contention
- reload search history diagnostics after navigation
- stabilize search on add annual handling
- align dashboard outcomes table contract
- rename bulk utility preview badges
- stabilize download history detail toggle
- cache versioned cover images
- show pointer cursor on pagination controls
🧪 Testing
- align ci expectations with current import behavior
🧰 Chores
- prepare v1.0.0 release
🏗️ CI / Build
- bump actions/setup-python in the actions-all group
🐳 Docker Images
docker pull ghcr.io/pullboxapp/pullbox:1.0.0
docker pull docker.io/pullbox/pullbox:1.0.0Digest: sha256:859d2a7bf37249c823585e5381094ec4e48b04e4a5061ff38e6723893cae4e66
🔐 Image Verification
Release images are signed with keyless Sigstore/Cosign using GitHub Actions OIDC.
These commands verify the exact multi-architecture image digest published by this release.
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.0$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
ghcr.io/pullboxapp/pullbox@sha256:859d2a7bf37249c823585e5381094ec4e48b04e4a5061ff38e6723893cae4e66
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.0$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
docker.io/pullbox/pullbox@sha256:859d2a7bf37249c823585e5381094ec4e48b04e4a5061ff38e6723893cae4e66Full Changelog: v1.0.0-rc1...v1.0.0
Pullbox v1.0.0-rc1
What's Changed
Release candidate for the v1.0 production burn-in, focused on Mylar3 migration
correctness, rollback safety, metadata recovery, download retry handling, and
large-library UI stability.
Changed
- Adopted matching source folders during Mylar3 and folder imports when the
source already lives inside the Pullbox library root, preserving adjacent
Mylar artifacts instead of creating duplicate target folders. - Surfaced catalog hydration state in series views so missing post-import
metadata is visible while background recovery catches up.
Fixed
- Fixed import rollback cleanup for adopted folders, renamed folders, failed
files, empty target directories, and rollback details that were previously
not persisted early enough for later recovery. - Fixed a stale intervention issue link interaction that could swap an issue
detail page into the intervention table instead of navigating normally. - Fixed pending download retries that could remain in
retry pendingwithout
being failed and blocklisted when no active downloads were polling. - Fixed import result retry visibility for file failures that need recovery
after review or rollback.
Performance
- Reused catalog hydration indicators and import metadata recovery paths to
keep large-library views responsive after production-scale imports.
Testing
- Added coverage for folder adoption, rollback edge cases, pending download
retry processing, intervention navigation, import result recovery, catalog
hydration banners, and reviewed template-safe macro attributes.
Commit Details
🐛 Bug Fixes
- preserve folder adoption during import rollback
- harden import folder adoption rollback
- prevent intervention issue links from htmx swapping
- process pending download retries when idle
- harden import rollback file cleanup
- surface catalog hydration after imports
- adopt library source folders during import
🧪 Testing
- review mission control safe attrs
🧰 Chores
- bump version to 1.0.0-rc1 for release
- bump develop to 0.9.13-dev
🐳 Docker Images
docker pull ghcr.io/pullboxapp/pullbox:1.0.0-rc1
docker pull docker.io/pullbox/pullbox:1.0.0-rc1Digest: sha256:bd1e3f48bd15a1e6d837fd867937a5f96af3cf1ed8e04bcb39ff140e6510074d
🔐 Image Verification
Release images are signed with keyless Sigstore/Cosign using GitHub Actions OIDC.
These commands verify the exact multi-architecture image digest published by this release.
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.0-rc1$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
ghcr.io/pullboxapp/pullbox@sha256:bd1e3f48bd15a1e6d837fd867937a5f96af3cf1ed8e04bcb39ff140e6510074d
cosign verify \
--certificate-identity-regexp '^https://github.com/pullboxapp/pullbox/\.github/workflows/docker-release\.yml@refs/tags/v1.0.0-rc1$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
docker.io/pullbox/pullbox@sha256:bd1e3f48bd15a1e6d837fd867937a5f96af3cf1ed8e04bcb39ff140e6510074dFull Changelog: v0.9.12...v1.0.0-rc1