@jesec/flood 0.0.0-master.41ffe3b → 0.0.0-master.433ec24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/CHANGELOG.md +606 -103
  2. package/README.md +117 -43
  3. package/SECURITY.md +27 -0
  4. package/dist/assets/icon_128x128.png +0 -0
  5. package/dist/assets/icon_192x192.png +0 -0
  6. package/dist/assets/icon_256x256.png +0 -0
  7. package/dist/assets/icon_384x384.png +0 -0
  8. package/dist/assets/icon_512x512.png +0 -0
  9. package/dist/assets/icon_96x96.png +0 -0
  10. package/dist/assets/icon_maskable.png +0 -0
  11. package/dist/assets/icon_maskable_180x180.png +0 -0
  12. package/dist/assets/index.html +1 -1
  13. package/dist/assets/manifest.json +35 -7
  14. package/dist/assets/static/css/739.37bdb6f87f387ec14604.css +1 -0
  15. package/dist/assets/static/css/main.1e2641565fedeca72205.css +1 -0
  16. package/dist/assets/static/js/138.26e240df.chunk.js +1 -0
  17. package/dist/assets/static/js/256.b199545f.chunk.js +1 -0
  18. package/dist/assets/static/js/739.948f72f0.chunk.js +1 -0
  19. package/dist/assets/static/js/963.94abcb99.chunk.js +1 -0
  20. package/dist/assets/static/js/about.1e71e2aa.chunk.js +1 -0
  21. package/dist/assets/static/js/flag0.763da8de.chunk.js +1 -0
  22. package/dist/assets/static/js/flag1.d2b079d3.chunk.js +1 -0
  23. package/dist/assets/static/js/flag4.381ff3b4.chunk.js +1 -0
  24. package/dist/assets/static/js/flag8.3b6f1cb1.chunk.js +1 -0
  25. package/dist/assets/static/js/i18n0.bbba23c0.chunk.js +1 -0
  26. package/dist/assets/static/js/i18n1.525034ab.chunk.js +1 -0
  27. package/dist/assets/static/js/i18n10.04799933.chunk.js +1 -0
  28. package/dist/assets/static/js/i18n11.d3db204f.chunk.js +1 -0
  29. package/dist/assets/static/js/i18n12.9521b48f.chunk.js +1 -0
  30. package/dist/assets/static/js/i18n13.c8168e17.chunk.js +1 -0
  31. package/dist/assets/static/js/i18n14.9410308a.chunk.js +1 -0
  32. package/dist/assets/static/js/i18n15.1b73c9b5.chunk.js +1 -0
  33. package/dist/assets/static/js/i18n16.d878b440.chunk.js +1 -0
  34. package/dist/assets/static/js/i18n17.13747eb1.chunk.js +1 -0
  35. package/dist/assets/static/js/i18n18.5eaf9fbc.chunk.js +1 -0
  36. package/dist/assets/static/js/i18n19.dd724997.chunk.js +1 -0
  37. package/dist/assets/static/js/i18n2.314f9d9b.chunk.js +1 -0
  38. package/dist/assets/static/js/i18n20.73fe1003.chunk.js +1 -0
  39. package/dist/assets/static/js/i18n21.ddacc27d.chunk.js +1 -0
  40. package/dist/assets/static/js/i18n22.cfce8716.chunk.js +1 -0
  41. package/dist/assets/static/js/i18n23.2a7653e9.chunk.js +1 -0
  42. package/dist/assets/static/js/i18n24.8f60cf8b.chunk.js +1 -0
  43. package/dist/assets/static/js/i18n25.7daba586.chunk.js +1 -0
  44. package/dist/assets/static/js/i18n26.97969f67.chunk.js +1 -0
  45. package/dist/assets/static/js/i18n27.8637db59.chunk.js +1 -0
  46. package/dist/assets/static/js/i18n28.ded89a8a.chunk.js +1 -0
  47. package/dist/assets/static/js/i18n3.47250d33.chunk.js +1 -0
  48. package/dist/assets/static/js/i18n4.dd4ca73b.chunk.js +1 -0
  49. package/dist/assets/static/js/i18n5.1788a7d3.chunk.js +1 -0
  50. package/dist/assets/static/js/i18n6.de9fcab7.chunk.js +1 -0
  51. package/dist/assets/static/js/i18n8.6320258a.chunk.js +1 -0
  52. package/dist/assets/static/js/i18n9.c97c17ff.chunk.js +1 -0
  53. package/dist/assets/static/js/main.3036f71a.js +1 -0
  54. package/dist/index.js +145863 -0
  55. package/package.json +211 -130
  56. package/config.js +0 -173
  57. package/dist/assets/android-chrome-192x192.png +0 -0
  58. package/dist/assets/android-chrome-512x512.png +0 -0
  59. package/dist/assets/apple-touch-icon.png +0 -0
  60. package/dist/assets/asset-manifest.json +0 -229
  61. package/dist/assets/browserconfig.xml +0 -9
  62. package/dist/assets/favicon-16x16.png +0 -0
  63. package/dist/assets/favicon-32x32.png +0 -0
  64. package/dist/assets/mstile-144x144.png +0 -0
  65. package/dist/assets/mstile-150x150.png +0 -0
  66. package/dist/assets/mstile-310x150.png +0 -0
  67. package/dist/assets/mstile-310x310.png +0 -0
  68. package/dist/assets/mstile-70x70.png +0 -0
  69. package/dist/assets/static/js/main.7d6cc329.js +0 -339
  70. package/dist/assets/static/media/ABOUT.d02918c9.md +0 -13
  71. package/dist/assets/static/media/Roboto-500.64e69384.woff +0 -0
  72. package/dist/assets/static/media/Roboto-500.7f8f0146.eot +0 -0
  73. package/dist/assets/static/media/Roboto-500.916656a2.ttf +0 -0
  74. package/dist/assets/static/media/Roboto-500.abd255e8.svg +0 -305
  75. package/dist/assets/static/media/Roboto-700.8d11d1e1.ttf +0 -0
  76. package/dist/assets/static/media/Roboto-700.9c9c164e.svg +0 -310
  77. package/dist/assets/static/media/Roboto-700.c65552c8.eot +0 -0
  78. package/dist/assets/static/media/Roboto-700.ee82bda2.woff +0 -0
  79. package/dist/assets/static/media/Roboto-700italic.1dc5bfed.eot +0 -0
  80. package/dist/assets/static/media/Roboto-700italic.686da014.woff +0 -0
  81. package/dist/assets/static/media/Roboto-700italic.896656dc.ttf +0 -0
  82. package/dist/assets/static/media/Roboto-700italic.cacb9681.svg +0 -325
  83. package/dist/assets/static/media/Roboto-italic.09ed2f27.svg +0 -323
  84. package/dist/assets/static/media/Roboto-italic.c1421604.woff +0 -0
  85. package/dist/assets/static/media/Roboto-italic.c38ecad2.ttf +0 -0
  86. package/dist/assets/static/media/Roboto-italic.f7677a07.eot +0 -0
  87. package/dist/assets/static/media/Roboto-regular.5107f918.eot +0 -0
  88. package/dist/assets/static/media/Roboto-regular.6a307cf2.woff +0 -0
  89. package/dist/assets/static/media/Roboto-regular.81dc9b21.ttf +0 -0
  90. package/dist/assets/static/media/Roboto-regular.bcf2ba9e.svg +0 -308
  91. package/run/db/README.md +0 -3
  92. package/run/temp/README.md +0 -3
  93. package/server/.eslintrc.js +0 -15
  94. package/server/app.js +0 -88
  95. package/server/bin/enforce-prerequisites.js +0 -63
  96. package/server/bin/migrations/fix-is-admin-flag.js +0 -49
  97. package/server/bin/migrations/per-user-rtorrent-instances.js +0 -76
  98. package/server/bin/migrations/run.js +0 -8
  99. package/server/bin/start.js +0 -16
  100. package/server/bin/web-server.js +0 -98
  101. package/server/config/passport.js +0 -36
  102. package/server/constants/clientGatewayServiceEvents.js +0 -12
  103. package/server/constants/diskUsageServiceEvents.js +0 -5
  104. package/server/constants/fileListPropMap.js +0 -34
  105. package/server/constants/historyServiceEvents.js +0 -17
  106. package/server/constants/notificationServiceEvents.js +0 -5
  107. package/server/constants/taxonomyServiceEvents.js +0 -5
  108. package/server/constants/torrentListPropMap.js +0 -247
  109. package/server/constants/torrentServiceEvents.js +0 -5
  110. package/server/constants/transferSummaryPropMap.js +0 -33
  111. package/server/middleware/appendUserServices.js +0 -6
  112. package/server/middleware/booleanCoerce.js +0 -9
  113. package/server/middleware/clientActivityStream.js +0 -150
  114. package/server/middleware/eventStream.js +0 -27
  115. package/server/middleware/requireAdmin.js +0 -6
  116. package/server/models/ClientRequest.js +0 -389
  117. package/server/models/Feed.js +0 -74
  118. package/server/models/Filesystem.js +0 -45
  119. package/server/models/HistoryEra.js +0 -205
  120. package/server/models/ServerEvent.js +0 -32
  121. package/server/models/TemporaryStorage.js +0 -20
  122. package/server/models/Users.js +0 -188
  123. package/server/models/client.js +0 -435
  124. package/server/models/settings.js +0 -138
  125. package/server/routes/api.js +0 -86
  126. package/server/routes/auth.js +0 -213
  127. package/server/routes/client.js +0 -120
  128. package/server/services/BaseService.js +0 -22
  129. package/server/services/clientGatewayService.js +0 -265
  130. package/server/services/clientRequestManager.js +0 -83
  131. package/server/services/diskUsageService.js +0 -155
  132. package/server/services/feedService.js +0 -363
  133. package/server/services/historyService.js +0 -212
  134. package/server/services/index.js +0 -127
  135. package/server/services/notificationService.js +0 -125
  136. package/server/services/taxonomyService.js +0 -133
  137. package/server/services/torrentService.js +0 -283
  138. package/server/util/ajaxUtil.js +0 -21
  139. package/server/util/clientResponseUtil.js +0 -127
  140. package/server/util/fileUtil.js +0 -47
  141. package/server/util/mediainfo.js +0 -38
  142. package/server/util/methodCallUtil.js +0 -28
  143. package/server/util/minifyUtil.js +0 -0
  144. package/server/util/numberUtils.js +0 -6
  145. package/server/util/rTorrentDeserializer.js +0 -109
  146. package/server/util/rTorrentPropMap.js +0 -12
  147. package/server/util/scgiUtil.js +0 -43
  148. package/server/util/torrentFileUtil.js +0 -24
  149. package/server/views/error.pug +0 -6
  150. package/server/views/layout.pug +0 -6
  151. package/shared/config/paths.js +0 -30
  152. package/shared/constants/clientSettingsMap.js +0 -101
  153. package/shared/constants/diffActionTypes.js +0 -7
  154. package/shared/constants/historySnapshotTypes.js +0 -12
  155. package/shared/constants/serverEventTypes.js +0 -19
  156. package/shared/constants/torrentFilePropsMap.js +0 -6
  157. package/shared/constants/torrentPeerPropsMap.js +0 -32
  158. package/shared/constants/torrentStatusMap.js +0 -19
  159. package/shared/constants/torrentTrackerPropsMap.js +0 -6
  160. package/shared/util/formatUtil.js +0 -71
  161. package/shared/util/objectUtil.js +0 -72
  162. package/shared/util/regEx.js +0 -7
  163. package/shared/util/stringUtil.js +0 -16
  164. /package/dist/assets/{safari-pinned-tab.svg → icon.svg} +0 -0
  165. /package/dist/assets/static/{images/flags/ad.png → media/ad.1b24595d.png} +0 -0
  166. /package/dist/assets/static/{images/flags/ae.png → media/ae.4dd8f55e.png} +0 -0
  167. /package/dist/assets/static/{images/flags/af.png → media/af.4ce660eb.png} +0 -0
  168. /package/dist/assets/static/{images/flags/ag.png → media/ag.fd9409e4.png} +0 -0
  169. /package/dist/assets/static/{images/flags/al.png → media/al.a297aacf.png} +0 -0
  170. /package/dist/assets/static/{images/flags/am.png → media/am.c84ee0cf.png} +0 -0
  171. /package/dist/assets/static/{images/flags/ao.png → media/ao.a7c9214e.png} +0 -0
  172. /package/dist/assets/static/{images/flags/ar.png → media/ar.7e57ef92.png} +0 -0
  173. /package/dist/assets/static/{images/flags/at.png → media/at.5aa9728a.png} +0 -0
  174. /package/dist/assets/static/{images/flags/au.png → media/au.155b51d8.png} +0 -0
  175. /package/dist/assets/static/{images/flags/az.png → media/az.63afef5b.png} +0 -0
  176. /package/dist/assets/static/{images/flags/ba.png → media/ba.5ce8f273.png} +0 -0
  177. /package/dist/assets/static/{images/flags/bb.png → media/bb.f369fc62.png} +0 -0
  178. /package/dist/assets/static/{images/flags/bd.png → media/bd.516278fc.png} +0 -0
  179. /package/dist/assets/static/{images/flags/be.png → media/be.08ec4a8d.png} +0 -0
  180. /package/dist/assets/static/{images/flags/bf.png → media/bf.50bfcb31.png} +0 -0
  181. /package/dist/assets/static/{images/flags/bg.png → media/bg.d9346b96.png} +0 -0
  182. /package/dist/assets/static/{images/flags/bh.png → media/bh.f06d5914.png} +0 -0
  183. /package/dist/assets/static/{images/flags/bi.png → media/bi.4923e3a3.png} +0 -0
  184. /package/dist/assets/static/{images/flags/bj.png → media/bj.019fa79b.png} +0 -0
  185. /package/dist/assets/static/{images/flags/bn.png → media/bn.077671e2.png} +0 -0
  186. /package/dist/assets/static/{images/flags/bo.png → media/bo.8fb15fc6.png} +0 -0
  187. /package/dist/assets/static/{images/flags/br.png → media/br.ec051f0c.png} +0 -0
  188. /package/dist/assets/static/{images/flags/bs.png → media/bs.a74a126f.png} +0 -0
  189. /package/dist/assets/static/{images/flags/bt.png → media/bt.4217b804.png} +0 -0
  190. /package/dist/assets/static/{images/flags/bw.png → media/bw.21fe1567.png} +0 -0
  191. /package/dist/assets/static/{images/flags/by.png → media/by.d247fe16.png} +0 -0
  192. /package/dist/assets/static/{images/flags/bz.png → media/bz.98ec59f6.png} +0 -0
  193. /package/dist/assets/static/{images/flags/ca.png → media/ca.25743e11.png} +0 -0
  194. /package/dist/assets/static/{images/flags/cd.png → media/cd.a5bfda53.png} +0 -0
  195. /package/dist/assets/static/{images/flags/cf.png → media/cf.de7d5d92.png} +0 -0
  196. /package/dist/assets/static/{images/flags/cg.png → media/cg.a47b626b.png} +0 -0
  197. /package/dist/assets/static/{images/flags/ch.png → media/ch.445f47a1.png} +0 -0
  198. /package/dist/assets/static/{images/flags/ci.png → media/ci.a6009c5b.png} +0 -0
  199. /package/dist/assets/static/{images/flags/cl.png → media/cl.de1d715e.png} +0 -0
  200. /package/dist/assets/static/{images/flags/cm.png → media/cm.3ce8a86a.png} +0 -0
  201. /package/dist/assets/static/{images/flags/cn.png → media/cn.e6a26073.png} +0 -0
  202. /package/dist/assets/static/{images/flags/co.png → media/co.e9244faa.png} +0 -0
  203. /package/dist/assets/static/{images/flags/cr.png → media/cr.c895e035.png} +0 -0
  204. /package/dist/assets/static/{images/flags/cu.png → media/cu.e486c055.png} +0 -0
  205. /package/dist/assets/static/{images/flags/cv.png → media/cv.a9585acf.png} +0 -0
  206. /package/dist/assets/static/{images/flags/cw.png → media/cw.df13039d.png} +0 -0
  207. /package/dist/assets/static/{images/flags/cy.png → media/cy.b31f43a9.png} +0 -0
  208. /package/dist/assets/static/{images/flags/cz.png → media/cz.8ec5948b.png} +0 -0
  209. /package/dist/assets/static/{images/flags/de.png → media/de.d12f391a.png} +0 -0
  210. /package/dist/assets/static/{images/flags/dj.png → media/dj.154c3580.png} +0 -0
  211. /package/dist/assets/static/{images/flags/dk.png → media/dk.da382fe2.png} +0 -0
  212. /package/dist/assets/static/{images/flags/dm.png → media/dm.f452e6cd.png} +0 -0
  213. /package/dist/assets/static/{images/flags/do.png → media/do.c6bd7637.png} +0 -0
  214. /package/dist/assets/static/{images/flags/dz.png → media/dz.672a69c0.png} +0 -0
  215. /package/dist/assets/static/{images/flags/ec.png → media/ec.349d9bd7.png} +0 -0
  216. /package/dist/assets/static/{images/flags/ee.png → media/ee.2396205f.png} +0 -0
  217. /package/dist/assets/static/{images/flags/eg.png → media/eg.ccbf3f45.png} +0 -0
  218. /package/dist/assets/static/{images/flags/eh.png → media/eh.af65674a.png} +0 -0
  219. /package/dist/assets/static/{images/flags/er.png → media/er.21afb638.png} +0 -0
  220. /package/dist/assets/static/{images/flags/es.png → media/es.2a6eaee4.png} +0 -0
  221. /package/dist/assets/static/{images/flags/et.png → media/et.8beb65c8.png} +0 -0
  222. /package/dist/assets/static/{images/flags/fi.png → media/fi.331f70fd.png} +0 -0
  223. /package/dist/assets/static/{images/flags/fj.png → media/fj.7724d800.png} +0 -0
  224. /package/dist/assets/static/{images/flags/fm.png → media/fm.eeaf71e9.png} +0 -0
  225. /package/dist/assets/static/{images/flags/fr.png → media/fr.5d5ab008.png} +0 -0
  226. /package/dist/assets/static/{images/flags/ga.png → media/ga.77ed474c.png} +0 -0
  227. /package/dist/assets/static/{images/flags/gb.png → media/gb.e00065bf.png} +0 -0
  228. /package/dist/assets/static/{images/flags/gd.png → media/gd.b4522267.png} +0 -0
  229. /package/dist/assets/static/{images/flags/ge.png → media/ge.91a7654d.png} +0 -0
  230. /package/dist/assets/static/{images/flags/gh.png → media/gh.4759f92f.png} +0 -0
  231. /package/dist/assets/static/{images/flags/gm.png → media/gm.81cd9f75.png} +0 -0
  232. /package/dist/assets/static/{images/flags/gn.png → media/gn.9f3d376e.png} +0 -0
  233. /package/dist/assets/static/{images/flags/gq.png → media/gq.e8ad58be.png} +0 -0
  234. /package/dist/assets/static/{images/flags/gr.png → media/gr.26f3ac0b.png} +0 -0
  235. /package/dist/assets/static/{images/flags/gt.png → media/gt.9d81c52e.png} +0 -0
  236. /package/dist/assets/static/{images/flags/gw.png → media/gw.dc906982.png} +0 -0
  237. /package/dist/assets/static/{images/flags/gy.png → media/gy.a4f62b6c.png} +0 -0
  238. /package/dist/assets/static/{images/flags/hk.png → media/hk.56555c3f.png} +0 -0
  239. /package/dist/assets/static/{images/flags/hn.png → media/hn.64ee6aad.png} +0 -0
  240. /package/dist/assets/static/{images/flags/hr.png → media/hr.93ebecd3.png} +0 -0
  241. /package/dist/assets/static/{images/flags/ht.png → media/ht.42ca1596.png} +0 -0
  242. /package/dist/assets/static/{images/flags/hu.png → media/hu.bb30f05d.png} +0 -0
  243. /package/dist/assets/static/{images/flags/id.png → media/id.2cb49f2d.png} +0 -0
  244. /package/dist/assets/static/{images/flags/ie.png → media/ie.b4dd1f19.png} +0 -0
  245. /package/dist/assets/static/{images/flags/il.png → media/il.cd1d1faf.png} +0 -0
  246. /package/dist/assets/static/{images/flags/in.png → media/in.2df03847.png} +0 -0
  247. /package/dist/assets/static/{images/flags/iq.png → media/iq.a9b670ab.png} +0 -0
  248. /package/dist/assets/static/{images/flags/ir.png → media/ir.9a3de085.png} +0 -0
  249. /package/dist/assets/static/{images/flags/is.png → media/is.d88f4fc9.png} +0 -0
  250. /package/dist/assets/static/{images/flags/it.png → media/it.b73713e3.png} +0 -0
  251. /package/dist/assets/static/{images/flags/je.png → media/je.0353f56a.png} +0 -0
  252. /package/dist/assets/static/{images/flags/jm.png → media/jm.20330ef4.png} +0 -0
  253. /package/dist/assets/static/{images/flags/jo.png → media/jo.eb66f1d1.png} +0 -0
  254. /package/dist/assets/static/{images/flags/jp.png → media/jp.63e382ae.png} +0 -0
  255. /package/dist/assets/static/{images/flags/ke.png → media/ke.ab2e43b8.png} +0 -0
  256. /package/dist/assets/static/{images/flags/kg.png → media/kg.2c47c2af.png} +0 -0
  257. /package/dist/assets/static/{images/flags/kh.png → media/kh.4732c810.png} +0 -0
  258. /package/dist/assets/static/{images/flags/ki.png → media/ki.5fba09fd.png} +0 -0
  259. /package/dist/assets/static/{images/flags/km.png → media/km.7bbed3e9.png} +0 -0
  260. /package/dist/assets/static/{images/flags/kn.png → media/kn.a9595a16.png} +0 -0
  261. /package/dist/assets/static/{images/flags/kp.png → media/kp.8a4dc30a.png} +0 -0
  262. /package/dist/assets/static/{images/flags/kr.png → media/kr.5273be1d.png} +0 -0
  263. /package/dist/assets/static/{images/flags/ks.png → media/ks.99f78645.png} +0 -0
  264. /package/dist/assets/static/{images/flags/kw.png → media/kw.af3521bc.png} +0 -0
  265. /package/dist/assets/static/{images/flags/kz.png → media/kz.ea47ef79.png} +0 -0
  266. /package/dist/assets/static/{images/flags/la.png → media/la.78a598d7.png} +0 -0
  267. /package/dist/assets/static/{images/flags/lb.png → media/lb.7a7c15a9.png} +0 -0
  268. /package/dist/assets/static/{images/flags/lc.png → media/lc.6083a4ff.png} +0 -0
  269. /package/dist/assets/static/{images/flags/li.png → media/li.61c564a4.png} +0 -0
  270. /package/dist/assets/static/{images/flags/lk.png → media/lk.6fa85802.png} +0 -0
  271. /package/dist/assets/static/{images/flags/lr.png → media/lr.8063f7db.png} +0 -0
  272. /package/dist/assets/static/{images/flags/ls.png → media/ls.901ddb71.png} +0 -0
  273. /package/dist/assets/static/{images/flags/lt.png → media/lt.9209ace3.png} +0 -0
  274. /package/dist/assets/static/{images/flags/lu.png → media/lu.c9872bc1.png} +0 -0
  275. /package/dist/assets/static/{images/flags/lv.png → media/lv.7bcacf0a.png} +0 -0
  276. /package/dist/assets/static/{images/flags/ly.png → media/ly.2830aa63.png} +0 -0
  277. /package/dist/assets/static/{images/flags/ma.png → media/ma.ce5f697b.png} +0 -0
  278. /package/dist/assets/static/{images/flags/mc.png → media/mc.4bd5d57a.png} +0 -0
  279. /package/dist/assets/static/{images/flags/md.png → media/md.fb4b5bdf.png} +0 -0
  280. /package/dist/assets/static/{images/flags/me.png → media/me.1f1d1772.png} +0 -0
  281. /package/dist/assets/static/{images/flags/mg.png → media/mg.89101bd2.png} +0 -0
  282. /package/dist/assets/static/{images/flags/mh.png → media/mh.ff11dff7.png} +0 -0
  283. /package/dist/assets/static/{images/flags/mk.png → media/mk.8420e604.png} +0 -0
  284. /package/dist/assets/static/{images/flags/ml.png → media/ml.4db47c66.png} +0 -0
  285. /package/dist/assets/static/{images/flags/mm.png → media/mm.8e4ac30a.png} +0 -0
  286. /package/dist/assets/static/{images/flags/mn.png → media/mn.dc1daa04.png} +0 -0
  287. /package/dist/assets/static/{images/flags/mr.png → media/mr.7cbca6d0.png} +0 -0
  288. /package/dist/assets/static/{images/flags/mt.png → media/mt.28a4b863.png} +0 -0
  289. /package/dist/assets/static/{images/flags/mu.png → media/mu.d93db6c7.png} +0 -0
  290. /package/dist/assets/static/{images/flags/mv.png → media/mv.7d026bf1.png} +0 -0
  291. /package/dist/assets/static/{images/flags/mw.png → media/mw.960cd4fb.png} +0 -0
  292. /package/dist/assets/static/{images/flags/mx.png → media/mx.39b78eb2.png} +0 -0
  293. /package/dist/assets/static/{images/flags/my.png → media/my.916a8392.png} +0 -0
  294. /package/dist/assets/static/{images/flags/mz.png → media/mz.facb4ea3.png} +0 -0
  295. /package/dist/assets/static/{images/flags/na.png → media/na.472666a9.png} +0 -0
  296. /package/dist/assets/static/{images/flags/ne.png → media/ne.d774701f.png} +0 -0
  297. /package/dist/assets/static/{images/flags/ng.png → media/ng.7b06a49f.png} +0 -0
  298. /package/dist/assets/static/{images/flags/ni.png → media/ni.7140131c.png} +0 -0
  299. /package/dist/assets/static/{images/flags/nl.png → media/nl.4c04aa96.png} +0 -0
  300. /package/dist/assets/static/{images/flags/no.png → media/no.c19eb00d.png} +0 -0
  301. /package/dist/assets/static/{images/flags/np.png → media/np.54fb4f2f.png} +0 -0
  302. /package/dist/assets/static/{images/flags/nr.png → media/nr.7527cc38.png} +0 -0
  303. /package/dist/assets/static/{images/flags/nz.png → media/nz.738be05b.png} +0 -0
  304. /package/dist/assets/static/{images/flags/om.png → media/om.b25e0a17.png} +0 -0
  305. /package/dist/assets/static/{images/flags/pa.png → media/pa.b28a9059.png} +0 -0
  306. /package/dist/assets/static/{images/flags/pe.png → media/pe.c1fc1d96.png} +0 -0
  307. /package/dist/assets/static/{images/flags/pg.png → media/pg.380115db.png} +0 -0
  308. /package/dist/assets/static/{images/flags/ph.png → media/ph.02199ddc.png} +0 -0
  309. /package/dist/assets/static/{images/flags/pk.png → media/pk.094f9517.png} +0 -0
  310. /package/dist/assets/static/{images/flags/pl.png → media/pl.41521283.png} +0 -0
  311. /package/dist/assets/static/{images/flags/pt.png → media/pt.1f82dc04.png} +0 -0
  312. /package/dist/assets/static/{images/flags/pw.png → media/pw.a26c2316.png} +0 -0
  313. /package/dist/assets/static/{images/flags/py.png → media/py.926c65ed.png} +0 -0
  314. /package/dist/assets/static/{images/flags/qa.png → media/qa.c6a3c20e.png} +0 -0
  315. /package/dist/assets/static/{images/flags/ro.png → media/ro.a36876c9.png} +0 -0
  316. /package/dist/assets/static/{images/flags/rs.png → media/rs.c6629de8.png} +0 -0
  317. /package/dist/assets/static/{images/flags/ru.png → media/ru.a9b948c1.png} +0 -0
  318. /package/dist/assets/static/{images/flags/rw.png → media/rw.e8aecba0.png} +0 -0
  319. /package/dist/assets/static/{images/flags/sa.png → media/sa.859049c8.png} +0 -0
  320. /package/dist/assets/static/{images/flags/sb.png → media/sb.4ad27b27.png} +0 -0
  321. /package/dist/assets/static/{images/flags/sc.png → media/sc.3293efde.png} +0 -0
  322. /package/dist/assets/static/{images/flags/sd.png → media/sd.19c94faa.png} +0 -0
  323. /package/dist/assets/static/{images/flags/se.png → media/se.195b3f93.png} +0 -0
  324. /package/dist/assets/static/{images/flags/sg.png → media/sg.19d81907.png} +0 -0
  325. /package/dist/assets/static/{images/flags/si.png → media/si.367c5443.png} +0 -0
  326. /package/dist/assets/static/{images/flags/sk.png → media/sk.4e5b8a39.png} +0 -0
  327. /package/dist/assets/static/{images/flags/sl.png → media/sl.4b174b1c.png} +0 -0
  328. /package/dist/assets/static/{images/flags/sm.png → media/sm.2cba3dac.png} +0 -0
  329. /package/dist/assets/static/{images/flags/sn.png → media/sn.a4c1041d.png} +0 -0
  330. /package/dist/assets/static/{images/flags/so.png → media/so.b455e3bf.png} +0 -0
  331. /package/dist/assets/static/{images/flags/sr.png → media/sr.5adc1c00.png} +0 -0
  332. /package/dist/assets/static/{images/flags/st.png → media/st.5ae44155.png} +0 -0
  333. /package/dist/assets/static/{images/flags/sv.png → media/sv.43aa6cdf.png} +0 -0
  334. /package/dist/assets/static/{images/flags/sy.png → media/sy.0fbd24f7.png} +0 -0
  335. /package/dist/assets/static/{images/flags/sz.png → media/sz.ff204912.png} +0 -0
  336. /package/dist/assets/static/{images/flags/td.png → media/td.c7aa2a4e.png} +0 -0
  337. /package/dist/assets/static/{images/flags/tg.png → media/tg.857c3bec.png} +0 -0
  338. /package/dist/assets/static/{images/flags/th.png → media/th.683600c7.png} +0 -0
  339. /package/dist/assets/static/{images/flags/tj.png → media/tj.d20c5570.png} +0 -0
  340. /package/dist/assets/static/{images/flags/tl.png → media/tl.5edd8ea7.png} +0 -0
  341. /package/dist/assets/static/{images/flags/tm.png → media/tm.15960215.png} +0 -0
  342. /package/dist/assets/static/{images/flags/tn.png → media/tn.40df718e.png} +0 -0
  343. /package/dist/assets/static/{images/flags/to.png → media/to.c3b054df.png} +0 -0
  344. /package/dist/assets/static/{images/flags/tr.png → media/tr.adeace6d.png} +0 -0
  345. /package/dist/assets/static/{images/flags/tt.png → media/tt.839bd7f1.png} +0 -0
  346. /package/dist/assets/static/{images/flags/tv.png → media/tv.628cae3e.png} +0 -0
  347. /package/dist/assets/static/{images/flags/tw.png → media/tw.4e885914.png} +0 -0
  348. /package/dist/assets/static/{images/flags/tz.png → media/tz.b2f0dc37.png} +0 -0
  349. /package/dist/assets/static/{images/flags/ua.png → media/ua.6b103313.png} +0 -0
  350. /package/dist/assets/static/{images/flags/ug.png → media/ug.c84042fc.png} +0 -0
  351. /package/dist/assets/static/{images/flags/us.png → media/us.8523c31d.png} +0 -0
  352. /package/dist/assets/static/{images/flags/uy.png → media/uy.a943f85e.png} +0 -0
  353. /package/dist/assets/static/{images/flags/uz.png → media/uz.25552673.png} +0 -0
  354. /package/dist/assets/static/{images/flags/va.png → media/va.a29e1b53.png} +0 -0
  355. /package/dist/assets/static/{images/flags/vc.png → media/vc.7480bd37.png} +0 -0
  356. /package/dist/assets/static/{images/flags/ve.png → media/ve.fd4273c2.png} +0 -0
  357. /package/dist/assets/static/{images/flags/vn.png → media/vn.7d2eff1b.png} +0 -0
  358. /package/dist/assets/static/{images/flags/vu.png → media/vu.48b64cf3.png} +0 -0
  359. /package/dist/assets/static/{images/flags/ws.png → media/ws.f3d9202f.png} +0 -0
  360. /package/dist/assets/static/{images/flags/ye.png → media/ye.311a0e50.png} +0 -0
  361. /package/dist/assets/static/{images/flags/za.png → media/za.090a856f.png} +0 -0
  362. /package/dist/assets/static/{images/flags/zm.png → media/zm.8371e197.png} +0 -0
  363. /package/dist/assets/static/{images/flags/zw.png → media/zw.a6809447.png} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,111 +1,614 @@
