Compare commits

..

93 Commits

Author SHA1 Message Date
renovate[bot]
0a2ea1e09d chore(deps): update dependency @babel/core to v7.29.0 (#2504)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-27 01:29:47 +00:00
renovate[bot]
be77363515 chore(deps): update babel monorepo to v7.28.6 (#2501)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 05:51:38 +00:00
renovate[bot]
b1a1c5c01b chore(deps): update babel monorepo to v7.28.5 (#2494)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 03:47:34 +00:00
renovate[bot]
6b60360ce1 chore(deps): update babel monorepo to v7.28.4 (#2488)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-06 16:07:58 +00:00
renovate[bot]
56e92101b0 chore(deps): update babel monorepo to v7.28.3 (#2487)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 12:46:15 +00:00
renovate[bot]
2a5c67f9e3 fix(deps): update dependency @electron/remote to v2.1.3 (#2485)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-08 21:13:11 +00:00
renovate[bot]
ef39f41e96 chore(deps): update babel monorepo to v7.28.0 (#2484)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-03 13:11:16 +00:00
renovate[bot]
d317ea3ff8 chore(deps): update dependency @babel/core to v7.27.7 (#2482)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-27 15:49:04 +00:00
renovate[bot]
787e4c441b chore(deps): update dependency @babel/eslint-parser to v7.27.5 (#2480)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 16:06:08 +00:00
renovate[bot]
ef116d01b7 chore(deps): update dependency @babel/core to v7.27.4 (#2479)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-31 17:03:45 +00:00
renovate[bot]
0a5be1f166 chore(deps): update dependency @babel/core to v7.27.3 (#2478)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-28 09:28:35 +00:00
renovate[bot]
4a35518da7 chore(deps): update dependency @babel/cli to v7.27.2 (#2475)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-07 20:22:11 +00:00
renovate[bot]
8f3301cd1e chore(deps): update babel monorepo to v7.27.1 (#2474)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-01 17:29:51 +00:00
renovate[bot]
97b10558f6 chore(deps): update babel monorepo (#2466)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-27 12:10:52 +00:00
renovate[bot]
e61501f13f chore(deps): update babel monorepo (#2459)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-18 21:49:47 +00:00
renovate[bot]
b1d1778479 chore(deps): update dependency @babel/eslint-parser to v7.26.5 (#2457)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-15 14:14:09 +00:00
renovate[bot]
9cca2d39c3 chore(deps): update babel monorepo (#2453)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-08 21:05:11 +00:00
renovate[bot]
fcee4017d7 chore(deps): update dependency tape to v5.9.0 2024-10-16 06:34:29 +00:00
renovate[bot]
2890419d6d chore(deps): update babel monorepo 2024-10-16 05:21:16 +00:00
renovate[bot]
0fe3dd977f chore(deps): update dependency @babel/cli to v7.25.6 2024-08-30 13:58:05 +00:00
renovate[bot]
9ba088f76f chore(deps): update dependency electron-winstaller to v5.4.0 2024-08-12 11:46:38 +00:00
renovate[bot]
1a7404ee8a chore(deps): update babel monorepo 2024-08-12 11:31:09 +00:00
renovate[bot]
f1de7606a5 chore(deps): update npm to v10 (#2426)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-12 13:28:56 +02:00
Borewit
d4b493cebe Fix CI shield in README (#2437)
Replace deprecated Travis shield with GitHub Action CI shield
2024-08-12 13:24:03 +02:00
renovate[bot]
1df3d025bd chore(deps): update babel monorepo 2024-07-21 17:27:22 +00:00
renovate[bot]
61b7681fd1 chore(deps): update dependency tape to v5.8.1 2024-06-17 18:50:56 +00:00
renovate[bot]
ac7f16e71c chore(deps): update dependency tape to v5.8.0 2024-06-16 04:07:26 +00:00
renovate[bot]
b363dca77f chore(deps): update dependency electron-winstaller to v5.3.1 2024-06-09 19:36:43 +00:00
renovate[bot]
16cabd19ff chore(deps): update dependency electron to v27.3.11 2024-06-09 15:22:50 +00:00
renovate[bot]
390b4ad7ec chore(deps): update babel monorepo to v7.24.7 2024-06-09 12:08:50 +00:00
renovate[bot]
b3dc3292b7 chore(deps): update dependency electron-winstaller to v5.3.0 2024-04-02 19:13:47 +00:00
renovate[bot]
244a242bdc chore(deps): update dependency electron to v27.3.8 2024-04-02 16:20:07 +00:00
renovate[bot]
241f3cb9a3 chore(deps): update babel monorepo 2024-04-02 16:17:23 +00:00
Herwig Hochleitner
aa4fb3d08e chore(deps): Upgrade to Electron v27 (#2388) 2024-04-02 18:14:50 +02:00
renovate[bot]
ebaf9cf848 fix(deps): update dependency music-metadata to v7.14.0 2024-02-26 01:21:30 +00:00
renovate[bot]
df05db5583 fix(deps): update dependency @electron/remote to v2.1.2 2024-02-25 22:28:16 +00:00
renovate[bot]
1ccfa404d2 chore(deps): update dependency tape to v5.7.5 2024-02-25 19:37:03 +00:00
renovate[bot]
bc19caf8ee chore(deps): update dependency electron-winstaller to v5.2.2 2024-02-25 15:50:03 +00:00
renovate[bot]
36c24a4940 chore(deps): update babel monorepo 2024-02-25 12:07:37 +00:00
renovate[bot]
1cefcff3da chore(deps): update dependency depcheck to v1.4.7 2023-12-20 00:09:20 +00:00
renovate[bot]
1eb61201d6 chore(deps): update dependency electron-installer-debian to v3.2.0 2023-09-07 03:37:53 +00:00
renovate[bot]
3e514f9cf6 fix(deps): update dependency @electron/remote to v2.0.11 2023-09-07 01:35:26 +00:00
renovate[bot]
b8f1d950f2 chore(deps): update dependency depcheck to v1.4.5 2023-09-06 22:04:13 +00:00
renovate[bot]
a85effc8ec chore(deps): update babel monorepo to v7.22.15 2023-09-06 22:01:22 +00:00
renovate[bot]
cf846979b0 chore(deps): update babel monorepo to v7.22.10 2023-08-08 20:16:46 +00:00
renovate[bot]
9f630c9bfb chore(deps): update dependency tape to v5.6.6 2023-07-19 23:16:44 +00:00
renovate[bot]
1d66b6d069 chore(deps): update dependency tape to v5.6.5 2023-07-13 22:50:50 +00:00
renovate[bot]
6b83ed34b9 chore(deps): update babel monorepo to v7.22.9 2023-07-13 18:39:30 +00:00
renovate[bot]
a0aeae7e91 chore(deps): update dependency plist to v3.1.0 2023-07-07 20:28:35 +00:00
renovate[bot]
99e3058676 chore(deps): update babel monorepo 2023-07-07 15:29:59 +00:00
renovate[bot]
20d1d8a224 chore(deps): update babel monorepo to v7.22.6 2023-07-05 12:31:07 +00:00
renovate[bot]
0b34ff1148 chore(deps): update dependency tape to v5.6.4 2023-07-03 07:26:03 +00:00
renovate[bot]
4120fcf4af chore(deps): update babel monorepo to v7.22.5 2023-06-14 12:29:59 +00:00
renovate[bot]
7ea277ccf6 fix(deps): update dependency @electron/remote to v2.0.10 2023-06-07 00:00:55 +00:00
renovate[bot]
77a981178b chore(deps): update dependency @babel/plugin-transform-react-jsx to v7.22.3 2023-05-28 14:03:53 +00:00
renovate[bot]
ea19545ec6 chore(deps): update dependency @babel/core to v7.22.1 2023-05-27 19:28:13 +00:00
renovate[bot]
6f6ccb029c chore(deps): update babel monorepo to v7.22.0 2023-05-27 15:44:47 +00:00
renovate[bot]
43b2d28fb5 chore(deps): update babel monorepo to v7.21.8 2023-05-03 21:19:42 +00:00
renovate[bot]
f20d24ac3c chore(deps): update babel monorepo to v7.21.5 2023-04-30 02:00:10 +00:00
renovate[bot]
b1332ee76b chore(deps): update dependency @babel/core to v7.21.4 2023-04-01 15:08:16 +00:00
renovate[bot]
34b8f3fb64 fix(deps): update dependency music-metadata to v7.13.4 2023-03-30 20:52:34 +00:00
renovate[bot]
b4f98e91ff chore(deps): update dependency nodemon to v2.0.22 2023-03-23 22:26:52 +00:00
renovate[bot]
ebb8d23ef3 chore(deps): update dependency gh-release to v7 (#2301)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-16 14:23:49 +01:00
renovate[bot]
e5bf6745bf chore(deps): update dependency pngjs to v7 (#2326)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-16 14:14:54 +01:00
renovate[bot]
686f63b35f fix(deps): update dependency rimraf to v4 (#2328)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-16 14:09:44 +01:00
renovate[bot]
4ed5f3ff5f chore(deps): update dependency appdmg to v0.6.6 (#2318)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex <alxmorais8@msn.com>
2023-03-16 14:01:51 +01:00
dependabot[bot]
af8379012a build(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 (#2313)
Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-16 13:58:45 +01:00
renovate[bot]
1c53102e12 chore(deps): update dependency minimist to v1.2.8 (#2319)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-16 13:52:55 +01:00
renovate[bot]
1a074b65e6 chore(deps): update dependency open to v8.4.2 (#2321)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-16 13:42:26 +01:00
renovate[bot]
2052adde7d chore(deps): update dependency electron-installer-redhat to v3.4.0 2023-03-16 12:37:17 +00:00
renovate[bot]
eed9eebd45 fix(deps): update dependency webtorrent to v1.9.7 2023-03-16 12:31:43 +00:00
renovate[bot]
e36eacd05a fix(deps): update dependency music-metadata to v7.13.3 2023-03-16 12:26:12 +00:00
renovate[bot]
9c7cffa1a3 chore(deps): update dependency tape to v5.6.3 2023-03-16 12:20:53 +00:00
renovate[bot]
94d2bd7807 chore(deps): update dependency nodemon to v2.0.21 2023-03-16 12:15:21 +00:00
renovate[bot]
5efbf7e5c9 chore(deps): update babel monorepo 2023-03-16 12:10:29 +00:00
renovate[bot]
fce078defe fix(deps): update dependency music-metadata to v7.13.1 2023-01-06 17:32:19 +00:00
renovate[bot]
10f355ba0f chore(deps): update dependency @babel/core to v7.20.12 2023-01-05 19:46:05 +00:00
renovate[bot]
9d8293b970 chore(deps): update babel monorepo to v7.20.7 2022-12-23 12:23:19 +00:00
renovate[bot]
73b8b54ae8 fix(deps): update dependency @electron/remote to v2.0.9 2022-12-07 02:25:28 +00:00
renovate[bot]
bc49dbc41d fix(deps): update dependency webtorrent to v1.9.6 2022-12-04 00:00:17 +00:00
renovate[bot]
69b1ff58d0 chore(deps): update dependency @babel/core to v7.20.5 2022-11-29 15:34:34 +00:00
renovate[bot]
cf48311fcb fix(deps): update dependency webtorrent to v1.9.4 2022-11-21 14:56:21 +00:00
renovate[bot]
c919af1fd9 fix(deps): update dependency webtorrent to v1.9.3 2022-11-19 00:57:08 +00:00
dependabot[bot]
cdc5ac6538 build(deps): bump loader-utils from 1.4.0 to 1.4.2 (#2288)
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.2.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.2)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-11 15:04:46 +01:00
renovate[bot]
05881478b5 fix(deps): update dependency webtorrent to v1.9.2 2022-11-11 05:52:42 +00:00
renovate[bot]
fb279010d0 chore(deps): update dependency electron-winstaller to v5.1.0 (#2277)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-11 01:10:49 +01:00
renovate[bot]
e54f61c480 fix(deps): update dependency create-torrent to v5.0.9 (#2287)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-11-11 01:00:56 +01:00
renovate[bot]
ab9468f84f chore(deps): update npm to v9 (#2283)
* chore(deps): update npm to v9

* Update package.json

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Diego Rodríguez Baquero <diego@protocol.ai>
2022-11-10 15:15:19 -05:00
renovate[bot]
0f20c0acd1 chore(deps): update dependency @babel/core to v7.20.2 2022-11-06 00:06:21 +00:00
renovate[bot]
a4ef6cb562 fix(deps): update dependency webtorrent to v1.9.1 2022-10-28 16:53:40 +00:00
renovate[bot]
21c260dc13 chore(deps): update dependency electron-notarize to v1.2.2 2022-10-22 01:44:22 +00:00
renovate[bot]
0df520c5ba chore(deps): update dependency @babel/core to v7.19.6 2022-10-21 12:02:18 +00:00
renovate[bot]
707461a264 chore(deps): update dependency minimist to v1.2.7 (#2271)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-10-15 16:35:45 +02:00
16 changed files with 9949 additions and 8010 deletions

View File

@@ -13,7 +13,7 @@
<p align="center"> <p align="center">
<a href="https://discord.gg/cnXkm4Z"><img src="https://img.shields.io/discord/612575111718895616" alt="discord"></a> <a href="https://discord.gg/cnXkm4Z"><img src="https://img.shields.io/discord/612575111718895616" alt="discord"></a>
<a href="https://travis-ci.org/webtorrent/webtorrent-desktop"><img src="https://img.shields.io/travis/webtorrent/webtorrent-desktop/master.svg" alt="travis"></a> <a href="https://github.com/webtorrent/webtorrent-desktop/actions/workflows/ci.yml"><img src="https://github.com/webtorrent/webtorrent-desktop/actions/workflows/ci.yml/badge.svg" alt="GitHub CI action"></a>
<a href="https://github.com/webtorrent/webtorrent-desktop/releases"><img src="https://img.shields.io/github/release/webtorrent/webtorrent-desktop.svg" alt="github release version"></a> <a href="https://github.com/webtorrent/webtorrent-desktop/releases"><img src="https://img.shields.io/github/release/webtorrent/webtorrent-desktop.svg" alt="github release version"></a>
<a href="https://github.com/webtorrent/webtorrent-desktop/releases"><img src="https://img.shields.io/github/downloads/webtorrent/webtorrent-desktop/total.svg" alt="github release downloads"></a> <a href="https://github.com/webtorrent/webtorrent-desktop/releases"><img src="https://img.shields.io/github/downloads/webtorrent/webtorrent-desktop/total.svg" alt="github release downloads"></a>
<a href="https://standardjs.com"><img src="https://img.shields.io/badge/code_style-standard-brightgreen.svg" alt="Standard - JavaScript Style Guide"></a> <a href="https://standardjs.com"><img src="https://img.shields.io/badge/code_style-standard-brightgreen.svg" alt="Standard - JavaScript Style Guide"></a>

17529
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -21,8 +21,7 @@
"url": "https://github.com/webtorrent/webtorrent-desktop/issues" "url": "https://github.com/webtorrent/webtorrent-desktop/issues"
}, },
"dependencies": { "dependencies": {
"@electron/remote": "2.0.8", "@electron/remote": "2.1.3",
"@material-ui/core": "4.12.4",
"airplayer": "github:webtorrent/airplayer#fix-security", "airplayer": "github:webtorrent/airplayer#fix-security",
"application-config": "2.0.0", "application-config": "2.0.0",
"arch": "2.2.0", "arch": "2.2.0",
@@ -31,7 +30,7 @@
"capture-frame": "4.0.0", "capture-frame": "4.0.0",
"chokidar": "3.5.3", "chokidar": "3.5.3",
"chromecasts": "1.10.2", "chromecasts": "1.10.2",
"create-torrent": "5.0.6", "create-torrent": "5.0.9",
"debounce": "1.2.1", "debounce": "1.2.1",
"dlnacasts": "0.1.0", "dlnacasts": "0.1.0",
"drag-drop": "7.2.0", "drag-drop": "7.2.0",
@@ -40,49 +39,50 @@
"iso-639-1": "2.1.15", "iso-639-1": "2.1.15",
"languagedetect": "2.0.0", "languagedetect": "2.0.0",
"location-history": "1.1.2", "location-history": "1.1.2",
"music-metadata": "7.13.0", "material-ui": "0.20.2",
"music-metadata": "7.14.0",
"network-address": "1.1.2", "network-address": "1.1.2",
"parse-torrent": "9.1.5", "parse-torrent": "9.1.5",
"prettier-bytes": "1.0.4", "prettier-bytes": "1.0.4",
"prop-types": "15.8.1", "prop-types": "15.8.1",
"react": "17.0.2", "react": "17.0.2",
"react-dom": "17.0.2", "react-dom": "17.0.2",
"rimraf": "3.0.2", "rimraf": "4.4.0",
"run-parallel": "1.2.0", "run-parallel": "1.2.0",
"semver": "7.3.8", "semver": "7.3.8",
"simple-concat": "1.0.1", "simple-concat": "1.0.1",
"simple-get": "4.0.1", "simple-get": "4.0.1",
"srt-to-vtt": "1.1.3", "srt-to-vtt": "1.1.3",
"vlc-command": "1.2.0", "vlc-command": "1.2.0",
"webtorrent": "1.8.32", "webtorrent": "1.9.7",
"winreg": "1.2.4" "winreg": "1.2.4"
}, },
"devDependencies": { "devDependencies": {
"@babel/cli": "7.19.3", "@babel/cli": "7.28.6",
"@babel/core": "7.19.3", "@babel/core": "7.29.0",
"@babel/eslint-parser": "7.19.1", "@babel/eslint-parser": "7.28.6",
"@babel/plugin-transform-react-jsx": "7.19.0", "@babel/plugin-transform-react-jsx": "7.28.6",
"cross-zip": "4.0.0", "cross-zip": "4.0.0",
"depcheck": "1.4.3", "depcheck": "1.4.7",
"electron": "15.5.7", "electron": "27.3.11",
"electron-notarize": "1.2.1", "electron-notarize": "1.2.2",
"electron-osx-sign": "0.6.0", "electron-osx-sign": "0.6.0",
"electron-packager": "15.5.2", "electron-packager": "17.1.2",
"electron-winstaller": "5.0.0", "electron-winstaller": "5.4.0",
"gh-release": "6.0.4", "gh-release": "7.0.2",
"minimist": "1.2.6", "minimist": "1.2.8",
"nodemon": "2.0.20", "nodemon": "2.0.22",
"open": "8.4.0", "open": "8.4.2",
"plist": "3.0.6", "plist": "3.1.0",
"pngjs": "6.0.0", "pngjs": "7.0.0",
"run-series": "1.1.9", "run-series": "1.1.9",
"spectron": "19.0.0", "spectron": "19.0.0",
"standard": "17.0.0", "standard": "17.0.0",
"tape": "5.6.1" "tape": "5.9.0"
}, },
"engines": { "engines": {
"node": "^16.0.0 || ^18.0.0", "node": "^16.0.0 || ^18.0.0",
"npm": "^7.10.0 || ^8.0.0" "npm": "^7.10.0 || ^8.0.0 || ^9.0.0 || ^10.0.0"
}, },
"homepage": "https://webtorrent.io", "homepage": "https://webtorrent.io",
"keywords": [ "keywords": [
@@ -99,8 +99,8 @@
"main": "index.js", "main": "index.js",
"optionalDependencies": { "optionalDependencies": {
"appdmg": "^0.6.0", "appdmg": "^0.6.0",
"electron-installer-debian": "^3.1.0", "electron-installer-debian": "^3.2.0",
"electron-installer-redhat": "^3.3.0" "electron-installer-redhat": "^3.4.0"
}, },
"private": true, "private": true,
"productName": "WebTorrent", "productName": "WebTorrent",
@@ -113,12 +113,10 @@
"clean": "node ./bin/clean.js", "clean": "node ./bin/clean.js",
"gh-release": "gh-release", "gh-release": "gh-release",
"install-system-deps": "brew install fakeroot dpkg rpm", "install-system-deps": "brew install fakeroot dpkg rpm",
"lint": "standard",
"lint:fix": "standard --fix",
"open-config": "node ./bin/open-config.js", "open-config": "node ./bin/open-config.js",
"package": "node ./bin/package.js", "package": "node ./bin/package.js",
"start": "npm run build && electron --no-sandbox .", "start": "npm run build && electron --no-sandbox .",
"test": "npm run lint && depcheck --ignores=standard,@babel/eslint-parser --ignore-dirs=build,dist", "test": "standard && depcheck --ignores=standard,@babel/eslint-parser --ignore-dirs=build,dist",
"test-integration": "npm run build && node ./test", "test-integration": "npm run build && node ./test",
"update-authors": "./bin/update-authors.sh", "update-authors": "./bin/update-authors.sh",
"watch": "nodemon --exec \"npm run start\" --ext js,css --ignore build/ --ignore dist/" "watch": "nodemon --exec \"npm run start\" --ext js,css --ignore build/ --ignore dist/"

View File

@@ -91,11 +91,11 @@ function init (state, options) {
}) })
win.on('move', debounce(e => { win.on('move', debounce(e => {
send('windowBoundsChanged', e.sender.getBounds()) send('windowBoundsChanged', main.win.getBounds())
}, 1000)) }, 1000))
win.on('resize', debounce(e => { win.on('resize', debounce(e => {
send('windowBoundsChanged', e.sender.getBounds()) send('windowBoundsChanged', main.win.getBounds())
}, 1000)) }, 1000))
win.on('close', e => { win.on('close', e => {

View File

@@ -16,7 +16,6 @@ module.exports = class DeleteAllTorrentsModal extends React.Component {
<p><strong>{message}</strong></p> <p><strong>{message}</strong></p>
<ModalOKCancel <ModalOKCancel
cancelText='CANCEL' cancelText='CANCEL'
color='secondary'
onCancel={dispatcher('exitModal')} onCancel={dispatcher('exitModal')}
okText={buttonText} okText={buttonText}
onOK={handleRemove} onOK={handleRemove}

View File

@@ -1,7 +1,7 @@
const React = require('react') const React = require('react')
const PropTypes = require('prop-types') const PropTypes = require('prop-types')
const grey = require('@material-ui/core/colors/grey').default const colors = require('material-ui/styles/colors')
class Heading extends React.Component { class Heading extends React.Component {
static get propTypes () { static get propTypes () {
@@ -19,7 +19,7 @@ class Heading extends React.Component {
render () { render () {
const HeadingTag = 'h' + this.props.level const HeadingTag = 'h' + this.props.level
const style = { const style = {
color: grey['100'], color: colors.grey100,
fontSize: 20, fontSize: 20,
marginBottom: 15, marginBottom: 15,
marginTop: 30 marginTop: 30

View File

@@ -1,28 +1,26 @@
const React = require('react') const React = require('react')
const Button = require('@material-ui/core/Button').default const FlatButton = require('material-ui/FlatButton').default
const RaisedButton = require('material-ui/RaisedButton').default
module.exports = class ModalOKCancel extends React.Component { module.exports = class ModalOKCancel extends React.Component {
render () { render () {
const cancelStyle = { marginRight: 10, color: 'black' } const cancelStyle = { marginRight: 10, color: 'black' }
const { cancelText, color = 'primary', onCancel, okText, onOK } = this.props const { cancelText, onCancel, okText, onOK } = this.props
return ( return (
<div className='float-right'> <div className='float-right'>
<Button <FlatButton
className='control cancel' className='control cancel'
onClick={onCancel}
style={cancelStyle} style={cancelStyle}
> label={cancelText}
{cancelText} onClick={onCancel}
</Button> />
<Button <RaisedButton
autoFocus
className='control ok' className='control ok'
primary
label={okText}
onClick={onOK} onClick={onOK}
color={color} autoFocus
variant='contained' />
>
{okText}
</Button>
</div> </div>
) )
} }

View File

@@ -1,5 +1,5 @@
const React = require('react') const React = require('react')
const TextField = require('@material-ui/core/TextField').default const TextField = require('material-ui/TextField').default
const { clipboard } = require('electron') const { clipboard } = require('electron')
const ModalOKCancel = require('./modal-ok-cancel') const ModalOKCancel = require('./modal-ok-cancel')

View File

@@ -1,12 +1,12 @@
const path = require('path') const path = require('path')
const colors = require('material-ui/styles/colors')
const remote = require('@electron/remote') const remote = require('@electron/remote')
const React = require('react') const React = require('react')
const PropTypes = require('prop-types') const PropTypes = require('prop-types')
const Button = require('@material-ui/core/Button').default const RaisedButton = require('material-ui/RaisedButton').default
const TextField = require('@material-ui/core/TextField').default const TextField = require('material-ui/TextField').default
const grey = require('@material-ui/core/colors/grey').default
// Lets you pick a file or directory. // Lets you pick a file or directory.
// Uses the system Open File dialog. // Uses the system Open File dialog.
@@ -53,8 +53,10 @@ class PathSelector extends React.Component {
textOverflow: 'ellipsis', textOverflow: 'ellipsis',
whiteSpace: 'nowrap' whiteSpace: 'nowrap'
} }
const textareaStyle = {
color: colors.grey50
}
const textFieldStyle = { const textFieldStyle = {
color: grey['50'],
flex: '1' flex: '1'
} }
const text = this.props.value || '' const text = this.props.value || ''
@@ -68,20 +70,13 @@ class PathSelector extends React.Component {
{this.props.title}: {this.props.title}:
</div> </div>
<TextField <TextField
className='control' className='control' disabled id={id} value={text}
disabled inputStyle={textareaStyle} style={textFieldStyle}
id={id}
style={textFieldStyle}
value={text}
/> />
<Button <RaisedButton
className='control' className='control' label='Change' onClick={this.handleClick}
onClick={this.handleClick}
style={buttonStyle} style={buttonStyle}
variant='contained' />
>
Change
</Button>
</div> </div>
) )
} }

View File

@@ -16,7 +16,6 @@ module.exports = class RemoveTorrentModal extends React.Component {
<p><strong>{message}</strong></p> <p><strong>{message}</strong></p>
<ModalOKCancel <ModalOKCancel
cancelText='CANCEL' cancelText='CANCEL'
color='secondary'
onCancel={dispatcher('exitModal')} onCancel={dispatcher('exitModal')}
okText={buttonText} okText={buttonText}
onOK={handleRemove} onOK={handleRemove}

View File

@@ -1,7 +1,7 @@
const React = require('react') const React = require('react')
const PropTypes = require('prop-types') const PropTypes = require('prop-types')
const Button = require('@material-ui/core/Button').default const RaisedButton = require('material-ui/RaisedButton').default
class ShowMore extends React.Component { class ShowMore extends React.Component {
static get propTypes () { static get propTypes () {
@@ -42,13 +42,11 @@ class ShowMore extends React.Component {
return ( return (
<div className='show-more' style={this.props.style}> <div className='show-more' style={this.props.style}>
{this.state.expanded ? this.props.children : null} {this.state.expanded ? this.props.children : null}
<Button <RaisedButton
className='control' className='control'
onClick={this.handleClick} onClick={this.handleClick}
variant='contained' label={label}
> />
{label}
</Button>
</div> </div>
) )
} }

View File

@@ -1,9 +1,10 @@
const colors = require('material-ui/styles/colors')
const createGetter = require('fn-getter') const createGetter = require('fn-getter')
const React = require('react') const React = require('react')
const { ThemeProvider, createTheme } = require('@material-ui/core/styles') const darkBaseTheme = require('material-ui/styles/baseThemes/darkBaseTheme').default
const grey = require('@material-ui/core/colors/grey').default const getMuiTheme = require('material-ui/styles/getMuiTheme').default
const red = require('@material-ui/core/colors/red').default const MuiThemeProvider = require('material-ui/styles/MuiThemeProvider').default
const Header = require('../components/header') const Header = require('../components/header')
@@ -32,8 +33,17 @@ const fontFamily = process.platform === 'win32'
? '"Segoe UI", sans-serif' ? '"Segoe UI", sans-serif'
: 'BlinkMacSystemFont, "Helvetica Neue", Helvetica, sans-serif' : 'BlinkMacSystemFont, "Helvetica Neue", Helvetica, sans-serif'
let darkTheme darkBaseTheme.fontFamily = fontFamily
let lightTheme darkBaseTheme.userAgent = false
darkBaseTheme.palette.primary1Color = colors.grey50
darkBaseTheme.palette.primary2Color = colors.grey50
darkBaseTheme.palette.primary3Color = colors.grey600
darkBaseTheme.palette.accent1Color = colors.redA200
darkBaseTheme.palette.accent2Color = colors.redA400
darkBaseTheme.palette.accent3Color = colors.redA100
let darkMuiTheme
let lightMuiTheme
class App extends React.Component { class App extends React.Component {
render () { render () {
@@ -54,66 +64,19 @@ class App extends React.Component {
if (state.window.isFocused) cls.push('is-focused') if (state.window.isFocused) cls.push('is-focused')
if (hideControls) cls.push('hide-video-controls') if (hideControls) cls.push('hide-video-controls')
if (!darkTheme) { if (!darkMuiTheme) {
darkTheme = createTheme({ darkMuiTheme = getMuiTheme(darkBaseTheme)
overrides: {
MuiButton: {
contained: {
backgroundColor: '#303030',
color: 'white',
'&:hover': {
backgroundColor: '#414141',
// Reset on touch devices, it doesn't add specificity
'@media (hover: none)': {
backgroundColor: '#303030',
color: 'white'
}
}
}
},
MuiCheckbox: {
root: {
padding: '0px',
marginRight: '16px'
}
},
MuiFormControlLabel: {
label: {
color: 'white',
fontSize: '0.875rem'
},
root: {
marginLeft: '0px',
marginRight: '0px'
}
}
},
palette: {
primary: {
main: grey['50']
},
secondary: {
main: grey['50']
},
type: 'dark'
},
typography: {
fontFamily
}
}, {
userAgent: false
})
} }
return ( return (
<ThemeProvider theme={darkTheme}> <MuiThemeProvider muiTheme={darkMuiTheme}>
<div className={'app ' + cls.join(' ')}> <div className={'app ' + cls.join(' ')}>
<Header state={state} /> <Header state={state} />
{this.getErrorPopover()} {this.getErrorPopover()}
<div key='content' className='content'>{this.getView()}</div> <div key='content' className='content'>{this.getView()}</div>
{this.getModal()} {this.getModal()}
</div> </div>
</ThemeProvider> </MuiThemeProvider>
) )
} }
@@ -139,32 +102,23 @@ class App extends React.Component {
const state = this.props.state const state = this.props.state
if (!state.modal) return if (!state.modal) return
if (!lightTheme) { if (!lightMuiTheme) {
lightTheme = createTheme({ const lightBaseTheme = require('material-ui/styles/baseThemes/lightBaseTheme').default
palette: { lightBaseTheme.fontFamily = fontFamily
secondary: { lightBaseTheme.userAgent = false
main: red.A200 lightMuiTheme = getMuiTheme(lightBaseTheme)
},
type: 'light'
},
typography: {
fontFamily
}
}, {
userAgent: false
})
} }
const ModalContents = Modals[state.modal.id]() const ModalContents = Modals[state.modal.id]()
return ( return (
<ThemeProvider theme={lightTheme}> <MuiThemeProvider muiTheme={lightMuiTheme}>
<div key='modal' className='modal'> <div key='modal' className='modal'>
<div key='modal-background' className='modal-background' /> <div key='modal-background' className='modal-background' />
<div key='modal-content' className='modal-content'> <div key='modal-content' className='modal-content'>
<ModalContents state={state} /> <ModalContents state={state} />
</div> </div>
</div> </div>
</ThemeProvider> </MuiThemeProvider>
) )
} }

View File

@@ -3,16 +3,17 @@ const path = require('path')
const prettyBytes = require('prettier-bytes') const prettyBytes = require('prettier-bytes')
const React = require('react') const React = require('react')
const Button = require('@material-ui/core/Button').default const { dispatch, dispatcher } = require('../lib/dispatcher')
const TextField = require('@material-ui/core/TextField').default
const Checkbox = require('@material-ui/core/Checkbox').default const FlatButton = require('material-ui/FlatButton').default
const RaisedButton = require('material-ui/RaisedButton').default
const TextField = require('material-ui/TextField').default
const Checkbox = require('material-ui/Checkbox').default
const CreateTorrentErrorPage = require('../components/create-torrent-error-page') const CreateTorrentErrorPage = require('../components/create-torrent-error-page')
const Heading = require('../components/heading') const Heading = require('../components/heading')
const ShowMore = require('../components/show-more') const ShowMore = require('../components/show-more')
const { dispatch, dispatcher } = require('../lib/dispatcher')
// Shows a basic UI to create a torrent, from an already-selected file or folder. // Shows a basic UI to create a torrent, from an already-selected file or folder.
// Includes a "Show Advanced..." button and more advanced UI. // Includes a "Show Advanced..." button and more advanced UI.
class CreateTorrentPage extends React.Component { class CreateTorrentPage extends React.Component {
@@ -98,23 +99,20 @@ class CreateTorrentPage extends React.Component {
{this.renderAdvanced()} {this.renderAdvanced()}
</ShowMore> </ShowMore>
<div className='float-right'> <div className='float-right'>
<Button <FlatButton
className='control cancel' className='control cancel'
onClick={dispatcher('cancel')} label='Cancel'
style={{ style={{
marginRight: 10 marginRight: 10
}} }}
> onClick={dispatcher('cancel')}
Cancel />
</Button> <RaisedButton
<Button
className='control create-torrent-button' className='control create-torrent-button'
label='Create Torrent'
primary
onClick={this.handleSubmit} onClick={this.handleSubmit}
color='primary' />
variant='contained'
>
Create Torrent
</Button>
</div> </div>
</div> </div>
) )
@@ -136,6 +134,10 @@ class CreateTorrentPage extends React.Component {
fileElems.push(<div key='more'>+ {files.length - maxFileElems} more</div>) fileElems.push(<div key='more'>+ {files.length - maxFileElems} more</div>)
} }
// Align the text fields
const textFieldStyle = { width: '' }
const textareaStyle = { margin: 0 }
return ( return (
<div key='advanced' className='create-torrent-advanced'> <div key='advanced' className='create-torrent-advanced'>
<div key='private' className='torrent-attribute'> <div key='private' className='torrent-attribute'>
@@ -144,32 +146,34 @@ class CreateTorrentPage extends React.Component {
className='torrent-is-private control' className='torrent-is-private control'
style={{ display: '' }} style={{ display: '' }}
checked={this.state.isPrivate} checked={this.state.isPrivate}
onChange={this.handleSetIsPrivate} onCheck={this.handleSetIsPrivate}
/> />
</div> </div>
<div key='trackers' className='torrent-attribute'> <div key='trackers' className='torrent-attribute'>
<label>Trackers:</label> <label>Trackers:</label>
<TextField <TextField
className='torrent-trackers control' className='torrent-trackers control'
fullWidth style={textFieldStyle}
maxRows={10} textareaStyle={textareaStyle}
minRows={2} multiLine
multiline rows={2}
onChange={this.handleSetTrackers} rowsMax={10}
value={this.state.trackers} value={this.state.trackers}
onChange={this.handleSetTrackers}
/> />
</div> </div>
<div key='comment' className='torrent-attribute'> <div key='comment' className='torrent-attribute'>
<label>Comment:</label> <label>Comment:</label>
<TextField <TextField
className='torrent-comment control' className='torrent-comment control'
fullWidth style={textFieldStyle}
maxRows={10} textareaStyle={textareaStyle}
minRows={2} hintText='Optionally describe your torrent...'
multiline multiLine
onChange={this.handleSetComment} rows={2}
placeholder='Optionally describe your torrent...' rowsMax={10}
value={this.state.comment} value={this.state.comment}
onChange={this.handleSetComment}
/> />
</div> </div>
<div key='files' className='torrent-attribute'> <div key='files' className='torrent-attribute'>

View File

@@ -1,12 +1,10 @@
const React = require('react') const React = require('react')
const PropTypes = require('prop-types') const PropTypes = require('prop-types')
const Button = require('@material-ui/core/Button').default const colors = require('material-ui/styles/colors')
const Checkbox = require('@material-ui/core/Checkbox').default const Checkbox = require('material-ui/Checkbox').default
const FormControlLabel = require('@material-ui/core/FormControlLabel').default const RaisedButton = require('material-ui/RaisedButton').default
const TextField = require('@material-ui/core/TextField').default const TextField = require('material-ui/TextField').default
const grey = require('@material-ui/core/colors/grey').default
const Heading = require('../components/heading') const Heading = require('../components/heading')
const PathSelector = require('../components/path-selector') const PathSelector = require('../components/path-selector')
@@ -65,15 +63,11 @@ class PreferencesPage extends React.Component {
openExternalPlayerCheckbox () { openExternalPlayerCheckbox () {
return ( return (
<Preference> <Preference>
<FormControlLabel
control={
<Checkbox <Checkbox
className='control' className='control'
checked={!this.props.state.saved.prefs.openExternalPlayer} checked={!this.props.state.saved.prefs.openExternalPlayer}
onChange={this.handleOpenExternalPlayerChange}
/>
}
label='Play torrent media files using WebTorrent' label='Play torrent media files using WebTorrent'
onCheck={this.handleOpenExternalPlayerChange}
/> />
</Preference> </Preference>
) )
@@ -86,15 +80,11 @@ class PreferencesPage extends React.Component {
highestPlaybackPriorityCheckbox () { highestPlaybackPriorityCheckbox () {
return ( return (
<Preference> <Preference>
<FormControlLabel
control={
<Checkbox <Checkbox
className='control' className='control'
checked={this.props.state.saved.prefs.highestPlaybackPriority} checked={this.props.state.saved.prefs.highestPlaybackPriority}
onChange={this.handleHighestPlaybackPriorityChange}
/>
}
label='Highest Playback Priority' label='Highest Playback Priority'
onCheck={this.handleHighestPlaybackPriorityChange}
/> />
<p>Pauses all active torrents to allow playback to use all of the available bandwidth.</p> <p>Pauses all active torrents to allow playback to use all of the available bandwidth.</p>
</Preference> </Preference>
@@ -136,15 +126,11 @@ class PreferencesPage extends React.Component {
autoAddTorrentsCheckbox () { autoAddTorrentsCheckbox () {
return ( return (
<Preference> <Preference>
<FormControlLabel
control={
<Checkbox <Checkbox
className='control' className='control'
checked={this.props.state.saved.prefs.autoAddTorrents} checked={this.props.state.saved.prefs.autoAddTorrents}
onChange={(e, value) => { this.handleAutoAddTorrentsChange(e, value) }}
/>
}
label='Watch for new .torrent files and add them immediately' label='Watch for new .torrent files and add them immediately'
onCheck={(e, value) => { this.handleAutoAddTorrentsChange(e, value) }}
/> />
</Preference> </Preference>
) )
@@ -202,13 +188,11 @@ class PreferencesPage extends React.Component {
return ( return (
<Preference> <Preference>
<p>WebTorrent is not currently the default torrent app.</p> <p>WebTorrent is not currently the default torrent app.</p>
<Button <RaisedButton
className='control' className='control'
onClick={this.handleSetDefaultApp} onClick={this.handleSetDefaultApp}
variant='contained' label='Make WebTorrent the default'
> />
Make WebTorrent the default
</Button>
</Preference> </Preference>
) )
} }
@@ -224,15 +208,11 @@ class PreferencesPage extends React.Component {
return ( return (
<Preference> <Preference>
<FormControlLabel
control={
<Checkbox <Checkbox
className='control' className='control'
checked={this.props.state.saved.prefs.startup} checked={this.props.state.saved.prefs.startup}
onChange={this.handleStartupChange}
/>
}
label='Open WebTorrent on startup' label='Open WebTorrent on startup'
onCheck={this.handleStartupChange}
/> />
</Preference> </Preference>
) )
@@ -241,15 +221,11 @@ class PreferencesPage extends React.Component {
soundNotificationsCheckbox () { soundNotificationsCheckbox () {
return ( return (
<Preference> <Preference>
<FormControlLabel
control={
<Checkbox <Checkbox
className='control' className='control'
checked={this.props.state.saved.prefs.soundNotifications} checked={this.props.state.saved.prefs.soundNotifications}
onChange={this.handleSoundNotificationsChange}
/>
}
label='Enable sounds' label='Enable sounds'
onCheck={this.handleSoundNotificationsChange}
/> />
</Preference> </Preference>
) )
@@ -264,16 +240,21 @@ class PreferencesPage extends React.Component {
} }
setGlobalTrackers () { setGlobalTrackers () {
// Align the text fields
const textFieldStyle = { width: '100%' }
const textareaStyle = { margin: 0 }
return ( return (
<Preference> <Preference>
<TextField <TextField
className='torrent-trackers control' className='torrent-trackers control'
fullWidth style={textFieldStyle}
maxRows={10} textareaStyle={textareaStyle}
minRows={2} multiLine
multiline rows={2}
onChange={this.handleSetGlobalTrackers} rowsMax={10}
value={this.state.globalTrackers} value={this.state.globalTrackers}
onChange={this.handleSetGlobalTrackers}
/> />
</Preference> </Preference>
) )
@@ -293,7 +274,7 @@ class PreferencesPage extends React.Component {
render () { render () {
const style = { const style = {
color: grey['400'], color: colors.grey400,
marginLeft: 25, marginLeft: 25,
marginRight: 25 marginRight: 25
} }

View File

@@ -1,8 +1,8 @@
const React = require('react') const React = require('react')
const prettyBytes = require('prettier-bytes') const prettyBytes = require('prettier-bytes')
const Checkbox = require('@material-ui/core/Checkbox').default const Checkbox = require('material-ui/Checkbox').default
const LinearProgress = require('@material-ui/core/LinearProgress').default const LinearProgress = require('material-ui/LinearProgress').default
const TorrentSummary = require('../lib/torrent-summary') const TorrentSummary = require('../lib/torrent-summary')
const TorrentPlayer = require('../lib/torrent-player') const TorrentPlayer = require('../lib/torrent-player')
@@ -124,19 +124,19 @@ module.exports = class TorrentList extends React.Component {
const isActive = ['downloading', 'seeding'].includes(torrentSummary.status) const isActive = ['downloading', 'seeding'].includes(torrentSummary.status)
return ( return (
<Checkbox <Checkbox
checked={isActive}
className={'control download ' + torrentSummary.status}
key='download-button' key='download-button'
onChange={dispatcher('toggleTorrent', infoHash)} className={'control download ' + torrentSummary.status}
onClick={stopPropagation}
style={{ style={{
display: 'inline-block', display: 'inline-block',
marginRight: '12px', width: 32
'& .MuiSvgIconRoot': {
width: '20px',
height: '20px'
}
}} }}
iconStyle={{
width: 20,
height: 20
}}
checked={isActive}
onClick={stopPropagation}
onCheck={dispatcher('toggleTorrent', infoHash)}
/> />
) )
} }
@@ -155,7 +155,7 @@ module.exports = class TorrentList extends React.Component {
} }
return ( return (
<div key='progress-bar' style={styles.wrapper}> <div key='progress-bar' style={styles.wrapper}>
<LinearProgress style={styles.progress} value={progress} variant='determinate' /> <LinearProgress style={styles.progress} mode='determinate' value={progress} />
</div> </div>
) )
} }

View File

@@ -71,7 +71,6 @@ table {
.app { .app {
-webkit-user-select: none; -webkit-user-select: none;
-webkit-app-region: drag;
height: 100%; height: 100%;
display: flex; display: flex;
flex-flow: column; flex-flow: column;
@@ -143,6 +142,7 @@ table {
*/ */
.header { .header {
-webkit-app-region: drag;
background: rgb(40, 40, 40); background: rgb(40, 40, 40);
border-bottom: 1px solid rgb(30, 30, 30); border-bottom: 1px solid rgb(30, 30, 30);
height: 38px; /* vertically center OS menu buttons (OS X) */ height: 38px; /* vertically center OS menu buttons (OS X) */
@@ -354,7 +354,7 @@ textarea,
text-shadow: rgba(0, 0, 0, 0.5) 0 0 4px; text-shadow: rgba(0, 0, 0, 0.5) 0 0 4px;
} }
.torrent .metadata .ellipsis > span:not(:last-child):not(.control)::after { .torrent .metadata span:not(:last-child)::after {
content: ' • '; content: ' • ';
opacity: 0.7; opacity: 0.7;
padding-left: 4px; padding-left: 4px;