feat: Add settings to Show/Hide fields in mobile torrent card (#687) @Larsluph

This commit is contained in:
Rémi Marseault 2023-03-04 10:36:53 +01:00 committed by GitHub
parent a822702e69
commit 88bc9317c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
42 changed files with 1035 additions and 599 deletions

View file

@ -2,299 +2,477 @@
## [1.4.0](https://github.com/WDaan/VueTorrent/compare/v1.3.2...v1.4.0) (2023-02-28) ## [1.4.0](https://github.com/WDaan/VueTorrent/compare/v1.3.2...v1.4.0) (2023-02-28)
### Features ### Features
* Add import / export settings button ([#659](https://github.com/WDaan/VueTorrent/issues/659)) @Larsluph ([7caa19a](https://github.com/WDaan/VueTorrent/commit/7caa19ab889464d00d58630f93a84e98fbb82eca)) - Add import / export settings button ([#659](https://github.com/WDaan/VueTorrent/issues/659)) @Larsluph
* Add tracker host in Dashboard ([#679](https://github.com/WDaan/VueTorrent/issues/679)) [@flashlab](https://github.com/flashlab) ([bf9484b](https://github.com/WDaan/VueTorrent/commit/bf9484b1426ad8de166b725745b409c898cc56e5)) ([7caa19a](https://github.com/WDaan/VueTorrent/commit/7caa19ab889464d00d58630f93a84e98fbb82eca))
- Add tracker host in Dashboard ([#679](https://github.com/WDaan/VueTorrent/issues/679)) [@flashlab](https://github.com/flashlab)
([bf9484b](https://github.com/WDaan/VueTorrent/commit/bf9484b1426ad8de166b725745b409c898cc56e5))
### Bug Fixes ### Bug Fixes
* 400 when adding trackers ([#674](https://github.com/WDaan/VueTorrent/issues/674)) @Larsluph ([9d31ff4](https://github.com/WDaan/VueTorrent/commit/9d31ff4360997b03273751b7aa45c143b6ac0cf8)) - 400 when adding trackers ([#674](https://github.com/WDaan/VueTorrent/issues/674)) @Larsluph
* Drag-and-Drop not working ([#669](https://github.com/WDaan/VueTorrent/issues/669)) @Larsluph ([141318a](https://github.com/WDaan/VueTorrent/commit/141318affc5e26e98abcd8d292e75e0636b7a3db)) ([9d31ff4](https://github.com/WDaan/VueTorrent/commit/9d31ff4360997b03273751b7aa45c143b6ac0cf8))
* Fix JSON validation not working ([#682](https://github.com/WDaan/VueTorrent/issues/682)) ([2784ab9](https://github.com/WDaan/VueTorrent/commit/2784ab97cf67f019ab259471eda2b957ed81f6a2)) - Drag-and-Drop not working ([#669](https://github.com/WDaan/VueTorrent/issues/669)) @Larsluph
* Handle Windows path separators ([#675](https://github.com/WDaan/VueTorrent/issues/675)) @Larsluph ([f4646e2](https://github.com/WDaan/VueTorrent/commit/f4646e2e669191e51f06f1abeb0d37bf1aa7663c)) ([141318a](https://github.com/WDaan/VueTorrent/commit/141318affc5e26e98abcd8d292e75e0636b7a3db))
* incorrect enum values for MaxRatioAction ([#673](https://github.com/WDaan/VueTorrent/issues/673)) @Larsluph ([afa9f0e](https://github.com/WDaan/VueTorrent/commit/afa9f0ef3065702c0d55f1a7ca5a78066610264c)) - Fix JSON validation not working ([#682](https://github.com/WDaan/VueTorrent/issues/682))
([2784ab9](https://github.com/WDaan/VueTorrent/commit/2784ab97cf67f019ab259471eda2b957ed81f6a2))
- Handle Windows path separators ([#675](https://github.com/WDaan/VueTorrent/issues/675)) @Larsluph
([f4646e2](https://github.com/WDaan/VueTorrent/commit/f4646e2e669191e51f06f1abeb0d37bf1aa7663c))
- incorrect enum values for MaxRatioAction ([#673](https://github.com/WDaan/VueTorrent/issues/673)) @Larsluph
([afa9f0e](https://github.com/WDaan/VueTorrent/commit/afa9f0ef3065702c0d55f1a7ca5a78066610264c))
### Improvements ### Improvements
* Rework toast msg for clipboard API ([#677](https://github.com/WDaan/VueTorrent/issues/677)) ([3e2466a](https://github.com/WDaan/VueTorrent/commit/3e2466ac8fb383efb735845c74c89b3adf314045)) - Rework toast msg for clipboard API ([#677](https://github.com/WDaan/VueTorrent/issues/677))
* Sort tags alphabetically ([#683](https://github.com/WDaan/VueTorrent/issues/683)) @Larsluph ([3d1415d](https://github.com/WDaan/VueTorrent/commit/3d1415deab5a90ebca718e086bc8bfc13dca88cc)) ([3e2466a](https://github.com/WDaan/VueTorrent/commit/3e2466ac8fb383efb735845c74c89b3adf314045))
- Sort tags alphabetically ([#683](https://github.com/WDaan/VueTorrent/issues/683)) @Larsluph
([3d1415d](https://github.com/WDaan/VueTorrent/commit/3d1415deab5a90ebca718e086bc8bfc13dca88cc))
### [1.3.2](https://github.com/WDaan/VueTorrent/compare/v1.3.1...v1.3.2) (2023-02-19) ### [1.3.2](https://github.com/WDaan/VueTorrent/compare/v1.3.1...v1.3.2) (2023-02-19)
### Bug Fixes ### Bug Fixes
* dark theme color [#662](https://github.com/WDaan/VueTorrent/issues/662) ([2921cca](https://github.com/WDaan/VueTorrent/commit/2921cca79cb50280c4f6fbc84dc4aebb48aa0c39)) - dark theme color [#662](https://github.com/WDaan/VueTorrent/issues/662) ([2921cca](https://github.com/WDaan/VueTorrent/commit/2921cca79cb50280c4f6fbc84dc4aebb48aa0c39))
* peers not showing up ([#660](https://github.com/WDaan/VueTorrent/issues/660)) ([d8ca97d](https://github.com/WDaan/VueTorrent/commit/d8ca97d92821eaf455079a4248d7af95d643fe34)) - peers not showing up ([#660](https://github.com/WDaan/VueTorrent/issues/660)) ([d8ca97d](https://github.com/WDaan/VueTorrent/commit/d8ca97d92821eaf455079a4248d7af95d643fe34))
* phone check shutdown modal ([ff9f159](https://github.com/WDaan/VueTorrent/commit/ff9f1594cdebb73aa2daf97f83e6520d77dbcd4b)) - phone check shutdown modal ([ff9f159](https://github.com/WDaan/VueTorrent/commit/ff9f1594cdebb73aa2daf97f83e6520d77dbcd4b))
* Replace root_folder param with contentLayout & stopCondition ([#665](https://github.com/WDaan/VueTorrent/issues/665)) @Larsluph ([f0ddc60](https://github.com/WDaan/VueTorrent/commit/f0ddc603bdab2c5ee155e2289d573818407cf4d9)) - Replace root_folder param with contentLayout & stopCondition ([#665](https://github.com/WDaan/VueTorrent/issues/665)) @Larsluph
* Unwanted torrent selection during search ([#664](https://github.com/WDaan/VueTorrent/issues/664)) @MBR-0001 ([a56aa63](https://github.com/WDaan/VueTorrent/commit/a56aa63ab9988a689b9fb40a34e345d8e239bafa)) ([f0ddc60](https://github.com/WDaan/VueTorrent/commit/f0ddc603bdab2c5ee155e2289d573818407cf4d9))
- Unwanted torrent selection during search ([#664](https://github.com/WDaan/VueTorrent/issues/664)) @MBR-0001
([a56aa63](https://github.com/WDaan/VueTorrent/commit/a56aa63ab9988a689b9fb40a34e345d8e239bafa))
### Improvements ### Improvements
* Add RSS unread filter ([#657](https://github.com/WDaan/VueTorrent/issues/657)) @Larsluph ([bc5695b](https://github.com/WDaan/VueTorrent/commit/bc5695b8703704c5a540c515fa754f6b53428fcb)) - Add RSS unread filter ([#657](https://github.com/WDaan/VueTorrent/issues/657)) @Larsluph
([bc5695b](https://github.com/WDaan/VueTorrent/commit/bc5695b8703704c5a540c515fa754f6b53428fcb))
## [2.0.0](https://github.com/lyaschuchenko/VueTorrent/compare/v1.3.1...v2.0.0) (2023-02-15) ## [2.0.0](https://github.com/lyaschuchenko/VueTorrent/compare/v1.3.1...v2.0.0) (2023-02-15)
### ⚠ BREAKING CHANGES ### ⚠ BREAKING CHANGES
* move to vite + typescript => BREAKS PWA, please re-install! (#352) - move to vite + typescript => BREAKS PWA, please re-install! (#352)
### Features ### Features
* 1st torrent progress in title [#166](https://github.com/lyaschuchenko/VueTorrent/issues/166) ([5faa248](https://github.com/lyaschuchenko/VueTorrent/commit/5faa248395e6edd4e892717fcd0ce41ae27efe08)) - 1st torrent progress in title [#166](https://github.com/lyaschuchenko/VueTorrent/issues/166)
* Add Batch change location ([#574](https://github.com/lyaschuchenko/VueTorrent/issues/574)) ([060c3c3](https://github.com/lyaschuchenko/VueTorrent/commit/060c3c3a1c463e988014fe1ae52569921a68d545)) ([5faa248](https://github.com/lyaschuchenko/VueTorrent/commit/5faa248395e6edd4e892717fcd0ce41ae27efe08))
* add completed on [#571](https://github.com/lyaschuchenko/VueTorrent/issues/571) ([e242bad](https://github.com/lyaschuchenko/VueTorrent/commit/e242bad1af2c4a2f7824b2d0018e28a3e3ac580b)) - Add Batch change location ([#574](https://github.com/lyaschuchenko/VueTorrent/issues/574))
* add dialog missing options [#418](https://github.com/lyaschuchenko/VueTorrent/issues/418) ([68223f5](https://github.com/lyaschuchenko/VueTorrent/commit/68223f5f45da3a4819b43398707fed1e172468e8)) ([060c3c3](https://github.com/lyaschuchenko/VueTorrent/commit/060c3c3a1c463e988014fe1ae52569921a68d545))
* add directory to dashboard and sort [#538](https://github.com/lyaschuchenko/VueTorrent/issues/538) ([f474709](https://github.com/lyaschuchenko/VueTorrent/commit/f474709d4f28b20fe4c0ef92f56de76b924f5d0b)) - add completed on [#571](https://github.com/lyaschuchenko/VueTorrent/issues/571)
* Add globalSpeed and globalVolume computed values to torrent properties ([#599](https://github.com/lyaschuchenko/VueTorrent/issues/599)) @Larsluph ([3e1d341](https://github.com/lyaschuchenko/VueTorrent/commit/3e1d3411b7158ec7b8665f2d677b62eca8846d66)) ([e242bad](https://github.com/lyaschuchenko/VueTorrent/commit/e242bad1af2c4a2f7824b2d0018e28a3e3ac580b))
* add max_ratio_act handling ([#523](https://github.com/lyaschuchenko/VueTorrent/issues/523)) [@giacomocerquone](https://github.com/giacomocerquone) ([b05dcd0](https://github.com/lyaschuchenko/VueTorrent/commit/b05dcd0569e526f66420c9e2d30ef5f4e9fc864b)) - add dialog missing options [#418](https://github.com/lyaschuchenko/VueTorrent/issues/418)
* add pending pieces color to canvas ([#592](https://github.com/lyaschuchenko/VueTorrent/issues/592)) @Larsluph ([5132d4d](https://github.com/lyaschuchenko/VueTorrent/commit/5132d4decf207d508e91f8b65ced31d50dc3f838)) ([68223f5](https://github.com/lyaschuchenko/VueTorrent/commit/68223f5f45da3a4819b43398707fed1e172468e8))
* Add shutdown button in TopActions ([#633](https://github.com/lyaschuchenko/VueTorrent/issues/633)) @Larsluph ([ab75f32](https://github.com/lyaschuchenko/VueTorrent/commit/ab75f32c5f6225fb9b2615f2880b2ef40037820a)) - add directory to dashboard and sort [#538](https://github.com/lyaschuchenko/VueTorrent/issues/538)
* Add support for "autorun on torrent added" option ([#580](https://github.com/lyaschuchenko/VueTorrent/issues/580)) @Larsluph ([19bf989](https://github.com/lyaschuchenko/VueTorrent/commit/19bf989c7ea8d8f3ed16ab35416575bfcdc3c21c)) ([f474709](https://github.com/lyaschuchenko/VueTorrent/commit/f474709d4f28b20fe4c0ef92f56de76b924f5d0b))
* add support for setting global speed limits ([#406](https://github.com/lyaschuchenko/VueTorrent/issues/406)) ([23fee41](https://github.com/lyaschuchenko/VueTorrent/commit/23fee419fd1561f440f88e4b354ac3745ed813cd)) - Add globalSpeed and globalVolume computed values to torrent properties ([#599](https://github.com/lyaschuchenko/VueTorrent/issues/599)) @Larsluph
* Add tag support in Dashboard, TorrentDetail and Add Modal ([#570](https://github.com/lyaschuchenko/VueTorrent/issues/570)) ([0a175cc](https://github.com/lyaschuchenko/VueTorrent/commit/0a175ccb437f9ad5609b85482a63dfbc2e6f0e9a)) ([3e1d341](https://github.com/lyaschuchenko/VueTorrent/commit/3e1d3411b7158ec7b8665f2d677b62eca8846d66))
* add uploaded property ([#145](https://github.com/lyaschuchenko/VueTorrent/issues/145)) ([0a58d98](https://github.com/lyaschuchenko/VueTorrent/commit/0a58d98b9f50affee99f05fb4f93d9b37d38ac76)) - add max_ratio_act handling ([#523](https://github.com/lyaschuchenko/VueTorrent/issues/523)) [@giacomocerquone](https://github.com/giacomocerquone)
* Add/Ban peers support ([#598](https://github.com/lyaschuchenko/VueTorrent/issues/598)) @Larsluph ([59b47db](https://github.com/lyaschuchenko/VueTorrent/commit/59b47dbc8d28675d78892651be79536db3df9b33)) ([b05dcd0](https://github.com/lyaschuchenko/VueTorrent/commit/b05dcd0569e526f66420c9e2d30ef5f4e9fc864b))
* additional connection settings [#317](https://github.com/lyaschuchenko/VueTorrent/issues/317) ([54b3456](https://github.com/lyaschuchenko/VueTorrent/commit/54b345682f18b45fc6f6fe5d7a732bb87932f664)) - add pending pieces color to canvas ([#592](https://github.com/lyaschuchenko/VueTorrent/issues/592)) @Larsluph
* auto install search plugins when none installed ([abc5457](https://github.com/lyaschuchenko/VueTorrent/commit/abc5457882892ce4840ae0eef7a438e5ea4c7c90)) ([5132d4d](https://github.com/lyaschuchenko/VueTorrent/commit/5132d4decf207d508e91f8b65ced31d50dc3f838))
* auto refresh peers ([dfd10be](https://github.com/lyaschuchenko/VueTorrent/commit/dfd10beeab4c757ff1ac0c3eecbdc4e740573a75)) - Add shutdown button in TopActions ([#633](https://github.com/lyaschuchenko/VueTorrent/issues/633)) @Larsluph
* auto releasing ci ([#146](https://github.com/lyaschuchenko/VueTorrent/issues/146)) ([d217627](https://github.com/lyaschuchenko/VueTorrent/commit/d217627d9ad15535bfe67116790a78414c44c673)) ([ab75f32](https://github.com/lyaschuchenko/VueTorrent/commit/ab75f32c5f6225fb9b2615f2880b2ef40037820a))
* basic fake torrent generator [#518](https://github.com/lyaschuchenko/VueTorrent/issues/518) ([d3cda1a](https://github.com/lyaschuchenko/VueTorrent/commit/d3cda1a6499fcc2a7c4a548862b9c1e4fa338c23)) - Add support for "autorun on torrent added" option ([#580](https://github.com/lyaschuchenko/VueTorrent/issues/580)) @Larsluph
* basic limit share ratio [#308](https://github.com/lyaschuchenko/VueTorrent/issues/308) ([2c1fc34](https://github.com/lyaschuchenko/VueTorrent/commit/2c1fc34ebdc6f096628d23a6072ea1970764b267)) ([19bf989](https://github.com/lyaschuchenko/VueTorrent/commit/19bf989c7ea8d8f3ed16ab35416575bfcdc3c21c))
* basic multilang support ([#320](https://github.com/lyaschuchenko/VueTorrent/issues/320)) ([a7cc03c](https://github.com/lyaschuchenko/VueTorrent/commit/a7cc03c3ba60f7dbc2d18fff78a0b5f5c6db4b1a)) - add support for setting global speed limits ([#406](https://github.com/lyaschuchenko/VueTorrent/issues/406))
* basic proxy support [#261](https://github.com/lyaschuchenko/VueTorrent/issues/261) ([71a09fc](https://github.com/lyaschuchenko/VueTorrent/commit/71a09fc58a9c29037cfc87fa6c6f0cfdb645233e)) ([23fee41](https://github.com/lyaschuchenko/VueTorrent/commit/23fee419fd1561f440f88e4b354ac3745ed813cd))
* Basic rss interface ([#447](https://github.com/lyaschuchenko/VueTorrent/issues/447)) ([732e519](https://github.com/lyaschuchenko/VueTorrent/commit/732e5193ec76d521249ac6fb73c4a6e975091476)) - Add tag support in Dashboard, TorrentDetail and Add Modal ([#570](https://github.com/lyaschuchenko/VueTorrent/issues/570))
* bypass authentication ([#310](https://github.com/lyaschuchenko/VueTorrent/issues/310)) ([b069ce4](https://github.com/lyaschuchenko/VueTorrent/commit/b069ce490e74baf003c9c92cd780c51414702c13)) ([0a175cc](https://github.com/lyaschuchenko/VueTorrent/commit/0a175ccb437f9ad5609b85482a63dfbc2e6f0e9a))
* checkbox + button with color feedback for TorrentDeleteModal ([a83ea14](https://github.com/lyaschuchenko/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca)) - add uploaded property ([#145](https://github.com/lyaschuchenko/VueTorrent/issues/145))
* copy name/hash/magnet [#277](https://github.com/lyaschuchenko/VueTorrent/issues/277) ([42afd92](https://github.com/lyaschuchenko/VueTorrent/commit/42afd921274c0be3fc122a4d5b8d2aeae5fe0c13)) ([0a58d98](https://github.com/lyaschuchenko/VueTorrent/commit/0a58d98b9f50affee99f05fb4f93d9b37d38ac76))
* create nightly build ([1cdbb95](https://github.com/lyaschuchenko/VueTorrent/commit/1cdbb95f8ca258430f85eb7d3385dc134d5c3b48)) - Add/Ban peers support ([#598](https://github.com/lyaschuchenko/VueTorrent/issues/598)) @Larsluph
* custom date format support [#340](https://github.com/lyaschuchenko/VueTorrent/issues/340) ([e08a445](https://github.com/lyaschuchenko/VueTorrent/commit/e08a4456ee3ce76af3c3a47c7a15cbb5141a4663)) ([59b47db](https://github.com/lyaschuchenko/VueTorrent/commit/59b47dbc8d28675d78892651be79536db3df9b33))
* drawer on right side [#276](https://github.com/lyaschuchenko/VueTorrent/issues/276) ([a18bded](https://github.com/lyaschuchenko/VueTorrent/commit/a18bded9cb9792b3301008cc717b52053191c8f9)) - additional connection settings [#317](https://github.com/lyaschuchenko/VueTorrent/issues/317)
* fullscreen toggle on torrent info modal (desktop) ([1de9e64](https://github.com/lyaschuchenko/VueTorrent/commit/1de9e6459657c386332d146352c3ed765f70fa3c)) ([54b3456](https://github.com/lyaschuchenko/VueTorrent/commit/54b345682f18b45fc6f6fe5d7a732bb87932f664))
* improved per-torrent speed limits modal ([#172](https://github.com/lyaschuchenko/VueTorrent/issues/172)) ([7bed9ee](https://github.com/lyaschuchenko/VueTorrent/commit/7bed9eef12321e06bb143d96f02326d967e6f739)) - auto install search plugins when none installed ([abc5457](https://github.com/lyaschuchenko/VueTorrent/commit/abc5457882892ce4840ae0eef7a438e5ea4c7c90))
* Last Activity support [#217](https://github.com/lyaschuchenko/VueTorrent/issues/217) ([1d9279a](https://github.com/lyaschuchenko/VueTorrent/commit/1d9279a3764578fbc25ded4c0b035be855d04163)) - auto refresh peers ([dfd10be](https://github.com/lyaschuchenko/VueTorrent/commit/dfd10beeab4c757ff1ac0c3eecbdc4e740573a75))
* Links in torrent details view are now clickable ([#506](https://github.com/lyaschuchenko/VueTorrent/issues/506)) ([f1536cb](https://github.com/lyaschuchenko/VueTorrent/commit/f1536cb010e2ebc8d7d026a62be491e8a3a04cfa)) - auto releasing ci ([#146](https://github.com/lyaschuchenko/VueTorrent/issues/146))
* move to vite + typescript => BREAKS PWA, please re-install! ([#352](https://github.com/lyaschuchenko/VueTorrent/issues/352)) ([5aa83fa](https://github.com/lyaschuchenko/VueTorrent/commit/5aa83fa95e0c072822b1c13910455b18f7a6bbb8)) ([d217627](https://github.com/lyaschuchenko/VueTorrent/commit/d217627d9ad15535bfe67116790a78414c44c673))
* New Logo ([b2858a4](https://github.com/lyaschuchenko/VueTorrent/commit/b2858a4f68238867996cfe5e61e0947dae3af022)) - basic fake torrent generator [#518](https://github.com/lyaschuchenko/VueTorrent/issues/518)
* New select mode color ([8f8d3db](https://github.com/lyaschuchenko/VueTorrent/commit/8f8d3dbb765d950baa9c5e7654a356e2d300ed28)) ([d3cda1a](https://github.com/lyaschuchenko/VueTorrent/commit/d3cda1a6499fcc2a7c4a548862b9c1e4fa338c23))
* open addmodal when dragging a file into the dashboard ([5807db5](https://github.com/lyaschuchenko/VueTorrent/commit/5807db5e99ac84436261e9d0e2b9a6767d851ba2)) - basic limit share ratio [#308](https://github.com/lyaschuchenko/VueTorrent/issues/308)
* optional top pagination [#539](https://github.com/lyaschuchenko/VueTorrent/issues/539) ([8a59d10](https://github.com/lyaschuchenko/VueTorrent/commit/8a59d10483e351ae95a8c32e878189411ce50ec1)) ([2c1fc34](https://github.com/lyaschuchenko/VueTorrent/commit/2c1fc34ebdc6f096628d23a6072ea1970764b267))
* piece states progress bar ([#426](https://github.com/lyaschuchenko/VueTorrent/issues/426)) ([1722a14](https://github.com/lyaschuchenko/VueTorrent/commit/1722a14dba74dafca3b373d50c6dcd94814ab074)) - basic multilang support ([#320](https://github.com/lyaschuchenko/VueTorrent/issues/320))
* PWA splash & bar color ([dfbed5c](https://github.com/lyaschuchenko/VueTorrent/commit/dfbed5cb05c0b6974c09c86c6e82e1478f1100d6)) ([a7cc03c](https://github.com/lyaschuchenko/VueTorrent/commit/a7cc03c3ba60f7dbc2d18fff78a0b5f5c6db4b1a))
* remember delete with files preference [#291](https://github.com/lyaschuchenko/VueTorrent/issues/291) ([684bbec](https://github.com/lyaschuchenko/VueTorrent/commit/684bbecff0f7fe239f0ee05dfb5392b4a6401069)) - basic proxy support [#261](https://github.com/lyaschuchenko/VueTorrent/issues/261)
* remove torrent files with checkbox [#199](https://github.com/lyaschuchenko/VueTorrent/issues/199) ([0eddf64](https://github.com/lyaschuchenko/VueTorrent/commit/0eddf6458ea3b72ce19282fbcd07e19ff96fd3f8)) ([71a09fc](https://github.com/lyaschuchenko/VueTorrent/commit/71a09fc58a9c29037cfc87fa6c6f0cfdb645233e))
* render "active time" in torrent info tab ([#537](https://github.com/lyaschuchenko/VueTorrent/issues/537)) [@invakid404](https://github.com/invakid404) ([d3cf4d5](https://github.com/lyaschuchenko/VueTorrent/commit/d3cf4d5795b1a62a8bc1e5a4645408657c4956cd)) - Basic rss interface ([#447](https://github.com/lyaschuchenko/VueTorrent/issues/447))
* run external program on torrent completion [#258](https://github.com/lyaschuchenko/VueTorrent/issues/258) ([99fa1c4](https://github.com/lyaschuchenko/VueTorrent/commit/99fa1c419d47516a1e265e753c127fedf370ffec)) ([732e519](https://github.com/lyaschuchenko/VueTorrent/commit/732e5193ec76d521249ac6fb73c4a6e975091476))
* Show connection status at the bottom of Navbar ([#255](https://github.com/lyaschuchenko/VueTorrent/issues/255)) ([204d74c](https://github.com/lyaschuchenko/VueTorrent/commit/204d74c4e84df5404819796e9e5078c01106990a)) - bypass authentication ([#310](https://github.com/lyaschuchenko/VueTorrent/issues/310))
* show created by info [#279](https://github.com/lyaschuchenko/VueTorrent/issues/279) ([7a7562e](https://github.com/lyaschuchenko/VueTorrent/commit/7a7562e54e66aebbf782baefa89b1f17e5119afa)) ([b069ce4](https://github.com/lyaschuchenko/VueTorrent/commit/b069ce490e74baf003c9c92cd780c51414702c13))
* sidebar on launch option [#182](https://github.com/lyaschuchenko/VueTorrent/issues/182) ([fca51c5](https://github.com/lyaschuchenko/VueTorrent/commit/fca51c536fe8cb96c878501c386efcb4ee868ff6)) - checkbox + button with color feedback for TorrentDeleteModal ([a83ea14](https://github.com/lyaschuchenko/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
* Speed cards as pills with icon in first column and speed on top of the unit in second column ([#169](https://github.com/lyaschuchenko/VueTorrent/issues/169)) ([354fe4f](https://github.com/lyaschuchenko/VueTorrent/commit/354fe4f5f870bb48613ef390341c4c1971e2936e)) - copy name/hash/magnet [#277](https://github.com/lyaschuchenko/VueTorrent/issues/277)
* support for renaming folders ([#500](https://github.com/lyaschuchenko/VueTorrent/issues/500)) ([cf8f43a](https://github.com/lyaschuchenko/VueTorrent/commit/cf8f43aac3c235cf616bed4c1ce1ceda0fad8fe4)) ([42afd92](https://github.com/lyaschuchenko/VueTorrent/commit/42afd921274c0be3fc122a4d5b8d2aeae5fe0c13))
* torrent detail infinity sign for unlimited speeds ([#173](https://github.com/lyaschuchenko/VueTorrent/issues/173)) ([6f9a5d5](https://github.com/lyaschuchenko/VueTorrent/commit/6f9a5d5fefd9c0a2622ce62588ee717f762b7eee)) - create nightly build ([1cdbb95](https://github.com/lyaschuchenko/VueTorrent/commit/1cdbb95f8ca258430f85eb7d3385dc134d5c3b48))
* use confirmation modal when deleting from context menu [#191](https://github.com/lyaschuchenko/VueTorrent/issues/191) ([53c548b](https://github.com/lyaschuchenko/VueTorrent/commit/53c548b502bacc95bab59026b836eb2bb2b785ec)) - custom date format support [#340](https://github.com/lyaschuchenko/VueTorrent/issues/340)
([e08a445](https://github.com/lyaschuchenko/VueTorrent/commit/e08a4456ee3ce76af3c3a47c7a15cbb5141a4663))
- drawer on right side [#276](https://github.com/lyaschuchenko/VueTorrent/issues/276)
([a18bded](https://github.com/lyaschuchenko/VueTorrent/commit/a18bded9cb9792b3301008cc717b52053191c8f9))
- fullscreen toggle on torrent info modal (desktop) ([1de9e64](https://github.com/lyaschuchenko/VueTorrent/commit/1de9e6459657c386332d146352c3ed765f70fa3c))
- improved per-torrent speed limits modal ([#172](https://github.com/lyaschuchenko/VueTorrent/issues/172))
([7bed9ee](https://github.com/lyaschuchenko/VueTorrent/commit/7bed9eef12321e06bb143d96f02326d967e6f739))
- Last Activity support [#217](https://github.com/lyaschuchenko/VueTorrent/issues/217)
([1d9279a](https://github.com/lyaschuchenko/VueTorrent/commit/1d9279a3764578fbc25ded4c0b035be855d04163))
- Links in torrent details view are now clickable ([#506](https://github.com/lyaschuchenko/VueTorrent/issues/506))
([f1536cb](https://github.com/lyaschuchenko/VueTorrent/commit/f1536cb010e2ebc8d7d026a62be491e8a3a04cfa))
- move to vite + typescript => BREAKS PWA, please re-install! ([#352](https://github.com/lyaschuchenko/VueTorrent/issues/352))
([5aa83fa](https://github.com/lyaschuchenko/VueTorrent/commit/5aa83fa95e0c072822b1c13910455b18f7a6bbb8))
- New Logo ([b2858a4](https://github.com/lyaschuchenko/VueTorrent/commit/b2858a4f68238867996cfe5e61e0947dae3af022))
- New select mode color ([8f8d3db](https://github.com/lyaschuchenko/VueTorrent/commit/8f8d3dbb765d950baa9c5e7654a356e2d300ed28))
- open addmodal when dragging a file into the dashboard ([5807db5](https://github.com/lyaschuchenko/VueTorrent/commit/5807db5e99ac84436261e9d0e2b9a6767d851ba2))
- optional top pagination [#539](https://github.com/lyaschuchenko/VueTorrent/issues/539)
([8a59d10](https://github.com/lyaschuchenko/VueTorrent/commit/8a59d10483e351ae95a8c32e878189411ce50ec1))
- piece states progress bar ([#426](https://github.com/lyaschuchenko/VueTorrent/issues/426))
([1722a14](https://github.com/lyaschuchenko/VueTorrent/commit/1722a14dba74dafca3b373d50c6dcd94814ab074))
- PWA splash & bar color ([dfbed5c](https://github.com/lyaschuchenko/VueTorrent/commit/dfbed5cb05c0b6974c09c86c6e82e1478f1100d6))
- remember delete with files preference [#291](https://github.com/lyaschuchenko/VueTorrent/issues/291)
([684bbec](https://github.com/lyaschuchenko/VueTorrent/commit/684bbecff0f7fe239f0ee05dfb5392b4a6401069))
- remove torrent files with checkbox [#199](https://github.com/lyaschuchenko/VueTorrent/issues/199)
([0eddf64](https://github.com/lyaschuchenko/VueTorrent/commit/0eddf6458ea3b72ce19282fbcd07e19ff96fd3f8))
- render "active time" in torrent info tab ([#537](https://github.com/lyaschuchenko/VueTorrent/issues/537)) [@invakid404](https://github.com/invakid404)
([d3cf4d5](https://github.com/lyaschuchenko/VueTorrent/commit/d3cf4d5795b1a62a8bc1e5a4645408657c4956cd))
- run external program on torrent completion [#258](https://github.com/lyaschuchenko/VueTorrent/issues/258)
([99fa1c4](https://github.com/lyaschuchenko/VueTorrent/commit/99fa1c419d47516a1e265e753c127fedf370ffec))
- Show connection status at the bottom of Navbar ([#255](https://github.com/lyaschuchenko/VueTorrent/issues/255))
([204d74c](https://github.com/lyaschuchenko/VueTorrent/commit/204d74c4e84df5404819796e9e5078c01106990a))
- show created by info [#279](https://github.com/lyaschuchenko/VueTorrent/issues/279)
([7a7562e](https://github.com/lyaschuchenko/VueTorrent/commit/7a7562e54e66aebbf782baefa89b1f17e5119afa))
- sidebar on launch option [#182](https://github.com/lyaschuchenko/VueTorrent/issues/182)
([fca51c5](https://github.com/lyaschuchenko/VueTorrent/commit/fca51c536fe8cb96c878501c386efcb4ee868ff6))
- Speed cards as pills with icon in first column and speed on top of the unit in second column ([#169](https://github.com/lyaschuchenko/VueTorrent/issues/169))
([354fe4f](https://github.com/lyaschuchenko/VueTorrent/commit/354fe4f5f870bb48613ef390341c4c1971e2936e))
- support for renaming folders ([#500](https://github.com/lyaschuchenko/VueTorrent/issues/500))
([cf8f43a](https://github.com/lyaschuchenko/VueTorrent/commit/cf8f43aac3c235cf616bed4c1ce1ceda0fad8fe4))
- torrent detail infinity sign for unlimited speeds ([#173](https://github.com/lyaschuchenko/VueTorrent/issues/173))
([6f9a5d5](https://github.com/lyaschuchenko/VueTorrent/commit/6f9a5d5fefd9c0a2622ce62588ee717f762b7eee))
- use confirmation modal when deleting from context menu [#191](https://github.com/lyaschuchenko/VueTorrent/issues/191)
([53c548b](https://github.com/lyaschuchenko/VueTorrent/commit/53c548b502bacc95bab59026b836eb2bb2b785ec))
### Bug Fixes ### Bug Fixes
* "405 Method Not Allowed" when renaming torrent ([#551](https://github.com/lyaschuchenko/VueTorrent/issues/551)) ([66dc741](https://github.com/lyaschuchenko/VueTorrent/commit/66dc74182545705003e3bcb4460224a18a57e830)) - "405 Method Not Allowed" when renaming torrent ([#551](https://github.com/lyaschuchenko/VueTorrent/issues/551))
* "409 Conflict" on file/folder rename ([#597](https://github.com/lyaschuchenko/VueTorrent/issues/597)) ([004c8f5](https://github.com/lyaschuchenko/VueTorrent/commit/004c8f57d2db1da9032848e783497bcc3c239df2)) ([66dc741](https://github.com/lyaschuchenko/VueTorrent/commit/66dc74182545705003e3bcb4460224a18a57e830))
* 0 speed when no speed data returned ([a7b8ed9](https://github.com/lyaschuchenko/VueTorrent/commit/a7b8ed9da3dbca8d2f3be0665880d3cda5f5a50b)) - "409 Conflict" on file/folder rename ([#597](https://github.com/lyaschuchenko/VueTorrent/issues/597))
* Add caret color to dark theme ([#564](https://github.com/lyaschuchenko/VueTorrent/issues/564)) ([45c65ae](https://github.com/lyaschuchenko/VueTorrent/commit/45c65ae394db6fc722afa13408ba74b4a55bf240)) ([004c8f5](https://github.com/lyaschuchenko/VueTorrent/commit/004c8f57d2db1da9032848e783497bcc3c239df2))
* add progress border + percentage [#430](https://github.com/lyaschuchenko/VueTorrent/issues/430) ([acc0733](https://github.com/lyaschuchenko/VueTorrent/commit/acc07335d31b027cd7ca989959c6d450a957010e)) - 0 speed when no speed data returned ([a7b8ed9](https://github.com/lyaschuchenko/VueTorrent/commit/a7b8ed9da3dbca8d2f3be0665880d3cda5f5a50b))
* add tracker dialog bug [#187](https://github.com/lyaschuchenko/VueTorrent/issues/187) ([7c7e40d](https://github.com/lyaschuchenko/VueTorrent/commit/7c7e40d4a5105ce3e0e9422551ad6cd2673da932)) - Add caret color to dark theme ([#564](https://github.com/lyaschuchenko/VueTorrent/issues/564))
* allow native context menu in input elements ([#428](https://github.com/lyaschuchenko/VueTorrent/issues/428)) ([b8ad965](https://github.com/lyaschuchenko/VueTorrent/commit/b8ad965763fd647b230f7fcbd9798d182cefd762)) ([45c65ae](https://github.com/lyaschuchenko/VueTorrent/commit/45c65ae394db6fc722afa13408ba74b4a55bf240))
* altspeed value ([aadb3f2](https://github.com/lyaschuchenko/VueTorrent/commit/aadb3f2171d38d5a94f9ca9847c50137669055b3)) - add progress border + percentage [#430](https://github.com/lyaschuchenko/VueTorrent/issues/430)
* always fetch full data (more reliable) ([89cf6ba](https://github.com/lyaschuchenko/VueTorrent/commit/89cf6ba32c7a4b24cd0ea4d358e56e1d859d4665)) ([acc0733](https://github.com/lyaschuchenko/VueTorrent/commit/acc07335d31b027cd7ca989959c6d450a957010e))
* anonymous mode [#362](https://github.com/lyaschuchenko/VueTorrent/issues/362) ([27a0717](https://github.com/lyaschuchenko/VueTorrent/commit/27a07179f08225292e2e26fb57bbfa6f846b272b)) - add tracker dialog bug [#187](https://github.com/lyaschuchenko/VueTorrent/issues/187)
* application version getter ([#222](https://github.com/lyaschuchenko/VueTorrent/issues/222)) ([6535ac5](https://github.com/lyaschuchenko/VueTorrent/commit/6535ac56265d3062c877f35fa5e44b9635e26fcd)) ([7c7e40d](https://github.com/lyaschuchenko/VueTorrent/commit/7c7e40d4a5105ce3e0e9422551ad6cd2673da932))
* broken build [#453](https://github.com/lyaschuchenko/VueTorrent/issues/453) ([8f1a12d](https://github.com/lyaschuchenko/VueTorrent/commit/8f1a12d15fa438e55194a9c807bbdc0115a3deda)) - allow native context menu in input elements ([#428](https://github.com/lyaschuchenko/VueTorrent/issues/428))
* category create validation ([#552](https://github.com/lyaschuchenko/VueTorrent/issues/552)) ([edc0330](https://github.com/lyaschuchenko/VueTorrent/commit/edc0330bafdedc98e2e5f7df6bc2894bbcf5a281)) ([b8ad965](https://github.com/lyaschuchenko/VueTorrent/commit/b8ad965763fd647b230f7fcbd9798d182cefd762))
* category download folder [#435](https://github.com/lyaschuchenko/VueTorrent/issues/435) ([5a0ec26](https://github.com/lyaschuchenko/VueTorrent/commit/5a0ec26ddb7b9c7fc1a03102684fd2268b2ae33f)) - altspeed value ([aadb3f2](https://github.com/lyaschuchenko/VueTorrent/commit/aadb3f2171d38d5a94f9ca9847c50137669055b3))
* category download folder not showing correctly ([#448](https://github.com/lyaschuchenko/VueTorrent/issues/448)) ([06579c8](https://github.com/lyaschuchenko/VueTorrent/commit/06579c8bbee5f991f195df596054da8751d0ea72)) - always fetch full data (more reliable) ([89cf6ba](https://github.com/lyaschuchenko/VueTorrent/commit/89cf6ba32c7a4b24cd0ea4d358e56e1d859d4665))
* change rss-unread color from white to #ccc ([#643](https://github.com/lyaschuchenko/VueTorrent/issues/643)) [@hqwuzhaoyi](https://github.com/hqwuzhaoyi) ([dd02cdb](https://github.com/lyaschuchenko/VueTorrent/commit/dd02cdb564803495af0ea60a61c65562b3fe8ea5)) - anonymous mode [#362](https://github.com/lyaschuchenko/VueTorrent/issues/362)
* chart flickering ([#644](https://github.com/lyaschuchenko/VueTorrent/issues/644)) @Hans1208 ([5e3d6b7](https://github.com/lyaschuchenko/VueTorrent/commit/5e3d6b778892fc6b157ba533f288e77ceed091c7)) ([27a0717](https://github.com/lyaschuchenko/VueTorrent/commit/27a07179f08225292e2e26fb57bbfa6f846b272b))
* connection password type [#456](https://github.com/lyaschuchenko/VueTorrent/issues/456) ([a8616cc](https://github.com/lyaschuchenko/VueTorrent/commit/a8616cce545ed579e39db9e64c0005a74eee63d5)) - application version getter ([#222](https://github.com/lyaschuchenko/VueTorrent/issues/222))
* connection status [#482](https://github.com/lyaschuchenko/VueTorrent/issues/482) ([e047467](https://github.com/lyaschuchenko/VueTorrent/commit/e0474671042dc7b1c4f2490018c5484e4730ccf1)) ([6535ac5](https://github.com/lyaschuchenko/VueTorrent/commit/6535ac56265d3062c877f35fa5e44b9635e26fcd))
* Context menu placement ([ed08c91](https://github.com/lyaschuchenko/VueTorrent/commit/ed08c914ebde9fba53e8b24f58c0a80918569b26)) - broken build [#453](https://github.com/lyaschuchenko/VueTorrent/issues/453)
* Cookies not sent with request for Web App manifest.json ([#504](https://github.com/lyaschuchenko/VueTorrent/issues/504)) ([2efe73a](https://github.com/lyaschuchenko/VueTorrent/commit/2efe73ad7e51c7b45ad65827503d4c3fcebd58a4)) ([8f1a12d](https://github.com/lyaschuchenko/VueTorrent/commit/8f1a12d15fa438e55194a9c807bbdc0115a3deda))
* copy to clipboard on non secure context (no SSL) [#521](https://github.com/lyaschuchenko/VueTorrent/issues/521) ([058766f](https://github.com/lyaschuchenko/VueTorrent/commit/058766f617e39f57bd56d68557b32797d70d4947)) - category create validation ([#552](https://github.com/lyaschuchenko/VueTorrent/issues/552))
* dark theme glitch ([2b913d5](https://github.com/lyaschuchenko/VueTorrent/commit/2b913d5064d6c5135ed19c720cdccaaaf792fe4c)) ([edc0330](https://github.com/lyaschuchenko/VueTorrent/commit/edc0330bafdedc98e2e5f7df6bc2894bbcf5a281))
* Dashboard items not using $store.state reference ([#601](https://github.com/lyaschuchenko/VueTorrent/issues/601)) ([add11c9](https://github.com/lyaschuchenko/VueTorrent/commit/add11c9548472396a7c4e2c483128de25380b616)) - category download folder [#435](https://github.com/lyaschuchenko/VueTorrent/issues/435)
* Default change location not prefilling ([#583](https://github.com/lyaschuchenko/VueTorrent/issues/583)) @Larsluph ([b53c331](https://github.com/lyaschuchenko/VueTorrent/commit/b53c331d4c98635f38945d9898ab72358bb7bf34)) ([5a0ec26](https://github.com/lyaschuchenko/VueTorrent/commit/5a0ec26ddb7b9c7fc1a03102684fd2268b2ae33f))
* disabling plugins [#443](https://github.com/lyaschuchenko/VueTorrent/issues/443) ([3b98949](https://github.com/lyaschuchenko/VueTorrent/commit/3b989499b867f00618a0a567831c9a1dcdc65418)) - category download folder not showing correctly ([#448](https://github.com/lyaschuchenko/VueTorrent/issues/448))
* double click opens info [#287](https://github.com/lyaschuchenko/VueTorrent/issues/287) ([c8ffce5](https://github.com/lyaschuchenko/VueTorrent/commit/c8ffce59b1ebb7b72575f8797d35942bdfe62ef4)) ([06579c8](https://github.com/lyaschuchenko/VueTorrent/commit/06579c8bbee5f991f195df596054da8751d0ea72))
* Duplicate reference in dashboard settings ([#618](https://github.com/lyaschuchenko/VueTorrent/issues/618)) @Larsluph ([ea7e68c](https://github.com/lyaschuchenko/VueTorrent/commit/ea7e68ca2a48b19292d9b9b5388bcba8664d04bb)) - change rss-unread color from white to #ccc ([#643](https://github.com/lyaschuchenko/VueTorrent/issues/643)) [@hqwuzhaoyi](https://github.com/hqwuzhaoyi)
* Establish Service WalkerRules ([#227](https://github.com/lyaschuchenko/VueTorrent/issues/227)) ([04971dc](https://github.com/lyaschuchenko/VueTorrent/commit/04971dcf874c2f952f57c3abef94d8d92337e488)) ([dd02cdb](https://github.com/lyaschuchenko/VueTorrent/commit/dd02cdb564803495af0ea60a61c65562b3fe8ea5))
* favicon [#441](https://github.com/lyaschuchenko/VueTorrent/issues/441) ([745376c](https://github.com/lyaschuchenko/VueTorrent/commit/745376c02be7a1d9398feb5181bebe9026d22638)) - chart flickering ([#644](https://github.com/lyaschuchenko/VueTorrent/issues/644)) @Hans1208
* favicon [#441](https://github.com/lyaschuchenko/VueTorrent/issues/441) ([b7e7de1](https://github.com/lyaschuchenko/VueTorrent/commit/b7e7de1e9095228d9207845201c0ceff814623a4)) ([5e3d6b7](https://github.com/lyaschuchenko/VueTorrent/commit/5e3d6b778892fc6b157ba533f288e77ceed091c7))
* font-size difference in right click menu ([#505](https://github.com/lyaschuchenko/VueTorrent/issues/505)) ([a8f28dd](https://github.com/lyaschuchenko/VueTorrent/commit/a8f28dd5b468924f7dcf09d101e438a15e1269ba)) - connection password type [#456](https://github.com/lyaschuchenko/VueTorrent/issues/456)
* Forced state not present in MobileCard ([#632](https://github.com/lyaschuchenko/VueTorrent/issues/632)) @Larsluph ([7114ce1](https://github.com/lyaschuchenko/VueTorrent/commit/7114ce12df6bf7a0992406245277093c52d16002)) ([a8616cc](https://github.com/lyaschuchenko/VueTorrent/commit/a8616cce545ed579e39db9e64c0005a74eee63d5))
* free space toggle [#541](https://github.com/lyaschuchenko/VueTorrent/issues/541) ([f8c3b7d](https://github.com/lyaschuchenko/VueTorrent/commit/f8c3b7dc38ff1a7a52a130982f86d82cc4fb61c4)) - connection status [#482](https://github.com/lyaschuchenko/VueTorrent/issues/482)
* general fixes and README update ([#562](https://github.com/lyaschuchenko/VueTorrent/issues/562)) ([8b6caf0](https://github.com/lyaschuchenko/VueTorrent/commit/8b6caf03359128581077471ce1d80d1308f1a2b6)) ([e047467](https://github.com/lyaschuchenko/VueTorrent/commit/e0474671042dc7b1c4f2490018c5484e4730ccf1))
* Global Speed Title (upload & download were switched) ([#218](https://github.com/lyaschuchenko/VueTorrent/issues/218)) ([906f6d5](https://github.com/lyaschuchenko/VueTorrent/commit/906f6d5f872b848fc7b3c5071c51a9696ce7c734)) - Context menu placement ([ed08c91](https://github.com/lyaschuchenko/VueTorrent/commit/ed08c914ebde9fba53e8b24f58c0a80918569b26))
* interrupted divider in torrenfinfo [#151](https://github.com/lyaschuchenko/VueTorrent/issues/151) ([d362aef](https://github.com/lyaschuchenko/VueTorrent/commit/d362aef27574bb6a60c3675eef52655f1a57bebe)) - Cookies not sent with request for Web App manifest.json ([#504](https://github.com/lyaschuchenko/VueTorrent/issues/504))
* Invalid deconstruct on qbit service ([#623](https://github.com/lyaschuchenko/VueTorrent/issues/623)) ([5a2ed4e](https://github.com/lyaschuchenko/VueTorrent/commit/5a2ed4ea99a81f5566e3276acb8faae42adcc035)) ([2efe73a](https://github.com/lyaschuchenko/VueTorrent/commit/2efe73ad7e51c7b45ad65827503d4c3fcebd58a4))
* invisble close button on modal [#314](https://github.com/lyaschuchenko/VueTorrent/issues/314) [#297](https://github.com/lyaschuchenko/VueTorrent/issues/297) ([8001dc9](https://github.com/lyaschuchenko/VueTorrent/commit/8001dc91c738e4b9bfa9dd8a6b6b52249e727f5a)) - copy to clipboard on non secure context (no SSL) [#521](https://github.com/lyaschuchenko/VueTorrent/issues/521)
* issue where 'torrent details' modal does not work properly on iOS ([a83ea14](https://github.com/lyaschuchenko/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca)) ([058766f](https://github.com/lyaschuchenko/VueTorrent/commit/058766f617e39f57bd56d68557b32797d70d4947))
* layout issues + remove vue-perfect-scrollbar + refactor context menu ([a83ea14](https://github.com/lyaschuchenko/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca)) - dark theme glitch ([2b913d5](https://github.com/lyaschuchenko/VueTorrent/commit/2b913d5064d6c5135ed19c720cdccaaaf792fe4c))
* load default folder [#417](https://github.com/lyaschuchenko/VueTorrent/issues/417) ([c63d0a4](https://github.com/lyaschuchenko/VueTorrent/commit/c63d0a403939c99a442a10563789cb8753d67771)) - Dashboard items not using $store.state reference ([#601](https://github.com/lyaschuchenko/VueTorrent/issues/601))
* load missing filters at startup ([#567](https://github.com/lyaschuchenko/VueTorrent/issues/567)) ([87de795](https://github.com/lyaschuchenko/VueTorrent/commit/87de79555b5aad8827fd5f15dbf53239cdea10c9)) ([add11c9](https://github.com/lyaschuchenko/VueTorrent/commit/add11c9548472396a7c4e2c483128de25380b616))
* login autocomplete render issue [#474](https://github.com/lyaschuchenko/VueTorrent/issues/474) ([ef64c38](https://github.com/lyaschuchenko/VueTorrent/commit/ef64c38f099fca1be5db45741c60afc04fff3065)) - Default change location not prefilling ([#583](https://github.com/lyaschuchenko/VueTorrent/issues/583)) @Larsluph
* login console error on refresh ([254d7c8](https://github.com/lyaschuchenko/VueTorrent/commit/254d7c8562e3fec5a16b4f65a4de0382ef7662c1)) ([b53c331](https://github.com/lyaschuchenko/VueTorrent/commit/b53c331d4c98635f38945d9898ab72358bb7bf34))
* login prompt being displayed when whitelisted ([#511](https://github.com/lyaschuchenko/VueTorrent/issues/511)) ([077cf54](https://github.com/lyaschuchenko/VueTorrent/commit/077cf54c6bb5ccc7e5ccf9b94731ec468bd17ecd)) - disabling plugins [#443](https://github.com/lyaschuchenko/VueTorrent/issues/443)
* logout [#286](https://github.com/lyaschuchenko/VueTorrent/issues/286) ([9121230](https://github.com/lyaschuchenko/VueTorrent/commit/912123098e5fca6193ebb6f66ad06c8442d07861)) ([3b98949](https://github.com/lyaschuchenko/VueTorrent/commit/3b989499b867f00618a0a567831c9a1dcdc65418))
* low visibility text in dark theme ([#390](https://github.com/lyaschuchenko/VueTorrent/issues/390)) ([84750af](https://github.com/lyaschuchenko/VueTorrent/commit/84750af3d4d584f5fc0fd8f3cbabd1b0ecfa2e9f)) - double click opens info [#287](https://github.com/lyaschuchenko/VueTorrent/issues/287)
* magnet text area max size [#413](https://github.com/lyaschuchenko/VueTorrent/issues/413) ([4dd81f7](https://github.com/lyaschuchenko/VueTorrent/commit/4dd81f7cd49ab807fddeb50ff2e871364fd955e5)) ([c8ffce5](https://github.com/lyaschuchenko/VueTorrent/commit/c8ffce59b1ebb7b72575f8797d35942bdfe62ef4))
* margin when freespace card is disabled ([6be41e3](https://github.com/lyaschuchenko/VueTorrent/commit/6be41e33cfb0eb365df18e53c396cd4a36d4b8e5)) - Duplicate reference in dashboard settings ([#618](https://github.com/lyaschuchenko/VueTorrent/issues/618)) @Larsluph
* mention QBittorent [#356](https://github.com/lyaschuchenko/VueTorrent/issues/356) ([bbc31fb](https://github.com/lyaschuchenko/VueTorrent/commit/bbc31fb8c5be1cc1189000e53f90ba7886e05ba8)) ([ea7e68c](https://github.com/lyaschuchenko/VueTorrent/commit/ea7e68ca2a48b19292d9b9b5388bcba8664d04bb))
* mobile search [#156](https://github.com/lyaschuchenko/VueTorrent/issues/156) - maybe redesign in future ([463dabd](https://github.com/lyaschuchenko/VueTorrent/commit/463dabde00a34c495d238aff4fd82ea65acc9e54)) - Establish Service WalkerRules ([#227](https://github.com/lyaschuchenko/VueTorrent/issues/227))
* mobile search [#156](https://github.com/lyaschuchenko/VueTorrent/issues/156) - maybe redesign in future ([0f62f4d](https://github.com/lyaschuchenko/VueTorrent/commit/0f62f4df6763e4449b1ceab946092f9b67b06411)) ([04971dc](https://github.com/lyaschuchenko/VueTorrent/commit/04971dcf874c2f952f57c3abef94d8d92337e488))
* no autocapitalize on login form [#489](https://github.com/lyaschuchenko/VueTorrent/issues/489) ([e352de0](https://github.com/lyaschuchenko/VueTorrent/commit/e352de0643dec66256f5565be6a686ee00f040e5)) - favicon [#441](https://github.com/lyaschuchenko/VueTorrent/issues/441) ([745376c](https://github.com/lyaschuchenko/VueTorrent/commit/745376c02be7a1d9398feb5181bebe9026d22638))
* non-capital words ([#432](https://github.com/lyaschuchenko/VueTorrent/issues/432)) ([ce1e7c3](https://github.com/lyaschuchenko/VueTorrent/commit/ce1e7c3546c150243fede941bd8b4b724e4a5c27)) - favicon [#441](https://github.com/lyaschuchenko/VueTorrent/issues/441) ([b7e7de1](https://github.com/lyaschuchenko/VueTorrent/commit/b7e7de1e9095228d9207845201c0ceff814623a4))
* Persistent add modal ([d517d9f](https://github.com/lyaschuchenko/VueTorrent/commit/d517d9f3341e59de572118922b43a9e1adb8c9ad)) - font-size difference in right click menu ([#505](https://github.com/lyaschuchenko/VueTorrent/issues/505))
* proper unit for up/dl speed in details ([#547](https://github.com/lyaschuchenko/VueTorrent/issues/547)) ([b2ceda2](https://github.com/lyaschuchenko/VueTorrent/commit/b2ceda28e548849f11f28503e27a081ad3818317)) ([a8f28dd](https://github.com/lyaschuchenko/VueTorrent/commit/a8f28dd5b468924f7dcf09d101e438a15e1269ba))
* proper unit for up/dl speed in graph ([#548](https://github.com/lyaschuchenko/VueTorrent/issues/548)) ([a6dac31](https://github.com/lyaschuchenko/VueTorrent/commit/a6dac31fbc5b902e3df562c97497daab121abee3)) - Forced state not present in MobileCard ([#632](https://github.com/lyaschuchenko/VueTorrent/issues/632)) @Larsluph
* push precompiled release in a public folder ([adfc6a0](https://github.com/lyaschuchenko/VueTorrent/commit/adfc6a00f2e0b2e09f7f4e67a2efc3dc1db50194)) ([7114ce1](https://github.com/lyaschuchenko/VueTorrent/commit/7114ce12df6bf7a0992406245277093c52d16002))
* PWA manifest [#405](https://github.com/lyaschuchenko/VueTorrent/issues/405) ([94727a1](https://github.com/lyaschuchenko/VueTorrent/commit/94727a142a1822c533c665d558ad4af6c207d5b9)) - free space toggle [#541](https://github.com/lyaschuchenko/VueTorrent/issues/541)
* Qbittorrent title on tab ([05bcc9e](https://github.com/lyaschuchenko/VueTorrent/commit/05bcc9e58783e4de49d698cfd25c902fad7776de)) ([f8c3b7d](https://github.com/lyaschuchenko/VueTorrent/commit/f8c3b7dc38ff1a7a52a130982f86d82cc4fb61c4))
* refresh torrent detail data from store ([#509](https://github.com/lyaschuchenko/VueTorrent/issues/509)) ([5270619](https://github.com/lyaschuchenko/VueTorrent/commit/5270619a5d27eba380a33a8f12632c2c61611886)) - general fixes and README update ([#562](https://github.com/lyaschuchenko/VueTorrent/issues/562))
* release build ([7a74275](https://github.com/lyaschuchenko/VueTorrent/commit/7a74275a4d15280205ec1e749415da1cb0cd7e41)) ([8b6caf0](https://github.com/lyaschuchenko/VueTorrent/commit/8b6caf03359128581077471ce1d80d1308f1a2b6))
* remove black box on iOS PWA [#180](https://github.com/lyaschuchenko/VueTorrent/issues/180) ([f918ff5](https://github.com/lyaschuchenko/VueTorrent/commit/f918ff5ee5c0ddd1c288caa261bbd95e40de4d24)) - Global Speed Title (upload & download were switched) ([#218](https://github.com/lyaschuchenko/VueTorrent/issues/218))
* remove device darkmode because its unreliable [#285](https://github.com/lyaschuchenko/VueTorrent/issues/285) ([e6c0863](https://github.com/lyaschuchenko/VueTorrent/commit/e6c0863545c4a6a24ecc57158ff61421d17f9070)) ([906f6d5](https://github.com/lyaschuchenko/VueTorrent/commit/906f6d5f872b848fc7b3c5071c51a9696ce7c734))
* remove gesture feature on tabs (buggy anyway) ([0960962](https://github.com/lyaschuchenko/VueTorrent/commit/0960962441e424c28c8ad6014a79f733f495b881)) - interrupted divider in torrenfinfo [#151](https://github.com/lyaschuchenko/VueTorrent/issues/151)
* remove search shortcut [#561](https://github.com/lyaschuchenko/VueTorrent/issues/561) ([0c6562e](https://github.com/lyaschuchenko/VueTorrent/commit/0c6562efb374a98b51749b7fba93a8be730c1169)) ([d362aef](https://github.com/lyaschuchenko/VueTorrent/commit/d362aef27574bb6a60c3675eef52655f1a57bebe))
* remove vue-context import ([edcd825](https://github.com/lyaschuchenko/VueTorrent/commit/edcd825969f6876b1962dc8875be4b9447704820)) - Invalid deconstruct on qbit service ([#623](https://github.com/lyaschuchenko/VueTorrent/issues/623))
* replace v-html with conditional rendering in torrent details view ([#513](https://github.com/lyaschuchenko/VueTorrent/issues/513)) ([6d873e7](https://github.com/lyaschuchenko/VueTorrent/commit/6d873e76fc63544673bda673ff377c0b9b810706)) ([5a2ed4e](https://github.com/lyaschuchenko/VueTorrent/commit/5a2ed4ea99a81f5566e3276acb8faae42adcc035))
* Russian language ([#494](https://github.com/lyaschuchenko/VueTorrent/issues/494)) ([72548fa](https://github.com/lyaschuchenko/VueTorrent/commit/72548fac4ad7e5002a83b80c0b9cdb6b2d82e075)) - invisble close button on modal [#314](https://github.com/lyaschuchenko/VueTorrent/issues/314) [#297](https://github.com/lyaschuchenko/VueTorrent/issues/297)
* save path on category [#481](https://github.com/lyaschuchenko/VueTorrent/issues/481) ([954560e](https://github.com/lyaschuchenko/VueTorrent/commit/954560ee9675ce40f7131482fec83f87e7ef4296)) ([8001dc9](https://github.com/lyaschuchenko/VueTorrent/commit/8001dc91c738e4b9bfa9dd8a6b6b52249e727f5a))
* scrollbar ([c460e29](https://github.com/lyaschuchenko/VueTorrent/commit/c460e29d95eb034266b3ae1006ebb57001f5aa83)) - issue where 'torrent details' modal does not work properly on iOS ([a83ea14](https://github.com/lyaschuchenko/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
* search results not loading until stopped ([#391](https://github.com/lyaschuchenko/VueTorrent/issues/391)) ([8b126d8](https://github.com/lyaschuchenko/VueTorrent/commit/8b126d8df5607f1c31174fec81f86091f4ad47cf)) - layout issues + remove vue-perfect-scrollbar + refactor context menu ([a83ea14](https://github.com/lyaschuchenko/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
* searchmodal pagination layout ([a9a9aff](https://github.com/lyaschuchenko/VueTorrent/commit/a9a9aff74f1310df724b0661011c97f798cdfaf6)) - load default folder [#417](https://github.com/lyaschuchenko/VueTorrent/issues/417)
* selection list not cleared when closing deletemodal without button press ([80573f4](https://github.com/lyaschuchenko/VueTorrent/commit/80573f436498def7edae86e161535ef378c538e7)) ([c63d0a4](https://github.com/lyaschuchenko/VueTorrent/commit/c63d0a403939c99a442a10563789cb8753d67771))
* Settings>VueTorrent>Dashboard layout & UX ([d93e540](https://github.com/lyaschuchenko/VueTorrent/commit/d93e540a71c72bb274da14f36ae5fd72404bc65d)) - load missing filters at startup ([#567](https://github.com/lyaschuchenko/VueTorrent/issues/567))
* show torrent comment [#292](https://github.com/lyaschuchenko/VueTorrent/issues/292) ([4c3c2d3](https://github.com/lyaschuchenko/VueTorrent/commit/4c3c2d36d713c5f5fda2393a4cfc14b68b09244f)) ([87de795](https://github.com/lyaschuchenko/VueTorrent/commit/87de79555b5aad8827fd5f15dbf53239cdea10c9))
* speed limit dialog incorrect text display and zh-hant fix ([#425](https://github.com/lyaschuchenko/VueTorrent/issues/425)) ([45b244f](https://github.com/lyaschuchenko/VueTorrent/commit/45b244fbcf1ed63ebb2757a821343ed384a832f4)) - login autocomplete render issue [#474](https://github.com/lyaschuchenko/VueTorrent/issues/474)
* speedcard value cutoff [#141](https://github.com/lyaschuchenko/VueTorrent/issues/141) ([a81b1ea](https://github.com/lyaschuchenko/VueTorrent/commit/a81b1ea2e878b7e890b1c01037b54abba514f969)) ([ef64c38](https://github.com/lyaschuchenko/VueTorrent/commit/ef64c38f099fca1be5db45741c60afc04fff3065))
* spelling mistake in README and "qBittorrent" casing ([#368](https://github.com/lyaschuchenko/VueTorrent/issues/368)) ([90d6623](https://github.com/lyaschuchenko/VueTorrent/commit/90d66237115f50828a38edec7b10caf817a55b66)) - login console error on refresh ([254d7c8](https://github.com/lyaschuchenko/VueTorrent/commit/254d7c8562e3fec5a16b4f65a4de0382ef7662c1))
* temporarily disable render link feat for security ([#512](https://github.com/lyaschuchenko/VueTorrent/issues/512)) ([13e6584](https://github.com/lyaschuchenko/VueTorrent/commit/13e6584c5d9a541d01e770d901c9a6266e7c9b24)) - login prompt being displayed when whitelisted ([#511](https://github.com/lyaschuchenko/VueTorrent/issues/511))
* toggle in right-click menu not updating ([91fcfee](https://github.com/lyaschuchenko/VueTorrent/commit/91fcfeeba6b65c63fdb996d14d0a14c4b6319530)) ([077cf54](https://github.com/lyaschuchenko/VueTorrent/commit/077cf54c6bb5ccc7e5ccf9b94731ec468bd17ecd))
* Torrent Detail modal with multiple tags shows only one tag selected [#167](https://github.com/lyaschuchenko/VueTorrent/issues/167) ([1973b5d](https://github.com/lyaschuchenko/VueTorrent/commit/1973b5dc520ed23682b7788a1ace3905d55c36d8)) - logout [#286](https://github.com/lyaschuchenko/VueTorrent/issues/286) ([9121230](https://github.com/lyaschuchenko/VueTorrent/commit/912123098e5fca6193ebb6f66ad06c8442d07861))
* torrent done color to similar to seeding [#162](https://github.com/lyaschuchenko/VueTorrent/issues/162) ([bd71906](https://github.com/lyaschuchenko/VueTorrent/commit/bd7190685fd598d08ced9af9923e7cd3cfe50c5a)) - low visibility text in dark theme ([#390](https://github.com/lyaschuchenko/VueTorrent/issues/390))
* torrent progress color [#410](https://github.com/lyaschuchenko/VueTorrent/issues/410) ([886bc13](https://github.com/lyaschuchenko/VueTorrent/commit/886bc13f10d82b8973d6ea63fa051ae873b8aea2)) ([84750af](https://github.com/lyaschuchenko/VueTorrent/commit/84750af3d4d584f5fc0fd8f3cbabd1b0ecfa2e9f))
* torrent search ([#478](https://github.com/lyaschuchenko/VueTorrent/issues/478)) @Anteus ([baba4ac](https://github.com/lyaschuchenko/VueTorrent/commit/baba4acda4adcc2414d0a0cab6e7b13446152050)) - magnet text area max size [#413](https://github.com/lyaschuchenko/VueTorrent/issues/413)
* torrent search on enter [#149](https://github.com/lyaschuchenko/VueTorrent/issues/149) ([51fbec1](https://github.com/lyaschuchenko/VueTorrent/commit/51fbec13240f57dccd0177ee8e435f6aba290540)) ([4dd81f7](https://github.com/lyaschuchenko/VueTorrent/commit/4dd81f7cd49ab807fddeb50ff2e871364fd955e5))
* tweak search treshold [#250](https://github.com/lyaschuchenko/VueTorrent/issues/250) ([bdbc87b](https://github.com/lyaschuchenko/VueTorrent/commit/bdbc87b72423891a04a9c8c7a5de69e1d4ccd755)) - margin when freespace card is disabled ([6be41e3](https://github.com/lyaschuchenko/VueTorrent/commit/6be41e33cfb0eb365df18e53c396cd4a36d4b8e5))
* type errors Russian ([#495](https://github.com/lyaschuchenko/VueTorrent/issues/495)) ([83c572b](https://github.com/lyaschuchenko/VueTorrent/commit/83c572b81df5ecd5e1afed0943fa841041ae2b1c)) - mention QBittorent [#356](https://github.com/lyaschuchenko/VueTorrent/issues/356)
* Unable to delete / create tags and categories ([#628](https://github.com/lyaschuchenko/VueTorrent/issues/628)) ([4fa63ac](https://github.com/lyaschuchenko/VueTorrent/commit/4fa63ac1625d9858f70bfe6e51f71abe6030bd6a)) ([bbc31fb](https://github.com/lyaschuchenko/VueTorrent/commit/bbc31fb8c5be1cc1189000e53f90ba7886e05ba8))
* Update Paramaters Sent to /torrents/renameFile ([#470](https://github.com/lyaschuchenko/VueTorrent/issues/470)) ([1ccdf08](https://github.com/lyaschuchenko/VueTorrent/commit/1ccdf08b606bfff9e9e016765c0d03ed0e2e7715)) - mobile search [#156](https://github.com/lyaschuchenko/VueTorrent/issues/156) - maybe redesign in future
* Update registerServiceWorker.js (delete all cache on when new version is released) ([d846c92](https://github.com/lyaschuchenko/VueTorrent/commit/d846c924937c99746cbf5a102b0de8ed27381a5d)) ([463dabd](https://github.com/lyaschuchenko/VueTorrent/commit/463dabde00a34c495d238aff4fd82ea65acc9e54))
* viewport ([60ecfc5](https://github.com/lyaschuchenko/VueTorrent/commit/60ecfc547b594e5ccbeede1d4d99ef0faa854c80)) - mobile search [#156](https://github.com/lyaschuchenko/VueTorrent/issues/156) - maybe redesign in future
* white scrollbar [#433](https://github.com/lyaschuchenko/VueTorrent/issues/433) ([db86506](https://github.com/lyaschuchenko/VueTorrent/commit/db86506c5e493e2bb69e441e56d86d78667df54b)) ([0f62f4d](https://github.com/lyaschuchenko/VueTorrent/commit/0f62f4df6763e4449b1ceab946092f9b67b06411))
* wrong tempPathEnabled state [#284](https://github.com/lyaschuchenko/VueTorrent/issues/284) ([d8e2610](https://github.com/lyaschuchenko/VueTorrent/commit/d8e26104196120fdbb3475b36f4976c3619ba464)) - no autocapitalize on login form [#489](https://github.com/lyaschuchenko/VueTorrent/issues/489)
([e352de0](https://github.com/lyaschuchenko/VueTorrent/commit/e352de0643dec66256f5565be6a686ee00f040e5))
- non-capital words ([#432](https://github.com/lyaschuchenko/VueTorrent/issues/432))
([ce1e7c3](https://github.com/lyaschuchenko/VueTorrent/commit/ce1e7c3546c150243fede941bd8b4b724e4a5c27))
- Persistent add modal ([d517d9f](https://github.com/lyaschuchenko/VueTorrent/commit/d517d9f3341e59de572118922b43a9e1adb8c9ad))
- proper unit for up/dl speed in details ([#547](https://github.com/lyaschuchenko/VueTorrent/issues/547))
([b2ceda2](https://github.com/lyaschuchenko/VueTorrent/commit/b2ceda28e548849f11f28503e27a081ad3818317))
- proper unit for up/dl speed in graph ([#548](https://github.com/lyaschuchenko/VueTorrent/issues/548))
([a6dac31](https://github.com/lyaschuchenko/VueTorrent/commit/a6dac31fbc5b902e3df562c97497daab121abee3))
- push precompiled release in a public folder ([adfc6a0](https://github.com/lyaschuchenko/VueTorrent/commit/adfc6a00f2e0b2e09f7f4e67a2efc3dc1db50194))
- PWA manifest [#405](https://github.com/lyaschuchenko/VueTorrent/issues/405)
([94727a1](https://github.com/lyaschuchenko/VueTorrent/commit/94727a142a1822c533c665d558ad4af6c207d5b9))
- Qbittorrent title on tab ([05bcc9e](https://github.com/lyaschuchenko/VueTorrent/commit/05bcc9e58783e4de49d698cfd25c902fad7776de))
- refresh torrent detail data from store ([#509](https://github.com/lyaschuchenko/VueTorrent/issues/509))
([5270619](https://github.com/lyaschuchenko/VueTorrent/commit/5270619a5d27eba380a33a8f12632c2c61611886))
- release build ([7a74275](https://github.com/lyaschuchenko/VueTorrent/commit/7a74275a4d15280205ec1e749415da1cb0cd7e41))
- remove black box on iOS PWA [#180](https://github.com/lyaschuchenko/VueTorrent/issues/180)
([f918ff5](https://github.com/lyaschuchenko/VueTorrent/commit/f918ff5ee5c0ddd1c288caa261bbd95e40de4d24))
- remove device darkmode because its unreliable [#285](https://github.com/lyaschuchenko/VueTorrent/issues/285)
([e6c0863](https://github.com/lyaschuchenko/VueTorrent/commit/e6c0863545c4a6a24ecc57158ff61421d17f9070))
- remove gesture feature on tabs (buggy anyway) ([0960962](https://github.com/lyaschuchenko/VueTorrent/commit/0960962441e424c28c8ad6014a79f733f495b881))
- remove search shortcut [#561](https://github.com/lyaschuchenko/VueTorrent/issues/561)
([0c6562e](https://github.com/lyaschuchenko/VueTorrent/commit/0c6562efb374a98b51749b7fba93a8be730c1169))
- remove vue-context import ([edcd825](https://github.com/lyaschuchenko/VueTorrent/commit/edcd825969f6876b1962dc8875be4b9447704820))
- replace v-html with conditional rendering in torrent details view ([#513](https://github.com/lyaschuchenko/VueTorrent/issues/513))
([6d873e7](https://github.com/lyaschuchenko/VueTorrent/commit/6d873e76fc63544673bda673ff377c0b9b810706))
- Russian language ([#494](https://github.com/lyaschuchenko/VueTorrent/issues/494))
([72548fa](https://github.com/lyaschuchenko/VueTorrent/commit/72548fac4ad7e5002a83b80c0b9cdb6b2d82e075))
- save path on category [#481](https://github.com/lyaschuchenko/VueTorrent/issues/481)
([954560e](https://github.com/lyaschuchenko/VueTorrent/commit/954560ee9675ce40f7131482fec83f87e7ef4296))
- scrollbar ([c460e29](https://github.com/lyaschuchenko/VueTorrent/commit/c460e29d95eb034266b3ae1006ebb57001f5aa83))
- search results not loading until stopped ([#391](https://github.com/lyaschuchenko/VueTorrent/issues/391))
([8b126d8](https://github.com/lyaschuchenko/VueTorrent/commit/8b126d8df5607f1c31174fec81f86091f4ad47cf))
- searchmodal pagination layout ([a9a9aff](https://github.com/lyaschuchenko/VueTorrent/commit/a9a9aff74f1310df724b0661011c97f798cdfaf6))
- selection list not cleared when closing deletemodal without button press ([80573f4](https://github.com/lyaschuchenko/VueTorrent/commit/80573f436498def7edae86e161535ef378c538e7))
- Settings>VueTorrent>Dashboard layout & UX ([d93e540](https://github.com/lyaschuchenko/VueTorrent/commit/d93e540a71c72bb274da14f36ae5fd72404bc65d))
- show torrent comment [#292](https://github.com/lyaschuchenko/VueTorrent/issues/292)
([4c3c2d3](https://github.com/lyaschuchenko/VueTorrent/commit/4c3c2d36d713c5f5fda2393a4cfc14b68b09244f))
- speed limit dialog incorrect text display and zh-hant fix ([#425](https://github.com/lyaschuchenko/VueTorrent/issues/425))
([45b244f](https://github.com/lyaschuchenko/VueTorrent/commit/45b244fbcf1ed63ebb2757a821343ed384a832f4))
- speedcard value cutoff [#141](https://github.com/lyaschuchenko/VueTorrent/issues/141)
([a81b1ea](https://github.com/lyaschuchenko/VueTorrent/commit/a81b1ea2e878b7e890b1c01037b54abba514f969))
- spelling mistake in README and "qBittorrent" casing ([#368](https://github.com/lyaschuchenko/VueTorrent/issues/368))
([90d6623](https://github.com/lyaschuchenko/VueTorrent/commit/90d66237115f50828a38edec7b10caf817a55b66))
- temporarily disable render link feat for security ([#512](https://github.com/lyaschuchenko/VueTorrent/issues/512))
([13e6584](https://github.com/lyaschuchenko/VueTorrent/commit/13e6584c5d9a541d01e770d901c9a6266e7c9b24))
- toggle in right-click menu not updating ([91fcfee](https://github.com/lyaschuchenko/VueTorrent/commit/91fcfeeba6b65c63fdb996d14d0a14c4b6319530))
- Torrent Detail modal with multiple tags shows only one tag selected [#167](https://github.com/lyaschuchenko/VueTorrent/issues/167)
([1973b5d](https://github.com/lyaschuchenko/VueTorrent/commit/1973b5dc520ed23682b7788a1ace3905d55c36d8))
- torrent done color to similar to seeding [#162](https://github.com/lyaschuchenko/VueTorrent/issues/162)
([bd71906](https://github.com/lyaschuchenko/VueTorrent/commit/bd7190685fd598d08ced9af9923e7cd3cfe50c5a))
- torrent progress color [#410](https://github.com/lyaschuchenko/VueTorrent/issues/410)
([886bc13](https://github.com/lyaschuchenko/VueTorrent/commit/886bc13f10d82b8973d6ea63fa051ae873b8aea2))
- torrent search ([#478](https://github.com/lyaschuchenko/VueTorrent/issues/478)) @Anteus
([baba4ac](https://github.com/lyaschuchenko/VueTorrent/commit/baba4acda4adcc2414d0a0cab6e7b13446152050))
- torrent search on enter [#149](https://github.com/lyaschuchenko/VueTorrent/issues/149)
([51fbec1](https://github.com/lyaschuchenko/VueTorrent/commit/51fbec13240f57dccd0177ee8e435f6aba290540))
- tweak search treshold [#250](https://github.com/lyaschuchenko/VueTorrent/issues/250)
([bdbc87b](https://github.com/lyaschuchenko/VueTorrent/commit/bdbc87b72423891a04a9c8c7a5de69e1d4ccd755))
- type errors Russian ([#495](https://github.com/lyaschuchenko/VueTorrent/issues/495))
([83c572b](https://github.com/lyaschuchenko/VueTorrent/commit/83c572b81df5ecd5e1afed0943fa841041ae2b1c))
- Unable to delete / create tags and categories ([#628](https://github.com/lyaschuchenko/VueTorrent/issues/628))
([4fa63ac](https://github.com/lyaschuchenko/VueTorrent/commit/4fa63ac1625d9858f70bfe6e51f71abe6030bd6a))
- Update Paramaters Sent to /torrents/renameFile ([#470](https://github.com/lyaschuchenko/VueTorrent/issues/470))
([1ccdf08](https://github.com/lyaschuchenko/VueTorrent/commit/1ccdf08b606bfff9e9e016765c0d03ed0e2e7715))
- Update registerServiceWorker.js (delete all cache on when new version is released)
([d846c92](https://github.com/lyaschuchenko/VueTorrent/commit/d846c924937c99746cbf5a102b0de8ed27381a5d))
- viewport ([60ecfc5](https://github.com/lyaschuchenko/VueTorrent/commit/60ecfc547b594e5ccbeede1d4d99ef0faa854c80))
- white scrollbar [#433](https://github.com/lyaschuchenko/VueTorrent/issues/433)
([db86506](https://github.com/lyaschuchenko/VueTorrent/commit/db86506c5e493e2bb69e441e56d86d78667df54b))
- wrong tempPathEnabled state [#284](https://github.com/lyaschuchenko/VueTorrent/issues/284)
([d8e2610](https://github.com/lyaschuchenko/VueTorrent/commit/d8e26104196120fdbb3475b36f4976c3619ba464))
### Improvements ### Improvements
* 'Vue2-perfect-scrollbar' is no longer dependent ([a83ea14](https://github.com/lyaschuchenko/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca)) - 'Vue2-perfect-scrollbar' is no longer dependent ([a83ea14](https://github.com/lyaschuchenko/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
* Add "Completed On" to dashboard customization settings ([#578](https://github.com/lyaschuchenko/VueTorrent/issues/578)) ([02db288](https://github.com/lyaschuchenko/VueTorrent/commit/02db288db287a3d423a4c14e946cfb6a44cc2ed9)) - Add "Completed On" to dashboard customization settings ([#578](https://github.com/lyaschuchenko/VueTorrent/issues/578))
* add all-time stats [#351](https://github.com/lyaschuchenko/VueTorrent/issues/351) ([a268e77](https://github.com/lyaschuchenko/VueTorrent/commit/a268e774def5875354129c06122898bad018d5ed)) ([02db288](https://github.com/lyaschuchenko/VueTorrent/commit/02db288db287a3d423a4c14e946cfb6a44cc2ed9))
* Add Enter / Escape keybinds to modals and views ([#608](https://github.com/lyaschuchenko/VueTorrent/issues/608)) @Larsluph ([ee9bbc1](https://github.com/lyaschuchenko/VueTorrent/commit/ee9bbc1245448768570547f37e3115ff7390b836)) - add all-time stats [#351](https://github.com/lyaschuchenko/VueTorrent/issues/351)
* Add export torrent to trc menu ([#625](https://github.com/lyaschuchenko/VueTorrent/issues/625)) @Larsluph ([353e26d](https://github.com/lyaschuchenko/VueTorrent/commit/353e26d51df1d44df16b7ea297f2b89144942977)) ([a268e77](https://github.com/lyaschuchenko/VueTorrent/commit/a268e774def5875354129c06122898bad018d5ed))
* add French translations ([#337](https://github.com/lyaschuchenko/VueTorrent/issues/337)) ([30d5dc0](https://github.com/lyaschuchenko/VueTorrent/commit/30d5dc01c4349e0f52c5c58ec8f602ded16e706d)) - Add Enter / Escape keybinds to modals and views ([#608](https://github.com/lyaschuchenko/VueTorrent/issues/608)) @Larsluph
* add Indonesian ([#361](https://github.com/lyaschuchenko/VueTorrent/issues/361)) ([908af5b](https://github.com/lyaschuchenko/VueTorrent/commit/908af5b3faaa07a327665df51f296a977ddef9e6)) ([ee9bbc1](https://github.com/lyaschuchenko/VueTorrent/commit/ee9bbc1245448768570547f37e3115ff7390b836))
* add Japanese language support ([#401](https://github.com/lyaschuchenko/VueTorrent/issues/401)) ([a178205](https://github.com/lyaschuchenko/VueTorrent/commit/a1782058c8417e6a8c06acd22ce56418b4fe9419)) - Add export torrent to trc menu ([#625](https://github.com/lyaschuchenko/VueTorrent/issues/625)) @Larsluph
* add mark as read behavior for rss articles ([#640](https://github.com/lyaschuchenko/VueTorrent/issues/640)) @Larsluph ([3cfc82f](https://github.com/lyaschuchenko/VueTorrent/commit/3cfc82f055bcc2a917e64e49c27137401d0a0810)) ([353e26d](https://github.com/lyaschuchenko/VueTorrent/commit/353e26d51df1d44df16b7ea297f2b89144942977))
* add Portugese ([#350](https://github.com/lyaschuchenko/VueTorrent/issues/350)) ([abb4c5b](https://github.com/lyaschuchenko/VueTorrent/commit/abb4c5ba69a779b729d99bb404fd59d25afb8b72)) - add French translations ([#337](https://github.com/lyaschuchenko/VueTorrent/issues/337))
* add reset settings button [#326](https://github.com/lyaschuchenko/VueTorrent/issues/326) ([0ada50b](https://github.com/lyaschuchenko/VueTorrent/commit/0ada50ba4ab49cf2edc74ac410ae982d162dc7ae)) ([30d5dc0](https://github.com/lyaschuchenko/VueTorrent/commit/30d5dc01c4349e0f52c5c58ec8f602ded16e706d))
* Add RSS articles view ([#622](https://github.com/lyaschuchenko/VueTorrent/issues/622)) @Larsluph ([f8fcafa](https://github.com/lyaschuchenko/VueTorrent/commit/f8fcafa1b114da877430daa258087fed6382258b)) - add Indonesian ([#361](https://github.com/lyaschuchenko/VueTorrent/issues/361))
* add Russian translations ([#493](https://github.com/lyaschuchenko/VueTorrent/issues/493)) [@reysonk](https://github.com/reysonk) ([9b6deb9](https://github.com/lyaschuchenko/VueTorrent/commit/9b6deb90371ac4e56ac2691002bda578e25758ea)) ([908af5b](https://github.com/lyaschuchenko/VueTorrent/commit/908af5b3faaa07a327665df51f296a977ddef9e6))
* Add scroll support in TorrentRightClickMenu ([#589](https://github.com/lyaschuchenko/VueTorrent/issues/589)) @Larsluph ([cd2f764](https://github.com/lyaschuchenko/VueTorrent/commit/cd2f7647e6178805c7f276aeee1c2e35087a532a)) - add Japanese language support ([#401](https://github.com/lyaschuchenko/VueTorrent/issues/401))
* add sort none option [#128](https://github.com/lyaschuchenko/VueTorrent/issues/128) ([bf406e5](https://github.com/lyaschuchenko/VueTorrent/commit/bf406e5cfdda039f09add706c121db049328e65e)) ([a178205](https://github.com/lyaschuchenko/VueTorrent/commit/a1782058c8417e6a8c06acd22ce56418b4fe9419))
* add Spanish Language ([#385](https://github.com/lyaschuchenko/VueTorrent/issues/385)) ([d0f7055](https://github.com/lyaschuchenko/VueTorrent/commit/d0f7055148b6e88bb00c1c8cd58ec1fa123488e9)) - add mark as read behavior for rss articles ([#640](https://github.com/lyaschuchenko/VueTorrent/issues/640)) @Larsluph
* Add toast when renameFile and renameFolder returns 409 Conflict ([#588](https://github.com/lyaschuchenko/VueTorrent/issues/588)) @Larsluph ([e01d9a0](https://github.com/lyaschuchenko/VueTorrent/commit/e01d9a0b42886646a09cc3439e97efb16a5316ca)) ([3cfc82f](https://github.com/lyaschuchenko/VueTorrent/commit/3cfc82f055bcc2a917e64e49c27137401d0a0810))
* Add toasts for copy/paste success/error ([#620](https://github.com/lyaschuchenko/VueTorrent/issues/620)) ([6cabef1](https://github.com/lyaschuchenko/VueTorrent/commit/6cabef1b56598f3fb896f37c619dc4a8effa6858)) - add Portugese ([#350](https://github.com/lyaschuchenko/VueTorrent/issues/350))
* add ukranian ([e063168](https://github.com/lyaschuchenko/VueTorrent/commit/e06316812134df15ac1f5fbb73034436eb7d519c)) ([abb4c5b](https://github.com/lyaschuchenko/VueTorrent/commit/abb4c5ba69a779b729d99bb404fd59d25afb8b72))
* add Vietnamese ([#392](https://github.com/lyaschuchenko/VueTorrent/issues/392)) ([6019759](https://github.com/lyaschuchenko/VueTorrent/commit/6019759260d6561af29dbeb1a95497028b2b8b87)) - add reset settings button [#326](https://github.com/lyaschuchenko/VueTorrent/issues/326)
* better authenticated check ([#411](https://github.com/lyaschuchenko/VueTorrent/issues/411)) ([ce698e3](https://github.com/lyaschuchenko/VueTorrent/commit/ce698e38a80fb7ba1dee01251451865df75f68d4)) ([0ada50b](https://github.com/lyaschuchenko/VueTorrent/commit/0ada50ba4ab49cf2edc74ac410ae982d162dc7ae))
* better share limit modal ([#316](https://github.com/lyaschuchenko/VueTorrent/issues/316)) ([9f2ca42](https://github.com/lyaschuchenko/VueTorrent/commit/9f2ca4230da46431965d6ed0777f465554926494)) - Add RSS articles view ([#622](https://github.com/lyaschuchenko/VueTorrent/issues/622)) @Larsluph
* Chinese translations ([#363](https://github.com/lyaschuchenko/VueTorrent/issues/363)) ([6c7372b](https://github.com/lyaschuchenko/VueTorrent/commit/6c7372b41ef72387c7781e0dcfd51fb046fb7881)) ([f8fcafa](https://github.com/lyaschuchenko/VueTorrent/commit/f8fcafa1b114da877430daa258087fed6382258b))
* complete French translation ([#438](https://github.com/lyaschuchenko/VueTorrent/issues/438)) ([3a8ec90](https://github.com/lyaschuchenko/VueTorrent/commit/3a8ec90ca20dd20bf22d4af468031d347de7f686)) - add Russian translations ([#493](https://github.com/lyaschuchenko/VueTorrent/issues/493)) [@reysonk](https://github.com/reysonk)
* Content tab for mobile users ([#602](https://github.com/lyaschuchenko/VueTorrent/issues/602)) @Larsluph ([fc371a2](https://github.com/lyaschuchenko/VueTorrent/commit/fc371a296cd8c2287b3fb45597f2d924d30c3847)) ([9b6deb9](https://github.com/lyaschuchenko/VueTorrent/commit/9b6deb90371ac4e56ac2691002bda578e25758ea))
* Context (right click) menu refactor! Works way better on mobile ([a83ea14](https://github.com/lyaschuchenko/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca)) - Add scroll support in TorrentRightClickMenu ([#589](https://github.com/lyaschuchenko/VueTorrent/issues/589)) @Larsluph
* Convert locale data to json ([#616](https://github.com/lyaschuchenko/VueTorrent/issues/616)) @Larsluph ([e990d34](https://github.com/lyaschuchenko/VueTorrent/commit/e990d344d2b6d779c66af294bb168da78788200c)) ([cd2f764](https://github.com/lyaschuchenko/VueTorrent/commit/cd2f7647e6178805c7f276aeee1c2e35087a532a))
* debounce torrent search field ([#542](https://github.com/lyaschuchenko/VueTorrent/issues/542)) ([bb76c23](https://github.com/lyaschuchenko/VueTorrent/commit/bb76c23b98689c956ab1c068a155e9fb081081ea)) - add sort none option [#128](https://github.com/lyaschuchenko/VueTorrent/issues/128)
* Disable hide condition on page scroll ([#603](https://github.com/lyaschuchenko/VueTorrent/issues/603)) @Larsluph ([f175a6a](https://github.com/lyaschuchenko/VueTorrent/commit/f175a6af6521988c84357c761cddb1116e6f83e1)) ([bf406e5](https://github.com/lyaschuchenko/VueTorrent/commit/bf406e5cfdda039f09add706c121db049328e65e))
* extra add button for mobile [#466](https://github.com/lyaschuchenko/VueTorrent/issues/466) ([e2dcb8e](https://github.com/lyaschuchenko/VueTorrent/commit/e2dcb8e6f08e9f75f00276c0529af97a873d7e5b)) - add Spanish Language ([#385](https://github.com/lyaschuchenko/VueTorrent/issues/385))
* Fill data table width to whole page ([#626](https://github.com/lyaschuchenko/VueTorrent/issues/626)) ([d2c0817](https://github.com/lyaschuchenko/VueTorrent/commit/d2c0817bee904ac5a4dcda5079307b705f1ac7e7)) ([d0f7055](https://github.com/lyaschuchenko/VueTorrent/commit/d0f7055148b6e88bb00c1c8cd58ec1fa123488e9))
* full Typescript migration + restructure ([#612](https://github.com/lyaschuchenko/VueTorrent/issues/612)) @Larsluph ([e09e8a0](https://github.com/lyaschuchenko/VueTorrent/commit/e09e8a0300551b813432dfba5d867be3f6709694)) - Add toast when renameFile and renameFolder returns 409 Conflict ([#588](https://github.com/lyaschuchenko/VueTorrent/issues/588)) @Larsluph
* improve russian translations ([#593](https://github.com/lyaschuchenko/VueTorrent/issues/593)) @Balya ([684690a](https://github.com/lyaschuchenko/VueTorrent/commit/684690ac7b7a443212e6aadc08aedfca91fc1dc4)) ([e01d9a0](https://github.com/lyaschuchenko/VueTorrent/commit/e01d9a0b42886646a09cc3439e97efb16a5316ca))
* Improved Ukrainian translation ([#457](https://github.com/lyaschuchenko/VueTorrent/issues/457)) ([b56a16f](https://github.com/lyaschuchenko/VueTorrent/commit/b56a16f7cebaf3b434f85c621b73e2d3e3385ba8)) - Add toasts for copy/paste success/error ([#620](https://github.com/lyaschuchenko/VueTorrent/issues/620))
* lazy load pages for smaller chunk sizes ([abe909e](https://github.com/lyaschuchenko/VueTorrent/commit/abe909e14d740f4a78267564d87e2d46ef3c08a8)) ([6cabef1](https://github.com/lyaschuchenko/VueTorrent/commit/6cabef1b56598f3fb896f37c619dc4a8effa6858))
* more chinese translations ([65943ae](https://github.com/lyaschuchenko/VueTorrent/commit/65943aea02b1a349719a704492f2905b1f8f2f81)) - add ukranian ([e063168](https://github.com/lyaschuchenko/VueTorrent/commit/e06316812134df15ac1f5fbb73034436eb7d519c))
* more translations ([4f8c697](https://github.com/lyaschuchenko/VueTorrent/commit/4f8c697757d818eeaf70d1c6970cd1f6000d6497)) - add Vietnamese ([#392](https://github.com/lyaschuchenko/VueTorrent/issues/392))
* move notification banner to botton [#389](https://github.com/lyaschuchenko/VueTorrent/issues/389) ([4b90d56](https://github.com/lyaschuchenko/VueTorrent/commit/4b90d56df5a43bf466acafd3c7bb43a960bffab8)) ([6019759](https://github.com/lyaschuchenko/VueTorrent/commit/6019759260d6561af29dbeb1a95497028b2b8b87))
* only update changed data + code cleanup ([664e4db](https://github.com/lyaschuchenko/VueTorrent/commit/664e4dbe2ff9bf04a2ef766fe2726d5f994b1228)) - better authenticated check ([#411](https://github.com/lyaschuchenko/VueTorrent/issues/411))
* paste button for magnet links [#307](https://github.com/lyaschuchenko/VueTorrent/issues/307) ([797ba8c](https://github.com/lyaschuchenko/VueTorrent/commit/797ba8c66687c3cfb654874189fc96808d4bbb34)) ([ce698e3](https://github.com/lyaschuchenko/VueTorrent/commit/ce698e38a80fb7ba1dee01251451865df75f68d4))
* persist searchfilter + page [#462](https://github.com/lyaschuchenko/VueTorrent/issues/462) ([67b1551](https://github.com/lyaschuchenko/VueTorrent/commit/67b1551b36c94849d46c0a0dd5dadfda181df589)) - better share limit modal ([#316](https://github.com/lyaschuchenko/VueTorrent/issues/316))
* Remove redundant dialog code, use Modal Mixin ([33cf62f](https://github.com/lyaschuchenko/VueTorrent/commit/33cf62ff9b6ea671dc1022e345a65705bd814640)) ([9f2ca42](https://github.com/lyaschuchenko/VueTorrent/commit/9f2ca4230da46431965d6ed0777f465554926494))
* reset pageNumber when changing filters to prevent value overflow ([#591](https://github.com/lyaschuchenko/VueTorrent/issues/591)) @Larsluph ([719c5e9](https://github.com/lyaschuchenko/VueTorrent/commit/719c5e9ebafff56cfe077b8836d55823ae78b947)) - Chinese translations ([#363](https://github.com/lyaschuchenko/VueTorrent/issues/363))
* Rework desktop cards ([#627](https://github.com/lyaschuchenko/VueTorrent/issues/627)) @Larsluph ([5aeb653](https://github.com/lyaschuchenko/VueTorrent/commit/5aeb65352fc9335112b7747641420579fcd55c47)) ([6c7372b](https://github.com/lyaschuchenko/VueTorrent/commit/6c7372b41ef72387c7781e0dcfd51fb046fb7881))
* softer red color [#155](https://github.com/lyaschuchenko/VueTorrent/issues/155) ([cbf845a](https://github.com/lyaschuchenko/VueTorrent/commit/cbf845a8a407895e8d6093c584ea96497c45cac0)) - complete French translation ([#438](https://github.com/lyaschuchenko/VueTorrent/issues/438))
* sort dropdown in dashboard [#309](https://github.com/lyaschuchenko/VueTorrent/issues/309) ([b557db4](https://github.com/lyaschuchenko/VueTorrent/commit/b557db48e8ef33fb68fa802e35d9b77921c5a52d)) ([3a8ec90](https://github.com/lyaschuchenko/VueTorrent/commit/3a8ec90ca20dd20bf22d4af468031d347de7f686))
* support more translations + add Simplified Chinese translations ([#415](https://github.com/lyaschuchenko/VueTorrent/issues/415)) ([ddd28ae](https://github.com/lyaschuchenko/VueTorrent/commit/ddd28ae6192862928ef26c1e1135565f6303095b)) - Content tab for mobile users ([#602](https://github.com/lyaschuchenko/VueTorrent/issues/602)) @Larsluph
* topmenu tooltip delay [#399](https://github.com/lyaschuchenko/VueTorrent/issues/399) ([2d5ad9d](https://github.com/lyaschuchenko/VueTorrent/commit/2d5ad9d44227f2ffd3e180eff9740e82ba0281cb)) ([fc371a2](https://github.com/lyaschuchenko/VueTorrent/commit/fc371a296cd8c2287b3fb45597f2d924d30c3847))
* translation fixes ([#419](https://github.com/lyaschuchenko/VueTorrent/issues/419)) ([521ac58](https://github.com/lyaschuchenko/VueTorrent/commit/521ac5804a622c68d788de1f5730b0c43f49f0a1)) - Context (right click) menu refactor! Works way better on mobile ([a83ea14](https://github.com/lyaschuchenko/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
* Update and realign locales ([#573](https://github.com/lyaschuchenko/VueTorrent/issues/573)) ([c45bf20](https://github.com/lyaschuchenko/VueTorrent/commit/c45bf208dedc72db108ee1b3115d338a0349f19e)) - Convert locale data to json ([#616](https://github.com/lyaschuchenko/VueTorrent/issues/616)) @Larsluph
* Update Simplified Chinese translation. ([#454](https://github.com/lyaschuchenko/VueTorrent/issues/454)) ([20f4a67](https://github.com/lyaschuchenko/VueTorrent/commit/20f4a67f4988629d1bc74ec18226cd858e2469e1)) ([e990d34](https://github.com/lyaschuchenko/VueTorrent/commit/e990d344d2b6d779c66af294bb168da78788200c))
* update Traditional Chinese translations ([#422](https://github.com/lyaschuchenko/VueTorrent/issues/422)) ([964b145](https://github.com/lyaschuchenko/VueTorrent/commit/964b1451a1758522856fae2c730af9db66e351a1)) - debounce torrent search field ([#542](https://github.com/lyaschuchenko/VueTorrent/issues/542))
* updated japanese translate file ([#491](https://github.com/lyaschuchenko/VueTorrent/issues/491)) ([7e5cc48](https://github.com/lyaschuchenko/VueTorrent/commit/7e5cc4891a61d441429c155ec759d5a668c3498f)) ([bb76c23](https://github.com/lyaschuchenko/VueTorrent/commit/bb76c23b98689c956ab1c068a155e9fb081081ea))
* use pages instead of modals [#398](https://github.com/lyaschuchenko/VueTorrent/issues/398) ([#450](https://github.com/lyaschuchenko/VueTorrent/issues/450)) ([fcb0219](https://github.com/lyaschuchenko/VueTorrent/commit/fcb021972ae62ee36e91bbbf5cba0ee6dc87725a)) - Disable hide condition on page scroll ([#603](https://github.com/lyaschuchenko/VueTorrent/issues/603)) @Larsluph
* use quick-score instead of fuse.js [#306](https://github.com/lyaschuchenko/VueTorrent/issues/306) ([f9434c3](https://github.com/lyaschuchenko/VueTorrent/commit/f9434c375663689f605e57e7749bd010fc87ad7a)) ([f175a6a](https://github.com/lyaschuchenko/VueTorrent/commit/f175a6af6521988c84357c761cddb1116e6f83e1))
- extra add button for mobile [#466](https://github.com/lyaschuchenko/VueTorrent/issues/466)
([e2dcb8e](https://github.com/lyaschuchenko/VueTorrent/commit/e2dcb8e6f08e9f75f00276c0529af97a873d7e5b))
- Fill data table width to whole page ([#626](https://github.com/lyaschuchenko/VueTorrent/issues/626))
([d2c0817](https://github.com/lyaschuchenko/VueTorrent/commit/d2c0817bee904ac5a4dcda5079307b705f1ac7e7))
- full Typescript migration + restructure ([#612](https://github.com/lyaschuchenko/VueTorrent/issues/612)) @Larsluph
([e09e8a0](https://github.com/lyaschuchenko/VueTorrent/commit/e09e8a0300551b813432dfba5d867be3f6709694))
- improve russian translations ([#593](https://github.com/lyaschuchenko/VueTorrent/issues/593)) @Balya
([684690a](https://github.com/lyaschuchenko/VueTorrent/commit/684690ac7b7a443212e6aadc08aedfca91fc1dc4))
- Improved Ukrainian translation ([#457](https://github.com/lyaschuchenko/VueTorrent/issues/457))
([b56a16f](https://github.com/lyaschuchenko/VueTorrent/commit/b56a16f7cebaf3b434f85c621b73e2d3e3385ba8))
- lazy load pages for smaller chunk sizes ([abe909e](https://github.com/lyaschuchenko/VueTorrent/commit/abe909e14d740f4a78267564d87e2d46ef3c08a8))
- more chinese translations ([65943ae](https://github.com/lyaschuchenko/VueTorrent/commit/65943aea02b1a349719a704492f2905b1f8f2f81))
- more translations ([4f8c697](https://github.com/lyaschuchenko/VueTorrent/commit/4f8c697757d818eeaf70d1c6970cd1f6000d6497))
- move notification banner to botton [#389](https://github.com/lyaschuchenko/VueTorrent/issues/389)
([4b90d56](https://github.com/lyaschuchenko/VueTorrent/commit/4b90d56df5a43bf466acafd3c7bb43a960bffab8))
- only update changed data + code cleanup ([664e4db](https://github.com/lyaschuchenko/VueTorrent/commit/664e4dbe2ff9bf04a2ef766fe2726d5f994b1228))
- paste button for magnet links [#307](https://github.com/lyaschuchenko/VueTorrent/issues/307)
([797ba8c](https://github.com/lyaschuchenko/VueTorrent/commit/797ba8c66687c3cfb654874189fc96808d4bbb34))
- persist searchfilter + page [#462](https://github.com/lyaschuchenko/VueTorrent/issues/462)
([67b1551](https://github.com/lyaschuchenko/VueTorrent/commit/67b1551b36c94849d46c0a0dd5dadfda181df589))
- Remove redundant dialog code, use Modal Mixin ([33cf62f](https://github.com/lyaschuchenko/VueTorrent/commit/33cf62ff9b6ea671dc1022e345a65705bd814640))
- reset pageNumber when changing filters to prevent value overflow ([#591](https://github.com/lyaschuchenko/VueTorrent/issues/591)) @Larsluph
([719c5e9](https://github.com/lyaschuchenko/VueTorrent/commit/719c5e9ebafff56cfe077b8836d55823ae78b947))
- Rework desktop cards ([#627](https://github.com/lyaschuchenko/VueTorrent/issues/627)) @Larsluph
([5aeb653](https://github.com/lyaschuchenko/VueTorrent/commit/5aeb65352fc9335112b7747641420579fcd55c47))
- softer red color [#155](https://github.com/lyaschuchenko/VueTorrent/issues/155)
([cbf845a](https://github.com/lyaschuchenko/VueTorrent/commit/cbf845a8a407895e8d6093c584ea96497c45cac0))
- sort dropdown in dashboard [#309](https://github.com/lyaschuchenko/VueTorrent/issues/309)
([b557db4](https://github.com/lyaschuchenko/VueTorrent/commit/b557db48e8ef33fb68fa802e35d9b77921c5a52d))
- support more translations + add Simplified Chinese translations ([#415](https://github.com/lyaschuchenko/VueTorrent/issues/415))
([ddd28ae](https://github.com/lyaschuchenko/VueTorrent/commit/ddd28ae6192862928ef26c1e1135565f6303095b))
- topmenu tooltip delay [#399](https://github.com/lyaschuchenko/VueTorrent/issues/399)
([2d5ad9d](https://github.com/lyaschuchenko/VueTorrent/commit/2d5ad9d44227f2ffd3e180eff9740e82ba0281cb))
- translation fixes ([#419](https://github.com/lyaschuchenko/VueTorrent/issues/419))
([521ac58](https://github.com/lyaschuchenko/VueTorrent/commit/521ac5804a622c68d788de1f5730b0c43f49f0a1))
- Update and realign locales ([#573](https://github.com/lyaschuchenko/VueTorrent/issues/573))
([c45bf20](https://github.com/lyaschuchenko/VueTorrent/commit/c45bf208dedc72db108ee1b3115d338a0349f19e))
- Update Simplified Chinese translation. ([#454](https://github.com/lyaschuchenko/VueTorrent/issues/454))
([20f4a67](https://github.com/lyaschuchenko/VueTorrent/commit/20f4a67f4988629d1bc74ec18226cd858e2469e1))
- update Traditional Chinese translations ([#422](https://github.com/lyaschuchenko/VueTorrent/issues/422))
([964b145](https://github.com/lyaschuchenko/VueTorrent/commit/964b1451a1758522856fae2c730af9db66e351a1))
- updated japanese translate file ([#491](https://github.com/lyaschuchenko/VueTorrent/issues/491))
([7e5cc48](https://github.com/lyaschuchenko/VueTorrent/commit/7e5cc4891a61d441429c155ec759d5a668c3498f))
- use pages instead of modals [#398](https://github.com/lyaschuchenko/VueTorrent/issues/398) ([#450](https://github.com/lyaschuchenko/VueTorrent/issues/450))
([fcb0219](https://github.com/lyaschuchenko/VueTorrent/commit/fcb021972ae62ee36e91bbbf5cba0ee6dc87725a))
- use quick-score instead of fuse.js [#306](https://github.com/lyaschuchenko/VueTorrent/issues/306)
([f9434c3](https://github.com/lyaschuchenko/VueTorrent/commit/f9434c375663689f605e57e7749bd010fc87ad7a))
### [1.3.1](https://github.com/WDaan/VueTorrent/compare/v1.3.0...v1.3.1) (2023-02-08) ### [1.3.1](https://github.com/WDaan/VueTorrent/compare/v1.3.0...v1.3.1) (2023-02-08)
### Bug Fixes ### Bug Fixes
* change rss-unread color from white to #ccc ([#643](https://github.com/WDaan/VueTorrent/issues/643)) [@hqwuzhaoyi](https://github.com/hqwuzhaoyi) ([dd02cdb](https://github.com/WDaan/VueTorrent/commit/dd02cdb564803495af0ea60a61c65562b3fe8ea5)) - change rss-unread color from white to #ccc ([#643](https://github.com/WDaan/VueTorrent/issues/643)) [@hqwuzhaoyi](https://github.com/hqwuzhaoyi)
* chart flickering ([#644](https://github.com/WDaan/VueTorrent/issues/644)) @Hans1208 ([5e3d6b7](https://github.com/WDaan/VueTorrent/commit/5e3d6b778892fc6b157ba533f288e77ceed091c7)) ([dd02cdb](https://github.com/WDaan/VueTorrent/commit/dd02cdb564803495af0ea60a61c65562b3fe8ea5))
- chart flickering ([#644](https://github.com/WDaan/VueTorrent/issues/644)) @Hans1208
([5e3d6b7](https://github.com/WDaan/VueTorrent/commit/5e3d6b778892fc6b157ba533f288e77ceed091c7))
## [1.3.0](https://github.com/WDaan/VueTorrent/compare/v1.2.0...v1.3.0) (2023-02-07) ## [1.3.0](https://github.com/WDaan/VueTorrent/compare/v1.2.0...v1.3.0) (2023-02-07)
### Features ### Features
* Add shutdown button in TopActions ([#633](https://github.com/WDaan/VueTorrent/issues/633)) @Larsluph ([ab75f32](https://github.com/WDaan/VueTorrent/commit/ab75f32c5f6225fb9b2615f2880b2ef40037820a)) - Add shutdown button in TopActions ([#633](https://github.com/WDaan/VueTorrent/issues/633)) @Larsluph
([ab75f32](https://github.com/WDaan/VueTorrent/commit/ab75f32c5f6225fb9b2615f2880b2ef40037820a))
### Bug Fixes ### Bug Fixes
* Duplicate reference in dashboard settings ([#618](https://github.com/WDaan/VueTorrent/issues/618)) @Larsluph ([ea7e68c](https://github.com/WDaan/VueTorrent/commit/ea7e68ca2a48b19292d9b9b5388bcba8664d04bb)) - Duplicate reference in dashboard settings ([#618](https://github.com/WDaan/VueTorrent/issues/618)) @Larsluph
* Forced state not present in MobileCard ([#632](https://github.com/WDaan/VueTorrent/issues/632)) @Larsluph ([7114ce1](https://github.com/WDaan/VueTorrent/commit/7114ce12df6bf7a0992406245277093c52d16002)) ([ea7e68c](https://github.com/WDaan/VueTorrent/commit/ea7e68ca2a48b19292d9b9b5388bcba8664d04bb))
* Invalid deconstruct on qbit service ([#623](https://github.com/WDaan/VueTorrent/issues/623)) ([5a2ed4e](https://github.com/WDaan/VueTorrent/commit/5a2ed4ea99a81f5566e3276acb8faae42adcc035)) - Forced state not present in MobileCard ([#632](https://github.com/WDaan/VueTorrent/issues/632)) @Larsluph
* Unable to delete / create tags and categories ([#628](https://github.com/WDaan/VueTorrent/issues/628)) ([4fa63ac](https://github.com/WDaan/VueTorrent/commit/4fa63ac1625d9858f70bfe6e51f71abe6030bd6a)) ([7114ce1](https://github.com/WDaan/VueTorrent/commit/7114ce12df6bf7a0992406245277093c52d16002))
- Invalid deconstruct on qbit service ([#623](https://github.com/WDaan/VueTorrent/issues/623))
([5a2ed4e](https://github.com/WDaan/VueTorrent/commit/5a2ed4ea99a81f5566e3276acb8faae42adcc035))
- Unable to delete / create tags and categories ([#628](https://github.com/WDaan/VueTorrent/issues/628))
([4fa63ac](https://github.com/WDaan/VueTorrent/commit/4fa63ac1625d9858f70bfe6e51f71abe6030bd6a))
### Improvements ### Improvements
* Add Enter / Escape keybinds to modals and views ([#608](https://github.com/WDaan/VueTorrent/issues/608)) @Larsluph ([ee9bbc1](https://github.com/WDaan/VueTorrent/commit/ee9bbc1245448768570547f37e3115ff7390b836)) - Add Enter / Escape keybinds to modals and views ([#608](https://github.com/WDaan/VueTorrent/issues/608)) @Larsluph
* Add export torrent to trc menu ([#625](https://github.com/WDaan/VueTorrent/issues/625)) @Larsluph ([353e26d](https://github.com/WDaan/VueTorrent/commit/353e26d51df1d44df16b7ea297f2b89144942977)) ([ee9bbc1](https://github.com/WDaan/VueTorrent/commit/ee9bbc1245448768570547f37e3115ff7390b836))
* add mark as read behavior for rss articles ([#640](https://github.com/WDaan/VueTorrent/issues/640)) @Larsluph ([3cfc82f](https://github.com/WDaan/VueTorrent/commit/3cfc82f055bcc2a917e64e49c27137401d0a0810)) - Add export torrent to trc menu ([#625](https://github.com/WDaan/VueTorrent/issues/625)) @Larsluph
* Add RSS articles view ([#622](https://github.com/WDaan/VueTorrent/issues/622)) @Larsluph ([f8fcafa](https://github.com/WDaan/VueTorrent/commit/f8fcafa1b114da877430daa258087fed6382258b)) ([353e26d](https://github.com/WDaan/VueTorrent/commit/353e26d51df1d44df16b7ea297f2b89144942977))
* Add toasts for copy/paste success/error ([#620](https://github.com/WDaan/VueTorrent/issues/620)) ([6cabef1](https://github.com/WDaan/VueTorrent/commit/6cabef1b56598f3fb896f37c619dc4a8effa6858)) - add mark as read behavior for rss articles ([#640](https://github.com/WDaan/VueTorrent/issues/640)) @Larsluph
* Content tab for mobile users ([#602](https://github.com/WDaan/VueTorrent/issues/602)) @Larsluph ([fc371a2](https://github.com/WDaan/VueTorrent/commit/fc371a296cd8c2287b3fb45597f2d924d30c3847)) ([3cfc82f](https://github.com/WDaan/VueTorrent/commit/3cfc82f055bcc2a917e64e49c27137401d0a0810))
* Convert locale data to json ([#616](https://github.com/WDaan/VueTorrent/issues/616)) @Larsluph ([e990d34](https://github.com/WDaan/VueTorrent/commit/e990d344d2b6d779c66af294bb168da78788200c)) - Add RSS articles view ([#622](https://github.com/WDaan/VueTorrent/issues/622)) @Larsluph
* Disable hide condition on page scroll ([#603](https://github.com/WDaan/VueTorrent/issues/603)) @Larsluph ([f175a6a](https://github.com/WDaan/VueTorrent/commit/f175a6af6521988c84357c761cddb1116e6f83e1)) ([f8fcafa](https://github.com/WDaan/VueTorrent/commit/f8fcafa1b114da877430daa258087fed6382258b))
* Fill data table width to whole page ([#626](https://github.com/WDaan/VueTorrent/issues/626)) ([d2c0817](https://github.com/WDaan/VueTorrent/commit/d2c0817bee904ac5a4dcda5079307b705f1ac7e7)) - Add toasts for copy/paste success/error ([#620](https://github.com/WDaan/VueTorrent/issues/620))
* full Typescript migration + restructure ([#612](https://github.com/WDaan/VueTorrent/issues/612)) @Larsluph ([e09e8a0](https://github.com/WDaan/VueTorrent/commit/e09e8a0300551b813432dfba5d867be3f6709694)) ([6cabef1](https://github.com/WDaan/VueTorrent/commit/6cabef1b56598f3fb896f37c619dc4a8effa6858))
* Rework desktop cards ([#627](https://github.com/WDaan/VueTorrent/issues/627)) @Larsluph ([5aeb653](https://github.com/WDaan/VueTorrent/commit/5aeb65352fc9335112b7747641420579fcd55c47)) - Content tab for mobile users ([#602](https://github.com/WDaan/VueTorrent/issues/602)) @Larsluph
([fc371a2](https://github.com/WDaan/VueTorrent/commit/fc371a296cd8c2287b3fb45597f2d924d30c3847))
- Convert locale data to json ([#616](https://github.com/WDaan/VueTorrent/issues/616)) @Larsluph
([e990d34](https://github.com/WDaan/VueTorrent/commit/e990d344d2b6d779c66af294bb168da78788200c))
- Disable hide condition on page scroll ([#603](https://github.com/WDaan/VueTorrent/issues/603)) @Larsluph
([f175a6a](https://github.com/WDaan/VueTorrent/commit/f175a6af6521988c84357c761cddb1116e6f83e1))
- Fill data table width to whole page ([#626](https://github.com/WDaan/VueTorrent/issues/626))
([d2c0817](https://github.com/WDaan/VueTorrent/commit/d2c0817bee904ac5a4dcda5079307b705f1ac7e7))
- full Typescript migration + restructure ([#612](https://github.com/WDaan/VueTorrent/issues/612)) @Larsluph
([e09e8a0](https://github.com/WDaan/VueTorrent/commit/e09e8a0300551b813432dfba5d867be3f6709694))
- Rework desktop cards ([#627](https://github.com/WDaan/VueTorrent/issues/627)) @Larsluph
([5aeb653](https://github.com/WDaan/VueTorrent/commit/5aeb65352fc9335112b7747641420579fcd55c47))
## [1.2.0](https://github.com/WDaan/VueTorrent/compare/v1.1.0...v1.2.0) (2023-01-11) ## [1.2.0](https://github.com/WDaan/VueTorrent/compare/v1.1.0...v1.2.0) (2023-01-11)

View file

@ -1,20 +1,20 @@
<template> <template>
<v-dialog <v-dialog
v-model="dialog" v-model="dialog"
:transition="dTransition" :transition="dTransition"
:content-class="phoneLayout ? 'rounded-0' : 'rounded-form'" :content-class="phoneLayout ? 'rounded-0' : 'rounded-form'"
max-width="500px" max-width="500px"
:fullscreen="phoneLayout" :fullscreen="phoneLayout"
persistent persistent
@keydown.enter.prevent="$refs.addTorrent.click" @keydown.enter.prevent="$refs.addTorrent.click"
> >
<div <div
class="noselect" class="noselect"
style="position: fixed; left: 0; top: 0; width: 100%; height: 100%" style="position: fixed; left: 0; top: 0; width: 100%; height: 100%"
@drop.prevent="addDropFile" @drop.prevent="addDropFile"
@dragover.prevent="showWrapDrag = true" @dragover.prevent="showWrapDrag = true"
@dragend.prevent="showWrapDrag = false" @dragend.prevent="showWrapDrag = false"
@dragleave.prevent="DragLeave" @dragleave.prevent="DragLeave"
/> />
<v-card :class="showWrapDrag ? 'wrap-drag' : ''" @drop.prevent="addDropFile" @dragover.prevent="showWrapDrag = true" @dragend.prevent="showWrapDrag = false"> <v-card :class="showWrapDrag ? 'wrap-drag' : ''" @drop.prevent="addDropFile" @dragover.prevent="showWrapDrag = true" @dragend.prevent="showWrapDrag = false">
<v-container :class="`pa-0 project done`"> <v-container :class="`pa-0 project done`">
@ -34,16 +34,16 @@
<v-row no-gutters> <v-row no-gutters>
<v-col ref="fileZone"> <v-col ref="fileZone">
<v-file-input <v-file-input
v-if="urls.length === 0" v-if="urls.length === 0"
v-model="files" v-model="files"
color="deep-purple accent-4" color="deep-purple accent-4"
counter counter
:label="$t('modals.add.selectFiles')" :label="$t('modals.add.selectFiles')"
multiple multiple
:prepend-icon="mdiPaperclip" :prepend-icon="mdiPaperclip"
:rules="fileInputRules" :rules="fileInputRules"
outlined outlined
:show-size="1000" :show-size="1000"
> >
<template #selection="{ index, text }"> <template #selection="{ index, text }">
<v-chip v-if="index < 2" color="deep-purple accent-4" dark label small> <v-chip v-if="index < 2" color="deep-purple accent-4" dark label small>
@ -56,18 +56,18 @@
</template> </template>
</v-file-input> </v-file-input>
<v-textarea <v-textarea
v-if="files.length === 0" v-if="files.length === 0"
v-model="urls" v-model="urls"
style="max-height: 200px; overflow-x: hidden; overflow-y: auto" style="max-height: 200px; overflow-x: hidden; overflow-y: auto"
:label="$t('url')" :label="$t('url')"
:prepend-icon="mdiLink" :prepend-icon="mdiLink"
rows="1" rows="1"
required required
:autofocus="!phoneLayout" :autofocus="!phoneLayout"
auto-grow auto-grow
clearable clearable
:hint="$t('modals.add.urlHint')" :hint="$t('modals.add.urlHint')"
@click:prepend="paste" @click:prepend="paste"
/> />
</v-col> </v-col>
</v-row> </v-row>
@ -76,29 +76,45 @@
<v-combobox v-model="category" :items="availableCategories" clearable :label="$t('category')" item-text="name" :prepend-icon="mdiLabel" @input="categoryChanged" /> <v-combobox v-model="category" :items="availableCategories" clearable :label="$t('category')" item-text="name" :prepend-icon="mdiLabel" @input="categoryChanged" />
<v-text-field <v-text-field
v-model="directory" v-model="directory"
:disabled="autoTMM" :disabled="autoTMM"
:label="$t('modals.add.downloadDirectory')" :label="$t('modals.add.downloadDirectory')"
:prepend-icon="mdiFolder" :prepend-icon="mdiFolder"
autocomplete="download-directory" autocomplete="download-directory"
name="download-directory" name="download-directory"
/> />
<v-row no-gutters class="flex-gap"> <v-row no-gutters class="flex-gap">
<v-col> <v-col>
<div class="d-flex flex-column align-center"> <div class="d-flex flex-column align-center">
<p class="subtitle-1 mb-1">{{ $t('modals.add.contentLayout') }}</p> <p class="subtitle-1 mb-1">{{ $t('modals.add.contentLayout') }}</p>
<v-select v-model="contentLayout" :label="$t('modals.add.contentLayout')" flat solo dense <v-select
hide-details background-color="background" class="rounded-xl" v-model="contentLayout"
:items="contentLayoutOptions"/> :label="$t('modals.add.contentLayout')"
flat
solo
dense
hide-details
background-color="background"
class="rounded-xl"
:items="contentLayoutOptions"
/>
</div> </div>
</v-col> </v-col>
<v-col> <v-col>
<div class="d-flex flex-column align-center"> <div class="d-flex flex-column align-center">
<p class="subtitle-1 mb-1">{{ $t('modals.add.stopCondition') }}</p> <p class="subtitle-1 mb-1">{{ $t('modals.add.stopCondition') }}</p>
<v-select v-model="stopCondition" :label="$t('modals.add.stopCondition')" flat solo dense <v-select
hide-details background-color="background" class="rounded-xl" v-model="stopCondition"
:items="stopConditionOptions"/> :label="$t('modals.add.stopCondition')"
flat
solo
dense
hide-details
background-color="background"
class="rounded-xl"
:items="stopConditionOptions"
/>
</div> </div>
</v-col> </v-col>
</v-row> </v-row>
@ -138,9 +154,9 @@
</v-container> </v-container>
</v-card> </v-card>
<div <div
v-show="showWrapDrag" v-show="showWrapDrag"
class="wrap-drag noselect" class="wrap-drag noselect"
style="position: fixed; left: 0; top: 0; width: 100%; height: 100%; text-align: center; background-color: rgb(0, 0, 0, 0.5)" style="position: fixed; left: 0; top: 0; width: 100%; height: 100%; text-align: center; background-color: rgb(0, 0, 0, 0.5)"
> >
<div class="align white--text"> <div class="align white--text">
<div> <div>
@ -157,11 +173,11 @@
</template> </template>
<script> <script>
import {mapGetters, mapState} from 'vuex' import { mapGetters, mapState } from 'vuex'
import qbit from '@/services/qbit' import qbit from '@/services/qbit'
import {mdiCloudUpload, mdiFolder, mdiTag, mdiLabel, mdiPaperclip, mdiLink, mdiClose} from '@mdi/js' import { mdiCloudUpload, mdiFolder, mdiTag, mdiLabel, mdiPaperclip, mdiLink, mdiClose } from '@mdi/js'
import {FullScreenModal, Modal} from '@/mixins' import { FullScreenModal, Modal } from '@/mixins'
import {AppPreferences} from '@/enums/qbit' import { AppPreferences } from '@/enums/qbit'
export default { export default {
name: 'AddModal', name: 'AddModal',
@ -180,15 +196,15 @@ export default {
skip_checking: false, skip_checking: false,
contentLayout: 'Original', contentLayout: 'Original',
contentLayoutOptions: [ contentLayoutOptions: [
{text: this.$t('modals.add.contentLayoutOptions.original'), value: AppPreferences.ContentLayout.ORIGINAL}, { text: this.$t('modals.add.contentLayoutOptions.original'), value: AppPreferences.ContentLayout.ORIGINAL },
{text: this.$t('modals.add.contentLayoutOptions.subfolder'), value: AppPreferences.ContentLayout.SUBFOLDER}, { text: this.$t('modals.add.contentLayoutOptions.subfolder'), value: AppPreferences.ContentLayout.SUBFOLDER },
{text: this.$t('modals.add.contentLayoutOptions.nosubfolder'), value: AppPreferences.ContentLayout.NO_SUBFOLDER} { text: this.$t('modals.add.contentLayoutOptions.nosubfolder'), value: AppPreferences.ContentLayout.NO_SUBFOLDER }
], ],
stopCondition: 'None', stopCondition: 'None',
stopConditionOptions: [ stopConditionOptions: [
{text: this.$t('modals.add.stopConditionOptions.none'), value: AppPreferences.StopCondition.NONE}, { text: this.$t('modals.add.stopConditionOptions.none'), value: AppPreferences.StopCondition.NONE },
{text: this.$t('modals.add.stopConditionOptions.metadataReceived'), value: AppPreferences.StopCondition.METADATA_RECEIVED}, { text: this.$t('modals.add.stopConditionOptions.metadataReceived'), value: AppPreferences.StopCondition.METADATA_RECEIVED },
{text: this.$t('modals.add.stopConditionOptions.filesChecked'), value: AppPreferences.StopCondition.FILES_CHECKED}, { text: this.$t('modals.add.stopConditionOptions.filesChecked'), value: AppPreferences.StopCondition.FILES_CHECKED }
], ],
autoTMM: true, autoTMM: true,
sequentialDownload: false, sequentialDownload: false,
@ -288,7 +304,7 @@ export default {
this.$toast.success(this.$t('toast.pasteSuccess').toString()) this.$toast.success(this.$t('toast.pasteSuccess').toString())
}, },
async submit() { async submit() {
if (this.files.length === 0 && this.urls.length === 0) return; if (this.files.length === 0 && this.urls.length === 0) return
const torrents = [] const torrents = []
const params = { const params = {

View file

@ -30,10 +30,10 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import {defineComponent} from 'vue' import { defineComponent } from 'vue'
import Modal from "../../mixins/Modal"; import Modal from '../../mixins/Modal'
import {FullScreenModal} from "@/mixins"; import { FullScreenModal } from '@/mixins'
import qbit from "@/services/qbit"; import qbit from '@/services/qbit'
export default defineComponent({ export default defineComponent({
name: 'ConfirmShutdownModal', name: 'ConfirmShutdownModal',
@ -43,13 +43,12 @@ export default defineComponent({
this.dialog = false this.dialog = false
}, },
async shutdownApplication() { async shutdownApplication() {
if (!await qbit.shutdownApp()) { if (!(await qbit.shutdownApp())) {
this.$toast.error(this.$t('toast.shutdownError').toString()) this.$toast.error(this.$t('toast.shutdownError').toString())
} } else {
else {
this.$store.state.authenticated = false this.$store.state.authenticated = false
await this.$router.push({name: 'login'}) await this.$router.push({ name: 'login' })
this.$toast.success(this.$t("toast.shutdownSuccess").toString()) this.$toast.success(this.$t('toast.shutdownSuccess').toString())
} }
this.close() this.close()

View file

@ -59,7 +59,7 @@ import qbit from '@/services/qbit'
import { mapGetters, mapState } from 'vuex' import { mapGetters, mapState } from 'vuex'
import { mdiBrightness4, mdiSpeedometerSlow, mdiBrightness7, mdiSpeedometer, mdiPower, mdiExitToApp, mdiBell, mdiBellOff } from '@mdi/js' import { mdiBrightness4, mdiSpeedometerSlow, mdiBrightness7, mdiSpeedometer, mdiPower, mdiExitToApp, mdiBell, mdiBellOff } from '@mdi/js'
import ConnectionStatus from './ConnectionStatus.vue' import ConnectionStatus from './ConnectionStatus.vue'
import {General} from "@/mixins" import { General } from '@/mixins'
export default { export default {
name: 'BottomActions', name: 'BottomActions',

View file

@ -139,7 +139,7 @@
<script> <script>
import { SettingsTab, FullScreenModal } from '@/mixins' import { SettingsTab, FullScreenModal } from '@/mixins'
import {MaxRatioAction} from "@/enums/qbit/AppPreferences"; import { MaxRatioAction } from '@/enums/qbit/AppPreferences'
export default { export default {
name: 'BitTorrent', name: 'BitTorrent',

View file

@ -98,7 +98,7 @@
<script> <script>
import { SettingsTab, FullScreenModal } from '@/mixins' import { SettingsTab, FullScreenModal } from '@/mixins'
import {BitTorrentProtocol, ProxyType} from "@/enums/qbit/AppPreferences"; import { BitTorrentProtocol, ProxyType } from '@/enums/qbit/AppPreferences'
export default { export default {
name: 'Connection', name: 'Connection',

View file

@ -2,13 +2,27 @@
<v-card flat> <v-card flat>
<v-subheader>{{ $t('modals.settings.pageDownloads.subHeaderWhenAddTorrent') }}</v-subheader> <v-subheader>{{ $t('modals.settings.pageDownloads.subHeaderWhenAddTorrent') }}</v-subheader>
<v-list-item> <v-list-item>
<v-select v-model="settings.torrent_content_layout" :label="$t('modals.settings.pageDownloads.whenAddTorrent.contentLayout')" outlined dense small-chips :items="contentLayoutOptions" /> <v-select
v-model="settings.torrent_content_layout"
:label="$t('modals.settings.pageDownloads.whenAddTorrent.contentLayout')"
outlined
dense
small-chips
:items="contentLayoutOptions"
/>
</v-list-item> </v-list-item>
<v-list-item> <v-list-item>
<v-checkbox v-model="settings.start_paused_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.whenAddTorrent.donotAutoStart')" /> <v-checkbox v-model="settings.start_paused_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.whenAddTorrent.donotAutoStart')" />
</v-list-item> </v-list-item>
<v-list-item> <v-list-item>
<v-select v-model="settings.torrent_stop_condition" :label="$t('modals.settings.pageDownloads.whenAddTorrent.stopCondition')" outlined dense small-chips :items="stopConditionOptions" /> <v-select
v-model="settings.torrent_stop_condition"
:label="$t('modals.settings.pageDownloads.whenAddTorrent.stopCondition')"
outlined
dense
small-chips
:items="stopConditionOptions"
/>
</v-list-item> </v-list-item>
<v-list-item> <v-list-item>
<v-checkbox v-model="settings.auto_delete_mode" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.whenAddTorrent.autoDeleteMode')" /> <v-checkbox v-model="settings.auto_delete_mode" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.whenAddTorrent.autoDeleteMode')" />
@ -121,15 +135,15 @@ export default {
data() { data() {
return { return {
contentLayoutOptions: [ contentLayoutOptions: [
{text: this.$t('modals.add.contentLayoutOptions.original'), value: AppPreferences.ContentLayout.ORIGINAL}, { text: this.$t('modals.add.contentLayoutOptions.original'), value: AppPreferences.ContentLayout.ORIGINAL },
{text: this.$t('modals.add.contentLayoutOptions.subfolder'), value: AppPreferences.ContentLayout.SUBFOLDER}, { text: this.$t('modals.add.contentLayoutOptions.subfolder'), value: AppPreferences.ContentLayout.SUBFOLDER },
{text: this.$t('modals.add.contentLayoutOptions.nosubfolder'), value: AppPreferences.ContentLayout.NO_SUBFOLDER} { text: this.$t('modals.add.contentLayoutOptions.nosubfolder'), value: AppPreferences.ContentLayout.NO_SUBFOLDER }
], ],
stopConditionOptions: [ stopConditionOptions: [
{text: this.$t('modals.add.stopConditionOptions.none'), value: AppPreferences.StopCondition.NONE}, { text: this.$t('modals.add.stopConditionOptions.none'), value: AppPreferences.StopCondition.NONE },
{text: this.$t('modals.add.stopConditionOptions.metadataReceived'), value: AppPreferences.StopCondition.METADATA_RECEIVED}, { text: this.$t('modals.add.stopConditionOptions.metadataReceived'), value: AppPreferences.StopCondition.METADATA_RECEIVED },
{text: this.$t('modals.add.stopConditionOptions.filesChecked'), value: AppPreferences.StopCondition.FILES_CHECKED}, { text: this.$t('modals.add.stopConditionOptions.filesChecked'), value: AppPreferences.StopCondition.FILES_CHECKED }
], ]
} }
} }
} }

View file

@ -4,16 +4,22 @@
<v-tab href="#general"> <v-tab href="#general">
{{ $t('modals.settings.pageVueTorrent.tabName.general') }} {{ $t('modals.settings.pageVueTorrent.tabName.general') }}
</v-tab> </v-tab>
<v-tab href="#dashboard"> <v-tab href="#desktopCard">
{{ $t('modals.settings.pageVueTorrent.tabName.dashboard') }} {{ $t('modals.settings.pageVueTorrent.tabName.desktopCard') }}
</v-tab>
<v-tab href="#mobileCard">
{{ $t('modals.settings.pageVueTorrent.tabName.mobileCard') }}
</v-tab> </v-tab>
</v-tabs> </v-tabs>
<v-tabs-items v-model="tab" touchless> <v-tabs-items v-model="tab" touchless>
<v-tab-item eager value="general"> <v-tab-item eager value="general">
<VGeneral /> <VGeneral />
</v-tab-item> </v-tab-item>
<v-tab-item eager value="dashboard"> <v-tab-item eager value="desktopCard">
<Dashboard /> <VDesktopCard />
</v-tab-item>
<v-tab-item eager value="mobileCard">
<VMobileCard />
</v-tab-item> </v-tab-item>
</v-tabs-items> </v-tabs-items>
</v-card> </v-card>
@ -21,14 +27,16 @@
<script> <script>
import VGeneral from './VueTorrent/VGeneral.vue' import VGeneral from './VueTorrent/VGeneral.vue'
import Dashboard from './VueTorrent/Dashboard.vue' import VDesktopCard from './VueTorrent/VDesktopCard.vue'
import VMobileCard from './VueTorrent/VMobileCard.vue'
import { FullScreenModal } from '@/mixins' import { FullScreenModal } from '@/mixins'
export default { export default {
name: 'VueTorrent', name: 'VueTorrent',
components: { components: {
VGeneral, VGeneral,
Dashboard VDesktopCard,
VMobileCard
}, },
mixins: [FullScreenModal], mixins: [FullScreenModal],
data: () => ({ data: () => ({

View file

@ -3,12 +3,12 @@
<v-row dense> <v-row dense>
<v-col cols="12" md="6"> <v-col cols="12" md="6">
<v-subheader> <v-subheader>
{{ $t('modals.settings.pageVueTorrent.pageDashboard.busyTorrentTip') }} {{ $t('modals.settings.pageVueTorrent.pageDesktopCard.busyTorrentTip') }}
</v-subheader> </v-subheader>
<v-row dense> <v-row dense>
<v-list flat class="ma-2 pa-0"> <v-list flat class="ma-2 pa-0">
<draggable :list="busyTorrentProperties" tag="tbody"> <draggable :list="busyDesktopTorrentProperties" tag="tbody">
<v-list-item v-for="(item, index) in busyTorrentProperties" :key="index" class="ma-2 elevation-2 rounded-lg pointer"> <v-list-item v-for="(item, index) in busyDesktopTorrentProperties" :key="index" class="ma-2 elevation-2 rounded-lg pointer">
<v-checkbox v-model="item.active" dense hide-details class="pa-0 ma-0" /> <v-checkbox v-model="item.active" dense hide-details class="pa-0 ma-0" />
<v-list-item-content> <v-list-item-content>
<v-list-item-title class="truncate" v-text="item.label" /> <v-list-item-title class="truncate" v-text="item.label" />
@ -26,12 +26,12 @@
<v-col cols="12" md="6"> <v-col cols="12" md="6">
<v-subheader> <v-subheader>
{{ $t('modals.settings.pageVueTorrent.pageDashboard.completedTorrentTip') }} {{ $t('modals.settings.pageVueTorrent.pageDesktopCard.completedTorrentTip') }}
</v-subheader> </v-subheader>
<v-row dense> <v-row dense>
<v-list flat class="ma-2 pa-0"> <v-list flat class="ma-2 pa-0">
<draggable :list="doneTorrentProperties" tag="tbody"> <draggable :list="doneDesktopTorrentProperties" tag="tbody">
<v-list-item v-for="(item, index) in doneTorrentProperties" :key="index" class="ma-2 elevation-2 rounded-lg pointer"> <v-list-item v-for="(item, index) in doneDesktopTorrentProperties" :key="index" class="ma-2 elevation-2 rounded-lg pointer">
<v-checkbox v-model="item.active" dense hide-details class="pa-0 ma-0" /> <v-checkbox v-model="item.active" dense hide-details class="pa-0 ma-0" />
<v-list-item-content> <v-list-item-content>
<v-list-item-title class="truncate" v-text="item.label" /> <v-list-item-title class="truncate" v-text="item.label" />
@ -56,7 +56,7 @@ import { mdiMenu } from '@mdi/js'
import { i18n } from '@/plugins/i18n' import { i18n } from '@/plugins/i18n'
export default { export default {
name: 'Dashboard', name: 'VDesktopCard',
components: { components: {
draggable draggable
}, },
@ -64,16 +64,16 @@ export default {
mdiMenu mdiMenu
}), }),
computed: { computed: {
busyTorrentProperties() { busyDesktopTorrentProperties() {
return this.injectLocalization(this.$store.state.webuiSettings.busyTorrentProperties) return this.injectLocalization(this.$store.state.webuiSettings.busyDesktopTorrentProperties)
}, },
doneTorrentProperties() { doneDesktopTorrentProperties() {
return this.injectLocalization(this.$store.state.webuiSettings.doneTorrentProperties) return this.injectLocalization(this.$store.state.webuiSettings.doneDesktopTorrentProperties)
} }
}, },
methods: { methods: {
injectLocalization(properties) { injectLocalization(properties) {
const localePrefix = 'modals.settings.pageVueTorrent.pageDashboard.properties' const localePrefix = 'modals.settings.pageVueTorrent.properties'
const localeMap = { const localeMap = {
Size: i18n.t(`${localePrefix}.size`), Size: i18n.t(`${localePrefix}.size`),
Progress: i18n.t(`${localePrefix}.progress`), Progress: i18n.t(`${localePrefix}.progress`),

View file

@ -124,11 +124,11 @@
<v-row dense> <v-row dense>
<v-col> <v-col>
<v-switch <v-switch
v-model="webuiSettings.showShutdownButton" v-model="webuiSettings.showShutdownButton"
class="v-input--reverse pa-0 ma-0" class="v-input--reverse pa-0 ma-0"
hide-details hide-details
inset inset
:label="$t('modals.settings.pageVueTorrent.pageGeneral.showShutdownButton')" :label="$t('modals.settings.pageVueTorrent.pageGeneral.showShutdownButton')"
/> />
</v-col> </v-col>
</v-row> </v-row>

View file

@ -0,0 +1,86 @@
<template>
<v-card flat>
<v-row dense>
<v-col cols="12" md="6">
<v-subheader>
{{ $t('modals.settings.pageVueTorrent.pageMobileCard.busyTorrentTip') }}
</v-subheader>
<v-row dense>
<v-list flat class="ma-2 pa-0">
<v-list-item v-for="(item, index) in busyMobileCardProperties" :key="index" class="ma-2 elevation-2 rounded-lg pointer">
<v-checkbox v-model="item.active" dense hide-details class="pa-0 ma-0" />
<v-list-item-content>
<v-list-item-title class="truncate" v-text="item.label" />
</v-list-item-content>
</v-list-item>
</v-list>
</v-row>
</v-col>
<v-col cols="12" md="6">
<v-subheader>
{{ $t('modals.settings.pageVueTorrent.pageMobileCard.completedTorrentTip') }}
</v-subheader>
<v-row dense>
<v-list flat class="ma-2 pa-0">
<v-list-item v-for="(item, index) in doneMobileCardProperties" :key="index" class="ma-2 elevation-2 rounded-lg pointer">
<v-checkbox v-model="item.active" dense hide-details class="pa-0 ma-0" />
<v-list-item-content>
<v-list-item-title class="truncate" v-text="item.label" />
</v-list-item-content>
</v-list-item>
</v-list>
</v-row>
</v-col>
</v-row>
</v-card>
</template>
<script>
import { mapState } from 'vuex'
import draggable from 'vuedraggable'
import { mdiMenu } from '@mdi/js'
import { i18n } from '@/plugins/i18n'
export default {
name: 'VMobileCard',
components: {
draggable
},
data: () => ({
mdiMenu
}),
computed: {
...mapState(['webuiSettings']),
busyMobileCardProperties() {
return this.injectLocalization(this.webuiSettings.busyMobileCardProperties)
},
doneMobileCardProperties() {
return this.injectLocalization(this.webuiSettings.doneMobileCardProperties)
}
},
methods: {
injectLocalization(properties) {
const localePrefix = 'modals.settings.pageVueTorrent.properties'
const localeMap = {
Size: i18n.t(`${localePrefix}.size`),
Progress: i18n.t(`${localePrefix}.progress`),
Download: i18n.t(`${localePrefix}.downloadSpeed`),
Upload: i18n.t(`${localePrefix}.uploadSpeed`),
ETA: i18n.t(`${localePrefix}.ETA`),
Peers: i18n.t(`${localePrefix}.peers`),
Seeds: i18n.t(`${localePrefix}.seeds`),
Status: i18n.t(`${localePrefix}.state`),
Ratio: i18n.t(`${localePrefix}.ratio`),
Uploaded: i18n.t(`${localePrefix}.uploaded`),
Tracker: i18n.t(`${localePrefix}.tracker`),
Category: i18n.t(`${localePrefix}.category`),
Tags: i18n.t(`${localePrefix}.tags`)
}
properties.forEach(property => (property.label = localeMap[property.name]))
return properties
}
}
}
</script>

View file

@ -10,7 +10,7 @@
</template> </template>
<script> <script>
import * as Fields from './DashboardItems' import * as Fields from './DashboardItems'
import { mapGetters } from 'vuex' import { mapState } from 'vuex'
export default { export default {
name: 'DesktopCard', name: 'DesktopCard',
@ -21,13 +21,13 @@ export default {
torrent: Object torrent: Object
}, },
computed: { computed: {
...mapGetters(['getWebuiSettings']), ...mapState(['webuiSettings']),
properties() { properties() {
if (this.torrent.progress === 100) { if (this.torrent.progress === 100) {
return this.getWebuiSettings().doneTorrentProperties.filter(i => i.active) return this.webuiSettings.doneDesktopTorrentProperties.filter(i => i.active)
} }
return this.getWebuiSettings().busyTorrentProperties.filter(i => i.active) return this.webuiSettings.busyDesktopTorrentProperties.filter(i => i.active)
} }
} }
} }

View file

@ -6,64 +6,66 @@
</span> </span>
</v-flex> </v-flex>
<v-flex xs12 row class="ma-1 mt-0 chipgap"> <v-flex xs12 row class="ma-1 mt-0 chipgap">
<v-chip small class="caption white--text" :class="torrent.state.toLowerCase()" style="height: 20px"> <v-chip v-if="isStatusActive" small class="caption white--text" :class="torrent.state.toLowerCase()" style="height: 20px">
{{ stateString }} {{ stateString }}
</v-chip> </v-chip>
<v-chip v-if="torrent.tracker" small class="trackers caption white--text" style="height: 20px"> <v-chip v-if="isTrackerActive && torrent.tracker" small class="trackers caption white--text" style="height: 20px">
{{ trackerHost }} {{ trackerHost }}
</v-chip> </v-chip>
<v-chip v-if="torrent.category" small class="upload caption white--text" style="height: 20px"> <v-chip v-if="isCategoryActive && torrent.category" small class="upload caption white--text" style="height: 20px">
{{ torrent.category }} {{ torrent.category }}
</v-chip> </v-chip>
<v-chip v-if="torrent.tags" v-for="tag in torrent.tags" :key="tag" small class="tags caption white--text" style="height: 20px"> <v-chip v-if="isTagsActive && torrent.tags" v-for="tag in torrent.tags" :key="tag" small class="tags caption white--text" style="height: 20px">
{{ tag }} {{ tag }}
</v-chip> </v-chip>
</v-flex> </v-flex>
<v-flex xs12 class="pa-0 ma-1 row spangap"> <v-flex xs12 class="pa-0 ma-1 row spangap">
<span class="downloaded"> <span v-if="isSizeActive">
<span class="body-2">{{ torrent.dloaded | getDataValue }} </span> <span class="downloaded">
<span class="grey--text caption">{{ torrent.dloaded | getDataUnit }}</span> <span class="body-2">{{ torrent.dloaded | getDataValue }} </span>
<span class="grey--text caption">{{ torrent.dloaded | getDataUnit }}</span>
</span>
<span class="grey--text caption">/</span>
<span class="size">
<span class="body-2">{{ torrent.size | getDataValue }} </span>
<span class="grey--text caption">{{ torrent.size | getDataUnit }}</span>
</span>
</span> </span>
<span class="grey--text caption">/</span> <span v-if="isSizeActive && isProgressActive" class="grey--text" style="margin-top: 3px"></span>
<span class="size"> <span v-if="isProgressActive" class="progress">
<span class="body-2">{{ torrent.size | getDataValue }} </span>
<span class="grey--text caption">{{ torrent.size | getDataUnit }}</span>
</span>
<span class="grey--text" style="margin-top: 3px"></span>
<span class="progress">
<span class="body-2">{{ torrent.progress }} </span> <span class="body-2">{{ torrent.progress }} </span>
<span class="grey--text caption">%</span> <span class="grey--text caption">%</span>
</span> </span>
<span class="grey--text" style="margin-top: 3px"></span> <span v-if="(isSizeActive || isProgressActive) && isRatioActive" class="grey--text" style="margin-top: 3px"></span>
<span class="ratio"> <span v-if="isRatioActive" class="ratio">
<span class="grey--text caption">R: </span> <span class="grey--text caption">R: </span>
<span class="body-2">{{ torrent.ratio }}</span> <span class="body-2">{{ torrent.ratio }}</span>
</span> </span>
<span class="grey--text" style="margin-top: 3px"></span> <span v-if="(isSizeActive || isProgressActive || isRatioActive) && isUploadedActive" class="grey--text" style="margin-top: 3px"></span>
<span class="uploaded"> <span v-if="isUploadedActive" class="uploaded">
<span class="body-2">{{ torrent.uploaded | getDataValue }} </span> <span class="body-2">{{ torrent.uploaded | getDataValue }} </span>
<span class="grey--text caption">{{ torrent.uploaded | getDataUnit }}</span> <span class="grey--text caption">{{ torrent.uploaded | getDataUnit }}</span>
</span> </span>
<v-spacer /> <v-spacer />
<span class="body-2">{{ torrent.eta }}</span> <span v-if="isEtaActive" class="body-2">{{ torrent.eta }}</span>
</v-flex> </v-flex>
<v-flex xs12 class="ma-1"> <v-flex xs12 class="ma-1">
<v-progress-linear rounded color="upload" height="5" :value="torrent.progress" /> <v-progress-linear rounded color="upload" height="5" :value="torrent.progress" />
</v-flex> </v-flex>
<v-flex row xs12 class="ma-1"> <v-flex row xs12 class="ma-1">
<div class="caption grey--text">{{ torrent.num_seeds }}/{{ torrent.available_seeds }} seeds</div> <div v-if="isSeedsActive" class="caption grey--text">{{ torrent.num_seeds }}/{{ torrent.available_seeds }} seeds</div>
<span class="mx-1 grey--text" style="margin-top: 2px"></span> <span v-if="isSeedsActive && isPeersActive" class="mx-1 grey--text" style="margin-top: 2px"></span>
<div class="caption grey--text">{{ torrent.num_leechs }}/{{ torrent.available_peers }} peers</div> <div v-if="isPeersActive" class="caption grey--text">{{ torrent.num_leechs }}/{{ torrent.available_peers }} peers</div>
<v-spacer /> <v-spacer />
<div> <div>
<span v-if="torrent.dlspeed"> <span v-if="isDownloadActive && torrent.dlspeed">
<v-icon small class="grey--text"> <v-icon small class="grey--text">
{{ mdiChevronDown }} {{ mdiChevronDown }}
</v-icon> </v-icon>
<span class="caption font-weight-medium grey--text">{{ torrent.dlspeed | getDataValue(1) }} </span> <span class="caption font-weight-medium grey--text">{{ torrent.dlspeed | getDataValue(1) }} </span>
<span class="caption grey--text" style="font-size: 0.6em !important"> {{ torrent.dlspeed | getDataUnit(1) }}/s </span> <span class="caption grey--text" style="font-size: 0.6em !important"> {{ torrent.dlspeed | getDataUnit }}/s </span>
</span> </span>
<span v-if="torrent.upspeed"> <span v-if="isUploadActive && torrent.upspeed">
<v-icon small class="grey--text"> <v-icon small class="grey--text">
{{ mdiChevronUp }} {{ mdiChevronUp }}
</v-icon> </v-icon>
@ -75,9 +77,11 @@
</v-layout> </v-layout>
</template> </template>
<script> <script>
import { mapState } from 'vuex'
import { mdiChevronUp, mdiChevronDown } from '@mdi/js' import { mdiChevronUp, mdiChevronDown } from '@mdi/js'
import { Torrent } from '@/models' import { Torrent } from '@/models'
import { getDomainBody } from '@/helpers' import { getDomainBody } from '@/helpers'
import { DashboardProperty } from '@/enums/vuetorrent'
export default { export default {
name: 'MobileCard', name: 'MobileCard',
@ -89,12 +93,59 @@ export default {
mdiChevronDown mdiChevronDown
}), }),
computed: { computed: {
...mapState(['webuiSettings']),
stateString() { stateString() {
if (this.torrent.forced) return `[F] ${this.torrent.state}` if (this.torrent.forced) return `[F] ${this.torrent.state}`
else return this.torrent.state else return this.torrent.state
}, },
trackerHost() { trackerHost() {
return getDomainBody(this.torrent.tracker) return getDomainBody(this.torrent.tracker)
},
properties() {
if (this.torrent.progress === 100) {
return this.webuiSettings.doneMobileCardProperties
}
return this.webuiSettings.busyMobileCardProperties
},
isStatusActive() {
return this.properties.find(e => e.name === DashboardProperty.STATUS).active
},
isTrackerActive() {
return this.properties.find(e => e.name === DashboardProperty.TRACKER).active
},
isCategoryActive() {
return this.properties.find(e => e.name === DashboardProperty.CATEGORY).active
},
isTagsActive() {
return this.properties.find(e => e.name === DashboardProperty.TAGS).active
},
isSizeActive() {
return this.properties.find(e => e.name === DashboardProperty.SIZE).active
},
isProgressActive() {
return this.properties.find(e => e.name === DashboardProperty.PROGRESS).active
},
isRatioActive() {
return this.properties.find(e => e.name === DashboardProperty.RATIO).active
},
isUploadedActive() {
return this.properties.find(e => e.name === DashboardProperty.UPLOADED).active
},
isEtaActive() {
return this.properties.find(e => e.name === DashboardProperty.ETA).active
},
isSeedsActive() {
return this.properties.find(e => e.name === DashboardProperty.SEEDS).active
},
isPeersActive() {
return this.properties.find(e => e.name === DashboardProperty.PEERS).active
},
isDownloadActive() {
return this.properties.find(e => e.name === DashboardProperty.DOWNLOAD).active
},
isUploadActive() {
return this.properties.find(e => e.name === DashboardProperty.UPLOAD).active
} }
} }
} }

View file

@ -149,7 +149,14 @@
{{ $t('rightClick.notags') | titleCase }} {{ $t('rightClick.notags') | titleCase }}
</v-list-item-title> </v-list-item-title>
</v-list-item> </v-list-item>
<v-menu v-if="availableCategories.length > 1" :open-on-hover="!touchmode" top offset-x :transition="isRightside ? 'slide-x-reverse-transition' : 'slide-x-transition'" :left="isRightside"> <v-menu
v-if="availableCategories.length > 1"
:open-on-hover="!touchmode"
top
offset-x
:transition="isRightside ? 'slide-x-reverse-transition' : 'slide-x-transition'"
:left="isRightside"
>
<template #activator="{ on }"> <template #activator="{ on }">
<v-list-item link v-on="on"> <v-list-item link v-on="on">
<v-icon>{{ mdiLabel }}</v-icon> <v-icon>{{ mdiLabel }}</v-icon>

View file

@ -1,38 +1,36 @@
<template> <template>
<v-card flat> <v-card flat>
<v-card-text class="pa-0"> <v-card-text class="pa-0">
<v-data-table v-if="peers" v-model="selectedPeers" dense show-select :headers="headers" :items="peers" <v-data-table v-if="peers" v-model="selectedPeers" dense show-select :headers="headers" :items="peers" :items-per-page="-1" item-key="key" mobile-breakpoint="0">
:items-per-page="-1" item-key="key" mobile-breakpoint="0">
<template #body="{ items }"> <template #body="{ items }">
<tbody> <tbody>
<tr v-for="item in items" :key="item.key"> <tr v-for="item in items" :key="item.key">
<td> <td>
<v-checkbox v-model="selectedPeers" :value="item.key" hide-details class="pa-0 ma-0" color="accent"/> <v-checkbox v-model="selectedPeers" :value="item.key" hide-details class="pa-0 ma-0" color="accent" />
</td> </td>
<td class="ip"> <td class="ip">
<template v-if="item.country_code"> <template v-if="item.country_code">
<img v-if="isWindows" class="country-flag" :title="item.country" <img v-if="isWindows" class="country-flag" :title="item.country" :alt="codeToFlag(item.country_code).char" :src="codeToFlag(item.country_code).url" />
:alt="codeToFlag(item.country_code).char" :src="codeToFlag(item.country_code).url"/> <template v-else>
<template v-else> {{ codeToFlag(item.country_code).char }}
{{ codeToFlag(item.country_code).char }} </template>
</template> </template>
</template> {{ item.ip }}
{{ item.ip }} <span class="grey--text">:{{ item.port }}</span>
<span class="grey--text">:{{ item.port }}</span> </td>
</td> <td>{{ item.connection }}</td>
<td>{{ item.connection }}</td> <td :title="item.flags_desc">
<td :title="item.flags_desc"> {{ item.flags }}
{{ item.flags }} </td>
</td> <td>{{ item.client }}</td>
<td>{{ item.client }}</td> <td>{{ item.progress | progress }}</td>
<td>{{ item.progress | progress }}</td> <td>{{ item.dl_speed | networkSpeed }}</td>
<td>{{ item.dl_speed | networkSpeed }}</td> <td>{{ item.downloaded | networkSize }}</td>
<td>{{ item.downloaded | networkSize }}</td> <td>{{ item.up_speed | networkSpeed }}</td>
<td>{{ item.up_speed | networkSpeed }}</td> <td>{{ item.uploaded | networkSize }}</td>
<td>{{ item.uploaded | networkSize }}</td> <td>{{ item.relevance | progress }}</td>
<td>{{ item.relevance | progress }}</td> <td>{{ item.files }}</td>
<td>{{ item.files }}</td> </tr>
</tr>
</tbody> </tbody>
</template> </template>
</v-data-table> </v-data-table>
@ -48,11 +46,10 @@
<h3>Add Peers</h3> <h3>Add Peers</h3>
</v-card-title> </v-card-title>
<v-card-text> <v-card-text>
<v-textarea v-model="newPeers" label="Peers" rows="1" required autofocus auto-grow clearable <v-textarea v-model="newPeers" label="Peers" rows="1" required autofocus auto-grow clearable hint="One link per line" />
hint="One link per line"/>
</v-card-text> </v-card-text>
<v-card-actions> <v-card-actions>
<v-spacer/> <v-spacer />
<v-btn color="red darken-1" text @click="closeAddPeers">Cancel</v-btn> <v-btn color="red darken-1" text @click="closeAddPeers">Cancel</v-btn>
<v-btn color="green darken-1" text @click="addPeers">Add</v-btn> <v-btn color="green darken-1" text @click="addPeers">Add</v-btn>
</v-card-actions> </v-card-actions>

View file

@ -5,9 +5,9 @@ export enum BitTorrentProtocol {
} }
export enum ContentLayout { export enum ContentLayout {
ORIGINAL = "Original", ORIGINAL = 'Original',
SUBFOLDER = "Subfolder", SUBFOLDER = 'Subfolder',
NO_SUBFOLDER = "NoSubfolder" NO_SUBFOLDER = 'NoSubfolder'
} }
export enum DynDnsService { export enum DynDnsService {
@ -57,9 +57,9 @@ export enum SchedulerDays {
} }
export enum StopCondition { export enum StopCondition {
NONE = "None", NONE = 'None',
METADATA_RECEIVED = "MetadataReceived", METADATA_RECEIVED = 'MetadataReceived',
FILES_CHECKED = "FilesChecked" FILES_CHECKED = 'FilesChecked'
} }
export enum UploadChokingAlgorithm { export enum UploadChokingAlgorithm {

View file

@ -10,7 +10,7 @@ export enum DashboardProperty {
PEERS = 'Peers', PEERS = 'Peers',
SEEDS = 'Seeds', SEEDS = 'Seeds',
STATUS = 'Status', STATUS = 'Status',
RAIO = 'Ratio', RATIO = 'Ratio',
TRACKER = 'Tracker', TRACKER = 'Tracker',
CATEGORY = 'Category', CATEGORY = 'Category',
TAGS = 'Tags', TAGS = 'Tags',

View file

@ -60,14 +60,18 @@ export function treeify(paths) {
const level = { result } const level = { result }
paths.forEach(path => { paths.forEach(path => {
path.name.split('\\').join('/').split('/').reduce((r, name) => { path.name
if (!r[name]) { .split('\\')
r[name] = { result: [] } .join('/')
r.result.push(createFile(path, name, r[name].result)) .split('/')
} .reduce((r, name) => {
if (!r[name]) {
r[name] = { result: [] }
r.result.push(createFile(path, name, r[name].result))
}
return r[name] return r[name]
}, level) }, level)
}) })
// parse folders // parse folders
@ -162,7 +166,7 @@ export function getBaseURL() {
} }
export function getDomainBody(string) { export function getDomainBody(string) {
const match = string.match(/:\/\/([^\/]+\.)?([^\/\.]+)\.[^\/\.:]+/i) const match = string.match(/:\/\/([^\/]+\.)?([^\/.]+)\.[^\/.:]+/i)
if (match != null && match.length > 2 && typeof match[2] === 'string' && match[2].length > 0) { if (match != null && match.length > 2 && typeof match[2] === 'string' && match[2].length > 0) {
return match[2] return match[2]
} else { } else {

View file

@ -92,7 +92,7 @@
"removeSelected": "Remove selected torrents", "removeSelected": "Remove selected torrents",
"openSettings": "Open settings", "openSettings": "Open settings",
"searchNew": "Search new torrent", "searchNew": "Search new torrent",
"rssArticles": "View RSS feed articles" "rssArticles": "View RSS feed articles"
}, },
"sessionStats": { "sessionStats": {
"tooltip": "Since the last time qBittorrent was restarted" "tooltip": "Since the last time qBittorrent was restarted"
@ -172,7 +172,8 @@
"pageVueTorrent": { "pageVueTorrent": {
"tabName": { "tabName": {
"general": "General", "general": "General",
"dashboard": "Dashboard" "desktopCard": "Desktop Card",
"mobileCard": "Mobile Card"
}, },
"pageGeneral": { "pageGeneral": {
"tip": "These settings are for the custom WebUI itself", "tip": "These settings are for the custom WebUI itself",
@ -196,37 +197,41 @@
"exportSettings": "Export Settings", "exportSettings": "Export Settings",
"resetSettings": "Reset Settings" "resetSettings": "Reset Settings"
}, },
"pageDashboard": { "pageDesktopCard": {
"busyTorrentTip": "Properties to display for busy torrents", "busyTorrentTip": "Properties to display for busy torrents on desktop",
"completedTorrentTip": "Properties to display for completed torrents", "completedTorrentTip": "Properties to display for completed torrents on desktop"
"properties": { },
"availability": "Availability", "pageMobileCard": {
"tracker": "Tracker", "busyTorrentTip": "Properties to display for busy torrents on mobile",
"category": "Category", "completedTorrentTip": "Properties to display for completed torrents on mobile"
"tags": "Tags", },
"completed": "Completed", "properties": {
"completion_on": "Completed On", "availability": "Availability",
"downloaded": "Downloaded", "tracker": "Tracker",
"ETA": "ETA", "category": "Category",
"name": "Name", "tags": "Tags",
"default": "Default", "completed": "Completed",
"last_activity": "Last Activity", "completion_on": "Completed On",
"peers": "Peers", "downloaded": "Downloaded",
"seeds": "Seeds", "ETA": "ETA",
"priority": "Priority", "name": "Name",
"progress": "Progress", "default": "Default",
"ratio": "Ratio", "last_activity": "Last Activity",
"save_path": "Directory", "peers": "Peers",
"size": "Size", "seeds": "Seeds",
"state": "State", "priority": "Priority",
"uploaded": "Uploaded", "progress": "Progress",
"addedOn": "Added On", "ratio": "Ratio",
"downloadSpeed": "Download Speed", "save_path": "Directory",
"timeActive": "Time Active", "size": "Size",
"uploadSpeed": "Upload Speed", "state": "State",
"globalSpeed": "Global Speed", "uploaded": "Uploaded",
"globalVolume": "Global Volume" "addedOn": "Added On",
} "downloadSpeed": "Download Speed",
"timeActive": "Time Active",
"uploadSpeed": "Upload Speed",
"globalSpeed": "Global Speed",
"globalVolume": "Global Volume"
} }
}, },
"pageDownloads": { "pageDownloads": {

View file

@ -47,9 +47,10 @@
"pageVueTorrent": { "pageVueTorrent": {
"tabName": {}, "tabName": {},
"pageGeneral": {}, "pageGeneral": {},
"pageDashboard": { "pageDesktopCard": {
"properties": {} "properties": {}
} },
"pageMobileCard": {}
}, },
"pageDownloads": { "pageDownloads": {
"whenAddTorrent": {}, "whenAddTorrent": {},

View file

@ -167,8 +167,7 @@
}, },
"pageVueTorrent": { "pageVueTorrent": {
"tabName": { "tabName": {
"general": "Général", "general": "Général"
"dashboard": "Tableau de bord"
}, },
"pageGeneral": { "pageGeneral": {
"tip": "Ces paramètres concernent la WebUI", "tip": "Ces paramètres concernent la WebUI",
@ -192,7 +191,7 @@
"exportSettings": "Exporter la configuration", "exportSettings": "Exporter la configuration",
"resetSettings": "Réinitialiser la configuration" "resetSettings": "Réinitialiser la configuration"
}, },
"pageDashboard": { "pageDesktopCard": {
"busyTorrentTip": "Propriétés à afficher pour les torrents occupés", "busyTorrentTip": "Propriétés à afficher pour les torrents occupés",
"completedTorrentTip": "Propriétés à afficher pour les torrents terminés", "completedTorrentTip": "Propriétés à afficher pour les torrents terminés",
"properties": { "properties": {
@ -219,7 +218,8 @@
"timeActive": "Temps actif", "timeActive": "Temps actif",
"uploadSpeed": "Vitesse d'upload" "uploadSpeed": "Vitesse d'upload"
} }
} },
"pageMobileCard": {}
}, },
"pageDownloads": { "pageDownloads": {
"subHeaderWhenAddTorrent": "Lors de l'ajout d'un torrent", "subHeaderWhenAddTorrent": "Lors de l'ajout d'un torrent",

View file

@ -122,8 +122,7 @@
}, },
"pageVueTorrent": { "pageVueTorrent": {
"tabName": { "tabName": {
"general": "Umum", "general": "Umum"
"dashboard": "Dashboard"
}, },
"pageGeneral": { "pageGeneral": {
"tip": "Pengaturan berikut hanya untuk WebUI kustom", "tip": "Pengaturan berikut hanya untuk WebUI kustom",
@ -142,11 +141,12 @@
"currentVersion": "Versi saat ini:", "currentVersion": "Versi saat ini:",
"qbittorrentVersion": "Versi qBittorrent:" "qbittorrentVersion": "Versi qBittorrent:"
}, },
"pageDashboard": { "pageDesktopCard": {
"busyTorrentTip": "Properti ditampilkan pada torrent yang sibuk", "busyTorrentTip": "Properti ditampilkan pada torrent yang sibuk",
"completedTorrentTip": "Properti ditampilkan pada torrent yang selesai", "completedTorrentTip": "Properti ditampilkan pada torrent yang selesai",
"properties": {} "properties": {}
} },
"pageMobileCard": {}
}, },
"pageDownloads": { "pageDownloads": {
"subHeaderWhenAddTorrent": "Saat menambahkan torrent", "subHeaderWhenAddTorrent": "Saat menambahkan torrent",

View file

@ -30,9 +30,10 @@
"pageVueTorrent": { "pageVueTorrent": {
"tabName": {}, "tabName": {},
"pageGeneral": {}, "pageGeneral": {},
"pageDashboard": { "pageDesktopCard": {
"properties": {} "properties": {}
} },
"pageMobileCard": {}
}, },
"pageDownloads": { "pageDownloads": {
"whenAddTorrent": {}, "whenAddTorrent": {},

View file

@ -123,8 +123,7 @@
}, },
"pageVueTorrent": { "pageVueTorrent": {
"tabName": { "tabName": {
"general": "一般", "general": "一般"
"dashboard": "ダッシュボード"
}, },
"pageGeneral": { "pageGeneral": {
"tip": "これらの設定は、このカスタム WebUI に対するものです", "tip": "これらの設定は、このカスタム WebUI に対するものです",
@ -141,11 +140,12 @@
"currentVersion": "現在のバージョン:", "currentVersion": "現在のバージョン:",
"qbittorrentVersion": "QBittorrentのバージョン:" "qbittorrentVersion": "QBittorrentのバージョン:"
}, },
"pageDashboard": { "pageDesktopCard": {
"busyTorrentTip": "稼働中のTorrentに表示されるプロパティ", "busyTorrentTip": "稼働中のTorrentに表示されるプロパティ",
"completedTorrentTip": "完了したTorrentに表示されるプロパティ", "completedTorrentTip": "完了したTorrentに表示されるプロパティ",
"properties": {} "properties": {}
} },
"pageMobileCard": {}
}, },
"pageDownloads": { "pageDownloads": {
"subHeaderWhenAddTorrent": "Torrentを追加したとき", "subHeaderWhenAddTorrent": "Torrentを追加したとき",

View file

@ -52,9 +52,10 @@
"pageVueTorrent": { "pageVueTorrent": {
"tabName": {}, "tabName": {},
"pageGeneral": {}, "pageGeneral": {},
"pageDashboard": { "pageDesktopCard": {
"properties": {} "properties": {}
} },
"pageMobileCard": {}
}, },
"pageDownloads": { "pageDownloads": {
"whenAddTorrent": {}, "whenAddTorrent": {},

View file

@ -52,9 +52,10 @@
"pageVueTorrent": { "pageVueTorrent": {
"tabName": {}, "tabName": {},
"pageGeneral": {}, "pageGeneral": {},
"pageDashboard": { "pageDesktopCard": {
"properties": {} "properties": {}
} },
"pageMobileCard": {}
}, },
"pageDownloads": { "pageDownloads": {
"whenAddTorrent": {}, "whenAddTorrent": {},

View file

@ -134,8 +134,7 @@
}, },
"pageVueTorrent": { "pageVueTorrent": {
"tabName": { "tabName": {
"general": "Общее", "general": "Общее"
"dashboard": "Панель"
}, },
"pageGeneral": { "pageGeneral": {
"tip": "Общие настройки пользовательского веб-интерфейса", "tip": "Общие настройки пользовательского веб-интерфейса",
@ -156,7 +155,7 @@
"qbittorrentVersion": "Версия QBittorrent:", "qbittorrentVersion": "Версия QBittorrent:",
"resetSettings": "Сбросить настройки" "resetSettings": "Сбросить настройки"
}, },
"pageDashboard": { "pageDesktopCard": {
"busyTorrentTip": "Свойства для отображения активных торрентов", "busyTorrentTip": "Свойства для отображения активных торрентов",
"completedTorrentTip": "Свойства для отображения завершенных торрентов", "completedTorrentTip": "Свойства для отображения завершенных торрентов",
"properties": { "properties": {
@ -174,7 +173,8 @@
"ratio": "Рейтинг", "ratio": "Рейтинг",
"size": "Размер" "size": "Размер"
} }
} },
"pageMobileCard": {}
}, },
"pageDownloads": { "pageDownloads": {
"subHeaderWhenAddTorrent": "При добавлении торрента", "subHeaderWhenAddTorrent": "При добавлении торрента",

View file

@ -90,7 +90,7 @@
"removeSelected": "Видалити вибрані торенти", "removeSelected": "Видалити вибрані торенти",
"openSettings": "Відкрити налаштування", "openSettings": "Відкрити налаштування",
"searchNew": "Шукати нові торенти", "searchNew": "Шукати нові торенти",
"rssArticles": "Переглянути заголовки RSS-стрічок" "rssArticles": "Переглянути заголовки RSS-стрічок"
}, },
"sessionStats": { "sessionStats": {
"tooltip": "З моменту останнього перезапуску qBittorrent" "tooltip": "З моменту останнього перезапуску qBittorrent"
@ -168,8 +168,7 @@
}, },
"pageVueTorrent": { "pageVueTorrent": {
"tabName": { "tabName": {
"general": "Загальне", "general": "Загальне"
"dashboard": "Панель"
}, },
"pageGeneral": { "pageGeneral": {
"tip": "Ці налаштування призначені для користувацького веб-інтерфейсу", "tip": "Ці налаштування призначені для користувацького веб-інтерфейсу",
@ -190,7 +189,7 @@
"qbittorrentVersion": "Версія QBittorrent:", "qbittorrentVersion": "Версія QBittorrent:",
"resetSettings": "Скинути налаштування" "resetSettings": "Скинути налаштування"
}, },
"pageDashboard": { "pageDesktopCard": {
"busyTorrentTip": "Властивості для відображення зайнятих торрентів", "busyTorrentTip": "Властивості для відображення зайнятих торрентів",
"completedTorrentTip": "Властивості для відображення завершених торрентів", "completedTorrentTip": "Властивості для відображення завершених торрентів",
"properties": { "properties": {
@ -220,7 +219,8 @@
"globalSpeed": "Загальна швидкість", "globalSpeed": "Загальна швидкість",
"globalVolume": "Загальний об'єм" "globalVolume": "Загальний об'єм"
} }
} },
"pageMobileCard": {}
}, },
"pageDownloads": { "pageDownloads": {
"subHeaderWhenAddTorrent": "Коли додається торент", "subHeaderWhenAddTorrent": "Коли додається торент",

View file

@ -149,8 +149,7 @@
}, },
"pageVueTorrent": { "pageVueTorrent": {
"tabName": { "tabName": {
"general": "Chung", "general": "Chung"
"dashboard": "Trang tổng quan"
}, },
"pageGeneral": { "pageGeneral": {
"tip": "Đây là các cài đặt dành riêng cho VueTorrent", "tip": "Đây là các cài đặt dành riêng cho VueTorrent",
@ -171,7 +170,7 @@
"qbittorrentVersion": "Phiên bản QBittorrent:", "qbittorrentVersion": "Phiên bản QBittorrent:",
"resetSettings": "Đặt lại cài đặt" "resetSettings": "Đặt lại cài đặt"
}, },
"pageDashboard": { "pageDesktopCard": {
"busyTorrentTip": "Các thuộc tính để hiển thị cho các torrent chưa hoàn thành", "busyTorrentTip": "Các thuộc tính để hiển thị cho các torrent chưa hoàn thành",
"completedTorrentTip": "Các thuộc tính để hiển thị cho các torrent đã hoàn thành", "completedTorrentTip": "Các thuộc tính để hiển thị cho các torrent đã hoàn thành",
"properties": { "properties": {
@ -201,7 +200,8 @@
"globalSpeed": "Global Speed", "globalSpeed": "Global Speed",
"globalVolume": "Global Volume" "globalVolume": "Global Volume"
} }
} },
"pageMobileCard": {}
}, },
"pageDownloads": { "pageDownloads": {
"subHeaderWhenAddTorrent": "Khi thêm một torrent", "subHeaderWhenAddTorrent": "Khi thêm một torrent",

View file

@ -143,8 +143,7 @@
}, },
"pageVueTorrent": { "pageVueTorrent": {
"tabName": { "tabName": {
"general": "常规", "general": "常规"
"dashboard": "面板"
}, },
"pageGeneral": { "pageGeneral": {
"tip": "这些设置适用于自定义 WebUI 本身", "tip": "这些设置适用于自定义 WebUI 本身",
@ -164,7 +163,7 @@
"currentVersion": "当前版本", "currentVersion": "当前版本",
"qbittorrentVersion": "QBittorrent 版本" "qbittorrentVersion": "QBittorrent 版本"
}, },
"pageDashboard": { "pageDesktopCard": {
"busyTorrentTip": "未完成的种子要显示的属性", "busyTorrentTip": "未完成的种子要显示的属性",
"completedTorrentTip": "已完成的种子要显示的属性", "completedTorrentTip": "已完成的种子要显示的属性",
"properties": { "properties": {
@ -191,7 +190,8 @@
"timeActive": "活跃时间", "timeActive": "活跃时间",
"uploadSpeed": "上传速率" "uploadSpeed": "上传速率"
} }
} },
"pageMobileCard": {}
}, },
"pageDownloads": { "pageDownloads": {
"subHeaderWhenAddTorrent": "当添加种子时", "subHeaderWhenAddTorrent": "当添加种子时",

View file

@ -143,8 +143,7 @@
}, },
"pageVueTorrent": { "pageVueTorrent": {
"tabName": { "tabName": {
"general": "一般", "general": "一般"
"dashboard": "Dashboard"
}, },
"pageGeneral": { "pageGeneral": {
"tip": "這些設定適用於自訂WebUI", "tip": "這些設定適用於自訂WebUI",
@ -165,7 +164,7 @@
"qbittorrentVersion": "QBittorrent 版本", "qbittorrentVersion": "QBittorrent 版本",
"resetSettings": "重置設定" "resetSettings": "重置設定"
}, },
"pageDashboard": { "pageDesktopCard": {
"busyTorrentTip": "未完成種子所顯示的屬性", "busyTorrentTip": "未完成種子所顯示的屬性",
"completedTorrentTip": "已完成種子所顯示的屬性", "completedTorrentTip": "已完成種子所顯示的屬性",
"properties": { "properties": {
@ -193,7 +192,8 @@
"timeActive": "經過時間", "timeActive": "經過時間",
"uploadSpeed": "上傳速率" "uploadSpeed": "上傳速率"
} }
} },
"pageMobileCard": {}
}, },
"pageDownloads": { "pageDownloads": {
"subHeaderWhenAddTorrent": "當新增種子時", "subHeaderWhenAddTorrent": "當新增種子時",

View file

@ -25,7 +25,7 @@ export default class Status {
this.freeDiskSpace = previous.freeDiskSpace this.freeDiskSpace = previous.freeDiskSpace
this.sessionDownloaded = previous.sessionDownloaded this.sessionDownloaded = previous.sessionDownloaded
this.sessionUploaded = previous.sessionUploaded this.sessionUploaded = previous.sessionUploaded
Object.freeze(this) Object.freeze(this)
return return
} }

View file

@ -1,82 +1,90 @@
import { JSONSchemaType } from 'ajv' import { JSONSchemaType } from 'ajv'
import { StoreState } from '@/types/vuetorrent' import { PersistentStoreState } from '@/types/vuetorrent'
import { DashboardProperty, TitleOptions } from '@/enums/vuetorrent' import { DashboardProperty, TitleOptions } from '@/enums/vuetorrent'
export const StoreStateSchema: JSONSchemaType<StoreState> = { export const StoreStateSchema: JSONSchemaType<PersistentStoreState> = {
type: "object", type: 'object',
properties: { properties: {
authenticated: {type: "boolean"}, authenticated: { type: 'boolean' },
sort_options: { sort_options: {
type: "object", type: 'object',
properties: { properties: {
isCustomSortEnabled: {type: "boolean"}, isCustomSortEnabled: { type: 'boolean' },
sort: {type: "string"}, sort: { type: 'string' },
reverse: {type: "boolean"}, reverse: { type: 'boolean' },
filter: {type: "string", nullable: true}, filter: { type: 'string', nullable: true },
category: {type: "string", nullable: true}, category: { type: 'string', nullable: true },
tag: {type: "string", nullable: true}, tag: { type: 'string', nullable: true },
tracker: {type: "string", nullable: true}, tracker: { type: 'string', nullable: true }
}, },
required: [ required: ['isCustomSortEnabled', 'sort', 'reverse', 'filter', 'category', 'tag', 'tracker']
"isCustomSortEnabled",
"sort",
"reverse",
"filter",
"category",
"tag",
"tracker"
]
}, },
webuiSettings: { webuiSettings: {
type: "object", type: 'object',
properties: { properties: {
lang: {type: "string"}, lang: { type: 'string' },
darkTheme: {type: "boolean"}, darkTheme: { type: 'boolean' },
showFreeSpace: {type: "boolean"}, showFreeSpace: { type: 'boolean' },
showSpeedGraph: {type: "boolean"}, showSpeedGraph: { type: 'boolean' },
showSessionStat: {type: "boolean"}, showSessionStat: { type: 'boolean' },
showAlltimeStat: {type: "boolean"}, showAlltimeStat: { type: 'boolean' },
showCurrentSpeed: {type: "boolean"}, showCurrentSpeed: { type: 'boolean' },
showTrackerFilter: {type: "boolean"}, showTrackerFilter: { type: 'boolean' },
showSpeedInTitle: {type: "boolean"}, showSpeedInTitle: { type: 'boolean' },
deleteWithFiles: {type: "boolean"}, deleteWithFiles: { type: 'boolean' },
title: { title: {
type: "string", type: 'string',
enum: [ enum: [TitleOptions.DEFAULT, TitleOptions.GLOBAL_SPEED, TitleOptions.FIRST_TORRENT_STATUS]
TitleOptions.DEFAULT,
TitleOptions.GLOBAL_SPEED,
TitleOptions.FIRST_TORRENT_STATUS
]
}, },
rightDrawer: {type: "boolean"}, rightDrawer: { type: 'boolean' },
topPagination: {type: "boolean"}, topPagination: { type: 'boolean' },
paginationSize: {type: "number"}, paginationSize: { type: 'number' },
dateFormat: {type: "string"}, dateFormat: { type: 'string' },
openSideBarOnStart: {type: "boolean"}, openSideBarOnStart: { type: 'boolean' },
busyTorrentProperties: {$ref: "/schemas/dashboardProperties"}, showShutdownButton: { type: 'boolean' },
doneTorrentProperties: {$ref: "/schemas/dashboardProperties"} busyDesktopTorrentProperties: { $ref: '/schemas/desktopDashboardProperties' },
} doneDesktopTorrentProperties: { $ref: '/schemas/desktopDashboardProperties' },
busyMobileCardProperties: { $ref: '/schemas/mobileDashboardProperties' },
doneMobileCardProperties: { $ref: '/schemas/mobileDashboardProperties' }
},
required: [
'lang',
'darkTheme',
'showFreeSpace',
'showSpeedGraph',
'showSessionStat',
'showAlltimeStat',
'showCurrentSpeed',
'showTrackerFilter',
'showSpeedInTitle',
'deleteWithFiles',
'title',
'rightDrawer',
'topPagination',
'paginationSize',
'dateFormat',
'openSideBarOnStart',
'showShutdownButton',
'busyDesktopTorrentProperties',
'doneDesktopTorrentProperties'
]
} }
}, },
required: [ required: ['sort_options', 'webuiSettings', 'authenticated'],
"sort_options",
"webuiSettings",
"authenticated"
],
additionalProperties: false, additionalProperties: false,
$defs: { $defs: {
DashboardProperties: { DesktopDashboardProperties: {
$id: "/schemas/dashboardProperties", $id: '/schemas/desktopDashboardProperties',
type: "array", type: 'array',
uniqueItems: true, uniqueItems: true,
minItems: 21, minItems: 21,
maxItems: 21, maxItems: 21,
items: { items: {
type: "object", type: 'object',
properties: { properties: {
name: { name: {
type: "string", type: 'string',
enum: [ enum: [
DashboardProperty.SIZE, DashboardProperty.SIZE,
DashboardProperty.PROGRESS, DashboardProperty.PROGRESS,
@ -89,7 +97,7 @@ export const StoreStateSchema: JSONSchemaType<StoreState> = {
DashboardProperty.PEERS, DashboardProperty.PEERS,
DashboardProperty.SEEDS, DashboardProperty.SEEDS,
DashboardProperty.STATUS, DashboardProperty.STATUS,
DashboardProperty.RAIO, DashboardProperty.RATIO,
DashboardProperty.TRACKER, DashboardProperty.TRACKER,
DashboardProperty.CATEGORY, DashboardProperty.CATEGORY,
DashboardProperty.TAGS, DashboardProperty.TAGS,
@ -101,9 +109,41 @@ export const StoreStateSchema: JSONSchemaType<StoreState> = {
DashboardProperty.GLOBAL_VOLUME DashboardProperty.GLOBAL_VOLUME
] ]
}, },
active: {type: "boolean"} active: { type: 'boolean' }
}, },
required: ["name", "active"] required: ['name', 'active']
}
},
MobileDashboardProperties: {
$id: '/schemas/mobileDashboardProperties',
type: 'array',
uniqueItems: true,
minItems: 13,
maxItems: 13,
items: {
type: 'object',
properties: {
name: {
type: 'string',
enum: [
DashboardProperty.SIZE,
DashboardProperty.PROGRESS,
DashboardProperty.DOWNLOAD,
DashboardProperty.UPLOAD,
DashboardProperty.ETA,
DashboardProperty.PEERS,
DashboardProperty.SEEDS,
DashboardProperty.STATUS,
DashboardProperty.RATIO,
DashboardProperty.UPLOADED,
DashboardProperty.TRACKER,
DashboardProperty.CATEGORY,
DashboardProperty.TAGS
]
},
active: { type: 'boolean' }
},
required: ['name', 'active']
} }
} }
} }

View file

@ -1,3 +1,3 @@
import {StoreStateSchema} from './StoreState' import { StoreStateSchema } from './StoreState'
export { StoreStateSchema } export { StoreStateSchema }

View file

@ -114,9 +114,10 @@ export class QBitApi {
} }
async getTorrentPeers(hash: string, rid?: number): Promise<TorrentPeersResponse> { async getTorrentPeers(hash: string, rid?: number): Promise<TorrentPeersResponse> {
return this.axios.get('/sync/torrentPeers', { return this.axios
params: { hash, rid } .get('/sync/torrentPeers', {
}) params: { hash, rid }
})
.then(r => r.data) .then(r => r.data)
} }
@ -141,7 +142,7 @@ export class QBitApi {
} }
async getAvailableTags(): Promise<string[]> { async getAvailableTags(): Promise<string[]> {
return this.axios.get('/torrents/tags').then(res => res.data.sort((a: string, b: string) => a.localeCompare(b.toLowerCase(), undefined, {sensitivity: 'base'}))) return this.axios.get('/torrents/tags').then(res => res.data.sort((a: string, b: string) => a.localeCompare(b.toLowerCase(), undefined, { sensitivity: 'base' })))
} }
async getTorrentProperties(hash: string): Promise<TorrentProperties> { async getTorrentProperties(hash: string): Promise<TorrentProperties> {
@ -512,9 +513,10 @@ export class QBitApi {
} }
async shutdownApp(): Promise<boolean> { async shutdownApp(): Promise<boolean> {
return this.axios.post("/app/shutdown") return this.axios
.then(() => true) .post('/app/shutdown')
.catch(() => false) .then(() => true)
.catch(() => false)
} }
} }

View file

@ -4,12 +4,12 @@ import VuexPersist from 'vuex-persist'
import actions from './actions' import actions from './actions'
import getters from './getters' import getters from './getters'
import mutations from './mutations' import mutations from './mutations'
import type { StoreState } from '@/types/vuetorrent' import type { StoreState, PersistentStoreState } from '@/types/vuetorrent'
import { Status } from '@/models' import { Status } from '@/models'
import { TitleOptions, DashboardProperty } from '@/enums/vuetorrent' import { TitleOptions, DashboardProperty } from '@/enums/vuetorrent'
import {AppPreferences} from '@/types/qbit/models' import { AppPreferences } from '@/types/qbit/models'
const vuexPersist = new VuexPersist<StoreState>({ const vuexPersist = new VuexPersist<PersistentStoreState>({
key: 'vuetorrent', key: 'vuetorrent',
storage: window.localStorage, storage: window.localStorage,
reducer: state => ({ reducer: state => ({
@ -22,7 +22,7 @@ const vuexPersist = new VuexPersist<StoreState>({
Vue.use(Vuex) Vue.use(Vuex)
// noinspection DuplicatedCode // noinspection DuplicatedCode
const propertiesTemplate = [ const desktopPropertiesTemplate = [
{ name: DashboardProperty.SIZE, active: true }, { name: DashboardProperty.SIZE, active: true },
{ name: DashboardProperty.PROGRESS, active: true }, { name: DashboardProperty.PROGRESS, active: true },
{ name: DashboardProperty.DOWNLOAD, active: true }, { name: DashboardProperty.DOWNLOAD, active: true },
@ -34,7 +34,7 @@ const propertiesTemplate = [
{ name: DashboardProperty.PEERS, active: true }, { name: DashboardProperty.PEERS, active: true },
{ name: DashboardProperty.SEEDS, active: true }, { name: DashboardProperty.SEEDS, active: true },
{ name: DashboardProperty.STATUS, active: true }, { name: DashboardProperty.STATUS, active: true },
{ name: DashboardProperty.RAIO, active: true }, { name: DashboardProperty.RATIO, active: true },
{ name: DashboardProperty.TRACKER, active: false }, { name: DashboardProperty.TRACKER, active: false },
{ name: DashboardProperty.CATEGORY, active: true }, { name: DashboardProperty.CATEGORY, active: true },
{ name: DashboardProperty.TAGS, active: true }, { name: DashboardProperty.TAGS, active: true },
@ -46,6 +46,22 @@ const propertiesTemplate = [
{ name: DashboardProperty.GLOBAL_VOLUME, active: false } { name: DashboardProperty.GLOBAL_VOLUME, active: false }
] ]
const mobilePropertiesTemplate = [
{ name: DashboardProperty.STATUS, active: true },
{ name: DashboardProperty.TRACKER, active: true },
{ name: DashboardProperty.CATEGORY, active: true },
{ name: DashboardProperty.TAGS, active: true },
{ name: DashboardProperty.SIZE, active: true },
{ name: DashboardProperty.PROGRESS, active: true },
{ name: DashboardProperty.RATIO, active: true },
{ name: DashboardProperty.UPLOADED, active: true },
{ name: DashboardProperty.ETA, active: true },
{ name: DashboardProperty.SEEDS, active: true },
{ name: DashboardProperty.PEERS, active: true },
{ name: DashboardProperty.DOWNLOAD, active: true },
{ name: DashboardProperty.UPLOAD, active: true }
]
export default new Vuex.Store<StoreState>({ export default new Vuex.Store<StoreState>({
plugins: [vuexPersist.plugin], plugins: [vuexPersist.plugin],
state: { state: {
@ -102,8 +118,10 @@ export default new Vuex.Store<StoreState>({
dateFormat: 'DD/MM/YYYY, HH:mm:ss', dateFormat: 'DD/MM/YYYY, HH:mm:ss',
openSideBarOnStart: true, openSideBarOnStart: true,
showShutdownButton: true, showShutdownButton: true,
busyTorrentProperties: JSON.parse(JSON.stringify(propertiesTemplate)), busyDesktopTorrentProperties: JSON.parse(JSON.stringify(desktopPropertiesTemplate)),
doneTorrentProperties: JSON.parse(JSON.stringify(propertiesTemplate)) doneDesktopTorrentProperties: JSON.parse(JSON.stringify(desktopPropertiesTemplate)),
busyMobileCardProperties: JSON.parse(JSON.stringify(mobilePropertiesTemplate)),
doneMobileCardProperties: JSON.parse(JSON.stringify(mobilePropertiesTemplate))
} }
}, },
// @ts-expect-error // @ts-expect-error

View file

@ -9,8 +9,13 @@ import type { Status } from '@/models'
import type WebUISettings from '@/types/vuetorrent/WebUISettings' import type WebUISettings from '@/types/vuetorrent/WebUISettings'
import type { SearchPlugin } from '@/types/qbit/models' import type { SearchPlugin } from '@/types/qbit/models'
export default interface StoreState { export interface PersistentStoreState {
authenticated: boolean authenticated: boolean
sort_options: SortOptions
webuiSettings: WebUISettings
}
export default interface StoreState extends PersistentStoreState {
categories: Category[] categories: Category[]
dashboard: { dashboard: {
currentPage: number currentPage: number
@ -30,12 +35,10 @@ export default interface StoreState {
selectMode: boolean selectMode: boolean
selected_torrents: string[] selected_torrents: string[]
settings: AppPreferences settings: AppPreferences
sort_options: SortOptions
status: Status status: Status
tags: string[] tags: string[]
torrents: Torrent[] torrents: Torrent[]
trackers: string[] trackers: string[]
upload_data: number[] upload_data: number[]
version: string version: string
webuiSettings: WebUISettings
} }

View file

@ -27,6 +27,8 @@ export default interface WebUISettings {
dateFormat: string dateFormat: string
openSideBarOnStart: boolean openSideBarOnStart: boolean
showShutdownButton: boolean showShutdownButton: boolean
busyTorrentProperties: TorrentProperty[] busyDesktopTorrentProperties: TorrentProperty[]
doneTorrentProperties: TorrentProperty[] doneDesktopTorrentProperties: TorrentProperty[]
busyMobileCardProperties: TorrentProperty[]
doneMobileCardProperties: TorrentProperty[]
} }

View file

@ -6,8 +6,9 @@ import type SearchResult from './search/SearchResult'
import type ModalTemplate from './ModalTemplate' import type ModalTemplate from './ModalTemplate'
import type SortOptions from './SortOptions' import type SortOptions from './SortOptions'
import type StoreState from './StoreState' import type StoreState from './StoreState'
import type { PersistentStoreState } from './StoreState'
import type { TreeNode, TreeFile, TreeFolder } from './TreeObjects' import type { TreeNode, TreeFile, TreeFolder } from './TreeObjects'
import type { TorrentProperty, TorrentPropertyLocalized } from '@/types/vuetorrent/WebUISettings' import type { TorrentProperty, TorrentPropertyLocalized } from './WebUISettings'
import type Tracker from './Tracker' import type Tracker from './Tracker'
export type ComponentRule = (value: string) => boolean | string export type ComponentRule = (value: string) => boolean | string
@ -20,6 +21,7 @@ export {
SearchResult, SearchResult,
ModalTemplate, ModalTemplate,
SortOptions, SortOptions,
PersistentStoreState,
StoreState, StoreState,
TreeNode, TreeNode,
TreeFile, TreeFile,

View file

@ -57,7 +57,7 @@ import { defineComponent } from 'vue'
import { FeedArticle } from '@/types/vuetorrent/rss' import { FeedArticle } from '@/types/vuetorrent/rss'
import { Feed, FeedRule } from '@/types/vuetorrent' import { Feed, FeedRule } from '@/types/vuetorrent'
import { mdiClose, mdiDownload, mdiEmailOpen } from '@mdi/js' import { mdiClose, mdiDownload, mdiEmailOpen } from '@mdi/js'
import qbit from "@/services/qbit"; import qbit from '@/services/qbit'
type RssState = { feeds: Feed[]; rules: FeedRule[] } type RssState = { feeds: Feed[]; rules: FeedRule[] }

View file

@ -1,13 +1,13 @@
import { describe, beforeEach, it, expect, vi } from 'vitest' import { describe, beforeEach, it, expect, vi } from 'vitest'
import { shallowMount } from '@vue/test-utils' import { shallowMount } from '@vue/test-utils'
import Dashboard from '@/components/Settings/Tabs/VueTorrent/Dashboard.vue' import DesktopCard from '@/components/Settings/Tabs/VueTorrent/VDesktopCard.vue'
let wrapper let wrapper
describe('Dashboard', () => { describe('DesktopCard', () => {
beforeEach(() => { beforeEach(() => {
wrapper = shallowMount(Dashboard, { wrapper = shallowMount(DesktopCard, {
mocks: { mocks: {
$t: x => x, $t: x => x,
$store: { $store: {
@ -27,7 +27,7 @@ describe('Dashboard', () => {
title: 'Default', title: 'Default',
rightDrawer: false, rightDrawer: false,
paginationSize: 15, paginationSize: 15,
busyTorrentProperties: [ busyDesktopTorrentProperties: [
{ name: 'Size', active: true }, { name: 'Size', active: true },
{ name: 'Progress', active: true }, { name: 'Progress', active: true },
{ name: 'Download', active: true }, { name: 'Download', active: true },
@ -44,7 +44,7 @@ describe('Dashboard', () => {
{ name: 'AddedOn', active: true }, { name: 'AddedOn', active: true },
{ name: 'Availability', active: true } { name: 'Availability', active: true }
], ],
doneTorrentProperties: [ doneDesktopTorrentProperties: [
{ name: 'Size', active: true }, { name: 'Size', active: true },
{ name: 'Progress', active: true }, { name: 'Progress', active: true },
{ name: 'Download', active: true }, { name: 'Download', active: true },
@ -72,8 +72,8 @@ describe('Dashboard', () => {
expect(wrapper.html()).toMatchSnapshot() expect(wrapper.html()).toMatchSnapshot()
}) })
it('tests busyTorrentProperties', () => { it('tests busyDesktopTorrentProperties', () => {
const busyTorrentProperties = [ const busyDesktopTorrentProperties = [
{ name: 'Size', label: 'Size', active: true }, { name: 'Size', label: 'Size', active: true },
{ name: 'Progress', label: 'Progress', active: true }, { name: 'Progress', label: 'Progress', active: true },
{ name: 'Download', label: 'Download Speed', active: true }, { name: 'Download', label: 'Download Speed', active: true },
@ -90,11 +90,11 @@ describe('Dashboard', () => {
{ name: 'AddedOn', label: 'Added On', active: true }, { name: 'AddedOn', label: 'Added On', active: true },
{ name: 'Availability', label: 'Availability', active: true } { name: 'Availability', label: 'Availability', active: true }
] ]
expect(wrapper.vm.busyTorrentProperties).toEqual(busyTorrentProperties) expect(wrapper.vm.busyDesktopTorrentProperties).toEqual(busyDesktopTorrentProperties)
}) })
it('tests doneTorrentProperties', () => { it('tests doneDesktopTorrentProperties', () => {
const doneTorrentProperties = [ const doneDesktopTorrentProperties = [
{ name: 'Size', label: 'Size', active: true }, { name: 'Size', label: 'Size', active: true },
{ name: 'Progress', label: 'Progress', active: true }, { name: 'Progress', label: 'Progress', active: true },
{ name: 'Download', label: 'Download Speed', active: true }, { name: 'Download', label: 'Download Speed', active: true },
@ -111,6 +111,6 @@ describe('Dashboard', () => {
{ name: 'AddedOn', label: 'Added On', active: true }, { name: 'AddedOn', label: 'Added On', active: true },
{ name: 'Availability', label: 'Availability', active: true } { name: 'Availability', label: 'Availability', active: true }
] ]
expect(wrapper.vm.doneTorrentProperties).toEqual(doneTorrentProperties) expect(wrapper.vm.doneDesktopTorrentProperties).toEqual(doneDesktopTorrentProperties)
}) })
}) })

View file

@ -1,10 +1,10 @@
// Vitest Snapshot v1 // Vitest Snapshot v1
exports[`Dashboard > render correctly 1`] = ` exports[`DesktopCard > render correctly 1`] = `
"<v-card-stub loaderheight=\\"4\\" tag=\\"div\\" flat=\\"true\\"> "<v-card-stub loaderheight=\\"4\\" tag=\\"div\\" flat=\\"true\\">
<v-row-stub tag=\\"div\\" dense=\\"true\\"> <v-row-stub tag=\\"div\\" dense=\\"true\\">
<v-col-stub cols=\\"12\\" md=\\"6\\" tag=\\"div\\"> <v-col-stub cols=\\"12\\" md=\\"6\\" tag=\\"div\\">
<v-subheader-stub> modals.settings.pageVueTorrent.pageDashboard.busyTorrentTip </v-subheader-stub> <v-subheader-stub> modals.settings.pageVueTorrent.pageDesktopCard.busyTorrentTip </v-subheader-stub>
<v-row-stub tag=\\"div\\" dense=\\"true\\"> <v-row-stub tag=\\"div\\" dense=\\"true\\">
<v-list-stub tag=\\"div\\" flat=\\"true\\" class=\\"ma-2 pa-0\\"> <v-list-stub tag=\\"div\\" flat=\\"true\\" class=\\"ma-2 pa-0\\">
<draggable-stub list=\\"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]\\" clone=\\"[Function]\\" element=\\"div\\" tag=\\"tbody\\"> <draggable-stub list=\\"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]\\" clone=\\"[Function]\\" element=\\"div\\" tag=\\"tbody\\">
@ -148,7 +148,7 @@ exports[`Dashboard > render correctly 1`] = `
</v-row-stub> </v-row-stub>
</v-col-stub> </v-col-stub>
<v-col-stub cols=\\"12\\" md=\\"6\\" tag=\\"div\\"> <v-col-stub cols=\\"12\\" md=\\"6\\" tag=\\"div\\">
<v-subheader-stub> modals.settings.pageVueTorrent.pageDashboard.completedTorrentTip </v-subheader-stub> <v-subheader-stub> modals.settings.pageVueTorrent.pageDesktopCard.completedTorrentTip </v-subheader-stub>
<v-row-stub tag=\\"div\\" dense=\\"true\\"> <v-row-stub tag=\\"div\\" dense=\\"true\\">
<v-list-stub tag=\\"div\\" flat=\\"true\\" class=\\"ma-2 pa-0\\"> <v-list-stub tag=\\"div\\" flat=\\"true\\" class=\\"ma-2 pa-0\\">
<draggable-stub list=\\"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]\\" clone=\\"[Function]\\" element=\\"div\\" tag=\\"tbody\\"> <draggable-stub list=\\"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]\\" clone=\\"[Function]\\" element=\\"div\\" tag=\\"tbody\\">