├── .editorconfig
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── config.yml
│ └── new_issue.md
├── dependabot.yml
└── workflows
│ ├── acceptance-tests.yml
│ ├── cleanup-old-deployments.js
│ ├── cleanup-old-deployments.yml
│ ├── github-project.yml
│ ├── prepare-release.yml
│ └── test-and-ci.yml
├── .gitignore
├── .husky
└── pre-commit
├── CHANGELOG.md
├── CODING_GUIDELINES.md
├── LICENSE
├── README.md
├── chartpress.yaml
├── client
├── .dockerignore
├── .eslintignore
├── .eslintrc.json
├── .prettierignore
├── .rtk
│ ├── README.md
│ ├── emptyTemplate.ts
│ └── openapi-config.ts
├── .storybook
│ ├── main.ts
│ ├── manager.ts
│ └── preview.tsx
├── Dockerfile
├── README.md
├── docker-entrypoint.sh
├── index.html
├── nginx.vh.default.conf
├── package-lock.json
├── package.json
├── public
│ ├── ads.txt
│ ├── android-chrome-128x128.png
│ ├── android-chrome-192x192.png
│ ├── android-chrome-512x512.png
│ ├── apple-touch-icon-180x180.png
│ ├── clock-rotate-left-icon.svg
│ ├── connect.svg
│ ├── connectGreen.svg
│ ├── dashboardHeader1080x280.png
│ ├── dashboardHeader1920x280.png
│ ├── dashboardHeader2560x280.png
│ ├── dashboardHeader3840x280.png
│ ├── dashboardHeader640x200.png
│ ├── dashboardHeader750x200.png
│ ├── dashboardV2header.png
│ ├── dataset-icon.png
│ ├── dataset-icon.svg
│ ├── earlyAccessDark.png
│ ├── earlyAccessDark.svg
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── favicon-48x48.png
│ ├── favicon-maskable.svg
│ ├── favicon.ico
│ ├── favicon.svg
│ ├── manifest.json
│ ├── project-icon.png
│ ├── project-icon.svg
│ ├── renku-badge.svg
│ ├── safari-pinned-tab.svg
│ ├── static
│ │ └── public
│ │ │ ├── img
│ │ │ ├── 404@0.25x.png
│ │ │ ├── 404@0.5x.png
│ │ │ ├── 404@0.75x.png
│ │ │ ├── earlyAccessDark.png
│ │ │ ├── earlyAccessDark.svg
│ │ │ ├── earlyAccessLight.svg
│ │ │ ├── logo-yellow.svg
│ │ │ ├── logo.svg
│ │ │ ├── redirect
│ │ │ │ └── frog
│ │ │ │ │ ├── Large_1.png
│ │ │ │ │ ├── Large_2.png
│ │ │ │ │ ├── Large_3.png
│ │ │ │ │ ├── Large_4.png
│ │ │ │ │ ├── Large_5.png
│ │ │ │ │ ├── Small_1.png
│ │ │ │ │ ├── Small_2.png
│ │ │ │ │ ├── Small_3.png
│ │ │ │ │ ├── Small_4.png
│ │ │ │ │ ├── Small_5.png
│ │ │ │ │ ├── X-Large_1.png
│ │ │ │ │ ├── X-Large_2.png
│ │ │ │ │ ├── X-Large_3.png
│ │ │ │ │ ├── X-Large_4.png
│ │ │ │ │ ├── X-Large_5.png
│ │ │ │ │ ├── X-Small_1.png
│ │ │ │ │ ├── X-Small_2.png
│ │ │ │ │ ├── X-Small_3.png
│ │ │ │ │ ├── X-Small_4.png
│ │ │ │ │ └── X-Small_5.png
│ │ │ ├── renku2.0Logo.svg
│ │ │ └── renku2.0LogoDark.svg
│ │ │ └── theme.css
│ └── stockimages
│ │ ├── Zurich.jpg
│ │ ├── dataset1.svg
│ │ ├── dataset2.svg
│ │ ├── dataset3.png
│ │ └── templatePlaceholder.svg
├── run-telepresence.sh
├── scripts
│ ├── generate_sitemap.sh
│ └── update_api_spec.js
├── src
│ ├── App.css
│ ├── App.jsx
│ ├── api-client
│ │ ├── dataset.js
│ │ ├── errors.js
│ │ ├── graph.js
│ │ ├── index.js
│ │ ├── instance.js
│ │ ├── job.js
│ │ ├── notebook-servers.js
│ │ ├── pagination.js
│ │ ├── pipeline.js
│ │ ├── project.js
│ │ ├── repository.js
│ │ ├── templates.js
│ │ ├── test-client.js
│ │ ├── test-samples
│ │ │ ├── index.js
│ │ │ ├── namespaces.js
│ │ │ ├── project-samples.js
│ │ │ ├── statuspage.js
│ │ │ └── user.js
│ │ ├── user.js
│ │ └── utils.js
│ ├── authentication
│ │ ├── Authentication.container.js
│ │ ├── Authentication.test.js
│ │ ├── index.js
│ │ └── useLoginUrl.hook.ts
│ ├── components
│ │ ├── Alert.constants.ts
│ │ ├── Alert.jsx
│ │ ├── ExternalLinks.tsx
│ │ ├── FieldGroups.tsx
│ │ ├── FileExplorer.tsx
│ │ ├── InformativeIcon.tsx
│ │ ├── LinkWithTooltip.tsx
│ │ ├── List.jsx
│ │ ├── Loader.module.scss
│ │ ├── Loader.tsx
│ │ ├── Logs.module.scss
│ │ ├── Logs.tsx
│ │ ├── LogsV2.tsx
│ │ ├── MoreInfo.tsx
│ │ ├── PageLoader.tsx
│ │ ├── PageNav.tsx
│ │ ├── Pagination.tsx
│ │ ├── PaginationLegacy.tsx
│ │ ├── PrimaryAlert.module.scss
│ │ ├── PrimaryAlert.tsx
│ │ ├── RenkuNavLinkV2.tsx
│ │ ├── SelectAutosuggestInput.jsx
│ │ ├── TimeCaption.tsx
│ │ ├── Tree.tsx
│ │ ├── addDatasetButtons
│ │ │ └── AddDatasetButtons.tsx
│ │ ├── buttons
│ │ │ ├── Button.tsx
│ │ │ └── Buttons.module.scss
│ │ ├── clamped
│ │ │ └── ClampedParagraph.tsx
│ │ ├── clipboard
│ │ │ └── Clipboard.tsx
│ │ ├── commandCopy
│ │ │ ├── CommandCopy.module.scss
│ │ │ └── CommandCopy.tsx
│ │ ├── commitSelector
│ │ │ ├── CommitSelector.scss
│ │ │ └── CommitSelector.tsx
│ │ ├── commits
│ │ │ ├── Commits.css
│ │ │ └── Commits.jsx
│ │ ├── container
│ │ │ └── ContainerWrap.tsx
│ │ ├── dateFilter
│ │ │ └── DateFilter.tsx
│ │ ├── entities
│ │ │ ├── Buttons.tsx
│ │ │ ├── Children.tsx
│ │ │ ├── Creators.tsx
│ │ │ ├── Description.tsx
│ │ │ ├── Duration.tsx
│ │ │ ├── Entities.css
│ │ │ ├── Executions.tsx
│ │ │ ├── Label.tsx
│ │ │ ├── LinkedEntitiesByItemType.tsx
│ │ │ ├── Slug.tsx
│ │ │ ├── Tags.tsx
│ │ │ ├── VisibilityIcon.tsx
│ │ │ └── entities.types.ts
│ │ ├── entityHeader
│ │ │ ├── EntityHeader.scss
│ │ │ └── EntityHeader.tsx
│ │ ├── entitySearchFilter
│ │ │ ├── EntitySearchFilter.css
│ │ │ └── EntitySearchFilter.tsx
│ │ ├── entityWatermark
│ │ │ ├── EntityWatermark.tsx
│ │ │ └── entityWatermark.module.scss
│ │ ├── errors
│ │ │ ├── CoreErrorAlert.jsx
│ │ │ ├── CoreErrorHelpers.js
│ │ │ └── RtkErrorAlert.tsx
│ │ ├── form-field
│ │ │ ├── CkEditor.jsx
│ │ │ ├── CreatorsInput.tsx
│ │ │ ├── DropzoneFileUploader.jsx
│ │ │ ├── FileUploaderInput.tsx
│ │ │ ├── FormGeneratorImageInput.jsx
│ │ │ ├── FormLabel.tsx
│ │ │ ├── HelpText.tsx
│ │ │ ├── ImageInput.tsx
│ │ │ ├── KeywordsInput.tsx
│ │ │ ├── LazyCkEditor.tsx
│ │ │ ├── TextAreaInput.tsx
│ │ │ ├── TextInput.tsx
│ │ │ ├── form-field.types.ts
│ │ │ └── stockimages
│ │ │ │ └── index.js
│ │ ├── formlabels
│ │ │ ├── FormLabels.css
│ │ │ └── FormLabels.tsx
│ │ ├── formschema
│ │ │ ├── FormSchema.css
│ │ │ └── FormSchema.tsx
│ │ ├── icons
│ │ │ ├── BootstrapCopyIcon.tsx
│ │ │ ├── BootstrapGitLabIcon.tsx
│ │ │ ├── ChevronFlippedIcon.module.scss
│ │ │ ├── ChevronFlippedIcon.tsx
│ │ │ ├── CrosshairIcon.tsx
│ │ │ ├── EnvironmentIcon.tsx
│ │ │ ├── JupyterIcon.tsx
│ │ │ ├── RenkuIcon.tsx
│ │ │ ├── SearchEntityIcon.tsx
│ │ │ └── SessionPausedIcon.tsx
│ │ ├── imageEditor
│ │ │ └── ImageEditor.tsx
│ │ ├── inlineSubmitImageInput
│ │ │ └── InlineSubmitImageInput.tsx
│ │ ├── inlineSubmitInput
│ │ │ └── InlineSubmitInput.tsx
│ │ ├── kgStatus
│ │ │ └── KgStatus.tsx
│ │ ├── list
│ │ │ ├── EntityCardSkeleton.module.scss
│ │ │ ├── EntityCardSkeleton.tsx
│ │ │ ├── ListBar.scss
│ │ │ ├── ListBar.tsx
│ │ │ ├── ListBarSessions.tsx
│ │ │ ├── ListCard.css
│ │ │ ├── ListCard.tsx
│ │ │ ├── PinnedBadge.tsx
│ │ │ └── list.types.tsx
│ │ ├── loginAlert
│ │ │ └── LoginAlert.tsx
│ │ ├── markdown
│ │ │ ├── LazyMarkdownTextExcerpt.tsx
│ │ │ ├── LazyRenkuMarkdown.tsx
│ │ │ ├── RenkuMarkdown.jsx
│ │ │ ├── RenkuMarkdownWithPathTranslation.tsx
│ │ │ └── utils.tsx
│ │ ├── modal
│ │ │ ├── ModalHeader.tsx
│ │ │ ├── ScrollableModal.module.scss
│ │ │ └── ScrollableModal.tsx
│ │ ├── navbar
│ │ │ ├── AnnounceV2Banner.tsx
│ │ │ ├── AnonymousNavBar.tsx
│ │ │ ├── Graphics
│ │ │ │ └── AnnounceV2.svg
│ │ │ ├── LoggedInNavBar.tsx
│ │ │ ├── NavBarItem.module.scss
│ │ │ ├── NavBarItems.tsx
│ │ │ └── navbar.constants.ts
│ │ ├── notebook
│ │ │ ├── LazyNotebookRender.tsx
│ │ │ ├── NotebookRender.tsx
│ │ │ └── modules.d.ts
│ │ ├── progress
│ │ │ ├── Progress.css
│ │ │ ├── Progress.tsx
│ │ │ └── ProgressSteps.tsx
│ │ ├── quicknav
│ │ │ ├── QuickNav.container.jsx
│ │ │ ├── QuickNav.present.jsx
│ │ │ ├── QuickNav.style.css
│ │ │ └── index.js
│ │ ├── searchResultsContent
│ │ │ └── SearchResultsContent.tsx
│ │ ├── searchResultsHeader
│ │ │ └── SearchResultsHeader.tsx
│ │ ├── shareLinkSession
│ │ │ └── ShareLinkSession.tsx
│ │ ├── sortingEntities
│ │ │ ├── SortingEntities.css
│ │ │ └── SortingEntities.tsx
│ │ ├── ssh
│ │ │ └── ssh.tsx
│ │ ├── templateSelector
│ │ │ ├── TemplateSelector.module.scss
│ │ │ └── TemplateSelector.tsx
│ │ ├── typeEntityFilter
│ │ │ ├── TypeEntityFilter.css
│ │ │ └── TypeEntityFilter.tsx
│ │ ├── userRolesFilter
│ │ │ ├── UserRolesFilter.tsx
│ │ │ ├── userRoles.utils.ts
│ │ │ └── userRolesFilter.types.ts
│ │ ├── visibility
│ │ │ ├── Visibility.css
│ │ │ └── Visibility.tsx
│ │ └── visibilityFilter
│ │ │ ├── VisibilityFilter.css
│ │ │ └── VisibilityFilter.tsx
│ ├── dataset
│ │ ├── Dataset.container.jsx
│ │ ├── Dataset.present.jsx
│ │ ├── Dataset.state.js
│ │ ├── DatasetError.jsx
│ │ ├── DatasetFunctions.js
│ │ ├── Datasets.test.js
│ │ ├── LazyShowDataset.tsx
│ │ ├── addtoproject
│ │ │ ├── DatasetAdd.present.tsx
│ │ │ ├── DatasetAdd.types.ts
│ │ │ ├── DatasetAddToExistingProject.tsx
│ │ │ ├── DatasetAddToNewProject.tsx
│ │ │ ├── DatasetAddToProject.tsx
│ │ │ ├── DatasetAddToProjectStatus.tsx
│ │ │ └── LazyDatasetAddToProject.tsx
│ │ └── index.js
│ ├── error-boundary
│ │ └── ErrorBoundary.tsx
│ ├── features
│ │ ├── ProjectPageV2
│ │ │ ├── LazyProjectPageV2Show.tsx
│ │ │ ├── ProjectPageContainer
│ │ │ │ └── ProjectPageContainer.tsx
│ │ │ ├── ProjectPageContent
│ │ │ │ ├── CodeRepositories
│ │ │ │ │ ├── AddCodeRepositoryModal.tsx
│ │ │ │ │ ├── CodeRepositoryDisplay.tsx
│ │ │ │ │ ├── RepositoriesBox.tsx
│ │ │ │ │ ├── repositories.utils.test.ts
│ │ │ │ │ └── repositories.utils.ts
│ │ │ │ ├── DataConnectors
│ │ │ │ │ ├── ProjectConnectDataConnectorsModal.tsx
│ │ │ │ │ └── ProjectDataConnectorsBox.tsx
│ │ │ │ ├── Documentation
│ │ │ │ │ ├── Documentation.tsx
│ │ │ │ │ └── DocumentationInput.tsx
│ │ │ │ ├── LazyProjectPageOverview.tsx
│ │ │ │ ├── LazyProjectPageSettings.tsx
│ │ │ │ ├── ProjectInformation
│ │ │ │ │ ├── ProjectInformation.module.scss
│ │ │ │ │ ├── ProjectInformation.tsx
│ │ │ │ │ └── ProjectInformationButton.tsx
│ │ │ │ ├── ProjectOverviewPage.tsx
│ │ │ │ ├── SessionSecrets
│ │ │ │ │ ├── AddSessionSecretButton.tsx
│ │ │ │ │ ├── ProjectSessionSecrets.tsx
│ │ │ │ │ ├── ProvideSessionSecretModalContent.tsx
│ │ │ │ │ ├── SecretsMountDirectoryComponent.tsx
│ │ │ │ │ ├── SessionSecretActions.tsx
│ │ │ │ │ ├── SessionSecretSlotItem.tsx
│ │ │ │ │ ├── SessionViewSessionSecrets.tsx
│ │ │ │ │ ├── fields
│ │ │ │ │ │ ├── DescriptionField.tsx
│ │ │ │ │ │ ├── FilenameField.tsx
│ │ │ │ │ │ ├── NameField.tsx
│ │ │ │ │ │ ├── SelectUserSecretField.module.scss
│ │ │ │ │ │ ├── SelectUserSecretField.tsx
│ │ │ │ │ │ └── fields.types.ts
│ │ │ │ │ ├── sessionSecrets.constants.ts
│ │ │ │ │ ├── sessionSecrets.types.ts
│ │ │ │ │ └── sessionSecrets.utils.ts
│ │ │ │ └── Settings
│ │ │ │ │ ├── ProjectDelete.tsx
│ │ │ │ │ ├── ProjectSettings.tsx
│ │ │ │ │ ├── ProjectSettingsMembers.tsx
│ │ │ │ │ └── ProjectUnlinkTemplate.tsx
│ │ │ ├── ProjectPageHeader
│ │ │ │ ├── ProjectCopyBanner.tsx
│ │ │ │ ├── ProjectCopyButton.tsx
│ │ │ │ ├── ProjectCopyModal.tsx
│ │ │ │ ├── ProjectPageHeader.tsx
│ │ │ │ ├── ProjectTemplateInfoBanner.module.css
│ │ │ │ └── ProjectTemplateInfoBanner.tsx
│ │ │ ├── ProjectPageNav
│ │ │ │ ├── ProjectPageNav.module.scss
│ │ │ │ └── ProjectPageNav.tsx
│ │ │ ├── settings
│ │ │ │ ├── ProjectDeleteConfirmation.tsx
│ │ │ │ └── projectSettings.types.ts
│ │ │ └── utils
│ │ │ │ ├── roleUtils.test.ts
│ │ │ │ ├── roleUtils.ts
│ │ │ │ └── useProjectPermissions.hook.ts
│ │ ├── admin
│ │ │ ├── AddConnectedServiceButton.tsx
│ │ │ ├── AddManyUsersToResourcePoolButton.module.scss
│ │ │ ├── AddManyUsersToResourcePoolButton.tsx
│ │ │ ├── AddResourceClassButton.tsx
│ │ │ ├── AddResourcePoolButton.tsx
│ │ │ ├── AddSessionEnvironmentButton.tsx
│ │ │ ├── AddUserToResourcePoolButton.tsx
│ │ │ ├── AdminPage.tsx
│ │ │ ├── ConnectedServiceFormContent.tsx
│ │ │ ├── ConnectedServicesSection.tsx
│ │ │ ├── DeleteConnectedServiceButton.tsx
│ │ │ ├── DeleteResourceClassButton.tsx
│ │ │ ├── DeleteSessionEnvironmentButton.tsx
│ │ │ ├── IncidentsAndMaintenanceSection.tsx
│ │ │ ├── LazyAdminPage.tsx
│ │ │ ├── SessionEnvironmentAdvancedFields.tsx
│ │ │ ├── SessionEnvironmentFormContent.tsx
│ │ │ ├── SessionEnvironmentsSection.tsx
│ │ │ ├── UpdateConnectedServiceButton.tsx
│ │ │ ├── UpdateResourceClassButton.module.scss
│ │ │ ├── UpdateResourceClassButton.tsx
│ │ │ ├── UpdateResourcePoolQuotaButton.tsx
│ │ │ ├── UpdateResourcePoolThresholdsButton.tsx
│ │ │ ├── UpdateSessionEnvironmentButton.tsx
│ │ │ ├── adminComputeResources.types.ts
│ │ │ ├── adminKeycloak.api.ts
│ │ │ ├── adminKeycloak.types.ts
│ │ │ ├── adminSessions.api.ts
│ │ │ ├── adminSessions.types.ts
│ │ │ ├── adminSessions.utils.ts
│ │ │ └── useKeycloakRealm.hook.ts
│ │ ├── connectedServices
│ │ │ ├── ConnectedServicesPage.tsx
│ │ │ ├── ContactUsCard.module.scss
│ │ │ ├── ContactUsCard.tsx
│ │ │ ├── LazyConnectedServicesPage.tsx
│ │ │ ├── api
│ │ │ │ ├── connectedServices.api-config.ts
│ │ │ │ ├── connectedServices.api.ts
│ │ │ │ ├── connectedServices.empty-api.ts
│ │ │ │ ├── connectedServices.generated-api.ts
│ │ │ │ ├── connectedServices.openapi.json
│ │ │ │ └── connectedServices.types.ts
│ │ │ └── connectedServices.constants.ts
│ │ ├── dashboard
│ │ │ ├── Dashboard.scss
│ │ │ ├── Dashboard.tsx
│ │ │ ├── LazyDashboard.tsx
│ │ │ ├── components
│ │ │ │ ├── DashboardMessage.module.scss
│ │ │ │ ├── DashboardMessage.tsx
│ │ │ │ ├── DatasetsDashboard.tsx
│ │ │ │ ├── InactiveKgProjects.tsx
│ │ │ │ └── ProjectsDashboard.tsx
│ │ │ └── message
│ │ │ │ ├── DashboardMessage.types.ts
│ │ │ │ └── dashboardMessageSlice.ts
│ │ ├── dashboardV2
│ │ │ ├── DashboardV2.module.scss
│ │ │ ├── DashboardV2.tsx
│ │ │ ├── DashboardV2Sessions.module.scss
│ │ │ ├── DashboardV2Sessions.tsx
│ │ │ ├── HelpV2.tsx
│ │ │ ├── LazyDashboardV2.tsx
│ │ │ └── LazyHelpV2.tsx
│ │ ├── dataConnectorsV2
│ │ │ ├── api
│ │ │ │ ├── data-connectors.api-config.ts
│ │ │ │ ├── data-connectors.api.ts
│ │ │ │ ├── data-connectors.empty-api.ts
│ │ │ │ ├── data-connectors.enhanced-api.ts
│ │ │ │ ├── data-connectors.openapi.json
│ │ │ │ ├── doiResolver.api-config.ts
│ │ │ │ ├── doiResolver.api.ts
│ │ │ │ ├── doiResolver.empty-api.ts
│ │ │ │ ├── doiResolver.generated-api.ts
│ │ │ │ └── doiResolver.openapi.json
│ │ │ ├── components
│ │ │ │ ├── DataConnectorActions.tsx
│ │ │ │ ├── DataConnectorCredentialsModal.tsx
│ │ │ │ ├── DataConnectorModal
│ │ │ │ │ ├── DataConnectorModal.module.scss
│ │ │ │ │ ├── DataConnectorModalBody.tsx
│ │ │ │ │ ├── DataConnectorModalFooter.tsx
│ │ │ │ │ ├── DataConnectorModalResult.tsx
│ │ │ │ │ ├── DataConnectorSaveCredentialsInfo.tsx
│ │ │ │ │ ├── dataConnectorModalButtons.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── DataConnectorView.tsx
│ │ │ │ ├── DataConnectorsBox.tsx
│ │ │ │ ├── DataConnectorsBoxListDisplay.tsx
│ │ │ │ ├── dataConnector.constants.ts
│ │ │ │ ├── dataConnector.utils.ts
│ │ │ │ ├── useDataConnectorConfiguration.hook.ts
│ │ │ │ └── useDataConnectorProjects.hook.ts
│ │ │ ├── dataConnectors.types.ts
│ │ │ ├── state
│ │ │ │ └── dataConnectors.slice.ts
│ │ │ └── utils
│ │ │ │ └── useDataConnectorPermissions.hook.ts
│ │ ├── dataServices
│ │ │ ├── computeResources.api.ts
│ │ │ └── dataServices.types.ts
│ │ ├── datasets
│ │ │ ├── datasets.types.ts
│ │ │ └── datasetsCore.api.ts
│ │ ├── display
│ │ │ ├── display.types.ts
│ │ │ ├── displaySlice.ts
│ │ │ └── index.ts
│ │ ├── favicon
│ │ │ └── Favicon.tsx
│ │ ├── groupsV2
│ │ │ ├── LazyGroupContainer.tsx
│ │ │ ├── LazyGroupV2Overview.tsx
│ │ │ ├── LazyGroupV2Settings.tsx
│ │ │ ├── fields
│ │ │ │ ├── AddGroupMemberModal.tsx
│ │ │ │ ├── EditGroupMemberModal.tsx
│ │ │ │ └── RemoveGroupMemberModal.tsx
│ │ │ ├── members
│ │ │ │ └── GroupV2MemberListDisplay.tsx
│ │ │ ├── new
│ │ │ │ ├── CreateGroupButton.tsx
│ │ │ │ ├── GroupNew.tsx
│ │ │ │ └── createGroup.constants.ts
│ │ │ ├── settings
│ │ │ │ ├── GroupSettingsMembers.tsx
│ │ │ │ ├── GroupSettingsMetadata.tsx
│ │ │ │ └── GroupV2Settings.tsx
│ │ │ ├── show
│ │ │ │ ├── GroupPageContainer.tsx
│ │ │ │ ├── GroupV2Information.tsx
│ │ │ │ └── GroupV2Show.tsx
│ │ │ └── utils
│ │ │ │ └── useGroupPermissions.hook.ts
│ │ ├── inactiveKgProjects
│ │ │ ├── InactiveKgProjects.tsx
│ │ │ ├── InactiveKgProjectsApi.ts
│ │ │ ├── LazyInactiveKGProjectsPage.tsx
│ │ │ ├── components
│ │ │ │ ├── ActivationProgress.tsx
│ │ │ │ └── KgActivationHeader.tsx
│ │ │ ├── inactiveKgProjects.css
│ │ │ ├── inactiveKgProjects.types.ts
│ │ │ ├── inactiveKgProjects.utils.ts
│ │ │ ├── inactiveKgProjectsSlice.ts
│ │ │ └── index.ts
│ │ ├── kgSearch
│ │ │ ├── KgSearch.types.ts
│ │ │ ├── KgSearchApi.ts
│ │ │ ├── KgSearchContext.tsx
│ │ │ ├── KgSearchPage.tsx
│ │ │ ├── KgSearchState.ts
│ │ │ ├── LazySearchPage.tsx
│ │ │ └── index.ts
│ │ ├── landing
│ │ │ ├── AnonymousHome.tsx
│ │ │ ├── LazyAnonymousHome.tsx
│ │ │ ├── anonymousHome.types.ts
│ │ │ ├── assets
│ │ │ │ ├── EPFL.svg
│ │ │ │ ├── ETH.svg
│ │ │ │ ├── SDSC.svg
│ │ │ │ ├── Visual_Head.svg
│ │ │ │ ├── boxes.svg
│ │ │ │ ├── btnJupyter.png
│ │ │ │ ├── btnJupyterSelected.png
│ │ │ │ ├── btnR.png
│ │ │ │ ├── btnRSelected.png
│ │ │ │ ├── btnVS.png
│ │ │ │ ├── btnVSSelected.png
│ │ │ │ ├── communityIcon.svg
│ │ │ │ ├── computing.svg
│ │ │ │ ├── connectIcon.svg
│ │ │ │ ├── dividerDots.svg
│ │ │ │ ├── educatorIcon.svg
│ │ │ │ ├── getStarted.svg
│ │ │ │ ├── heroBoxes.svg
│ │ │ │ ├── individualsIcon.svg
│ │ │ │ ├── logo-black.svg
│ │ │ │ ├── logo-symbol.svg
│ │ │ │ ├── network.svg
│ │ │ │ ├── organizerIcon.svg
│ │ │ │ ├── puzzleIcon.svg
│ │ │ │ ├── renkuBlack.svg
│ │ │ │ ├── renkuColor.svg
│ │ │ │ ├── research.png
│ │ │ │ ├── researcherIcon.svg
│ │ │ │ ├── teamsIcon.svg
│ │ │ │ ├── templateJupyter.png
│ │ │ │ ├── templateR.png
│ │ │ │ └── templateVS.png
│ │ │ ├── components
│ │ │ │ ├── AdminDropdownItem.tsx
│ │ │ │ ├── Benefits
│ │ │ │ │ ├── Benefits.module.scss
│ │ │ │ │ └── Benefits.tsx
│ │ │ │ ├── Dividier
│ │ │ │ │ ├── Divider.module.css
│ │ │ │ │ └── Divider.tsx
│ │ │ │ ├── GetStarted
│ │ │ │ │ ├── GetStarted.module.scss
│ │ │ │ │ └── GetStarted.tsx
│ │ │ │ ├── HeroLanding
│ │ │ │ │ └── HeroLanding.tsx
│ │ │ │ ├── Introduction
│ │ │ │ │ ├── Introduction.module.scss
│ │ │ │ │ └── Introduction.tsx
│ │ │ │ ├── NavBar
│ │ │ │ │ ├── NavBar.css
│ │ │ │ │ ├── NavBar.jsx
│ │ │ │ │ └── NavBarWarnings.jsx
│ │ │ │ ├── RenkuUsers
│ │ │ │ │ └── RenkuUsers.tsx
│ │ │ │ ├── ResourcesSupport
│ │ │ │ │ ├── Resources.module.scss
│ │ │ │ │ └── ResourcesAndSupport.tsx
│ │ │ │ ├── TemplateSlider
│ │ │ │ │ ├── TemplateSlider.module.scss
│ │ │ │ │ └── TemplateSlider.tsx
│ │ │ │ ├── WhatIsRenku
│ │ │ │ │ └── WhatIsRenku.tsx
│ │ │ │ ├── WhoWeAre
│ │ │ │ │ ├── WhoWeAre.module.scss
│ │ │ │ │ └── WhoWeAre.tsx
│ │ │ │ └── anonymousHomeNav.tsx
│ │ │ └── hooks
│ │ │ │ └── useCustomHomePageProjectUrl.hook.ts
│ │ ├── maintenance
│ │ │ └── Maintenance.tsx
│ │ ├── permissionsV2
│ │ │ ├── PermissionsGuard.tsx
│ │ │ ├── permissions.constants.ts
│ │ │ └── permissions.types.ts
│ │ ├── platform
│ │ │ ├── api
│ │ │ │ ├── platform-empty.api.ts
│ │ │ │ ├── platform.api-config.ts
│ │ │ │ ├── platform.api.ts
│ │ │ │ ├── platform.generated-api.ts
│ │ │ │ └── platform.openapi.json
│ │ │ ├── components
│ │ │ │ ├── StatusBanner.tsx
│ │ │ │ ├── StatusPageIncidentUpdates.tsx
│ │ │ │ └── StatusSummary.tsx
│ │ │ └── statuspage-api
│ │ │ │ ├── statuspage-empty.api.ts
│ │ │ │ ├── statuspage.api.ts
│ │ │ │ └── statuspage.types.ts
│ │ ├── project
│ │ │ ├── GitLab.constants.ts
│ │ │ ├── GitLab.types.ts
│ │ │ ├── components
│ │ │ │ ├── File.tsx
│ │ │ │ ├── ProjectEntityHeader.tsx
│ │ │ │ ├── ProjectPageTitle.tsx
│ │ │ │ ├── ProjectSettingAvatar.tsx
│ │ │ │ ├── ProjectSettings.tsx
│ │ │ │ ├── ProjectSettingsCloudStorage.tsx
│ │ │ │ ├── ProjectSettingsDescription.tsx
│ │ │ │ ├── ProjectSettingsGeneral.tsx
│ │ │ │ ├── ProjectSettingsGeneralDeleteProject.tsx
│ │ │ │ ├── ProjectSettingsSessions.module.scss
│ │ │ │ ├── ProjectSettingsSessions.tsx
│ │ │ │ ├── ProjectSettingsUtils.tsx
│ │ │ │ ├── ProjectWarningForMerge.tsx
│ │ │ │ ├── cloudStorage
│ │ │ │ │ ├── AddOrEditCloudStorage.tsx
│ │ │ │ │ ├── AddOrEditCloudStorageButton.tsx
│ │ │ │ │ ├── AddStorageBreadcrumbNavbar.tsx
│ │ │ │ │ ├── AddStorageMountSaveCredentialsInfo.tsx
│ │ │ │ │ ├── CloudStorage.module.scss
│ │ │ │ │ ├── CloudStorageItem.tsx
│ │ │ │ │ ├── CloudStorageModal.tsx
│ │ │ │ │ ├── api
│ │ │ │ │ │ ├── projectCloudStorage.api-config.ts
│ │ │ │ │ │ ├── projectCloudStorage.api.ts
│ │ │ │ │ │ ├── projectCloudStorage.empty-api.ts
│ │ │ │ │ │ ├── projectCloudStorage.generated-api.ts
│ │ │ │ │ │ └── projectCloudStorage.openapi.json
│ │ │ │ │ ├── cloudStorageModalComponents.tsx
│ │ │ │ │ ├── projectCloudStorage.constants.ts
│ │ │ │ │ └── projectCloudStorage.types.ts
│ │ │ │ ├── migrations
│ │ │ │ │ ├── MigrationHelpers.tsx
│ │ │ │ │ ├── ProjectCoreMigrations.tsx
│ │ │ │ │ ├── ProjectKgStatus.tsx
│ │ │ │ │ ├── ProjectStatusIcon.tsx
│ │ │ │ │ └── migrations.module.scss
│ │ │ │ └── projectMigration
│ │ │ │ │ ├── MigrationV1Modal.tsx
│ │ │ │ │ ├── ProjectEntityMigration.tsx
│ │ │ │ │ ├── ProjectMigration.types.ts
│ │ │ │ │ ├── ProjectMigrationAlert.tsx
│ │ │ │ │ ├── ProjectMigrationDetails.tsx
│ │ │ │ │ ├── ProjectMigrationFooter.tsx
│ │ │ │ │ ├── ProjectMigrationForm.tsx
│ │ │ │ │ ├── ProjectMigrationFormInputs.tsx
│ │ │ │ │ └── hooks
│ │ │ │ │ └── useMigrationForm.ts
│ │ │ ├── dataset
│ │ │ │ ├── DatasetModify.tsx
│ │ │ │ ├── ProjectDatasetImport.tsx
│ │ │ │ ├── ProjectDatasetNewEdit.tsx
│ │ │ │ ├── ProjectDatasetShow.tsx
│ │ │ │ ├── ProjectDatasetsListView.tsx
│ │ │ │ ├── ProjectDatasetsView.tsx
│ │ │ │ ├── dataset.types.ts
│ │ │ │ ├── datasetCore.api.ts
│ │ │ │ ├── datasetForm.slice.ts
│ │ │ │ └── index.ts
│ │ │ ├── hook
│ │ │ │ └── useGetSessionLauncherData.ts
│ │ │ ├── index.ts
│ │ │ ├── project.types.ts
│ │ │ ├── projectCoreApi.ts
│ │ │ ├── projectEnums.ts
│ │ │ ├── projectGitLab.api.ts
│ │ │ ├── projectKg.api.ts
│ │ │ ├── projectKg.types.ts
│ │ │ ├── tests
│ │ │ │ ├── ProjectSettings.testData.json
│ │ │ │ └── migrations.test.ts
│ │ │ ├── useProjectCoreSupport.ts
│ │ │ └── utils
│ │ │ │ ├── migrations.ts
│ │ │ │ ├── projectCloudStorage.utils.test.ts
│ │ │ │ └── projectCloudStorage.utils.ts
│ │ ├── projectMigrationV2
│ │ │ ├── GitlabProjectList.tsx
│ │ │ ├── MigrationV2Modal.tsx
│ │ │ ├── ProjectMigration.types.ts
│ │ │ └── ProjectMigrationBanner.tsx
│ │ ├── projects
│ │ │ ├── projects.api.ts
│ │ │ └── projects.types.ts
│ │ ├── projectsV2
│ │ │ ├── LazyProjectV2ShowByProjectId.tsx
│ │ │ ├── api
│ │ │ │ ├── namespace.api-config.ts
│ │ │ │ ├── namespace.api.ts
│ │ │ │ ├── namespace.openapi.json
│ │ │ │ ├── projectV2-empty.api.ts
│ │ │ │ ├── projectV2.api-config.ts
│ │ │ │ ├── projectV2.api.ts
│ │ │ │ ├── projectV2.enhanced-api.ts
│ │ │ │ └── projectV2.openapi.json
│ │ │ ├── fields
│ │ │ │ ├── AddProjectMemberModal.tsx
│ │ │ │ ├── DescriptionFormField.tsx
│ │ │ │ ├── EditProjectMemberModal.tsx
│ │ │ │ ├── NameFormField.tsx
│ │ │ │ ├── ProjectDescriptionFormField.tsx
│ │ │ │ ├── ProjectNameFormField.tsx
│ │ │ │ ├── ProjectNamespaceFormField.module.scss
│ │ │ │ ├── ProjectNamespaceFormField.tsx
│ │ │ │ ├── ProjectOwnerSlugFormField.tsx
│ │ │ │ ├── ProjectVisibilityFormField.tsx
│ │ │ │ ├── RemoveProjectMemberModal.tsx
│ │ │ │ ├── RenkuV1FormFields.module.scss
│ │ │ │ ├── SecretsMountDirectoryField.tsx
│ │ │ │ ├── SlugFormField.tsx
│ │ │ │ ├── SlugPreviewFormField.tsx
│ │ │ │ ├── UserSelector.tsx
│ │ │ │ └── formField.types.ts
│ │ │ ├── list
│ │ │ │ ├── GroupList.tsx
│ │ │ │ └── ProjectV2ListDisplay.tsx
│ │ │ ├── new
│ │ │ │ ├── CreateProjectV2Button.tsx
│ │ │ │ ├── ProjectV2New.tsx
│ │ │ │ ├── createProjectV2.constants.ts
│ │ │ │ └── projectV2New.types.ts
│ │ │ ├── notFound
│ │ │ │ ├── GroupNotFound.tsx
│ │ │ │ ├── ProjectNotFound.tsx
│ │ │ │ └── UserNotFound.tsx
│ │ │ ├── projectV2.types.ts
│ │ │ ├── shared
│ │ │ │ ├── LearnAboutV2Button.tsx
│ │ │ │ ├── ProjectMemberDisplay.tsx
│ │ │ │ ├── SunsetV1Button.tsx
│ │ │ │ ├── WipBadge.module.scss
│ │ │ │ └── WipBadge.tsx
│ │ │ └── show
│ │ │ │ ├── GroupShortHandDisplay.tsx
│ │ │ │ ├── ProjectShortHandDisplay.tsx
│ │ │ │ ├── ProjectV2ShowByProjectId.tsx
│ │ │ │ └── projectV2Show.types.ts
│ │ ├── recentUserActivity
│ │ │ └── RecentUserActivityApi.ts
│ │ ├── repositories
│ │ │ ├── repositories.api.ts
│ │ │ └── repositories.types.ts
│ │ ├── rootV1
│ │ │ ├── LazyRootV1.tsx
│ │ │ ├── ProjectRootV1.tsx
│ │ │ └── RootV1.tsx
│ │ ├── rootV2
│ │ │ ├── LazyRootV2.tsx
│ │ │ ├── NavbarV2.tsx
│ │ │ └── RootV2.tsx
│ │ ├── searchV2
│ │ │ ├── LazySearchV2.tsx
│ │ │ ├── SearchV2.tsx
│ │ │ ├── api
│ │ │ │ ├── search.openapi.json
│ │ │ │ ├── searchV2-empty.api.ts
│ │ │ │ ├── searchV2.api-config.ts
│ │ │ │ ├── searchV2Api.api.ts
│ │ │ │ └── searchV2Api.generated-api.ts
│ │ │ ├── components
│ │ │ │ ├── SearchV2Bar.tsx
│ │ │ │ ├── SearchV2DateFilters.tsx
│ │ │ │ ├── SearchV2Filters.tsx
│ │ │ │ ├── SearchV2Filters.types.ts
│ │ │ │ ├── SearchV2Header.tsx
│ │ │ │ └── SearchV2Results.tsx
│ │ │ ├── hooks
│ │ │ │ ├── useClampSearchPage.hook.ts
│ │ │ │ └── useSearch.hook.ts
│ │ │ ├── searchV2.constants.ts
│ │ │ ├── searchV2.slice.ts
│ │ │ ├── searchV2.types.ts
│ │ │ ├── searchV2.utils.test.ts
│ │ │ └── searchV2.utils.ts
│ │ ├── secrets
│ │ │ ├── GeneralSecretNew.tsx
│ │ │ ├── LazySecrets.tsx
│ │ │ ├── Secrets.tsx
│ │ │ ├── SecretsList.tsx
│ │ │ ├── SecretsListItem.tsx
│ │ │ └── secrets.constants.ts
│ │ ├── secretsV2
│ │ │ ├── DataConnectorSecretItem.tsx
│ │ │ ├── GeneralSecretItem.tsx
│ │ │ ├── LazySecretsV2.tsx
│ │ │ ├── ReplaceSecretValueModal.tsx
│ │ │ ├── SecretItemActions.tsx
│ │ │ ├── SecretsV2.tsx
│ │ │ ├── fields
│ │ │ │ ├── FilenameField.tsx
│ │ │ │ ├── NameField.tsx
│ │ │ │ ├── SecretValueField.tsx
│ │ │ │ └── fields.types.ts
│ │ │ ├── secrets.utils.ts
│ │ │ └── useGetRelatedProjects.hook.ts
│ │ ├── session
│ │ │ ├── components
│ │ │ │ ├── AboutSessionModal.tsx
│ │ │ │ ├── AnonymousSessionsDisabledNotice.tsx
│ │ │ │ ├── AnonymousSessionsList.tsx
│ │ │ │ ├── LazyAnonymousSessionsList.tsx
│ │ │ │ ├── PauseOrDeleteSessionModal.tsx
│ │ │ │ ├── ProjectSessionsList.tsx
│ │ │ │ ├── ProjectSessionsRouter.tsx
│ │ │ │ ├── PullSessionModal.tsx
│ │ │ │ ├── ResourcesSessionModal.tsx
│ │ │ │ ├── SaveSessionModal.tsx
│ │ │ │ ├── SessionButton.tsx
│ │ │ │ ├── SessionFileButton.tsx
│ │ │ │ ├── SessionHibernated.tsx
│ │ │ │ ├── SessionJupyter.tsx
│ │ │ │ ├── SessionModals.module.scss
│ │ │ │ ├── SessionRowCommitInfo.tsx
│ │ │ │ ├── SessionSaveWarning.tsx
│ │ │ │ ├── SessionUnavailable.tsx
│ │ │ │ ├── SessionsList.tsx
│ │ │ │ ├── ShowSession.module.scss
│ │ │ │ ├── ShowSession.tsx
│ │ │ │ ├── SimpleSessionButton.tsx
│ │ │ │ ├── StartNewSession.tsx
│ │ │ │ ├── StartSessionProgressBar.tsx
│ │ │ │ ├── UnsavedWorkWarning.tsx
│ │ │ │ ├── options
│ │ │ │ │ ├── AutostartSessionOptions.tsx
│ │ │ │ │ ├── SessionBranchOption.module.scss
│ │ │ │ │ ├── SessionBranchOption.tsx
│ │ │ │ │ ├── SessionClassOption.module.scss
│ │ │ │ │ ├── SessionClassOption.tsx
│ │ │ │ │ ├── SessionCloudStorageOption.tsx
│ │ │ │ │ ├── SessionCommitOption.module.scss
│ │ │ │ │ ├── SessionCommitOption.tsx
│ │ │ │ │ ├── SessionDockerImage.tsx
│ │ │ │ │ ├── SessionEnvironmentVariables.tsx
│ │ │ │ │ ├── SessionPinnedDockerImage.tsx
│ │ │ │ │ ├── SessionProjectDockerImage.md
│ │ │ │ │ ├── SessionProjectDockerImage.tsx
│ │ │ │ │ ├── SessionStorageOption.module.scss
│ │ │ │ │ ├── SessionStorageOption.tsx
│ │ │ │ │ ├── SessionUserSecrets.tsx
│ │ │ │ │ ├── StartNotebookServerOptions.module.scss
│ │ │ │ │ ├── StartNotebookServerOptions.tsx
│ │ │ │ │ └── fetchMore.types.ts
│ │ │ │ └── status
│ │ │ │ │ ├── SessionHibernationStatusDetails.tsx
│ │ │ │ │ ├── SessionStatusBadge.tsx
│ │ │ │ │ ├── SessionStatusIcon.tsx
│ │ │ │ │ └── SessionStatusText.tsx
│ │ │ ├── hooks
│ │ │ │ └── options
│ │ │ │ │ ├── useDefaultAutoFetchLfsOption.hook.ts
│ │ │ │ │ ├── useDefaultBranchOption.hook.ts
│ │ │ │ │ ├── useDefaultCloudStorageOption.hook.ts
│ │ │ │ │ ├── useDefaultCommitOption.hook.ts
│ │ │ │ │ ├── useDefaultSessionClassOption.hook.ts
│ │ │ │ │ ├── useDefaultStorageOption.hook.ts
│ │ │ │ │ └── useDefaultUrlOption.hook.ts
│ │ │ ├── sessions.api.ts
│ │ │ ├── sessions.api.utils.ts
│ │ │ ├── sessions.types.ts
│ │ │ ├── sessions.utils.test.ts
│ │ │ ├── sessions.utils.ts
│ │ │ ├── sidecar.api.ts
│ │ │ ├── sidecar.types.ts
│ │ │ ├── startSession.slice.ts
│ │ │ ├── startSession.types.ts
│ │ │ ├── startSessionOptions.constants.ts
│ │ │ ├── startSessionOptions.types.ts
│ │ │ ├── startSessionOptionsSlice.ts
│ │ │ ├── useWaitForSessionStatus.hook.ts
│ │ │ └── utils
│ │ │ │ ├── sessionOptions.utils.test.ts
│ │ │ │ ├── sessionOptions.utils.ts
│ │ │ │ └── sessionStatus.utils.ts
│ │ ├── sessionsV2
│ │ │ ├── AddSessionLauncherButton.tsx
│ │ │ ├── DataConnectorSecretsModal.tsx
│ │ │ ├── DeleteSessionLauncherModal.tsx
│ │ │ ├── LazySessionStartPage.tsx
│ │ │ ├── LazyShowSessionPage.tsx
│ │ │ ├── PauseOrDeleteSessionModal.tsx
│ │ │ ├── SessionLauncherFormContent.tsx
│ │ │ ├── SessionList
│ │ │ │ ├── Session.module.scss
│ │ │ │ ├── SessionCard.tsx
│ │ │ │ ├── SessionItem.tsx
│ │ │ │ ├── SessionItemDisplay.tsx
│ │ │ │ ├── SessionLauncherCard.tsx
│ │ │ │ └── SessionLauncherDisplay.tsx
│ │ │ ├── SessionSecretsModal.tsx
│ │ │ ├── SessionShowPage
│ │ │ │ ├── SessionIframe.tsx
│ │ │ │ ├── SessionPaused.tsx
│ │ │ │ ├── SessionUnavailable.tsx
│ │ │ │ └── ShowSessionPage.tsx
│ │ │ ├── SessionStartPage.tsx
│ │ │ ├── SessionStyles.constants.ts
│ │ │ ├── SessionView
│ │ │ │ ├── EnvVariablesCard.tsx
│ │ │ │ ├── EnvVariablesModal.tsx
│ │ │ │ ├── EnvironmentCard.tsx
│ │ │ │ ├── SessionLaunchLinkModal.tsx
│ │ │ │ └── SessionView.tsx
│ │ │ ├── SessionsV2.tsx
│ │ │ ├── StartSessionButton.tsx
│ │ │ ├── api
│ │ │ │ ├── sessionLaunchersV2.api-config.ts
│ │ │ │ ├── sessionLaunchersV2.api.ts
│ │ │ │ ├── sessionLaunchersV2.empty-api.ts
│ │ │ │ ├── sessionLaunchersV2.generated-api.ts
│ │ │ │ ├── sessionLaunchersV2.openapi.json
│ │ │ │ ├── sessionsV2.api-config.ts
│ │ │ │ ├── sessionsV2.api.ts
│ │ │ │ ├── sessionsV2.empty-api.ts
│ │ │ │ ├── sessionsV2.generated-api.ts
│ │ │ │ └── sessionsV2.openapi.json
│ │ │ ├── components
│ │ │ │ ├── BuildLauncherButtons.tsx
│ │ │ │ ├── BuildStatusComponents.tsx
│ │ │ │ ├── SessionButton
│ │ │ │ │ └── ActiveSessionButton.tsx
│ │ │ │ ├── SessionForm
│ │ │ │ │ ├── AdvancedSettingsFields.tsx
│ │ │ │ │ ├── BuilderEnvironmentFields.tsx
│ │ │ │ │ ├── BuilderFrontendSelector.tsx
│ │ │ │ │ ├── BuilderSelectorCommon.tsx
│ │ │ │ │ ├── BuilderTypeSelector.tsx
│ │ │ │ │ ├── CodeRepositorySelector.tsx
│ │ │ │ │ ├── CustomEnvironmentFields.tsx
│ │ │ │ │ ├── EditLauncherFormContent.tsx
│ │ │ │ │ ├── EnvironmentField.tsx
│ │ │ │ │ ├── EnvironmentKindField.tsx
│ │ │ │ │ ├── GlobalEnvironmentFields.tsx
│ │ │ │ │ ├── LauncherDetailsFields.tsx
│ │ │ │ │ ├── LauncherEnvironmentIcon.tsx
│ │ │ │ │ ├── Select.module.scss
│ │ │ │ │ └── SessionEnvironmentItem.tsx
│ │ │ │ ├── SessionLauncherButtons.tsx
│ │ │ │ ├── SessionModals
│ │ │ │ │ ├── ModifyResourcesLauncher.tsx
│ │ │ │ │ ├── NewSessionLauncherModal.tsx
│ │ │ │ │ ├── ResourceClassWarning.tsx
│ │ │ │ │ ├── SelectResourceClass.tsx
│ │ │ │ │ ├── UpdateSessionLauncherMetadataModal.tsx
│ │ │ │ │ └── UpdateSessionLauncherModal.tsx
│ │ │ │ └── SessionStatus
│ │ │ │ │ └── SessionStatus.tsx
│ │ │ ├── session.constants.tsx
│ │ │ ├── session.utils.ts
│ │ │ ├── sessionsV2.types.ts
│ │ │ ├── startSessionOptionsV2.slice.ts
│ │ │ ├── startSessionOptionsV2.types.ts
│ │ │ ├── useSessionLaunchState.hook.ts
│ │ │ ├── useSessionResourceClass.hook.ts
│ │ │ └── useSessionSecrets.hook.ts
│ │ ├── terms
│ │ │ └── terms.api.ts
│ │ ├── user
│ │ │ └── userPreferences.types.old.ts
│ │ ├── usersV2
│ │ │ ├── LazyUserRedirect.tsx
│ │ │ ├── LazyUserShow.tsx
│ │ │ ├── api
│ │ │ │ ├── users.api-config.ts
│ │ │ │ ├── users.api.ts
│ │ │ │ ├── users.empty-api.ts
│ │ │ │ ├── users.generated-api.ts
│ │ │ │ ├── users.openapi.json
│ │ │ │ └── users.types.ts
│ │ │ └── show
│ │ │ │ ├── UserAvatar.module.scss
│ │ │ │ ├── UserAvatar.tsx
│ │ │ │ ├── UserRedirect.tsx
│ │ │ │ └── UserShow.tsx
│ │ ├── versions
│ │ │ ├── versions.api.ts
│ │ │ └── versions.types.ts
│ │ └── workflows
│ │ │ ├── WorkflowsApi.ts
│ │ │ ├── WorkflowsSlice.ts
│ │ │ └── workflows.types.ts
│ ├── file
│ │ ├── CodePreview.tsx
│ │ ├── File.container.jsx
│ │ ├── File.module.scss
│ │ ├── File.present.jsx
│ │ ├── File.test.js
│ │ ├── FileAndLineageComponents.tsx
│ │ ├── FilePreview.tsx
│ │ ├── LazyCodePreview.tsx
│ │ ├── LazyFileLineage.tsx
│ │ ├── LazyPDFViewer.tsx
│ │ ├── Lineage.container.jsx
│ │ ├── Lineage.css
│ │ ├── Lineage.present.jsx
│ │ └── PDFViewer.tsx
│ ├── help
│ │ ├── Help.tsx
│ │ ├── HelpRelease.tsx
│ │ ├── LazyHelp.tsx
│ │ ├── PrivacyPolicy.tsx
│ │ ├── TermsOfService.tsx
│ │ ├── relase.utils.test.ts
│ │ └── release.utils.ts
│ ├── index.jsx
│ ├── job
│ │ └── Job.js
│ ├── model
│ │ ├── GlobalSchema.js
│ │ ├── Model.example.js
│ │ ├── Model.js
│ │ ├── Model.test.jsx
│ │ ├── RenkuModels.js
│ │ ├── RenkuModels.test.js
│ │ ├── index.js
│ │ └── renkuModels.types.ts
│ ├── namespace
│ │ ├── Namespace.container.jsx
│ │ ├── Namespace.present.jsx
│ │ ├── Namespace.test.jsx
│ │ └── index.js
│ ├── not-found
│ │ ├── LazyNotFound.tsx
│ │ ├── NotFound.css
│ │ └── NotFound.tsx
│ ├── notebooks
│ │ ├── Notebooks.css
│ │ ├── Notebooks.present.js
│ │ ├── Notebooks.state.js
│ │ ├── Notebooks.test.js
│ │ ├── README.md
│ │ ├── components
│ │ │ ├── SessionButtons.tsx
│ │ │ ├── SessionCheatSheet.css
│ │ │ ├── SessionCheatSheet.tsx
│ │ │ ├── SessionListStatus.tsx
│ │ │ ├── Sidecar.tsx
│ │ │ ├── cheatsheet.json
│ │ │ └── session.types.ts
│ │ └── index.js
│ ├── notifications
│ │ ├── LazyNotificationsPage.tsx
│ │ ├── Notifications.constants.ts
│ │ ├── Notifications.container.jsx
│ │ ├── Notifications.css
│ │ ├── Notifications.present.jsx
│ │ ├── Notifications.state.js
│ │ ├── Notifications.test.js
│ │ ├── NotificationsManager.jsx
│ │ ├── NotificationsMenu.jsx
│ │ └── notifications.types.ts
│ ├── privacy
│ │ ├── Cookie.tsx
│ │ ├── Privacy.test.jsx
│ │ └── RoutedContent.tsx
│ ├── project
│ │ ├── LazyProjectView.tsx
│ │ ├── Project-Route.test.js
│ │ ├── Project.css
│ │ ├── Project.jsx
│ │ ├── Project.present.jsx
│ │ ├── Project.state.js
│ │ ├── Project.test.js
│ │ ├── ProjectV2.tsx
│ │ ├── clone
│ │ │ ├── CloneButton.tsx
│ │ │ └── CloneSettings.tsx
│ │ ├── components
│ │ │ ├── GitLabConnect.tsx
│ │ │ └── ProjectViewNotFound.tsx
│ │ ├── datasets
│ │ │ ├── delete
│ │ │ │ ├── DeleteDataset.tsx
│ │ │ │ └── index.js
│ │ │ └── import
│ │ │ │ ├── DatasetImport.tsx
│ │ │ │ └── index.ts
│ │ ├── filestreeview
│ │ │ ├── FilesTreeView.jsx
│ │ │ └── treeviewstyle.css
│ │ ├── list
│ │ │ ├── LazyProjectList.tsx
│ │ │ ├── ProjectList.container.jsx
│ │ │ ├── ProjectList.present.jsx
│ │ │ └── ProjectList.test.js
│ │ ├── new
│ │ │ ├── LazyNewProject.tsx
│ │ │ ├── Project.style.css
│ │ │ ├── ProjectNew.container.jsx
│ │ │ ├── ProjectNew.present.jsx
│ │ │ ├── ProjectNew.state.js
│ │ │ ├── ProjectNew.test.jsx
│ │ │ ├── components
│ │ │ │ ├── Automated.tsx
│ │ │ │ ├── Description.tsx
│ │ │ │ ├── FormValidations.tsx
│ │ │ │ ├── Namespaces.jsx
│ │ │ │ ├── NewProjectAvatar.tsx
│ │ │ │ ├── ProjectIdentifier.tsx
│ │ │ │ ├── ShareLinkModal.jsx
│ │ │ │ ├── SubmitFormButton.tsx
│ │ │ │ ├── Template.tsx
│ │ │ │ ├── TemplateSource.tsx
│ │ │ │ ├── TemplateVariables.jsx
│ │ │ │ ├── Title.tsx
│ │ │ │ ├── UserTemplate.jsx
│ │ │ │ ├── Visibility.tsx
│ │ │ │ └── newProject.types.ts
│ │ │ └── index.js
│ │ ├── overview
│ │ │ ├── ProjectOverview.container.jsx
│ │ │ ├── ProjectOverview.present.jsx
│ │ │ └── index.js
│ │ ├── settings
│ │ │ └── ProjectSettings.present.js
│ │ └── shared
│ │ │ ├── ProjectKeywords.tsx
│ │ │ └── index.js
│ ├── routing
│ │ └── routes.constants.ts
│ ├── setupTests.js
│ ├── statuspage
│ │ ├── Statuspage.container.jsx
│ │ ├── Statuspage.present.jsx
│ │ ├── StatuspageAPI.js
│ │ ├── index.js
│ │ └── statuspage.css
│ ├── storybook
│ │ └── bootstrap
│ │ │ ├── Accordion.stories.tsx
│ │ │ ├── Alert.stories.tsx
│ │ │ ├── Badge.stories.tsx
│ │ │ ├── BadgeInfo.stories.tsx
│ │ │ ├── Button.stories.tsx
│ │ │ ├── Card.stories.tsx
│ │ │ ├── CardWithList.stories.tsx
│ │ │ ├── ColorPalette.module.scss
│ │ │ ├── ColorPalette.stories.tsx
│ │ │ ├── ListGroup.stories.tsx
│ │ │ ├── Loader.stories.tsx
│ │ │ ├── Modal.stories.tsx
│ │ │ ├── Navbar.stories.tsx
│ │ │ ├── Offcanvas.stories.tsx
│ │ │ ├── Pagination.stories.tsx
│ │ │ ├── Spacing.stories.tsx
│ │ │ └── Tooltips.stories.tsx
│ ├── styleguide
│ │ ├── ButtonsGuide.jsx
│ │ ├── ColorsGuide.jsx
│ │ ├── FormsGuide.jsx
│ │ ├── LazyStyleGuide.tsx
│ │ ├── ListsGuide.jsx
│ │ ├── StyleGuide.jsx
│ │ └── index.js
│ ├── styles
│ │ ├── .gitignore
│ │ ├── assets
│ │ │ ├── 404@0.25x.png
│ │ │ ├── 404@0.5x.png
│ │ │ ├── 404@0.75x.png
│ │ │ ├── SkeletonCard.svg
│ │ │ ├── block.svg
│ │ │ ├── check.svg
│ │ │ ├── chevron-down.svg
│ │ │ ├── datasetBackgroundLarge.png
│ │ │ ├── datasetBackgroundSmall.png
│ │ │ ├── env.svg
│ │ │ ├── error-background@0.50x.png
│ │ │ ├── error-background@1.00x.png
│ │ │ ├── failed.svg
│ │ │ ├── favicon
│ │ │ │ ├── Favicon.ico
│ │ │ │ ├── Favicon.svg
│ │ │ │ ├── Favicon16px.png
│ │ │ │ ├── Favicon32px.png
│ │ │ │ ├── FaviconError.ico
│ │ │ │ ├── FaviconError.svg
│ │ │ │ ├── FaviconError16px.png
│ │ │ │ ├── FaviconError32px.png
│ │ │ │ ├── FaviconPause.ico
│ │ │ │ ├── FaviconPause.svg
│ │ │ │ ├── FaviconPause16px.png
│ │ │ │ ├── FaviconPause32px.png
│ │ │ │ ├── FaviconRunning.ico
│ │ │ │ ├── FaviconRunning.svg
│ │ │ │ ├── FaviconRunning16px.png
│ │ │ │ ├── FaviconRunning32px.png
│ │ │ │ ├── FaviconWaiting.ico
│ │ │ │ ├── FaviconWaiting.svg
│ │ │ │ ├── FaviconWaiting16px.png
│ │ │ │ └── FaviconWaiting32px.png
│ │ │ ├── globalEnvironment.svg
│ │ │ ├── lineBlock.png
│ │ │ ├── lineBlock.svg
│ │ │ ├── lineFailed.png
│ │ │ ├── lineFailed.svg
│ │ │ ├── linePaused.png
│ │ │ ├── linePaused.svg
│ │ │ ├── linePlaying.png
│ │ │ ├── linePlaying.svg
│ │ │ ├── lineStopped.png
│ │ │ ├── lineStopped.svg
│ │ │ ├── not-found.svg
│ │ │ ├── not-foundV2.svg
│ │ │ ├── oops.svg
│ │ │ ├── oopsV2.svg
│ │ │ ├── paused.svg
│ │ │ ├── playing.svg
│ │ │ ├── projectBackgroundLarge.png
│ │ │ ├── projectBackgroundSmall.png
│ │ │ ├── projectImagePreview.svg
│ │ │ ├── puzzlePieces.png
│ │ │ ├── stopped.svg
│ │ │ ├── workflowBackgroundLarge.png
│ │ │ └── workflowBackgroundSmall.png
│ │ ├── bootstrap
│ │ │ ├── _custom_bootstrap.scss
│ │ │ ├── _custom_bootstrap_variables.scss
│ │ │ └── _custom_bootstrap_variables2.0.scss
│ │ ├── bootstrap_ext
│ │ │ ├── _alert.scss
│ │ │ ├── _badge.scss
│ │ │ ├── _button.scss
│ │ │ ├── _nav.scss
│ │ │ ├── _nav_bar.scss
│ │ │ └── _underline_pill_nav.scss
│ │ ├── components
│ │ │ ├── _bootstrap_icons.scss
│ │ │ ├── _file_uploader.scss
│ │ │ ├── _input_tag.scss
│ │ │ ├── _jupyter_notebook.scss
│ │ │ ├── _project_display.scss
│ │ │ ├── _renku_cards.scss
│ │ │ ├── _renku_files.scss
│ │ │ ├── _renku_form.scss
│ │ │ ├── _renku_general.scss
│ │ │ ├── _renku_home.scss
│ │ │ ├── _renku_modals.scss
│ │ │ ├── _renku_search.scss
│ │ │ ├── _renku_styleguide.scss
│ │ │ └── _renku_tree.scss
│ │ ├── fonts
│ │ │ ├── Inter
│ │ │ │ ├── Inter-Black.woff
│ │ │ │ ├── Inter-Black.woff2
│ │ │ │ ├── Inter-BlackItalic.woff
│ │ │ │ ├── Inter-BlackItalic.woff2
│ │ │ │ ├── Inter-Bold.woff
│ │ │ │ ├── Inter-Bold.woff2
│ │ │ │ ├── Inter-BoldItalic.woff
│ │ │ │ ├── Inter-BoldItalic.woff2
│ │ │ │ ├── Inter-ExtraBold.woff
│ │ │ │ ├── Inter-ExtraBold.woff2
│ │ │ │ ├── Inter-ExtraBoldItalic.woff
│ │ │ │ ├── Inter-ExtraBoldItalic.woff2
│ │ │ │ ├── Inter-ExtraLight.woff
│ │ │ │ ├── Inter-ExtraLight.woff2
│ │ │ │ ├── Inter-ExtraLightItalic.woff
│ │ │ │ ├── Inter-ExtraLightItalic.woff2
│ │ │ │ ├── Inter-Italic.woff
│ │ │ │ ├── Inter-Italic.woff2
│ │ │ │ ├── Inter-Light.woff
│ │ │ │ ├── Inter-Light.woff2
│ │ │ │ ├── Inter-LightItalic.woff
│ │ │ │ ├── Inter-LightItalic.woff2
│ │ │ │ ├── Inter-Medium.woff
│ │ │ │ ├── Inter-Medium.woff2
│ │ │ │ ├── Inter-MediumItalic.woff
│ │ │ │ ├── Inter-MediumItalic.woff2
│ │ │ │ ├── Inter-Regular.woff
│ │ │ │ ├── Inter-Regular.woff2
│ │ │ │ ├── Inter-SemiBold.woff
│ │ │ │ ├── Inter-SemiBold.woff2
│ │ │ │ ├── Inter-SemiBoldItalic.woff
│ │ │ │ ├── Inter-SemiBoldItalic.woff2
│ │ │ │ ├── Inter-Thin.woff
│ │ │ │ ├── Inter-Thin.woff2
│ │ │ │ ├── Inter-ThinItalic.woff
│ │ │ │ ├── Inter-ThinItalic.woff2
│ │ │ │ ├── Inter-italic.var.woff2
│ │ │ │ ├── Inter-roman.var.woff2
│ │ │ │ ├── Inter.var.woff2
│ │ │ │ ├── LICENSE.txt
│ │ │ │ └── inter.scss
│ │ │ └── _fonts.scss
│ │ ├── icons
│ │ │ ├── assets
│ │ │ │ ├── danger.svg
│ │ │ │ ├── info.svg
│ │ │ │ ├── success.svg
│ │ │ │ └── warning.svg
│ │ │ ├── icons.scss
│ │ │ ├── sessions.svg
│ │ │ ├── ssh-cross.svg
│ │ │ ├── ssh-remove.svg
│ │ │ ├── ssh-ticked.svg
│ │ │ ├── ssh.svg
│ │ │ └── start-with-options.svg
│ │ ├── index.scss
│ │ ├── renku_additional_classes.scss
│ │ ├── renku_bootstrap.scss
│ │ ├── renku_bootstrap_customization.scss
│ │ └── renku_navy_theme.scss
│ ├── user
│ │ ├── User.state.js
│ │ ├── User.test.js
│ │ └── index.js
│ ├── utils
│ │ ├── Utils.test.jsx
│ │ ├── constants
│ │ │ ├── Dataset.js
│ │ │ ├── Docs.js
│ │ │ ├── Media.js
│ │ │ ├── Migrations.ts
│ │ │ └── Repositories.ts
│ │ ├── context
│ │ │ ├── appContext.ts
│ │ │ ├── appParams.constants.ts
│ │ │ ├── appParams.types.ts
│ │ │ └── appParams.utils.ts
│ │ ├── customHooks
│ │ │ ├── UseGetInactiveProjects.ts
│ │ │ ├── UseGetNamespaces.ts
│ │ │ ├── UseGetProjects.ts
│ │ │ ├── UseGetSessionLogs.ts
│ │ │ ├── UseGetVisibilities.ts
│ │ │ ├── UseSliceSelector.ts.remove
│ │ │ ├── useAppDispatch.hook.ts
│ │ │ ├── useAppSelector.hook.ts
│ │ │ ├── useGetRecentlyVisitedProjects.ts
│ │ │ ├── useLegacySelector.hook.ts
│ │ │ ├── useLocationHash.hook.ts
│ │ │ └── useNow.hook.ts
│ │ ├── feature-flags
│ │ │ ├── featureFlags.constants.ts
│ │ │ ├── featureFlags.slice.ts
│ │ │ ├── featureFlags.types.ts
│ │ │ └── useFeatureFlagSync.hook.ts
│ │ ├── helpers
│ │ │ ├── ApiErrors.ts
│ │ │ ├── ArrayUtils.ts
│ │ │ ├── Dataset.utils.ts
│ │ │ ├── DatasetUtils.test.ts
│ │ │ ├── DateTimeUtils.test.ts
│ │ │ ├── DateTimeUtils.ts
│ │ │ ├── DurationUtils.test.ts
│ │ │ ├── DurationUtils.ts
│ │ │ ├── Encoding.js
│ │ │ ├── EnhancedState.ts
│ │ │ ├── HelperFunctions.js
│ │ │ ├── HelperFunctionsV2.ts
│ │ │ ├── KgSearchFunctions.ts
│ │ │ ├── ProjectFunctions.ts
│ │ │ ├── RtkQueryErrorsContext.tsx
│ │ │ ├── ServiceWorker.js
│ │ │ ├── SessionFunctions.ts
│ │ │ ├── TextUtils.test.ts
│ │ │ ├── TextUtils.ts
│ │ │ ├── UseWindowsSize.tsx
│ │ │ ├── kgPagination.utils.ts
│ │ │ ├── markdown.utils.js
│ │ │ ├── markdownUtils.test.js
│ │ │ ├── pagination.utils.ts
│ │ │ ├── safeNewUrl.utils.ts
│ │ │ ├── sentry
│ │ │ │ ├── Sentry.js
│ │ │ │ ├── Sentry.test.js
│ │ │ │ └── index.js
│ │ │ ├── url
│ │ │ │ ├── NotebookUrl.test.ts
│ │ │ │ ├── NotebookUrl.ts
│ │ │ │ ├── Url.js
│ │ │ │ ├── Url.test.js
│ │ │ │ ├── index.ts
│ │ │ │ ├── versionedUrls.test.ts
│ │ │ │ └── versionedUrls.ts
│ │ │ └── verifyTitleCharacters.utils.ts
│ │ └── types
│ │ │ ├── coreService.types.ts
│ │ │ └── pagination.types.ts
│ ├── vite-env.d.ts
│ ├── websocket
│ │ ├── README.md
│ │ ├── WsMessages.ts
│ │ ├── handlers
│ │ │ ├── kgActivationStatusHandler.ts
│ │ │ ├── sessionStatusHandler.ts
│ │ │ ├── sessionStatusHandlerV2.ts
│ │ │ ├── userHandlers.test.ts
│ │ │ └── userHandlers.ts
│ │ ├── index.test.ts
│ │ └── index.ts
│ └── workflows
│ │ ├── Workflows.container.tsx
│ │ ├── Workflows.present.tsx
│ │ ├── Workflows.scss
│ │ └── index.ts
├── testSetup.ts
├── tsconfig.json
├── tsconfig.node.json
├── vite.config.ts
└── vitest.config.ts
├── dev
└── telepresence-showcase-projects.json
├── github_deploy_key.enc
├── helm-chart
├── README.rst
└── renku-ui
│ ├── .helmignore
│ ├── Chart.yaml
│ └── values.yaml
├── package-lock.json
├── package.json
├── server
├── .dockerignore
├── .eslintignore
├── .eslintrc.json
├── .gitignore
├── .prettierignore
├── Dockerfile
├── README.md
├── docker-entrypoint.sh
├── jest.config.js
├── package-lock.json
├── package.json
├── public
│ ├── server-flow-auth.png
│ └── server-flow-request.png
├── run-telepresence.sh
├── src
│ ├── api-client
│ │ └── index.ts
│ ├── authentication
│ │ ├── authentication.types.ts
│ │ └── authenticator.ts
│ ├── config.ts
│ ├── index.ts
│ ├── logger.ts
│ ├── routes
│ │ ├── apis.interfaces.ts
│ │ ├── apis.ts
│ │ ├── helperFunctions.ts
│ │ ├── index.ts
│ │ └── internal.ts
│ ├── storage
│ │ ├── RedisStorage.ts
│ │ └── index.ts
│ ├── utils
│ │ ├── apiError.ts
│ │ ├── asyncSemaphore.ts
│ │ ├── baseError.ts
│ │ ├── errorHandler.ts
│ │ ├── index.ts
│ │ ├── middlewares
│ │ │ ├── errorHandlerMiddleware.ts
│ │ │ ├── lastProjectsMiddleware.ts
│ │ │ ├── lastSearchQueriesMiddleware.ts
│ │ │ ├── requestHandlerMiddleware.ts
│ │ │ └── uploadFileMiddleware.ts
│ │ ├── prometheus
│ │ │ └── prometheus.ts
│ │ ├── sentry
│ │ │ └── sentry.ts
│ │ ├── url-join.ts
│ │ └── url.ts
│ └── websocket
│ │ ├── README.md
│ │ ├── WsMessages.ts
│ │ ├── handlers
│ │ ├── activationKgStatus.ts
│ │ ├── clientVersion.ts
│ │ ├── handlers.types.ts
│ │ ├── sessions.ts
│ │ └── sessionsV2.ts
│ │ └── index.ts
├── tests
│ ├── storage
│ │ └── index.test.ts.old
│ ├── utils
│ │ ├── index.test.ts
│ │ └── url.test.ts
│ └── websocket
│ │ └── index.test.ts
└── tsconfig.json
└── tests
├── .eslintignore
├── .eslintrc.json
├── .gitignore
├── README.md
├── cypress.config.ts
├── cypress
├── e2e
│ ├── addDatasetToProject.spec.ts
│ ├── adminPage.spec.ts
│ ├── autostartSession.spec.ts
│ ├── connectedServicesV2.spec.ts
│ ├── coreServiceVersion.spec.ts
│ ├── dashboard.spec.ts
│ ├── dashboardV2.spec.ts
│ ├── datasets.spec.ts
│ ├── groupV2.spec.ts
│ ├── groupV2DataConnectorCredentials.spec.ts
│ ├── home.spec.ts
│ ├── kgSearch.spec.ts
│ ├── maintenance.spec.ts
│ ├── navV2.spec.ts
│ ├── newDataset.spec.ts
│ ├── newProject.spec.ts
│ ├── newSession.spec.ts
│ ├── project.spec.ts
│ ├── projectDatasets.spec.ts
│ ├── projectSettings.spec.ts
│ ├── projectStatus.spec.ts
│ ├── projectV2.spec.ts
│ ├── projectV2DataConnectorCredentials.spec.ts
│ ├── projectV2Session.spec.ts
│ ├── projectV2SessionSecrets.spec.ts
│ ├── projectV2setup.spec.ts
│ ├── searchV2.spec.ts
│ ├── secrets.spec.ts
│ ├── session.spec.ts
│ └── workflows.spec.ts
├── fixtures
│ ├── admin
│ │ └── user-1.json
│ ├── avatars
│ │ └── avatar.png
│ ├── cloudStorage
│ │ ├── cloud-storage-multiple.json
│ │ ├── cloud-storage-secrets-empty.json
│ │ ├── cloud-storage-secrets-partial.json
│ │ ├── cloud-storage-secrets.json
│ │ ├── cloud-storage-with-secrets-values-empty.json
│ │ ├── cloud-storage-with-secrets-values-full.json
│ │ ├── cloud-storage-with-secrets-values-partial.json
│ │ ├── cloud-storage-with-secrets.json
│ │ ├── cloud-storage.json
│ │ ├── new-cloud-storage.json
│ │ ├── new-cloud-storage_v2.json
│ │ ├── storage-schema-s3.json
│ │ └── storage-schema.json
│ ├── config-session-class-email-us.json
│ ├── config.json
│ ├── config_maintenance.json
│ ├── connectedServicesV2
│ │ ├── account.json
│ │ ├── connections.json
│ │ ├── installationsFull.json
│ │ ├── installationsSuspended.json
│ │ └── providers.json
│ ├── dashboard
│ │ ├── dismissible-simple-info-message.json
│ │ └── non-dismissible-read-more-success-message.json
│ ├── data-service-admin-user.json
│ ├── data-service-user.json
│ ├── dataConnector
│ │ ├── data-connector-global.json
│ │ ├── data-connector-multiple.json
│ │ ├── data-connector-permissions.json
│ │ ├── data-connector-public.json
│ │ ├── data-connector-secrets-empty.json
│ │ ├── data-connector-secrets-partial.json
│ │ ├── data-connector-secrets.json
│ │ ├── data-connector-webdav.json
│ │ ├── data-connector.json
│ │ ├── empty-list.json
│ │ ├── new-data-connector.json
│ │ ├── project-data-connector-links-multiple.json
│ │ └── project-data-connector-links.json
│ ├── dataServices
│ │ ├── resource-class.json
│ │ ├── resource-pool-users.json
│ │ └── resource-pools.json
│ ├── datasets
│ │ ├── add-file.json
│ │ ├── create-dataset-title-error.json
│ │ ├── create-dataset.json
│ │ ├── dataset-files.json
│ │ ├── dataset-list-error.json
│ │ ├── dataset_1ad4e4dbb8eb47209dc21e27e18b88fd.json
│ │ ├── dataset_4577b68957b7478bba1f07d6513b43d2.json
│ │ ├── dataset_897ee9effb9b42efab454011a8fba5e4.json
│ │ ├── datasets-import.json
│ │ ├── files
│ │ │ ├── bigFile.bin
│ │ │ ├── count_flights.txt
│ │ │ ├── datasetFiles.zip
│ │ │ └── sdsc.jpeg
│ │ ├── import-job-completed.json
│ │ ├── import-job-error.json
│ │ ├── import-job-in-process.json
│ │ ├── no-dataset.json
│ │ ├── project-dataset-kg-list.json
│ │ ├── project-dataset-list.json
│ │ ├── upload-dataset-file.json
│ │ └── upload-dataset-multiple-files.json
│ ├── errors
│ │ ├── core-error-1101.json
│ │ ├── core-error-1102.json
│ │ ├── core-error-2001.json
│ │ ├── core-error-2200.json
│ │ └── core-error-old.json
│ ├── groupV2
│ │ ├── create-groupV2.json
│ │ ├── groupV2-permissions-none.json
│ │ ├── groupV2-permissions.json
│ │ ├── list-groupV2-members.json
│ │ ├── list-groupV2-post-delete.json
│ │ ├── list-groupV2.json
│ │ ├── read-groupV2-namespace.json
│ │ ├── read-groupV2.json
│ │ ├── update-groupV2-metadata.json
│ │ └── update-groupV2-namespace.json
│ ├── kgSearch
│ │ ├── datasetsSearch.json
│ │ ├── emptySearch.json
│ │ ├── lastSearch.json
│ │ ├── no-active-projects.json
│ │ └── search.json
│ ├── landing-user-projects.json
│ ├── namespaceV2
│ │ ├── list-namespaceV2.json
│ │ └── namespaceV2-user1.json
│ ├── namespaces.json
│ ├── project
│ │ ├── cache-project-list-empty.json
│ │ ├── cache-project-list.json
│ │ ├── config-show.json
│ │ ├── create-project.json
│ │ ├── edit
│ │ │ ├── edit-project-confirm.json
│ │ │ └── project-kg-description.json
│ │ ├── files
│ │ │ ├── 01-CountFlights.json
│ │ │ ├── Historical-Use.json
│ │ │ ├── latex-notebook.json
│ │ │ ├── project-files-git-attributes
│ │ │ ├── project-files-root.json
│ │ │ └── random_py_file.json
│ │ ├── kgStatus
│ │ │ ├── kgStatus404.json
│ │ │ ├── kgStatusIndexedFailure.json
│ │ │ ├── kgStatusIndexedSuccess.json
│ │ │ └── kgStatusIndexing.json
│ │ ├── migrationStatus
│ │ │ ├── level1-all-good.json
│ │ │ ├── level2-template-core-cache.json
│ │ │ ├── level3-only-template.json
│ │ │ ├── level3-version-minor-and-template.json
│ │ │ ├── level4-old-updatable.json
│ │ │ ├── level5-old-updatable.json
│ │ │ ├── level5-old-version.json
│ │ │ ├── levelX-too-new.json
│ │ │ └── version-core.json
│ │ ├── project-kg-edited.json
│ │ ├── project-kg.json
│ │ ├── project-status-done.json
│ │ ├── project-status-processing.json
│ │ ├── test-project-branches.json
│ │ ├── test-project-commits.json
│ │ ├── test-project-readme-commits.json
│ │ ├── test-project-readme.md
│ │ ├── test-project.json
│ │ ├── test-project_config.json
│ │ ├── test-project_migration_update-optional.json
│ │ ├── test-project_migration_update-recommended.json
│ │ ├── test-project_migration_update-required.json
│ │ ├── update-project-internal.json
│ │ ├── update-project-tag-description.json
│ │ ├── update-project.json
│ │ └── visibility
│ │ │ ├── error-update-visibility.json
│ │ │ └── visibility-change-accepted.json
│ ├── projectV2
│ │ ├── create-projectV2.json
│ │ ├── list-projectV2-members-many.json
│ │ ├── list-projectV2-members.json
│ │ ├── list-projectV2-post-delete.json
│ │ ├── list-projectV2.json
│ │ ├── projectV2-permissions-editor.json
│ │ ├── projectV2-permissions-viewer.json
│ │ ├── projectV2-permissions.json
│ │ ├── read-projectV2-empty.json
│ │ ├── read-projectV2-one-github-repo.json
│ │ ├── read-projectV2-without-documentation.json
│ │ ├── read-projectV2.json
│ │ ├── session-launchers-global.json
│ │ ├── session-launchers-without-env-vars.json
│ │ ├── session-launchers.json
│ │ ├── update-projectV2-metadata.json
│ │ ├── update-projectV2-one-repository.json
│ │ └── update-projectV2-repositories.json
│ ├── projectV2SessionSecrets
│ │ ├── empty_list.json
│ │ ├── patch_secret_slot.json
│ │ ├── patch_secrets_clear_value.json
│ │ ├── patch_secrets_with_new_value.json
│ │ ├── patched_secret_slots.json
│ │ ├── patched_secrets_with_cleared_value.json
│ │ ├── patched_secrets_with_new_value.json
│ │ ├── post_secret_slot.json
│ │ ├── secret_slots.json
│ │ ├── secret_slots_with_new_slot.json
│ │ ├── secrets.json
│ │ ├── shortened_secret_slots.json
│ │ └── user_secrets.json
│ ├── projects.json
│ ├── projects
│ │ ├── cache-project-list.json
│ │ ├── change-visibility.json
│ │ ├── empty-last-visited-projects.json
│ │ ├── last-visited-projects-5.json
│ │ ├── last-visited-projects.json
│ │ ├── member-projects.json
│ │ ├── migration-check_43781-old.json
│ │ ├── migration-check_43781.json
│ │ ├── namespace-128.json
│ │ ├── namespace-129.json
│ │ ├── no-project.json
│ │ ├── project-limited-permissions.json
│ │ ├── project.json
│ │ ├── projectLanding.json
│ │ ├── project_30929.json
│ │ ├── project_39646.json
│ │ ├── project_43781.json
│ │ ├── project_44966.json
│ │ ├── project_44967.json
│ │ ├── project_44968.json
│ │ ├── project_55402.json
│ │ └── project_78277.json
│ ├── repositories
│ │ ├── repository-metadata-token-error.json
│ │ └── repository-metadata.json
│ ├── searchV2
│ │ └── search-response.json
│ ├── session
│ │ ├── ci-image-missing.json
│ │ ├── ci-image.json
│ │ ├── ci-jobs-failed.json
│ │ ├── ci-jobs-missing.json
│ │ ├── ci-jobs-running.json
│ │ ├── ci-jobs.json
│ │ ├── ci-pipelines.json
│ │ ├── ci-registry.json
│ │ ├── pipeline-jobs.json
│ │ ├── pipelines.json
│ │ ├── renku.ini
│ │ └── server-options.json
│ ├── sessions
│ │ ├── cleanLogs.json
│ │ ├── empty-sessions.json
│ │ ├── emptyLogs.json
│ │ ├── environments.json
│ │ ├── logs.json
│ │ ├── sessionError.json
│ │ ├── sessionStopping.json
│ │ ├── sessionV2.json
│ │ ├── sessions.json
│ │ ├── sessionsV2.json
│ │ └── sessionsWithError.json
│ ├── statuspage
│ │ ├── statuspage-operational.json
│ │ └── statuspage-outage.json
│ ├── templates.json
│ ├── user-preferences
│ │ ├── user-preferences-1-pin.json
│ │ ├── user-preferences-3-pins.json
│ │ └── user-preferences-default.json
│ ├── user.json
│ ├── version-core.json
│ ├── version-notebooks.json
│ ├── version-ui.json
│ └── workflows
│ │ ├── workflow-show-details-notexists.json
│ │ ├── workflow-show-links-mappings.json
│ │ ├── workflow-show-outdated.json
│ │ ├── workflow-show-params.json
│ │ ├── workflows-list-links-mappings-inactive.json
│ │ └── workflows-list-links-mappings.json
└── support
│ ├── commands
│ ├── datasets.ts
│ ├── general.ts
│ ├── projects.ts
│ ├── react-select.ts
│ ├── sessions.ts
│ └── workflows.ts
│ ├── e2e.ts
│ └── renkulab-fixtures
│ ├── admin.ts
│ ├── cloudStorage.ts
│ ├── connectedServices.ts
│ ├── dashboard.ts
│ ├── dataConnectors.ts
│ ├── dataServices.ts
│ ├── datasets.ts
│ ├── fixtures.ts
│ ├── fixtures.types.ts
│ ├── global.ts
│ ├── index.ts
│ ├── kgSearch.ts
│ ├── namespaceV2.ts
│ ├── newProject.ts
│ ├── newSession.ts
│ ├── projectV2.ts
│ ├── projects.ts
│ ├── searchV2.ts
│ ├── secrets.ts
│ ├── sessions.ts
│ ├── terms.ts
│ ├── user-preferences.ts
│ ├── user.ts
│ └── workflows.ts
├── package-lock.json
├── package.json
└── tsconfig.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | #
3 | # Copyright 2017 - Swiss Data Science Center (SDSC)
4 | # A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
5 | # Eidgenössische Technische Hochschule Zürich (ETHZ).
6 | #
7 | # Licensed under the Apache License, Version 2.0 (the "License");
8 | # you may not use this file except in compliance with the License.
9 | # You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 |
19 | root = true
20 |
21 | # Dockerfile
22 | [Dockerfile]
23 | indent_size = 4
24 |
25 | # Makefile
26 | [Makefile]
27 | indent_size = 4
28 | indent_style = tab
29 |
30 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @SwissDataScienceCenter/renku-ui-maintainers
2 | /docs/ @SwissDataScienceCenter/documentation-reviewers
3 | *.rst @SwissDataScienceCenter/documentation-reviewers
4 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | # Ref: https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser
2 | blank_issues_enabled: false
3 | contact_links:
4 | - name: "Report a UI bug 🐛"
5 | url: https://github.com/SwissDataScienceCenter/renku-ui/discussions/new?category=bugs
6 | about: |
7 | If you have found a bug, please report it in the Discussions section. A maintainer will later create an issue or update existing ones.
8 | - name: "Suggest new ideas 💡"
9 | url: https://github.com/SwissDataScienceCenter/renku-ui/discussions/new?category=ideas
10 | about: |
11 | If you have an idea for a new feature or improvement, please share it in the Discussions section.
12 | - name: "Renku discussions 💬"
13 | url: https://renku.discourse.group/
14 | about: |
15 | Do you have questions about Renku? You can start a discussion in our forum.
16 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/new_issue.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "New issue - for UI maintainers"
3 | about: Create a new UI issue. This template is for UI maintainers.
4 | title: ""
5 | labels: ""
6 | assignees: ""
7 | ---
8 |
9 |
14 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: "github-actions"
4 | directory: "/"
5 | schedule:
6 | interval: "weekly"
7 |
--------------------------------------------------------------------------------
/.github/workflows/cleanup-old-deployments.yml:
--------------------------------------------------------------------------------
1 | name: Cleanup old deployments
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | jobs:
7 | cleanup-old-deployments-from-github:
8 | runs-on: ubuntu-24.04
9 | steps:
10 | - uses: actions/checkout@v4
11 | with:
12 | fetch-depth: 0
13 | - uses: actions/github-script@v7
14 | with:
15 | script: |
16 | const script = require('./.github/workflows/cleanup-old-deployments.js')
17 | await script({ core, github })
18 |
--------------------------------------------------------------------------------
/.github/workflows/github-project.yml:
--------------------------------------------------------------------------------
1 | name: Add Issues to triage
2 | on:
3 | issues:
4 | types:
5 | - opened
6 | jobs:
7 | add_to_project:
8 | runs-on: ubuntu-24.04
9 | steps:
10 | - name: Add to triage board
11 | uses: actions/add-to-project@main
12 | with:
13 | project-url: https://github.com/orgs/SwissDataScienceCenter/projects/51
14 | github-token: ${{ secrets.RENKUBOT_GITHUB_TOKEN }}
15 | labeled: status/triage
16 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | . "$(dirname -- "$0")/_/husky.sh"
3 |
4 | set -e
5 |
6 | cd ./client
7 | npm run format-commit
8 | cd ..
9 |
10 | cd ./server
11 | npm run format-commit
12 | cd ..
13 |
14 | cd ./tests
15 | npm run format-commit
16 | cd ..
17 |
--------------------------------------------------------------------------------
/CODING_GUIDELINES.md:
--------------------------------------------------------------------------------
1 | # Coding Guidelines
2 |
3 | This page is deprecated.
4 |
5 | The guidelines have been moved [to our wiki](https://github.com/SwissDataScienceCenter/renku-ui/wiki/Develop#coding-rules-).
6 |
--------------------------------------------------------------------------------
/client/.dockerignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /gitlab
3 | /doc
4 | /helm-chart
5 | .editorconfig
6 | .eslintignore
7 | .eslintrc.json
8 | .gitignore
9 | .travis.yml
10 | docker-compose.yml
11 | Dockerfile
12 | Makefile
13 | README.md
14 |
--------------------------------------------------------------------------------
/client/.eslintignore:
--------------------------------------------------------------------------------
1 | *.css
2 | *.svg
3 | # Generated files should not be linted
4 | src/features/dataConnectorsV2/api/data-connectors.api.ts
5 | src/features/dataConnectorsV2/api/doiResolver.generated-api.ts
6 | src/features/project/components/cloudStorage/api/projectCloudStorage.generated-api.ts
7 | src/features/projectsV2/api/projectV2.api.ts
8 | src/features/sessionsV2/api/sessionLaunchersV2.generated-api.ts
9 | src/features/sessionsV2/api/sessionsV2.generated-api.ts
10 | src/features/usersV2/api/users.generated-api.ts
11 | src/features/searchV2/api/searchV2Api.generated-api.ts
12 |
--------------------------------------------------------------------------------
/client/.prettierignore:
--------------------------------------------------------------------------------
1 | build/
2 |
--------------------------------------------------------------------------------
/client/.rtk/emptyTemplate.ts:
--------------------------------------------------------------------------------
1 | import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
2 |
3 | // initialize an empty api service that we'll inject endpoints into later as needed
4 | export const emptySplitApi = createApi({
5 | baseQuery: fetchBaseQuery({ baseUrl: "" }),
6 | endpoints: () => ({}),
7 | });
8 |
--------------------------------------------------------------------------------
/client/.storybook/manager.ts:
--------------------------------------------------------------------------------
1 | import { addons } from "@storybook/manager-api";
2 | import { create } from "@storybook/theming";
3 |
4 | const renkuTheme = create({
5 | base: "light",
6 | colorSecondary: "#009568",
7 | brandTitle: "Renku Storybook",
8 | brandUrl: "/storybook/",
9 | brandImage: "/static/public/img/logo.svg",
10 | brandTarget: "_self",
11 | });
12 |
13 | addons.setConfig({
14 | theme: renkuTheme,
15 | });
16 |
--------------------------------------------------------------------------------
/client/README.md:
--------------------------------------------------------------------------------
1 | # renku-ui/client
2 |
3 | The React-based client for renku. The primary source of documentation for renku UI is in the [root of the repo](../). This readme is focused on some particular details about the client.
4 |
5 | ## package.json/overrides
6 |
7 | The project is now using [rect-18](https://github.com/facebook/react/blob/main/CHANGELOG.md), but the current version of [storybook](https://github.com/storybookjs/storybook), 6.5.15, is not fully compatible it. As a result, some packages need to be overridden to prevent peer-dependency complaints. This should hopefully be fixed when [storybook 7](https://github.com/storybookjs/storybook/issues/13491) is released.
8 |
9 | ## RTK Query Code Generation
10 |
11 | Please refer to the [README file in the .rtk folder](./.rtk/README.md) for more details.
12 |
--------------------------------------------------------------------------------
/client/public/ads.txt:
--------------------------------------------------------------------------------
1 | placeholder.example.com, placeholder, DIRECT, placeholder
--------------------------------------------------------------------------------
/client/public/android-chrome-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/android-chrome-128x128.png
--------------------------------------------------------------------------------
/client/public/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/android-chrome-192x192.png
--------------------------------------------------------------------------------
/client/public/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/android-chrome-512x512.png
--------------------------------------------------------------------------------
/client/public/apple-touch-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/apple-touch-icon-180x180.png
--------------------------------------------------------------------------------
/client/public/clock-rotate-left-icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/client/public/dashboardHeader1080x280.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/dashboardHeader1080x280.png
--------------------------------------------------------------------------------
/client/public/dashboardHeader1920x280.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/dashboardHeader1920x280.png
--------------------------------------------------------------------------------
/client/public/dashboardHeader2560x280.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/dashboardHeader2560x280.png
--------------------------------------------------------------------------------
/client/public/dashboardHeader3840x280.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/dashboardHeader3840x280.png
--------------------------------------------------------------------------------
/client/public/dashboardHeader640x200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/dashboardHeader640x200.png
--------------------------------------------------------------------------------
/client/public/dashboardHeader750x200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/dashboardHeader750x200.png
--------------------------------------------------------------------------------
/client/public/dashboardV2header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/dashboardV2header.png
--------------------------------------------------------------------------------
/client/public/dataset-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/dataset-icon.png
--------------------------------------------------------------------------------
/client/public/dataset-icon.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/client/public/earlyAccessDark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/earlyAccessDark.png
--------------------------------------------------------------------------------
/client/public/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/favicon-16x16.png
--------------------------------------------------------------------------------
/client/public/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/favicon-32x32.png
--------------------------------------------------------------------------------
/client/public/favicon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/favicon-48x48.png
--------------------------------------------------------------------------------
/client/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/favicon.ico
--------------------------------------------------------------------------------
/client/public/project-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/project-icon.png
--------------------------------------------------------------------------------
/client/public/project-icon.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/client/public/static/public/img/404@0.25x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/404@0.25x.png
--------------------------------------------------------------------------------
/client/public/static/public/img/404@0.5x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/404@0.5x.png
--------------------------------------------------------------------------------
/client/public/static/public/img/404@0.75x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/404@0.75x.png
--------------------------------------------------------------------------------
/client/public/static/public/img/earlyAccessDark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/earlyAccessDark.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/Large_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/Large_1.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/Large_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/Large_2.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/Large_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/Large_3.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/Large_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/Large_4.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/Large_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/Large_5.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/Small_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/Small_1.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/Small_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/Small_2.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/Small_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/Small_3.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/Small_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/Small_4.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/Small_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/Small_5.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/X-Large_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/X-Large_1.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/X-Large_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/X-Large_2.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/X-Large_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/X-Large_3.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/X-Large_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/X-Large_4.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/X-Large_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/X-Large_5.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/X-Small_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/X-Small_1.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/X-Small_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/X-Small_2.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/X-Small_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/X-Small_3.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/X-Small_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/X-Small_4.png
--------------------------------------------------------------------------------
/client/public/static/public/img/redirect/frog/X-Small_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/static/public/img/redirect/frog/X-Small_5.png
--------------------------------------------------------------------------------
/client/public/stockimages/Zurich.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/stockimages/Zurich.jpg
--------------------------------------------------------------------------------
/client/public/stockimages/dataset3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/public/stockimages/dataset3.png
--------------------------------------------------------------------------------
/client/src/api-client/job.js:
--------------------------------------------------------------------------------
1 | export default function addJobMethods(client) {
2 | /**
3 | * Get status for the target job in the core service
4 | * @param {string} job_id - core job id
5 | * @param {string} versionUrl - target core version to identify the proper jobs queue
6 | */
7 | client.getJobStatus = (job_id, versionUrl = null) => {
8 | let headers = client.getBasicHeaders();
9 | headers.append("Content-Type", "application/json");
10 | headers.append("X-Requested-With", "XMLHttpRequest");
11 |
12 | const url = client.versionedCoreUrl("jobs", versionUrl);
13 | return client
14 | .clientFetch(`${url}/${job_id}`, {
15 | method: "GET",
16 | headers: headers,
17 | })
18 | .then((response) => {
19 | return response.data?.result;
20 | });
21 | };
22 | }
23 |
--------------------------------------------------------------------------------
/client/src/api-client/test-samples/index.js:
--------------------------------------------------------------------------------
1 | import { namespaces } from "./namespaces";
2 | import {
3 | projects,
4 | projectReadme,
5 | projectNotebookFile,
6 | } from "./project-samples";
7 | import { statuspage } from "./statuspage";
8 | import { user } from "./user";
9 |
10 | export {
11 | namespaces,
12 | projects,
13 | projectReadme,
14 | projectNotebookFile,
15 | statuspage,
16 | user,
17 | };
18 |
--------------------------------------------------------------------------------
/client/src/api-client/test-samples/namespaces.js:
--------------------------------------------------------------------------------
1 | export const namespaces = [
2 | {
3 | id: 3,
4 | name: "myUser",
5 | path: "myUser",
6 | kind: "user",
7 | full_path: "myUser",
8 | parent_id: null,
9 | },
10 | {
11 | id: 36,
12 | name: "team",
13 | path: "team",
14 | kind: "group",
15 | full_path: "team",
16 | parent_id: null,
17 | members_count_with_descendants: 1,
18 | },
19 | ];
20 |
--------------------------------------------------------------------------------
/client/src/api-client/test-samples/user.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | export const user = {
3 | id: 1,
4 | name: "Test User",
5 | username: "tuser",
6 | state: "active",
7 | avatar_url: "",
8 | web_url: "https://renkulab.io/gitlab/tuser",
9 | created_at: "2018-06-19T10:11:04.058Z",
10 | bio: null,
11 | location: null,
12 | public_email: "",
13 | skype: "",
14 | linkedin: "",
15 | twitter: "",
16 | website_url: "",
17 | organization: null,
18 | last_sign_in_at: "2019-01-04T11:11:00.509Z",
19 | confirmed_at: "2018-06-19T10:11:04.027Z",
20 | last_activity_on: "2018-12-19",
21 | email: "tuser@dummy.com",
22 | theme_id: 1,
23 | color_scheme_id: 1,
24 | projects_limit: 100000,
25 | current_sign_in_at: "2019-01-04T12:47:31.611Z",
26 | identities: [
27 | {
28 | provider: "oauth2_generic",
29 | extern_uid: "aaaabbbbccceeee",
30 | },
31 | ],
32 | can_create_group: true,
33 | can_create_project: true,
34 | two_factor_enabled: false,
35 | external: false,
36 | private_profile: null,
37 | };
38 |
--------------------------------------------------------------------------------
/client/src/authentication/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2017 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | import { LoginHelper } from "./Authentication.container.js";
20 |
21 | export { LoginHelper };
22 |
--------------------------------------------------------------------------------
/client/src/components/Alert.constants.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2024 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export const ALERT_ICON_SIZE = 32;
20 |
--------------------------------------------------------------------------------
/client/src/components/Logs.module.scss:
--------------------------------------------------------------------------------
1 | .modalHeader {
2 | & :global(.modal-title) {
3 | font-size: 27px;
4 | font-weight: 600;
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/client/src/components/PrimaryAlert.module.scss:
--------------------------------------------------------------------------------
1 | @import "~bootstrap/scss/functions";
2 | @import "~bootstrap/scss/variables";
3 | @import "~bootstrap/scss/variables-dark";
4 | @import "../styles/renku_bootstrap_customization.scss";
5 |
6 | .primaryAlert {
7 | --bs-primary-bg-subtle: #{tint-color($primary, 90%)};
8 | }
9 |
--------------------------------------------------------------------------------
/client/src/components/commandCopy/CommandCopy.module.scss:
--------------------------------------------------------------------------------
1 | @import "/src/styles/bootstrap/_custom_bootstrap_variables.scss";
2 |
3 | .main {
4 | background: $rk-background-1;
5 | border-color: $rk-border-input;
6 | }
7 |
8 | .clipboardBtn {
9 | transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
10 | border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
11 |
12 | &:hover,
13 | &:focus {
14 | background-color: $rk-background-0 !important;
15 | color: $rk-green-highlight !important;
16 | border-color: $rk-green !important;
17 | }
18 | &:active {
19 | color: $rk-white !important;
20 | background-color: $rk-green !important;
21 | }
22 | &:disabled {
23 | color: $rk-green !important;
24 | opacity: 0.6 !important;
25 | }
26 |
27 | svg {
28 | margin: unset !important;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/client/src/components/commits/Commits.css:
--------------------------------------------------------------------------------
1 | .commit-object,
2 | .commit-date {
3 | padding: 0.5rem;
4 | border: 1px solid #e4e7ea;
5 | }
6 |
7 | .commit-object .commit-cut-message {
8 | text-overflow: ellipsis;
9 | overflow: hidden;
10 | white-space: nowrap;
11 | }
12 |
13 | .commit-date {
14 | background-color: rgba(0, 0, 0, 0.01);
15 | font-size: 80%;
16 | font-weight: bold;
17 | padding-top: 0.25rem;
18 | padding-bottom: 0.25rem;
19 | background-color: #f5f5f5;
20 | }
21 |
22 | .commit-object {
23 | line-height: 1.5rem;
24 | }
25 |
26 | .commit-cut-message > a {
27 | text-decoration: none;
28 | }
29 |
30 | .commit-buttons > .last-item-button-group {
31 | border-radius: 0 8px 8px 0;
32 | }
33 |
34 | .commit-buttons button code {
35 | font-size: 14px !important;
36 | }
37 |
--------------------------------------------------------------------------------
/client/src/components/entitySearchFilter/EntitySearchFilter.css:
--------------------------------------------------------------------------------
1 | .filter-label {
2 | font-size: small;
3 | font-weight: normal;
4 | color: var(--bs-rk-text-light);
5 | }
6 |
7 | .filter-title {
8 | font-size: large;
9 | font-weight: bold;
10 | }
11 |
12 | .filter-title {
13 | font-size: large;
14 | font-weight: bold;
15 | }
16 |
17 | .filter-box {
18 | display: flex;
19 | flex-direction: column;
20 | gap: 40px;
21 | padding-top: 8px;
22 | }
23 |
24 | .input-filter-box {
25 | background-color: white;
26 | border: 1px solid #dce4ec;
27 | border-radius: 8px;
28 | padding: 15px 20px;
29 | }
30 |
31 | .button-filter-box {
32 | background-color: white;
33 | border: 1px solid #dce4ec;
34 | border-radius: 8px;
35 | padding: 7px 20px;
36 | }
37 |
38 | .search-result-header {
39 | padding: 0 20px;
40 | }
41 |
--------------------------------------------------------------------------------
/client/src/components/entityWatermark/entityWatermark.module.scss:
--------------------------------------------------------------------------------
1 | .EntityWatermark {
2 | font-size: 150px;
3 | line-height: 0;
4 | color: rgba(0, 0, 0, 0.1);
5 | }
6 |
--------------------------------------------------------------------------------
/client/src/components/form-field/FormLabel.tsx:
--------------------------------------------------------------------------------
1 | import { Label } from "reactstrap";
2 | import { InputLabel } from "../formlabels/FormLabels";
3 |
4 | type FormLabelProps = {
5 | name: string;
6 | label: string;
7 | required?: boolean;
8 | };
9 |
10 | function FormLabel({ name, label, required }: FormLabelProps) {
11 | return (
12 |
15 | );
16 | }
17 |
18 | export default FormLabel;
19 |
--------------------------------------------------------------------------------
/client/src/components/form-field/form-field.types.ts:
--------------------------------------------------------------------------------
1 | export type SetInputsValue = { target: unknown; type: unknown };
2 |
--------------------------------------------------------------------------------
/client/src/components/formlabels/FormLabels.css:
--------------------------------------------------------------------------------
1 | .helper-label {
2 | font-style: italic;
3 | padding-right: 10px;
4 | }
5 |
6 | .error-feedback {
7 | line-height: 16px;
8 | color: var(--bs-danger);
9 | padding-top: 6px;
10 | display: block;
11 | }
12 |
13 | .success-feedback {
14 | line-height: 16px;
15 | color: var(--bs-success);
16 | padding-top: 6px;
17 | font-size: medium;
18 | display: inline;
19 | width: auto;
20 | min-width: 100px;
21 | text-align: center;
22 | }
23 |
24 | .input-hint {
25 | line-height: 16px;
26 | padding-top: 5px;
27 | display: block;
28 | }
29 |
--------------------------------------------------------------------------------
/client/src/components/formschema/FormSchema.css:
--------------------------------------------------------------------------------
1 | .rk-forms {
2 | max-width: 650px;
3 | }
4 |
5 | @media (min-width: 1200px) {
6 | .col-xl-forms--header {
7 | position: absolute;
8 | width: 250px !important;
9 | flex: none;
10 | }
11 |
12 | .rk-forms {
13 | margin: auto;
14 | }
15 | }
16 |
17 | @media (min-width: 1440px) {
18 | .col-xl-forms--header {
19 | width: 300px !important;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/client/src/components/icons/ChevronFlippedIcon.module.scss:
--------------------------------------------------------------------------------
1 | /* Reuse the accordion CSS styles for the chevron */
2 | .chevron {
3 | transition: var(--bs-accordion-btn-icon-transition);
4 |
5 | &IsOpen {
6 | transform: var(--bs-accordion-btn-icon-transform);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/client/src/components/list/ListCard.css:
--------------------------------------------------------------------------------
1 | .visibility-icon {
2 | position: relative;
3 | top: -3px;
4 | }
5 |
6 | .list-card {
7 | max-width: 400px;
8 | margin: auto;
9 | }
10 |
11 | .card-title {
12 | font-size: 24px;
13 | }
14 |
15 | .card-footer {
16 | background-color: white;
17 | height: 70px;
18 | }
19 |
20 | /*tmp styles*/
21 | .text-rk-text {
22 | color: var(--bs-rk-text);
23 | }
24 | .bg-rk-text {
25 | background-color: var(--bs-rk-text);
26 | }
27 |
--------------------------------------------------------------------------------
/client/src/components/modal/ScrollableModal.module.scss:
--------------------------------------------------------------------------------
1 | .modal :global(.modal-content) {
2 | height: unset !important;
3 |
4 | & :global(.modal-body) {
5 | max-height: 75vh;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/client/src/components/navbar/NavBarItem.module.scss:
--------------------------------------------------------------------------------
1 | .dropdownMenu {
2 | z-index: 1100;
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/components/navbar/navbar.constants.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2023 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export const RENKU_LOGO = "/static/public/img/logo.svg";
20 |
--------------------------------------------------------------------------------
/client/src/components/notebook/modules.d.ts:
--------------------------------------------------------------------------------
1 | declare module "react-katex";
2 | declare module "rehype-katex"; // eslint-disable-line spellcheck/spell-checker
3 | declare module "rehype-stringify"; // eslint-disable-line spellcheck/spell-checker
4 | declare module "remark-math";
5 | declare module "remark-rehype"; // eslint-disable-line spellcheck/spell-checker
6 |
--------------------------------------------------------------------------------
/client/src/components/quicknav/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2017 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | import { QuickNavContainer as QuickNav } from "./QuickNav.container";
20 | export default QuickNav;
21 |
--------------------------------------------------------------------------------
/client/src/components/sortingEntities/SortingEntities.css:
--------------------------------------------------------------------------------
1 | .sorting-label {
2 | font-size: larger;
3 | font-weight: bold;
4 | }
5 |
6 | .sorting-label--desk {
7 | min-width: 60px;
8 | }
9 |
10 | .sorting--mobile {
11 | margin-top: 40px;
12 | }
13 |
14 | .sorting-input {
15 | max-width: 230px;
16 | }
17 |
--------------------------------------------------------------------------------
/client/src/components/typeEntityFilter/TypeEntityFilter.css:
--------------------------------------------------------------------------------
1 | .filter-label {
2 | font-size: medium;
3 | font-weight: bold;
4 | }
5 |
6 | .type-entity-label {
7 | width: 100px;
8 | margin-top: 0.2rem;
9 | }
10 |
11 | .type-entity-icon {
12 | margin-top: 0.5rem;
13 | width: 24px;
14 | }
15 |
--------------------------------------------------------------------------------
/client/src/components/userRolesFilter/userRolesFilter.types.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2024 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export interface UserRoles {
20 | owner: boolean;
21 | maintainer: boolean;
22 | reader: boolean;
23 | }
24 |
--------------------------------------------------------------------------------
/client/src/components/visibility/Visibility.css:
--------------------------------------------------------------------------------
1 | .visibilities-box {
2 | display: flex;
3 | flex-wrap: wrap;
4 | justify-content: space-between;
5 | margin: 0;
6 | }
7 |
8 | .visibility-box {
9 | margin: 5px 0;
10 | }
11 |
12 | .visibility-box label {
13 | padding: 0 5px 0 0;
14 | }
15 |
16 | .visibility-box input {
17 | cursor: pointer;
18 | }
19 |
20 | .visibility-input {
21 | border: solid 1px var(--bs-primary);
22 | }
23 |
24 | .visibility-input--error {
25 | border: solid 1px var(--bs-danger);
26 | }
27 |
--------------------------------------------------------------------------------
/client/src/components/visibilityFilter/VisibilityFilter.css:
--------------------------------------------------------------------------------
1 | .filter-label {
2 | font-size: medium;
3 | font-weight: bold;
4 | }
5 |
6 | .visibility-label {
7 | margin-top: 0.2rem;
8 | }
9 |
10 | .visibility-icon {
11 | margin-top: 0.5rem;
12 | }
13 |
--------------------------------------------------------------------------------
/client/src/dataset/addtoproject/DatasetAdd.types.ts:
--------------------------------------------------------------------------------
1 | import { IDataset } from "../../features/project/project.types";
2 |
3 | interface AddDatasetDataset extends IDataset {
4 | fetchError: unknown;
5 | project?: ExistingProject;
6 | }
7 | type AddDatasetHandlers = {
8 | setCurrentStatus: (status: AddDatasetStatus | null) => void;
9 | submitCallback: (project: SubmitProject) => void;
10 | validateProject: (project: SubmitProject, isDatasetValid: boolean) => void;
11 | };
12 |
13 | type AddDatasetStatus = { status: string; text?: string };
14 |
15 | type SubmitProject = {
16 | name: string;
17 | value: string;
18 | default_branch: string;
19 | };
20 |
21 | interface ExistingProject extends SubmitProject {
22 | access_level: number;
23 | http_url_to_repo: string;
24 | id: string;
25 | path: string;
26 | path_with_namespace: string;
27 | }
28 |
29 | export type {
30 | AddDatasetDataset,
31 | AddDatasetHandlers,
32 | AddDatasetStatus,
33 | ExistingProject,
34 | SubmitProject,
35 | };
36 |
--------------------------------------------------------------------------------
/client/src/features/ProjectPageV2/ProjectPageContent/ProjectInformation/ProjectInformation.module.scss:
--------------------------------------------------------------------------------
1 | .projectPageImgPlaceholder img {
2 | max-width: 200px;
3 | height: auto;
4 | background-color: var(--bs-gray);
5 | }
6 |
--------------------------------------------------------------------------------
/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/SelectUserSecretField.module.scss:
--------------------------------------------------------------------------------
1 | .option {
2 | &:hover,
3 | &IsFocused {
4 | background-color: #e4e7ea;
5 | }
6 |
7 | &IsSelected {
8 | background-color: #e4e7ea80;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/sessionSecrets.constants.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2024 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export const SESSION_SECRETS_CARD_ID = "project-settings-session-secrets";
20 |
--------------------------------------------------------------------------------
/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectTemplateInfoBanner.module.css:
--------------------------------------------------------------------------------
1 | .modalBody {
2 | max-height: 50vh;
3 | }
4 |
5 | /* this is needed for correct alignment */
6 | .projectCopiesButton {
7 | position: relative;
8 | top: -2px;
9 | }
10 |
--------------------------------------------------------------------------------
/client/src/features/ProjectPageV2/ProjectPageNav/ProjectPageNav.module.scss:
--------------------------------------------------------------------------------
1 | @import "~bootstrap/scss/functions";
2 | @import "~bootstrap/scss/variables";
3 | @import "~bootstrap/scss/variables-dark";
4 | @import "~bootstrap/scss/maps";
5 | @import "~bootstrap/scss/mixins";
6 |
7 | .navLink {
8 | color: var(--bs-rk-text);
9 | &:hover {
10 | text-decoration: underline;
11 | text-underline-offset: 5px;
12 | }
13 | &:global(.active) {
14 | font-weight: bold;
15 | text-decoration: underline;
16 | text-underline-offset: 5px;
17 | padding: 0;
18 | margin-bottom: 0;
19 | color: var(--bs-rk-text);
20 | }
21 | @include media-breakpoint-up(lg) {
22 | & {
23 | color: var(--bs-rk-text-light);
24 | &:hover {
25 | color: var(--bs-rk-text);
26 | }
27 | }
28 | &:global(.active) {
29 | color: var(--bs-rk-text);
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/client/src/features/ProjectPageV2/settings/projectSettings.types.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2024 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | import type { ProjectPatch } from "../../projectsV2/api/projectV2.api";
20 |
21 | export type ProjectV2Metadata = Omit;
22 |
--------------------------------------------------------------------------------
/client/src/features/admin/AddManyUsersToResourcePoolButton.module.scss:
--------------------------------------------------------------------------------
1 | .modal :global(.modal-content) {
2 | height: unset !important;
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/features/admin/UpdateResourceClassButton.module.scss:
--------------------------------------------------------------------------------
1 | .modal :global(.modal-content) {
2 | height: unset !important;
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/features/connectedServices/ContactUsCard.module.scss:
--------------------------------------------------------------------------------
1 | .card {
2 | background-color: rgba(var(--bs-primary-rgb), 0.1) !important;
3 |
4 | &:hover {
5 | background-color: var(--bs-primary-bg-subtle) !important;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/client/src/features/connectedServices/connectedServices.constants.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2024 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export const INTERNAL_GITLAB_PROVIDER_ID = "INTERNAL_GITLAB";
20 |
--------------------------------------------------------------------------------
/client/src/features/dashboard/components/DashboardMessage.module.scss:
--------------------------------------------------------------------------------
1 | .plainAlert {
2 | --bs-alert-bg: var(--bs-rk-white);
3 | }
4 |
5 | .readMore {
6 | color: unset;
7 | text-decoration: unset;
8 | border-bottom: 1px solid transparent;
9 |
10 | &:hover {
11 | border-bottom-color: var(--bs-body-color);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/client/src/features/dashboardV2/DashboardV2.module.scss:
--------------------------------------------------------------------------------
1 | @import "~bootstrap/scss/functions";
2 | @import "~bootstrap/scss/variables";
3 | @import "~bootstrap/scss/variables-dark";
4 | @import "~bootstrap/scss/maps";
5 | @import "~bootstrap/scss/mixins";
6 |
7 | .DashboardHeader {
8 | height: auto;
9 | }
10 |
11 | .DashboardHeaderImg {
12 | height: 150px;
13 | background-image: url("/dashboardV2header.png");
14 | background-size: cover;
15 | background-position: top center;
16 | overflow: hidden;
17 | }
18 |
19 | .AnonymousAvatar {
20 | width: 64px;
21 | height: 64px;
22 | }
23 |
24 | .DashboardCard {
25 | background-color: rgba(var(--bs-primary-rgb), 0.1) !important;
26 |
27 | &:hover {
28 | background-color: var(--bs-primary-bg-subtle) !important;
29 | }
30 | }
31 |
32 | .FooterCard {
33 | a svg,
34 | a img {
35 | transition: all 0.3s linear;
36 | }
37 | a:hover svg,
38 | a:focus svg,
39 | a:hover img,
40 | a:focus img {
41 | transform: scale(1.3);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/client/src/features/dashboardV2/DashboardV2Sessions.module.scss:
--------------------------------------------------------------------------------
1 | @import "~bootstrap/scss/functions";
2 | @import "~bootstrap/scss/variables";
3 | @import "~bootstrap/scss/variables-dark";
4 | @import "~bootstrap/scss/maps";
5 | @import "~bootstrap/scss/mixins";
6 |
7 | .sessionButton {
8 | bottom: 0;
9 | margin-bottom: 1rem;
10 |
11 | @include media-breakpoint-up(md) {
12 | top: 0;
13 | margin-top: 1rem;
14 | right: 0;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModal.module.scss:
--------------------------------------------------------------------------------
1 | @import "/src/styles/bootstrap/_custom_bootstrap_variables.scss";
2 |
3 | .modal :global(.modal-content) {
4 | height: unset !important;
5 | }
6 |
7 | .listGroupItemActive {
8 | border: 1px solid $rk-green !important;
9 | color: $rk-green;
10 | &:hover {
11 | color: $rk-green;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/client/src/features/dataConnectorsV2/components/dataConnector.constants.ts:
--------------------------------------------------------------------------------
1 | export const DATA_CONNECTORS_VISIBILITY_WARNING =
2 | "Some members of this project may not be able to access this data connector";
3 |
4 | export const DATA_CONNECTORS_DOI_DOCS_URL =
5 | "https://renku.notion.site/How-to-connect-data-from-data-repositories-such-as-Zenodo-1eb0df2efafc802ab3bef1c47c8c45b4";
6 |
--------------------------------------------------------------------------------
/client/src/features/display/index.ts:
--------------------------------------------------------------------------------
1 | import { Display, ProjectConfig } from "./display.types";
2 | import {
3 | displaySlice,
4 | hideSshModal,
5 | reset,
6 | resetFavicon,
7 | setFavicon,
8 | showSshModal,
9 | toggleSshModal,
10 | } from "./displaySlice";
11 |
12 | export {
13 | displaySlice,
14 | hideSshModal,
15 | reset,
16 | resetFavicon,
17 | setFavicon,
18 | showSshModal,
19 | toggleSshModal,
20 | };
21 | export type { Display, ProjectConfig };
22 |
--------------------------------------------------------------------------------
/client/src/features/groupsV2/new/createGroup.constants.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2024 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export const GROUP_CREATION_HASH = "create-group";
20 |
--------------------------------------------------------------------------------
/client/src/features/inactiveKgProjects/inactiveKgProjects.css:
--------------------------------------------------------------------------------
1 | .inactive-kg-projects-table th {
2 | font-weight: normal;
3 | vertical-align: middle;
4 | }
5 |
6 | .inactive-kg-projects-table td {
7 | vertical-align: middle;
8 | }
9 |
10 | .inactive-kg-projects-table svg {
11 | min-width: 24px;
12 | }
13 |
14 | .inactive-kg-projects-table thead th {
15 | border-color: white;
16 | }
17 |
18 | .inactive-kg-projects-table tr:hover {
19 | background-color: var(--bs-rk-background-0);
20 | }
21 |
22 | .activationHeader {
23 | font-size: 27px;
24 | }
25 | .project-title-table {
26 | max-width: 300px;
27 | }
28 |
--------------------------------------------------------------------------------
/client/src/features/kgSearch/index.ts:
--------------------------------------------------------------------------------
1 | import { kgSearchApi } from "./KgSearchApi";
2 | import {
3 | EntityType,
4 | KgSearchResultLink,
5 | KgSearchResult,
6 | } from "./KgSearch.types";
7 | import { stateToSearchString } from "./KgSearchState";
8 |
9 | export { kgSearchApi, EntityType, stateToSearchString };
10 | export type { KgSearchResult, KgSearchResultLink };
11 |
--------------------------------------------------------------------------------
/client/src/features/landing/assets/btnJupyter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/landing/assets/btnJupyter.png
--------------------------------------------------------------------------------
/client/src/features/landing/assets/btnJupyterSelected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/landing/assets/btnJupyterSelected.png
--------------------------------------------------------------------------------
/client/src/features/landing/assets/btnR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/landing/assets/btnR.png
--------------------------------------------------------------------------------
/client/src/features/landing/assets/btnRSelected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/landing/assets/btnRSelected.png
--------------------------------------------------------------------------------
/client/src/features/landing/assets/btnVS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/landing/assets/btnVS.png
--------------------------------------------------------------------------------
/client/src/features/landing/assets/btnVSSelected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/landing/assets/btnVSSelected.png
--------------------------------------------------------------------------------
/client/src/features/landing/assets/research.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/landing/assets/research.png
--------------------------------------------------------------------------------
/client/src/features/landing/assets/templateJupyter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/landing/assets/templateJupyter.png
--------------------------------------------------------------------------------
/client/src/features/landing/assets/templateR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/landing/assets/templateR.png
--------------------------------------------------------------------------------
/client/src/features/landing/assets/templateVS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/landing/assets/templateVS.png
--------------------------------------------------------------------------------
/client/src/features/landing/components/Benefits/Benefits.module.scss:
--------------------------------------------------------------------------------
1 | .BenefitsIcon {
2 | top: -65px;
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/features/landing/components/Dividier/Divider.module.css:
--------------------------------------------------------------------------------
1 | .dividerLandingPage {
2 | background-image: url("../../assets/dividerDots.svg");
3 | min-height: 252px;
4 | background-attachment: fixed;
5 | background-position: center;
6 | background-repeat: repeat;
7 | background-size: 1500px;
8 | }
9 |
--------------------------------------------------------------------------------
/client/src/features/landing/components/GetStarted/GetStarted.module.scss:
--------------------------------------------------------------------------------
1 | .GetStartedImg {
2 | max-width: 470px;
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/features/landing/components/Introduction/Introduction.module.scss:
--------------------------------------------------------------------------------
1 | .IntroductionRenku20Bg {
2 | background-image: url("../../assets/dividerDots.svg");
3 | }
4 |
5 | .IntroductionRenku20Sections {
6 | max-width: 1200px;
7 | margin: auto;
8 | }
9 |
--------------------------------------------------------------------------------
/client/src/features/landing/components/NavBar/NavBar.css:
--------------------------------------------------------------------------------
1 | /* DO WE NEED THIS??? */
2 | .footer .navbar .nav-link {
3 | padding: 0.5rem;
4 | white-space: nowrap;
5 | }
6 |
7 | .icons-menu a {
8 | vertical-align: middle;
9 | outline-style: none;
10 | }
11 | .icons-menu svg {
12 | outline-style: none;
13 | }
14 |
15 | .menu-right {
16 | margin: auto;
17 | flex-grow: 0;
18 | }
19 |
20 | .menu-right ul {
21 | justify-content: space-between;
22 | }
23 |
--------------------------------------------------------------------------------
/client/src/features/landing/components/ResourcesSupport/Resources.module.scss:
--------------------------------------------------------------------------------
1 | .RenkuCard:hover img {
2 | content: url("../../assets/renkuColor.svg");
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/features/landing/components/TemplateSlider/TemplateSlider.module.scss:
--------------------------------------------------------------------------------
1 | @import "~bootstrap/scss/functions";
2 | @import "~bootstrap/scss/variables";
3 | @import "~bootstrap/scss/variables-dark";
4 | @import "~bootstrap/scss/maps";
5 | @import "~bootstrap/scss/mixins";
6 |
7 | .templateSlideContainer {
8 | position: relative;
9 | display: flex;
10 | justify-content: center;
11 | }
12 |
13 | .templateSliderBtn {
14 | display: flex;
15 | flex-direction: row;
16 | gap: 10px;
17 | justify-content: space-between;
18 | position: absolute;
19 | bottom: -30px;
20 | }
21 |
22 | .templateSliderProgress {
23 | margin: 2px;
24 | margin-right: 6px;
25 | margin-top: 2px;
26 | margin-bottom: 6px;
27 | border-end-start-radius: 8px;
28 | border-end-end-radius: 8px;
29 | }
30 |
31 | .templateSliderProgressBar {
32 | height: 8px;
33 | --#{$prefix}progress-bar-transition: "none";
34 | }
35 |
--------------------------------------------------------------------------------
/client/src/features/permissionsV2/permissions.types.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2024 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export type RequestedPermission = "write" | "delete" | "change_membership";
20 |
21 | export type Permissions = {
22 | [key in RequestedPermission]: boolean;
23 | };
24 |
--------------------------------------------------------------------------------
/client/src/features/project/GitLab.constants.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2023 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export const RENKU_CONFIG_FILE_PATH = ".renku/renku.ini";
20 |
21 | export const MAX_GITLAB_REPOSITORY_BRANCH_PAGES = 10;
22 | export const MAX_GITLAB_REPOSITORY_COMMIT_PAGES = 10;
23 |
--------------------------------------------------------------------------------
/client/src/features/project/components/ProjectSettingsSessions.module.scss:
--------------------------------------------------------------------------------
1 | .accordion {
2 | --bs-accordion-btn-padding-x: 0;
3 | --bs-accordion-body-padding-x: 0;
4 |
5 | --bs-accordion-btn-bg: transparent;
6 | --bs-accordion-active-bg: transparent;
7 |
8 | --bs-accordion-btn-color: var(--bs-body-color);
9 | --bs-accordion-active-color: var(--bs-body-color);
10 |
11 | --bs-accordion-btn-focus-box-shadow: inset 0
12 | calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-rk-green);
13 | }
14 |
15 | .pinnedImageButton {
16 | margin-left: -1px !important;
17 | }
18 |
19 | .unknownOptionGroup {
20 | & :global(.form-control) {
21 | border-radius: 0;
22 | }
23 | }
24 |
25 | .inputNumber {
26 | :global(.input-group) & {
27 | border-radius: 0;
28 | }
29 |
30 | &Group {
31 | max-width: 200px;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/client/src/features/project/components/cloudStorage/CloudStorage.module.scss:
--------------------------------------------------------------------------------
1 | @import "/src/styles/bootstrap/_custom_bootstrap_variables.scss";
2 |
3 | .modal :global(.modal-content) {
4 | height: unset !important;
5 | }
6 |
7 | .listGroupItemActive {
8 | border: 1px solid $rk-green !important;
9 | color: $rk-green;
10 | &:hover {
11 | color: $rk-green;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/client/src/features/project/components/migrations/migrations.module.scss:
--------------------------------------------------------------------------------
1 | .projectStatusSection {
2 | display: flex;
3 | padding: 0.5rem 0;
4 | }
5 |
6 | .projectStatusDetailsSection {
7 | padding: 1rem 0 1rem 1rem;
8 | border-bottom: black 1px dashed;
9 |
10 | &:first-child {
11 | border-top: black 1px dashed;
12 | }
13 | }
14 |
15 | .sectionTitle {
16 | border-bottom: 1px solid transparent;
17 |
18 | &Expandable:hover {
19 | border-bottom-color: var(--bs-body-color);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/client/src/features/project/components/projectMigration/ProjectEntityMigration.tsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/project/components/projectMigration/ProjectEntityMigration.tsx
--------------------------------------------------------------------------------
/client/src/features/project/dataset/dataset.types.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2023 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export type DatasetImage = {
20 | content_url?: string;
21 | file_id?: string;
22 | position: number;
23 | mirror_locally: boolean;
24 | };
25 |
--------------------------------------------------------------------------------
/client/src/features/project/dataset/index.ts:
--------------------------------------------------------------------------------
1 | import { datasetFormSlice, setFiles, reset } from "./datasetForm.slice";
2 |
3 | import type {
4 | DatasetFormState,
5 | DatasetUploaderFile,
6 | } from "./datasetForm.slice";
7 |
8 | export { datasetFormSlice, setFiles, reset };
9 | export type { DatasetFormState, DatasetUploaderFile };
10 |
--------------------------------------------------------------------------------
/client/src/features/project/index.ts:
--------------------------------------------------------------------------------
1 | import ProjectDatasetsListView from "./dataset/ProjectDatasetsListView";
2 | import ProjectDatasetsView from "./dataset/ProjectDatasetsView";
3 | import ProjectDatasetShow from "./dataset/ProjectDatasetShow";
4 | import { ProjectEntityHeader } from "./components/ProjectEntityHeader";
5 | import { ProjectFileLineage, ProjectFileView } from "./components/File";
6 |
7 | export { ProjectEntityHeader };
8 | export { ProjectDatasetsListView, ProjectDatasetShow, ProjectDatasetsView };
9 | export { ProjectFileLineage, ProjectFileView };
10 |
--------------------------------------------------------------------------------
/client/src/features/projects/projects.types.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2023 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export interface GetProjectsFromSlugsParams {
20 | projectSlugs: string[];
21 | }
22 |
--------------------------------------------------------------------------------
/client/src/features/projectsV2/fields/ProjectNamespaceFormField.module.scss:
--------------------------------------------------------------------------------
1 | @import "~bootstrap/scss/functions";
2 | @import "~bootstrap/scss/variables";
3 |
4 | .control {
5 | cursor: pointer !important;
6 | }
7 |
8 | .option {
9 | cursor: pointer !important;
10 |
11 | &:hover,
12 | &IsFocused {
13 | background-color: #e4e7ea;
14 | }
15 |
16 | &IsSelected {
17 | background-color: #e4e7ea80;
18 | }
19 | }
20 |
21 | .zDropdown {
22 | z-index: $zindex-dropdown !important;
23 | }
24 |
--------------------------------------------------------------------------------
/client/src/features/projectsV2/fields/RenkuV1FormFields.module.scss:
--------------------------------------------------------------------------------
1 | @import "~bootstrap/scss/functions";
2 | @import "~bootstrap/scss/variables";
3 | @import "../../../styles/bootstrap/_custom_bootstrap_variables.scss";
4 |
5 | .RenkuV1btnCheck:checked + label {
6 | background-color: #{$rk-green} !important;
7 | color: white !important;
8 | border-color: #{$rk-green} !important;
9 | }
10 |
11 | .RenkuV1inputGroup {
12 | border-top-left-radius: 0 !important;
13 | border-bottom-left-radius: 0 !important;
14 | }
15 |
16 | .RenkuV1input:focus {
17 | border: 1px solid var(--bs-rk-green) !important;
18 | }
19 |
--------------------------------------------------------------------------------
/client/src/features/projectsV2/list/GroupList.tsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/projectsV2/list/GroupList.tsx
--------------------------------------------------------------------------------
/client/src/features/projectsV2/new/createProjectV2.constants.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2024 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export const PROJECT_CREATION_HASH = "create-project";
20 |
--------------------------------------------------------------------------------
/client/src/features/projectsV2/projectV2.types.ts:
--------------------------------------------------------------------------------
1 | import type { Role, Visibility } from "./api/projectV2.api";
2 |
3 | export type ProjectVisibility = Visibility;
4 | export type ProjectRole = Role;
5 |
6 | export interface Project {
7 | access: {
8 | members: ProjectMember[];
9 | visibility: ProjectVisibility;
10 | };
11 | content: {
12 | repositories: Repository[];
13 | };
14 | metadata: {
15 | name: string;
16 | namespace: string;
17 | slug: string;
18 | description: string;
19 | };
20 | }
21 |
22 | export interface ProjectMember {
23 | providerId?: string;
24 | email: string;
25 | role: ProjectRole;
26 | }
27 |
28 | export interface Repository {
29 | url: string;
30 | }
31 |
--------------------------------------------------------------------------------
/client/src/features/projectsV2/shared/WipBadge.module.scss:
--------------------------------------------------------------------------------
1 | .EarlyAccessBadge {
2 | background-color: #ca4e86 !important;
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/features/projectsV2/show/projectV2Show.types.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2023 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export type SettingEditOption = "metadata" | "members" | "repositories" | null;
20 |
--------------------------------------------------------------------------------
/client/src/features/searchV2/components/SearchV2Filters.types.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2024 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License
17 | */
18 |
19 | export type SearchV2Visualization = "accordion" | "list";
20 |
--------------------------------------------------------------------------------
/client/src/features/session/components/SessionModals.module.scss:
--------------------------------------------------------------------------------
1 | .sessionModal :global(.modal-title) {
2 | font-weight: 600;
3 | }
4 |
5 | .aboutModal,
6 | .resourcesModal {
7 | :global(.modal-title) {
8 | font-size: 27px;
9 | font-weight: 600;
10 | }
11 |
12 | :global(h3) {
13 | font-size: 16px;
14 | }
15 | }
16 |
17 | .aboutModal {
18 | max-width: 850px;
19 | }
20 |
21 | .aboutBox {
22 | gap: 30px;
23 | }
24 |
25 | .resourcesHeaderNav {
26 | font-weight: normal;
27 | font-size: 16px;
28 | }
29 |
30 | .resourcesCard {
31 | padding: 20px;
32 | overflow: auto;
33 | }
34 |
--------------------------------------------------------------------------------
/client/src/features/session/components/ShowSession.module.scss:
--------------------------------------------------------------------------------
1 | .fullscreenHeader {
2 | height: 42px;
3 | box-shadow: 0 4px 10px rgb(0 0 0 / 10%);
4 | }
5 |
6 | .fullscreenContent {
7 | height: calc(100vh - 42px);
8 | background-color: var(--bs-rk-background-0);
9 | }
10 |
--------------------------------------------------------------------------------
/client/src/features/session/components/options/SessionBranchOption.module.scss:
--------------------------------------------------------------------------------
1 | @import "~bootstrap/scss/functions";
2 | @import "~bootstrap/scss/variables";
3 | @import "~bootstrap/scss/variables-dark";
4 | @import "~bootstrap/scss/maps";
5 | @import "~bootstrap/scss/mixins";
6 |
7 | .formSelect {
8 | --bs-border-color: var(--bs-rk-border-input);
9 | }
10 |
11 | .control {
12 | background: var(--bs-rk-white);
13 | --bs-border-color: var(--bs-rk-border-input);
14 |
15 | cursor: pointer !important;
16 |
17 | &:hover {
18 | --bs-border-color: var(--bs-rk-green);
19 | }
20 |
21 | &IsOpen {
22 | --bs-border-color: var(--bs-rk-green);
23 | }
24 | }
25 |
26 | .menu {
27 | background: var(--bs-rk-white);
28 | --bs-border-color: var(--bs-rk-green);
29 | z-index: 10 !important;
30 | }
31 |
32 | .option {
33 | cursor: pointer !important;
34 |
35 | &:hover,
36 | &IsFocused {
37 | background-color: #e4e7ea;
38 | }
39 |
40 | &IsSelected {
41 | background-color: #e4e7ea80;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/client/src/features/session/components/options/fetchMore.types.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2024 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export interface PaginatedState {
20 | data: T[] | undefined;
21 | fetchedPages: number;
22 | hasMore: boolean;
23 | currentRequestId: string;
24 | }
25 |
--------------------------------------------------------------------------------
/client/src/features/sessionsV2/SessionLauncherFormContent.tsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/features/sessionsV2/SessionLauncherFormContent.tsx
--------------------------------------------------------------------------------
/client/src/features/sessionsV2/SessionList/Session.module.scss:
--------------------------------------------------------------------------------
1 | .SessionLauncherCard {
2 | &:hover {
3 | box-shadow: rgba(50, 50, 93, 0.25) 0 2px 10px -1px,
4 | rgba(0, 0, 0, 0.3) 0px 1px 3px -1px !important;
5 | }
6 | }
7 |
8 | .SessionLine {
9 | left: 40px;
10 | }
11 |
--------------------------------------------------------------------------------
/client/src/features/sessionsV2/components/SessionForm/Select.module.scss:
--------------------------------------------------------------------------------
1 | @import "~bootstrap/scss/functions";
2 | @import "~bootstrap/scss/variables";
3 |
4 | .control {
5 | cursor: pointer !important;
6 | }
7 |
8 | .option {
9 | cursor: pointer !important;
10 |
11 | &:hover,
12 | &IsFocused {
13 | background-color: #e4e7ea;
14 | }
15 |
16 | &IsSelected {
17 | background-color: #e4e7ea80;
18 | }
19 |
20 | &IsDisabled {
21 | cursor: not-allowed !important;
22 | &:hover {
23 | background-color: unset;
24 | }
25 | }
26 | }
27 |
28 | .zDropdown {
29 | z-index: $zindex-dropdown !important;
30 | }
31 |
--------------------------------------------------------------------------------
/client/src/features/usersV2/show/UserAvatar.module.scss:
--------------------------------------------------------------------------------
1 | @import "~bootstrap/scss/functions";
2 | @import "~bootstrap/scss/variables";
3 | @import "~bootstrap/scss/variables-dark";
4 | @import "~bootstrap/scss/maps";
5 | @import "~bootstrap/scss/mixins";
6 |
7 | .avatar {
8 | --size: 28px;
9 | --font-size: 14px;
10 |
11 | height: var(--size);
12 | width: var(--size);
13 | font-size: var(--font-size);
14 |
15 | &.medium {
16 | --size: 43px;
17 | --font-size: 20px;
18 | }
19 |
20 | &.large {
21 | --size: 56px;
22 | --font-size: 24px;
23 | }
24 |
25 | &.extraLarge {
26 | --size: 56px;
27 | --font-size: 24px;
28 | }
29 |
30 | &.extraLarge {
31 | --size: 56px;
32 | --font-size: 24px;
33 | }
34 | }
35 |
36 | .typeBadge {
37 | width: 75px;
38 | height: 65px;
39 | }
40 |
--------------------------------------------------------------------------------
/client/src/file/File.module.scss:
--------------------------------------------------------------------------------
1 | .fileIconLinks {
2 | :global(.icon-link) {
3 | margin-left: 0;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/client/src/job/Job.js:
--------------------------------------------------------------------------------
1 | const JobStatusMap = {
2 | ENQUEUED: "ENQUEUED",
3 | IN_PROGRESS: "IN_PROGRESS",
4 | COMPLETED: "COMPLETED",
5 | FAILED: "FAILED",
6 | };
7 |
8 | //WE SHOULD ADD HERE GENERAL JOB MONITORING FUNCTIONS/COMPONENTS (IN THE FUTURE)
9 |
10 | export { JobStatusMap };
11 |
--------------------------------------------------------------------------------
/client/src/not-found/NotFound.css:
--------------------------------------------------------------------------------
1 | .not-found-box {
2 | background-position: center;
3 | background-size: cover;
4 | /* calc 100vh - footer height - header height */
5 | height: calc(100vh - 60px - 66px);
6 | background-image: url("../styles/assets/404@0.25x.png");
7 | color: var(--bs-rk-pink);
8 | overflow: auto;
9 | width: 100%;
10 | }
11 |
12 | .not-found-box-text {
13 | padding: 20px;
14 | background-color: rgba(var(--bs-rk-blue-rgb), 0.7);
15 | }
16 | .not-found-box-text:first-of-type {
17 | padding: 20px;
18 | max-width: 700px;
19 | }
20 |
21 | @media (min-width: 1024px) {
22 | .not-found-box-text {
23 | margin: 0 50px;
24 | }
25 | }
26 |
27 | @media (min-width: 1500px) {
28 | .not-found-box {
29 | background-image: url("../styles/assets/404@0.5x.png");
30 | }
31 | }
32 |
33 | @media (min-width: 2200px) {
34 | .not-found-box {
35 | background-image: url("../styles/assets/404@0.75x.png");
36 | padding: 0 4rem;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/client/src/notebooks/Notebooks.css:
--------------------------------------------------------------------------------
1 | .header-multiline h5 {
2 | line-height: 1.2;
3 | }
4 |
5 | .header-multiline small {
6 | font-size: 70%;
7 | font-style: italic;
8 | }
9 |
--------------------------------------------------------------------------------
/client/src/notebooks/components/SessionCheatSheet.css:
--------------------------------------------------------------------------------
1 | div.commands {
2 | display: flex;
3 | flex-direction: column;
4 | min-width: 300px;
5 | padding: 10px;
6 | }
7 | div.commands .break {
8 | flex-basis: 100%;
9 | width: 0;
10 | }
11 |
12 | .commands h1 {
13 | border-bottom: 2px solid rgba(0, 0, 0, 0.2);
14 | }
15 |
16 | .command {
17 | flex-grow: 1;
18 | padding: 0 20px 5px 0;
19 | }
20 |
21 | .commands div.commands-row div:not(.command) {
22 | flex-basis: 0;
23 | flex-grow: 1;
24 | padding: 0 20px 5px 0;
25 | }
26 |
27 | .commands div.commands-row div h2 {
28 | font-size: 1.5rem;
29 | font-weight: bold;
30 | }
31 |
32 | .renku-info {
33 | color: rgb(90, 90, 90);
34 | }
35 |
--------------------------------------------------------------------------------
/client/src/project/settings/ProjectSettings.present.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/project/settings/ProjectSettings.present.js
--------------------------------------------------------------------------------
/client/src/project/shared/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/project/shared/index.js
--------------------------------------------------------------------------------
/client/src/setupTests.js:
--------------------------------------------------------------------------------
1 | // ? reference: https://www.npmjs.com/package/jest-localstorage-mock#in-create-react-app
2 | import "jest-localstorage-mock";
3 |
4 | if (global.document) {
5 | document.createRange = () => ({
6 | setStart: () => {
7 | // eslint-disable-line @typescript-eslint/no-empty-function
8 | },
9 | setEnd: () => {
10 | // eslint-disable-line @typescript-eslint/no-empty-function
11 | },
12 | commonAncestorContainer: {
13 | nodeName: "BODY",
14 | ownerDocument: document,
15 | },
16 | createContextualFragment: (html) => {
17 | const div = document.createElement("div");
18 | div.innerHTML = html;
19 | return div.children[0]; // so hokey it's not even funny
20 | },
21 | });
22 | }
23 | if (global.console) {
24 | global.console = {
25 | ...console,
26 | log: jest.fn(),
27 | debug: jest.fn(),
28 | };
29 | }
30 | global.IS_REACT_ACT_ENVIRONMENT = true;
31 |
--------------------------------------------------------------------------------
/client/src/statuspage/statuspage.css:
--------------------------------------------------------------------------------
1 | .loud {
2 | font-size: "larger";
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/storybook/bootstrap/ColorPalette.module.scss:
--------------------------------------------------------------------------------
1 | .colorPalette {
2 | display: flex;
3 | flex-direction: column;
4 | }
5 |
6 | .colorItem {
7 | width: 100%;
8 | height: 100px;
9 | display: flex;
10 | align-items: center;
11 | justify-content: center;
12 | margin: 10px;
13 | color: #000;
14 | font-weight: bold;
15 | text-align: center;
16 | border-radius: 8px;
17 |
18 | .colorInfo {
19 | padding: 5px;
20 | border-radius: 4px;
21 |
22 | .colorName,
23 | .colorHex {
24 | display: block;
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/client/src/styles/.gitignore:
--------------------------------------------------------------------------------
1 | index.css
2 | index.css.map
3 | icons.css
4 | icons.css.map
5 |
--------------------------------------------------------------------------------
/client/src/styles/assets/404@0.25x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/404@0.25x.png
--------------------------------------------------------------------------------
/client/src/styles/assets/404@0.5x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/404@0.5x.png
--------------------------------------------------------------------------------
/client/src/styles/assets/404@0.75x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/404@0.75x.png
--------------------------------------------------------------------------------
/client/src/styles/assets/block.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/client/src/styles/assets/check.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/client/src/styles/assets/chevron-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/client/src/styles/assets/datasetBackgroundLarge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/datasetBackgroundLarge.png
--------------------------------------------------------------------------------
/client/src/styles/assets/datasetBackgroundSmall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/datasetBackgroundSmall.png
--------------------------------------------------------------------------------
/client/src/styles/assets/error-background@0.50x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/error-background@0.50x.png
--------------------------------------------------------------------------------
/client/src/styles/assets/error-background@1.00x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/error-background@1.00x.png
--------------------------------------------------------------------------------
/client/src/styles/assets/failed.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/Favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/Favicon.ico
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/Favicon16px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/Favicon16px.png
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/Favicon32px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/Favicon32px.png
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/FaviconError.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/FaviconError.ico
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/FaviconError16px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/FaviconError16px.png
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/FaviconError32px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/FaviconError32px.png
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/FaviconPause.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/FaviconPause.ico
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/FaviconPause16px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/FaviconPause16px.png
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/FaviconPause32px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/FaviconPause32px.png
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/FaviconRunning.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/FaviconRunning.ico
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/FaviconRunning16px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/FaviconRunning16px.png
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/FaviconRunning32px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/FaviconRunning32px.png
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/FaviconWaiting.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/FaviconWaiting.ico
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/FaviconWaiting16px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/FaviconWaiting16px.png
--------------------------------------------------------------------------------
/client/src/styles/assets/favicon/FaviconWaiting32px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/favicon/FaviconWaiting32px.png
--------------------------------------------------------------------------------
/client/src/styles/assets/lineBlock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/lineBlock.png
--------------------------------------------------------------------------------
/client/src/styles/assets/lineBlock.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/client/src/styles/assets/lineFailed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/lineFailed.png
--------------------------------------------------------------------------------
/client/src/styles/assets/lineFailed.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/client/src/styles/assets/linePaused.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/linePaused.png
--------------------------------------------------------------------------------
/client/src/styles/assets/linePaused.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/client/src/styles/assets/linePlaying.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/linePlaying.png
--------------------------------------------------------------------------------
/client/src/styles/assets/linePlaying.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/client/src/styles/assets/lineStopped.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/lineStopped.png
--------------------------------------------------------------------------------
/client/src/styles/assets/lineStopped.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/client/src/styles/assets/paused.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/client/src/styles/assets/playing.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/client/src/styles/assets/projectBackgroundLarge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/projectBackgroundLarge.png
--------------------------------------------------------------------------------
/client/src/styles/assets/projectBackgroundSmall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/projectBackgroundSmall.png
--------------------------------------------------------------------------------
/client/src/styles/assets/puzzlePieces.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/puzzlePieces.png
--------------------------------------------------------------------------------
/client/src/styles/assets/stopped.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/client/src/styles/assets/workflowBackgroundLarge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/workflowBackgroundLarge.png
--------------------------------------------------------------------------------
/client/src/styles/assets/workflowBackgroundSmall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/assets/workflowBackgroundSmall.png
--------------------------------------------------------------------------------
/client/src/styles/bootstrap/_custom_bootstrap.scss:
--------------------------------------------------------------------------------
1 | $colors: map-merge($colors, $rk-colors);
2 |
--------------------------------------------------------------------------------
/client/src/styles/bootstrap_ext/_alert.scss:
--------------------------------------------------------------------------------
1 | .alert {
2 | padding: 29px;
3 | border: none;
4 | }
5 |
6 | .alert-dismissible {
7 | padding-right: 3rem;
8 | }
9 |
10 | .alert-info {
11 | color: $rk-info-text;
12 | border: 1px solid $rk-info-border;
13 | }
14 |
15 | .alert-success {
16 | color: $rk-success-text;
17 | border: 1px solid $rk-success-border;
18 | }
19 |
20 | .alert-warning {
21 | color: $rk-warning-text;
22 | border: 1px solid $rk-warning-border;
23 | }
24 |
25 | .alert-danger {
26 | color: $rk-danger-text;
27 | border: 1px solid $rk-danger-border;
28 | }
29 |
--------------------------------------------------------------------------------
/client/src/styles/bootstrap_ext/_badge.scss:
--------------------------------------------------------------------------------
1 | .badge {
2 | border-radius: 5px;
3 | &.bg-warning {
4 | color: var(--bs-dark);
5 | }
6 | }
7 |
8 | .badge--entity-card {
9 | margin-right: 2px;
10 | }
11 |
12 | .lfs-badge {
13 | border-color: $rk-text;
14 | border-width: 1.3px;
15 | border-style: solid;
16 | margin-right: 7px;
17 | color: $rk-text;
18 | }
19 |
--------------------------------------------------------------------------------
/client/src/styles/bootstrap_ext/_nav.scss:
--------------------------------------------------------------------------------
1 | .nav.nav-light {
2 | .nav-link {
3 | padding-left: 0em;
4 | color: $rk-text;
5 | }
6 |
7 | .nav-link:hover {
8 | color: $rk-dark;
9 | }
10 |
11 | .nav-link.active {
12 | color: $rk-dark;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/client/src/styles/components/_bootstrap_icons.scss:
--------------------------------------------------------------------------------
1 | .bi {
2 | width: 1em;
3 | height: 1em;
4 |
5 | display: inline-block;
6 | vertical-align: -0.125em;
7 | fill: currentcolor;
8 | }
9 |
--------------------------------------------------------------------------------
/client/src/styles/components/_project_display.scss:
--------------------------------------------------------------------------------
1 | .rk-project-header {
2 | .col {
3 | min-height: 1.75rem;
4 | vertical-align: middle;
5 | }
6 |
7 | .rk-project-description {
8 | p {
9 | margin-bottom: 0rem;
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/client/src/styles/components/_renku_files.scss:
--------------------------------------------------------------------------------
1 | .fileBarIconButton {
2 | .icon-link {
3 | color: $rk-text;
4 | &hover {
5 | background-color: red;
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/client/src/styles/components/_renku_modals.scss:
--------------------------------------------------------------------------------
1 | .modal-content {
2 | border-radius: 8px;
3 | border: 0;
4 | background-color: var(--bs-rk-background-0);
5 | height: 100%;
6 | }
7 |
8 | .modal-header,
9 | .modal-footer {
10 | border: none;
11 | }
12 |
--------------------------------------------------------------------------------
/client/src/styles/components/_renku_styleguide.scss:
--------------------------------------------------------------------------------
1 | .color-table {
2 | tbody {
3 | tr {
4 | td {
5 | padding: 2px 4px;
6 | font-family: monospace;
7 | }
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Black.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Black.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Black.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Black.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-BlackItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-BlackItalic.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-BlackItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-BlackItalic.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Bold.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Bold.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-BoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-BoldItalic.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-BoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-BoldItalic.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-ExtraBold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-ExtraBold.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-ExtraBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-ExtraBold.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-ExtraBoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-ExtraBoldItalic.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-ExtraBoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-ExtraBoldItalic.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-ExtraLight.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-ExtraLight.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-ExtraLight.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-ExtraLight.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-ExtraLightItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-ExtraLightItalic.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-ExtraLightItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-ExtraLightItalic.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Italic.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Italic.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Light.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Light.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Light.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Light.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-LightItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-LightItalic.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-LightItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-LightItalic.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Medium.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Medium.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Medium.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-MediumItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-MediumItalic.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-MediumItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-MediumItalic.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Regular.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Regular.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-SemiBold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-SemiBold.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-SemiBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-SemiBold.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-SemiBoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-SemiBoldItalic.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-SemiBoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-SemiBoldItalic.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Thin.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Thin.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-Thin.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-Thin.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-ThinItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-ThinItalic.woff
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-ThinItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-ThinItalic.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-italic.var.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-italic.var.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter-roman.var.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter-roman.var.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/Inter/Inter.var.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/client/src/styles/fonts/Inter/Inter.var.woff2
--------------------------------------------------------------------------------
/client/src/styles/fonts/_fonts.scss:
--------------------------------------------------------------------------------
1 | @import "./Inter/inter";
2 |
--------------------------------------------------------------------------------
/client/src/styles/icons/assets/danger.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/client/src/styles/icons/assets/info.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/client/src/styles/icons/assets/success.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/client/src/styles/icons/assets/warning.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/client/src/styles/icons/start-with-options.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/client/src/styles/renku_additional_classes.scss:
--------------------------------------------------------------------------------
1 | // Renku specific classes.
2 | // ? Add new one only when strictly necessary. Prefer combining existing bootstrap classes in all
3 | // ? other cases.
4 |
5 | // align boostrap icons when used inline as/with text
6 | .bi {
7 | display: inline-flex;
8 | height: 1em;
9 | vertical-align: -0.125em;
10 | width: 1em;
11 | }
12 |
13 | // Force the cursor to be a pointer
14 | .cursor-pointer {
15 | cursor: pointer !important;
16 | }
17 |
--------------------------------------------------------------------------------
/client/src/styles/renku_bootstrap.scss:
--------------------------------------------------------------------------------
1 | // ? Bootstrap customization reference:
2 | // ? https://getbootstrap.com/docs/5.3/customize/sass/
3 |
4 | // 1: Optional default variable overrides here (functions unavailable)
5 |
6 | @import "renku_bootstrap_customization.scss"; // Changes to bootstrap variables
7 |
8 | // 2: Import Bootstrap
9 |
10 | @import "~bootstrap/scss/bootstrap";
11 |
12 | // 3: Optional custom code here
13 |
14 | @import "icons/icons.scss"; // Icons will be temporarily pahsed out and re-imported
15 | @import "renku_additional_classes.scss"; // Additional classes
16 | @import "renku_navy_theme.scss"; // Additional navy theme
17 |
--------------------------------------------------------------------------------
/client/src/user/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2020 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | /**
20 | * renku-ui
21 | *
22 | * Components for interacting with user
23 | */
24 |
25 | import { UserCoordinator } from "./User.state";
26 |
27 | export { UserCoordinator };
28 |
--------------------------------------------------------------------------------
/client/src/utils/constants/Migrations.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2023 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | export const TemplateSourceRenku = "renku";
20 |
--------------------------------------------------------------------------------
/client/src/utils/helpers/ArrayUtils.ts:
--------------------------------------------------------------------------------
1 | export function arrayStringEquals(a: string[], b: string[]): boolean {
2 | return a.length === b.length && a.every((v, i) => v === b[i]);
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/utils/helpers/sentry/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2021 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | /**
20 | * renku-ui
21 | *
22 | * utils/sentry
23 | * Components for Sentry
24 | */
25 |
26 | import { Sentry } from "./Sentry";
27 |
28 | export { Sentry };
29 |
--------------------------------------------------------------------------------
/client/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | // eslint-disable-next-line spellcheck/spell-checker
2 | ///
3 |
--------------------------------------------------------------------------------
/client/src/workflows/index.ts:
--------------------------------------------------------------------------------
1 | /*!
2 | * Copyright 2022 - Swiss Data Science Center (SDSC)
3 | * A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
4 | * Eidgenössische Technische Hochschule Zürich (ETHZ).
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | import { WorkflowsList } from "./Workflows.container";
20 |
21 | export { WorkflowsList };
22 |
--------------------------------------------------------------------------------
/client/testSetup.ts:
--------------------------------------------------------------------------------
1 | globalThis.IS_REACT_ACT_ENVIRONMENT = true;
2 |
--------------------------------------------------------------------------------
/client/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2021",
4 | "useDefineForClassFields": true,
5 | "lib": ["ES2021", "DOM", "DOM.Iterable"],
6 | "module": "ESNext",
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "noEmit": true,
15 | "jsx": "react-jsx",
16 |
17 | /* Linting */
18 | "strict": true,
19 | "noUnusedLocals": true,
20 | "noUnusedParameters": true,
21 | "noFallthroughCasesInSwitch": true,
22 |
23 | /* JavaScript support */
24 | "allowJs": true
25 | },
26 | "include": ["src"],
27 | "references": [{ "path": "./tsconfig.node.json" }]
28 | }
29 |
--------------------------------------------------------------------------------
/client/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/client/vite.config.ts:
--------------------------------------------------------------------------------
1 | import eslintPlugin from "@nabla/vite-plugin-eslint";
2 | import react from "@vitejs/plugin-react";
3 | import { resolve } from "path";
4 | import { defineConfig } from "vite";
5 |
6 | // https://vitejs.dev/config/
7 | export default defineConfig({
8 | build: {
9 | outDir: "build",
10 | sourcemap: true,
11 | },
12 | server: {
13 | allowedHosts: [".dev.renku.ch"],
14 | },
15 | plugins: [react({ include: "/index.html" }), eslintPlugin()],
16 | resolve: {
17 | alias: {
18 | "~bootstrap": resolve(__dirname, "node_modules/bootstrap"),
19 | },
20 | },
21 | });
22 |
--------------------------------------------------------------------------------
/client/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import react from "@vitejs/plugin-react";
2 | import { defineConfig } from "vitest/config";
3 |
4 | export default defineConfig({
5 | plugins: [react()],
6 | test: {
7 | globals: true,
8 | environment: "jsdom",
9 | singleThread: true,
10 | setupFiles: "./testSetup.ts",
11 | },
12 | });
13 |
--------------------------------------------------------------------------------
/github_deploy_key.enc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/github_deploy_key.enc
--------------------------------------------------------------------------------
/helm-chart/README.rst:
--------------------------------------------------------------------------------
1 | Renku UI Helm Chart
2 | ===================
3 |
4 | Provide a basic chart for deploying Renku UI application.
5 |
6 | Configuration
7 | -------------
8 |
9 | - `client.url` define the URL on the application will be available
10 | (default: `http://localhost:3000`)
11 | - `gitlabUrl` define the URL of a running GitLab instance
12 | (default: `http://gitlab.renku.build`)
13 | - `jupyterhubUrl` define the URL of a running JupyterHub instance
14 | (default: `http://jupyterhub.renku.build`)
15 |
16 | Usage
17 | -----
18 |
19 | In the `helm-chart` directory:
20 |
21 | .. code-block:: console
22 |
23 | helm upgrade --install renku-ui --values minikube-values.yaml renku-ui
24 |
25 |
26 | To rebuild the images and update the chart you can run
27 |
28 | .. code-block:: console
29 |
30 | pip install chartpress
31 | chartpress
32 |
--------------------------------------------------------------------------------
/helm-chart/renku-ui/.helmignore:
--------------------------------------------------------------------------------
1 | # Patterns to ignore when building packages.
2 | # This supports shell glob matching, relative path matching, and
3 | # negation (prefixed with !). Only one pattern per line.
4 | .DS_Store
5 | # Common VCS dirs
6 | .git/
7 | .gitignore
8 | .bzr/
9 | .bzrignore
10 | .hg/
11 | .hgignore
12 | .svn/
13 | # Common backup files
14 | *.swp
15 | *.bak
16 | *.tmp
17 | *~
18 | # Various IDEs
19 | .project
20 | .idea/
21 | *.tmproj
22 | .vscode/
23 |
--------------------------------------------------------------------------------
/helm-chart/renku-ui/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | appVersion: "1.0"
3 | description: A Helm chart for the Renku UI
4 | name: renku-ui
5 | icon: https://github.com/SwissDataScienceCenter/renku-sphinx-theme/raw/master/renku_sphinx_theme/static/favicon.png
6 | version: 3.59.1
7 |
--------------------------------------------------------------------------------
/helm-chart/renku-ui/values.yaml:
--------------------------------------------------------------------------------
1 | ui:
2 | client:
3 | image:
4 | repository: renku/renku-ui
5 | tag: "3.59.1"
6 |
7 | server:
8 | image:
9 | repository: renku/renku-ui-server
10 | tag: "3.59.1"
11 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "renku-ui-root",
3 | "lockfileVersion": 3,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "name": "renku-ui-root",
8 | "devDependencies": {
9 | "husky": "^8.0.0"
10 | }
11 | },
12 | "node_modules/husky": {
13 | "version": "8.0.3",
14 | "dev": true,
15 | "license": "MIT",
16 | "bin": {
17 | "husky": "lib/bin.js"
18 | },
19 | "engines": {
20 | "node": ">=14"
21 | },
22 | "funding": {
23 | "url": "https://github.com/sponsors/typicode"
24 | }
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "renku-ui-root",
3 | "private": true,
4 | "devDependencies": {
5 | "husky": "^8.0.0"
6 | },
7 | "scripts": {
8 | "prepare": "husky install"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/server/.dockerignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /gitlab
3 | /doc
4 | /helm-chart
5 | .editorconfig
6 | .eslintignore
7 | .eslintrc.json
8 | .gitignore
9 | .travis.yml
10 | docker-compose.yml
11 | Dockerfile
12 | Makefile
13 | README.md
14 |
--------------------------------------------------------------------------------
/server/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 |
--------------------------------------------------------------------------------
/server/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 | "parser": "@typescript-eslint/parser",
4 | "parserOptions": {
5 | "project": "tsconfig.json",
6 | "sourceType": "module"
7 | },
8 | "rules": {
9 | "no-eval": "error",
10 | "no-unused-vars": [
11 | "warn",
12 | {
13 | "vars": "all",
14 | "args": "none",
15 | "ignoreRestSiblings": false
16 | }
17 | ],
18 | "no-console": "warn",
19 | "max-nested-callbacks": ["warn", 3],
20 | "no-alert": "error",
21 | "no-else-return": "warn",
22 | "jest/expect-expect": "off"
23 | },
24 | "plugins": ["@typescript-eslint"],
25 | "extends": [
26 | "eslint:recommended",
27 | "plugin:@typescript-eslint/eslint-recommended",
28 | "plugin:@typescript-eslint/recommended",
29 | "prettier"
30 | ],
31 | "ignorePatterns": "jest.config.js"
32 | }
33 |
--------------------------------------------------------------------------------
/server/.prettierignore:
--------------------------------------------------------------------------------
1 | dist/
2 |
--------------------------------------------------------------------------------
/server/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:22 AS builder
2 |
3 | WORKDIR /app
4 |
5 | #: Use only required files.
6 | COPY package.json package-lock.json tsconfig.json /app/
7 | COPY src /app/src/
8 |
9 | # ENV NODE_OPTIONS="--max-old-space-size=4096"
10 |
11 | RUN npm install --silent && \
12 | npm run-script build
13 |
14 | FROM node:22-alpine
15 |
16 | COPY --from=builder /app/dist app/dist
17 | COPY --from=builder /app/node_modules app/node_modules
18 | COPY --from=builder /app/package.json app/package.json
19 | COPY docker-entrypoint.sh /app/docker-entrypoint.sh
20 |
21 | # HEALTHCHECK --interval=20s --timeout=10s --retries=5 CMD test -e /var/run/nginx.pid
22 |
23 | ARG SHORT_SHA
24 | ENV RENKU_UI_SHORT_SHA=$SHORT_SHA
25 |
26 | ENTRYPOINT ["/bin/sh", "/app/docker-entrypoint.sh"]
27 | CMD ["node", "--use-openssl-ca", "app"]
28 |
--------------------------------------------------------------------------------
/server/docker-entrypoint.sh:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | #
3 | # Copyright 2017-2018 - Swiss Data Science Center (SDSC)
4 | # A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and
5 | # Eidgenössische Technische Hochschule Zürich (ETHZ).
6 | #
7 | # Licensed under the Apache License, Version 2.0 (the "License");
8 | # you may not use this file except in compliance with the License.
9 | # You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 |
19 | exec -- "$@"
20 |
--------------------------------------------------------------------------------
/server/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | transform: {
3 | "^.+\\.ts?$": "ts-jest",
4 | },
5 | testRegex: "tests/.*\\.(test|spec)?\\.(ts|tsx)$",
6 | moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"],
7 | collectCoverage: true,
8 | collectCoverageFrom: ["src/**/*.ts"],
9 | coverageReporters: ["text"],
10 | coverageProvider: "v8",
11 | };
12 |
--------------------------------------------------------------------------------
/server/public/server-flow-auth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/server/public/server-flow-auth.png
--------------------------------------------------------------------------------
/server/public/server-flow-request.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/server/public/server-flow-request.png
--------------------------------------------------------------------------------
/server/src/routes/apis.interfaces.ts:
--------------------------------------------------------------------------------
1 | export interface CheckURLResponse {
2 | isIframeValid: boolean;
3 | url: string;
4 | error?: string;
5 | detail?: string;
6 | }
7 |
--------------------------------------------------------------------------------
/server/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "esModuleInterop": true,
5 | "target": "es6",
6 | "noImplicitAny": true,
7 | "moduleResolution": "node",
8 | "sourceMap": true,
9 | "outDir": "dist",
10 | "baseUrl": "."
11 | },
12 | "include": ["src", "tests"]
13 | }
14 |
--------------------------------------------------------------------------------
/tests/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/tests/.gitignore:
--------------------------------------------------------------------------------
1 | # Dependency directories
2 | node_modules/
3 | jspm_packages/
4 |
5 | # Typescript v1 declaration files
6 | typings/
7 |
8 | # Optional npm cache directory
9 | .npm
10 |
11 | # Optional eslint cache
12 | .eslintcache
13 |
14 | # dotenv environment variables file
15 | .env
16 |
17 | # dependencies
18 | /node_modules
19 |
20 | # misc
21 | .DS_Store
22 | .env.local
23 | .env.development.local
24 | .env.test.local
25 | .env.production.local
26 |
27 | npm-debug.log*
28 | yarn-debug.log*
29 | yarn-error.log*
30 |
31 |
32 | # Jet Brains IDE specifics
33 | .idea
34 |
35 | # VS Code IDE stuff
36 | .vscode
37 |
38 | # Video and screenshots local tests
39 | videos/
40 | screenshots/
41 |
42 | # Machine-specific configuration
43 | cypress.env.json
44 |
--------------------------------------------------------------------------------
/tests/cypress.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "cypress";
2 |
3 | export default defineConfig({
4 | e2e: {
5 | baseUrl: "http://localhost:3000",
6 | specPattern: "cypress/e2e/**/*.{js,jsx,ts,tsx}",
7 | },
8 | retries: {
9 | runMode: 2,
10 | openMode: 0,
11 | },
12 | video: false,
13 | viewportWidth: 1600,
14 | viewportHeight: 1200,
15 | });
16 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/admin/user-1.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "user-1",
3 | "createdTimestamp": 1696326933258,
4 | "username": "user1@renku.ch",
5 | "enabled": true,
6 | "totp": false,
7 | "emailVerified": false,
8 | "firstName": "User",
9 | "lastName": "One",
10 | "email": "user1@renku.ch",
11 | "disableableCredentialTypes": [],
12 | "requiredActions": [],
13 | "notBefore": 0,
14 | "access": {
15 | "manageGroupMembership": false,
16 | "view": true,
17 | "mapRoles": false,
18 | "impersonate": false,
19 | "manage": false
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/avatars/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/tests/cypress/fixtures/avatars/avatar.png
--------------------------------------------------------------------------------
/tests/cypress/fixtures/cloudStorage/cloud-storage-secrets-empty.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/cloudStorage/cloud-storage-secrets-partial.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "secret_access_key",
4 | "secret_id": "ULID1"
5 | }
6 | ]
7 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/cloudStorage/cloud-storage-secrets.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "access_key_id",
4 | "secret_id": "ULID2"
5 | },
6 | {
7 | "name": "secret_access_key",
8 | "secret_id": "ULID1"
9 | }
10 | ]
11 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/cloudStorage/cloud-storage.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "storage": {
4 | "configuration": {
5 | "type": "s3",
6 | "provider": "Other",
7 | "endpoint": "https://s3.example.com"
8 | },
9 | "name": "example-storage",
10 | "private": true,
11 | "project_id": 1,
12 | "readonly": true,
13 | "source_path": "bucket/source",
14 | "storage_id": "1",
15 | "storage_type": "s3",
16 | "target_path": "mount/path"
17 | }
18 | }
19 | ]
20 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/cloudStorage/new-cloud-storage.json:
--------------------------------------------------------------------------------
1 | {
2 | "storage": {
3 | "configuration": {
4 | "provider": "AWS",
5 | "region": "eu-central-2"
6 | },
7 | "name": "fake-storage",
8 | "private": true,
9 | "project_id": 1,
10 | "readonly": false,
11 | "source_path": "bucket/my-source",
12 | "storage_id": "2",
13 | "storage_type": "s3",
14 | "target_path": "external_storage/webdav"
15 | },
16 | "sensitive_fields": [
17 | { "help": "First credential", "name": "first" },
18 | { "help": "Second credential", "name": "second" }
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/cloudStorage/new-cloud-storage_v2.json:
--------------------------------------------------------------------------------
1 | {
2 | "storage": {
3 | "configuration": {
4 | "provider": "AWS",
5 | "region": "eu-central-2"
6 | },
7 | "name": "example-storage",
8 | "private": true,
9 | "project_id": 1,
10 | "readonly": false,
11 | "source_path": "bucket/my-source",
12 | "storage_id": "2",
13 | "storage_type": "s3",
14 | "target_path": "external_storage/aws"
15 | },
16 | "sensitive_fields": [
17 | { "help": "First credential", "name": "first" },
18 | { "help": "Second credential", "name": "second" }
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/connectedServicesV2/account.json:
--------------------------------------------------------------------------------
1 | {
2 | "username": "my-github-user",
3 | "web_url": "https://github.com/my-github-user"
4 | }
5 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/connectedServicesV2/connections.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "0100933QTQVNX4R5CC8P177VTC",
4 | "provider_id": "github.com",
5 | "status": "connected"
6 | }
7 | ]
8 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/connectedServicesV2/installationsFull.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 99998951,
4 | "account_login": "my-github-user",
5 | "account_web_url": "https://github.com/my-github-user",
6 | "repository_selection": "all"
7 | }
8 | ]
9 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/connectedServicesV2/installationsSuspended.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 99998951,
4 | "account_login": "my-github-user",
5 | "account_web_url": "https://github.com/my-github-user",
6 | "repository_selection": "all",
7 | "suspended_at": "2024-10-17T12:55:59Z"
8 | }
9 | ]
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/connectedServicesV2/providers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "github.com",
4 | "kind": "github",
5 | "app_slug": "renkulab-ci-test",
6 | "client_id": "MYSPECIALID",
7 | "client_secret": "redacted",
8 | "display_name": "GitHub.com",
9 | "scope": "",
10 | "url": "https://github.com",
11 | "use_pkce": false
12 | },
13 | {
14 | "id": "gitlab-com",
15 | "kind": "gitlab",
16 | "app_slug": "gitlab-com",
17 | "client_id": "MYOTHERID",
18 | "client_secret": "redacted",
19 | "display_name": "Gitlab.com",
20 | "scope": "",
21 | "url": "https://gitlab.com",
22 | "use_pkce": false
23 | }
24 | ]
25 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dashboard/dismissible-simple-info-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "DASHBOARD_MESSAGE": {
3 | "enabled": true,
4 | "text": "# Welcome to Renku! 🐸\nThis is an example welcome message ✨.\n",
5 | "style": "info",
6 | "dismissible": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dashboard/non-dismissible-read-more-success-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "DASHBOARD_MESSAGE": {
3 | "enabled": true,
4 | "text": "# Welcome to Renku! 🐸\nThis is an example welcome message ✨.\n",
5 | "additionalText": "This is some more text",
6 | "style": "success",
7 | "dismissible": false
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/data-service-admin-user.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "0945f006-e117-49b7-8966-4c0842146313",
3 | "username": "e2e",
4 | "email": "e2e@renku.ch",
5 | "last_name": "User",
6 | "first_name": "E2E",
7 | "is_admin": true
8 | }
9 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/data-service-user.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "0945f006-e117-49b7-8966-4c0842146313",
3 | "username": "e2e",
4 | "email": "e2e@renku.ch",
5 | "last_name": "User",
6 | "first_name": "E2E",
7 | "is_admin": false
8 | }
9 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dataConnector/data-connector-permissions.json:
--------------------------------------------------------------------------------
1 | {
2 | "write": true,
3 | "delete": true,
4 | "change_membership": true
5 | }
6 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dataConnector/data-connector-public.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "ULID-1",
4 | "name": "example storage",
5 | "namespace": "user1-uuid",
6 | "slug": "example-storage",
7 | "storage": {
8 | "storage_type": "s3",
9 | "configuration": {
10 | "type": "s3",
11 | "provider": "AWS"
12 | },
13 | "source_path": "bucket/my-source",
14 | "target_path": "external_storage/aws",
15 | "readonly": true,
16 | "sensitive_fields": []
17 | },
18 | "creation_date": "2023-11-15T09:55:59Z",
19 | "created_by": { "id": "user1-uuid" },
20 | "visibility": "public",
21 | "description": "Example storage description"
22 | }
23 | ]
24 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dataConnector/data-connector-secrets-empty.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dataConnector/data-connector-secrets-partial.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "access_key_id",
4 | "secret_id": "ULID1"
5 | }
6 | ]
7 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dataConnector/data-connector-secrets.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "access_key_id",
4 | "secret_id": "ULID2"
5 | },
6 | {
7 | "name": "secret_access_key",
8 | "secret_id": "ULID1"
9 | }
10 | ]
11 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dataConnector/empty-list.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dataConnector/new-data-connector.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "ULID-5",
3 | "name": "example-storage",
4 | "namespace": "user1-uuid",
5 | "slug": "example-storage",
6 | "storage": {
7 | "storage_type": "s3",
8 | "configuration": {
9 | "provider": "AWS",
10 | "region": "eu-central-2"
11 | },
12 |
13 | "source_path": "bucket/my-source",
14 | "target_path": "external_storage/aws",
15 | "readonly": false,
16 | "sensitive_fields": [
17 | { "help": "First credential", "name": "first" },
18 | { "help": "Second credential", "name": "second" }
19 | ]
20 | },
21 | "creation_date": "2023-11-15T09:55:59Z",
22 | "created_by": { "id": "user1-uuid" },
23 | "visibility": "private",
24 | "description": "Data connector 5 description"
25 | }
26 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dataConnector/project-data-connector-links-multiple.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "LINK-ULID-1",
4 | "data_connector_id": "ULID-1",
5 | "project_id": "PROJECT-ULID-1",
6 | "creation_date": "2023-11-15T09:55:59Z",
7 | "created_by": { "id": "user1-uuid" }
8 | },
9 | {
10 | "id": "LINK-ULID-2",
11 | "data_connector_id": "ULID-2",
12 | "project_id": "PROJECT-ULID-2",
13 | "creation_date": "2023-11-15T09:55:59Z",
14 | "created_by": { "id": "user1-uuid" }
15 | },
16 | {
17 | "id": "LINK-ULID-3",
18 | "data_connector_id": "ULID-3",
19 | "project_id": "PROJECT-ULID-3",
20 | "creation_date": "2023-11-15T09:55:59Z",
21 | "created_by": { "id": "user1-uuid" }
22 | }
23 | ]
24 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dataConnector/project-data-connector-links.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "LINK-ULID-1",
4 | "data_connector_id": "ULID-1",
5 | "project_id": "PROJECT-ULID-1",
6 | "creation_date": "2023-11-15T09:55:59Z",
7 | "created_by": { "id": "user1-uuid" }
8 | }
9 | ]
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dataServices/resource-class.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "small",
3 | "cpu": 0.1,
4 | "memory": 1,
5 | "gpu": 0,
6 | "max_storage": 4,
7 | "default_storage": 1,
8 | "id": 2,
9 | "default": false,
10 | "tolerations": [],
11 | "node_affinities": []
12 | }
13 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/dataServices/resource-pool-users.json:
--------------------------------------------------------------------------------
1 | [{ "id": "user-1" }]
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/add-file.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "files": [
4 | {
5 | "file_id": "73d07bafc1f848b9afe231c39d43266c"
6 | }
7 | ],
8 | "slug": "new-dataset-completed",
9 | "project_id": "c91864edc3c84a3190579b18fe02b1f0",
10 | "remote_branch": "master"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/create-dataset-title-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": {
3 | "code": 2200,
4 | "devMessage": "Unexpected Renku exception from a service operation: Invalid parameter value - Dataset name 'test@' is not valid (Hint: 'test' is valid).",
5 | "devReference": "https://renku-python.readthedocs.io/en/latest/service_errors.html#renku.ui.service.errors.ProgramRenkuError",
6 | "userMessage": "Our servers could not process the requested operation. The following details may help: Invalid parameter value - Dataset name 'test@' is not valid (Hint: 'test' is valid)."
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/create-dataset.json:
--------------------------------------------------------------------------------
1 | { "result": { "slug": "new-dataset-completed", "remote_branch": "master" } }
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/dataset-files.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "files": [
4 | {
5 | "path": "data/abcd/W.txt",
6 | "added": "2022-02-02T12:58:56+00:00",
7 | "name": "W.txt"
8 | },
9 | {
10 | "path": "data/abcd/air_quality_no2.txt",
11 | "added": "2022-02-02T12:58:56+00:00",
12 | "name": "air_quality_no2.txt"
13 | }
14 | ],
15 | "slug": "abcd"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/dataset-list-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": {
3 | "code": -32100,
4 | "project_initialization_required": true,
5 | "reason": "/svc/cache/projects/00000000005jYXZhenppLnRlY2hnbWFpbC5jb20=/000000000035476597e68f5cd78f5737/lee.gavin.k/renku-mls-demo does not seem to be a Renku project.\nInitialize it with \"renku init\""
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/datasets-import.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "job_id": "2d24760f2dc1484e972f81cc150d69eb",
4 | "created_at": "2022-02-21T12:43:59.001037"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/files/bigFile.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/tests/cypress/fixtures/datasets/files/bigFile.bin
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/files/count_flights.txt:
--------------------------------------------------------------------------------
1 | example file
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/files/datasetFiles.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/tests/cypress/fixtures/datasets/files/datasetFiles.zip
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/files/sdsc.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SwissDataScienceCenter/renku-ui/0ab62578de23fab2515b9e826ac58e7939e7d3a4/tests/cypress/fixtures/datasets/files/sdsc.jpeg
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/import-job-completed.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "client_extras": "",
4 | "project": {
5 | "name": "local-test-project",
6 | "email": "e2e@renku.ch",
7 | "project_id": "693591cdfbad4e58978deacef2d272a1",
8 | "fullname": "e2e User",
9 | "owner": "e2e"
10 | },
11 | "state": "COMPLETED",
12 | "extras": {
13 | "remote_branch": "master"
14 | },
15 | "updated_at": "2022-02-21T12:43:59.000867",
16 | "job_id": "2d24760f2dc1484e972f81cc150d69eb",
17 | "created_at": "2022-02-21T12:43:59.001037",
18 | "renku_op": "dataset_import"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/import-job-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "client_extras": "",
4 | "project": {
5 | "name": "local-test-project",
6 | "email": "e2e@renku.ch",
7 | "project_id": "693591cdfbad4e58978deacef2d272a1",
8 | "fullname": "e2e User",
9 | "owner": "e2e"
10 | },
11 | "state": "FAILED",
12 | "extras": {
13 | "error": "Something fail"
14 | },
15 | "updated_at": "2022-02-21T12:43:59.000867",
16 | "job_id": "2d24760f2dc1484e972f81cc150d69eb",
17 | "created_at": "2022-02-21T12:43:59.001037",
18 | "renku_op": "dataset_import"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/import-job-in-process.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "client_extras": "",
4 | "project": {
5 | "name": "local-test-project",
6 | "email": "e2e@renku.ch",
7 | "project_id": "693591cdfbad4e58978deacef2d272a1",
8 | "fullname": "e2e User",
9 | "owner": "e2e"
10 | },
11 | "state": "IN_PROGRESS",
12 | "extras": null,
13 | "updated_at": "2022-02-21T12:43:59.000867",
14 | "job_id": "2d24760f2dc1484e972f81cc150d69eb",
15 | "created_at": "2022-02-21T12:43:59.001037",
16 | "renku_op": "dataset_import"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/no-dataset.json:
--------------------------------------------------------------------------------
1 | { "message": "No dataset with '99a46c10c94a40359181965e5c4cdabc' id found" }
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/datasets/upload-dataset-file.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "files": [
4 | {
5 | "relative_path": "filter_flights.txt",
6 | "is_archive": false,
7 | "created_at": "2022-06-17T12:42:35.386017",
8 | "is_dir": false,
9 | "file_name": "filter_flights.txt",
10 | "file_id": "268cbd72195d427db67f80a425484b0a",
11 | "file_size": 539,
12 | "content_type": "unknown",
13 | "unpack_archive": false
14 | }
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/errors/core-error-1101.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": {
3 | "code": 1101,
4 | "userMessage": "The target repository is not a valid Renku template repository.",
5 | "devMessage": "Target repository is not a valid template.",
6 | "devReference": "https://renku-python.readthedocs.io/en/latest/service_errors.html#renku.service.errors.UserTemplateInvalidError",
7 | "sentry": "https://sentry.dev.renku.ch/organizations/sentry?query=228c34f108344c3c9e8e0669871d1a41"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/errors/core-error-1102.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": {
3 | "code": 1102,
4 | "userMessage": "There is an error with a project field: the template 'NONEXISTING' does not exist in the target template's repository.",
5 | "devMessage": "Project creation from a Renku template failed. The user provided wrong field(s): the template 'NONEXISTING' does not exist in the target template's repository.",
6 | "devReference": "https://renku-python.readthedocs.io/en/latest/service_errors.html#renku.service.errors.UserProjectCreationError",
7 | "sentry": "https://sentry.dev.renku.ch/organizations/sentry?query=c511c29793724d5689364a54dc6f8b0e"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/errors/core-error-2001.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": {
3 | "code": 2001,
4 | "userMessage": "There was an unexpected error while handling project data.",
5 | "devMessage": "Unexpected fields have been provided: 'fake': Unknown field.",
6 | "devReference": "https://renku-python.readthedocs.io/en/latest/service_errors.html#renku.service.errors.ProgramInvalidGenericFieldsError",
7 | "sentry": "https://sentry.dev.renku.ch/organizations/sentry?query=38558d7711e44e1aa39e04e744b00e20"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/errors/core-error-2200.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": {
3 | "code": 2200,
4 | "devMessage": "Unexpected Renku exception from a service operation: Git command failed: /svc/cache/projects/Y3JhbWFrcmlldGh6LmNo/namespace/project",
5 | "devReference": "https://renku-python.readthedocs.io/en/latest/service_errors.html#renku.ui.service.errors.ProgramRenkuError",
6 | "sentry": "https://sentry.dev.renku.ch/organizations/sentry?query=7861661cc9794a2c98eb267dcc462302",
7 | "userMessage": "Our servers could not process the requested operation. The following details may help: Git command failed: /svc/cache/projects/Y3JhbWFrcmlldGh6LmNo/namespace/project"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/errors/core-error-old.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": {
3 | "code": -32602,
4 | "reason": "Validation error: `gitUrl` - Unknown field."
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/groupV2/create-groupV2.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "THEPROJECTULID26CHARACTERS",
3 | "name": "New Group",
4 | "slug": "new-group",
5 | "created_by": {
6 | "id": "owner-KC-id"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/groupV2/groupV2-permissions-none.json:
--------------------------------------------------------------------------------
1 | {
2 | "write": false,
3 | "delete": false,
4 | "change_membership": false
5 | }
6 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/groupV2/groupV2-permissions.json:
--------------------------------------------------------------------------------
1 | {
2 | "write": true,
3 | "delete": true,
4 | "change_membership": true
5 | }
6 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/groupV2/list-groupV2-members.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "0945f006-e117-49b7-8966-4c0842146313",
4 | "first_name": "User",
5 | "last_name": "1",
6 | "namespace": "user1",
7 | "role": "owner"
8 | },
9 | {
10 | "id": "user2-uuid",
11 | "namespace": "user2",
12 | "role": "editor"
13 | },
14 | {
15 | "id": "user3-uuid",
16 | "first_name": "user3-uuid",
17 | "namespace": "user3",
18 | "role": "viewer"
19 | }
20 | ]
21 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/groupV2/list-groupV2-post-delete.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "01HF96BXZ3JF9DX88B7XB405S5",
4 | "name": "test 1 group-v2",
5 | "slug": "test-1-group-v2",
6 | "creation_date": "2023-11-15T09:52:59Z",
7 | "created_by": "user1-uuid",
8 | "description": "Group 1 description"
9 | }
10 | ]
11 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/groupV2/list-groupV2.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "THEPROJECTULID26CHARACTERS",
4 | "name": "test 2 group-v2",
5 | "slug": "test-2-group-v2",
6 | "creation_date": "2023-11-15T09:55:59Z",
7 | "created_by": { "id": "user1-uuid" },
8 | "description": "Group 2 description"
9 | },
10 | {
11 | "id": "01HF96BXZ3JF9DX88B7XB405S5",
12 | "name": "test 1 group-v2",
13 | "slug": "test-1-group-v2",
14 | "creation_date": "2023-11-15T09:52:59Z",
15 | "created_by": { "id": "user1-uuid" },
16 | "description": "Group 1 description"
17 | }
18 | ]
19 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/groupV2/read-groupV2-namespace.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "namespace-id",
3 | "name": "test 2 group-v2",
4 | "slug": "test-2-group-v2",
5 | "path": "test-2-group-v2",
6 | "creation_date": "2023-11-15T09:55:59Z",
7 | "created_by": "user-id",
8 | "namespace_kind": "group"
9 | }
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/groupV2/read-groupV2.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "THEPROJECTULID26CHARACTERS",
3 | "name": "test 2 group-v2",
4 | "slug": "test-2-group-v2",
5 | "creation_date": "2023-11-15T09:55:59Z",
6 | "created_by": { "id": "user1-uuid" },
7 | "description": "Group 2 description"
8 | }
9 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/groupV2/update-groupV2-metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "THEPROJECTULID26CHARACTERS",
3 | "name": "new name",
4 | "slug": "new-slug",
5 | "creation_date": "2023-11-15T09:55:59Z",
6 | "created_by": { "id": "user1-uuid" },
7 | "description": "new description"
8 | }
9 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/groupV2/update-groupV2-namespace.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "namespace-id",
3 | "name": "new name",
4 | "slug": "new-slug",
5 | "path": "new-slug",
6 | "creation_date": "2023-11-15T09:55:59Z",
7 | "created_by": "user-id",
8 | "namespace_kind": "group"
9 | }
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/kgSearch/emptySearch.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/kgSearch/lastSearch.json:
--------------------------------------------------------------------------------
1 | { "queries": ["*flight*", "*covid*", "*"] }
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/kgSearch/no-active-projects.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 1,
4 | "name": "test-project",
5 | "path": "e2e/test-project",
6 | "description": "",
7 | "visibility": "public"
8 | }
9 | ]
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/namespaceV2/list-namespaceV2.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "AB0134CD43Z3JF9DX88B7XB405N0",
4 | "slug": "user1-uuid",
5 | "path": "user1-uuid",
6 | "created_by": "user1-uuid",
7 | "namespace_kind": "user"
8 | },
9 | {
10 | "id": "AB0134CD43Z3JF9DX88B7XB405N0",
11 | "slug": "e2e",
12 | "path": "e2e",
13 | "created_by": "user1-uuid",
14 | "namespace_kind": "user"
15 | },
16 | {
17 | "id": "THEPROJECTULID26CHARACTERS",
18 | "name": "test 2 group-v2",
19 | "slug": "test-2-group-v2",
20 | "path": "test-2-group-v2",
21 | "creation_date": "2023-11-15T09:55:59Z",
22 | "created_by": "user1-uuid",
23 | "namespace_kind": "group"
24 | },
25 | {
26 | "id": "01HF96BXZ3JF9DX88B7XB405S5",
27 | "name": "test 1 group-v2",
28 | "slug": "test-1-group-v2",
29 | "path": "test-1-group-v2",
30 | "creation_date": "2023-11-15T09:52:59Z",
31 | "created_by": "user1-uuid",
32 | "namespace_kind": "group"
33 | }
34 | ]
35 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/namespaceV2/namespaceV2-user1.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "AB0134CD43Z3JF9DX88B7XB405N0",
3 | "slug": "user1-uuid",
4 | "path": "user1-uuid",
5 | "created_by": "user1-uuid",
6 | "namespace_kind": "user",
7 | "name": "user1"
8 | }
9 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/namespaces.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 117,
4 | "name": "E2E User",
5 | "path": "e2e",
6 | "kind": "user",
7 | "full_path": "e2e",
8 | "parent_id": null,
9 | "avatar_url": "https://secure.gravatar.com/avatar/67294be6fc8a46e7dd5ae6a3cf11a0ae?s=80\u0026d=identicon",
10 | "web_url": "https://dev.renku.ch/gitlab/e2e"
11 | },
12 | {
13 | "id": 128,
14 | "name": "internal-space",
15 | "path": "internal-space",
16 | "kind": "group",
17 | "full_path": "internal-space",
18 | "parent_id": null,
19 | "avatar_url": null,
20 | "web_url": "https://dev.renku.ch/gitlab/groups/internal-space",
21 | "members_count_with_descendants": 1
22 | },
23 | {
24 | "id": 129,
25 | "name": "private-space",
26 | "path": "private-space",
27 | "kind": "group",
28 | "full_path": "private-space",
29 | "parent_id": null,
30 | "avatar_url": null,
31 | "web_url": "https://dev.renku.ch/gitlab/groups/private-space",
32 | "members_count_with_descendants": 1
33 | }
34 | ]
35 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/cache-project-list-empty.json:
--------------------------------------------------------------------------------
1 | { "result": {} }
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/cache-project-list.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "projects": [
4 | {
5 | "project_id": "afc0206e87d6455b9b4cfdebf0d9ccb8",
6 | "initialized": true,
7 | "git_url": "https://dev.renku.ch/gitlab/e2e/local-test-project.git"
8 | }
9 | ]
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/config-show.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "config": {
4 | "interactive.default_url": "/lab",
5 | "interactive.cpu_request": "0.5",
6 | "renku.autocommit_lfs": "false",
7 | "renku.lfs_threshold": "100kb"
8 | },
9 | "default": {
10 | "interactive.default_url": "/lab",
11 | "renku.autocommit_lfs": "false",
12 | "renku.lfs_threshold": "100kb"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/create-project.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "slug": "new-project",
4 | "name": "new-project",
5 | "namespace": "e2e",
6 | "project_id": "53ae233f201047eaa3aa16b876596ae8",
7 | "url": "https://dev.renku.ch/gitlab/e2e/nuevo-projecto"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/edit/edit-project-confirm.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "edited": { "description": "description abcde" },
4 | "remote_branch": "master",
5 | "warning": null
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/files/project-files-git-attributes:
--------------------------------------------------------------------------------
1 | data/electricity-statistics-2020/10090-Mittwochproduktion_2020.xlsx filter=lfs diff=lfs merge=lfs -text
2 | data/electricity-statistics-2021/10481-Mittwochproduktion_2021.xlsx filter=lfs diff=lfs merge=lfs -text
3 | data/electricity-statistics-2022/10897-Mittwochproduktion_2022.xlsx filter=lfs diff=lfs merge=lfs -text
4 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/kgStatus/kgStatus404.json:
--------------------------------------------------------------------------------
1 | {
2 | "message": "Info about project cannot be found"
3 | }
4 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/kgStatus/kgStatusIndexedFailure.json:
--------------------------------------------------------------------------------
1 | {
2 | "activated": true,
3 | "progress": {
4 | "done": 5,
5 | "total": 5,
6 | "percentage": 100.0
7 | },
8 | "details": {
9 | "status": "failure",
10 | "message": "generation non recoverable failure"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/kgStatus/kgStatusIndexedSuccess.json:
--------------------------------------------------------------------------------
1 | {
2 | "activated": true,
3 | "progress": {
4 | "done": 5,
5 | "total": 5,
6 | "percentage": 100.0
7 | },
8 | "details": {
9 | "status": "success",
10 | "message": "no message"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/kgStatus/kgStatusIndexing.json:
--------------------------------------------------------------------------------
1 | {
2 | "activated": true,
3 | "progress": {
4 | "done": 2,
5 | "total": 5,
6 | "percentage": 40.0
7 | },
8 | "details": {
9 | "status": "in-progress",
10 | "message": "some message"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/migrationStatus/version-core.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "renku-core",
3 | "versions": [
4 | {
5 | "version": "v2.4.0",
6 | "data": {
7 | "metadata_version": "10"
8 | }
9 | },
10 | {
11 | "version": "v1.11.3",
12 | "data": {
13 | "metadata_version": "9"
14 | }
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/project-status-done.json:
--------------------------------------------------------------------------------
1 | {
2 | "activated": true,
3 | "progress": {
4 | "done": 5,
5 | "total": 5,
6 | "percentage": 100.0
7 | },
8 | "details": {
9 | "status": "success",
10 | "message": "triples store"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/project-status-processing.json:
--------------------------------------------------------------------------------
1 | {
2 | "activated": true,
3 | "progress": {
4 | "done": 2,
5 | "total": 5,
6 | "percentage": 40.0
7 | },
8 | "details": {
9 | "status": "in-progress",
10 | "message": "generating triples"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/test-project-commits.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "172a784d465a7bd45bacc165df2b64a591ac6b18",
4 | "short_id": "172a784d",
5 | "created_at": "2022-01-20T14:14:54.000+00:00",
6 | "parent_ids": [],
7 | "title": "service: renku init -n \"local-test-project\" -s \"https://github.com/SwissDataScienceCenter/renku-p...",
8 | "message": "service: renku init -n \"local-test-project\" -s \"https://github.com/SwissDataScienceCenter/renku-p...",
9 | "author_name": "e2e User",
10 | "author_email": "e2e@renku.ch",
11 | "authored_date": "2022-01-20T14:14:54.000+00:00",
12 | "committer_name": "renku 0.16.2",
13 | "committer_email": "https://github.com/swissdatasciencecenter/renku-python/tree/v0.16.2",
14 | "committed_date": "2022-01-20T14:14:54.000+00:00",
15 | "trailers": {},
16 | "web_url": "https://dev.renku.ch/gitlab/e2e/local-test-project/-/commit/172a784d465a7bd45bacc165df2b64a591ac6b18"
17 | }
18 | ]
19 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/test-project-readme-commits.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "172a784d465a7bd45bacc165df2b64a591ac6b18",
4 | "short_id": "172a784d",
5 | "created_at": "2022-01-20T14:14:54.000+00:00",
6 | "parent_ids": [],
7 | "title": "service: renku init -n \"local-test-project\" -s \"https://github.com/SwissDataScienceCenter/renku-p...",
8 | "message": "service: renku init -n \"local-test-project\" -s \"https://github.com/SwissDataScienceCenter/renku-p...",
9 | "author_name": "e2e User",
10 | "author_email": "e2e@renku.ch",
11 | "authored_date": "2022-01-20T14:14:54.000+00:00",
12 | "committer_name": "renku 0.16.2",
13 | "committer_email": "https://github.com/swissdatasciencecenter/renku-python/tree/v0.16.2",
14 | "committed_date": "2022-01-20T14:14:54.000+00:00",
15 | "trailers": {},
16 | "web_url": "https://dev.renku.ch/gitlab/e2e/local-test-project/-/commit/172a784d465a7bd45bacc165df2b64a591ac6b18"
17 | }
18 | ]
19 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/test-project-readme.md:
--------------------------------------------------------------------------------
1 | # local test project
2 |
3 | A project for testing locally
4 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/test-project_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "default": {
4 | "interactive.default_url": "/lab",
5 | "renku.autocommit_lfs": "false",
6 | "renku.lfs_threshold": "100kb"
7 | },
8 | "config": {
9 | "interactive.default_url": "/lab",
10 | "interactive.cpu_request": "0.1",
11 | "renku.autocommit_lfs": "false",
12 | "renku.lfs_threshold": "100kb"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/test-project_migration_update-required.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "core_compatibility_status": {
4 | "migration_required": true,
5 | "project_metadata_version": "7",
6 | "current_metadata_version": "9"
7 | },
8 | "core_renku_version": "1.0.2",
9 | "dockerfile_renku_status": {
10 | "newer_renku_available": null,
11 | "automated_dockerfile_update": false,
12 | "dockerfile_renku_version": null,
13 | "latest_renku_version": "1.0.2"
14 | },
15 | "project_supported": true,
16 | "project_renku_version": "0.11.3",
17 | "template_status": {
18 | "newer_template_available": false,
19 | "project_template_version": null,
20 | "template_ref": null,
21 | "template_source": null,
22 | "latest_template_version": null,
23 | "template_id": null,
24 | "automated_template_update": false
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/visibility/error-update-visibility.json:
--------------------------------------------------------------------------------
1 | {
2 | "visibility_level": [
3 | "internal is not allowed in a private group.",
4 | "internal is not allowed since the fork source project has lower visibility."
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/project/visibility/visibility-change-accepted.json:
--------------------------------------------------------------------------------
1 | { "severity": "Info", "message": "Project update accepted" }
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/create-projectV2.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "THEPROJECTULID26CHARACTERS",
3 | "name": "Renku R Project",
4 | "namespace": "owner-kc-id",
5 | "slug": "r-project",
6 | "created_by": {
7 | "id": "owner-KC-id"
8 | },
9 | "visibility": "public",
10 | "secrets_mount_directory": "/secrets"
11 | }
12 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/list-projectV2-members-many.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "0945f006-e117-49b7-8966-4c0842146313",
4 | "first_name": "User",
5 | "last_name": "One",
6 | "namespace": "user1",
7 | "role": "owner"
8 | },
9 | {
10 | "id": "user2-uuid",
11 | "first_name": "User",
12 | "last_name": "Two",
13 | "namespace": "user2",
14 | "role": "viewer"
15 | },
16 | {
17 | "first_name": "User",
18 | "last_name": "Three",
19 | "id": "user3-uuid",
20 | "role": "editor",
21 | "namespace": "user3"
22 | },
23 | {
24 | "id": "user4-uuid",
25 | "namespace": "user4",
26 | "first_name": "User",
27 | "last_name": "Four",
28 | "role": "viewer"
29 | },
30 | {
31 | "id": "user5-uuid",
32 | "role": "viewer",
33 | "namespace": "user5"
34 | },
35 | {
36 | "id": "user6-uuid",
37 | "role": "owner",
38 | "first_name": "UserSix"
39 | }
40 | ]
41 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/list-projectV2-members.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "0945f006-e117-49b7-8966-4c0842146313",
4 | "first_name": "user",
5 | "last_name": "1",
6 | "namespace": "user1",
7 | "role": "owner"
8 | },
9 | {
10 | "id": "user2-uuid",
11 | "first_name": "user",
12 | "last_name": "2",
13 | "namespace": "user2",
14 | "role": "viewer"
15 | },
16 | {
17 | "id": "user3-uuid",
18 | "first_name": "user",
19 | "last_name": "3",
20 | "namespace": "user3",
21 | "role": "editor"
22 | }
23 | ]
24 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/list-projectV2-post-delete.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "01HF96BXZ3JF9DX88B7XB405S5",
4 | "name": "test 1 v2-project",
5 | "slug": "test-1-v2-project",
6 | "namespace": "user1-uuid",
7 | "creation_date": "2023-11-15T09:52:59Z",
8 | "created_by": "user1-uuid",
9 | "repositories": [],
10 | "visibility": "private",
11 | "description": "Project 1 description"
12 | }
13 | ]
14 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/list-projectV2.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "THEPROJECTULID26CHARACTERS",
4 | "name": "test 2 v2-project",
5 | "slug": "test-2-v2-project",
6 | "namespace": "user1-uuid",
7 | "creation_date": "2023-11-15T09:55:59Z",
8 | "created_by": "user1-uuid",
9 | "repositories": [
10 | "https://domain.name/repo1.git",
11 | "https://domain.name/repo2.git"
12 | ],
13 | "visibility": "public",
14 | "description": "Project 2 description",
15 | "secrets_mount_directory": "/secrets"
16 | },
17 | {
18 | "id": "01HF96BXZ3JF9DX88B7XB405S5",
19 | "name": "test 1 v2-project",
20 | "slug": "test-1-v2-project",
21 | "namespace": "namespace1",
22 | "creation_date": "2023-11-15T09:52:59Z",
23 | "created_by": { "id": "user1-uuid" },
24 | "repositories": [],
25 | "visibility": "private",
26 | "description": "Project 1 description",
27 | "secrets_mount_directory": "/secrets"
28 | }
29 | ]
30 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/projectV2-permissions-editor.json:
--------------------------------------------------------------------------------
1 | {
2 | "write": true,
3 | "delete": false,
4 | "change_membership": false
5 | }
6 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/projectV2-permissions-viewer.json:
--------------------------------------------------------------------------------
1 | {
2 | "write": false,
3 | "delete": false,
4 | "change_membership": false
5 | }
6 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/projectV2-permissions.json:
--------------------------------------------------------------------------------
1 | {
2 | "write": true,
3 | "delete": true,
4 | "change_membership": true
5 | }
6 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/read-projectV2-empty.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "THEPROJECTULID26CHARACTERS",
3 | "name": "test 2 v2-project",
4 | "slug": "test-2-v2-project",
5 | "namespace": "user1-uuid",
6 | "creation_date": "2023-11-15T09:55:59Z",
7 | "created_by": "user1-uuid",
8 | "repositories": [],
9 | "visibility": "public",
10 | "description": "Project 2 description",
11 | "secrets_mount_directory": "/secrets"
12 | }
13 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/read-projectV2-one-github-repo.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "THEPROJECTULID26CHARACTERS",
3 | "name": "test 2 v2-project",
4 | "slug": "test-2-v2-project",
5 | "namespace": "user1-uuid",
6 | "creation_date": "2023-11-15T09:55:59Z",
7 | "created_by": "user1-uuid",
8 | "repositories": ["https://github.com/renku/url-repo.git"],
9 | "visibility": "public",
10 | "description": "Project 2 description",
11 | "secrets_mount_directory": "/secrets",
12 | "documentation": "A description of this project, supporting **markdown** and math symbols like: $\\sqrt 2$."
13 | }
14 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/read-projectV2-without-documentation.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "THEPROJECTULID26CHARACTERS",
3 | "name": "test 2 v2-project",
4 | "slug": "test-2-v2-project",
5 | "namespace": "user1-uuid",
6 | "creation_date": "2023-11-15T09:55:59Z",
7 | "created_by": "user1-uuid",
8 | "repositories": [
9 | "https://domain.name/repo1.git",
10 | "https://domain.name/repo2.git"
11 | ],
12 | "visibility": "public",
13 | "description": "Project 2 description"
14 | }
15 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/read-projectV2.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "THEPROJECTULID26CHARACTERS",
3 | "name": "test 2 v2-project",
4 | "slug": "test-2-v2-project",
5 | "namespace": "user1-uuid",
6 | "creation_date": "2023-11-15T09:55:59Z",
7 | "created_by": "user1-uuid",
8 | "repositories": [
9 | "https://domain.name/repo1.git",
10 | "https://domain.name/repo2.git"
11 | ],
12 | "visibility": "public",
13 | "description": "Project 2 description",
14 | "secrets_mount_directory": "/secrets",
15 | "documentation": "A description of this project, supporting **markdown** and math symbols like: $\\sqrt 2$."
16 | }
17 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/session-launchers-global.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "01HYMTVR7TZXX1FQJDZD5XPEFW",
4 | "project_id": "01HYJE5FR1JV4CWFMBFJQFQ4RM",
5 | "name": "Jupyter Notebook",
6 | "creation_date": "2024-05-24T08:18:15Z",
7 | "resource_class_id": 2,
8 | "environment": {
9 | "id": "01HYMSPE2D9K4Q3WAME1NN4244",
10 | "name": "Jupyter Notebook",
11 | "creation_date": "2024-11-05T09:03:12.977947Z",
12 | "container_image": "renku/renkulab-py:latest",
13 | "default_url": "/jdbqksdgsahd/bsajhfdjhsdv/jasgdjhf/lab",
14 | "uid": 1000,
15 | "gid": 1000,
16 | "working_directory": "/",
17 | "mount_directory": "",
18 | "port": 8080,
19 | "environment_kind": "GLOBAL"
20 | }
21 | }
22 | ]
23 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/session-launchers-without-env-vars.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "01HYJE99XEKWNKPYN8WRB6QA8Z",
4 | "project_id": "01HYJE5FR1JV4CWFMBFJQFQ4RM",
5 | "name": "Session-custom",
6 | "creation_date": "2024-05-23T09:59:59Z",
7 | "environment": {
8 | "id": "01JBXS0N2RESJP9W7ZWGZV3A2K",
9 | "name": "Session-custom",
10 | "creation_date": "2024-11-05T09:03:12.977947Z",
11 | "container_image": "renku/renkulab-py:latest",
12 | "default_url": "/jdbqksdgsahd/bsajhfdjhsdv/jasgdjhf/lab",
13 | "uid": 1000,
14 | "gid": 1000,
15 | "working_directory": "/",
16 | "mount_directory": "",
17 | "port": 8080,
18 | "environment_kind": "CUSTOM"
19 | },
20 | "resource_class_id": 2,
21 | "env_variables": []
22 | }
23 | ]
24 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/session-launchers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "01HYJE99XEKWNKPYN8WRB6QA8Z",
4 | "project_id": "01HYJE5FR1JV4CWFMBFJQFQ4RM",
5 | "name": "Session-custom",
6 | "creation_date": "2024-05-23T09:59:59Z",
7 | "environment": {
8 | "id": "01JBXS0N2RESJP9W7ZWGZV3A2K",
9 | "name": "Session-custom",
10 | "creation_date": "2024-11-05T09:03:12.977947Z",
11 | "container_image": "renku/renkulab-py:latest",
12 | "default_url": "/jdbqksdgsahd/bsajhfdjhsdv/jasgdjhf/lab",
13 | "uid": 1000,
14 | "gid": 1000,
15 | "working_directory": "/",
16 | "mount_directory": "",
17 | "port": 8080,
18 | "environment_kind": "CUSTOM"
19 | },
20 | "resource_class_id": 2,
21 | "env_variables": [
22 | {
23 | "name": "VAR_1",
24 | "value": "value1"
25 | },
26 | {
27 | "name": "VAR_WITH_LONGER_NAME",
28 | "value": "value2"
29 | }
30 | ]
31 | }
32 | ]
33 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/update-projectV2-metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "THEPROJECTULID26CHARACTERS",
3 | "name": "new name",
4 | "slug": "test-2-v2-project",
5 | "namespace": "user1-uuid",
6 | "creation_date": "2023-11-15T09:55:59Z",
7 | "created_by": "user1-uuid",
8 | "repositories": [
9 | "https://domain.name/repo1.git",
10 | "https://domain.name/repo2.git"
11 | ],
12 | "visibility": "public",
13 | "description": "new description",
14 | "is_template": true,
15 | "secrets_mount_directory": "/secrets"
16 | }
17 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/update-projectV2-one-repository.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "THEPROJECTULID26CHARACTERS",
3 | "name": "test 2 v2-project",
4 | "slug": "test-2-v2-project",
5 | "namespace": "user1-uuid",
6 | "creation_date": "2023-11-15T09:55:59Z",
7 | "created_by": "user1-uuid",
8 | "repositories": ["https://gitlab.dev.renku.ch/url-repo.git"],
9 | "visibility": "public",
10 | "description": "Project 2 description",
11 | "secrets_mount_directory": "/secrets"
12 | }
13 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2/update-projectV2-repositories.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "THEPROJECTULID26CHARACTERS",
3 | "name": "test 2 v2-project",
4 | "slug": "test-2-v2-project",
5 | "namespace": "test-2-group-v2",
6 | "creation_date": "2023-11-15T09:55:59Z",
7 | "created_by": "user1-uuid",
8 | "repositories": [
9 | "https://domain.name/repo1.git",
10 | "https://domain.name/repo2.git",
11 | "https://domain.name/repo3.git"
12 | ],
13 | "visibility": "public",
14 | "description": "Project 2 description",
15 | "secrets_mount_directory": "/secrets"
16 | }
17 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/empty_list.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/patch_secret_slot.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "01JD9W4EGSZD85K3BY8AVPX6KW",
3 | "project_id": "THEPROJECTULID26CHARACTERS",
4 | "name": "A Secret",
5 | "filename": "updated_filename",
6 | "etag": "\"8A40AEE7169CD0910FF1E27FCD35E17E\""
7 | }
8 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/patch_secrets_clear_value.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/patch_secrets_with_new_value.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "secret_slot": {
4 | "id": "01JDHA7JKXAFMTWZRAZVQSSEMT",
5 | "project_id": "THEPROJECTULID26CHARACTERS",
6 | "name": "Another Secret",
7 | "filename": "another_secret",
8 | "etag": "\"19F6A10983905629A64B12B3390587B0\""
9 | },
10 | "secret_id": "01JDHEQNQ8S3E3815EHQZZQ3QC"
11 | }
12 | ]
13 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/patched_secret_slots.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "01JD9W4EGSZD85K3BY8AVPX6KW",
4 | "project_id": "THEPROJECTULID26CHARACTERS",
5 | "name": "A Secret",
6 | "filename": "updated_filename",
7 | "etag": "\"8A40AEE7169CD0910FF1E27FCD35E17E\""
8 | },
9 | {
10 | "id": "01JDHA7JKXAFMTWZRAZVQSSEMT",
11 | "project_id": "THEPROJECTULID26CHARACTERS",
12 | "name": "Another Secret",
13 | "filename": "another_secret",
14 | "etag": "\"19F6A10983905629A64B12B3390587B0\""
15 | }
16 | ]
17 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/patched_secrets_with_cleared_value.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/patched_secrets_with_new_value.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "secret_slot": {
4 | "id": "01JD9W4EGSZD85K3BY8AVPX6KW",
5 | "project_id": "THEPROJECTULID26CHARACTERS",
6 | "name": "A Secret",
7 | "filename": "a_secret",
8 | "etag": "\"EF7B0E9AB61AA4A0A14595FE442EA662\""
9 | },
10 | "secret_id": "01JDHA7RPTKFS71HZG4WEZX3XT"
11 | },
12 | {
13 | "secret_slot": {
14 | "id": "01JDHA7JKXAFMTWZRAZVQSSEMT",
15 | "project_id": "THEPROJECTULID26CHARACTERS",
16 | "name": "Another Secret",
17 | "filename": "another_secret",
18 | "etag": "\"19F6A10983905629A64B12B3390587B0\""
19 | },
20 | "secret_id": "01JDHEQNQ8S3E3815EHQZZQ3QC"
21 | }
22 | ]
23 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/post_secret_slot.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "01JDHBXABJJJ5HKYCV2HDWHV6F",
3 | "project_id": "THEPROJECTULID26CHARACTERS",
4 | "name": "A new secret",
5 | "description": "This is a new secret.",
6 | "filename": "a_new_secret",
7 | "etag": "\"A30E38964CCBA132EDE9D61C55EF4F56\""
8 | }
9 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/secret_slots.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "01JD9W4EGSZD85K3BY8AVPX6KW",
4 | "project_id": "THEPROJECTULID26CHARACTERS",
5 | "name": "A Secret",
6 | "filename": "a_secret",
7 | "etag": "\"EF7B0E9AB61AA4A0A14595FE442EA662\""
8 | },
9 | {
10 | "id": "01JDHA7JKXAFMTWZRAZVQSSEMT",
11 | "project_id": "THEPROJECTULID26CHARACTERS",
12 | "name": "Another Secret",
13 | "filename": "another_secret",
14 | "etag": "\"19F6A10983905629A64B12B3390587B0\""
15 | }
16 | ]
17 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/secret_slots_with_new_slot.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "01JD9W4EGSZD85K3BY8AVPX6KW",
4 | "project_id": "THEPROJECTULID26CHARACTERS",
5 | "name": "A Secret",
6 | "filename": "a_secret",
7 | "etag": "\"EF7B0E9AB61AA4A0A14595FE442EA662\""
8 | },
9 | {
10 | "id": "01JDHA7JKXAFMTWZRAZVQSSEMT",
11 | "project_id": "THEPROJECTULID26CHARACTERS",
12 | "name": "Another Secret",
13 | "filename": "another_secret",
14 | "etag": "\"19F6A10983905629A64B12B3390587B0\""
15 | },
16 | {
17 | "id": "01JDHBXABJJJ5HKYCV2HDWHV6F",
18 | "project_id": "THEPROJECTULID26CHARACTERS",
19 | "name": "A new secret",
20 | "description": "This is a new secret.",
21 | "filename": "a_new_secret",
22 | "etag": "\"A30E38964CCBA132EDE9D61C55EF4F56\""
23 | }
24 | ]
25 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/secrets.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "secret_slot": {
4 | "id": "01JD9W4EGSZD85K3BY8AVPX6KW",
5 | "project_id": "THEPROJECTULID26CHARACTERS",
6 | "name": "A Secret",
7 | "filename": "a_secret",
8 | "etag": "\"EF7B0E9AB61AA4A0A14595FE442EA662\""
9 | },
10 | "secret_id": "01JDHA7RPTKFS71HZG4WEZX3XT"
11 | }
12 | ]
13 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/shortened_secret_slots.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "01JDHA7JKXAFMTWZRAZVQSSEMT",
4 | "project_id": "THEPROJECTULID26CHARACTERS",
5 | "name": "Another Secret",
6 | "filename": "another_secret",
7 | "etag": "\"19F6A10983905629A64B12B3390587B0\""
8 | }
9 | ]
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projectV2SessionSecrets/user_secrets.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "01JDHA7RPTKFS71HZG4WEZX3XT",
4 | "name": "a-secret-wxgu39gu",
5 | "modification_date": "2024-11-25T09:25:26.968394Z",
6 | "kind": "general"
7 | }
8 | ]
9 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projects/cache-project-list.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "projects": [
4 | {
5 | "initialized": true,
6 | "project_id": "fabe2de762e5423a8acf63e4e0cfdb80",
7 | "git_url": "https://dev.renku.ch/gitlab/e2e/testing-datasets.git"
8 | }
9 | ]
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projects/empty-last-visited-projects.json:
--------------------------------------------------------------------------------
1 | {
2 | "projects": []
3 | }
4 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projects/last-visited-projects-5.json:
--------------------------------------------------------------------------------
1 | {
2 | "projects": [
3 | "lorenzo.cavazzi.tech/readme-file-dev",
4 | "e2e/nuevo-project",
5 | "e2e/testing-datasets",
6 | "e2e/local-test-project",
7 | "e2e/local-test-project-2"
8 | ]
9 | }
10 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projects/last-visited-projects.json:
--------------------------------------------------------------------------------
1 | {
2 | "projects": [
3 | "lorenzo.cavazzi.tech/readme-file-dev",
4 | "e2e/nuevo-projecto",
5 | "e2e/testing-datasets",
6 | "e2e/local-test-project"
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projects/namespace-128.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 128,
3 | "web_url": "https://dev.renku.ch/gitlab/groups/internal-space",
4 | "name": "internal-space",
5 | "path": "internal-space",
6 | "description": "",
7 | "visibility": "internal",
8 | "share_with_group_lock": false,
9 | "require_two_factor_authentication": false,
10 | "two_factor_grace_period": 48,
11 | "project_creation_level": "developer",
12 | "auto_devops_enabled": null,
13 | "subgroup_creation_level": "maintainer",
14 | "emails_disabled": null,
15 | "mentions_disabled": null,
16 | "lfs_enabled": true,
17 | "default_branch_protection": 2,
18 | "avatar_url": null,
19 | "request_access_enabled": true,
20 | "full_name": "internal-space",
21 | "full_path": "internal-space",
22 | "created_at": "2022-04-08T12:53:58.197Z",
23 | "parent_id": null,
24 | "shared_with_groups": [],
25 | "runners_token": "EUPMtcaQGntAf6V2sYpR",
26 | "prevent_sharing_groups_outside_hierarchy": false,
27 | "projects": [],
28 | "shared_projects": []
29 | }
30 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projects/namespace-129.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 129,
3 | "web_url": "https://dev.renku.ch/gitlab/groups/private-space",
4 | "name": "private-space",
5 | "path": "private-space",
6 | "description": "",
7 | "visibility": "private",
8 | "share_with_group_lock": false,
9 | "require_two_factor_authentication": false,
10 | "two_factor_grace_period": 48,
11 | "project_creation_level": "developer",
12 | "auto_devops_enabled": null,
13 | "subgroup_creation_level": "maintainer",
14 | "emails_disabled": null,
15 | "mentions_disabled": null,
16 | "lfs_enabled": true,
17 | "default_branch_protection": 2,
18 | "avatar_url": null,
19 | "request_access_enabled": true,
20 | "full_name": "private-space",
21 | "full_path": "private-space",
22 | "created_at": "2022-04-08T12:54:20.028Z",
23 | "parent_id": null,
24 | "shared_with_groups": [],
25 | "runners_token": "nDzA2yWDNxX1PtwZUm5v",
26 | "prevent_sharing_groups_outside_hierarchy": false,
27 | "projects": [],
28 | "shared_projects": []
29 | }
30 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/projects/no-project.json:
--------------------------------------------------------------------------------
1 | { "message": "No project with abc id found" }
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/repositories/repository-metadata-token-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": {
3 | "code": 1401,
4 | "message": "The refresh token for the repository has expired or is invalid."
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/repositories/repository-metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "provider_id": "github.com",
3 | "connection_id": "0100933QTQVNX4R5CC8P177VTC",
4 | "repository_metadata": {
5 | "git_http_url": "https://github.com/renku/url-repo.git",
6 | "web_url": "https://github.com/renku/url-repo",
7 | "permissions": {
8 | "pull": true,
9 | "push": true
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/searchV2/search-response.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "type": "Project",
4 | "id": "0caf4c73-f50d-4514-a041-c9eddb025a36",
5 | "name": "2nd-project",
6 | "slug": "2nd-Xs9GL",
7 | "repositories": ["https://gh/2nd-project"],
8 | "visibility": "public",
9 | "description": "2nd project desc",
10 | "createdBy": { "id": "ee53f3b7-f808-4a81-84f4-8290e874b9a7" },
11 | "creationDate": "2024-02-16T10:14:28.430Z",
12 | "members": [{ "id": "ee53f3b7-f808-4a81-84f4-8290e874b9a7" }]
13 | }
14 | ]
15 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/session/ci-image-missing.json:
--------------------------------------------------------------------------------
1 | {
2 | "message": "404 Tag Not Found"
3 | }
4 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/session/ci-image.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "172a784",
3 | "path": "e2e/local-test-project",
4 | "location": "registry.dev.renku.ch/e2e/local-test-project:172a784",
5 | "revision": "11cd537a06aa934e5a067f6e1d39f97fc49658991a3c46287bc57467fb911111",
6 | "short_revision": "11cd537a0",
7 | "digest": "sha256:11ee14eb835f261ab3c32cc91d2bd41bc3f1ca0070d16c922c73b63f54811111",
8 | "created_at": "2022-03-02T09:36:23.401+00:00",
9 | "total_size": 636111111
10 | }
11 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/session/ci-pipelines.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 182743,
4 | "project_id": 39646,
5 | "sha": "172a784d465a7bd45bacc165df2b64a591ac6b18",
6 | "ref": "master",
7 | "status": "success",
8 | "source": "push",
9 | "created_at": "2022-01-20T14:14:58.405Z",
10 | "updated_at": "2022-01-20T14:16:03.339Z",
11 | "web_url": "https://dev.renku.ch/gitlab/e2e/local-test-project/-/pipelines/182743"
12 | }
13 | ]
14 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/session/ci-registry.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 1,
4 | "name": "",
5 | "path": "e2e/local-test-project",
6 | "project_id": 39646,
7 | "location": "registry.dev.renku.ch/e2e/local-test-project",
8 | "created_at": "2022-03-02T15:27:23.839Z",
9 | "cleanup_policy_started_at": null
10 | }
11 | ]
12 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/session/pipelines.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 182743,
4 | "project_id": 39646,
5 | "sha": "172a784d465a7bd45bacc165df2b64a591ac6b18",
6 | "ref": "master",
7 | "status": "success",
8 | "source": "push",
9 | "created_at": "2022-01-20T14:14:58.405Z",
10 | "updated_at": "2022-01-20T14:16:03.339Z",
11 | "web_url": "https://dev.renku.ch/gitlab/e2e/local-test-project/-/pipelines/182743"
12 | }
13 | ]
14 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/session/renku.ini:
--------------------------------------------------------------------------------
1 | [renku "interactive"]
2 | default_url = /lab
3 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/sessions/cleanLogs.json:
--------------------------------------------------------------------------------
1 | {
2 | "image-download": ""
3 | }
4 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/sessions/empty-sessions.json:
--------------------------------------------------------------------------------
1 | {
2 | "servers": {}
3 | }
4 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/sessions/emptyLogs.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/sessions/environments.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "01HYMSPE2D9K4Q3WAME1NN4244",
4 | "name": "Jupyter Notebook",
5 | "creation_date": "2024-05-24T07:57:53Z",
6 | "container_image": "renku/renkulab-py:latest"
7 | },
8 | {
9 | "id": "01HYMSPZ5TZ4M4D3QNJVQZRMD6",
10 | "name": "PyTorch Data Science",
11 | "creation_date": "2024-05-24T07:58:10Z",
12 | "container_image": "renku/renkulab-py:latest"
13 | }
14 | ]
15 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/sessions/sessionsV2.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "image": "renku/renkulab-py:3.10-0.15.0",
4 | "name": "renku-2-86688c93091df68dffdc594bfd022ce3",
5 | "resources": {
6 | "cpu": 0.1,
7 | "memory": "1G",
8 | "storage": "1G"
9 | },
10 | "started": "2024-04-19T09:44:38+00:00",
11 | "status": {
12 | "state": "running",
13 | "will_hibernate_at": "",
14 | "ready_containers": 3,
15 | "total_containers": 3
16 | },
17 | "url": "https://dev.renku.ch/sessions/renku-2-86688c93091df68dffdc594bfd022ce3",
18 | "project_id": "THEPROJECTULID26CHARACTERS",
19 | "launcher_id": "01HVTVWBGE2P5HSNKRYC2MG8B7",
20 | "resource_class_id": 3
21 | }
22 | ]
23 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/user-preferences/user-preferences-1-pin.json:
--------------------------------------------------------------------------------
1 | {
2 | "user_id": "0945f006-e117-49b7-8966-4c0842146313",
3 | "pinned_projects": {
4 | "project_slugs": ["e2e/nuevo-project"]
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/user-preferences/user-preferences-3-pins.json:
--------------------------------------------------------------------------------
1 | {
2 | "user_id": "0945f006-e117-49b7-8966-4c0842146313",
3 | "pinned_projects": {
4 | "project_slugs": [
5 | "e2e/nuevo-project",
6 | "lorenzo.cavazzi.tech/readme-file-dev",
7 | "e2e/testing-datasets"
8 | ]
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/user-preferences/user-preferences-default.json:
--------------------------------------------------------------------------------
1 | {
2 | "user_id": "0945f006-e117-49b7-8966-4c0842146313",
3 | "pinned_projects": {
4 | "project_slugs": []
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/version-core.json:
--------------------------------------------------------------------------------
1 | {
2 | "result": {
3 | "name": "renku-core",
4 | "versions": [
5 | {
6 | "version": "v2.4.1",
7 | "data": {
8 | "metadata_version": "10"
9 | }
10 | },
11 | {
12 | "version": "v1.11.3",
13 | "data": {
14 | "metadata_version": "9"
15 | }
16 | }
17 | ]
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/version-notebooks.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "renku-notebooks",
3 | "versions": [
4 | {
5 | "data": {
6 | "anonymousSessionsEnabled": true,
7 | "cloudstorageEnabled": true,
8 | "defaultCullingThresholds": {
9 | "registered": {
10 | "idle": 86400,
11 | "hibernation": 259200
12 | },
13 | "anonymous": {
14 | "idle": 1,
15 | "hibernation": 43200
16 | }
17 | },
18 | "sshEnabled": false
19 | },
20 | "version": "1.22.0"
21 | }
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/version-ui.json:
--------------------------------------------------------------------------------
1 | { "ui-short-sha": "b26aa16" }
2 |
--------------------------------------------------------------------------------
/tests/cypress/fixtures/workflows/workflow-show-details-notexists.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": {
3 | "code": 3150,
4 | "userMessage": "The workflow '1234c0e72966478ba61eaad737c6ce8e' could not be found. Check that the name/id is correct and try again.",
5 | "devMessage": "Unexpected error on workflow '1234c0e72966478ba61eaad737c6ce8e', possibly caused by concurrent actions.",
6 | "devReference": "https://renku-python.readthedocs.io/en/latest/service_errors.html#renku.ui.service.errors.IntermittentWorkflowNotFound",
7 | "sentry": "https://sentry.dev.renku.ch/organizations/sentry?query=123474a28e9a4d1b80c37a083f485fdc"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/tests/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "include": ["node_modules/cypress", "cypress/**/*.ts", "cypress*.config.ts"],
3 | "compilerOptions": {
4 | "target": "es5",
5 | "types": ["cypress", "node", "cypress-file-upload"],
6 | "lib": ["es2015", "dom"],
7 | "skipLibCheck": true,
8 | "noEmit": true
9 | }
10 | }
11 |
--------------------------------------------------------------------------------