Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from qbittorrent:master #9

Open
wants to merge 599 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
599 commits
Select commit Hold shift + click to select a range
4cc3fed
WebUI: Reduce padding in torrents table
skomerko Sep 22, 2024
5e3161a
WebUI: Improve statistics window
skomerko Sep 22, 2024
10eb921
Allow drop action only on transfer list
Chocobo1 Sep 30, 2024
6bbb7b7
Add WebAPI/WebUI for managing cookies
Piccirello Sep 30, 2024
3888b46
Revise `bug_report` template
xavier2k6 Sep 30, 2024
50acb67
WebUI: Support updating RSS feed URL
Piccirello Sep 30, 2024
fd311fd
Reduce sensitive data instances
Chocobo1 Sep 30, 2024
cebaedf
WebUI: CSS/styling improvements
Chocobo1 Sep 30, 2024
449ca96
WebUI: Add 'Engine' column to Search table
skomerko Sep 30, 2024
d8e2431
WebUI: Improve lookup performance when filtering by tracker
skomerko Sep 30, 2024
c30a077
Replace QVector with QList
xavier2k6 Sep 30, 2024
7b45566
Migrate away from deprecated functions in Qt 6.9
Chocobo1 Sep 30, 2024
b5b34c9
Add "Simple pread/pwrite" disk IO type
HanabishiRecca Oct 1, 2024
c48d2c1
WebUI: Fix incorrect row ID
glassez Oct 4, 2024
dc02a0f
WebUI: remove unused variables
Chocobo1 Oct 4, 2024
4ff0687
WebUI: Add confirm dialog for Auto TMM
skomerko Oct 4, 2024
6981217
Don't ignore SSL errors
sledgehammer999 Sep 19, 2024
e309148
Reorder code to match UI
sledgehammer999 Sep 26, 2024
7f38216
Regenerate .ui files
thalieht Oct 5, 2024
e75bcbe
Remove non-working DHT bootstrap nodes
stalkerok Oct 5, 2024
3fb5d77
Don't try to apply Mark-of-the-Web to nonexistent files
glassez Oct 5, 2024
9e5433b
Add name to threads
Chocobo1 Oct 6, 2024
f81d8a8
NSIS: update luxembourgish
eltociear Oct 6, 2024
6ed662c
CI: turn on assertion checks
Chocobo1 Oct 6, 2024
dfa4eeb
GHA CI: Bump pandoc to latest version
xavier2k6 Oct 6, 2024
56a0692
GHA CI: Update pre-commit-config workflow
xavier2k6 Oct 6, 2024
6bbedbe
WebUI: remove unused variable
Chocobo1 Oct 6, 2024
3ea2be4
Disable the ability to create torrents with a piece size of 256MiB
stalkerok Oct 7, 2024
d73201c
Fix the tab order in dialogs
thalieht Oct 7, 2024
8764444
WebUI: Add context menu to search tabs
skomerko Oct 7, 2024
871438f
Bump search engine components version
Chocobo1 Oct 10, 2024
2d857b6
Disable "Move to trash" option by default
glassez Oct 10, 2024
2d185dc
Allow to choose Qt style
glassez Oct 11, 2024
b1fd61a
WebUI: Handle folders when updating RSS feed url
Piccirello Oct 12, 2024
81509df
WebUI: Improve filter lists
skomerko Oct 12, 2024
0704049
WebUI: Apply box-sizing reset
skomerko Oct 12, 2024
cbcb46b
WebUI: Setup copy events only once
skomerko Oct 12, 2024
6418033
Add support for Thunar file manager
yalikes Oct 12, 2024
c4eeb4a
Add drag support to torrent content widget
Chocobo1 Oct 12, 2024
ac646f4
Avoid shadowing function parameter
Chocobo1 Oct 12, 2024
21b0367
Avoid heavy weight function object
Chocobo1 Oct 12, 2024
3d9e971
Merge pull request #21364 from sledgehammer999/dont_ignore_ssl_errors
sledgehammer999 Oct 12, 2024
fb40275
Don't change combobox index after selection
Chocobo1 Oct 14, 2024
9663878
Always notify user about duplicate torrent
glassez Oct 14, 2024
8e941a0
Correctly handle "torrent finished after move" event
glassez Oct 14, 2024
7031c52
WebUI: Improve sort order in Status column
skomerko Oct 19, 2024
5a0914e
WebUI: Use modern class syntax in context menu classes
skomerko Oct 19, 2024
4805afc
Correctly apply filename filter when !qB extension is enabled
glassez Oct 19, 2024
a47e1cd
Allow to choose color scheme on Windows
glassez Oct 19, 2024
25dbea1
WebUI: fix 'rename files' dialog cannot be opened more than once
Chocobo1 Oct 20, 2024
ab8d0d1
Free resources allocated by web session once it is destructed
dyseg Oct 21, 2024
3ab9fe5
Improve color scheme change detection
glassez Oct 21, 2024
337730d
Simplify SSL parameters setup
Chocobo1 Oct 21, 2024
e91412e
Use default secure protocol list from Qt
Chocobo1 Oct 21, 2024
a3ac692
Allow to use Qt's default QStyle
sledgehammer999 Oct 21, 2024
5dd41f5
Fix button state for SSL certificate check
Chocobo1 Oct 23, 2024
c080fc3
Fix filesize sorting in preview dialog
DoubleSpicy Oct 23, 2024
ca933c6
Update GPLv2 license to reflect latest version
sirocyl Oct 25, 2024
dfe9daf
WebUI: restore arrow keys table navigation
HanabishiRecca Oct 25, 2024
e8dc6b3
WebUI: Show file filter when Content tab selected on load
Piccirello Oct 25, 2024
67b6cf5
WebUI: Don't sort rows with static trackers in Trackers table
skomerko Oct 27, 2024
e0431e3
Update python installer version for Windows
xavier2k6 Oct 27, 2024
c3c91be
WebUI: Clear properties panel when torrent no longer selected
Piccirello Oct 28, 2024
e0e61ff
WebUI: Support auto resizing table columns
Piccirello Oct 28, 2024
be3eefd
WebUI: Fix displaying RSS panel on load
Piccirello Oct 28, 2024
91b2687
WebAPI: Prevent producing empty sync data
glassez Oct 28, 2024
84d8952
Correctly delete the moved search tab
glassez Oct 28, 2024
03dfd98
Add new version in Changelog
sledgehammer999 Oct 30, 2024
41236d8
Consolidate all the Changelog entries into master
sledgehammer999 Oct 30, 2024
7af6ac1
Merge pull request #21658 from Chocobo1/ssl_setup
Chocobo1 Oct 31, 2024
72cbc83
WebUI: prefer arrow functions whenever applicable
Chocobo1 Oct 31, 2024
8991d99
WebUI: Eliminate unnecessary torrents table updates
Piccirello Oct 31, 2024
7b0b3a1
Merge pull request #21722 from sledgehammer999/changelog_upkeep
sledgehammer999 Nov 1, 2024
3aefc16
Webui: Add color scheme switcher
sledgehammer999 Oct 14, 2024
13e3192
Reorder code to match UI
sledgehammer999 Oct 20, 2024
08b51fc
Remove trackers from previous category when moved to new one
glassez Nov 2, 2024
0f18e80
Fix .torrent file could not be deleted when torrent is canceled
glassez Nov 2, 2024
0771970
Merge pull request #21613 from sledgehammer999/webui_color_switcher
sledgehammer999 Nov 2, 2024
1a7ebfc
Create SECURITY.md
itz-d0dgy Nov 2, 2024
6f64277
Simplify tab handling in Search widget
Chocobo1 Nov 3, 2024
b083029
Handle Qt style names in a case insensitive way
glassez Nov 3, 2024
dc30b9c
WebUI: Improve table overflow handling
Piccirello Nov 3, 2024
3bb1e34
WebUI: Add tooltip to regex filter button
PatrikElfstrom Nov 3, 2024
c02f80c
WebUI: Hide context menu when clicking on a table row
PatrikElfstrom Nov 4, 2024
b462a2b
Reset tracker entries when pause the session
glassez Nov 4, 2024
051d713
Use proper macro for unreachable switch cases
Chocobo1 Nov 5, 2024
75d1ac8
Optimize conversion of time points from libtorrent to Qt clocks
glassez Nov 5, 2024
3da9444
Reduce dependency on Main Window
Chocobo1 Nov 6, 2024
4527536
Optimize converting TCP endpoints to strings
glassez Nov 7, 2024
a6c7aef
Optimize checking for outdated tracker endpoints
glassez Nov 7, 2024
4bec9b9
Check real palette darkness to detect "dark theme"
glassez Nov 8, 2024
33e3fb2
Correctly handle "torrent finished" events
glassez Nov 8, 2024
fb9b3c0
WebUI: use Fetch API to login
Chocobo1 Nov 9, 2024
f89c4c3
Display External IP Address in status bar
Piccirello Nov 9, 2024
568de90
NSIS: Update Simplified Chinese translation
3gf8jv4dv Nov 9, 2024
fe153f8
NSIS: Update Traditional Chinese translation
3gf8jv4dv Nov 9, 2024
06fe3e5
WebUI: fix color scheme for iframes
HanabishiRecca Nov 9, 2024
71f83cf
WebUI: Display torrent progress percentage in General tab
skomerko Nov 9, 2024
3ec6456
WebUI: Use modern class syntax to create LocalPreferences class
skomerko Nov 9, 2024
69f19d4
Preserve initial torrent progress while checking resume data
glassez Nov 10, 2024
631e873
WebUI: fix preferences class name
HanabishiRecca Nov 11, 2024
889df72
WebUI: Use thin scrollbars
skomerko Nov 11, 2024
92daca1
Avoid redundant string length scan
Chocobo1 Nov 11, 2024
0f12d07
Avoid reapplying Mark-of-the-Web when it already exists
Chocobo1 Nov 14, 2024
1cd3c58
WebUI: Always close one window
Piccirello Nov 16, 2024
c9a55fc
WebUI: Fix wrong log levels
PatrikElfstrom Nov 16, 2024
ede08f3
WebUI: fetch cached info early
Chocobo1 Nov 16, 2024
f73f316
WebUI: use native function to convert to numbers
Chocobo1 Nov 16, 2024
f4eec75
Don't apply Mark-of-the-Web on existing files
Chocobo1 Nov 16, 2024
e51fcc6
WebUI: Show 'Rename...' context menu item only when one torrent is se…
skomerko Nov 17, 2024
ea35aa4
Remove wrong dependency on Main Window
glassez Nov 18, 2024
c9c85ee
WebUI: Use event delegation to handle common table events
skomerko Nov 18, 2024
1e851b3
WebUI: Fix reloading page after login
eryshkov Nov 18, 2024
928de36
Improve the speed icons in the status bar
mahozad Nov 18, 2024
5306313
WebUI: Fix bug where you can't select RSS rules
PatrikElfstrom Nov 18, 2024
6ddde3f
Avoid redundant string length function calls
Chocobo1 Nov 18, 2024
6578fd0
WebUI: fix failed conversion to number
Chocobo1 Nov 18, 2024
7f901a8
Improve Python installation process
Chocobo1 Nov 19, 2024
88161a6
Discard obsolete "state update" events after torrent is reloaded
glassez Nov 21, 2024
0eba285
Fix incorrect SQL column definition
glassez Nov 21, 2024
6ce2869
WebAPI: Fix incorrect key in torrent creator
Bartuzen Nov 21, 2024
7300b9f
WebUI: Eliminate unnecessary Status filter list updates
skomerko Nov 22, 2024
61ff683
Update link to news
tinyboxvk Nov 22, 2024
78a5e4f
WebUI: Display error when download fails
Piccirello Nov 23, 2024
f022ce8
WebAPI: Add `forced` parameter to `torrents/add`
ckanoab Nov 23, 2024
8d847ee
WebUI: clean up fetch API usage
Chocobo1 Nov 25, 2024
b0fe6e6
WebUI: ensure cached info are initialized properly
Chocobo1 Nov 25, 2024
3ebdb50
Verify hash of Python installer
Chocobo1 Nov 25, 2024
e1bd103
WebUI: simplify close window implementation
Chocobo1 Nov 25, 2024
72e033d
WebUI: remove child elements directly
Chocobo1 Nov 20, 2024
15ea836
Avoid repeatedly creating the same QDateTime values
glassez Nov 26, 2024
f34787e
WebUI: use correct property for selecting child elements
Chocobo1 Nov 20, 2024
5eec0c0
WebUI: use idiomatic string methods
Chocobo1 Nov 22, 2024
2109e13
WebUI: use proper event for handling text changes
Chocobo1 Nov 25, 2024
24d349f
WebUI: fix wrong event property
Chocobo1 Nov 25, 2024
ef55063
WebUI: fix invalid style
Chocobo1 Nov 25, 2024
83b0dd3
WebUI: fix checkbox initialization
Chocobo1 Nov 25, 2024
b84a51c
WebUI: revise Edit Category dialog button text
Chocobo1 Nov 26, 2024
f8aaea3
WebUI: locate element faster
Chocobo1 Nov 27, 2024
d90a9d1
Avoid using QDateTime for announce timestamps
glassez Nov 27, 2024
d11622e
Don't add duplicate episodes to previously matched
wavygecko Nov 28, 2024
dafbcf8
WebUI: Add colors to 'Status' column in Trackers table
skomerko Nov 29, 2024
a85736f
WebUI: Set base background color
skomerko Nov 29, 2024
90aecfe
WebUI improvements
Chocobo1 Nov 29, 2024
e8d8de8
WebUI: fix window can not close regression
Chocobo1 Nov 29, 2024
2d1c4fc
WebUI: use native event listeners for keyboard events
Chocobo1 Dec 2, 2024
a180162
Avoid redundant requests of announce entries from libtorrent
glassez Dec 6, 2024
200f7fc
Use cached current time when parse RSS feed
glassez Dec 7, 2024
6f31a13
Don't follow symlink when creating torrents on Windows
Chocobo1 Dec 7, 2024
9f0fa4c
NSIS: Update Italian translation
Giacomo411 Dec 7, 2024
7080f85
WebUI: Replace Mootools class list manipulation methods
skomerko Dec 8, 2024
3fcc298
WebUI: Add missing icon to 'Queue' context menu item
skomerko Dec 8, 2024
cbf7c09
Use built-in method for setting header
Chocobo1 Dec 8, 2024
0ad65ce
Remove unused variable
Chocobo1 Dec 8, 2024
a311c25
Use proper data type for elapsed time
Chocobo1 Dec 8, 2024
2745146
Add eXact Length parameter when creating magnet URI
antanilol Dec 8, 2024
4c6dd8e
Remove wrong conditional in Origin trustworthy check
Chocobo1 Dec 13, 2024
c887a6f
GHA CI: add checks for grid items order
Chocobo1 Dec 13, 2024
14684c8
WebUI: Use vanilla JS to create elements
skomerko Dec 14, 2024
eb2eea8
Avoid race condition when update tracker entries
glassez Dec 15, 2024
0a36171
Sort grid items properly
Chocobo1 Dec 13, 2024
85c4ddf
Make links accessible by keyboard
Chocobo1 Dec 14, 2024
7886ca6
Make tab key switch focus
Chocobo1 Dec 14, 2024
d96ab6b
Bump to v5.1.0beta1
sledgehammer999 Dec 16, 2024
1c82eb3
Merge pull request #21996 from Chocobo1/check_ui
Chocobo1 Dec 17, 2024
34c8849
Fix tab order in RSS widget
Chocobo1 Dec 17, 2024
257d928
Resolve relative URLs within RSS article description
zent1n0 Dec 20, 2024
fee45e4
GHA CI: Bump some pre-commit hook revs
xavier2k6 Dec 20, 2024
e2db0bc
GHA CI: Update `pandoc` to latest
xavier2k6 Dec 20, 2024
9709672
WebUI: Change filter inputs to type search
PatrikElfstrom Dec 22, 2024
a841fe9
WebUI: migrate to fetch API
Chocobo1 Dec 22, 2024
166feb5
NSIS: Update Portuguese translation
hugok79 Dec 23, 2024
f2097dc
Avoid redundant copy
Chocobo1 Dec 23, 2024
879c6bf
Simplify conversion to string
Chocobo1 Dec 23, 2024
bbc3c28
WebUI: Use `closest()` to get parent element
skomerko Dec 23, 2024
7487cd7
WebUI: disallow unnecessary quotes in property name
Chocobo1 Dec 24, 2024
90e457a
Use built-in method for decoding HTML entities
Chocobo1 Dec 26, 2024
cc31a90
Provide SSL context field
Chocobo1 Dec 26, 2024
e740a42
Merge pull request #22070 from Chocobo1/py_html_decode
Chocobo1 Dec 29, 2024
9c0475e
WebUI: migrate to fetch API
Chocobo1 Dec 29, 2024
efe06f1
Revise DHT bootstrap node list
Chocobo1 Dec 31, 2024
395dbaa
WebUI: Replace getElement with querySelector
skomerko Dec 31, 2024
6fe0289
WebUI: Remove redundant event listener
skomerko Dec 31, 2024
22e156e
Simplify captured variable type
Chocobo1 Jan 6, 2025
d911928
WebUI: Remove unnecessary hashing
Chocobo1 Jan 6, 2025
4f3d779
Add parameter to control whether to unescape HTML entities
Chocobo1 Jan 6, 2025
4fc36b9
Support fetching tracker list from URL
Piccirello Jan 8, 2025
f9f4b60
Allow to refresh existing search
glassez Jan 8, 2025
68ecb13
Change URL seed error message
HanabishiRecca Jan 10, 2025
5875d8b
Allow multiple simultaneous searches
glassez Jan 11, 2025
7615111
Handle Qt style options uniformly
glassez Jan 11, 2025
2e21cf7
WebUI: temporarily pin dependency
Chocobo1 Jan 11, 2025
45b7947
GHA CI: Update Boost URL
xavier2k6 Jan 11, 2025
82d90e5
Preserve allocated buffer capacity
Chocobo1 Jan 12, 2025
11991e6
WebUI: fix error when opening the same dialog twice
Chocobo1 Jan 12, 2025
c622d50
WebUI: use native API for accessing query string
Chocobo1 Jan 12, 2025
99adb16
Allow to reuse existing search term
glassez Jan 13, 2025
2cc7ec9
WebUI: add percentage sign for hsl components
Chocobo1 Jan 13, 2025
4686d67
GHA CI: show installed version
Chocobo1 Jan 13, 2025
76e1040
WebAPI: optionally include trackers list in torrent info response
zze0s Jan 17, 2025
f2eecf8
Avoid memory leak on macOS
Chocobo1 Jan 18, 2025
1ee8403
WebUI: use template literals instead of string concatenation
Chocobo1 Jan 18, 2025
f8c4834
WebUI: use native function for selecting elements
Chocobo1 Jan 20, 2025
05787d9
Fix torrent content checkbox state under certain conditions
thalieht Jan 24, 2025
82c36ae
WebAPI: add new method setTags to upsert tags on torrents
zze0s Jan 24, 2025
5098519
WebUI: enable cache for lint checks
Chocobo1 Jan 21, 2025
e3eacf2
WebUI: migrate stylelint config file format
Chocobo1 Jan 21, 2025
dc8ac38
WebUI: revise lint rules for css
Chocobo1 Jan 21, 2025
abd3cd5
GHA CI: Bump numerous hook revs
xavier2k6 Jan 25, 2025
e2341f5
Merge pull request #22199 from Chocobo1/webui_eslint
Chocobo1 Jan 25, 2025
3ef4d0d
GHA CI: add checking for GHA workflows
Chocobo1 Jan 25, 2025
3978137
Store opened search tabs
glassez Jan 26, 2025
bb4a668
Hide zero and infinity values in peer list only when that setting is …
thalieht Jan 27, 2025
fe9dc13
WebUI: don't wrap regex literal in regex constructor
Chocobo1 Jan 27, 2025
af65ddd
WebUI: Allow to move state icon to name column in torrents table
skomerko Jan 28, 2025
f853616
Use compact format for JSON files
Chocobo1 Jan 29, 2025
b76054b
Store search history
glassez Jan 30, 2025
a018cfa
Remove stopped torrent from "error" tracker filter
glassez Jan 31, 2025
86387fb
Return first tracker as fallback for "current tracker"
glassez Feb 1, 2025
463700b
GHA CI: Bump libtorrent versions
xavier2k6 Feb 3, 2025
9c2e698
WebUI: Replace `getElements` & `getChildren`
skomerko Feb 4, 2025
4406a3f
Add announce_port support
0xThiebaut Feb 8, 2025
dc10b88
GHA CI: explicitly set C++20 mode for libtorrent
Chocobo1 Feb 8, 2025
f8469d0
GHA CI: Bump `FORTIFY_SOURCE` hardening flag to `3`
xavier2k6 Feb 8, 2025
e55b59d
Use switch statement
Chocobo1 Feb 8, 2025
9392504
WebUI: Fix memory leak in context menus
skomerko Feb 8, 2025
c65a682
WebUI: use native function when converting to numbers
Chocobo1 Feb 8, 2025
b052ad0
WebUI: inline redundant function
Chocobo1 Feb 9, 2025
bd564a9
Sync translations from Transifex and run lupdate
sledgehammer999 Feb 10, 2025
7238bad
Bump to v5.2.0alpha1
sledgehammer999 Feb 11, 2025
c9eb1fb
WebAPI: Don't trim string parameters
glassez Feb 12, 2025
38070c6
WebUI: use recommended function for checking NaN values
Chocobo1 Feb 12, 2025
d79dc86
WebUI: require Subresource Integrity on external links
Chocobo1 Feb 12, 2025
7f01341
WebUI: Use classlist property to set cell class in trackers table
skomerko Feb 13, 2025
f58d6ae
WebUI: Make context menu target selectors more precise
skomerko Feb 13, 2025
1a3d0f6
WebUI: Adjust context menu offsets in Search tab & Status filter list
skomerko Feb 13, 2025
29201fa
WebUI: Apply scrollbar style to context menu elements
skomerko Feb 13, 2025
7e95375
WebUI: Fix unknown country flag path
skomerko Feb 14, 2025
8c02bbb
WebUI: Select next available search tab after closing last active tab…
skomerko Feb 14, 2025
ddf6dd5
GHA CI: fix AppImage building
Chocobo1 Feb 15, 2025
8da43a4
Use const accessor
Chocobo1 Feb 16, 2025
955688c
WebUI: replace rounding function from MooTools
Chocobo1 Feb 17, 2025
1043bea
Refactor power management classes
Chocobo1 Feb 18, 2025
ad9100a
WebAPI: Do not wrap result if offset is invalid
userwiths Feb 18, 2025
5ddc5a8
NSIS: Update Swedish translation
yeager Feb 19, 2025
693390f
Fix shift-click selection on macOS
lukemmtt Feb 19, 2025
a9b54d9
Merge pull request #22282 from skomerko/webui-v51-fixes
Chocobo1 Feb 21, 2025
1ca33d4
WebUI: Access element attribute/property natively in log tables
skomerko Feb 21, 2025
ba3d89b
WebUI: Update sort icon after changing column order
skomerko Feb 23, 2025
41d9ee9
WebUI: tell web crawlers do not index the WebUI
Chocobo1 Feb 23, 2025
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
  •  
  •  
  •  
