CINXE.COM

Framasoft / PeerTube / PeerTube 路 GitLab

<!DOCTYPE html> <html class="gl-light ui-indigo with-top-bar with-header " lang="en"> <head prefix="og: http://ogp.me/ns#"> <meta charset="utf-8"> <meta content="IE=edge" http-equiv="X-UA-Compatible"> <meta content="width=device-width, initial-scale=1" name="viewport"> <title>Framasoft / PeerTube / PeerTube 路 GitLab</title> <script> //<![CDATA[ window.gon={};gon.features={"asyncSidebarCounts":false,"inlineBlame":false,"removeMonitorMetrics":true,"explainCodeChat":false,"upgradePdfjs":false,"issueEmailParticipants":true,"editBranchRules":true,"pageSpecificStyles":false,"workItems":true,"workItemsBeta":false,"workItemsAlpha":false,"namespaceLevelWorkItems":false}; //]]> </script> <script> //<![CDATA[ var gl = window.gl || {}; gl.startup_calls = {"/framasoft/peertube/PeerTube/-/refs/develop/logs_tree/?format=json\u0026offset=0\u0026ref_type=heads":{},"/framasoft/peertube/PeerTube/-/blob/develop/README.md?format=json\u0026viewer=rich":{}}; gl.startup_graphql_calls = [{"query":"query pathLastCommit($projectPath: ID!, $path: String, $ref: String!, $refType: RefType) {\n project(fullPath: $projectPath) {\n __typename\n id\n repository {\n __typename\n paginatedTree(path: $path, ref: $ref, refType: $refType) {\n __typename\n nodes {\n __typename\n lastCommit {\n __typename\n id\n sha\n title\n titleHtml\n descriptionHtml\n message\n webPath\n authoredDate\n authorName\n authorGravatar\n author {\n __typename\n id\n name\n avatarUrl\n webPath\n }\n signature {\n __typename\n ... on GpgSignature {\n gpgKeyPrimaryKeyid\n verificationStatus\n }\n ... on X509Signature {\n verificationStatus\n x509Certificate {\n id\n subject\n subjectKeyIdentifier\n x509Issuer {\n id\n subject\n subjectKeyIdentifier\n }\n }\n }\n ... on SshSignature {\n verificationStatus\n keyFingerprintSha256\n }\n }\n pipelines(ref: $ref, first: 1) {\n __typename\n edges {\n __typename\n node {\n __typename\n id\n detailedStatus {\n __typename\n id\n detailsPath\n icon\n tooltip\n text\n group\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}\n","variables":{"projectPath":"framasoft/peertube/PeerTube","ref":"develop","path":""}}]; if (gl.startup_calls && window.fetch) { Object.keys(gl.startup_calls).forEach(apiCall => { gl.startup_calls[apiCall] = { fetchCall: fetch(apiCall, { // Emulate XHR for Rails AJAX request checks headers: { 'X-Requested-With': 'XMLHttpRequest' }, // fetch won鈥檛 send cookies in older browsers, unless you set the credentials init option. // We set to `same-origin` which is default value in modern browsers. // See https://github.com/whatwg/fetch/pull/585 for more information. credentials: 'same-origin' }) }; }); } if (gl.startup_graphql_calls && window.fetch) { const headers = {"X-CSRF-Token":"1fQ-Zmu-2FiI4RrdOlfWhD1xhqrkv7BDU68aPrlLg5AY2aqxSA3-uHMtbOLGdiCid5r6TE4AbErk2hbuSUHe2A","x-gitlab-feature-category":"groups_and_projects"}; const url = `https://framagit.org/api/graphql` const opts = { method: "POST", headers: { "Content-Type": "application/json", ...headers, } }; gl.startup_graphql_calls = gl.startup_graphql_calls.map(call => ({ ...call, fetchCall: fetch(url, { ...opts, credentials: 'same-origin', body: JSON.stringify(call) }) })) } //]]> </script> <link rel="stylesheet" href="/assets/application-2e69a08e74e113997b5ba7fc5cd3e020a6f407d9ad552675adc6d78c2b23d0f7.css" /> <link rel="stylesheet" href="/assets/page_bundles/project-6cec78564d6cea3bff04ea869b064aeefbb329e17f03130eca4898aa36136a31.css" /><link rel="stylesheet" href="/assets/page_bundles/tree-1290ef28cdf5bf9a263be300651f92c985782ad16284daf5c07980e6117d6324.css" /><link rel="stylesheet" href="/assets/page_bundles/commit_description-1e2cba4dda3c7b30dd84924809020c569f1308dea51520fe1dd5d4ce31403195.css" /><link rel="stylesheet" href="/assets/page_bundles/projects-3ecc000073da836fc87d71a9d2bc48368b34718e3df8a1904ff6f9755a7692f7.css" /><link rel="stylesheet" href="/assets/page_bundles/work_items-cbc6a2e1633c4e847a617e35cc4833b85b80816db688d3d6dd3cd31d4251bc53.css" /><link rel="stylesheet" href="/assets/page_bundles/notes_shared-caf98f77b75b4b5399bdde69c069ee023fefdaa986d687c937e8010218785f51.css" /> <link rel="stylesheet" href="/assets/application_utilities-0bfb919a8a7eb0e89544dfe328e69461ccb276a565685fdb6ae3b14f3db3f41b.css" /> <link rel="stylesheet" href="/assets/tailwind-016e83140c37d97dbdff0cef9c063fcd43d214866665fb783774776747928853.css" /> <link rel="stylesheet" href="/assets/fonts-fae5d3f79948bd85f18b6513a025f863b19636e85b09a1492907eb4b1bb0557b.css" /> <link rel="stylesheet" href="/assets/highlight/themes/white-5ffbb706faebead681b01c8b52e92c6c0d35ad5b1c11d39012c90bcaf7892ca8.css" /> <link rel="preload" href="/assets/application_utilities-0bfb919a8a7eb0e89544dfe328e69461ccb276a565685fdb6ae3b14f3db3f41b.css" as="style" type="text/css"> <link rel="preload" href="/assets/application-2e69a08e74e113997b5ba7fc5cd3e020a6f407d9ad552675adc6d78c2b23d0f7.css" as="style" type="text/css"> <link rel="preload" href="/assets/highlight/themes/white-5ffbb706faebead681b01c8b52e92c6c0d35ad5b1c11d39012c90bcaf7892ca8.css" as="style" type="text/css"> <script src="/assets/webpack/runtime.507390f4.bundle.js" defer="defer"></script> <script src="/assets/webpack/main.a4c9ae4f.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.admin.abuse_reports.show-pages.admin.topics.edit-pages.admin.topics.new-pages.dashboar-c8f1318b.54872cef.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.admin.abuse_reports.show-pages.dashboard.issues-pages.dashboard.milestones.show-pages.-13e11bbf.1a73330b.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.admin.abuse_reports.show-pages.dashboard.issues-pages.groups.boards-pages.groups.issue-8dfa5f96.20262e8b.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.admin.abuse_reports.show-pages.dashboard.issues-pages.groups.boards-pages.groups.issue-f804d6c2.d4f467df.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.groups.new-pages.import.gitlab_projects.new-pages.import.manifest.new-pages.projects.n-44c6c18e.800b02b5.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.search.show-super_sidebar.98a5daf8.chunk.js" defer="defer"></script> <script src="/assets/webpack/super_sidebar.839aed14.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.projects-pages.projects.activity-pages.projects.alert_management.details-pages.project-2cf3f004.cf930f47.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.branches.new-pages.projects.commits.show-pages.proje-81161c0b.fadfe741.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.show-pages.projects.snippets.edit-pages.projects.sni-42df7d4c.e0fbcaff.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.show-pages.projects.snippets.show-pages.projects.tre-c684fcf6.1d8f2060.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.groups.details-pages.groups.show-pages.profiles.notifications.show-pages.projects.home-289c4da9.9f1d1637.chunk.js" defer="defer"></script> <script src="/assets/webpack/98.b88733f9.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.projects.branches.index-pages.projects.show-pages.projects.tags.index-pages.projects.tree.show.8a2956f9.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.shared.web_ide_link-pages.projects.show-pages.projec-cf300cc3.fce4c6a3.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.forks.new-pages.projects.show-pages.projects.tree.show.3bcd6d44.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.show-pages.projects.tree.show.d9689130.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.groups.show-pages.projects.show-pages.projects.tree.show.619c5d25.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.groups.show-pages.projects.home_panel-pages.projects.show.3e705e2d.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.projects.show-pages.projects.tree.show.18616402.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.projects.home_panel-pages.projects.show.34d068fd.chunk.js" defer="defer"></script> <script src="/assets/webpack/pages.projects.show.fd5fe12a.chunk.js" defer="defer"></script> <meta content="object" property="og:type"> <meta content="GitLab" property="og:site_name"> <meta content="Framasoft / PeerTube / PeerTube 路 GitLab" property="og:title"> <meta content="self-hosted, interconnected video streaming communities, back in your hands" property="og:description"> <meta content="https://framagit.org/uploads/-/system/project/avatar/18854/icon2.png" property="og:image"> <meta content="64" property="og:image:width"> <meta content="64" property="og:image:height"> <meta content="https://framagit.org/framasoft/peertube/PeerTube" property="og:url"> <meta content="summary" property="twitter:card"> <meta content="Framasoft / PeerTube / PeerTube 路 GitLab" property="twitter:title"> <meta content="self-hosted, interconnected video streaming communities, back in your hands" property="twitter:description"> <meta content="https://framagit.org/uploads/-/system/project/avatar/18854/icon2.png" property="twitter:image"> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="kYFJCaqByoxzsGtQ-hs7pFdk0PuAUczEOeLpnot8VmZcrN3eiTLsbIh8HW8GOs2CHY-sHSruEM2Ol-VOe3YLLg" /> <meta name="csp-nonce" /> <meta name="action-cable-url" content="/-/cable" /> <link href="/-/manifest.json" rel="manifest"> <link rel="icon" type="image/png" href="/uploads/-/system/appearance/favicon/1/git.png" id="favicon" data-original-href="/uploads/-/system/appearance/favicon/1/git.png" /> <link rel="apple-touch-icon" type="image/x-icon" href="/assets/apple-touch-icon-b049d4bc0dd9626f31db825d61880737befc7835982586d015bded10b4435460.png" /> <link href="/search/opensearch.xml" rel="search" title="Search GitLab" type="application/opensearchdescription+xml"> <link rel="alternate" type="application/atom+xml" title="PeerTube activity" href="/framasoft/peertube/PeerTube.atom" /> <!-- Matomo --> <script> //<![CDATA[ var _paq = window._paq = window._paq || []; _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); ; (function() { var u="//stats.framasoft.org/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', "29"]); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); //]]> </script><noscript><p><img src="//stats.framasoft.org/matomo.php?idsite=29" style="border:0;" alt="" /></p></noscript> <!-- End Matomo Code --> <meta content="self-hosted, interconnected video streaming communities, back in your hands" name="description"> <meta content="#222261" name="theme-color"> </head> <body class="tab-width-8 gl-browser-ie gl-platform-windows" data-find-file="/framasoft/peertube/PeerTube/-/find_file/develop?ref_type=heads" data-group="peertube" data-group-full-path="framasoft/peertube" data-namespace-id="17976" data-page="projects:show" data-page-type-id="PeerTube" data-project="PeerTube" data-project-full-path="framasoft/peertube/PeerTube" data-project-id="18854"> <script> //<![CDATA[ gl = window.gl || {}; gl.client = {"isIe":true,"isWindows":true}; //]]> </script> <header class="header-logged-out" data-testid="navbar"> <a class="gl-sr-only gl-accessibility" href="#content-body">Skip to content</a> <div class="container-fluid"> <nav aria-label="Explore GitLab" class="header-logged-out-nav gl-flex gl-gap-3 gl-justify-between"> <div class="gl-flex gl-items-center gl-gap-1"> <span class="gl-sr-only">GitLab</span> <a title="Homepage" id="logo" class="header-logged-out-logo has-tooltip" aria-label="Homepage" href="/"><img class="brand-header-logo lazy" alt="" data-src="/uploads/-/system/appearance/header_logo/1/logo.svg" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" /> </a></div> <ul class="gl-list-none gl-p-0 gl-m-0 gl-flex gl-gap-3 gl-items-center gl-grow"> <li class="header-logged-out-nav-item"> <a class="" href="/explore">Explore</a> </li> </ul> <ul class="gl-list-none gl-p-0 gl-m-0 gl-flex gl-gap-3 gl-items-center gl-justify-end"> <li class="header-logged-out-nav-item"> <a href="/users/sign_in?redirect_to_referer=yes">Sign in</a> </li> <li class="header-logged-out-nav-item"> <a class="gl-button btn btn-md btn-confirm " href="/users/sign_up"><span class="gl-button-text"> Register </span> </a></li> </ul> </nav> </div> </header> <div class="layout-page page-with-super-sidebar"> <aside class="js-super-sidebar super-sidebar super-sidebar-loading" data-command-palette="{&quot;project_files_url&quot;:&quot;/framasoft/peertube/PeerTube/-/files/develop?format=json&quot;,&quot;project_blob_url&quot;:&quot;/framasoft/peertube/PeerTube/-/blob/develop&quot;}" data-force-desktop-expanded-sidebar="" data-is-saas="false" data-root-path="/" data-sidebar="{&quot;is_logged_in&quot;:false,&quot;context_switcher_links&quot;:[{&quot;title&quot;:&quot;Explore&quot;,&quot;link&quot;:&quot;/explore&quot;,&quot;icon&quot;:&quot;compass&quot;}],&quot;current_menu_items&quot;:[{&quot;id&quot;:&quot;project_overview&quot;,&quot;title&quot;:&quot;PeerTube&quot;,&quot;avatar&quot;:&quot;/uploads/-/system/project/avatar/18854/icon2.png&quot;,&quot;entity_id&quot;:18854,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube&quot;,&quot;link_classes&quot;:&quot;shortcuts-project&quot;,&quot;is_active&quot;:true},{&quot;id&quot;:&quot;manage_menu&quot;,&quot;title&quot;:&quot;Manage&quot;,&quot;icon&quot;:&quot;users&quot;,&quot;avatar_shape&quot;:&quot;rect&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/activity&quot;,&quot;is_active&quot;:false,&quot;items&quot;:[{&quot;id&quot;:&quot;activity&quot;,&quot;title&quot;:&quot;Activity&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/activity&quot;,&quot;link_classes&quot;:&quot;shortcuts-project-activity&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;members&quot;,&quot;title&quot;:&quot;Members&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/project_members&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;labels&quot;,&quot;title&quot;:&quot;Labels&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/labels&quot;,&quot;is_active&quot;:false}],&quot;separated&quot;:false},{&quot;id&quot;:&quot;code_menu&quot;,&quot;title&quot;:&quot;Code&quot;,&quot;icon&quot;:&quot;code&quot;,&quot;avatar_shape&quot;:&quot;rect&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/merge_requests&quot;,&quot;is_active&quot;:false,&quot;items&quot;:[{&quot;id&quot;:&quot;project_merge_request_list&quot;,&quot;title&quot;:&quot;Merge requests&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/merge_requests&quot;,&quot;pill_count&quot;:&quot;0&quot;,&quot;link_classes&quot;:&quot;shortcuts-merge_requests&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;files&quot;,&quot;title&quot;:&quot;Repository&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/tree/develop&quot;,&quot;link_classes&quot;:&quot;shortcuts-tree&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;branches&quot;,&quot;title&quot;:&quot;Branches&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/branches&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;commits&quot;,&quot;title&quot;:&quot;Commits&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/commits/develop?ref_type=heads&quot;,&quot;link_classes&quot;:&quot;shortcuts-commits&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;tags&quot;,&quot;title&quot;:&quot;Tags&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/tags&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;graphs&quot;,&quot;title&quot;:&quot;Repository graph&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/network/develop?ref_type=heads&quot;,&quot;link_classes&quot;:&quot;shortcuts-network&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;compare&quot;,&quot;title&quot;:&quot;Compare revisions&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/compare?from=develop\u0026to=develop&quot;,&quot;is_active&quot;:false}],&quot;separated&quot;:false},{&quot;id&quot;:&quot;build_menu&quot;,&quot;title&quot;:&quot;Build&quot;,&quot;icon&quot;:&quot;rocket&quot;,&quot;avatar_shape&quot;:&quot;rect&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/pipelines&quot;,&quot;is_active&quot;:false,&quot;items&quot;:[{&quot;id&quot;:&quot;pipelines&quot;,&quot;title&quot;:&quot;Pipelines&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/pipelines&quot;,&quot;link_classes&quot;:&quot;shortcuts-pipelines&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;jobs&quot;,&quot;title&quot;:&quot;Jobs&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/jobs&quot;,&quot;link_classes&quot;:&quot;shortcuts-builds&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;pipeline_schedules&quot;,&quot;title&quot;:&quot;Pipeline schedules&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/pipeline_schedules&quot;,&quot;link_classes&quot;:&quot;shortcuts-builds&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;artifacts&quot;,&quot;title&quot;:&quot;Artifacts&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/artifacts&quot;,&quot;link_classes&quot;:&quot;shortcuts-builds&quot;,&quot;is_active&quot;:false}],&quot;separated&quot;:false},{&quot;id&quot;:&quot;deploy_menu&quot;,&quot;title&quot;:&quot;Deploy&quot;,&quot;icon&quot;:&quot;deployments&quot;,&quot;avatar_shape&quot;:&quot;rect&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/releases&quot;,&quot;is_active&quot;:false,&quot;items&quot;:[{&quot;id&quot;:&quot;releases&quot;,&quot;title&quot;:&quot;Releases&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/releases&quot;,&quot;link_classes&quot;:&quot;shortcuts-deployments-releases&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;model_registry&quot;,&quot;title&quot;:&quot;Model registry&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/ml/models&quot;,&quot;is_active&quot;:false}],&quot;separated&quot;:false},{&quot;id&quot;:&quot;operations_menu&quot;,&quot;title&quot;:&quot;Operate&quot;,&quot;icon&quot;:&quot;cloud-pod&quot;,&quot;avatar_shape&quot;:&quot;rect&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/environments&quot;,&quot;is_active&quot;:false,&quot;items&quot;:[{&quot;id&quot;:&quot;environments&quot;,&quot;title&quot;:&quot;Environments&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/environments&quot;,&quot;link_classes&quot;:&quot;shortcuts-environments&quot;,&quot;is_active&quot;:false}],&quot;separated&quot;:false},{&quot;id&quot;:&quot;analyze_menu&quot;,&quot;title&quot;:&quot;Analyze&quot;,&quot;icon&quot;:&quot;chart&quot;,&quot;avatar_shape&quot;:&quot;rect&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/value_stream_analytics&quot;,&quot;is_active&quot;:false,&quot;items&quot;:[{&quot;id&quot;:&quot;cycle_analytics&quot;,&quot;title&quot;:&quot;Value stream analytics&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/value_stream_analytics&quot;,&quot;link_classes&quot;:&quot;shortcuts-project-cycle-analytics&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;contributors&quot;,&quot;title&quot;:&quot;Contributor analytics&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/graphs/develop?ref_type=heads&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;ci_cd_analytics&quot;,&quot;title&quot;:&quot;CI/CD analytics&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/pipelines/charts&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;repository_analytics&quot;,&quot;title&quot;:&quot;Repository analytics&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/graphs/develop/charts&quot;,&quot;link_classes&quot;:&quot;shortcuts-repository-charts&quot;,&quot;is_active&quot;:false},{&quot;id&quot;:&quot;model_experiments&quot;,&quot;title&quot;:&quot;Model experiments&quot;,&quot;link&quot;:&quot;/framasoft/peertube/PeerTube/-/ml/experiments&quot;,&quot;is_active&quot;:false}],&quot;separated&quot;:false}],&quot;current_context_header&quot;:&quot;Project&quot;,&quot;support_path&quot;:&quot;https://contact.framasoft.org&quot;,&quot;docs_path&quot;:&quot;/help/docs&quot;,&quot;display_whats_new&quot;:false,&quot;show_version_check&quot;:null,&quot;search&quot;:{&quot;search_path&quot;:&quot;/search&quot;,&quot;issues_path&quot;:&quot;/dashboard/issues&quot;,&quot;mr_path&quot;:&quot;/dashboard/merge_requests&quot;,&quot;autocomplete_path&quot;:&quot;/search/autocomplete&quot;,&quot;settings_path&quot;:&quot;/search/settings&quot;,&quot;search_context&quot;:{&quot;group&quot;:{&quot;id&quot;:17976,&quot;name&quot;:&quot;PeerTube&quot;,&quot;full_name&quot;:&quot;Framasoft / PeerTube&quot;},&quot;group_metadata&quot;:{&quot;issues_path&quot;:&quot;/groups/framasoft/peertube/-/issues&quot;,&quot;mr_path&quot;:&quot;/groups/framasoft/peertube/-/merge_requests&quot;},&quot;project&quot;:{&quot;id&quot;:18854,&quot;name&quot;:&quot;PeerTube&quot;},&quot;project_metadata&quot;:{&quot;mr_path&quot;:&quot;/framasoft/peertube/PeerTube/-/merge_requests&quot;},&quot;code_search&quot;:true,&quot;ref&quot;:&quot;develop&quot;,&quot;scope&quot;:null,&quot;for_snippets&quot;:null}},&quot;panel_type&quot;:&quot;project&quot;,&quot;shortcut_links&quot;:[{&quot;title&quot;:&quot;Snippets&quot;,&quot;href&quot;:&quot;/explore/snippets&quot;,&quot;css_class&quot;:&quot;dashboard-shortcuts-snippets&quot;},{&quot;title&quot;:&quot;Groups&quot;,&quot;href&quot;:&quot;/explore/groups&quot;,&quot;css_class&quot;:&quot;dashboard-shortcuts-groups&quot;},{&quot;title&quot;:&quot;Projects&quot;,&quot;href&quot;:&quot;/explore/projects/starred&quot;,&quot;css_class&quot;:&quot;dashboard-shortcuts-projects&quot;}],&quot;terms&quot;:&quot;/-/users/terms&quot;}"></aside> <div class="content-wrapper"> <div class="broadcast-wrapper"> <div class="gl-broadcast-message banner js-broadcast-notification-33 indigo" data-broadcast-banner data-testid="banner-broadcast-message" role="alert"> <div class="gl-broadcast-message-content"> <div class="gl-broadcast-message-icon"> <svg class="s16" data-testid="bullhorn-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#bullhorn"></use></svg> </div> <div class="gl-broadcast-message-text"> <h2 class="gl-sr-only">Admin message</h2> <p>You don't pay for Framagit, because it is <strong>funded by donations to Framasoft</strong>. Our not-for-profit needs any support you can afford: <a href="https://support.framasoft.org" rel="nofollow noreferrer noopener" target="_blank">support.framasoft.org</a>.</p> <p>Framagit est gratuit car il est <strong>financ茅 par les dons 脿 Framasoft</strong>. Notre association a besoin de votre soutien sur <a href="https://soutenir.framasoft.org" rel="nofollow noreferrer noopener" target="_blank">soutenir.framasoft.org</a>.</p> </div> </div> <button class="gl-button btn btn-icon btn-sm btn-default btn-default-tertiary gl-broadcast-message-dismiss js-dismiss-current-broadcast-notification" aria-label="Close" data-id="33" data-expire-date="2024-12-02T22:59:43Z" data-cookie-key="hide_broadcast_message_33" type="button"><svg class="s16 gl-icon gl-button-icon " data-testid="close-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#close"></use></svg> </button> </div> </div> <div class="alert-wrapper alert-wrapper-top-space gl-flex gl-flex-col gl-gap-3 container-fluid container-limited"> <div class="gl-alert gl-alert-danger gl-alert-not-dismissible" role="alert"> <div class="gl-alert-icon-container"> <svg class="s16 gl-alert-icon gl-alert-icon-no-title" data-testid="error-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#error"></use></svg> </div> <div class="gl-alert-content" role="alert"> <div class="gl-alert-body"> GitLab may not work properly, because you are using an outdated web browser. <br> Please install a <a target="_blank" rel="noopener noreferrer" href="/help/install/requirements.md#supported-web-browsers">supported web browser</a> for a better experience. </div> </div> </div> </div> <div class="top-bar-fixed container-fluid" data-testid="top-bar"> <div class="top-bar-container gl-flex gl-items-center gl-gap-2"> <div class="gl-grow gl-basis-0 gl-flex gl-items-center gl-justify-start"> <button class="gl-button btn btn-icon btn-md btn-default btn-default-tertiary js-super-sidebar-toggle-expand super-sidebar-toggle -gl-ml-3" aria-controls="super-sidebar" aria-expanded="false" aria-label="Primary navigation sidebar" type="button"><svg class="s16 gl-icon gl-button-icon " data-testid="sidebar-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#sidebar"></use></svg> </button> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Framasoft","item":"https://framagit.org/framasoft"},{"@type":"ListItem","position":2,"name":"PeerTube","item":"https://framagit.org/framasoft/peertube"},{"@type":"ListItem","position":3,"name":"PeerTube","item":"https://framagit.org/framasoft/peertube/PeerTube"}]} </script> <div data-testid="breadcrumb-links" id="js-vue-page-breadcrumbs-wrapper"> <div data-breadcrumbs-json="[{&quot;text&quot;:&quot;Framasoft&quot;,&quot;href&quot;:&quot;/framasoft&quot;,&quot;avatarPath&quot;:&quot;/uploads/-/system/group/avatar/3/biglogo.jpg&quot;},{&quot;text&quot;:&quot;PeerTube&quot;,&quot;href&quot;:&quot;/framasoft/peertube&quot;,&quot;avatarPath&quot;:&quot;/uploads/-/system/group/avatar/17976/icon2.png&quot;},{&quot;text&quot;:&quot;PeerTube&quot;,&quot;href&quot;:&quot;/framasoft/peertube/PeerTube&quot;,&quot;avatarPath&quot;:&quot;/uploads/-/system/project/avatar/18854/icon2.png&quot;}]" id="js-vue-page-breadcrumbs"></div> <div id="js-injected-page-breadcrumbs"></div> </div> </div> <div class="gl-flex-none gl-flex gl-items-center gl-justify-center"> <div id="js-advanced-search-modal"></div> </div> <div class="gl-grow gl-basis-0 gl-flex gl-items-center gl-justify-end"> <div id="js-work-item-feedback"></div> </div> </div> </div> <div class="container-fluid container-limited project-highlight-puc"> <main class="content" id="content-body" itemscope itemtype="http://schema.org/SoftwareSourceCode"> <div class="flash-container flash-container-page sticky" data-testid="flash-container"> <div id="js-global-alerts"></div> </div> <header class="project-home-panel js-show-on-project-root gl-mt-5"> <div class="gl-flex gl-justify-between gl-flex-wrap gl-flex-col md:gl-flex-row gl-gap-5"> <div class="home-panel-title-row gl-flex gl-items-center"> <img srcset="/uploads/-/system/project/avatar/18854/icon2.png?width=48 1x, /uploads/-/system/project/avatar/18854/icon2.png?width=96 2x" alt="PeerTube" class="gl-avatar gl-avatar-s48 gl-self-start gl-shrink-0 gl-mr-3 !gl-rounded-base" height="48" width="48" loading="lazy" itemprop="image" src="/uploads/-/system/project/avatar/18854/icon2.png?width=48" /> <h1 class="home-panel-title gl-heading-1 gl-flex gl-items-center gl-flex-wrap gl-gap-3 gl-break-anywhere gl-mb-0" data-testid="project-name-content" itemprop="name"> PeerTube <span class="has-tooltip visibility-icon gl-inline-flex gl-text-secondary" data-container="body" data-placement="top" title="Public - The project can be accessed without any authentication."><svg class="s16 icon" data-testid="earth-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#earth"></use></svg></span> </h1> </div> <div data-can-read-project="true" data-id="18854" data-is-group="false" data-is-project-archived="false" data-is-project-empty="false" data-project-avatar="/uploads/-/system/project/avatar/18854/icon2.png" data-project-id="18854" data-project-name="PeerTube" data-project-visibility-level="public" data-sign-in-path="/users/sign_in?redirect_to_referer=yes" data-star-count="87" data-starred="false" data-starrers-path="/framasoft/peertube/PeerTube/-/starrers" id="js-home-panel"></div> </div> </header> <div class="project-page-indicator js-show-on-project-root"></div> <div class="project-page-layout"> <div class="project-page-layout-sidebar js-show-on-project-root gl-mt-5"> <aside class="project-page-sidebar" data-testid="project-page-sidebar"> <div class="project-page-sidebar-block home-panel-home-desc gl-py-4 gl-border-b gl-border-b-subtle !gl-pt-2"> <h2 class="gl-text-base gl-font-bold gl-leading-reset gl-text-strong gl-m-0 gl-mb-1">Project information</h2> <div class="home-panel-description gl-break-words"> <div class="home-panel-description-markdown read-more-container" data-read-more-height="320" itemprop="description"> <div class="read-more-content read-more-content--has-scrim"> <p data-sourcepos="1:1-1:75" dir="auto">self-hosted, interconnected video streaming communities, back in your hands</p> </div> <div class="js-read-more-trigger gl-hidden gl-w-full gl-h-8 gl-absolute gl-bottom-0 gl-z-2 gl-bg-default"> <button aria-label="Expand project information" type="button" class="gl-button btn btn-md btn-link "><span class="gl-button-text"> <svg class="s14" data-testid="chevron-down-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#chevron-down"></use></svg> Read more </span> </button></div> </div> </div> <div class="gl-mb-5"> <div class="gl-w-full gl-inline-flex gl-flex-wrap gl-text-base gl-font-normal gl-items-center -gl-mx-2 -gl-my-2" data-testid="project_topic_list"> <a class="gl-p-2" href="/explore/projects/topics/activitypub" itemprop="keywords"> <span class="gl-badge badge badge-pill badge-muted"><span class="gl-badge-content">activitypub</span></span> </a> <a class="gl-p-2" href="/explore/projects/topics/webtorrent" itemprop="keywords"> <span class="gl-badge badge badge-pill badge-muted"><span class="gl-badge-content">webtorrent</span></span> </a> <a class="gl-p-2" href="/explore/projects/topics/p2p" itemprop="keywords"> <span class="gl-badge badge badge-pill badge-muted"><span class="gl-badge-content">p2p</span></span> </a> <div class="text-nowrap gl-p-2" data-content="&lt;span class=&quot;gl-inline-flex gl-flex-wrap&quot;&gt; &lt;a class=&quot;gl-mr-3 gl-mb-3&quot; href=&quot;/explore/projects/topics/social-network&quot; itemprop=&quot;keywords&quot;&gt; &lt;span class=&quot;gl-badge badge badge-pill badge-muted&quot;&gt;&lt;span class=&quot;gl-badge-content&quot;&gt;social-network&lt;/span&gt;&lt;/span&gt; &lt;/a&gt; &lt;a class=&quot;gl-mr-3 gl-mb-3&quot; href=&quot;/explore/projects/topics/angular&quot; itemprop=&quot;keywords&quot;&gt; &lt;span class=&quot;gl-badge badge badge-pill badge-muted&quot;&gt;&lt;span class=&quot;gl-badge-content&quot;&gt;angular&lt;/span&gt;&lt;/span&gt; &lt;/a&gt; &lt;a class=&quot;gl-mr-3 gl-mb-3&quot; href=&quot;/explore/projects/topics/nodejs&quot; itemprop=&quot;keywords&quot;&gt; &lt;span class=&quot;gl-badge badge badge-pill badge-muted&quot;&gt;&lt;span class=&quot;gl-badge-content&quot;&gt;nodejs&lt;/span&gt;&lt;/span&gt; &lt;/a&gt; &lt;a class=&quot;gl-mr-3 gl-mb-3&quot; href=&quot;/explore/projects/topics/Webfinger&quot; itemprop=&quot;keywords&quot;&gt; &lt;span class=&quot;gl-badge badge badge-pill badge-muted&quot;&gt;&lt;span class=&quot;gl-badge-content&quot;&gt;Webfinger&lt;/span&gt;&lt;/span&gt; &lt;/a&gt; &lt;a class=&quot;gl-mr-3 gl-mb-3&quot; href=&quot;/explore/projects/topics/federation&quot; itemprop=&quot;keywords&quot;&gt; &lt;span class=&quot;gl-badge badge badge-pill badge-muted&quot;&gt;&lt;span class=&quot;gl-badge-content&quot;&gt;federation&lt;/span&gt;&lt;/span&gt; &lt;/a&gt; &lt;/span&gt; " data-html="true" data-placement="top" data-title="More topics" data-toggle="popover" data-triggers="focus hover" role="button" tabindex="0"> + 5 more </div> </div> </div> <div class="gl-mb-2 !gl-mb-4"> <div class="progress repository-languages-bar js-show-on-project-root"><div class="progress-bar has-tooltip" style="width: 89.77%; background-color:#2b7489" data-html="true" title="&lt;span class=&quot;repository-language-bar-tooltip-language&quot;&gt;TypeScript&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;repository-language-bar-tooltip-share&quot;&gt;89.8%&lt;/span&gt;"></div><div class="progress-bar has-tooltip" style="width: 6.46%; background-color:#e34c26" data-html="true" title="&lt;span class=&quot;repository-language-bar-tooltip-language&quot;&gt;HTML&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;repository-language-bar-tooltip-share&quot;&gt;6.5%&lt;/span&gt;"></div><div class="progress-bar has-tooltip" style="width: 2.98%; background-color:#c6538c" data-html="true" title="&lt;span class=&quot;repository-language-bar-tooltip-language&quot;&gt;SCSS&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;repository-language-bar-tooltip-share&quot;&gt;3.0%&lt;/span&gt;"></div><div class="progress-bar has-tooltip" style="width: 0.41%; background-color:#89e051" data-html="true" title="&lt;span class=&quot;repository-language-bar-tooltip-language&quot;&gt;Shell&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;repository-language-bar-tooltip-share&quot;&gt;0.4%&lt;/span&gt;"></div><div class="progress-bar has-tooltip" style="width: 0.25%; background-color:#a86454" data-html="true" title="&lt;span class=&quot;repository-language-bar-tooltip-language&quot;&gt;Pug&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;repository-language-bar-tooltip-share&quot;&gt;0.3%&lt;/span&gt;"></div></div> </div> <div class="project-badges gl-mb-2" data-testid="project-badges-content"> <a class="gl-mr-3" data-qa-link-url="https://travis-ci.org/Chocobozzz/PeerTube" data-testid="badge-image-link" href="https://travis-ci.org/Chocobozzz/PeerTube" rel="noopener noreferrer" target="_blank"><img alt="Project badge" aria-hidden class="project-badge" src="https://travis-ci.com/Chocobozzz/PeerTube.svg?branch=develop"></a><a class="gl-mr-3" data-qa-link-url="https://github.com/Chocobozzz/PeerTube/releases/latest" data-testid="badge-image-link" href="https://github.com/Chocobozzz/PeerTube/releases/latest" rel="noopener noreferrer" target="_blank"><img alt="Project badge" aria-hidden class="project-badge" src="https://img.shields.io/github/release-date-pre/Chocobozzz/PeerTube.svg"></a><a class="gl-mr-3" data-qa-link-url="https://github.com/Chocobozzz/PeerTube/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc" data-testid="badge-image-link" href="https://github.com/Chocobozzz/PeerTube/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc" rel="noopener noreferrer" target="_blank"><img alt="Project badge" aria-hidden class="project-badge" src="https://img.shields.io/github/issues-raw/chocobozzz/PeerTube.svg"></a><a class="gl-mr-3" data-qa-link-url="https://weblate.framasoft.org/projects/peertube/angular/" data-testid="badge-image-link" href="https://weblate.framasoft.org/projects/peertube/angular/" rel="noopener noreferrer" target="_blank"><img alt="Project badge" aria-hidden class="project-badge" src="https://weblate.framasoft.org/widgets/peertube/-/angular/svg-badge.svg"></a></div> </div> <div class="project-page-sidebar-block gl-py-4 gl-border-b gl-border-b-subtle"> <nav class="project-stats"> <ul class="nav gl-gap-y-2 gl-gap-x-5"> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2" href="/framasoft/peertube/PeerTube/-/commits/develop"><svg class="s16 icon gl-mr-3 gl-text-gray-500" data-testid="commit-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#commit"></use></svg><strong class="project-stat-value">13,776</strong> Commits</a> </li> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2" href="/framasoft/peertube/PeerTube/-/branches"><svg class="s16 icon gl-mr-3 gl-text-gray-500" data-testid="branch-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#branch"></use></svg><strong class="project-stat-value">78</strong> Branches</a> </li> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2" href="/framasoft/peertube/PeerTube/-/tags"><svg class="s16 icon gl-mr-3 gl-text-gray-500" data-testid="label-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#label"></use></svg><strong class="project-stat-value">139</strong> Tags</a> </li> </ul> </nav> </div> <div class="project-page-sidebar-block gl-py-4 gl-border-b gl-border-b-subtle"> <div class="project-buttons gl-mb-2 js-show-on-project-root" data-testid="project-buttons"> <ul class="nav gl-gap-y-2 gl-gap-x-5"> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2 btn-default" href="/framasoft/peertube/PeerTube/-/blob/develop/README.md"><svg class="s16 icon gl-mr-3 gl-text-gray-500" data-testid="doc-text-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#doc-text"></use></svg>README</a> </li> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2 btn-default" itemprop="license" href="/framasoft/peertube/PeerTube/-/blob/develop/LICENSE"><svg class="s16 icon gl-mr-3 gl-text-gray-500" data-testid="scale-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#scale"></use></svg><span class="project-stat-value">GNU AGPLv3</span></a> </li> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2 btn-default" href="/framasoft/peertube/PeerTube/-/blob/develop/CHANGELOG.md"><svg class="s16 icon gl-mr-3 gl-text-gray-500" data-testid="doc-text-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#doc-text"></use></svg>CHANGELOG</a> </li> </ul> </div> </div> <div class="project-page-sidebar-block gl-py-4"> <p class="gl-font-bold gl-text-strong gl-m-0 gl-mb-1">Created on</p> <span>October 30, 2017</span> </div> </aside> </div> <div class="project-page-layout-content"> <div class="project-show-files"> <div class="tree-holder clearfix js-per-page gl-mt-5" data-blame-per-page="1000" id="tree-holder"> <div class="nav-block gl-flex gl-flex-col sm:gl-flex-row gl-items-stretch"> <div class="tree-ref-container gl-flex gl-flex-wrap gl-gap-2 mb-2 mb-md-0"> <div class="tree-ref-holder gl-max-w-26" data-testid="ref-dropdown-container"> <div data-project-id="18854" data-project-root-path="/framasoft/peertube/PeerTube" data-ref-type="heads" id="js-tree-ref-switcher"></div> </div> <div data-can-collaborate="false" data-can-edit-tree="false" data-can-push-code="false" data-new-blob-path="/framasoft/peertube/PeerTube/-/new/develop" data-new-branch-path="/framasoft/peertube/PeerTube/-/branches/new" data-new-dir-path="/framasoft/peertube/PeerTube/-/create_dir/develop" data-new-tag-path="/framasoft/peertube/PeerTube/-/tags/new" data-upload-path="/framasoft/peertube/PeerTube/-/create/develop" id="js-repo-breadcrumb"></div> </div> <div id="js-blob-controls"></div> <div class="tree-controls"> <div class="gl-flex gl-flex-wrap gl-gap-3 gl-mb-3 sm:gl-mb-0"> <div data-history-link="/framasoft/peertube/PeerTube/-/commits/develop" id="js-tree-history-link"></div> <button class="gl-button btn btn-md btn-default has-tooltip shortcuts-find-file" title="Go to file, press &lt;kbd class=&#39;flat ml-1&#39; aria-hidden=true&gt;/~&lt;/kbd&gt; or &lt;kbd class=&#39;flat ml-1&#39; aria-hidden=true&gt;t&lt;/kbd&gt;" aria-keyshortcuts="/+~ t" data-html="true" data-event-tracking="click_find_file_button_on_repository_pages" type="button"><span class="gl-button-text"> Find file </span> </button> <div class="project-code-holder gl-hidden sm:gl-inline-block"> <div class="git-clone-holder js-git-clone-holder"> <div data-directory-download-links="[{&quot;text&quot;:&quot;zip&quot;,&quot;path&quot;:&quot;/framasoft/peertube/PeerTube/-/archive/develop/PeerTube-develop.zip&quot;},{&quot;text&quot;:&quot;tar.gz&quot;,&quot;path&quot;:&quot;/framasoft/peertube/PeerTube/-/archive/develop/PeerTube-develop.tar.gz&quot;},{&quot;text&quot;:&quot;tar.bz2&quot;,&quot;path&quot;:&quot;/framasoft/peertube/PeerTube/-/archive/develop/PeerTube-develop.tar.bz2&quot;},{&quot;text&quot;:&quot;tar&quot;,&quot;path&quot;:&quot;/framasoft/peertube/PeerTube/-/archive/develop/PeerTube-develop.tar&quot;}]" data-http-url="https://framagit.org/framasoft/peertube/PeerTube.git" data-ssh-url="git@framagit.org:framasoft/peertube/PeerTube.git" data-xcode-url="" id="js-code-dropdown"></div> </div> </div> </div> <div class="project-code-holder gl-flex gl-gap-3 sm:!gl-hidden"> <div class="js-source-code-dropdown" data-css-class="" data-download-artifacts="[]" data-download-links="[{&quot;text&quot;:&quot;zip&quot;,&quot;path&quot;:&quot;/framasoft/peertube/PeerTube/-/archive/develop/PeerTube-develop.zip&quot;},{&quot;text&quot;:&quot;tar.gz&quot;,&quot;path&quot;:&quot;/framasoft/peertube/PeerTube/-/archive/develop/PeerTube-develop.tar.gz&quot;},{&quot;text&quot;:&quot;tar.bz2&quot;,&quot;path&quot;:&quot;/framasoft/peertube/PeerTube/-/archive/develop/PeerTube-develop.tar.bz2&quot;},{&quot;text&quot;:&quot;tar&quot;,&quot;path&quot;:&quot;/framasoft/peertube/PeerTube/-/archive/develop/PeerTube-develop.tar&quot;}]"></div> <div class="btn-group mobile-git-clone js-mobile-git-clone btn-block"> <button class="gl-button btn btn-md btn-confirm hover:gl-no-underline gl-text-gray-700 js-clone-dropdown-label" title="Copy" aria-label="Copy" aria-live="polite" data-toggle="tooltip" data-placement="bottom" data-container="body" data-html="true" data-button-text="Copy HTTPS clone URL" data-size="medium" data-category="primary" data-variant="confirm" data-hide-button-icon="true" data-clipboard-text="https://framagit.org/framasoft/peertube/PeerTube.git" type="button"><span class="gl-button-text"> Copy HTTPS clone URL </span> </button> <button class="btn gl-button btn-confirm dropdown-toggle js-dropdown-toggle flex-grow-0 gl-flex gl-items-center gl-justify-center w-auto ml-0" data-toggle="dropdown" type="button"> <svg class="s16 dropdown-btn-icon icon" data-testid="chevron-down-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#chevron-down"></use></svg> </button> <ul class="dropdown-menu dropdown-menu-selectable dropdown-menu-right clone-options-dropdown" data-dropdown> <li class="js-clone-links"> <a class="copy ssh clone url-selector is-active" href="git@framagit.org:framasoft/peertube/PeerTube.git" data-clone-type="ssh"><strong class="dropdown-menu-inner-title">Copy SSH clone URL</strong><span class="dropdown-menu-inner-content">git@framagit.org:framasoft/peertube/PeerTube.git</span></a> </li> <li class="js-clone-links"> <a class="copy https clone url-selector " href="https://framagit.org/framasoft/peertube/PeerTube.git" data-clone-type="http"><strong class="dropdown-menu-inner-title">Copy HTTPS clone URL</strong><span class="dropdown-menu-inner-content">https://framagit.org/framasoft/peertube/PeerTube.git</span></a> </li> </ul> </div> </div> </div> </div> <div class="info-well gl-hidden sm:gl-flex project-last-commit gl-flex-col gl-mt-5"> <div class="gl-m-auto" data-ref-type="heads" id="js-last-commit"> <div class="gl-spinner-container" role="status"><span aria-hidden class="gl-spinner gl-spinner-md gl-spinner-dark !gl-align-text-bottom"></span><span class="gl-sr-only !gl-absolute">Loading</span> </div> </div> </div> <div data-escaped-ref="develop" data-full-name="Framasoft / PeerTube / PeerTube" data-project-path="framasoft/peertube/PeerTube" data-project-short-path="PeerTube" data-ref="develop" data-ref-type="heads" id="js-tree-list"></div> </div> </div> </div> </div> </main> </div> </div> </div> <script> //<![CDATA[ if ('loading' in HTMLImageElement.prototype) { document.querySelectorAll('img.lazy').forEach(img => { img.loading = 'lazy'; let imgUrl = img.dataset.src; // Only adding width + height for avatars for now if (imgUrl.indexOf('/avatar/') > -1 && imgUrl.indexOf('?') === -1) { const targetWidth = img.getAttribute('width') || img.width; imgUrl += `?width=${targetWidth}`; } img.src = imgUrl; img.removeAttribute('data-src'); img.classList.remove('lazy'); img.classList.add('js-lazy-loaded'); img.dataset.testid = 'js-lazy-loaded-content'; }); } //]]> </script> <script> //<![CDATA[ gl = window.gl || {}; gl.experiments = {}; //]]> </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10