qBitrr2 5.4.4__tar.gz → 5.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. {qbitrr2-5.4.4/qBitrr2.egg-info → qbitrr2-5.5.0}/PKG-INFO +88 -13
  2. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/README.md +85 -11
  3. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/config.example.toml +306 -64
  4. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/pyproject.toml +4 -3
  5. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/arss.py +457 -127
  6. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/bundled_data.py +2 -2
  7. qbitrr2-5.5.0/qBitrr/config_version.py +144 -0
  8. qbitrr2-5.5.0/qBitrr/db_lock.py +268 -0
  9. qbitrr2-5.5.0/qBitrr/db_recovery.py +202 -0
  10. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/gen_config.py +285 -3
  11. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/main.py +171 -5
  12. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/search_activity_store.py +6 -2
  13. qbitrr2-5.5.0/qBitrr/static/assets/ArrView.js +2 -0
  14. qbitrr2-5.5.0/qBitrr/static/assets/ArrView.js.map +1 -0
  15. qbitrr2-5.5.0/qBitrr/static/assets/ConfigView.js +5 -0
  16. qbitrr2-5.5.0/qBitrr/static/assets/ConfigView.js.map +1 -0
  17. qbitrr2-5.5.0/qBitrr/static/assets/LogsView.js +208 -0
  18. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/LogsView.js.map +1 -1
  19. qbitrr2-5.5.0/qBitrr/static/assets/ProcessesView.js +2 -0
  20. qbitrr2-5.5.0/qBitrr/static/assets/ProcessesView.js.map +1 -0
  21. qbitrr2-5.5.0/qBitrr/static/assets/app.css +1 -0
  22. qbitrr2-5.5.0/qBitrr/static/assets/app.js +3 -0
  23. qbitrr2-5.5.0/qBitrr/static/assets/app.js.map +1 -0
  24. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/react-select.esm.js +1 -8
  25. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/react-select.esm.js.map +1 -1
  26. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/table.js +2 -20
  27. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/table.js.map +1 -1
  28. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/vendor.js +1 -25
  29. qbitrr2-5.5.0/qBitrr/static/assets/vendor.js.map +1 -0
  30. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/sw.js +5 -0
  31. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/tables.py +27 -0
  32. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/webui.py +523 -23
  33. {qbitrr2-5.4.4 → qbitrr2-5.5.0/qBitrr2.egg-info}/PKG-INFO +88 -13
  34. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr2.egg-info/SOURCES.txt +2 -0
  35. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/setup.cfg +3 -2
  36. qbitrr2-5.4.4/qBitrr/db_lock.py +0 -79
  37. qbitrr2-5.4.4/qBitrr/static/assets/ArrView.js +0 -2
  38. qbitrr2-5.4.4/qBitrr/static/assets/ArrView.js.map +0 -1
  39. qbitrr2-5.4.4/qBitrr/static/assets/ConfigView.js +0 -4
  40. qbitrr2-5.4.4/qBitrr/static/assets/ConfigView.js.map +0 -1
  41. qbitrr2-5.4.4/qBitrr/static/assets/LogsView.js +0 -230
  42. qbitrr2-5.4.4/qBitrr/static/assets/ProcessesView.js +0 -2
  43. qbitrr2-5.4.4/qBitrr/static/assets/ProcessesView.js.map +0 -1
  44. qbitrr2-5.4.4/qBitrr/static/assets/app.css +0 -1
  45. qbitrr2-5.4.4/qBitrr/static/assets/app.js +0 -11
  46. qbitrr2-5.4.4/qBitrr/static/assets/app.js.map +0 -1
  47. qbitrr2-5.4.4/qBitrr/static/assets/vendor.js.map +0 -1
  48. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/LICENSE +0 -0
  49. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/MANIFEST.in +0 -0
  50. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/__init__.py +0 -0
  51. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/auto_update.py +0 -0
  52. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/config.py +0 -0
  53. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/env_config.py +0 -0
  54. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/errors.py +0 -0
  55. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/ffprobe.py +0 -0
  56. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/home_path.py +0 -0
  57. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/logger.py +0 -0
  58. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/build.svg +0 -0
  59. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/check-mark.svg +0 -0
  60. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/close.svg +0 -0
  61. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/download.svg +0 -0
  62. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/gear.svg +0 -0
  63. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/lidarr.svg +0 -0
  64. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/live-streaming.svg +0 -0
  65. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/log.svg +0 -0
  66. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/plus.svg +0 -0
  67. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/process.svg +0 -0
  68. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/refresh-arrow.svg +0 -0
  69. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/trash.svg +0 -0
  70. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/up-arrow.svg +0 -0
  71. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/useInterval.js +0 -0
  72. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/useInterval.js.map +0 -0
  73. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/visibility.svg +0 -0
  74. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/index.html +0 -0
  75. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/manifest.json +0 -0
  76. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/vite.svg +0 -0
  77. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/utils.py +0 -0
  78. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/versioning.py +0 -0
  79. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr2.egg-info/dependency_links.txt +0 -0
  80. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr2.egg-info/entry_points.txt +0 -0
  81. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr2.egg-info/requires.txt +0 -0
  82. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr2.egg-info/top_level.txt +0 -0
  83. {qbitrr2-5.4.4 → qbitrr2-5.5.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qBitrr2
3
- Version: 5.4.4
3
+ Version: 5.5.0
4
4
  Summary: Intelligent automation for qBittorrent and *Arr apps (Radarr/Sonarr/Lidarr) - health monitoring, instant imports, quality upgrades, request integration
5
5
  Home-page: https://github.com/Feramance/qBitrr
6
6
  Author: Feramance
@@ -25,6 +25,7 @@ Classifier: Operating System :: MacOS :: MacOS X
25
25
  Classifier: Operating System :: Microsoft :: Windows
26
26
  Classifier: Operating System :: POSIX :: Linux
27
27
  Classifier: Programming Language :: Python :: 3 :: Only
28
+ Classifier: Programming Language :: Python :: 3.11
28
29
  Classifier: Programming Language :: Python :: 3.12
29
30
  Classifier: Programming Language :: Python :: Implementation :: CPython
30
31
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -35,7 +36,7 @@ Classifier: Topic :: System :: Monitoring
35
36
  Classifier: Topic :: Terminals
36
37
  Classifier: Topic :: Utilities
37
38
  Classifier: Typing :: Typed
38
- Requires-Python: <4,>=3.12
39
+ Requires-Python: <4,>=3.11
39
40
  Description-Content-Type: text/markdown
40
41
  License-File: LICENSE
41
42
  Requires-Dist: cachetools
@@ -135,13 +136,15 @@ qBitrr is the intelligent glue between qBittorrent and the *Arr ecosystem (Radar
135
136
  - **Custom format scoring** – search for releases meeting minimum custom format scores
136
137
  - **Overseerr/Ombi integration** – auto-pull and prioritize user requests from request management tools
137
138
  - **Smart search modes** – series-level or episode-level search for TV shows based on context
138
- - **Temporary quality profiles** – use lower quality profiles for missing items, upgrade later
139
+ - **Temporary quality profiles** – use lower quality profiles for missing items, upgrade later with flexible mapping
139
140
 
140
141
  ### 📊 Quality & Metadata Management
141
142
  - **RSS sync automation** – schedule periodic RSS feed refreshes across all Arr instances
142
143
  - **Queue management** – auto-refresh download queues to keep Arr instances in sync
143
144
  - **Custom format enforcement** – automatically remove torrents not meeting minimum CF scores
144
- - **Quality profile switching** – dynamically change profiles for missing vs. upgrade searches
145
+ - **Quality profile switching** – dynamically change profiles for missing vs. upgrade searches with per-profile mapping
146
+ - **Interactive profile configuration** – test Arr connections and select quality profiles from dropdowns in WebUI
147
+ - **Auto-reset profiles** – force reset temp profiles on startup or after configurable timeouts
145
148
  - **Year-based search ordering** – prioritize searches by release date (newest first or reverse)
146
149
 
147
150
  ### 🌱 Seeding & Tracker Control
@@ -168,12 +171,16 @@ qBitrr is the intelligent glue between qBittorrent and the *Arr ecosystem (Radar
168
171
  - **Smart restart mechanism** – uses `os.execv()` for true in-place restarts (no supervisor needed)
169
172
  - **Cross-platform compatibility** – works in Docker, systemd, native installs, Windows, Linux, macOS
170
173
  - **Graceful shutdown** – cleanly closes databases, flushes logs, terminates child processes
174
+ - **Process auto-restart** – automatically restarts crashed Arr manager processes with crash loop protection
175
+ - **Crash loop detection** – prevents infinite restart loops with configurable max restart limits and time windows
176
+ - **Configurable restart behavior** – control restart delays, maximum attempts, and monitoring windows via WebUI
171
177
 
172
178
  ### 💻 First-Party Web UI
173
179
  - **Live process monitoring** – see all running Arr managers and their current activity
174
180
  - **Log viewer** – tail logs in real-time with filtering and search
175
- - **Arr insights** – view movies, series, albums with filtering by year, quality, status
176
- - **Config editor** – edit configuration directly from the UI
181
+ - **Arr insights** – view movies, series, albums with filtering by year, quality, status, and quality profiles
182
+ - **Config editor** – edit configuration directly from the UI with validation and helpful tooltips
183
+ - **Test connections** – validate Arr credentials and load quality profiles with one click
177
184
  - **Restart controls** – restart individual processes or the entire application
178
185
  - **Dark/light theme** – customizable UI appearance
179
186
  - **Token authentication** – optional API protection with bearer tokens
@@ -181,6 +188,8 @@ qBitrr is the intelligent glue between qBittorrent and the *Arr ecosystem (Radar
181
188
  ## 📌 State of the Project
182
189
  The long-term plan is still to ship a C# rewrite, but the Python edition isn't going anywhere—it gets regular fixes and features, and the Web UI is now production-ready. Ideas and PRs are welcome! Head over to the [issue templates](.github/ISSUE_TEMPLATE) or the [PR checklist](.github/pull_request_template.md) to get started.
183
190
 
191
+
192
+
184
193
  ## ⚡ Quickstart
185
194
  qBitrr supports Python 3.12+ on Linux, macOS, and Windows. Run it natively or in Docker—whatever fits your stack.
186
195
 
@@ -299,6 +308,7 @@ sudo systemctl status qbitrr
299
308
 
300
309
  2. **Configure Arr instances** (Radarr/Sonarr/Lidarr):
301
310
  - Each instance needs: `URI`, `APIKey`, `Category`
311
+ - **Naming format:** Instance names must follow pattern `(Radarr|Sonarr|Lidarr)-<name>` (e.g., `Radarr-Movies`, `Sonarr-TV4K`)
302
312
  - **Important:** Use matching categories in Arr's download client settings
303
313
  - **Tagging:** Ensure Arr instances tag their downloads so qBitrr can track them
304
314
 
@@ -430,11 +440,25 @@ Unmonitored = false # Include unmonitored items
430
440
  [Radarr-Movies.EntrySearch]
431
441
  UseTempForMissing = true
432
442
  KeepTempProfile = false
433
- MainQualityProfile = ["Ultra-HD", "HD-1080p"]
434
- TempQualityProfile = ["Web-DL", "HDTV-720p"]
443
+
444
+ # New: Map each main profile to a temp profile
445
+ QualityProfileMappings = { "Ultra-HD" = "Web-DL", "HD-1080p" = "HDTV-720p" }
446
+
447
+ # Auto-reset options
448
+ ForceResetTempProfiles = false # Reset all on startup
449
+ TempProfileResetTimeoutMinutes = 0 # Auto-reset after timeout (0 = disabled)
450
+ ProfileSwitchRetryAttempts = 3 # Retry failed profile switches
451
+
435
452
  # Searches missing items with temp profile, switches back after import
436
453
  ```
437
454
 
455
+ **Configure via WebUI:**
456
+ 1. Edit your Arr instance in the Config tab
457
+ 2. Click "Test Connection" to load available quality profiles
458
+ 3. Add profile mappings with the interactive UI (no JSON editing needed!)
459
+ 4. Select main and temp profiles from dropdowns
460
+ 5. Save and restart
461
+
438
462
  ---
439
463
 
440
464
  ### 📊 Quality Management
@@ -538,6 +562,11 @@ AutoPauseResume = true # Required for FreeSpace to work
538
562
  **Disable monitoring:**
539
563
  ```toml
540
564
  [Settings]
565
+ FreeSpace = "" # Empty string or 0 disables monitoring
566
+ ```
567
+
568
+ ---
569
+
541
570
  ### 🔄 Auto-Updates & Restarts
542
571
 
543
572
  qBitrr can automatically update itself by checking GitHub releases for new versions. The update behavior varies by installation type.
@@ -575,11 +604,11 @@ AutoUpdateCron = "0 3 * * 0" # Cron expression (default: Sunday 3 AM)
575
604
  ```
576
605
 
577
606
  **Cron Expression Examples:**
578
- ```toml
579
- "0 3 * * 0" # Every Sunday at 3:00 AM
580
- "0 */6 * * *" # Every 6 hours
581
- "0 0 * * *" # Daily at midnight
582
- "0 2 * * 1-5" # Weekdays at 2:00 AM
607
+ ```bash
608
+ 0 3 * * 0 # Every Sunday at 3:00 AM
609
+ 0 */6 * * * # Every 6 hours
610
+ 0 0 * * * # Daily at midnight
611
+ 0 2 * * 1-5 # Weekdays at 2:00 AM
583
612
  ```
584
613
 
585
614
  ---
@@ -777,6 +806,52 @@ curl -X POST http://localhost:6969/api/arr/radarr-movies/restart
777
806
 
778
807
  ---
779
808
 
809
+ ### 🔁 Process Auto-Restart & Crash Loop Protection
810
+
811
+ Your Arr manager processes (Radarr/Sonarr/Lidarr) automatically restart if they crash, preventing downtime. Built-in protection stops restart loops if a process keeps failing.
812
+
813
+ #### ⚙️ Configuration
814
+
815
+ **Basic Setup:**
816
+ ```toml
817
+ [Settings]
818
+ AutoRestartProcesses = true # Enable automatic restart
819
+ MaxProcessRestarts = 5 # Stop trying after 5 crashes
820
+ ProcessRestartWindow = 300 # Within 5 minutes
821
+ ProcessRestartDelay = 5 # Wait 5 seconds before restarting
822
+ ```
823
+
824
+ **What this means:**
825
+ - If a process crashes fewer than 5 times in 5 minutes, it auto-restarts
826
+ - If it crashes 5+ times in 5 minutes, qBitrr stops trying and logs an error
827
+ - After the 5-minute window passes, the counter resets and auto-restart resumes
828
+
829
+ **Configure via WebUI:**
830
+ 1. Navigate to **Config** tab
831
+ 2. Find the **Process Management** section
832
+ 3. Adjust restart behavior to your preference
833
+ 4. Save and restart qBitrr
834
+
835
+ #### 📊 Monitoring
836
+
837
+ **Via WebUI:**
838
+ - **Processes tab** shows all running managers with restart history
839
+ - Manually restart individual processes if needed
840
+
841
+ **Via Logs:**
842
+ ```bash
843
+ # See restart activity
844
+ tail -f ~/logs/Main.log | grep restart # Native
845
+ docker logs -f qbitrr | grep restart # Docker
846
+ sudo journalctl -u qbitrr -f | grep restart # Systemd
847
+ ```
848
+
849
+ #### 🆕 First-Time Setup
850
+
851
+ Existing configs automatically upgrade to version 3 on first startup. A timestamped backup is created before any changes. No manual action needed!
852
+
853
+ ---
854
+
780
855
  ## 🖥️ Built-in Web UI
781
856
  The React + Vite dashboard provides complete visibility and control over your qBitrr instance.
782
857
 
@@ -51,13 +51,15 @@ qBitrr is the intelligent glue between qBittorrent and the *Arr ecosystem (Radar
51
51
  - **Custom format scoring** – search for releases meeting minimum custom format scores
52
52
  - **Overseerr/Ombi integration** – auto-pull and prioritize user requests from request management tools
53
53
  - **Smart search modes** – series-level or episode-level search for TV shows based on context
54
- - **Temporary quality profiles** – use lower quality profiles for missing items, upgrade later
54
+ - **Temporary quality profiles** – use lower quality profiles for missing items, upgrade later with flexible mapping
55
55
 
56
56
  ### 📊 Quality & Metadata Management
57
57
  - **RSS sync automation** – schedule periodic RSS feed refreshes across all Arr instances
58
58
  - **Queue management** – auto-refresh download queues to keep Arr instances in sync
59
59
  - **Custom format enforcement** – automatically remove torrents not meeting minimum CF scores
60
- - **Quality profile switching** – dynamically change profiles for missing vs. upgrade searches
60
+ - **Quality profile switching** – dynamically change profiles for missing vs. upgrade searches with per-profile mapping
61
+ - **Interactive profile configuration** – test Arr connections and select quality profiles from dropdowns in WebUI
62
+ - **Auto-reset profiles** – force reset temp profiles on startup or after configurable timeouts
61
63
  - **Year-based search ordering** – prioritize searches by release date (newest first or reverse)
62
64
 
63
65
  ### 🌱 Seeding & Tracker Control
@@ -84,12 +86,16 @@ qBitrr is the intelligent glue between qBittorrent and the *Arr ecosystem (Radar
84
86
  - **Smart restart mechanism** – uses `os.execv()` for true in-place restarts (no supervisor needed)
85
87
  - **Cross-platform compatibility** – works in Docker, systemd, native installs, Windows, Linux, macOS
86
88
  - **Graceful shutdown** – cleanly closes databases, flushes logs, terminates child processes
89
+ - **Process auto-restart** – automatically restarts crashed Arr manager processes with crash loop protection
90
+ - **Crash loop detection** – prevents infinite restart loops with configurable max restart limits and time windows
91
+ - **Configurable restart behavior** – control restart delays, maximum attempts, and monitoring windows via WebUI
87
92
 
88
93
  ### 💻 First-Party Web UI
89
94
  - **Live process monitoring** – see all running Arr managers and their current activity
90
95
  - **Log viewer** – tail logs in real-time with filtering and search
91
- - **Arr insights** – view movies, series, albums with filtering by year, quality, status
92
- - **Config editor** – edit configuration directly from the UI
96
+ - **Arr insights** – view movies, series, albums with filtering by year, quality, status, and quality profiles
97
+ - **Config editor** – edit configuration directly from the UI with validation and helpful tooltips
98
+ - **Test connections** – validate Arr credentials and load quality profiles with one click
93
99
  - **Restart controls** – restart individual processes or the entire application
94
100
  - **Dark/light theme** – customizable UI appearance
95
101
  - **Token authentication** – optional API protection with bearer tokens
@@ -97,6 +103,8 @@ qBitrr is the intelligent glue between qBittorrent and the *Arr ecosystem (Radar
97
103
  ## 📌 State of the Project
98
104
  The long-term plan is still to ship a C# rewrite, but the Python edition isn't going anywhere—it gets regular fixes and features, and the Web UI is now production-ready. Ideas and PRs are welcome! Head over to the [issue templates](.github/ISSUE_TEMPLATE) or the [PR checklist](.github/pull_request_template.md) to get started.
99
105
 
106
+
107
+
100
108
  ## ⚡ Quickstart
101
109
  qBitrr supports Python 3.12+ on Linux, macOS, and Windows. Run it natively or in Docker—whatever fits your stack.
102
110
 
@@ -215,6 +223,7 @@ sudo systemctl status qbitrr
215
223
 
216
224
  2. **Configure Arr instances** (Radarr/Sonarr/Lidarr):
217
225
  - Each instance needs: `URI`, `APIKey`, `Category`
226
+ - **Naming format:** Instance names must follow pattern `(Radarr|Sonarr|Lidarr)-<name>` (e.g., `Radarr-Movies`, `Sonarr-TV4K`)
218
227
  - **Important:** Use matching categories in Arr's download client settings
219
228
  - **Tagging:** Ensure Arr instances tag their downloads so qBitrr can track them
220
229
 
@@ -346,11 +355,25 @@ Unmonitored = false # Include unmonitored items
346
355
  [Radarr-Movies.EntrySearch]
347
356
  UseTempForMissing = true
348
357
  KeepTempProfile = false
349
- MainQualityProfile = ["Ultra-HD", "HD-1080p"]
350
- TempQualityProfile = ["Web-DL", "HDTV-720p"]
358
+
359
+ # New: Map each main profile to a temp profile
360
+ QualityProfileMappings = { "Ultra-HD" = "Web-DL", "HD-1080p" = "HDTV-720p" }
361
+
362
+ # Auto-reset options
363
+ ForceResetTempProfiles = false # Reset all on startup
364
+ TempProfileResetTimeoutMinutes = 0 # Auto-reset after timeout (0 = disabled)
365
+ ProfileSwitchRetryAttempts = 3 # Retry failed profile switches
366
+
351
367
  # Searches missing items with temp profile, switches back after import
352
368
  ```
353
369
 
370
+ **Configure via WebUI:**
371
+ 1. Edit your Arr instance in the Config tab
372
+ 2. Click "Test Connection" to load available quality profiles
373
+ 3. Add profile mappings with the interactive UI (no JSON editing needed!)
374
+ 4. Select main and temp profiles from dropdowns
375
+ 5. Save and restart
376
+
354
377
  ---
355
378
 
356
379
  ### 📊 Quality Management
@@ -454,6 +477,11 @@ AutoPauseResume = true # Required for FreeSpace to work
454
477
  **Disable monitoring:**
455
478
  ```toml
456
479
  [Settings]
480
+ FreeSpace = "" # Empty string or 0 disables monitoring
481
+ ```
482
+
483
+ ---
484
+
457
485
  ### 🔄 Auto-Updates & Restarts
458
486
 
459
487
  qBitrr can automatically update itself by checking GitHub releases for new versions. The update behavior varies by installation type.
@@ -491,11 +519,11 @@ AutoUpdateCron = "0 3 * * 0" # Cron expression (default: Sunday 3 AM)
491
519
  ```
492
520
 
493
521
  **Cron Expression Examples:**
494
- ```toml
495
- "0 3 * * 0" # Every Sunday at 3:00 AM
496
- "0 */6 * * *" # Every 6 hours
497
- "0 0 * * *" # Daily at midnight
498
- "0 2 * * 1-5" # Weekdays at 2:00 AM
522
+ ```bash
523
+ 0 3 * * 0 # Every Sunday at 3:00 AM
524
+ 0 */6 * * * # Every 6 hours
525
+ 0 0 * * * # Daily at midnight
526
+ 0 2 * * 1-5 # Weekdays at 2:00 AM
499
527
  ```
500
528
 
501
529
  ---
@@ -693,6 +721,52 @@ curl -X POST http://localhost:6969/api/arr/radarr-movies/restart
693
721
 
694
722
  ---
695
723
 
724
+ ### 🔁 Process Auto-Restart & Crash Loop Protection
725
+
726
+ Your Arr manager processes (Radarr/Sonarr/Lidarr) automatically restart if they crash, preventing downtime. Built-in protection stops restart loops if a process keeps failing.
727
+
728
+ #### ⚙️ Configuration
729
+
730
+ **Basic Setup:**
731
+ ```toml
732
+ [Settings]
733
+ AutoRestartProcesses = true # Enable automatic restart
734
+ MaxProcessRestarts = 5 # Stop trying after 5 crashes
735
+ ProcessRestartWindow = 300 # Within 5 minutes
736
+ ProcessRestartDelay = 5 # Wait 5 seconds before restarting
737
+ ```
738
+
739
+ **What this means:**
740
+ - If a process crashes fewer than 5 times in 5 minutes, it auto-restarts
741
+ - If it crashes 5+ times in 5 minutes, qBitrr stops trying and logs an error
742
+ - After the 5-minute window passes, the counter resets and auto-restart resumes
743
+
744
+ **Configure via WebUI:**
745
+ 1. Navigate to **Config** tab
746
+ 2. Find the **Process Management** section
747
+ 3. Adjust restart behavior to your preference
748
+ 4. Save and restart qBitrr
749
+
750
+ #### 📊 Monitoring
751
+
752
+ **Via WebUI:**
753
+ - **Processes tab** shows all running managers with restart history
754
+ - Manually restart individual processes if needed
755
+
756
+ **Via Logs:**
757
+ ```bash
758
+ # See restart activity
759
+ tail -f ~/logs/Main.log | grep restart # Native
760
+ docker logs -f qbitrr | grep restart # Docker
761
+ sudo journalctl -u qbitrr -f | grep restart # Systemd
762
+ ```
763
+
764
+ #### 🆕 First-Time Setup
765
+
766
+ Existing configs automatically upgrade to version 3 on first startup. A timestamped backup is created before any changes. No manual action needed!
767
+
768
+ ---
769
+
696
770
  ## 🖥️ Built-in Web UI
697
771
  The React + Vite dashboard provides complete visibility and control over your qBitrr instance.
698
772