1
- # Change Log
1
+ # Changelog
2
+
3
+ ## [4.8.2] (May 4, 2024)
4
+
5
+ nothing new, just a new release to for deb files.
6
+
7
+ ## [4.8.1] (May 4, 2024)
8
+
9
+ - feat: new args `--disable-rate-limit` to disable rate limit on api except login (#737)
10
+ - fix: only generate mediainfo for video file (#741)
11
+ - fix: `/metainfo` json response for error (#740)
12
+
13
+ ## [4.8.0] (April 24, 2024)
14
+
15
+ - fix(client): filter empty tags when setting/submitting tags (#715)
16
+ - fix(client): modal overflow on mobile (#713)
17
+ - fix(server): content-type on responding html (#708)
18
+ - fix(client): allows modal to grow when inner width exceeds container (#597)
19
+ - fix(client): misc styles (#691)
20
+ - fix(server): `@fastify/express` doesn't work with http2 (#705)
21
+ - fix(client): tracker filter size conditional render logic and react key prop (#702)
22
+ - fix: log error trace (#697)
23
+ - fix(server): handle number port (#692)
24
+ - feat(client): detect magnet and torrent links from clipboard (#690)
25
+ - server: remove port requirement, permit running on paths (#680)
26
+ - perf: mediainfo router should use async/await to get file info (#656)
27
+ - feat: use relative path in mediainfo info (#657)
28
+ - TorrentGeneralInfo: drop leading and trailing whitespaces from comment (#674)
29
+ - LinkedText: fix torrent comment line break (#667)
30
+ - server: rTorrent: manage request queue with p-queue - fix memory leak (#650)
31
+ - TransferRateGraph: explicitly declare width and height to 100%
32
+ - server: qBittorrent: use POST method for API calls
33
+ - server: qBittorrent: log in using POST method (#594)
34
+ - server: torrentService: normalize case of hash during torrent lookup
35
+ - TorrentListColumns: add "Finished" column (#565)
36
+ - styles: sortable-list: disallow selecting text in a list
37
+ - client: scripts: development: drop unnecessary browser popup
38
+ - MoveTorrentsModal: suggest longest common prefix as path
39
+ - server: rTorrent: throw error when file moving fails
40
+ - FilesystemBrowser: line break unconditionally for long paths
41
+ - TorrentListDropzone: pop up "Add Torrents" modal instead of adding directly
42
+ - server: rTorrent: avoid relying on type coercion of RPC value
43
+ - server: rTorrent: remove "hasLoadThrow" and fold into "isJSONCapable"
44
+ - server: ditch unmaintained "spdy"
45
+ - SortableList: switch to clauderic/dnd-kit
46
+ - server: drop databases before removing user
47
+ - server: switch to @seald/nedb
48
+ - server: tests: replace "ts-jest/utils" with "ts-jest"
49
+ - TorrentGeneralInfo: display "None" when there is no comment
50
+ - LinkedText: drop RegEx incompatible with Safari
51
+ - feature: display comment inside .torrent in torrent details (#541)
52
+ - TransferRateGraph: fix blank graph in some cases
53
+ - TorrentList: fix "a wild 0 appears"
54
+ - client: Fix regression introduced in PR #519, fixes #522 (#523)
55
+ - sidebar: make filter sections collapsible (#519)
56
+ - client: add page title speed display preference
57
+ - DownloadRulesTab, FeedsTab: force new component when editing
58
+ - server: add shebang to bundled executable
59
+ - Dockerfile: use the "npm run build" command
60
+ - server: create production build with webpack directly
61
+ - server: flatten directory structure a bit
62
+ - server: tests: ensure connectivity to client before tests
63
+ - server: tests: confirm deletion of torrents before continue
64
+ - client: reformat "typings.d.ts", fixup ffcc5c8e0
65
+ - server: tests: mock response to torrents fetch
66
+ - server: normalize fetching of torrents added with URL
67
+ - client: fix webpack devServer port selection
68
+ - styles: apply dark theme to TorrentListDropzone
69
+ - TorrentFilterStore: simplify and fix scroll to top on filter change
70
+ - client: allow multi-select of filters with Ctrl and Shift keys
71
+ - server: remove unused history snapshots and make it in-mem only
72
+ - TagFilters, TrackerFilters: fix filtering by tag/tracker
73
+ - client: remove unnecessary "UIActions" abstraction
74
+ - server: Transmission: normalize "unknown" ETA (-2) to infinity (-1) (#432)
75
+
76
+ ## [4.7.0] (October 9, 2021)
77
+
78
+ - Display total size by tag or tracker of torrents on sidebar (#369, @sabersalv)
79
+ - Improve memoization of "TorrentListRow" and "ProgressBar" components
80
+ - Fix loading indicator bar alignment (#396, @DopyConqueror)
81
+ - New translations
82
+ - Arabic, thanks to yngams
83
+ - Chinese Simplified, thanks to @davidxuang
84
+ - Czech, thanks to @Kedlub
85
+ - Italian, thanks to @GiorgioBrux
86
+ - German, thanks to @Kiina
87
+ - Japanese, thanks to @Kuri0421 and @Kiina
88
+ - Korean, thanks to @Kiina
89
+ - Polish, thanks to @retmas-gh
90
+ - Spanish, thanks to @oaknuggins
91
+ - Norwegian, thanks to Daddie0
92
+ - Bump dependencies
93
+
94
+ ## [4.6.1] (July 5, 2021)
95
+
96
+ - DiskUsage: skip mount points of "overlayfs" type (#341, @Trim21)
97
+ - Deluge:
98
+ - Avoid crashing Flood when there is a connection error
99
+ - Note again that Deluge support is still experimental
100
+ - Bug fixes:
101
+ - Cleanup synchronous patterns (#340)
102
+ - AuthForm: add missing i18n for "Username" and "Password" (#336)
103
+ - server: destroy user services before cleaning up data
104
+ - TorrentListCell: passthrough clicks
105
+ - New translations
106
+ - French, thanks to @foXaCe
107
+ - German, thanks to @chint95
108
+ - Korean, thanks to @Kiina
109
+ - Romanian, thanks to @T-z3P
110
+ - Bump dependencies
111
+
112
+ ## [4.6.0] (May 28, 2021)
113
+
114
+ - Experimental Deluge support
115
+ - caveat: tags are not supported at the moment
116
+ - Add "last active date" and "finished date" to the torrent properties
117
+ - Migrate stylesheets to SCSS module system
118
+ - Ditch inefficient "TRANSFER_SUMMARY_DIFF_CHANGE" SSE event
119
+ - Allow to download contents of multiple selected torrents
120
+ - Update base Node.js versions of single-executable builds
121
+ - rTorrent:
122
+ - Add torrents to rTorrent via socket
123
+ - qBittorrent:
124
+ - Improve performance by throttling concurrent requests
125
+ - Bug fixes:
126
+ - Fix memory leak and unreliability when the settings of a user is updated by simplifying service manager
127
+ - Pipe created torrent to response directly
128
+ - Security enhancements:
129
+ - Forbid non-owner access to runtime directory by default
130
+ - New translations
131
+ - Chinese (Simplified), thanks to @coxde
132
+ - Czech, thanks to @brezinajn
133
+ - German, thanks to @chint95
134
+ - Hungarian, thanks to @m3r3nix
135
+ - Korean, thanks to @Kiina
136
+ - Spanish, thanks to Zagon
137
+ - Bump dependencies
138
+
139
+ ## [4.5.4] (April 24, 2021)
140
+
141
+ - Bug fixes:
142
+ - "Torrents with long names get truncated in torrent detail modal (#273)" on Safari
143
+ - New translations
144
+ - Chinese (Simplified), thanks to @coxde
145
+ - Dutch, thanks to John Willemsen
146
+ - Italian, thanks to Simone De Nadai
147
+ - Bump dependencies
148
+
149
+ ## [4.5.3] (April 10, 2021)
150
+
151
+ - Bug fixes:
152
+ - Tags need a F5 refresh to be displayed after being set (#266)
153
+ - Torrents with long names get truncated in torrent detail modal (#273)
154
+ - qBittorrent: allow .torrent download with new session directory path (#275, @angristan)
155
+ - New translations
156
+ - French, thanks to @foXaCe
157
+ - Hungarian, thanks to @m3r3nix
158
+ - Japanese, thanks to @Kiina
159
+ - Korean, thanks to @Kiina
160
+ - Spanish, thanks to @Shutruk
161
+ - Bump dependencies
162
+
163
+ ## [4.5.2] (April 4, 2021)
164
+
165
+ - Add "Log Out" button to connection interrupted page
166
+ - Add "tini" init process to containers (#260, @onedr0p)
167
+ - Bug fixes:
168
+ - No longer fails to add some URLs to rTorrent with XMLRPC
169
+ - Fix `Connection settings can not be empty.` after submit
170
+ - Bump dependencies
171
+
172
+ ## [4.5.1] (March 31, 2021)
173
+
174
+ - Allow to press Ctrl-A or Command-A to select all torrents
175
+ - Enlarge width of "Torrent Details" modal
176
+ - Bug fixes:
177
+ - Fix multi-file "Move torrents" of rTorrent (XMLRPC)
178
+ - Don't close the notification panel when a button is clicked
179
+ - New translations
180
+ - Czech, thanks to @brezinajn
181
+ - Italian, thanks to @gmcinalli
182
+ - Korean, thanks to @Kiina and @m4ximuel
183
+ - Bump dependencies
184
+
185
+ ## [4.5.0] (March 14, 2021)
186
+
187
+ - Reannounce. Typically torrent clients do that automatically, but in some cases you may want to do it manually. It is available as a context menu action.
188
+ - Redesigned filesystem browser. Allow searching in the current directory and eliminate unnecessary requests sent to server. Additionally, navigation via arrow keys is implemented (mainly for accessibility but could be useful for anyone).
189
+ - Major accessibility enhancements. All elements are now navigable by keyboard.
190
+ - Improve scrolling performance by overscanning 30 rows.
191
+ - rTorrent:
192
+ - JSON-RPC support for eligible versions. Preliminary tests showed that, when compared with XMLRPC, JSON-RPC yields 2x performance, 15% lower total CPU time in rTorrent process, 33% lower total CPU time in Flood process.
193
+ - `load.throw` command support for eligible versions. Definitive response when you add torrents, so Flood won't display success when the operation actually fails.
194
+ - Better handle command failures.
195
+ - Verify filesystem access and respond with errors when necessary.
196
+ - Bug fixes:
197
+ - Fix French mistranslation
198
+ - Fix button location in download rules tab of feed modal
199
+ - Fix "Set tracker" of single tracker torrents in rTorrent
200
+ - Fix "Checking" bar selected style for dark color scheme
201
+ - Recognize qBittorrent's "Forced" state
202
+ - Disk usage service errors are no longer fatal
203
+ - New translations
204
+ - Chinese (Simplified), thanks to @MeetWq
205
+ - Chinese (Traditional), thanks to @vongola12324
206
+ - Czech, thanks to @brezinajn
207
+ - French, thanks to @Carryozor and @foXaCe
208
+ - German, thanks to @chint95
209
+ - Hungarian, thanks to @m3r3nix
210
+ - Romanian, thanks to @T-z3P
211
+ - Bump dependencies
212
+
213
+ ## [4.4.1] (February 6, 2021)
214
+
215
+ - Better handle tracker domain conversion and grouping
216
+ - Wrap texts (e.g. long IPv6 addresses and peer client versions) in tables of torrent details if necessary
217
+ - Distribution:
218
+ - CI now publishes releases to AUR (Arch Linux User Repository)
219
+ - CI now publishes Debian (`.deb`) packages to Github Releases
220
+ - Contributions are welcome. See [distribution/README.md](https://github.com/jesec/flood/blob/v4.4.1/distribution/README.md).
221
+ - rTorrent fixes:
222
+ - Remove [] from IPv6 addresses in peer list
223
+ - Bug fixes:
224
+ - Remove ugly outline and highlight of focused button caused by an a11y change
225
+ - Try to workaround potential index.html caching issues
226
+ - Browser uses a fully cached asset tree in some cases, which defeats cache busting by asset hashes
227
+ - New translations
228
+ - Finnish, thanks to @hyvamiesh
229
+ - German, thanks to @chint95
230
+ - Bump dependencies
231
+
232
+ ## [4.4.0] (February 2, 2021)
233
+
234
+ - Return a portable link when torrent content is requested
235
+ - Allow sharing of links to other people
236
+ - Allow casting (Chromecast, Airplay) of content to devices which can't authenticate with Flood
237
+ - Allow copying the link and paste it to a player application so more formats can be streamed
238
+ - Allow external downloaders to use the link
239
+ - Allow to register to handle magnet links in "Add by URL" panel
240
+ - Support for "add-urls" frontend query action is added
241
+ - e.g. `http://localhost:3000/?action=add-urls&url=magnet:?xt=`
242
+ - Allow to download .torrent file of a torrent
243
+ - Add sequential downloading support for applicable clients
244
+ - rTorrent: requires "d.down.sequential(.set)" commands, see [jesec/rtorrent@bd904e3](https://github.com/jesec/rtorrent/commit/bd904e366367cb9cbe007381089eea066253c9e9)
245
+ - qBittorrent: supported
246
+ - Transmission: rejected, see [https://trac.transmissionbt.com/ticket/452](https://trac.transmissionbt.com/ticket/452)
247
+ - Add initial seeding (aka superseeding) support for applicable clients
248
+ - [BEP16](https://www.bittorrent.org/beps/bep_0016.html)
249
+ - Saves bandwidth for initial seeder and quickly kicks off a healthy swarm
250
+ - NOT recommended for non-initial seeders
251
+ - rTorrent: not exposed to RPC interface, requires [jesec/rtorrent@657089d](https://github.com/jesec/rtorrent/commit/657089d438f917714c2386c28ce9d01a6e6a2737)
252
+ - qBittorrent: supported
253
+ - Transmission: not supported, see [https://trac.transmissionbt.com/ticket/1691](https://trac.transmissionbt.com/ticket/1691)
254
+ - Display existing tags in alphabetical order in tag selector
255
+ - Optionally skip assets serving with `--assets=false`
256
+ - May be useful for users who serve static assets from their own servers
257
+ - Or developers who don't want to build assets before starting a server instance
258
+ - Refresh manifest and assets related to PWA (Progressive Web Application) support
259
+ - Separate locale and language when using "Automatic" language setting
260
+ - Deal with minor locale differences (e.g. date formats) between language variants
261
+ - See [#123](https://github.com/jesec/flood/issues/123)
262
+ - Remove inconsistency of clients by normalizing hashes in API responses to upper case
263
+ - Explicitly pass paths of contents to mediainfo
264
+ - So unrelated files in the same folder won't be processed by mediainfo
265
+ - Remove dependency on shell in disk usage functions
266
+ - New distribution-less (distroless) Docker image is now available, which has smaller size and allows maximum security
267
+ - Standalone executable:
268
+ - Now available for `linux-arm64` and `win-arm64`
269
+ - Bundled Node.js runtime bumped to 14.15.4
270
+ - Linux binaries are now fully static
271
+ - Customized Node.js runtime with smaller size and memory consumption
272
+ - rTorrent fixes:
273
+ - Create destination directory structure before moving torrent
274
+ - Flood API responses no longer mixes with unprocessed rTorrent method call responses
275
+ - Properly handle multi tags while adding
276
+ - Remove torrents (with data) can delete empty directories
277
+ - qBittorrent fixes:
278
+ - Fix "isBasePath" for newer versions
279
+ - Implement "isCompleted" (skip_checking)
280
+ - Trim whitespace in `tags` property
281
+ - Optionally set website cookie for torrent fetching (add by URL)
282
+ - Security enhancements:
283
+ - Don't leak details of internal errors
284
+ - Rate limits /data API endpoint
285
+ - Bug fixes:
286
+ - Pack torrent contents one by one to avoid out-of-memory during batch downloading
287
+ - Potential crashes related to disk usage functions in rare Docker environments
288
+ - Disallow comma in tag
289
+ - New translations
290
+ - Chinese (Traditional), thanks to @vongola12324
291
+ - Czech, thanks to @brezinajn
292
+ - Dutch, thanks to @vain4us
293
+ - French, thanks to @Carryozor
294
+ - German, thanks to @Ben-Wallner
295
+ - Hungarian, thanks to @m3r3nix
296
+ - Romanian, thanks to @T-z3P
297
+ - Spanish, thanks to @almontegil
298
+ - Bump dependencies
299
+
300
+ Additionally, Sonarr [#4159](https://github.com/Sonarr/Sonarr/pull/4159) and Radarr [#5552](https://github.com/Radarr/Radarr/pull/5552) now supports Flood natively.
301
+
302
+ **Notes about sequential downloading:**
303
+
304
+ Drawbacks:
305
+
306
+ - https://wiki.vuze.com/w/Sequential_downloading_is_bad
307
+
308
+ Benefits:
309
+
310
+ - Sequential downloading helps with I/O performance and lowers resource consumption and cost of hardware. It enables predictable I/O patterns and efficient caching. My hard disk is really noisy while downloading a torrent. But with sequential downloading, it does not make a sound. Speed is much better as well. Sequential I/O patterns also eliminate disk fragmentation problem that damages performance/lifespan of hard disks in long-term, which is a headache for long seeders.
311
+ - "It is bad for swarms." That's correct for unhealthy swarms. However, for private torrent users, in most cases, the seeder/leecher relationship is "many seeder, single/little leecher". Plus, with the incentives/punishments of tracker sites, there is little to no risk of "draining". As such, it makes more sense to protect hardware of everyone in the swarm. Predictable I/O patterns also allow seeders to seed many torrents more efficiently: if leechers use sequential download, the read patterns become predictably sequential, which allows better I/O performance and reduces the failure rate of hard disks.
312
+ - For seedbox users: seedboxes are virtual machines. That means many users share the same physical machine. Random chunk downloading is extremely taxing on disks. As a result, usually the speeds are limited by I/O more than bandwidth. If the swarm pattern is usually "many seeder, single leecher", sequential downloading can help a lot.
313
+ - Widely known "self" benefits: stream early, stream while downloading, organize episodes quick and unpack some files before finish, etc.
314
+
315
+ ## [4.3.1] (December 10, 2020)
316
+
317
+ - Make theme button always at the bottom of sidebar
318
+ - Remove legacy font formats from static assets
319
+ - Slightly tweak styles of country flags in peer list
320
+ - Better accommodate longer flags
321
+ - Display country code on hover
322
+ - qBittorrent fixes:
323
+ - Attach cookies to URL downloads
324
+ - Set trackers
325
+ - Transmission fixes:
326
+ - Percentage downloaded of contents of a torrent
327
+ - Bug fixes:
328
+ - API call to get peer list of a non-existent torrent no longer crash Flood server
329
+ - Handle file not exist and access denied cases in content download
330
+ - Properly handle API call to update password of a user
331
+ - Security enhancements:
332
+ - Rate limit resource-intensive mediainfo request
333
+ - Ensure path is allowed for mediainfo request
334
+ - API call to list users no longer receive hashed passwords and client connection settings
335
+ - Note: only an authenticated admin user may list users
336
+ - New translations
337
+ - Czech, thanks to @brezinajn
338
+ - Romanian, thanks to @T-z3P
339
+ - Bump dependencies
340
+
341
+ ## [4.3.0] (December 1, 2020)
342
+
343
+ - Generate magnet link from torrent
344
+ - Add a button to allow user to switch color scheme
345
+ - Multi architecture Docker images
346
+ - linux/amd64
347
+ - linux/arm64 (new)
348
+ - linux/arm/v7 (new)
349
+ - Allow to display precise percentage
350
+ - Expanded view: 1 decimal place
351
+ - Details: 3 decimal places
352
+ - Mountpoints with very long paths are ignored by disk usage
353
+ - Tags can be attached while adding torrents to qBittorrent (needs qbittorrent/qBittorrent#13882)
354
+ - Bug fixes:
355
+ - Download destination fallback to rTorrent default destination (Mika-/torrent-control#105)
356
+ - Properly catch errors of AddFiles and AddURLs when using qBittorrent
357
+ - Display existing trackers in set trackers modal
358
+ - New translations
359
+ - Spanish, thanks to @vain4us
360
+ - Bump dependencies
361
+
362
+ Side note:
363
+
364
+ I am starting to maintain a distribution of rTorrent, available at [jesec/rtorrent](https://github.com/jesec/rtorrent). It is optimized and small. It uses modern CMake and Bazel build systems. Bazel can also be used for dependency management and to produce statically linked reproducible builds.
365
+
366
+ Static binaries (amd64, arm64) can be downloaded via [Github Actions](https://github.com/jesec/rtorrent/actions?query=workflow%3A%22Publish+rolling+build%22). Docker images are also available at [jesec/rtorrent](https://hub.docker.com/r/jesec/rtorrent).
367
+
368
+ I made a simple [Dockerfile](https://github.com/jesec/flood/blob/5cc56067c3be6c91ccf94f71d4784be99c2823f8/Dockerfile.rtorrent) to demonstrate how to integrate rTorrent with Flood.
369
+
370
+ ## [4.2.0] (November 25, 2020)
371
+
372
+ - Allow content of a torrent to be streamed directly if supported by browser
373
+ - New translations
374
+ - Chinese (Traditional), thanks to @vongola12324
375
+ - Dutch, thanks to @vain4us
376
+ - French, thanks to @Coosos
377
+ - Bump dependencies
378
+
379
+ ## [4.1.2] (November 21, 2020)
380
+
381
+ - qBittorrent fixes:
382
+ - Remove existing tags
383
+ - New translations
384
+ - Dutch, thanks to @vain4us
385
+ - German, thanks to @chint95
386
+
387
+ ## [4.1.1] (November 18, 2020)
388
+
389
+ - Transmission fixes:
390
+ - Set tags while adding torrents
391
+ - Set trackers
392
+ - New translations
393
+ - Czech, thanks to Jan Březina
394
+ - French, thanks to @Carryozor
395
+ - German, thanks to @chint95
396
+ - Romanian, thanks to @T-z3P
397
+
398
+ ## [4.1.0] (November 17, 2020)
399
+
400
+ ⚠️ Changes that may require manual attention: ⚠️
401
+
402
+ - Configuration is now schema validated before the start of Flood server
403
+ - No action required if you use (preferred and default) CLI configuration interface
404
+ - This ensures that when the config.js needs to be updated, the failure happens loud and early
405
+ - Check [shared/schema/Config.ts](https://github.com/jesec/flood/blob/master/shared/schema/Config.ts) for more details
406
+ - Enforces that the length of secret must be larger than 30
407
+ - Secret can be brute forced locally without interaction with the server
408
+ - However, an attacker must get a valid token (generated by proper authentication) first
409
+ - If all users are trusted, attackers have no way to get a valid token
410
+ - Secret is used to sign authentication tokens but it is NOT linked to the password
411
+ - Attacker may log into Flood as any user if they have the secret
412
+ - However, they are still constrained by capabilities and settings (such as `--allowedpath`) of Flood
413
+
414
+ Other changes:
415
+
416
+ - Tag selector preference:
417
+ - Single selection
418
+ - Multi selection
419
+ - UX enhancements to tag selector
420
+ - Suggest destination based on selected tag
421
+ - `add-urls` and `add-files` API endpoints no longer fail if `destination` property is not provided
422
+ - Download destination fallback has been implemented:
423
+ - Tag-specific preferred download destination
424
+ - Last used download destination
425
+ - Default download destination of connected torrent client
426
+ - This makes things easier for API users
427
+ - No direct impact on Flood itself
428
+ - Remember last used "Add Torrents" tab
429
+ - Remove center alignment of certain modals to align with global styles
430
+ - Disallow browser's input suggestion when tag selector or folder browser is open
431
+ - Don't pop up the browser menu on right click while context menu is open
432
+ - Experimental standalone (single-executable) builds
433
+ - New translations
434
+ - German, thanks to @chint95
435
+ - Romanian, thanks to @T-z3P
436
+ - Bump dependencies
437
+ - Bug fixes:
438
+ - Properly handle "error" alerts (display "❗" icon instead of "✅" icon)
439
+
440
+ ## [4.0.2] (November 11, 2020)
441
+
442
+ - New translations
443
+ - German, thanks to @chint95
444
+ - Romanian, thanks to @T-z3P
445
+
446
+ ## [4.0.1] (November 10, 2020)
447
+
448
+ - Fix the unreliable clear all notification button
449
+ - Bump dependencies
450
+
451
+ ## [4.0.0] (November 9, 2020)
452
+
453
+ - Experimental multi-client support
454
+ - qBittorrent
455
+ - Transmission
456
+ - Stabilized and documented public API endpoints
457
+ - Defined and documented internal interfaces, data structures and APIs
458
+ - Better documentation for users and developers
459
+ - Full migration to TypeScript
460
+ - Reasonable test coverages for API endpoints
461
+ - Torrent creation support
462
+ - Add torrents as completed
463
+ - Dropdown selector for existing tags
464
+ - Seeding status in status filter
465
+ - Set tracker URLs of torrents
466
+ - Improved handling of rendering, updating and scrolling of torrent list
467
+ - Preliminary tests show that Flood can now handle 500,000 torrents at least in the frontend.
468
+ - Note: real-world performance depends on other factors such as method call and deserialization operations in the backend and data transfer between backend and frontend.
469
+ - Better performance, less memory and CPU consumption in both frontend and backend
470
+ - New translations
471
+ - Chinese (Traditional), thanks to @vongola12324
472
+ - Czech, thanks to Jan Březina
473
+ - French, thanks to @Zopieux and @Mystere98
474
+ - German, thanks to @chint95
475
+ - Bug fixes
476
+ - Security enhancements
477
+ - Dockerfile revamp
478
+ - Native build tools no longer needed as native dependency is replaced with WebAssembly variant
479
+ - Server is packed before distribution, reduced number of dependencies in production, faster installation
2
480
 
3
481
  ## [3.1.0] (September 4, 2020)
4
- * Allow to replace main tracker of torrents
5
- * Allow adjustment of visible context menu items
6
- * config.cli: make all configs configurable by options and env
7
- * styles: properly set width of clipboard icon (fixes #26)
8
- * client: hide logout button when auth is disabled
9
- * Hungarian support (#21), thanks to @sfu420
10
- * New translations:
11
- * Chinese Traditional, thanks to @vongola12324
12
- * Czech, thanks to @brezina.jn
13
- * Portuguese, thanks to @Zamalor
14
- * Security enhancements:
15
- * Allow restriction on file operations by paths
16
- * Do not bypass authentication token validation with disableUsersAndAuth
17
- * server: prohibit Cross-Origin Resource Sharing
18
- * server: auth: strictly prohibit cross-site cookie
19
- * Minor security fixes:
20
- * rTorrentDeserializer: avoid double unescaping
21
- * SettingsModal: mergeObjects: prevent prototype pollution
22
- * server: setSettings: turn inboundTransformations into a Map to validate dynamic call
23
- * server: be explicit about client app routes
24
- * server: cache index.html into memory
25
- * Minor refactoring and other changes
26
- * Bump dependencies to the latest revisions
482
+
483
+ - Allow to replace main tracker of torrents
484
+ - Allow adjustment of visible context menu items
485
+ - config.cli: make all configs configurable by options and env
486
+ - styles: properly set width of clipboard icon (fixes #26)
487
+ - client: hide logout button when auth is disabled
488
+ - Hungarian support (#21), thanks to @m3r3nix
489
+ - New translations:
490
+ - Chinese Traditional, thanks to @vongola12324
491
+ - Czech, thanks to @brezina.jn
492
+ - Portuguese, thanks to @Zamalor
493
+ - Security enhancements:
494
+ - Allow restriction on file operations by paths
495
+ - Do not bypass authentication token validation with disableUsersAndAuth
496
+ - server: prohibit Cross-Origin Resource Sharing
497
+ - server: auth: strictly prohibit cross-site cookie
498
+ - Minor security fixes:
499
+ - rTorrentDeserializer: avoid double unescaping
500
+ - SettingsModal: mergeObjects: prevent prototype pollution
501
+ - server: setSettings: turn inboundTransformations into a Map to validate dynamic call
502
+ - server: be explicit about client app routes
503
+ - server: cache index.html into memory
504
+ - Minor refactoring and other changes
505
+ - Bump dependencies to the latest revisions
27
506
 
28
507
  ## [3.0.0] (August 25, 2020)
29
- * BREAKING CHANGES:
30
- * If `baseURI` is set, server will only respond to requests with baseURI. For instance, if you use `location /flood {proxy_pass http://127.0.0.1:3000;}`, you would have to change it to `location /flood {proxy_pass http://127.0.0.1:3000/flood;}`.
31
- * Static assets now use relative paths only. It is no longer needed to recompile after `baseURI` change.
32
- * Location of runtime files are rearranged. New default location for runtime files is `./run` folder. `tempPath` is now made configurable.
33
- * Static assets are relocated to `./dist` folder. You have to change the path from `./server/assets` to `./dist/assets` if you serve static assets from web server.
34
- * Flood will refuse to start if secrets are detected in static assets. Former default secret `flood` and some other weak secrets are no longer accepted.
35
- * A command line interface is added as `config.cli.js`. Rename it to `config.js` and run `npm run start -- --help` for more details.
36
- * With some changes, Flood is now ready for publish to `npm`. You can now use `sudo npm install -g flood` to get a ready-to-use copy of Flood, then run `flood`. It is even easier with `npx`, try `npx flood --help` now.
37
- * Better localization:
38
- * Flood project is now integrated with [Crowdin](https://crwd.in/flood), a renowned translation management system. It is now easier than ever to contribute your translations to Flood.
39
- * Language will now be automatically detected from your browser by default.
40
- * New languages are supported: `Čeština`, `Deutsch`, `italiano`, `norsk`, `Polskie`, `русский язык`, `Romanian`, `svenska`, `українська мова`, `日本語` and `اَلْعَرَبِيَّةُ` thanks to `Crowdin Machine Translation`.
41
- * New translations for `Chinese (Traditional)` thanks to @vongola12324.
42
- * New translations for `Dutch` thanks to @NLxDoDge.
43
- * New translations for `Portuguese` thanks to @MiguelNdeCarvalho.
44
- * Support for touch and smaller screen devices:
45
- * Sidebar is able to be collapsed via a button. It is collapsed by default when screen width is lower than `720px`.
46
- * Modals (Settings, Torrent Details, Add Torrent, etc.) are tuned for smaller screen devices.
47
- * It is now possible to open context (right click) menu on iOS/Safari devices by long pressing the item.
48
- * Drag and drop is now possible for touch devices. You can now adjust the order of columns in Settings on touch devices.
49
- * Widths of columns are now adjustable on touch devices. (condensed view)
50
- * Dark color scheme support:
51
- * Flood now automatically switches between light and dark color scheme based on your system settings.
52
- * XML special chars (`&`, `<`, `>`, `'`, `"`) are properly handled. For instance, escaped chars like `&` will be properly displayed as `&` instead of `&amp;`. File operations on torrent with special chars no longer fail.
53
- * `squashfs` and `tmpfs` mount points are now excluded by default in disk usage. This hopefully makes sure that useless system mounts won't spam the list.
54
- * `More Info` button in expanded view is removed.
55
- * More dependencies are bumped to the latest revisions.
508
+
509
+ - BREAKING CHANGES:
510
+ - If `baseURI` is set, server will only respond to requests with baseURI. For instance, if you use `location /flood {proxy_pass http://127.0.0.1:3000;}`, you would have to change it to `location /flood {proxy_pass http://127.0.0.1:3000/flood;}`.
511
+ - Static assets now use relative paths only. It is no longer needed to recompile after `baseURI` change.
512
+ - Location of runtime files are rearranged. New default location for runtime files is `./run` folder. `tempPath` is now made configurable.
513
+ - Static assets are relocated to `./dist` folder. You have to change the path from `./server/assets` to `./dist/assets` if you serve static assets from web server.
514
+ - Flood will refuse to start if secrets are detected in static assets. Former default secret `flood` and some other weak secrets are no longer accepted.
515
+ - A command line interface is added as `config.cli.js`. Rename it to `config.js` and run `npm run start -- --help` for more details.
516
+ - With some changes, Flood is now ready for publish to `npm`. You can now use `sudo npm install -g flood` to get a ready-to-use copy of Flood, then run `flood`. It is even easier with `npx`, try `npx flood --help` now.
517
+ - Better localization:
518
+ - Flood project is now integrated with [Crowdin](https://crwd.in/flood), a renowned translation management system. It is now easier than ever to contribute your translations to Flood.
519
+ - Language will now be automatically detected from your browser by default.
520
+ - New languages are supported: `Čeština`, `Deutsch`, `italiano`, `norsk`, `Polskie`, `русский язык`, `Romanian`, `svenska`, `українська мова`, `日本語` and `اَلْعَرَبِيَّةُ` thanks to `Crowdin Machine Translation`.
521
+ - New translations for `Chinese (Traditional)` thanks to @vongola12324.
522
+ - New translations for `Dutch` thanks to @NLxDoDge.
523
+ - New translations for `Portuguese` thanks to @MiguelNdeCarvalho.
524
+ - Support for touch and smaller screen devices:
525
+ - Sidebar is able to be collapsed via a button. It is collapsed by default when screen width is lower than `720px`.
526
+ - Modals (Settings, Torrent Details, Add Torrent, etc.) are tuned for smaller screen devices.
527
+ - It is now possible to open context (right click) menu on iOS/Safari devices by long pressing the item.
528
+ - Drag and drop is now possible for touch devices. You can now adjust the order of columns in Settings on touch devices.
529
+ - Widths of columns are now adjustable on touch devices. (condensed view)
530
+ - Dark color scheme support:
531
+ - Flood now automatically switches between light and dark color scheme based on your system settings.
532
+ - XML special chars (`&`, `<`, `>`, `'`, `"`) are properly handled. For instance, escaped chars like `&` will be properly displayed as `&` instead of `&amp;`. File operations on torrent with special chars no longer fail.
533
+ - `squashfs` and `tmpfs` mount points are now excluded by default in disk usage. This hopefully makes sure that useless system mounts won't spam the list.
534
+ - `More Info` button in expanded view is removed.
535
+ - More dependencies are bumped to the latest revisions.
56
536
 
57
537
  ## [2.0.0] (August 5, 2020)
58
- * BREAKING CHANGES:
59
- * Bump dependencies to the latest version if possible
60
- * Node 12 or later is now required
61
- * Supports connecting to multiple rtorrent instances (one per user)
62
- * Moved rtorrent configuration to user database
63
- * Prompts user for connection details in UI when can't connect to rtorrent
64
- * Changed `/list/` route to `/overview/`
65
- * Reorganized and renamed component source files
66
- * Removed verbose logging from `HistoryEra`
67
- * Check existing feed items against new download rules
68
- * Switch URL and Label textboxes in Add Feed form to match the Download Rules form
69
- * Rate-limit the SCGI calls to rTorrent
70
- * Sends only one call at a time
71
- * Sends at most one call every 250 miliseconds
72
- * Implement "actity stream"
73
- * The Flood client no longer polls the Flood server on an interval. Instead,
74
- the Flood server polls rTorrent on a more regular interval and emits changes
75
- via an event-stream. This significantly reduces data usage on the Flood client
76
- * Stream covers torrent list, transfer rate summary & history,
77
- torrent taxonomy, and notification count.
78
- * Close event stream after the window/tab has been inactive for 30 seconds
79
- * Refactor development experience, using `Webpack` & `WebpackDevServer`
80
- * Require users to build static assets again
81
- * Simplify peer geo flag handling
82
- * Flag images now serves as static asset
83
- * moveTorrents: Allow hash check to be skipped by user
84
- * Add an option to completely disable users and authentication
85
- * server: Takes baseURI into account for routes and assets
86
- * torrentListPropMap: use d.hashing= instead of d.is_hash_checking=
87
- * Torrents queued for checking are now shown
88
- * sidebar: Add Checking filter view
538
+
539
+ - BREAKING CHANGES:
540
+ - Bump dependencies to the latest version if possible
541
+ - Node 12 or later is now required
542
+ - Supports connecting to multiple rtorrent instances (one per user)
543
+ - Moved rtorrent configuration to user database
544
+ - Prompts user for connection details in UI when can't connect to rtorrent
545
+ - Changed `/list/` route to `/overview/`
546
+ - Reorganized and renamed component source files
547
+ - Removed verbose logging from `HistoryEra`
548
+ - Check existing feed items against new download rules
549
+ - Switch URL and Label textboxes in Add Feed form to match the Download Rules form
550
+ - Rate-limit the SCGI calls to rTorrent
551
+ - Sends only one call at a time
552
+ - Sends at most one call every 250 miliseconds
553
+ - Implement "actity stream"
554
+ - The Flood client no longer polls the Flood server on an interval. Instead,
555
+ the Flood server polls rTorrent on a more regular interval and emits changes
556
+ via an event-stream. This significantly reduces data usage on the Flood client
557
+ - Stream covers torrent list, transfer rate summary & history,
558
+ torrent taxonomy, and notification count.
559
+ - Close event stream after the window/tab has been inactive for 30 seconds
560
+ - Refactor development experience, using `Webpack` & `WebpackDevServer`
561
+ - Require users to build static assets again
562
+ - Simplify peer geo flag handling
563
+ - Flag images now serves as static asset
564
+ - moveTorrents: Allow hash check to be skipped by user
565
+ - Add an option to completely disable users and authentication
566
+ - server: Takes baseURI into account for routes and assets
567
+ - torrentListPropMap: use d.hashing= instead of d.is_hash_checking=
568
+ - Torrents queued for checking are now shown
569
+ - sidebar: Add Checking filter view
89
570
 
90
571
  ## [1.0.0] (April 21, 2017)
91
- * First "official" release
92
- * Change log and semver versioning (finally)
93
- * Control basic rTorrent settings via web UI
94
- * Transfer rate limiting
95
- * Connection settings
96
- * Resource utilization
97
- * Add torrents via URLs or files
98
- * User authentication
99
- * UI translations (only en, fr, and nl)
100
- * Custom torrent tags
101
- * Customizable torrent list
102
- * "Expanded" and "condensed" views
103
- * Customizable torrent detail columns
104
- * Basic torrent list filtering (by status, tag, and tracker)
105
- * Auto-download torrents from RSS feeds
106
-
107
- [Unreleased]:https://github.com/Flood-UI/flood/compare/v1.0.0...HEAD
108
- [1.0.0]:https://github.com/Flood-UI/flood/compare/ae520c0a33ffb4ae6f21e47bc6f7e6007dd1e6dc...v1.0.0
109
- [2.0.0]:https://github.com/jesec/flood/compare/v1.0.0...v2.0.0
110
- [3.0.0]:https://github.com/jesec/flood/compare/v2.0.0...v3.0.0
111
- [3.1.0]:https://github.com/jesec/flood/compare/v3.0.0...v3.1.0
572
+
573
+ - First "official" release
574
+ - Change log and semver versioning (finally)
575
+ - Control basic rTorrent settings via web UI
576
+ - Transfer rate limiting
577
+ - Connection settings
578
+ - Resource utilization
579
+ - Add torrents via URLs or files
580
+ - User authentication
581
+ - UI translations (only en, fr, and nl)
582
+ - Custom torrent tags
583
+ - Customizable torrent list
584
+ - "Expanded" and "condensed" views
585
+ - Customizable torrent detail columns
586
+ - Basic torrent list filtering (by status, tag, and tracker)
587
+ - Auto-download torrents from RSS feeds
588
+
589
+ [1.0.0]: https://github.com/Flood-UI/flood/compare/ae520c0a33ffb4ae6f21e47bc6f7e6007dd1e6dc...v1.0.0
590
+ [2.0.0]: https://github.com/jesec/flood/compare/v1.0.0...v2.0.0
591
+ [3.0.0]: https://github.com/jesec/flood/compare/v2.0.0...v3.0.0
592
+ [3.1.0]: https://github.com/jesec/flood/compare/v3.0.0...v3.1.0
593
+ [4.0.0]: https://github.com/jesec/flood/compare/v3.1.0...v4.0.0
594
+ [4.0.1]: https://github.com/jesec/flood/compare/v4.0.0...v4.0.1
595
+ [4.0.2]: https://github.com/jesec/flood/compare/v4.0.1...v4.0.2
596
+ [4.1.0]: https://github.com/jesec/flood/compare/v4.0.2...v4.1.0
597
+ [4.1.1]: https://github.com/jesec/flood/compare/v4.1.0...v4.1.1
598
+ [4.1.2]: https://github.com/jesec/flood/compare/v4.1.1...v4.1.2
599
+ [4.2.0]: https://github.com/jesec/flood/compare/v4.1.2...v4.2.0
600
+ [4.3.0]: https://github.com/jesec/flood/compare/v4.2.0...v4.3.0
601
+ [4.3.1]: https://github.com/jesec/flood/compare/v4.3.0...v4.3.1
602
+ [4.4.0]: https://github.com/jesec/flood/compare/v4.3.1...v4.4.0
603
+ [4.4.1]: https://github.com/jesec/flood/compare/v4.4.0...v4.4.1
604
+ [4.5.0]: https://github.com/jesec/flood/compare/v4.4.1...v4.5.0
605
+ [4.5.1]: https://github.com/jesec/flood/compare/v4.5.0...v4.5.1
606
+ [4.5.2]: https://github.com/jesec/flood/compare/v4.5.1...v4.5.2
607
+ [4.5.3]: https://github.com/jesec/flood/compare/v4.5.2...v4.5.3
608
+ [4.5.4]: https://github.com/jesec/flood/compare/v4.5.3...v4.5.4
609
+ [4.6.0]: https://github.com/jesec/flood/compare/v4.5.4...v4.6.0
610
+ [4.6.1]: https://github.com/jesec/flood/compare/v4.6.0...v4.6.1
611
+ [4.7.0]: https://github.com/jesec/flood/compare/v4.6.1...v4.7.0
612
+ [4.8.0]: https://github.com/jesec/flood/compare/v4.7.0...v4.8.0
613
+ [4.8.1]: https://github.com/jesec/flood/compare/v4.8.0...v4.8.1
614
+ [4.8.2]: https://github.com/jesec/flood/compare/v4.8.1...v4.8.2