From 8f9d3767b39cdc5c90906cb1d0aae537374899cc Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 23 Aug 2019 10:19:44 +0200 Subject: [PATCH 1/5] Improve HLS redundancy --- .../p2p-media-loader-plugin.ts | 9 +-- .../redundancy-url-manager.ts | 57 +++++++++++++++++++ .../p2p-media-loader/segment-url-builder.ts | 20 +------ .../assets/player/peertube-player-manager.ts | 7 ++- .../assets/player/peertube-videojs-typings.ts | 3 +- 5 files changed, 72 insertions(+), 24 deletions(-) create mode 100644 client/src/assets/player/p2p-media-loader/redundancy-url-manager.ts diff --git a/client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts b/client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts index 8fb7ba2ea..0c8c612ee 100644 --- a/client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts +++ b/client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts @@ -3,7 +3,7 @@ import * as videojs from 'video.js' import { P2PMediaLoaderPluginOptions, PlayerNetworkInfo, VideoJSComponentInterface } from '../peertube-videojs-typings' import { Engine, initHlsJsPlayer, initVideoJsContribHlsJsPlayer } from 'p2p-media-loader-hlsjs' -import { Events } from 'p2p-media-loader-core' +import { Events, Segment } from 'p2p-media-loader-core' import { timeToInt } from '../utils' // videojs-hlsjs-plugin needs videojs in window @@ -57,7 +57,6 @@ class P2pMediaLoaderPlugin extends Plugin { initVideoJsContribHlsJsPlayer(player) this.startTime = timeToInt(options.startTime) - console.log(this.startTime) player.src({ type: options.type, @@ -90,11 +89,13 @@ class P2pMediaLoaderPlugin extends Plugin { this.trigger('resolutionChange', { auto: this.hlsjs.autoLevelEnabled, resolutionId: data.height }) }) - this.p2pEngine.on(Events.SegmentError, (segment, err) => { + this.p2pEngine.on(Events.SegmentError, (segment: Segment, err) => { console.error('Segment error.', segment, err) + + this.options.redundancyUrlManager.removeByOriginUrl(segment.url) }) - this.statsP2PBytes.numPeers = 1 + this.options.redundancyBaseUrls.length + this.statsP2PBytes.numPeers = 1 + this.options.redundancyUrlManager.countBaseUrls() this.runStats() diff --git a/client/src/assets/player/p2p-media-loader/redundancy-url-manager.ts b/client/src/assets/player/p2p-media-loader/redundancy-url-manager.ts new file mode 100644 index 000000000..7fc2b6ab1 --- /dev/null +++ b/client/src/assets/player/p2p-media-loader/redundancy-url-manager.ts @@ -0,0 +1,57 @@ +import { basename, dirname } from 'path' + +class RedundancyUrlManager { + + // Remember by what new URL we replaced an origin URL + private replacedSegmentUrls: { [originUrl: string]: string } = {} + + constructor (private baseUrls: string[] = []) { + // empty + } + + removeBySegmentUrl (segmentUrl: string) { + console.log('Removing redundancy of segment URL %s.', segmentUrl) + + const baseUrl = dirname(segmentUrl) + + this.baseUrls = this.baseUrls.filter(u => u !== baseUrl && u !== baseUrl + '/') + } + + removeByOriginUrl (originUrl: string) { + const replaced = this.replacedSegmentUrls[originUrl] + if (!replaced) return + + return this.removeBySegmentUrl(replaced) + } + + buildUrl (url: string) { + delete this.replacedSegmentUrls[url] + + const max = this.baseUrls.length + 1 + const i = this.getRandomInt(max) + + if (i === max - 1) return url + + const newBaseUrl = this.baseUrls[i] + const slashPart = newBaseUrl.endsWith('/') ? '' : '/' + + const newUrl = newBaseUrl + slashPart + basename(url) + this.replacedSegmentUrls[url] = newUrl + + return newUrl + } + + countBaseUrls () { + return this.baseUrls.length + } + + private getRandomInt (max: number) { + return Math.floor(Math.random() * Math.floor(max)) + } +} + +// --------------------------------------------------------------------------- + +export { + RedundancyUrlManager +} diff --git a/client/src/assets/player/p2p-media-loader/segment-url-builder.ts b/client/src/assets/player/p2p-media-loader/segment-url-builder.ts index fb990a19d..039777cea 100644 --- a/client/src/assets/player/p2p-media-loader/segment-url-builder.ts +++ b/client/src/assets/player/p2p-media-loader/segment-url-builder.ts @@ -1,17 +1,9 @@ -import { basename } from 'path' import { Segment } from 'p2p-media-loader-core' +import { RedundancyUrlManager } from './redundancy-url-manager' -function segmentUrlBuilderFactory (baseUrls: string[]) { +function segmentUrlBuilderFactory (redundancyUrlManager: RedundancyUrlManager) { return function segmentBuilder (segment: Segment) { - const max = baseUrls.length + 1 - const i = getRandomInt(max) - - if (i === max - 1) return segment.url - - const newBaseUrl = baseUrls[i] - const middlePart = newBaseUrl.endsWith('/') ? '' : '/' - - return newBaseUrl + middlePart + basename(segment.url) + return redundancyUrlManager.buildUrl(segment.url) } } @@ -20,9 +12,3 @@ function segmentUrlBuilderFactory (baseUrls: string[]) { export { segmentUrlBuilderFactory } - -// --------------------------------------------------------------------------- - -function getRandomInt (max: number) { - return Math.floor(Math.random() * Math.floor(max)) -} diff --git a/client/src/assets/player/peertube-player-manager.ts b/client/src/assets/player/peertube-player-manager.ts index 6c8b13087..7be9f8719 100644 --- a/client/src/assets/player/peertube-player-manager.ts +++ b/client/src/assets/player/peertube-player-manager.ts @@ -17,6 +17,7 @@ import { buildVideoEmbed, buildVideoLink, copyToClipboard, getRtcConfig } from ' import { getCompleteLocale, getShortLocale, is18nLocale, isDefaultLocale } from '../../../../shared/models/i18n/i18n' import { segmentValidatorFactory } from './p2p-media-loader/segment-validator' import { segmentUrlBuilderFactory } from './p2p-media-loader/segment-url-builder' +import { RedundancyUrlManager } from './p2p-media-loader/redundancy-url-manager' // Change 'Playback Rate' to 'Speed' (smaller for our settings menu) videojsUntyped.getComponent('PlaybackRateMenuButton').prototype.controlText_ = 'Speed' @@ -226,8 +227,10 @@ export class PeertubePlayerManager { } if (mode === 'p2p-media-loader') { + const redundancyUrlManager = new RedundancyUrlManager(options.p2pMediaLoader.redundancyBaseUrls) + const p2pMediaLoader: P2PMediaLoaderPluginOptions = { - redundancyBaseUrls: options.p2pMediaLoader.redundancyBaseUrls, + redundancyUrlManager, type: 'application/x-mpegURL', startTime: commonOptions.startTime, src: p2pMediaLoaderOptions.playlistUrl @@ -242,7 +245,7 @@ export class PeertubePlayerManager { segmentValidator: segmentValidatorFactory(options.p2pMediaLoader.segmentsSha256Url), rtcConfig: getRtcConfig(), requiredSegmentsPriority: 5, - segmentUrlBuilder: segmentUrlBuilderFactory(options.p2pMediaLoader.redundancyBaseUrls) + segmentUrlBuilder: segmentUrlBuilderFactory(redundancyUrlManager) }, segments: { swarmId: p2pMediaLoaderOptions.playlistUrl diff --git a/client/src/assets/player/peertube-videojs-typings.ts b/client/src/assets/player/peertube-videojs-typings.ts index a96b0bc8c..b7f2eec94 100644 --- a/client/src/assets/player/peertube-videojs-typings.ts +++ b/client/src/assets/player/peertube-videojs-typings.ts @@ -7,6 +7,7 @@ import { PeerTubePlugin } from './peertube-plugin' import { WebTorrentPlugin } from './webtorrent/webtorrent-plugin' import { P2pMediaLoaderPlugin } from './p2p-media-loader/p2p-media-loader-plugin' import { PlayerMode } from './peertube-player-manager' +import { RedundancyUrlManager } from './p2p-media-loader/redundancy-url-manager' declare namespace videojs { interface Player { @@ -62,7 +63,7 @@ type WebtorrentPluginOptions = { } type P2PMediaLoaderPluginOptions = { - redundancyBaseUrls: string[] + redundancyUrlManager: RedundancyUrlManager type: string src: string From 69752cd45853dade0f5754e68d8c6a63c7083e09 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 23 Aug 2019 10:27:59 +0200 Subject: [PATCH 2/5] Update angular cli --- client/package.json | 2 +- client/yarn.lock | 196 +++++++++++++++++++++++++++----------------- 2 files changed, 122 insertions(+), 76 deletions(-) diff --git a/client/package.json b/client/package.json index 34c2915e3..0789953e8 100644 --- a/client/package.json +++ b/client/package.json @@ -34,7 +34,7 @@ "@angular-devkit/build-angular": "~0.802.0", "@angular/animations": "~8.2.0", "@angular/cdk": "^8.1.1", - "@angular/cli": "~8.2.0", + "@angular/cli": "~8.3.0", "@angular/common": "~8.2.0", "@angular/compiler": "~8.2.0", "@angular/compiler-cli": "~8.2.0", diff --git a/client/yarn.lock b/client/yarn.lock index f54c357e9..a67ffe6d1 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -10,6 +10,14 @@ "@angular-devkit/core" "8.2.0" rxjs "6.4.0" +"@angular-devkit/architect@0.803.0": + version "0.803.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.803.0.tgz#4189a992dc3a9ee0979df59efe6a263c282907da" + integrity sha512-PpIIDif+psgdj7SewIU4syftkQjWy/pHjNMWwTTWq72V3nmVhefNEYQDRnTI9s1+VaCrHB/8R0yRaWeadNqI0g== + dependencies: + "@angular-devkit/core" "8.3.0" + rxjs "6.4.0" + "@angular-devkit/build-angular@~0.802.0": version "0.802.0" resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.802.0.tgz#d5da3afc06e07c0a43bb9209b73caeefb2e86f29" @@ -95,12 +103,23 @@ rxjs "6.4.0" source-map "0.7.3" -"@angular-devkit/schematics@8.2.0": - version "8.2.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-8.2.0.tgz#cd7e1fc0bbe2f18f9eb86d65afd942c9b3858d2a" - integrity sha512-/XUWJijLXzhtWdjoQ5ioLo5r5V5+sJ0SSnSP0N8MQyLOgTd1FDGtBMsAMJ3n2/uwUl2/O9WTlV1xNLlg7neYVQ== +"@angular-devkit/core@8.3.0": + version "8.3.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-8.3.0.tgz#080f5cbf96a36960045cc18447744f24663f4451" + integrity sha512-NnPg1/K62n2rw411SMVWCRf5bZWcFtny21OjmW7FLWClJ8XIInBXBHZVcpcPR3jHWVLTmEwB+G1vQ5q/GOmSgw== dependencies: - "@angular-devkit/core" "8.2.0" + ajv "6.10.2" + fast-json-stable-stringify "2.0.0" + magic-string "0.25.3" + rxjs "6.4.0" + source-map "0.7.3" + +"@angular-devkit/schematics@8.3.0": + version "8.3.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-8.3.0.tgz#c1327efd8df71ce9fdbb43fe33d77cdbd897a8ed" + integrity sha512-CLYb6pT7EF+3pPrHZ7du/a2BsXysnKOtj/s8iJwHV88ZlHb2qFMTVlCg5+TpWY+7KswvcdxduWAuZNKYP+1gHw== + dependencies: + "@angular-devkit/core" "8.3.0" rxjs "6.4.0" "@angular/animations@~8.2.0": @@ -119,24 +138,24 @@ optionalDependencies: parse5 "^5.0.0" -"@angular/cli@~8.2.0": - version "8.2.0" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-8.2.0.tgz#c012c3f2474b081861960a43c3c1cf7bf8a57fa6" - integrity sha512-KtjC5Mge93YjPQXxEKnXzQ7pmryizfVunrcKHSwhnzfNdwqSjcfL2evl4oBT07b6RfT0nF8HWn0ATWpiLWwrXQ== +"@angular/cli@~8.3.0": + version "8.3.0" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-8.3.0.tgz#b5c520f400f1ba01a0a7963ddf48f06d332676ef" + integrity sha512-4RuWGeUmhkFH5qx6Ty06n65+IGctDAl1HKS6s+mFl30E/XeQW1FPfA9GKQbexbZTGOa++juXD2inVvz/gZakHw== dependencies: - "@angular-devkit/architect" "0.802.0" - "@angular-devkit/core" "8.2.0" - "@angular-devkit/schematics" "8.2.0" - "@schematics/angular" "8.2.0" - "@schematics/update" "0.802.0" + "@angular-devkit/architect" "0.803.0" + "@angular-devkit/core" "8.3.0" + "@angular-devkit/schematics" "8.3.0" + "@schematics/angular" "8.3.0" + "@schematics/update" "0.803.0" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" debug "^4.1.1" ini "1.3.5" - inquirer "6.5.0" + inquirer "6.5.1" npm-package-arg "6.1.0" open "6.4.0" - pacote "9.5.4" + pacote "9.5.5" read-package-tree "5.3.1" semver "6.3.0" symbol-observable "1.2.0" @@ -380,24 +399,24 @@ tslib "^1.9.0" yargs "10.0.3" -"@schematics/angular@8.2.0": - version "8.2.0" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-8.2.0.tgz#1ac24ed3708a197088119ca419e421a161ad2fd9" - integrity sha512-DOo2wtk9fk0kHCDA/I+/mRrGKirgeqVhDbgOV4d2gbYSAiTl0s1Gb4eFAkJeovQTlARfaL2PIqDDkNeYjc7xpw== +"@schematics/angular@8.3.0": + version "8.3.0" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-8.3.0.tgz#a80203e1f61ff291679d930929510f71ee0dca5f" + integrity sha512-iEJAp6mFwBKUNAIc0tlnhv1oy4694t7vtagprNaHDoAbtlU2qcC+ojR3j0KlNW9NWpmHHV1Rpnnu7tYO2SenaA== dependencies: - "@angular-devkit/core" "8.2.0" - "@angular-devkit/schematics" "8.2.0" + "@angular-devkit/core" "8.3.0" + "@angular-devkit/schematics" "8.3.0" -"@schematics/update@0.802.0": - version "0.802.0" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.802.0.tgz#8ebdc4ace6372a6aed824abb78ef4b56f2bb5d72" - integrity sha512-vMcFLTuw9jSlWQq6nNgMQi2fT/wGyaucvjkxFAs7pC+lyRwYws3IkOukbET7WeJ3ix0ZBEhMbPJ8EibUNDITjw== +"@schematics/update@0.803.0": + version "0.803.0" + resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.803.0.tgz#06e2bd59cd5d1adea180613707b7b747b67e9aff" + integrity sha512-jRQgX2ORhIGPCcbL9bSWSZXBORuSmExLWbQYwUe0wSGFIeYHb4/exLkgHk6T5sqXSRc3bDLCGdfQ9a1HeTfoAA== dependencies: - "@angular-devkit/core" "8.2.0" - "@angular-devkit/schematics" "8.2.0" + "@angular-devkit/core" "8.3.0" + "@angular-devkit/schematics" "8.3.0" "@yarnpkg/lockfile" "1.1.0" ini "1.3.5" - pacote "9.5.4" + pacote "9.5.5" rxjs "6.4.0" semver "6.3.0" semver-intersect "1.4.0" @@ -909,10 +928,12 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.2.1.tgz#4dccdb846c3eee10f6d64dea66273eab90c37228" + integrity sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q== + dependencies: + type-fest "^0.5.2" ansi-html@0.0.7: version "0.0.7" @@ -1983,12 +2004,12 @@ clean-css@4.2.1, clean-css@4.2.x, clean-css@^4.0.12: dependencies: source-map "~0.6.0" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - restore-cursor "^2.0.0" + restore-cursor "^3.1.0" cli-width@^2.0.0: version "2.2.0" @@ -2919,6 +2940,11 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -3379,10 +3405,10 @@ figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= +figures@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.0.0.tgz#756275c964646163cc6f9197c7a0295dbfd04de9" + integrity sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g== dependencies: escape-string-regexp "^1.0.5" @@ -4333,7 +4359,7 @@ individual@^2.0.0: resolved "https://registry.yarnpkg.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97" integrity sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c= -infer-owner@^1.0.3: +infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -4366,22 +4392,22 @@ ini@1.3.5, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== +inquirer@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.1.tgz#8bfb7a5ac02dac6ff641ac4c5ff17da112fcdb42" + integrity sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw== dependencies: - ansi-escapes "^3.2.0" + ansi-escapes "^4.2.1" chalk "^2.4.2" - cli-cursor "^2.1.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" run-async "^2.2.0" rxjs "^6.4.0" - string-width "^2.1.0" + string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" @@ -4573,6 +4599,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-function@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" @@ -5334,7 +5365,7 @@ lodash.tail@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= -lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.10: +lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.10: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -5643,7 +5674,7 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -5856,10 +5887,10 @@ multistream@^3.0.0: inherits "^2.0.1" readable-stream "^3.4.0" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== mux.js@5.1.3: version "5.1.3" @@ -6303,12 +6334,12 @@ once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== dependencies: - mimic-fn "^1.0.0" + mimic-fn "^2.1.0" open@6.4.0: version "6.4.0" @@ -6485,16 +6516,17 @@ package-json-versionify@^1.0.2: dependencies: browserify-package-json "^1.0.0" -pacote@9.5.4: - version "9.5.4" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.4.tgz#8baa26f3d1326d13dc2fe0fe84040a364ae30aad" - integrity sha512-nWr0ari6E+apbdoN0hToTKZElO5h4y8DGFa2pyNA5GQIdcP0imC96bA0bbPw1gpeguVIiUgHHaAlq/6xfPp8Qw== +pacote@9.5.5: + version "9.5.5" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.5.tgz#63355a393614c3424e735820c3731e2cbbedaeeb" + integrity sha512-jAEP+Nqj4kyMWyNpfTU/Whx1jA7jEc5cCOlurm0/0oL+v8TAp1QSsK83N7bYe+2bEdFzMAtPG5TBebjzzGV0cA== dependencies: bluebird "^3.5.3" - cacache "^12.0.0" + cacache "^12.0.2" figgy-pudding "^3.5.1" get-stream "^4.1.0" glob "^7.1.3" + infer-owner "^1.0.4" lru-cache "^5.1.1" make-fetch-happen "^5.0.0" minimatch "^3.0.4" @@ -7517,12 +7549,12 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: - onetime "^2.0.0" + onetime "^5.1.0" signal-exit "^3.0.2" ret@~0.1.10: @@ -8459,7 +8491,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -8476,6 +8508,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff" + integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^5.2.0" + string.prototype.trim@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.0.tgz#75a729b10cfc1be439543dae442129459ce61e3d" @@ -8924,6 +8965,11 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-fest@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" + integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" From d8319c63a03df05f29ef9e7509f5c1647b366607 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 23 Aug 2019 15:42:56 +0200 Subject: [PATCH 3/5] Update changelog --- CHANGELOG.md | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 661f599a6..556fca627 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,131 @@ # Changelog +## v1.4.0 + +**Since v1.3.0** + +### IMPORTANT NOTES + + * **Important** Add `plugins` directory in configuration file. **You should configure it in your production.yaml** + * **Important:** Deprecate NodeJS 8 (support ends on [December 2019](https://github.com/nodejs/Release#release-schedule)). Please upgrade to NodeJS 10. + * **Important:** Updated nginx template (you need to [update manually](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/production.md#nginx)) + * Fix long server responses on dual stack servers: https://github.com/Chocobozzz/PeerTube/commit/fd2ddcae8ff4eb10bf7168ac3c8801f06b37627f + * Improve images HTTP cache: https://github.com/Chocobozzz/PeerTube/commit/c928e1364fbdff87f27fd982710b95426a250491 + * **Important:** With the new theme system, we removed the dark mode button. Your administrator has to install [the dark theme](https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-theme-dark) + from their admin panel, and then users can choose this theme in their settings + * Changed the playlist REST API to fix various issues. See https://github.com/Chocobozzz/PeerTube/pull/1998 for more information + * Removed magnet URI support in download modal since most of the BitTorrent clients do not understand the `xs` parameter + * Renamed `Overview` page to `Discover` + +### Security + + * Moderators can only create and update regular users (thanks GGC-Project) + +### Maintenance + + * Create a dedicated `package.json` for CLI tools to reduce server dependencies size + * Add ability to set root password by environment at first start ([@darnuria](https://github.com/darnuria)) + * Removed unused `uuid` actor field (we already have a unique identifier that is the `preferredUsername`) + * Add ability to disable PeerTube log rotation ([@NassimBounouas](https://github.com/NassimBounouas)) + * Speedup font display ([@BO41](https://github.com/BO41)) + * Improve static files HTTP cache + * Add `--since` and `--until` parameters to import videos script to easily sync external channels ([@fflorent](https://github.com/fflorent)) + * Optimize `/watch/:uuid` endpoint + * Optimize Sequelize (SQL ORM) queries generation (consumes less CPU) + * Prune script is faster and can prune avatar files + +### Features + + * :tada: Support Finnish, Greek and Scottish Gaelic languages + * :tada: Add basic plugins and themes support (**beta**): https://docs.joinpeertube.org/#/contribute-plugins + * Install plugins or themes from the administration panel + * Choose a default theme for your instance + * Users can choose the theme they want among the list of themes their administrator installed + * :tada: Add ability to upload audio files: PeerTube will merge the audio file and the thumbnail to create a video + * Multi step registration: + * Add ability for new users to create their default channel + * Guess the account username/channel username according to their display name + * Add explanations about what the purpose of a username/channel name is, and what a channel is + * Improve account video channels page: + * Set it as the default page for the account page in order to avoid confusion between the account homepage and the video channel homepage + * Display channels in rows with some of their videos + * Support more URL parameters in embeds: `muted`, `loop`, `peertubeLink` + * Redesign share modal and add customizations: + * Start/stop at a specific timestamp + * Automatically play/mute/loop the video + * Set a specific subtitle by default + * Group subscriptions and recently added videos in chronological order + * Add ability for users to change their email address + * Add ability to update the support field of all channel videos when we update the channel support field + * Add a language filter in user preferences to display only videos in specific languages + * Add instance follows list in a dedicated tab in the "About" page + * Add ability to set to private a public/unlisted video or video playlist + * Transcode in the `tmp` directory for s3fs compatibility ([@libertysoft3](https://github.com/libertysoft3)) + * Add a button to copy account username ([@NassimBounouas](https://github.com/NassimBounouas)) + * Redirect to "Local videos" page when going to the `peertube` account page + * Rearrange search filter options ([@realityfabric](https://github.com/realityfabric)) + * Close modal after clicking on download ([@LeoMouyna](https://github.com/LeoMouyna)) + * Add ability for admins to customize emails object prefix and body signature ([@yohanboniface](https://github.com/yohanboniface)) + * Support 4K transcoding + * Add link of the follower profile in administration ([@NassimBounouas](https://github.com/NassimBounouas)) + * Add subject field in contact form ([@NassimBounouas](https://github.com/NassimBounouas)) + * Add rate limit to registration and API endpoints + * Add "video quota used" sortable column in user admin list ([@darnuria](https://github.com/darnuria)) + * Automatically update the playlist thumbnail according to the video at the first position (if the user did not set a specific thumbnail) + * Automatically remove dead followings + * Federate comment deletion if the comment was deleted by the video owner + +### Bug fixes + + * Fix transcoding information in features table ([LiPek](https://github.com/LiPeK)) + * Fix tools auth with remote instances + * Fix various issues in upload/import scripts + * Fix redundancy exceeded quota + * Fix login with email ([@NassimBounouas](https://github.com/NassimBounouas)) + * Fix quota display in features table + * Fix transcoding help placement + * Fix invisible videos in playlists + * Fix HLS transcoding in lower resolutions + * Fix various federation issues + * Fix mute badge labels + * Fix broken follow notification when the actor is deleted + * Fix overflow and playlist block width in the watch page + * Fix search results overflow on mobile + * Fix infinite scroll on big screens + * Fix start time on some HLS videos + * Fix socket notification with multiple user tabs + * Fix redundancy if the instance has already the file on disk + * Fix image and plugin CSP + * Fix video rows overflow + * Dismiss modals on pop state + * Go back when cancel NSFW modal + + +***Since v1.4.0-rc.1*** + +### Features + + * Add Finnish language support + +### Bug fixes + + * Fix broken front end on Firefox ESR (60) + * Fix prune storage script when using a same directory for multiple storage keys + * Relax plugin `package.json` validation + * Replace "overview" by "discover" in client titles + * Change configuration: `email.object` becomes `email.subject` + * Fix user creation by moderators + * Fix video playlist element removal + * Fix plugin card background color with dark theme + * Fix lazy static route with unknown avatars (404 instead of 500) + * Fix socket notification with multiple user tabs + * Fix redundancy if the instance has already the file on disk + * Fix image and plugin CSP + * Fix video rows overflow + * Dismiss modals on pop state + * Go back when cancel NSFW modal + + ## v1.4.0-rc.1 ### IMPORTANT NOTES From ee41d06e14be352d9160092885f5f9f60598d7cb Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 26 Aug 2019 08:49:22 +0200 Subject: [PATCH 4/5] Fix changelog --- CHANGELOG.md | 70 ++++++++++++++++++++++++++-------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 556fca627..bb0c74bb7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## v1.4.0 -**Since v1.3.0** +**Since v1.3.1** ### IMPORTANT NOTES @@ -33,7 +33,7 @@ * Optimize `/watch/:uuid` endpoint * Optimize Sequelize (SQL ORM) queries generation (consumes less CPU) * Prune script is faster and can prune avatar files - + ### Features * :tada: Support Finnish, Greek and Scottish Gaelic languages @@ -74,7 +74,7 @@ * Automatically update the playlist thumbnail according to the video at the first position (if the user did not set a specific thumbnail) * Automatically remove dead followings * Federate comment deletion if the comment was deleted by the video owner - + ### Bug fixes * Fix transcoding information in features table ([LiPek](https://github.com/LiPeK)) @@ -136,7 +136,7 @@ * Fix long server responses on dual stack servers: https://github.com/Chocobozzz/PeerTube/commit/fd2ddcae8ff4eb10bf7168ac3c8801f06b37627f * Improve images HTTP cache: https://github.com/Chocobozzz/PeerTube/commit/c928e1364fbdff87f27fd982710b95426a250491 * **Important:** With the new theme system, we removed the dark mode button. Your administrator has to install [the dark theme](https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-theme-dark) - from their admin panel, and then users can choose this theme in their settings + from their admin panel, and then users can choose this theme in their settings * Changed the playlist REST API to fix various issues. See https://github.com/Chocobozzz/PeerTube/pull/1998 for more information * Removed magnet URI support in download modal since most of the BitTorrent clients do not understand the `xs` parameter * Renamed `Overview` page to `Discover` @@ -153,7 +153,7 @@ * Optimize `/watch/:uuid` endpoint * Optimize Sequelize (SQL ORM) queries generation (consumes less CPU) * Prune script is faster and can prune avatar files - + ### Features * :tada: Support Greek and Scottish Gaelic languages @@ -194,7 +194,7 @@ * Automatically update the playlist thumbnail according to the video at the first position (if the user did not set a specific thumbnail) * Automatically remove dead followings * Federate comment deletion if the comment was deleted by the video owner - + ### Bug fixes * Fix transcoding information in features table ([LiPek](https://github.com/LiPeK)) @@ -224,7 +224,7 @@ * Fix error in video upload/update form when scheduling publication * Fix black theme on some pages * Fix video import if auto blacklist is enabled - + ## v1.3.0 @@ -234,8 +234,8 @@ * **nginx** Remove `text/html` from `gzip_types`: https://github.com/Chocobozzz/PeerTube/commit/7eeb6a0ba4028d0e20847b846332dd0b7747c7f8 [@bnjbvr](https://github.com/bnjbvr) * Add `streaming_playlists` directory in configuration file. **You should configure it in your production.yaml** - * CSP configuration changed: it's now in a [dedicated section](https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L110) - + * CSP configuration changed: it's now in a [dedicated section](https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L110) + ### Maintenance * Add GitPod support ([@jankeromnes](https://github.com/jankeromnes)) that could help people to contribute on PeerTube: https://github.com/Chocobozzz/PeerTube/blob/develop/.github/CONTRIBUTING.md#online-development @@ -244,14 +244,14 @@ * Add `NOCLIENT` env support to only install server dependencies. Example: `NOCLIENT=true yarn install --pure-lockfile` ([@rigelk](https://github.com/rigelk)) ### Docker - + * **Important**: Add host network mode to the reverse proxy section (without this, it could break videos views and P2P: https://github.com/Chocobozzz/PeerTube/issues/1643#issuecomment-464789666) - * **Important**: Add a network section to [docker-compose.yml template](https://github.com/Chocobozzz/PeerTube/blob/develop/support/docker/production/docker-compose.yml) + * **Important**: Add a network section to [docker-compose.yml template](https://github.com/Chocobozzz/PeerTube/blob/develop/support/docker/production/docker-compose.yml) and update your [.env](https://github.com/Chocobozzz/PeerTube/blob/develop/support/docker/production/.env#L8) to fix IP forwarding issue ([@Nutomic](https://github.com/nutomic)) * Fix SMTP default configuration ([@Nutomic](https://github.com/nutomic)) ### Features - + * Add video playlist support * A user has a default `Watch-later` playlist * A user can create private, unlisted or public playlists @@ -333,13 +333,13 @@ and update your [.env](https://github.com/Chocobozzz/PeerTube/blob/develop/suppo * Fix crash in files cache * Fix playlist view/update 403 * Fix search with bad webfinger handles - - + + ## v1.3.0-rc.2 ### Docker - * Add a network section to [docker-compose.yml template](https://github.com/Chocobozzz/PeerTube/blob/develop/support/docker/production/docker-compose.yml) + * Add a network section to [docker-compose.yml template](https://github.com/Chocobozzz/PeerTube/blob/develop/support/docker/production/docker-compose.yml) and update your [.env](https://github.com/Chocobozzz/PeerTube/blob/develop/support/docker/production/.env#L8) to fix IP forwarding issue ([@Nutomic](https://github.com/nutomic)) ### Bug fixes @@ -359,8 +359,8 @@ and update your [.env](https://github.com/Chocobozzz/PeerTube/blob/develop/suppo * **nginx** Remove `text/html` from `gzip_types`: https://github.com/Chocobozzz/PeerTube/commit/7eeb6a0ba4028d0e20847b846332dd0b7747c7f8 [@bnjbvr](https://github.com/bnjbvr) * Add `streaming_playlists` directory in configuration file. **You should configure it in your production.yaml** - * CSP configuration changed: it's now in a [dedicated section](https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L110) - + * CSP configuration changed: it's now in a [dedicated section](https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L110) + ## Maintenance * Add GitPod support ([@jankeromnes](https://github.com/jankeromnes)) that could help people to contribute on PeerTube: https://github.com/Chocobozzz/PeerTube/blob/develop/.github/CONTRIBUTING.md#online-development @@ -369,12 +369,12 @@ and update your [.env](https://github.com/Chocobozzz/PeerTube/blob/develop/suppo * Add `NOCLIENT` env support to only install server dependencies. Example: `NOCLIENT=true yarn install --pure-lockfile` ([@rigelk](https://github.com/rigelk)) ### Docker - + * **Important**: Add host network mode to the reverse proxy section (without this, it could break videos views and P2P: https://github.com/Chocobozzz/PeerTube/issues/1643#issuecomment-464789666) * Fix SMTP default configuration ([@Nutomic](https://github.com/nutomic)) ### Features - + * Add video playlist support * A user has a default `Watch-later` playlist * A user can create private, unlisted or public playlists @@ -581,7 +581,7 @@ and update your [.env](https://github.com/Chocobozzz/PeerTube/blob/develop/suppo * Disable Træfik web UI ### Features - + * Automatically resume videos if the user is logged in * Hide automatically the menu when the window is resized ([@BO41](https://github.com/BO41)) * Remove confirm modal for JavaScript/CSS injection ([@scanlime](https://github.com/scanlime)) @@ -688,16 +688,16 @@ and update your [.env](https://github.com/Chocobozzz/PeerTube/blob/develop/suppo * Fix player progress bar/seeking when changing resolution * Fix search tab title with no search * Fix YouTube video import with some videos - + ## v1.1.0-alpha.2 (since v1.1.0-alpha.1) ### Security/Maintenance/Federation - + * Add HTTP Signature in addition to Linked Signature: * It's faster - * Will allow us to use RSA Signature 2018 in the future without too much incompatibilities in the peertube federation - + * Will allow us to use RSA Signature 2018 in the future without too much incompatibilities in the peertube federation + ### Features * Set shorter keyframe interval for transcoding (2 seconds) ([@Nutomic](https://github.com/nutomic)) @@ -718,7 +718,7 @@ and update your [.env](https://github.com/Chocobozzz/PeerTube/blob/develop/suppo ## v1.0.1 ### Security/Maintenance/Federation - + * Add HTTP Signature in addition to Linked Signature: * It's faster * Will allow us to use RSA Signature 2018 in the future without too much incompatibilities in the peertube federation @@ -740,7 +740,7 @@ This release could contain bugs. Don't expect a stable v1.1.0 until December :) * Add docker dev image ([@am97](https://github.com/am97)) ### Features - + * Automatically resume videos if the user is logged in * Hide automatically the menu when the window is resized ([@BO41](https://github.com/BO41)) * Remove confirm modal for JavaScript/CSS injection ([@scanlime](https://github.com/scanlime)) @@ -834,7 +834,7 @@ This release could contain bugs. Don't expect a stable v1.1.0 until December :) * Increase timeout on upload endpoint * Fix redundancy with videos already duplicated by another instance(s) * Correctly delete files on failed import - + ## v1.0.0-beta.15 @@ -854,7 +854,7 @@ This release could contain bugs. Don't expect a stable v1.1.0 until December :) * Fix redundancy totalVideos stats * Reduce video import TTL to 1 hour * Only duplicate public videos - + ## v1.0.0-beta.14 @@ -877,7 +877,7 @@ This release could contain bugs. Don't expect a stable v1.1.0 until December :) * Add chevron hotkeys to change playback rate ([@rigelk](https://github.com/rigelk)) ### Bug fixes - + * Fix 24 hours delay to process views * Fix tag search on overview page * Handle actors search beginning with '@' @@ -897,14 +897,14 @@ This release could contain bugs. Don't expect a stable v1.1.0 until December :) * Improve keyboard navigation ([@rigelk](https://github.com/rigelk)) * Remember theme in local storage ([@rigelk](https://github.com/rigelk)) - + ### Bug fixes * Fix upgrade/installation on node 8.12 (bcrypt issue) * Fix video channel deletion * Fix video channel RSS * Fix video views increment - + ## v1.0.0-beta.12 @@ -912,7 +912,7 @@ This release could contain bugs. Don't expect a stable v1.1.0 until December :) ### BREAKING CHANGES - * Users can now use the name they want for their channel. + * Users can now use the name they want for their channel. We will therefore favour the display of video channel handles/names instead of account in the future. ### Documentation @@ -925,9 +925,9 @@ This release could contain bugs. Don't expect a stable v1.1.0 until December :) ### nginx template * Add gzip support ([@scanlime](https://github.com/scanlime)) - + ### Docker template - + * Add quota to the docker configuration values ([@kaiyou](https://github.com/kaiyou)) ### Features @@ -972,7 +972,7 @@ This release could contain bugs. Don't expect a stable v1.1.0 until December :) * Fix thumbnail/preview in upload.js script * Fix import-videos.js duplicate detection * Fix occitan language label - + ## v1.0.0-beta.11 From f01dc977ae3afc152f305cd14cb39c8207cf9ca4 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 26 Aug 2019 08:49:46 +0200 Subject: [PATCH 5/5] Bumped to version v1.4.0 --- client/package.json | 2 +- package.json | 2 +- support/doc/api/openapi.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/package.json b/client/package.json index 0789953e8..ac881d64c 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "peertube-client", - "version": "1.4.0-rc.1", + "version": "1.4.0", "private": true, "licence": "GPLv3", "author": { diff --git a/package.json b/package.json index ec0b08d50..ce689a4b3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "peertube", "description": "Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.", - "version": "1.4.0-rc.1", + "version": "1.4.0", "private": true, "licence": "AGPLv3", "engines": { diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index 78159f89c..24ffdbc15 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: PeerTube - version: 1.4.0-rc.1 + version: 1.4.0 contact: name: PeerTube Community url: 'https://joinpeertube.org'