mirror of
https://github.com/StuffAnThings/qbit_manage.git
synced 2025-12-17 22:28:27 +08:00
# Requirements Updated - qbittorrent-api==2025.7.0 - fastapi==0.116.1 # New Features - **Uncategorized Category**: Allow multiple paths for Uncategorized category and add error handling (Thanks to @cat-of-wisdom #849) - **Config Auto Backup and Cleanup**: implement automatic backup rotation (30 most recent backups per config) and cleanup - **Web UI**: add base URL support for reverse proxy deployments (Fixes #871) - **Share Limits**: add option to preserve upload speed limits when minimums unmet (New config option `reset_upload_speed_on_unmet_minimums`) (Fixes #835, #791) # Improvements - Optimize webUI form rendering - Better centralized error handling for qbitorrent API operations - **Web UI**: add editable group names to share limit modal # Bug Fixes - Fix bug in remove orphaned to notify when there are 0 orphaned files - Fixes [Bug]: Cannot run on Python 3.9.18 #864 - fix(qbit): add error handling for qBittorrent API operations **Full Changelog**: https://github.com/StuffAnThings/qbit_manage/compare/v4.5.0...v4.5.1 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: cat-of-wisdom <217637421+cat-of-wisdom@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
134 lines
6.5 KiB
JavaScript
134 lines
6.5 KiB
JavaScript
export const shareLimitsSchema = {
|
|
title: 'Share Limits Configuration',
|
|
description: 'Define prioritized groups to manage share limits for your torrents. Each torrent is matched to the highest-priority group that meets the filter criteria.',
|
|
type: 'share-limits-config',
|
|
fields: [
|
|
{
|
|
name: 'share_limit_groups',
|
|
type: 'object',
|
|
label: 'Share Limit Groups',
|
|
description: 'Define share limit groups and their rules',
|
|
properties: {
|
|
priority: {
|
|
type: 'number',
|
|
label: 'Priority',
|
|
description: 'The priority of the group. Lower numbers have higher priority.',
|
|
required: true,
|
|
step: 0.1
|
|
},
|
|
include_all_tags: {
|
|
type: 'array',
|
|
label: 'Include All Tags',
|
|
description: 'Torrents must have all of these tags to be included in this group.',
|
|
items: { type: 'text' }
|
|
},
|
|
include_any_tags: {
|
|
type: 'array',
|
|
label: 'Include Any Tags',
|
|
description: 'Torrents must have at least one of these tags to be included in this group.',
|
|
items: { type: 'text' }
|
|
},
|
|
exclude_all_tags: {
|
|
type: 'array',
|
|
label: 'Exclude All Tags',
|
|
description: 'Torrents that have all of these tags will be excluded from this group.',
|
|
items: { type: 'text' }
|
|
},
|
|
exclude_any_tags: {
|
|
type: 'array',
|
|
label: 'Exclude Any Tags',
|
|
description: 'Torrents that have at least one of these tags will be excluded from this group.',
|
|
items: { type: 'text' }
|
|
},
|
|
categories: {
|
|
type: 'array',
|
|
label: 'Categories',
|
|
description: 'Torrents must be in one of these categories to be included in this group.',
|
|
items: {
|
|
type: 'text',
|
|
useCategoryDropdown: true // Flag to indicate array items should use category dropdown
|
|
}
|
|
},
|
|
cleanup: {
|
|
type: 'boolean',
|
|
label: 'Cleanup',
|
|
description: 'If true, torrents that meet their share limits will be removed and their contents deleted.',
|
|
default: false
|
|
},
|
|
max_ratio: {
|
|
type: 'number',
|
|
label: 'Maximum Share Ratio',
|
|
description: 'The maximum share ratio before a torrent is paused. Use -2 for the global limit and -1 for no limit.',
|
|
default: -1,
|
|
step: 0.1
|
|
},
|
|
max_seeding_time: {
|
|
type: 'text',
|
|
label: 'Maximum Seeding Time',
|
|
description: 'The maximum seeding time before a torrent is paused. Use -2 for the global limit and -1 for no limit. (e.g., "30d", "1w 4d 2h").',
|
|
default: '-1'
|
|
},
|
|
max_last_active: {
|
|
type: 'text',
|
|
label: 'Maximum Last Active',
|
|
description: 'If cleanup is enabled, delete torrents that have been inactive for this duration. Use -1 for no limit. (e.g., "30d", "1w 4d 2h").',
|
|
default: '-1'
|
|
},
|
|
min_seeding_time: {
|
|
type: 'text',
|
|
label: 'Minimum Seeding Time',
|
|
description: 'Prevents cleanup from deleting a torrent until it has been seeding for at least this long. (e.g., "30d", "1w 4d 2h").',
|
|
default: '0'
|
|
},
|
|
min_last_active: {
|
|
type: 'text',
|
|
label: 'Minimum Last Active',
|
|
description: 'Prevents cleanup from deleting a torrent if it has been active within this duration. (e.g., "30d", "1w 4d 2h").',
|
|
default: '0'
|
|
},
|
|
limit_upload_speed: {
|
|
type: 'number',
|
|
label: 'Limit Upload Speed (KiB/s)',
|
|
description: 'The upload speed limit in KiB/s. Use -1 for no limit.',
|
|
default: -1
|
|
},
|
|
enable_group_upload_speed: {
|
|
type: 'boolean',
|
|
label: 'Enable Group Upload Speed',
|
|
description: 'If true, the `limit_upload_speed` will be divided equally among all torrents in this group.',
|
|
default: false
|
|
},
|
|
resume_torrent_after_change: {
|
|
type: 'boolean',
|
|
label: 'Resume Torrent After Change',
|
|
description: 'If true, the torrent will be resumed after its share limits are changed.',
|
|
default: true
|
|
},
|
|
add_group_to_tag: {
|
|
type: 'boolean',
|
|
label: 'Add Group to Tag',
|
|
description: 'If true, a tag representing the group and its priority will be added to the torrent.',
|
|
default: true
|
|
},
|
|
min_num_seeds: {
|
|
type: 'number',
|
|
label: 'Minimum Number of Seeds',
|
|
description: 'Prevents cleanup from deleting a torrent if it has fewer than this many seeds.',
|
|
default: 0
|
|
},
|
|
custom_tag: {
|
|
type: 'text',
|
|
label: 'Custom Tag',
|
|
description: 'Apply a unique custom tag for this group. This tag will be used to identify and manage the share limits for these torrents.',
|
|
default: ''
|
|
},
|
|
reset_upload_speed_on_unmet_minimums: {
|
|
type: 'boolean',
|
|
label: 'Reset Upload Speed on Unmet Minimums',
|
|
description: 'If true, upload speed limits will be reset to unlimited when minimum conditions (seeding time, number of seeds, last active time) are not met. If false, existing upload speed limits will be preserved.',
|
|
default: true
|
|
}
|
|
}
|
|
}
|
|
]
|
|
};
|