18 changes: 8 additions & 10 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,17 @@ body:
#### ADVISORY
"We do not support any versions older than the current release series"

"We do not support any 3rd party/forked versions e.g. `portableapps`/`Enhanced Edition`etc."
"We do not support any 3rd party/forked versions e.g. `portableapps`/`Enhanced Edition` etc."

"Please post all details in **English**."

#### Prerequisites before submitting an issue!
- Read the issue reporting section in the **[contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md)**, to know how to submit a good bug report with the required information.
- Verify that the issue is not fixed and is reproducible in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).**
- (Optional, but recommended) Verify that the issue is not fixed and is reproducible in the latest CI (currently only on **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds.
- Check the **[frequent/common issues list](https://github.com/qbittorrent/qBittorrent/projects/2)** and perform a **[search of the issue tracker (including closed ones)](https://github.com/qbittorrent/qBittorrent/issues)** to avoid posting a duplicate.
- (Optional, but recommended) Verify that the issue is not fixed and is reproducible in the latest CI (**[macOS](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_macos.yaml?query=branch%3Amaster+event%3Apush)** / **[Ubuntu](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_ubuntu.yaml?query=branch%3Amaster+event%3Apush)** / **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds.
- Perform a **[search of the issue tracker (including closed ones)](https://github.com/qbittorrent/qBittorrent/issues?q=is%3Aissue+is%3Aopen+-label%3A%22Feature+request%22)** to avoid posting a duplicate.
- Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**.
- Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either.
- If relevant to issue/when asked, the qBittorrent preferences file, qBittorrent.log & watched_folders.json (if using "Watched Folders" feature) must be provided.
See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)**

- type: textarea
attributes:
Expand All @@ -28,10 +26,10 @@ body:
Qt and libtorrent-rasterbar versions are required when: 1. You are using linux. 2. You are not using an official build downloaded from our website.

Example of preferred formatting:
qBittorrent: 4.3.7 x64
Operating system: Windows 10 Pro 21H1/2009 x64
Qt: 5.15.2
libtorrent-rasterbar: 1.2.14
qBittorrent: 4.6.6 x64
Operating system: Windows 10 Pro x64 (22H2) 10.0.19045
Qt: 6.4.3
libtorrent-rasterbar: 1.2.19
placeholder: |
qBittorrent:
Operating system:
Expand Down Expand Up @@ -73,4 +71,4 @@ body:
See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)**
#### Note: It's the user's responsibility to redact any sensitive information
validations:
required: false
required: true
35 changes: 31 additions & 4 deletions .github/workflows/ci_file_health.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,21 @@ jobs:
ci:
name: Check
runs-on: ubuntu-latest
permissions:
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Install tools
uses: actions/setup-python@v4
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "*"

- name: Check files
uses: pre-commit/[email protected].0
uses: pre-commit/[email protected].1

- name: Check doc
env:
Expand All @@ -32,7 +36,7 @@ jobs:
curl \
-L \
-o "${{ runner.temp }}/pandoc.tar.gz" \
"https://github.com/jgm/pandoc/releases/download/3.1.7/pandoc-3.1.7-linux-amd64.tar.gz"
"https://github.com/jgm/pandoc/releases/download/3.6/pandoc-3.6-linux-amd64.tar.gz"
tar -xf "${{ runner.temp }}/pandoc.tar.gz" -C "${{ github.workspace }}/.."
mv "${{ github.workspace }}/.."/pandoc-* "${{ env.pandoc_path }}"
# run pandoc
Expand All @@ -42,3 +46,26 @@ jobs:
done
# check diff, ignore "Automatically generated by ..." part
git diff -I '\.\\".*' --exit-code

- name: Check GitHub Actions workflow
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pip install zizmor
IGNORE_RULEID='(.ruleId != "template-injection")
and (.ruleId != "unpinned-uses")'
IGNORE_ID='(.id != "template-injection")
and (.id != "unpinned-uses")'
zizmor \
--format sarif \
--pedantic \
./ \
| jq "(.runs[].results |= map(select($IGNORE_RULEID)))
| (.runs[].tool.driver.rules |= map(select($IGNORE_ID)))" \
> "${{ runner.temp }}/zizmor_results.sarif"

- name: Upload zizmor results
uses: github/codeql-action/upload-sarif@v3
with:
category: zizmor
sarif_file: "${{ runner.temp }}/zizmor_results.sarif"
68 changes: 46 additions & 22 deletions .github/workflows/ci_macos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ name: CI - macOS

on: [pull_request, push]

permissions:
actions: write
permissions: {}

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
Expand All @@ -13,24 +12,28 @@ jobs:
ci:
name: Build
runs-on: macos-latest
permissions:
actions: write

strategy:
fail-fast: false
matrix:
libt_version: ["2.0.9", "1.2.19"]
libt_version: ["2.0.11", "1.2.20"]
qbt_gui: ["GUI=ON", "GUI=OFF"]
qt_version: ["6.5.2"]
qt_version: ["6.7.0"]

env:
boost_path: "${{ github.workspace }}/../boost"
openssl_root: /usr/local/opt/openssl@3
libtorrent_path: "${{ github.workspace }}/../libtorrent"

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Install dependencies
uses: Wandalen/wretry.action@v1
uses: Wandalen/wretry.action@v3
env:
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
Expand All @@ -46,56 +49,67 @@ jobs:
- name: Setup ccache
uses: Chocobo1/setup-ccache-action@v1
with:
store_cache: ${{ github.ref == 'refs/heads/master' }}
update_packager_index: false
ccache_options: |
max_size=2G

- name: Install boost
env:
BOOST_MAJOR_VERSION: "1"
BOOST_MINOR_VERSION: "86"
BOOST_PATCH_VERSION: "0"
run: |
curl \
-L \
-o "${{ runner.temp }}/boost.tar.gz" \
"https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.tar.gz"
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."
boost_url="https://archives.boost.io/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
set +e
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
if [ "$_exitCode" -ne "0" ]; then
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
fi
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"

- name: Install Qt
uses: jurplel/install-qt-action@v3
uses: jurplel/install-qt-action@v4
with:
version: ${{ matrix.qt_version }}
archives: qtbase qtdeclarative qtsvg qttools
# Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0
cache: true

- name: Install libtorrent
run: |
git clone \
--branch v${{ matrix.libt_version }} \
--depth 1 \
--recurse-submodules \
https://github.com/arvidn/libtorrent.git
cd libtorrent
https://github.com/arvidn/libtorrent.git \
${{ env.libtorrent_path }}
cd ${{ env.libtorrent_path }}
cmake \
-B build \
-G "Ninja" \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_CXX_STANDARD=20 \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DBOOST_ROOT="${{ env.boost_path }}" \
-Ddeprecated-functions=OFF \
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}"
-Ddeprecated-functions=OFF
cmake --build build
sudo cmake --install build

- name: Build qBittorrent
run: |
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
CXXFLAGS="$CXXFLAGS -DQT_FORCE_ASSERTS -Werror -Wno-error=deprecated-declarations" \
LDFLAGS="$LDFLAGS -gz" \
cmake \
-B build \
-G "Ninja" \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DBOOST_ROOT="${{ env.boost_path }}" \
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
-DTESTING=ON \
-DVERBOSE_CONFIGURE=ON \
-D${{ matrix.qbt_gui }}
Expand All @@ -110,19 +124,29 @@ jobs:
if [ "${{ matrix.qbt_gui }}" = "GUI=OFF" ]; then
appName="qbittorrent-nox"
fi
# package
pushd build
macdeployqt "$appName.app" -dmg -no-strip
PACKAGE_RETRY=0
while [ "$PACKAGE_RETRY" -lt "3" ]; do
macdeployqt "$appName.app" -dmg -no-strip
if [ -f "$appName.dmg" ]; then
break
fi
sleep 5
PACKAGE_RETRY=$((PACKAGE_RETRY + 1))
echo "Retry $PACKAGE_RETRY..."
done
popd
# prepare upload folder
mkdir upload
cp "build/$appName.dmg" upload
mkdir upload/cmake
cp build/compile_commands.json upload/cmake
mkdir upload/cmake/libtorrent
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent

- name: Upload build artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
path: upload
91 changes: 91 additions & 0 deletions .github/workflows/ci_python.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: CI - Python

on: [pull_request, push]

permissions: {}

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: ${{ github.head_ref != '' }}

jobs:
ci:
name: Check
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Setup python (auxiliary scripts)
uses: actions/setup-python@v5
with:
python-version: '3' # use default version

- name: Install tools (auxiliary scripts)
run: pip install bandit pycodestyle pyflakes

- name: Gather files (auxiliary scripts)
run: |
export "PY_FILES=$(find . -type f -name '*.py' ! -path '*searchengine*' -printf '%p ')"
echo $PY_FILES
echo "PY_FILES=$PY_FILES" >> "$GITHUB_ENV"

- name: Lint code (auxiliary scripts)
run: |
pyflakes $PY_FILES
bandit --skip B101,B314,B405 $PY_FILES

- name: Format code (auxiliary scripts)
run: |
pycodestyle \
--max-line-length=1000 \
--statistics \
$PY_FILES

- name: Build code (auxiliary scripts)
run: |
python -m compileall $PY_FILES

- name: Setup python (search engine)
uses: actions/setup-python@v5
with:
python-version: '3.9'

- name: Install tools (search engine)
run: pip install bandit mypy pycodestyle pyflakes pyright

- name: Gather files (search engine)
run: |
export "PY_FILES=$(find . -type f -name '*.py' -path '*searchengine*' ! -name 'socks.py' -printf '%p ')"
echo $PY_FILES
echo "PY_FILES=$PY_FILES" >> "$GITHUB_ENV"

- name: Check typings (search engine)
run: |
MYPYPATH="src/searchengine/nova3" \
mypy \
--follow-imports skip \
--strict \
$PY_FILES
pyright \
$PY_FILES

- name: Lint code (search engine)
run: |
pyflakes $PY_FILES
bandit --skip B110,B310,B314,B405 $PY_FILES

- name: Format code (search engine)
run: |
pycodestyle \
--ignore=E265,E402 \
--max-line-length=1000 \
--statistics \
$PY_FILES

- name: Build code (search engine)
run: |
python -m compileall $PY_FILES
Loading