Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
243 commits
Select commit Hold shift + click to select a range
eaf3712
chore: minimize upstream maintainer mentions and remove donation/trac…
LavX Mar 19, 2026
a2b6ded
Merge pull request #15 from LavX/chore/minimize-upstream-mentions
LavX Mar 20, 2026
6b04a22
feat: extract embedded subtitles for AI batch translation (#14)
xfalcox Mar 20, 2026
b7a1f94
design: replace logo and update brand colors to golden/amber (#16)
LavX Mar 21, 2026
1de632c
fix(security): replace custom shell escaping with shlex.quote()
LavX Mar 21, 2026
965feb1
fix(security): replace eval() with json.loads() for throttled providers
LavX Mar 21, 2026
c7e2a4e
fix(security): enforce CSRF state validation in Plex OAuth flow
LavX Mar 21, 2026
4c08170
fix(security): upgrade password hashing from MD5 to PBKDF2-SHA256
LavX Mar 21, 2026
6828662
fix(security): add login brute-force protection with rate limiting
LavX Mar 21, 2026
7763c15
fix(security): block SSRF to cloud metadata via /test proxy
LavX Mar 21, 2026
68711e6
fix(security): block sensitive system directories from filesystem bro…
LavX Mar 21, 2026
03714a2
fix(security): add per-service TLS verification toggle
LavX Mar 21, 2026
7929f58
fix(security): deprecate API key via query string with logged warning
LavX Mar 21, 2026
9af4e80
fix: add Windows cmd.exe quoting support to _escape()
LavX Mar 21, 2026
41594ea
fix: address review findings for throttled providers
LavX Mar 21, 2026
46b9380
fix: enforce CSRF check when server issued state token
LavX Mar 21, 2026
7badb6b
fix: replace sessionStorage password with server-side upgrade token
LavX Mar 21, 2026
f755527
fix: increase PBKDF2 to 600k iterations, add write_config rollback
LavX Mar 21, 2026
63216ee
fix: pass CSRF state token from frontend in Plex OAuth pin check
LavX Mar 21, 2026
ffc389f
fix: prevent IP spoofing bypass and bound rate limiter memory
LavX Mar 21, 2026
2d3dda6
fix: prevent DNS rebinding SSRF bypass, block loopback, fail-closed
LavX Mar 21, 2026
a7ed4a9
fix: use Dynaconf dot-path API and validate service name
LavX Mar 21, 2026
1825f56
fix: use timing-safe comparison for API key, prevent log injection
LavX Mar 21, 2026
052938b
fix: block /etc, /root, /tmp from filesystem browser
LavX Mar 21, 2026
47ec232
fix: handle corrupted PBKDF2 hash gracefully in _verify_password
LavX Mar 21, 2026
8bdc74c
fix: prevent re.sub backslash interpretation in replacements
LavX Mar 22, 2026
05bd641
fix: allow dual-stack hosts with mixed private/link-local addresses
LavX Mar 22, 2026
98bb4f3
fix: remove /run from blocked paths to allow /run/media mounts
LavX Mar 22, 2026
3181a86
fix: suppress deprecation warning for internal Plex webhook callbacks
LavX Mar 22, 2026
4040234
Merge pull request #17 from LavX/fix/shell-injection-post-processing
LavX Mar 22, 2026
8dfbcd4
Merge pull request #18 from LavX/fix/eval-throttled-providers
LavX Mar 22, 2026
b6b8ff4
Merge pull request #19 from LavX/fix/plex-oauth-csrf-enforcement
LavX Mar 22, 2026
c6a93d9
Merge pull request #20 from LavX/fix/md5-to-pbkdf2-password-hashing
LavX Mar 22, 2026
bafa88d
Merge pull request #22 from LavX/fix/ssrf-test-proxy-restriction
LavX Mar 22, 2026
0eb7374
Merge pull request #23 from LavX/fix/filesystem-browser-sandboxing
LavX Mar 22, 2026
44b73f2
Merge pull request #24 from LavX/fix/tls-verification-toggle
LavX Mar 22, 2026
9989b4a
Merge pull request #25 from LavX/fix/deprecate-query-string-apikey
LavX Mar 22, 2026
b51c136
merge: resolve conflict with development branch
LavX Mar 22, 2026
4afebf8
Merge pull request #21 from LavX/fix/login-brute-force-protection
LavX Mar 22, 2026
fee2891
fix(design): improve brand color contrast and update theme-color
LavX Mar 22, 2026
2f85d3f
Merge pull request #26 from LavX/fix/brand-contrast-and-theme-color
LavX Mar 22, 2026
6e324c3
fix: opensubtitles scraper robustness issues
LavX Mar 22, 2026
64b6eb6
fix(ci): workflow issues from audit
LavX Mar 22, 2026
28b82ab
fix(docs): README scraper port, env vars, and FlareSolverr
LavX Mar 22, 2026
056c29d
Merge pull request #27 from LavX/fix/opensubtitles-scraper-code
LavX Mar 22, 2026
452e60f
Merge pull request #28 from LavX/fix/ci-workflows
LavX Mar 22, 2026
4acb4b8
Merge pull request #29 from LavX/fix/readme-scraper-docs
LavX Mar 22, 2026
6be14d4
fix: provider code bugs from post-fix audit
LavX Mar 22, 2026
119bc0b
fix(ci): skip_scraper, Dockerfile ARGs, and config default
LavX Mar 22, 2026
fbb7daa
Merge pull request #30 from LavX/fix/provider-code-bugs
LavX Mar 22, 2026
1278834
Merge pull request #31 from LavX/fix/ci-skip-scraper-and-args
LavX Mar 22, 2026
3193b1d
chore: update submodules to latest + add .claude to gitignore
LavX Mar 22, 2026
7bbdf6c
chore: update submodules to latest remote main
LavX Mar 22, 2026
cdcdc36
chore(ci): remove scraper and translator build workflows
LavX Mar 22, 2026
5f3dc83
feat(scraper): rewrite to use v1 REST API with full metadata
LavX Mar 22, 2026
fcc3095
Merge pull request #32 from LavX/fix/scraper-v1-api
LavX Mar 22, 2026
da761a9
fix: translation job failure handling and status ring colors
LavX Mar 22, 2026
07ec478
feat(ui): navy dark theme matching logo background
LavX Mar 22, 2026
a514c95
feat(ui): 3-button unsaved changes modal with Save & Leave
LavX Mar 22, 2026
ba72b3e
feat(ui): floating sticky save button with Ctrl+S shortcut
LavX Mar 22, 2026
b04ae81
refactor: extract translator options and AIModelSelector to Translato…
LavX Mar 22, 2026
344d851
feat(ui): dedicated AI Translator settings page with route
LavX Mar 22, 2026
07fef8e
feat(ui): translator status visual refresh with a11y fixes
LavX Mar 22, 2026
0c551e8
Merge pull request #33 from LavX/fix/translation-jobs-and-ui
LavX Mar 22, 2026
ae18c18
test: update Layout test for floating save, add Translator page tests
LavX Mar 22, 2026
a89f332
test: fix translator test parallelism, use static imports
LavX Mar 22, 2026
66166b8
Merge remote-tracking branch 'origin/development' into fix/settings-u…
LavX Mar 22, 2026
5e623d2
fix(ui): searchable model selector, password field for API key
LavX Mar 22, 2026
d5b16eb
feat(translator): reorder options — AI Subtitle Translator first
LavX Mar 23, 2026
6578437
refactor(translator): extract ModelDetailsCard into own module with R…
LavX Mar 23, 2026
2260b34
refactor(translator): simplify status panel, heartbeat indicator, rem…
LavX Mar 23, 2026
e6908d0
feat(translator): restructure settings page — card zones with inline …
LavX Mar 23, 2026
618c771
feat(translator): settings page redesign + enriched job tracking
LavX Mar 23, 2026
6ccf84e
feat(translator): translate from missing subtitle menu + auto disk scan
LavX Mar 23, 2026
155ec1c
fix: light/dark mode contrast for gradient badges, save button, reaso…
LavX Mar 23, 2026
2eb5607
Merge pull request #34 from LavX/fix/settings-ui-redesign
LavX Mar 23, 2026
6e15c0f
chore: rebrand to Bazarr+, update versioning to v{upstream}+YYMMDD
LavX Mar 24, 2026
88cc2b7
feat(ui): logo variants, releases page markdown, header cleanup
LavX Mar 24, 2026
99ec971
Merge pull request #35 from LavX/chore/rebrand-bazarr-plus
LavX Mar 24, 2026
b7de40b
feat(providers): add provider priority toggle and improve modal buttons
LavX Mar 24, 2026
53b7c99
Merge pull request #36 from LavX/feat/provider-priority-toggle
LavX Mar 24, 2026
d7c3be1
docs: rewrite Why Bazarr+? with verified facts, fix JIT and Docker cl…
LavX Mar 24, 2026
89d5583
docs: full README review, remove duplicates, fix stale references
LavX Mar 24, 2026
28839a0
Update README with new AI model details
LavX Mar 24, 2026
1821445
Update audio language display description in README
LavX Mar 24, 2026
5940b9f
deps: add cryptography for API key encryption
LavX Mar 24, 2026
0dfae19
feat(encryption): add AES-256-GCM encryption utility for API keys
LavX Mar 24, 2026
07b6e4b
feat(encryption): add encryption key config setting
LavX Mar 24, 2026
a3a52ba
feat(encryption): encrypt API key in translator requests
LavX Mar 24, 2026
d8947e8
feat(encryption): add test connection endpoint
LavX Mar 24, 2026
b4db43b
feat(encryption): add test connection API hook
LavX Mar 24, 2026
4e52d3f
feat(encryption): add encryption key field and test button to settings
LavX Mar 24, 2026
c578508
test(encryption): add integration tests for _get_api_key_value helper
LavX Mar 24, 2026
5d1a8ff
fix(encryption): test button sends current form values, not saved set…
LavX Mar 24, 2026
b8b7f78
feat(encryption): polish connection card UI
LavX Mar 24, 2026
8baf548
Merge pull request #37 from LavX/feat/encryption-integration
LavX Mar 24, 2026
4a1665c
chore: update README with new logo and screenshots
LavX Mar 24, 2026
6e56e51
Modify README title and center alignment
LavX Mar 24, 2026
fb09da3
Merge pull request #38 from LavX/chore/update-screenshots
LavX Mar 24, 2026
a5c618c
Update logo width in README
LavX Mar 24, 2026
67eb6b3
chore: update README with missing features and new screenshots
LavX Mar 24, 2026
3460ac1
feat: add mass subtitle sync core logic
LavX Mar 24, 2026
0344348
feat: add batch sync API endpoint
LavX Mar 24, 2026
16c9171
feat: register mass sync as scheduled task
LavX Mar 24, 2026
2003a63
feat: add batch sync API client and hook
LavX Mar 24, 2026
6d327e6
feat: add mass sync form modal
LavX Mar 24, 2026
9ff2348
feat: add toolbarExtras render prop to MassEditor
LavX Mar 24, 2026
fbe1061
feat: add sync subtitles button to mass edit pages
LavX Mar 24, 2026
d0388ef
test: add tests for mass subtitle sync core logic
LavX Mar 24, 2026
0ce454d
docs: add mass subtitle sync to README
LavX Mar 24, 2026
fdc45dd
feat: add HMAC-SHA256 auth for AI Subtitle Translator requests
LavX Mar 25, 2026
20d3847
Merge pull request #39 from LavX/feature/mass-sync
LavX Mar 25, 2026
53606ef
Merge pull request #40 from LavX/feature/translator-security-hardening
LavX Mar 25, 2026
f5d9380
fix: process sync sequentially in single job instead of queuing thous…
LavX Mar 25, 2026
a6841bc
Merge pull request #41 from LavX/fix/mass-sync-sequential
LavX Mar 25, 2026
089f122
Update Mass Subtitle Sync references in README
LavX Mar 25, 2026
8ec9429
remove: strip all Google Analytics tracking from codebase
LavX Mar 25, 2026
f32368a
test: add failing tests for unified mass_batch_operation
LavX Mar 25, 2026
21309dc
feat: implement unified mass_batch_operation for all batch actions
LavX Mar 25, 2026
18722d1
feat: add unified POST /api/subtitles/batch endpoint
LavX Mar 25, 2026
a080d8c
refactor: replace batch_sync + batch_translate + mass_sync with unifi…
LavX Mar 25, 2026
1f87879
feat: unified batch API client and React Query hook
LavX Mar 25, 2026
0c97dc7
refactor: update sync and translate forms to use unified batch API
LavX Mar 25, 2026
fc2fb78
feat: add BatchModConfirmForm for simple batch action confirmation
LavX Mar 25, 2026
2796292
feat: add row selection and toolbar support to ItemView
LavX Mar 25, 2026
d9975d4
feat: add inline bulk actions to Series page
LavX Mar 25, 2026
02113e2
feat: add inline bulk actions to Movies page
LavX Mar 25, 2026
8743d9e
fix: add WantedSeriesItem type and use correct item types for modals
LavX Mar 25, 2026
2159522
feat: add Change Profile dropdown to inline bulk actions
LavX Mar 25, 2026
2c50ccf
refactor: remove separate Mass Editor pages, replaced by inline bulk …
LavX Mar 25, 2026
eaee04f
fix: resolve pre-existing TypeScript errors
LavX Mar 25, 2026
ad34882
fix: change MSW to warn on unhandled requests instead of error
LavX Mar 25, 2026
1ffc2ea
fix: resolve pre-existing backend test failures
LavX Mar 25, 2026
76e428d
fix: add missing MSW mock handlers for language API endpoints
LavX Mar 25, 2026
e40e010
test: increase mass_operations.py coverage to 99%
LavX Mar 25, 2026
61f6df9
fix: queue batch operations as proper jobs for sidebar visibility and…
LavX Mar 25, 2026
09620b3
fix: use Mantine Tooltip for Series status icons instead of native ti…
LavX Mar 25, 2026
7b592bd
fix: address review findings from 10-agent review
LavX Mar 25, 2026
375121f
feat: skip batch translate when target language subtitle already exists
LavX Mar 25, 2026
f879463
feat: add upgrade subtitles to batch actions toolbar
LavX Mar 25, 2026
9a6072f
chore: gitignore .coverage file
LavX Mar 25, 2026
1702ded
fix: pass source/target language through options for batch translate …
LavX Mar 25, 2026
64faee1
fix: use 'movies' media_type to match existing translate convention, …
LavX Mar 25, 2026
99580f0
fix: don't pass batch job_id to translate, let each translation queue…
LavX Mar 25, 2026
6351a31
feat: show media title in translation job names in sidebar
LavX Mar 25, 2026
5201277
fix: handle partial translation status as failure instead of infinite…
LavX Mar 25, 2026
10ff1b3
fix: prevent selecting same language for source and target in transla…
LavX Mar 25, 2026
19421bb
fix: avoid local variable leak in translate_subtitles_file that broke…
LavX Mar 25, 2026
0f25703
fix: auto-refresh movies/series list when subtitles change via socket…
LavX Mar 25, 2026
27e971c
feat: add page size selector with All option to table pagination
LavX Mar 25, 2026
8623aa5
feat: replace per-row wrench with full actions dropdown menu
LavX Mar 25, 2026
c1f3825
fix: always fetchAll for Series/Movies so page size selector works wi…
LavX Mar 25, 2026
7950944
feat: add GET /api/subtitles/upgradable endpoint for upgrade indicators
LavX Mar 25, 2026
d73f8f5
feat: show upgrade available indicator in Movies and Series tables
LavX Mar 25, 2026
0cac7f5
fix: respect Retry-After header from scraper service instead of hardc…
LavX Mar 25, 2026
79e983f
fix: log APIThrottled as warning instead of error with full traceback
LavX Mar 25, 2026
be2f599
fix: tone down upgrade indicator to subtle dimmed icon with honest to…
LavX Mar 25, 2026
868f770
fix: use circle-down icon for low quality subtitle indicator
LavX Mar 25, 2026
aab588f
fix: frontend review findings - form consistency, selection reset on …
LavX Mar 26, 2026
c64f7e2
fix: batch upgrade respects selection, fix scraper scoring and fps crash
LavX Mar 26, 2026
e839fd8
docs: add bulk operations section to README
LavX Mar 26, 2026
412c6be
fix: batch translate filters by source language to prevent wrong-lang…
LavX Mar 26, 2026
ab7f52a
fix: use unauthenticated /ping endpoint for Docker healthcheck
LavX Mar 26, 2026
cdb20c7
fix: scheduler mass sync re-queues as single job, remove dead per-ite…
LavX Mar 26, 2026
acda8f1
fix: socket invalidation and upgradable query accuracy
LavX Mar 26, 2026
35a7400
fix: allow batch mod actions on forced subtitles
LavX Mar 26, 2026
9963967
feat: add read-only subtitle viewer page (Phase 0)
LavX Mar 27, 2026
0e0eb43
Merge pull request #43 from LavX/feature/subtitle-viewer
LavX Mar 27, 2026
a88e847
fix: route individual subtitle mod actions through job queue
LavX Mar 27, 2026
933124a
Merge pull request #44 from LavX/fix/individual-mod-jobs
LavX Mar 27, 2026
3e16c28
chore: remove hardcoded local announcements
LavX Mar 27, 2026
14eef4b
Merge pull request #45 from LavX/chore/remove-hardcoded-announcements
LavX Mar 27, 2026
44057e2
feat(ui): replace Roboto with Geist Sans variable font
LavX Mar 27, 2026
e5da18f
feat(ui): add grain texture, ambient glow, and reduced motion support
LavX Mar 27, 2026
e819673
feat(ui): add design tokens, text hierarchy, radius scale, and light …
LavX Mar 27, 2026
54c7179
feat(ui): update header with ghost-style buttons and refined borders
LavX Mar 27, 2026
1c911f6
feat(ui): redesign sidebar with grouped sections and atmospheric styling
LavX Mar 27, 2026
712dd96
feat(ui): redesign episode table rows with borderless hover treatment
LavX Mar 27, 2026
5a51f93
fix(ui): fix audio badges, progress bars, sidebar badges, and toolbar…
LavX Mar 27, 2026
a828f29
merge: cherry-pick v2-release-prep branding, resolve conflicts keepin…
LavX Mar 27, 2026
dd03f5d
feat(ui): global token adoption - body bg, inputs, buttons, cards, ta…
LavX Mar 27, 2026
60d9100
feat(ui): sweep - modals, dimmed text, badge variants, Mantine variab…
LavX Mar 27, 2026
bf6fd6d
feat(ui): global dropdown/menu/combobox atmospheric dark styling
LavX Mar 27, 2026
511367d
fix(ui): tokenize badge radius/transitions, fix brand color consistency
LavX Mar 27, 2026
33160ae
fix(ui): make grain/glow actually visible (z-index + opacity fix), re…
LavX Mar 27, 2026
24a978c
fix(ui): skeptic fixes - sidebar surface, active indicator, icon size…
LavX Mar 27, 2026
3e4d850
fix(ui): improve spacing - sidebar padding, nav gaps, group margins, …
LavX Mar 27, 2026
8cb6455
fix(ui): remove cyan highlight from movie/history badges, use ghost d…
LavX Mar 27, 2026
69d65ed
feat(ui): override all Mantine colors, add fanart bleed effect with g…
LavX Mar 27, 2026
24a82de
fix(ui): fanart bleeds OUT into page, not in - gradient fades outward…
LavX Mar 27, 2026
620e129
fix(ui): fanart fade is now a separate strip below image, not overlap…
LavX Mar 27, 2026
84e2d37
fix(ui): make progress bar labels readable - size xl with proper labe…
LavX Mar 27, 2026
b82b055
fix(ui): floating save button, Jobs Manager ring sizing, Settings pag…
LavX Mar 27, 2026
b8b2e03
fix(ui): remove all cyan - replace with green in badge highlights, Th…
LavX Mar 28, 2026
5de603c
fix(ui): subtitle badge menu opens on click, not hover
LavX Mar 28, 2026
eb84c91
fix(ui): light mode polish, layout fixes, lint cleanup, batch API cam…
LavX Mar 28, 2026
9c6509a
fix(ui): remaining unstaged changes from atmospheric dark redesign
LavX Mar 28, 2026
2e62aa6
style: run prettier on all frontend files
LavX Mar 28, 2026
bdfa491
fix(test): add MSW mock for /api/subtitles/upgradable endpoint
LavX Mar 29, 2026
42181e4
fix: PR review fixes - remove superpowers, fix bugs, improve consistency
LavX Mar 29, 2026
506562b
style: run prettier on 4 files
LavX Mar 29, 2026
1fdcdc9
fix(lint): suppress camelcase warnings for backend action identifiers
LavX Mar 29, 2026
16fcfce
Merge pull request #46 from LavX/feature/atmospheric-dark-redesign
LavX Mar 29, 2026
aef432f
Fixed conditional logic in `OpenSubtitles` provider to include `title…
morpheus65535 Mar 2, 2026
3f4e186
Fixed NoneType error in `SubX` provider when description is null
JMVS Mar 2, 2026
bb91b15
Added HTTP 403 retry mechanism with delay and logging in `SubsSabBz` …
morpheus65535 Mar 2, 2026
7fa42a1
Fixed RCE vulnerability by replacing pickle deserialization with a se…
N3314bh Mar 3, 2026
afdf7a7
no log: small fixes after last PR merge
morpheus65535 Mar 3, 2026
ba09ad6
Fix for unexpected child termination issue #3233
JaiZed Mar 12, 2026
c1b6bf2
Fixed legendasnet response parsing
anderson-oki Mar 13, 2026
d8cfbe4
Fixed Sonarr/Radarr v3 API version fallback by catching all exception…
MikeTheCanuck Mar 28, 2026
01f260e
Improved rate limit handling in subx provider
JMVS Mar 18, 2026
7623dfc
Added `on_conflict_do_nothing` to notifier database insert to handle …
morpheus65535 Mar 27, 2026
1cedb39
Improved feedback when saving Languages Profile by showing loading st…
MikeTheCanuck Mar 28, 2026
0f4f9d0
no log: Bump lodash to 4.17.23
anderson-oki Mar 10, 2026
aab8409
no log: Prepare husky for v10
anderson-oki Mar 11, 2026
6e956ae
Added `wait_for_completion` argument across job functions and schedul…
morpheus65535 Mar 27, 2026
6d7cebb
Fixed `check_update` logic to improve job handling and added `startup…
morpheus65535 Mar 27, 2026
cd2786f
Refactored Sonarr series sync logic to simplify and optimize database…
morpheus65535 Mar 20, 2026
bb1c878
Refactored scoring system to refine the matches and scores to increas…
morpheus65535 Mar 16, 2026
1741968
Improved outcome message on completed subtitles search in jobs manage…
MikeTheCanuck Mar 28, 2026
1c49dba
Added two point alignment mods
slimcdk Mar 21, 2026
9524263
no log: fix improper jobs manager icon in header menu
morpheus65535 Mar 13, 2026
24224c1
Fixed file permission is not applied to translated subtitles and othe…
JaiZed Mar 19, 2026
03fd9f8
Fixed subtitles providers throttling by adjusting time_until_midnight…
morpheus65535 Mar 19, 2026
2e8abe3
Added gemini translation batch size config and multiple api keys rota…
mzglinski Mar 27, 2026
da65bff
no log: Apply security vulnerability fixes
anderson-oki Mar 10, 2026
dfb9788
chore: bump all frontend deps to match upstream, migrate to ESLint 10…
LavX Mar 29, 2026
133b109
chore: update vendored Python libs from upstream, drop Python 3.8/3.9
LavX Mar 29, 2026
13b9547
style: run prettier on 3 files after dep bump
LavX Mar 29, 2026
34d47f8
fix: batch endpoint crash, react-router blocker, and test stability
LavX Mar 29, 2026
c01511f
feat: add emoji removal to batch operations
LavX Mar 29, 2026
4caf7eb
Merge pull request #47 from LavX/chore/upstream-libs-sync
LavX Mar 30, 2026
c616aa0
fix: upgrade subtitle path fallback, throttle crash, and null score g…
LavX Mar 30, 2026
1e4584e
feat: per-provider progress tracking in subtitle searches
LavX Mar 30, 2026
df2ecf6
fix: move terminate_child out of finally block in restart handler
LavX Mar 30, 2026
9f20e48
feat: health check for opensubtitles scraper on provider init
LavX Mar 30, 2026
3003dbc
Merge pull request #48 from LavX/fix/upgrade-and-search-improvements
LavX Mar 30, 2026
53312df
fix: lower default minimum score from 90% to 80% for series
LavX Mar 30, 2026
875bdde
chore: add bazarr-binaries submodule with updated announcements
LavX Mar 30, 2026
dca2840
fix: use version_tag for display version in custom Docker builds
LavX Mar 30, 2026
dd379d6
fix: write announcements file on both jsdelivr and GitHub fallback
LavX Mar 30, 2026
ea83f3e
docs: replace screenshots with current UI, move above feature details
LavX Mar 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
20 changes: 0 additions & 20 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,26 +1,6 @@
# Auto-detect text files and perform LF normalization
* text=auto

# Fork-specific files - always keep ours during merge conflicts
# These files contain customizations that should not be overwritten by upstream merges
README.md merge=ours
package_info merge=ours
bazarr/app/check_update.py merge=ours
custom_libs/subliminal_patch/providers/opensubtitles_scraper.py merge=ours
Dockerfile merge=ours
docker-compose.yml merge=ours
docker/entrypoint.sh merge=ours
.dockerignore merge=ours
.gitattributes merge=ours
docs/FORK_MAINTENANCE.md merge=ours

# GitHub workflows - keep our fork's versions
.github/workflows/* merge=ours

# Git submodule - keep our reference
.gitmodules merge=ours
opensubtitles-scraper merge=ours

# Binary files
*.png binary
*.jpg binary
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem.

**Software (please complete the following information):**
- Bazarr: [e.g. v 0.6.1]
- Bazarr+: [e.g. v2.0.0]
- Radarr version [e.g. v 0.2.0.0001]
- Sonarr version [e.g. v 2.0.0.0001]
- OS: [e.g. Windows 10]
Expand Down
9 changes: 3 additions & 6 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: 📗 Wiki
url: https://github.com/morpheus65535/bazarr/wiki
url: https://wiki.bazarr.media
about: The Bazarr wiki should help guide you through installation and setup as well as help resolve common problems and answer frequently asked questions.
- name: 🚀 Feature suggestions
url: https://bazarr.featureupvote.com/
about: Share your suggestions or ideas to make Bazarr better!
- name: 🌐 Discord Support
url: https://discord.gg/MH2e2eb
about: Ask questions and talk about bazarr
url: https://github.com/LavX/bazarr/issues
about: Share your suggestions or ideas to make Bazarr+ better!
2 changes: 1 addition & 1 deletion .github/scripts/build_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ sleep 30

if kill -s 0 $PID
then
echo "Bazarr is still running. We'll test if UI is working..."
echo "Bazarr+ is still running. We'll test if UI is working..."
else
exit 1
fi
Expand Down
97 changes: 13 additions & 84 deletions .github/workflows/build-docker-manual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,6 @@ on:
options:
- master
- development
- feature/audio-display-with-filter
- python_3_14
- ai_translate
- no_telemetry
default: 'master'

build_type:
Expand All @@ -33,7 +29,7 @@ on:
default: 'dev'

version_tag:
description: 'Version tag (e.g., v1.5.3) - used for release builds'
description: 'Version tag (e.g., v2.0.0) - used for release builds'
required: false
default: ''
type: string
Expand All @@ -60,82 +56,11 @@ on:
- linux/arm64
default: 'linux/amd64,linux/arm64'

skip_scraper:
description: 'Skip building scraper image'
required: false
type: boolean
default: false

env:
REGISTRY: ghcr.io
# Note: IMAGE_NAME and SCRAPER_IMAGE_NAME are set dynamically in jobs to ensure lowercase
UI_DIRECTORY: ./frontend

jobs:
# ==========================================================================
# Build Scraper Image (optional)
# ==========================================================================
build-scraper:
if: ${{ !inputs.skip_scraper }}
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Set lowercase image names
run: |
echo "IMAGE_NAME=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV
echo "SCRAPER_IMAGE_NAME=${GITHUB_REPOSITORY_OWNER,,}/opensubtitles-scraper" >> $GITHUB_ENV

- name: Checkout
uses: actions/checkout@v5
with:
ref: ${{ inputs.branch }}
submodules: recursive

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Determine Scraper Tags
id: scraper-tags
run: |
TAGS="${{ env.REGISTRY }}/${{ env.SCRAPER_IMAGE_NAME }}:sha-$(git rev-parse --short HEAD)"

case "${{ inputs.build_type }}" in
release)
TAGS="${TAGS},${{ env.REGISTRY }}/${{ env.SCRAPER_IMAGE_NAME }}:latest"
;;
nightly)
TAGS="${TAGS},${{ env.REGISTRY }}/${{ env.SCRAPER_IMAGE_NAME }}:nightly"
;;
dev)
TAGS="${TAGS},${{ env.REGISTRY }}/${{ env.SCRAPER_IMAGE_NAME }}:dev"
;;
esac

echo "tags=$TAGS" >> $GITHUB_OUTPUT

- name: Build and Push Scraper Image
uses: docker/build-push-action@v6
with:
context: ./opensubtitles-scraper
file: ./opensubtitles-scraper/Dockerfile
platforms: ${{ inputs.platforms }}
push: true
tags: ${{ steps.scraper-tags.outputs.tags }}
cache-from: type=gha,scope=scraper
cache-to: type=gha,mode=max,scope=scraper

# ==========================================================================
# Build Frontend
# ==========================================================================
Expand All @@ -148,7 +73,7 @@ jobs:
ref: ${{ inputs.branch }}

- name: Setup NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version-file: "${{ env.UI_DIRECTORY }}/.nvmrc"
cache: 'npm'
Expand Down Expand Up @@ -185,7 +110,6 @@ jobs:
- name: Set lowercase image names
run: |
echo "IMAGE_NAME=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV
echo "SCRAPER_IMAGE_NAME=${GITHUB_REPOSITORY_OWNER,,}/opensubtitles-scraper" >> $GITHUB_ENV

- name: Checkout
uses: actions/checkout@v5
Expand Down Expand Up @@ -233,7 +157,7 @@ jobs:
VERSION=$(git describe --tags --always 2>/dev/null || echo "0.0.0")
fi
VERSION="${VERSION#v}" # Remove 'v' prefix
FORK_VERSION="${VERSION}-lavx"
FORK_VERSION="${VERSION}"

TAGS="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${FORK_VERSION}"
TAGS="${TAGS},${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:v${VERSION}"
Expand Down Expand Up @@ -277,11 +201,16 @@ jobs:
if [ -z "$CUSTOM_TAG" ]; then
CUSTOM_TAG="custom-${SHORT_SHA}"
fi
FORK_VERSION="${CUSTOM_TAG}"

# Use version_tag for display if provided, otherwise custom tag
if [ -n "${{ inputs.version_tag }}" ]; then
FORK_VERSION="${{ inputs.version_tag }}"
else
FORK_VERSION="${CUSTOM_TAG}"
fi

TAGS="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${CUSTOM_TAG}"
TAGS="${TAGS},${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${SHORT_SHA}"

echo "display_version=${FORK_VERSION}" >> $GITHUB_OUTPUT
;;
esac
Expand Down Expand Up @@ -322,8 +251,8 @@ jobs:
push: true
tags: ${{ steps.version.outputs.tags }}
labels: |
org.opencontainers.image.title=Bazarr (LavX Fork)
org.opencontainers.image.description=Bazarr with OpenSubtitles.org scraper support
org.opencontainers.image.title=Bazarr+
org.opencontainers.image.description=Bazarr+ - enhanced subtitle management
org.opencontainers.image.vendor=LavX
org.opencontainers.image.version=${{ steps.version.outputs.fork_version }}
org.opencontainers.image.revision=${{ github.sha }}
Expand Down
Loading
Loading