diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index f6060ca1dd..8b71a5411c 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -37,6 +37,10 @@ jobs: displayName: Cache Yarn packages - script: make install-deps displayName: Install dependencies + - script: make build-npm + displayName: Generate npm package + - script: make build-extensions + displayName: Build bundled extensions - script: make integration-win displayName: Run integration tests - script: make test-extensions @@ -76,6 +80,10 @@ jobs: condition: eq(variables.CACHE_RESTORED, 'true') - script: make install-deps displayName: Install dependencies + - script: make build-npm + displayName: Generate npm package + - script: make build-extensions + displayName: Build bundled extensions - script: make test displayName: Run tests - script: make integration-mac @@ -127,6 +135,10 @@ jobs: displayName: Run In-tree Extension tests - script: make lint displayName: Lint + - script: make build-npm + displayName: Generate npm package + - script: make build-extensions + displayName: Build bundled extensions - script: make test displayName: Run tests - bash: | diff --git a/.github/labeler-config.yml b/.github/labeler-config.yml deleted file mode 100644 index 06aab917bc..0000000000 --- a/.github/labeler-config.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- -area/ui: - - src/renderer/**/* -area/test: - - integration/**/* - - __mocks__/**/* -area/extension: - - extensions/**/* - - src/extensions/**/* -area/documentation: - - README.md - - docs/**/* -area/ci: - - .github/workflows/**/* - - .azure-pipelines.yml -dependencies: - - yarn.lock diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml deleted file mode 100644 index b57d58e567..0000000000 --- a/.github/workflows/labeler.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: "Pull Request Labeler" - -on: - - pull_request - -jobs: - triage: - runs-on: ubuntu-latest - steps: - - uses: actions/labeler@v2 - if: github.repository == 'lensapp/lens' - with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" - configuration-path: .github/labeler-config.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000000..b9b41ddd58 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,49 @@ +name: Publish docs via GitHub Pages +on: + push: + branches: + - master + +jobs: + build: + name: Deploy docs + runs-on: ubuntu-latest + steps: + - name: Set up Python 3.7 + uses: actions/setup-python@v2 + with: + python-version: '3.x' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install git+https://${{ secrets.GH_TOKEN }}@github.com/lensapp/mkdocs-material-insiders.git + pip install mkdocs-git-revision-date-localized-plugin mike + + + - name: Checkout Release from lens + uses: actions/checkout@v2 + with: + repository: lensapp/lens + + - name: git config + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git pull + + + - name: mkdocs deploy latest + run: | + mike deploy --push latest + + + - name: mkdocs deploy new release / tag + if: contains(github.ref, 'refs/tags/v') + run: | + mike deploy --push--update-aliases ${{ github.ref }} latest + mike set-default --push ${{ github.ref }} + + + + diff --git a/README.md b/README.md index b403492e72..21522cf4cb 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,16 @@ Allows for faster separate re-runs of some of the more involved processes: 1. `yarn dev:extension-types` compile declaration types for `@k8slens/extensions` 1. `yarn dev-run` runs app in dev-mode and auto-restart when main process file has changed +## Development (documentation) + +Run a local instance of `mkdocs serve` in a docker container for developing the Lens Documentation. + +> Prerequisites: docker, yarn + +* `yarn mkdocs-serve-local` - local build and serve of mkdocs with auto update enabled + +Go to [localhost:8000](http://127.0.0.1:8000) + ## Developer's ~~RTFM~~ recommended list: - [TypeScript](https://www.typescriptlang.org/docs/home.html) (front-end/back-end) @@ -53,6 +63,8 @@ Allows for faster separate re-runs of some of the more involved processes: - [ElectronJS](https://www.electronjs.org/docs) (chrome/node) - [NodeJS](https://nodejs.org/dist/latest-v12.x/docs/api/) (api docs) + + ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/lensapp/lens. \ No newline at end of file diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000000..12bc650410 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +docs.k8slens.dev diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000..f8a979fb90 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,21 @@ +# Overview + +Lens is the most powerful Kubernetes IDE on the market. It is a standalone application, and it is available on macOS, Windows, and Linux. Some of the benefits of using Lens include: + +* Confidence that your clusters are properly setup and configured. +* Increased visibility, real time statistics, log streams, and hands-on troubleshooting capabilities. +* The ability to work with your clusters quickly and easily, radically improving productivity and the speed of business. + +Watch this introductory video to see Lens in action: + +[![Screenshot](img/lens-intro-video-screenshot.png)](https://youtu.be/04v2ODsmtIs) + +**Note:** Use CTRL+click (on Windows and Linux) or CMD+click (on MacOS) to open the above in a new tab + +## Downloading Lens + +[Download Lens](https://github.com/lensapp/lens/releases) for macOS, Windows, or Linux. + +## Quick Start + +Get up and running quickly by learning to [add clusters](clusters/adding-clusters.md). diff --git a/docs/clusters/adding-clusters.md b/docs/clusters/adding-clusters.md new file mode 100644 index 0000000000..a89afb2f25 --- /dev/null +++ b/docs/clusters/adding-clusters.md @@ -0,0 +1,16 @@ +# Adding clusters + +Add clusters by clicking the **Add Cluster** button in the left-side menu. + +1. Click the **Add Cluster** button (indicated with a '+' icon). +2. Enter the path to your kubeconfig file. You'll need to have a kubeconfig file for the cluster you want to add. You can either browse for the path from the file system or or enter it directly. + +Selected [cluster contexts](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/#context) are added as a separate item in the left-side cluster menu to allow you to operate easily on multiple clusters and/or contexts. + +**NOTE**: Any cluster that you added manually will not be merged into your kubeconfig file. + +![Add Cluster](images/add-cluster.png) + +For more information on kubeconfig see [Kubernetes docs](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/). + +To see your currently-enabled config with `kubectl`, enter `kubectl config view --minify --raw` in your terminal. \ No newline at end of file diff --git a/docs/clusters/images/add-cluster.png b/docs/clusters/images/add-cluster.png new file mode 100644 index 0000000000..b53c09f704 Binary files /dev/null and b/docs/clusters/images/add-cluster.png differ diff --git a/docs/clusters/images/cluster-context-menu.png b/docs/clusters/images/cluster-context-menu.png new file mode 100644 index 0000000000..d733840df3 Binary files /dev/null and b/docs/clusters/images/cluster-context-menu.png differ diff --git a/docs/clusters/images/cluster-settings-features.png b/docs/clusters/images/cluster-settings-features.png new file mode 100644 index 0000000000..3a8066309d Binary files /dev/null and b/docs/clusters/images/cluster-settings-features.png differ diff --git a/docs/clusters/images/cluster-settings-general.png b/docs/clusters/images/cluster-settings-general.png new file mode 100644 index 0000000000..d7de0a1a35 Binary files /dev/null and b/docs/clusters/images/cluster-settings-general.png differ diff --git a/docs/clusters/images/cluster-settings-removal.png b/docs/clusters/images/cluster-settings-removal.png new file mode 100644 index 0000000000..badcbcc6e0 Binary files /dev/null and b/docs/clusters/images/cluster-settings-removal.png differ diff --git a/docs/clusters/images/cluster-settings-status.png b/docs/clusters/images/cluster-settings-status.png new file mode 100644 index 0000000000..af8e939e35 Binary files /dev/null and b/docs/clusters/images/cluster-settings-status.png differ diff --git a/docs/clusters/images/cluster-settings.png b/docs/clusters/images/cluster-settings.png new file mode 100644 index 0000000000..27a4a72ff9 Binary files /dev/null and b/docs/clusters/images/cluster-settings.png differ diff --git a/docs/clusters/images/remove-cluster.png b/docs/clusters/images/remove-cluster.png new file mode 100644 index 0000000000..bcaa69c44a Binary files /dev/null and b/docs/clusters/images/remove-cluster.png differ diff --git a/docs/clusters/removing-clusters.md b/docs/clusters/removing-clusters.md new file mode 100644 index 0000000000..ab6205a960 --- /dev/null +++ b/docs/clusters/removing-clusters.md @@ -0,0 +1,12 @@ +# Removing clusters + +Remove Lens clusters using the context menu that appears when you right-click the cluster in the left-side menu that you want to remove. + +To remove a cluster from your cluster list: + +1. Right-click the name of the cluster in the left-side menu that you want to remove. +2. Click **Remove**. + +**NOTE**: This will only remove the cluster from your Lens cluster list. It will not affect your actual Kubernetes cluster or its configuration. + +![Remove Cluster](images/remove-cluster.png) \ No newline at end of file diff --git a/docs/clusters/settings.md b/docs/clusters/settings.md new file mode 100644 index 0000000000..351c0babeb --- /dev/null +++ b/docs/clusters/settings.md @@ -0,0 +1,75 @@ +# Settings + +It is easy to configure Lens Clusters to your liking through its various settings. + +1. Right-click the name of the cluster in the left-side menu that you want to open the settings for. +2. Click **Settings**. + +![Cluster settings](images/cluster-context-menu.png) + +## Status + +Overview of the cluster status + +### Cluster Status + +Cluster status information including the detected distribution, kernel version, API endpoint, and online status + +![Cluster settings status](images/cluster-settings-status.png) + +## General + +General cluster settings + +### Cluster Name + +The cluster name is inheritated by default from the kubeconfig file. Change the cluster name to another value by updating it here. Note that doing so does not update your kubeconfig file. + +### Workspace + +This is the Lens workspace that the cluster is associated with. Change workspaces by selecting a different workspace from the dropdown menu. Create a new workspace by clicking **workspace** in "Define cluster workspace" above the dropdown menu. This option will take you the workspaces editor. Create a new workspace and then navigate back to cluster settings. + +### Cluster Icon + +Lens randomly generates an icon to associate with each newly-created cluster. Use this setting to choose your own icon. + +### HTTP Proxy + +Some users will need to define an HTTP proxy for communicating with the Kubernetes API. Use this setting to do so. + +### Prometheus + +Lens can be configured to query a Prometheus server installed in the cluster. Select a query format by choosing either to auto-detect or from the following configurations: + +* Lens +* Helm Operator +* Prometheus Operator +* Stacklight + +To learn more about custom Prometheus configurations, please refer to this [guide](https://github.com/lensapp/lens/blob/master/troubleshooting/custom-prometheus.md). + +### Working Directory + +Use this field to set the terminal working directory. The default is `$HOME`. + +![Cluster settings general](images/cluster-settings-general.png) + +## Features + +Additional Lens features that can be installed by the user + +### Metrics + +Enable timeseries data visualization (Prometheus stack) for your cluster. Install this only if you don't have existing Prometheus stack installed. + +### User Mode + +User Mode feature enables non-admin users to see namespaces they have access to. This is achieved by configuring RBAC rules so that every authenticated user is granted to list namespaces. + +![Cluster settings features](images/cluster-settings-features.png) + +## Removal + +Use this setting to remove the current cluster. + +![Cluster settings removal](images/cluster-settings-removal.png) diff --git a/docs/contributing/README.md b/docs/contributing/README.md new file mode 100644 index 0000000000..13a6ca8c05 --- /dev/null +++ b/docs/contributing/README.md @@ -0,0 +1,17 @@ +# Contributing + +There are multiple ways you can contribute to Lens - even if you are not a developer, you can still contribute. We are always looking for assistance with creating or updating documentation, testing the application, reporting and troubleshooting issues. + +Here are some ideas how you can contribute! + +* [Development](./development.md) – Help making Lens better. +* [Maintaining the Project](./maintainers.md) – Become community maintainer and help us maintain the project. +* [Extension Development](../extensions) – Add integrations via Lens Extensions. +* [Documentation](./documentation.md) – Help improve Lens documentation. +* [Promotion](./promotion.md) – Show your support, be an ambassador to Lens, write blogs and make videos! + +If you are an influencer, blogger or journalist, feel free to [spread the word](./promotion.md)! + +## Code of Conduct + +This project adheres to the [Contributor Covenant](https://www.contributor-covenant.org/) code of conduct. By participating and contributing to Lens, you are expected to uphold this code. Please report unacceptable behaviour to info@k8slens.dev diff --git a/docs/contributing/development.md b/docs/contributing/development.md new file mode 100644 index 0000000000..8e5633cda9 --- /dev/null +++ b/docs/contributing/development.md @@ -0,0 +1,3 @@ +# Development + +TBD diff --git a/docs/contributing/documentation.md b/docs/contributing/documentation.md new file mode 100644 index 0000000000..00b9f9550e --- /dev/null +++ b/docs/contributing/documentation.md @@ -0,0 +1,22 @@ +# Documentation + +We are glad to see you are interested in contributing to Lens documentation. If this is the first Open Source project you will contribute to, we strongly suggest reading GitHub's excellent guide: [How to Contribute to Open Source](https://opensource.guide/how-to-contribute). + +## Finding Documentation Issues to Work On + +You can find a list of open documentation related issues [here](https://github.com/lensapp/lens/issues?q=is%3Aopen+is%3Aissue+label%3Aarea%2Fdocumentation). When you find something you would like to work on: + +1. Express your interest to start working on an issue via comments. +2. One of the maintainers will assign the issue for you. +3. You can start working on the issue. Once done, simply submit a pull request. + +## Requirements for Documentation Pull Requests + +When you create a new pull request, we expect some requirements to be met. + +* Follow this naming convention for Pull Requests: + * When adding new documentation, add `New Documentation:` before the title. E.g. `New Documentation: Getting Started` + * When fixing documentation, add `Fix Documentation:` before the title. E.g. `Fix Documentation: Getting Started` + * When updating documentation, add `Update Documentation:` before the title. E.g. `Update Documentation: Getting Started` +* If your Pull Request closes an issue you need to write `Closes #ISSUE_NUMBER` where the ISSUE_NUMBER is the number in the end of the link url that will link your pull request to the issue, when merged will close that issue. +* For each pull request made, we run tests to check if there are any broken links, the markdown formatting is valid and the linter is passing. diff --git a/docs/contributing/maintainers.md b/docs/contributing/maintainers.md new file mode 100644 index 0000000000..a73918b272 --- /dev/null +++ b/docs/contributing/maintainers.md @@ -0,0 +1,17 @@ +# Maintainers + +We are looking for community maintainers for the Lens project. Maintainers will be added to a special team with write permissions. These permissions consist of opening, closing, tagging and editing issues, and pull requests, as well as create and delete non protected branches. + +The responsibilities of a community maintainer are listed below. + +## Issues Triage + +* **Labeling Issues:** Label issues accordingly. +* **Finding Duplicates:** Finding and closing duplicate issues. +* **Doing First Level Contact:** Getting more information on the issues (like version number or asking for clarification) if needed. +* **Closing Irrelevant Issues:** Closing issues that are determined irrelevant, no longer needed, not relevant to the project and/or doesn't follow the issues guidelines. + +## Help with Contributions + +* **Help Manage Pull Requests:** Help the author of the pull request with any problems. +* **Contributing:** Create pull requests to help maintain and drive the project forward. diff --git a/docs/contributing/promotion.md b/docs/contributing/promotion.md new file mode 100644 index 0000000000..34d68231bd --- /dev/null +++ b/docs/contributing/promotion.md @@ -0,0 +1,27 @@ +# Promoting + +Help promote Lens! If you are not a developer (or even if you are), you can still contribute to the project, a lot, by helping us promote it. As we are a free open source project, the community is our most important asset, so here are some ways that you can help the project continue to grow. + +## Follow, Like, Recommend, Favorite, Vote and Star Us + +There are many sites where you can vote, recommend, favorite and star us. + +* [Twitter](https://twitter.com/k8slens) - Like, comment and retweet our posts, and follow us on Twitter +* [Medium](https://medium.com/k8slens) - Give claps to our articles and follow us on Medium +* [GitHub](https://github.com/lensapp/lens) - Become a stargazer on GitHub +* [StackShare](https://stackshare.io/lens) - Indicate you are using Lens and follow us on StackShare +* [Reddit](https://www.reddit.com/search/?q=lens%20kubernetes&sort=new) - Upvote and be an ambassador of Lens by participating relevant discussions on Reddit +* [Hacker News](https://hn.algolia.com/?dateRange=all&page=0&prefix=false&query=lens%20kubernetes&sort=byDate&type=story) - Upvote and be an ambassador of Lens by participating relevant discussions on Hacker News + +## Write Blogs or Make Videos About Us + +Here are some nice blog posts and videos about our project for you to get some inspiration: + +* [Onboard AWS EKS Cluster on Lens(Kubernetes IDE)](https://dev.to/himwad05/onboard-aws-eks-cluster-on-lens-kubernetes-ide-492l) +* [Using Lens to Manage All Your Kubernetes Cluster](https://medium.com/@magicmagnate/using-lens-to-manage-all-your-kubernetes-cluster-c1ef88fdb476) +* [Kontena Lens - Beautiful Kubernetes UI](https://www.youtube.com/watch?v=YGgaiGdYfdI) +* [Gerenciando Kubernetes com Lens e Octant](https://www.youtube.com/watch?v=h9ZqDelJLQQ) +* [Walkthrough of Kubernetes IDE - Lens](https://www.youtube.com/watch?v=602aHZSdEfY) +* [LENS - Interfaz Gráfica para Kubernetes en 1 PASO.](https://www.youtube.com/watch?v=DFMKcR4BqwM) + +Psst... If you have created some content around Lens, let us know! diff --git a/docs/custom_theme/img/favicon.ico b/docs/custom_theme/img/favicon.ico new file mode 100644 index 0000000000..19b2de71d1 Binary files /dev/null and b/docs/custom_theme/img/favicon.ico differ diff --git a/docs/custom_theme/main.html b/docs/custom_theme/main.html new file mode 100644 index 0000000000..b6ad2467dd --- /dev/null +++ b/docs/custom_theme/main.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} + +{% block analytics %} + + + +{% endblock %} \ No newline at end of file diff --git a/docs/extensions/README.md b/docs/extensions/README.md new file mode 100644 index 0000000000..4a118bd4d3 --- /dev/null +++ b/docs/extensions/README.md @@ -0,0 +1,48 @@ +# Lens Extension API + +The Extensions API in Lens allows users to customize and enhance the Lens experience by creating their own menus or page content that is extended from the existing pages. Many of the core features of Lens are built as extensions and use the same Extension API. + +This documentation describes: + +* How to build, run, test and publish an extension +* How to take advantage of Lens's Extension API +* Where to find [guides](guides/overview.md) and [code samples](https://github.com/lensapp/lens-extension-samples) to help get you started + +Code samples are available at [lensapp/lens-extension-samples](https://github.com/lensapp/lens-extension-samples). + +## What can extensions do + +Here are some examples of what you can achieve with the Extension API: + +* Add custom components & views in the UI - Extending the Lens Workbench + +If you'd like to have a more comprehensive overview of the Extension API, refer to the [Extension Capabilities Overview](capabilities/overview.md) page. [Extension Guides Overview](guides/overview.md) also includes a list of code samples and guides that illustrate various Extension API usage. + +## How to build extensions + +Building a good extension can take a lot of effort. Here is what each section of the API doc can help you with: + +* **Get Started** teaches fundamental concepts for building extensions with the Hello World sample. +* **Extension Capabilities** dissects Lens's Extension API into smaller categories and points you to more detailed topics. +* **Extension Guides** includes guides and code samples that explain specific usages of Lens Extension API. +* **Testing and Publishing** includes in-depth guides on various extension development topics, such as testing and publishing extensions. +* **Advanced Topics** explains advanced concepts such as integrating with 3rd party applications/services. +* **References** contains exhaustive references for the Lens Extension API, Contribution Points, and many other topics. + +## What's new + +Lens updates on a monthly cadence, and that applies to the Extension API as well. New features and APIs become available every month to increase the power and scope of Lens extensions. + +To stay current with the Extension API and Lens features in general, you can review the [release notes](https://github.com/lensapp/lens/releases). + +## Looking for help + +If you have questions for extension development, try asking on: + +* [Lens Dev Slack](http://k8slens.slack.com/): Public chatroom for Lens developers. Some Lens team members chime in on conversations. + +To provide feedback on the documentation or issues with the Lens Extension API, create new issues at [lensapp/lens](https://github.com/lensapp/lens/issues) with the labels `area/documentation` and/or `area/extension`. + +## Download Lens - The Kubernetes IDE + +Go to [Lens](https://k8slens.dev) diff --git a/docs/extensions/api/README.md b/docs/extensions/api/README.md new file mode 100644 index 0000000000..e751aa7a19 --- /dev/null +++ b/docs/extensions/api/README.md @@ -0,0 +1,3 @@ +# Lens Extension API Reference + +TBD diff --git a/docs/extensions/capabilities/README.md b/docs/extensions/capabilities/README.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/extensions/capabilities/color-reference.md b/docs/extensions/capabilities/color-reference.md new file mode 100644 index 0000000000..d9fe0c70ec --- /dev/null +++ b/docs/extensions/capabilities/color-reference.md @@ -0,0 +1,130 @@ +# Theme color reference +You can use CSS variables generated from theme `.json` files to style an extension with respect of active theme. + +## Base colors +- `blue`: blue color. +- `magenta`: magenta color. +- `golden`: gold/yellow color. +- `halfGray`: gray with some apacity applied. +- `primary`: Lens brand (blue) color. +- `colorSuccess`: successfull operations color. +- `colorOk`: successfull operations (bright version) color. +- `colorInfo`: informational, in-progress color. +- `colorError`: critical error color. +- `colorSoftError`: error color. +- `colorWarning`: warning color. +- `colorVague`: soft gray color for notices, hints etc. +- `colorTerminated`: terminated, closed, stale color. +- `boxShadow`: semi-transparent box-shadow color. + +## Text colors +- `textColorPrimary`: foreground text color. +- `textColorSecondary`: foreground text color for different paragraps, parts of text. +- `textColorAccent`: foreground text color to highlight its parts. + +## Border colors +- `borderColor`: border color. +- `borderFaintColor`: fainted (lighter or darker, which depends on the theme) border color. + +## Layout colors +- `mainBackground`: main background color for the app. +- `contentColor`: background color for panels contains some data. +- `layoutBackground`: background color for layout parts. +- `layoutTabsBackground`: background color for general tabs. +- `layoutTabsActiveColor`: foreground color for general tabs. +- `layoutTabsLineColor`: background color for lines under general tabs. + +## Sidebar colors +- `sidebarLogoBackground`: background color behind logo in sidebar. +- `sidebarActiveColor`: foreground color for active menu items in sidebar. +- `sidebarSubmenuActiveColor`: foreground color for active submenu items in sidebar. +- `sidebarBackground`: background color for sidebar. + +## Button colors +- `buttonPrimaryBackground`: button background color for primary actions. +- `buttonDefaultBackground`: default button background color. +- `buttonAccentBackground`: accent button background color. +- `buttonDisabledBackground`: disabled button background color. + +## Table colors +- `tableBgcStripe`: background color for odd rows in table. +- `tableBgcSelected`: background color for selected row in table. +- `tableHeaderBackground`: background color for table header. +- `tableHeaderBorderWidth`: border width under table header. +- `tableHeaderBorderColor`: border color for line under table header. +- `tableHeaderColor`: foreground color for table header. +- `tableSelectedRowColor`: foreground color for selected row in table. + +## Dock colors +- `dockHeadBackground`: background color for dock's header. +- `dockInfoBackground`: background color for dock's info panel. +- `dockInfoBorderColor`: border color for dock's info panel. + +## Helm chart colors +- `helmLogoBackground`: background color for chart logo. +- `helmImgBackground`: background color for chart image. +- `helmStableRepo`: background color for stable repo. +- `helmIncubatorRepo`: background color for incubator repo. +- `helmDescriptionHr`: Helm chart description separator line color. +- `helmDescriptionBlockqouteColor`: Helm chart description blockquote color. +- `helmDescriptionBlockqouteBorder`: Helm chart description blockquote border color. +- `helmDescriptionBlockquoteBackground`: Helm chart description blockquote background color. +- `helmDescriptionHeaders`: Helm chart description headers color. +- `helmDescriptionH6`: Helm chart description header foreground color. +- `helmDescriptionTdBorder`: Helm chart description table cell border color. +- `helmDescriptionTrBackground`: Helm chart description table row background color. +- `helmDescriptionCodeBackground`: Helm chart description code background color. +- `helmDescriptionPreBackground`: Helm chart description pre background color. +- `helmDescriptionPreColor`: Helm chart description pre foreground color. + +## Terminal colors +- `terminalBackground`: Terminal background color. +- `terminalForeground`: Terminal foreground color. +- `terminalCursor`: Terminal cursor color. +- `terminalCursorAccent`: Terminal cursor accent color. +- `terminalSelection`: Terminal selection background color. +- `terminalBlack`: Terminal black color. +- `terminalRed`: Terminal red color. +- `terminalGreen`: Terminal green color. +- `terminalYellow`: Terminal yellow color. +- `terminalBlue`: Terminal blue color. +- `terminalMagenta`: Terminal magenta color. +- `terminalCyan`: Terminal cyan color. +- `terminalWhite`: Terminal white color. +- `terminalBrightBlack`: Terminal bright black color. +- `terminalBrightRed`: Terminal bright red color. +- `terminalBrightGreen`: Terminal bright green color. +- `terminalBrightYellow`: Terminal bright yellow color. +- `terminalBrightBlue`: Terminal bright blue color. +- `terminalBrightMagenta`: Terminal bright magenta color. +- `terminalBrightCyan`: Terminal bright cyan color. +- `terminalBrightWhite`: Terminal bright white color. + +## Dialog colors +- `dialogHeaderBackground`: background color for dialog header. +- `dialogFooterBackground`: background color for dialog footer. + +## Detail panel (Drawer) colors +- `drawerTitleText`: drawer title foreground color. +- `drawerSubtitleBackground`: drawer subtitle foreground color. +- `drawerItemNameColor`: foreground color for item name in drawer. +- `drawerItemValueColor`: foreground color for item value in drawer. + +## Misc colors +- `logsBackground`: background color for pod logs. +- `clusterMenuBackground`: background color for cluster menu. +- `clusterMenuBorderColor`: border color for cluster menu. +- `clusterSettingsBackground`: background color for cluster settings. +- `addClusterIconColor`: add cluster button background color. +- `iconActiveColor`: active cluster icon foreground color. +- `iconActiveBackground`: active cluster icon background color. +- `filterAreaBackground`: page filter area (where selected namespaces are lister) background color. +- `chartStripesColor`: bar chart zebra stripes background color. +- `chartCapacityColor`: background color for capacity values in bar charts. +- `pieChartDefaultColor`: default background color for pie chart values. +- `selectOptionHoveredColor`: foregrond color for selected element in dropdown list. +- `lineProgressBackground`: background color for progress line. +- `radioActiveBackground`: background color for active radio buttons. +- `menuActiveBackground`: background color for active menu items. + +In most cases you would only need base, text and some of the layout colors. \ No newline at end of file diff --git a/docs/extensions/capabilities/common-capabilities.md b/docs/extensions/capabilities/common-capabilities.md new file mode 100644 index 0000000000..ee8745df08 --- /dev/null +++ b/docs/extensions/capabilities/common-capabilities.md @@ -0,0 +1,258 @@ +# Common Capabilities + +Common Capabilities are important building blocks for your extensions. Almost all extensions use some of these functionalities. Here is how you can take advantage of them. + +## Main Extension + +A main extension runs in the background and, apart from app menu items, does not add content to the Lens UI. If you want to see logs from this extension you need to start Lens from the command line. + +### Activate + +An extension can register a custom callback that is executed when an extension is activated (started). + +``` javascript +import { LensMainExtension } from "@k8slens/extensions" + +export default class ExampleMainExtension extends LensMainExtension { + async onActivate() { + console.log("hello world") + } +} +``` + +### Deactivate + +An extension can register a custom callback that is executed when an extension is deactivated (stopped). + +``` javascript +import { LensMainExtension } from "@k8slens/extensions" + +export default class ExampleMainExtension extends LensMainExtension { + async onDeactivate() { + console.log("bye bye") + } +} +``` + +### App Menus + +An extension can register custom App menus that will be displayed on OS native menus. + +Example: + +``` typescript +import { LensMainExtension, windowManager } from "@k8slens/extensions" + +export default class ExampleMainExtension extends LensMainExtension { + appMenus = [ + { + parentId: "help", + label: "Example item", + click() { + windowManager.navigate("https://k8slens.dev"); + } + } + ] +} +``` + +## Renderer Extension + +A renderer extension runs in a browser context and it's visible directly via Lens main window. If you want to see logs from this extension you need to check them via View -> Toggle Developer Tools -> Console. + +### Activate + +An extension can register a custom callback that is executed when an extension is activated (started). + +``` javascript +import { LensRendererExtension } from "@k8slens/extensions" + +export default class ExampleExtension extends LensRendererExtension { + async onActivate() { + console.log("hello world") + } +} +``` + +### Deactivate + +An extension can register a custom callback that is executed when an extension is deactivated (stopped). + +``` javascript +import { LensRendererExtension } from "@k8slens/extensions" + +export default class ExampleMainExtension extends LensRendererExtension { + async onDeactivate() { + console.log("bye bye") + } +} +``` + +### Global Pages + +An extension can register custom global pages (views) to Lens main window. Global page is a full screen page that hides all the other content from a window. + +``` typescript +import React from "react" +import { Component, LensRendererExtension } from "@k8slens/extensions" +import { ExamplePage } from "./src/example-page" + +export default class ExampleRendererExtension extends LensRendererExtension { + globalPages = [ + { + path: "/example-route", + hideInMenu: true, + components: { + Page: ExamplePage, + } + } + ] +} +``` + +### App Preferences + +An extension can register custom app preferences. An extension is responsible for storing a state for custom preferences. + +``` typescript +import React from "react" +import { LensRendererExtension } from "@k8slens/extensions" +import { myCustomPreferencesStore } from "./src/my-custom-preferences-store" +import { MyCustomPreferenceHint, MyCustomPreferenceInput } from "./src/my-custom-preference" + + +export default class ExampleRendererExtension extends LensRendererExtension { + appPreferences = [ + { + title: "My Custom Preference", + components: { + Hint: () => , + Input: () => + } + } + ] +} +``` + +### Cluster Pages + +An extension can register custom cluster pages which are visible in a cluster menu when a cluster is opened. + +``` typescript +import React from "react" +import { LensRendererExtension } from "@k8slens/extensions"; +import { ExampleIcon, ExamplePage } from "./src/page" + +export default class ExampleExtension extends LensRendererExtension { + clusterPages = [ + { + path: "/extension-example", + title: "Example Extension", + components: { + Page: () => , + MenuIcon: ExampleIcon, + } + } + ] +} + +``` + +### Cluster Features + +An extension can register installable features for a cluster. A cluster feature is visible in "Cluster Settings" page. + +``` typescript +import React from "react" +import { LensRendererExtension } from "@k8slens/extensions" +import { MyCustomFeature } from "./src/my-custom-feature" + +export default class ExampleExtension extends LensRendererExtension { + clusterFeatures = [ + { + title: "My Custom Feature", + components: { + Description: () => { + return ( + + Just an example. + + ) + } + }, + feature: new MyCustomFeature() + } + ] +} + +``` + +### Status Bar Items + +An extension can register custom icons/texts to a status bar area. + +``` typescript +import React from "react"; +import { Component, LensRendererExtension, Navigation } from "@k8slens/extensions"; + +export default class ExampleExtension extends LensRendererExtension { + statusBarItems = [ + { + item: ( +
Navigation.navigate("/example-page")} + > + +
+ ) + } + ] +} + +``` + +### Kubernetes Object Menu Items + +An extension can register custom menu items (actions) for specified Kubernetes kinds/apiVersions. + +``` typescript +import React from "react" +import { LensRendererExtension } from "@k8slens/extensions"; +import { CustomMenuItem, CustomMenuItemProps } from "./src/custom-menu-item" + +export default class ExampleExtension extends LensRendererExtension { + kubeObjectMenuItems = [ + { + kind: "Node", + apiVersions: ["v1"], + components: { + MenuItem: (props: CustomMenuItemProps) => + } + } + ] +} + +``` + +### Kubernetes Object Details + +An extension can register custom details (content) for specified Kubernetes kinds/apiVersions. + +``` typescript +import React from "react" +import { LensRendererExtension } from "@k8slens/extensions"; +import { CustomKindDetails, CustomKindDetailsProps } from "./src/custom-kind-details" + +export default class ExampleExtension extends LensRendererExtension { + kubeObjectMenuItems = [ + { + kind: "CustomKind", + apiVersions: ["custom.acme.org/v1"], + components: { + Details: (props: CustomKindDetailsProps) => + } + } + ] +} +``` diff --git a/docs/extensions/capabilities/images/css-vars-in-devtools.png b/docs/extensions/capabilities/images/css-vars-in-devtools.png new file mode 100644 index 0000000000..a9df97e6bb Binary files /dev/null and b/docs/extensions/capabilities/images/css-vars-in-devtools.png differ diff --git a/docs/extensions/capabilities/images/theme-selector.png b/docs/extensions/capabilities/images/theme-selector.png new file mode 100644 index 0000000000..5c2eba3165 Binary files /dev/null and b/docs/extensions/capabilities/images/theme-selector.png differ diff --git a/docs/extensions/capabilities/styling.md b/docs/extensions/capabilities/styling.md new file mode 100644 index 0000000000..c95673540c --- /dev/null +++ b/docs/extensions/capabilities/styling.md @@ -0,0 +1,99 @@ +# Styling an extension +Lens provides a set of global styles and UI components that can be used by any extension to preserve look and feel of the application. + +## Styling approach +Lens heavily uses SCSS preprocessor with a set of predefined variables and mixins. + +For layout tasks Lens is using [flex.box](https://www.npmjs.com/package/flex.box) library which provides helpful class names to specify some of the [flexbox](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox) properties. For example, `div` with class names: +``` +
+``` +at the end will have following css properties: +``` +div { + display: flex; + flex-direction: column; + align-items: center; +} +``` + +However, feel free to use any styling technique or framework like [Emotion](https://github.com/emotion-js/emotion) or just plain CSS if you prefer. + +## Themes +Lens using 2 built-in themes located in `src/renderer/themes` folder each for light and dark color schemes. Active theme can be changed in the `Preferences` page. +![Color Theme](images/theme-selector.png) + +When Lens gets loaded it transforms selected theme `json` file into list of [CSS Custom Properties (CSS Variables)](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) which then gets injected into `:root` element so any of the down-level components can use them. +![CSS vars listed in devtools](images/css-vars-in-devtools.png) + +When user changes a theme, the process is repeated, new css variables appear instead of previous ones. + +If you want to follow a selected theme to keep the 'native' Lens look and feel, respecting the light/dark appearance of your extension, you can use provided variables and build-in lens components such as buttons, dropdowns, checkboxes etc. + +## Injected styles +Every extention is affected by list of default global styles defined in `src/renderer/components/app.scss`. These are basic browser resets like setting `box-sizing` property for every element, default text and background colors, default font size, basic headings visualisation etc. + +Extension may overwrite them if needed. + +## Variables to use +### Basic styling +There is a list of CSS Variables available for extension to use. Basic variables located inside `:root` selected in `src/renderer/components/app.scss`: +``` + --unit: 8px; + --padding: var(--unit); + --margin: var(--unit); + --border-radius: 3px; + --font-main: 'Roboto', 'Helvetica', 'Arial', sans-serif; + --font-monospace: Lucida Console, Monaco, Consolas, monospace; + --font-size-small: calc(1.5 * var(--unit)); + --font-size: calc(1.75 * var(--unit)); + --font-size-big: calc(2 * var(--unit)); + --font-weight-thin: 300; + --font-weight-normal: 400; + --font-weight-bold: 500; +``` + +They're intended to set consistent paddings and font-sizes across components, e.g. +``` +.status { + padding-left: calc(var(--padding) * 2); + font-size: var(--font-size-small); +} +``` + +### Themable colors +After theme file gets parsed it provides list of theme-defined colors. Most of their values are different for light and dark themes. You can use them to preserve consitent view of extension with respect of selected theme. +``` + "blue": "#3d90ce", + "magenta": "#c93dce", + "golden": "#ffc63d", + "halfGray": "#87909c80", + "primary": "#3d90ce", + "textColorPrimary": "#555555", + "textColorSecondary": "#51575d", + "textColorAccent": "#333333", + "borderColor": "#c9cfd3", + "borderFaintColor": "#dfdfdf", + "mainBackground": "#f1f1f1", + "contentColor": "#ffffff", + "layoutBackground": "#e8e8e8", + "layoutTabsBackground": "#f8f8f8", + "layoutTabsActiveColor": "#333333", + "layoutTabsLineColor": "#87909c80" + ... +... +``` + +They can be used in form of `var(--magenta)`. + +A complete list of all themable colors can be found in the [color reference](../color-reference). + +Colors values are located inside `src/renderer/themes/lens-dark.json` and `src/renderer/themes/lens-light.json` files. + +## Using CSS Variables inside CSS-in-JS components +If a developer uses an `Emotion` (or similar) framework to work with styles inside an extension, they can use variables in the following form: +``` +const Container = styled.div(() => ({ + backgroundColor: 'var(--mainBackground)' +})); +``` \ No newline at end of file diff --git a/docs/extensions/get-started/anatomy.md b/docs/extensions/get-started/anatomy.md new file mode 100644 index 0000000000..523c6b9781 --- /dev/null +++ b/docs/extensions/get-started/anatomy.md @@ -0,0 +1,98 @@ +# Extension Anatomy + +You've now learnt how to get basic extension running. In this topic you will learn some fundamental concepts to Lens Extension development; How does it work under the hood? + +`Hello World` extension does three things: + +- Hooks on `onActivate()` and ouputs message into console. +- Hooks on `onDectivate()` and ouputs message into console. +- Registers `ClusterPage` so that page is visible in the sidebars of cluster dashboards. + +Let's take a closer look at Hello World sample's source code and see how to achieve these things. + +## Extension File Structure + +``` +. +├── .gitignore // Ignore build output and node_modules +├── Makefile // Config for build tasks that compiles the extension +├── README.md // Readable description of your extension's functionality +├── src +│ └── page.tsx // Extension's additional source code +├── main.ts // Source code for extension's main entrypoint +├── package.json // Extension manifest and dependencies +├── renderer.tsx // Source code for extension's renderer entrypoint +├── tsconfig.json // TypeScript configuration +├── webpack.config.js // Webpack configuration +``` + +Extension directory contains extension's entry files and few configuration files. Let's focus on `package.json`, `main.ts` and `renderer.tsx` which are essential to understanding the `Hello World` extension. + +### Extension Manifest + +Each Lens extension must have `package.json`. The `package.json` contains a mix of Node.js fields such as scripts and dependencies and Lens specific fields such as `publisher` and `contributes`. Here are some most important fields: + +- `name` and `publisher`: Lens uses `@/` as a unique ID for the extension. For example, the Hello World sample has the ID `@lensapp-samples/helloworld-sample`. Lens uses the ID to uniquely identify your extension +- `main`: The extension's entry point run in `main` process. +- `renderer`: The extension's entry point run in `renderer` process. +- `engines.lens`: This specifies the minimum version of Lens API that the extension depends on. + +``` javascript +{ + "name": "helloworld-sample", + "publisher": "lens-samples", + "version": "0.0.1", + "description": "Lens helloworld-sample", + "license": "MIT", + "homepage": "https://github.com/lensapp/lens-extension-samples", + "engines": { + "lens": "^4.0.0" + }, + "main": "dist/main.js", + "renderer": "dist/renderer.js", + "scripts": { + "build": "webpack --config webpack.config.js", + "dev": "npm run build --watch" + }, + "dependencies": { + "react-open-doodles": "^1.0.5" + }, + "devDependencies": { + "@k8slens/extensions": "^4.0.0-alpha.2", + "ts-loader": "^8.0.4", + "typescript": "^4.0.3", + "@types/react": "^16.9.35", + "@types/node": "^12.0.0", + "webpack": "^4.44.2", + "webpack-cli": "^3.3.11" + } +} +``` + +## Extension Entry Files +Lens extensions can have two separate entry files. One file that is used in `main` process of Lens application and antoher that is used in `renderer` process. `main` entry file should export class that extends `LensMainExtension` and `renderer` entry file should export class that extends `LensRendererExtension`. + +Both extensions classes have `onActivate` and `onDeactivate` methods. `onActivate` is executed when your extension activation happens. You may want to initialize something in your extension at this point. `onDeactivate` gives you a chance to clean up before your extension becomes deactivated. For many extensions, explicit cleanup may not be required, and you don't need to override this method. However, if an extension needs to perform an operation when Lens is shutting down or the extension is disabled or uninstalled, this is the method to do so. + +`Hello world` extension does not do anything special on `main` process, so let's focus on the `renderer` side. On `renderer` entry point, `Hello world` extension defines one `Cluster Page` object that registers `/extension-example` path that renders `ExamplePage` React component. It registers also `MenuItem` component that displays `ExampleIcon` React component and "Hello World" text in the sidebar of cluster dashboards. These React components are defined in additional `./src/page.tsx` file. + +``` typescript +import { LensRendererExtension } from "@k8slens/extensions"; +import { ExampleIcon, ExamplePage } from "./page" +import React from "react" + +export default class ExampleExtension extends LensRendererExtension { + clusterPages = [ + { + path: "/extension-example", + title: "Hello World", + components: { + Page: () => , + MenuIcon: ExampleIcon, + } + } + ] +} +``` + +`Hello World` extension uses only one capability (`Cluster Page`) of Lens extensions. The [Extension Capabilities Overview](/extensions/capabilities/) topic helps you find the right capabilities you can use with your own extension. \ No newline at end of file diff --git a/docs/extensions/get-started/overview.md b/docs/extensions/get-started/overview.md new file mode 100644 index 0000000000..4aba2940ff --- /dev/null +++ b/docs/extensions/get-started/overview.md @@ -0,0 +1,20 @@ +# Extension Development Overview + +This is a general overview to how the development of an extension will procede. For building extensions there will be a few things that you should have installed, and some that might help. + +### Required: +- [Node.js](https://www.nodejs.org/en/) +- [Git](https://www.git-scm.com/) +- Some sort of text editor, we recommend [VSCode](https://code.visualstudio.com/) +- We use [Webpack](https://www.webpack.js.org/) for compilation. All extension need to be at least compatable with a webpack system. + +### Recommened: +- + +All *Lens* extensions are javascript packages. We recommend that you program in [Typescript](https://www.typescriptlang.org/) because it catches quite a few easily to make errors around passing data around in javascript. + +*Lens* is a standard [Electron](https://www.electronjs.org/) application which both main and renderer processes. An extension is made up of two parts, one for each of *Lens*'s core processes. When an extension is loaded each part is loaded and then notified that it has been loaded. From there the extension can start doing is work. + +*Lens* uses [React](https://www.reactjs.org/) as it UI framework and even provides some of our own components for reuse by extensions. An extension is resonsible for the lifetime of any resources it spins up. If an extension's main part starts new processes they all must be stopped and cleaned up when the extension is deactivated or unloaded. + +See [Your First Extension](your-first-extension.md) to get started. diff --git a/docs/extensions/get-started/wrapping-up.md b/docs/extensions/get-started/wrapping-up.md new file mode 100644 index 0000000000..95f36dbe88 --- /dev/null +++ b/docs/extensions/get-started/wrapping-up.md @@ -0,0 +1,18 @@ +# Wrapping Up + +In the [Your First Extension](your-first-extension.md) topic, you learned how to create and run an extension. In the [Extension Anatomy](anatomy.md) topic, you learned fundamental concepts to Lens extension development. However, this is just a small glimpse of what can be created with Lens Extensions. Below are some suggested routes for furthering your Lens extension development skills. + +## Extension Capabilities + +In this section, we split the Lens extension points into a few categories, each with short descriptions as to what your extension could achieve. Validate that your extension idea is achievable by reading the [Extension Capabilities](../capabilities/overview.md) section for new extension ideas. + +## Guides & Samples + +We have a great collection of sample extensions that you can adapt from, and some of them include a detailed guide that explains the source code. You can find all Samples & Guides in the [lens-extension-samples](https://github.com/lensapp/lens-extension-samples) repository. + +## Testing and Publishing + +This section includes topics that help you develop high-quality Lens extensions. For example, you can learn + +* How to add [integration tests](../testing-and-publishing/testing.md) for your extension +* How to [publish your extension](../testing-and-publishing/publishing.md) diff --git a/docs/extensions/get-started/your-first-extension.md b/docs/extensions/get-started/your-first-extension.md new file mode 100644 index 0000000000..e43103c008 --- /dev/null +++ b/docs/extensions/get-started/your-first-extension.md @@ -0,0 +1,63 @@ +# Your First Extension + +In this topic, we'll teach you the fundamental concepts for building extensions. + +## Installing and Building the extension + +Simple Lens extension that adds "Hello World" page to a cluster menu. + +### Linux + +First you will need to clone the [Lens Extension samples](https://github.com/lensapp/lens-extension-samples) repository to your local machine: + +```sh +git clone https://github.com/lensapp/lens-extension-samples.git +``` + +Next you need to create a symlink from the directory that Lens will monitor for user installed extensions to the sample extension, in this case **helloworld-sample**: + +```sh +mkdir -p ~/.k8slens/extensions +cd ~/.k8slens/extensions +ln -s /helloworld-sample helloworld-sample +``` + +To build the extension you can use `make` or run the `npm` commands manually: + +```sh +cd /helloworld-sample +make build +``` + +OR + +```sh +cd /helloworld-sample +npm install +npm run build +``` + +If you want to watch for any source code changes and automatically rebuild the extension you can use: + +```sh +cd /helloworld-sample +npm run dev +``` + +Finally, if you already have Lens open you will need to quit and restart Lens for the extension to be loaded. After this initial restart you can reload Lens and it will pick up any new builds of the extension. Within Lens connect to an existing cluster or [create a new one](../../clusters/adding-clusters.md). You should see then see the "Hello World" page in the Lens sidebar cluster menu. + +## Developing the extension + +Let's make a change to the message that our helloworld-sample extension displays: + +* Navigate to `/helloworld-sample`. +* Change the message from HelloWorld! to **Hello Lens Extensions** in `page.tsx`. +* Rebuild the extension or, if you used `npm run dev`, the extension should automatically rebuild. +* Reload the Lens window and click on the Hello World page. +* You should see the updated message showing up. + +## Next steps + +In the next topic, [Extension Anatomy](anatomy.md), we'll take a closer look at the source code of the Hello World sample and explain key concepts. + +You can find the source code of this tutorial at: [lensapp/lens-extension-samples](https://github.com/lensapp/lens-extension-samples/tree/master/helloworld-sample). The [Extension Guides](../guides/overview.md) topic contains other samples, each illustrating a different Lens Extension API. diff --git a/docs/extensions/guides/README.md b/docs/extensions/guides/README.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/extensions/guides/renderer-extension.md b/docs/extensions/guides/renderer-extension.md new file mode 100644 index 0000000000..fc4f9b8bdd --- /dev/null +++ b/docs/extensions/guides/renderer-extension.md @@ -0,0 +1 @@ +# Renderer Extension diff --git a/docs/extensions/testing-and-publishing/bundling.md b/docs/extensions/testing-and-publishing/bundling.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/extensions/testing-and-publishing/publishing.md b/docs/extensions/testing-and-publishing/publishing.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/extensions/testing-and-publishing/testing.md b/docs/extensions/testing-and-publishing/testing.md new file mode 100644 index 0000000000..f96e3ce9e5 --- /dev/null +++ b/docs/extensions/testing-and-publishing/testing.md @@ -0,0 +1,32 @@ +# Testing Extensions + +## Console.log + +`console.log()` might be handy for extension developers to prints out info/errors from extensions. To use `console.log`, note that Lens is based on Electron. Electron has two types of processes: [Main and Renderer](https://www.electronjs.org/docs/tutorial/quick-start#main-and-renderer-processes). + +### Renderer process logs + +`console.log()` in Renderer process is printed in the Console in Developer Tools (View > Toggle Developer Tools). + +### Main process logs + +To view the logs from the main process is a bit trickier, since you cannot open developer tools for them. On MacOSX, one way is to run Lens from the terminal. + +```bash +/Applications/Lens.app/Contents/MacOS/Lens +``` + +You can alos use [Console.app](https://support.apple.com/en-gb/guide/console/welcome/mac) to view logs from Lens. + +On linux, you can get PID of Lens first + +```bash +ps aux | grep Lens | grep -v grep +``` + +And get logs by the PID + +```bash +tail -f /proc/[pid]/fd/1 # stdout (console.log) +tail -f /proc/[pid]/fd/2 # stdout (console.error) +``` diff --git a/docs/extensions/usage/README.md b/docs/extensions/usage/README.md new file mode 100644 index 0000000000..7ca1ab7e51 --- /dev/null +++ b/docs/extensions/usage/README.md @@ -0,0 +1,3 @@ +# Using Extensions + +TBD diff --git a/docs/faq/README.md b/docs/faq/README.md new file mode 100644 index 0000000000..a0990367ef --- /dev/null +++ b/docs/faq/README.md @@ -0,0 +1 @@ +TBD diff --git a/docs/getting-started/README.md b/docs/getting-started/README.md new file mode 100644 index 0000000000..e4c6c38bec --- /dev/null +++ b/docs/getting-started/README.md @@ -0,0 +1,55 @@ +# Getting Started + +Lens is lightweight and simple to install. You'll be up and running in just a few minutes. + + +## System requirements + +Review the [System Requirements](/supporting/requirements/) to check if your computer configuration is supported. + + +## macOS + +1. [Download Lens](https://github.com/lensapp/lens/releases) for macOS. +2. Open the browser's download list and locate the downloaded archive. +3. Select the 'magnifying glass' icon to open the archive in Finder. +4. Double-click `Lens-{version}.dmg` and drag `Lens.app` to the `Applications` folder, making it available in the macOS Launchpad. +5. Add Lens to your Dock by right-clicking on the icon to bring up the context menu and choosing **Options**, **Keep in Dock**. + + +## Windows + +1. Download the [Lens installer](https://github.com/lensapp/lens/releases) for Windows. +2. Once it is downloaded, run the installer `Lens-Setup-{version}.exe`. This will only take a minute. +3. By default, Lens is installed under `C:\users\{username}\AppData\Local\Programs\Lens`. + + +## Linux + +See the [Download Lens](https://github.com/lensapp/lens/releases) page for a complete list of available installation options. + + +### Snap + +Lens is officially distributed as a Snap package in the [Snap Store](https://snapcraft.io/store): + +[![Get it from the Snap Store](images/snap-store.png)](https://snapcraft.io/kontena-lens) + +You can install it by running: + +```bash +sudo snap install kontena-lens --classic +``` + +## Update cadence + +Lens releases a new version each month with new features and important bug fixes. Lens supports auto updating and you will be prompted to install the new release when it becomes available! + +To stay current with the Lens features, you can review the [release notes](https://github.com/lensapp/lens/releases). + + +## Next Steps + +- [Add clusters](../clusters/adding-clusters.md) +- [Watch introductory videos](./introductory-videos.md) + diff --git a/docs/getting-started/images/color-theme.png b/docs/getting-started/images/color-theme.png new file mode 100644 index 0000000000..5e4f144560 Binary files /dev/null and b/docs/getting-started/images/color-theme.png differ diff --git a/docs/getting-started/images/disabled-telemetry-usage-tracking.png b/docs/getting-started/images/disabled-telemetry-usage-tracking.png new file mode 100644 index 0000000000..809a96056a Binary files /dev/null and b/docs/getting-started/images/disabled-telemetry-usage-tracking.png differ diff --git a/docs/getting-started/images/snap-store.png b/docs/getting-started/images/snap-store.png new file mode 100644 index 0000000000..5e652132c3 Binary files /dev/null and b/docs/getting-started/images/snap-store.png differ diff --git a/docs/getting-started/introductory-videos.md b/docs/getting-started/introductory-videos.md new file mode 100644 index 0000000000..fcaee999c0 --- /dev/null +++ b/docs/getting-started/introductory-videos.md @@ -0,0 +1,36 @@ +# Introductory Videos + +Continue your Lens journey with this set of introductory videos! These videos are meant to quickly familiarize you with Lens' various powerful features. + + diff --git a/docs/getting-started/preferences.md b/docs/getting-started/preferences.md new file mode 100644 index 0000000000..cd71e476f8 --- /dev/null +++ b/docs/getting-started/preferences.md @@ -0,0 +1,28 @@ +# Preferences + + +## Color themes + +The Color Themes option in Lens preferences lets you set the colors in the Lens user interface to suit your liking. + +1. Go to **File** > **Preferences** (**Lens** > **Preferences** on Mac). +2. Select your preferred theme from the **Color Theme** dropdown. +![Color Theme](images/color-theme.png) + + +## Telemetry & usage tracking + +Lens collects telemetry data, which is used to help us understand how to improve the product. For example, this usage data helps us to debug issues and to prioritize new features. While we appreciate the insights this data provides, we also know that not everyone wants to send usage data. Please see our [privacy statement](https://www.mirantis.com/company/privacy-policy/) to learn more. + + +### Disable telemetry reporting + +If you don't wish to send usage data to Mirantis, you can disable the "Telemetry & Usage Tracking" in the Lens preferences. + +1. Go to **File** > **Preferences** (**Lens** > **Preferences** on Mac). +2. Scroll down to **Telemetry & Usage Tracking** +3. Uncheck **Allow telemetry & usage tracking**. + +This will silence all telemetry events from Lens going forward. Telemetry information may have been collected and sent up until the point when you disable this setting. +![Disable Telemetry & Usage Tracking](images/disabled-telemetry-usage-tracking.png) + diff --git a/docs/helm/README.md b/docs/helm/README.md new file mode 100644 index 0000000000..c6ea505cc3 --- /dev/null +++ b/docs/helm/README.md @@ -0,0 +1,3 @@ +# Using Helm Charts + +TBD diff --git a/docs/img/favicon.ico b/docs/img/favicon.ico new file mode 100644 index 0000000000..19b2de71d1 Binary files /dev/null and b/docs/img/favicon.ico differ diff --git a/docs/img/lens-intro-video-screenshot.png b/docs/img/lens-intro-video-screenshot.png new file mode 100644 index 0000000000..2c5467b3f0 Binary files /dev/null and b/docs/img/lens-intro-video-screenshot.png differ diff --git a/docs/img/lens-logo-icon.svg b/docs/img/lens-logo-icon.svg new file mode 100644 index 0000000000..ede39244e5 --- /dev/null +++ b/docs/img/lens-logo-icon.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/docs/img/play.svg b/docs/img/play.svg new file mode 100644 index 0000000000..a94d6e88ab --- /dev/null +++ b/docs/img/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css new file mode 100644 index 0000000000..f727034bbd --- /dev/null +++ b/docs/stylesheets/extra.css @@ -0,0 +1,90 @@ +:root { + --md-primary-fg-color: #3d90ce; + --md-accent-fg-color: #3d90ce; +} + +:root > * { + /* Footer */ + --md-footer-bg-color: #3d90ce; +} + +.md-version__list { + overflow: auto; +} + +ul.video-list { + counter-reset: section; + list-style: none; + padding-left: 0; + position:relative +} + +ul.video-list .video:not(:last-of-type) a { + border-bottom:2px solid #e6e6e6 +} + +ul.video-list a { + position: relative; + padding: 2rem 2rem 2rem 4.2rem; + display: block; + box-sizing:border-box +} + +ul.video-list a .info { + padding-top:0.25rem +} + +ul.video-list a .info::before { + counter-increment: section; + content: counter(section); + position: absolute; + left: 1.5rem; + color:black +} + +ul.video-list a .info > p, ul.video-list a .info > span { + color:black +} + +ul.video-list a .info .title { + margin-top: 0; + margin-bottom:0.7rem +} + +ul.video-list a .info .description { + margin-bottom: 1rem; + +} + +ul.video-list a .info .duration, ul.video-list a .info .duration span { + color: #6e6e6e; + +} + +ul.video-list a:hover, ul.video-list a:focus { + text-decoration:none +} + +ul.video-list a:hover { + background:#f2f2f2 +} + +ul.video-list a:hover::after { + content: ''; + display: block; + width: 6rem; + height: 6rem; + position: absolute; + background: url("/img/play.svg"); + background-size: 6rem; + top: 3rem; + left:8.6rem +} + +ul.video-list .thumb { + max-height: 8.2rem; + padding-right: 2rem; + position: relative; + float:left +} + diff --git a/docs/supporting/requirements.md b/docs/supporting/requirements.md new file mode 100644 index 0000000000..6eb929a3b3 --- /dev/null +++ b/docs/supporting/requirements.md @@ -0,0 +1,26 @@ +# Requirements for Lens + +## Hardware + +Lens is a small download (< 300 MB) and has a disk footprint of 600 MB. Lens is lightweight and should easily run on today's hardware. + +We recommend: + +* 2 GHz or faster processor +* 1 GB of RAM + +## Platforms + +Lens has been tested on the following platforms: + +* OS X +* Windows +* Linux + +### Additional Windows requirements + +... + +### Additional Linux requirements + +... diff --git a/integration/__tests__/app.tests.ts b/integration/__tests__/app.tests.ts index c9567a195f..74081a2061 100644 --- a/integration/__tests__/app.tests.ts +++ b/integration/__tests__/app.tests.ts @@ -47,17 +47,23 @@ describe("Lens integration tests", () => { await clickWhatsNew(app) }) - // Todo figure out how to access main menu to get these to work - it.skip('shows "add cluster"', async () => { - await app.client.keys(['Shift', 'Meta', 'A']) + it('shows "add cluster"', async () => { + await app.electron.ipcRenderer.send('test-menu-item-click', "File", "Add Cluster") await app.client.waitUntilTextExists("h2", "Add Cluster") - await app.client.keys(['Shift', 'Meta']) }) - it.skip('shows "preferences"', async () => { - await app.client.keys(['Meta', ',']) - await app.client.waitUntilTextExists("h2", "Preferences") - await app.client.keys('Meta') + describe("preferences page", () => { + it('shows "preferences"', async () => { + let appName: string = process.platform === "darwin" ? "Lens" : "File" + await app.electron.ipcRenderer.send('test-menu-item-click', appName, "Preferences") + await app.client.waitUntilTextExists("h2", "Preferences") + }) + + it('ensures helm repos', async () => { + await app.client.waitUntilTextExists("div.repos #message-stable", "stable") // wait for the helm-cli to fetch the stable repo + await app.client.click("#HelmRepoSelect") // click the repo select to activate the drop-down + await app.client.waitUntilTextExists("div.Select__option", "") // wait for at least one option to appear (any text) + }) }) it.skip('quits Lens"', async () => { @@ -410,6 +416,40 @@ describe("Lens integration tests", () => { }) }) + describe("viewing pod logs", () => { + beforeEach(appStartAddCluster, 40000) + + afterEach(async () => { + if (app && app.isRunning()) { + return util.tearDown(app) + } + }) + + it(`shows a logs for a pod`, async () => { + expect(clusterAdded).toBe(true) + // Go to Pods page + await app.client.click(".sidebar-nav #workloads span.link-text") + await app.client.waitUntilTextExists('a[href^="/pods"]', "Pods") + await app.client.click('a[href^="/pods"]') + await app.client.waitUntilTextExists("div.TableCell", "kube-apiserver") + // Open logs tab in dock + await app.client.click(".list .TableRow:first-child") + await app.client.waitForVisible(".Drawer") + await app.client.click(".drawer-title .Menu li:nth-child(2)") + // Check if controls are available + await app.client.waitForVisible(".PodLogs .VirtualList") + await app.client.waitForVisible(".PodLogControls") + await app.client.waitForVisible(".PodLogControls .SearchInput") + await app.client.waitForVisible(".PodLogControls .SearchInput input") + // Search for semicolon + await app.client.keys(":") + await app.client.waitForVisible(".PodLogs .list span.active") + // Click through controls + await app.client.click(".PodLogControls .timestamps-icon") + await app.client.click(".PodLogControls .undo-icon") + }) + }) + describe("cluster operations", () => { beforeEach(appStartAddCluster, 40000) diff --git a/locales/en/messages.po b/locales/en/messages.po index 220b5c93a8..02ddfdb227 100644 --- a/locales/en/messages.po +++ b/locales/en/messages.po @@ -25,11 +25,11 @@ msgstr "" msgid "(as a percentage of request)" msgstr "(as a percentage of request)" -#: src/renderer/components/+workspaces/workspaces.tsx:121 +#: src/renderer/components/+workspaces/workspaces.tsx:126 msgid "(current)" msgstr "(current)" -#: src/renderer/components/+network-policies/network-policy-details.tsx:88 +#: src/renderer/components/+network-policies/network-policy-details.tsx:87 msgid "(empty) (Allowing the specific traffic to all pods in this namespace)" msgstr "(empty) (Allowing the specific traffic to all pods in this namespace)" @@ -61,19 +61,19 @@ msgstr "<0>{0} successfully created" msgid "A System Name must be lowercase DNS labels separated by dots. DNS labels are alphanumerics and dashes enclosed by alphanumerics." msgstr "A System Name must be lowercase DNS labels separated by dots. DNS labels are alphanumerics and dashes enclosed by alphanumerics." -#: src/renderer/components/+workspaces/workspaces.tsx:93 +#: src/renderer/components/+workspaces/workspaces.tsx:97 msgid "A single workspaces contains a list of clusters and their full configuration." msgstr "A single workspaces contains a list of clusters and their full configuration." -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:81 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:80 msgid "API Group" msgstr "API Group" -#: src/renderer/components/layout/sidebar.tsx:88 +#: src/renderer/components/layout/sidebar.tsx:89 msgid "Access Control" msgstr "Access Control" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:51 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:50 #: src/renderer/components/+storage-volumes/volume-details.tsx:37 msgid "Access Modes" msgstr "Access Modes" @@ -82,17 +82,17 @@ msgstr "Access Modes" msgid "Account Name" msgstr "Account Name" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:51 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:50 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:50 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48 msgid "Active" msgstr "Active" #: src/renderer/components/+add-cluster/add-cluster.tsx:310 -#: src/renderer/components/cluster-manager/clusters-menu.tsx:127 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:130 msgid "Add Cluster" msgstr "Add Cluster" -#: src/renderer/components/+namespaces/namespaces.tsx:43 +#: src/renderer/components/+namespaces/namespaces.tsx:39 msgid "Add Namespace" msgstr "Add Namespace" @@ -100,11 +100,11 @@ msgstr "Add Namespace" msgid "Add RoleBinding" msgstr "Add RoleBinding" -#: src/renderer/components/+workspaces/workspaces.tsx:138 +#: src/renderer/components/+workspaces/workspaces.tsx:143 msgid "Add Workspace" msgstr "Add Workspace" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:112 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:111 msgid "Add bindings to {name}" msgstr "Add bindings to {name}" @@ -136,7 +136,7 @@ msgstr "Add field" #~ msgid "Adding clusters: <0>{0}" #~ msgstr "Adding clusters: <0>{0}" -#: src/renderer/components/+preferences/preferences.tsx:111 +#: src/renderer/components/+preferences/preferences.tsx:101 msgid "Adding helm branch <0>{0} has failed: {1}" msgstr "Adding helm branch <0>{0} has failed: {1}" @@ -144,13 +144,13 @@ msgstr "Adding helm branch <0>{0} has failed: {1}" #~ msgid "Adding repo <0>{0} has failed: {1}" #~ msgstr "Adding repo <0>{0} has failed: {1}" -#: src/renderer/components/+custom-resources/crd-details.tsx:78 +#: src/renderer/components/+custom-resources/crd-details.tsx:77 msgid "Additional Printer Columns" msgstr "Additional Printer Columns" #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:29 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:60 -#: src/renderer/components/+nodes/node-details.tsx:83 +#: src/renderer/components/+nodes/node-details.tsx:82 msgid "Addresses" msgstr "Addresses" @@ -158,36 +158,34 @@ msgstr "Addresses" msgid "Affinities" msgstr "Affinities" -#: src/renderer/components/+config-autoscalers/hpa.tsx:51 -#: src/renderer/components/+config-maps/config-maps.tsx:37 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:45 -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:36 -#: src/renderer/components/+config-secrets/secrets.tsx:46 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:66 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:67 -#: src/renderer/components/+custom-resources/crd-list.tsx:77 -#: src/renderer/components/+custom-resources/crd-resources.tsx:73 +#: src/renderer/components/+config-autoscalers/hpa.tsx:48 +#: src/renderer/components/+config-maps/config-maps.tsx:34 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:42 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:33 +#: src/renderer/components/+config-secrets/secrets.tsx:43 +#: src/renderer/components/+custom-resources/crd-list.tsx:74 +#: src/renderer/components/+custom-resources/crd-resources.tsx:70 #: src/renderer/components/+events/events.tsx:68 -#: src/renderer/components/+namespaces/namespaces.tsx:33 -#: src/renderer/components/+network-endpoints/endpoints.tsx:34 -#: src/renderer/components/+network-ingresses/ingresses.tsx:35 -#: src/renderer/components/+network-policies/network-policies.tsx:34 -#: src/renderer/components/+network-services/services.tsx:51 -#: src/renderer/components/+nodes/nodes.tsx:126 -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:38 -#: src/renderer/components/+storage-classes/storage-classes.tsx:38 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:51 -#: src/renderer/components/+storage-volumes/volumes.tsx:44 -#: src/renderer/components/+user-management-roles/roles.tsx:35 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:38 -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:38 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:52 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:50 -#: src/renderer/components/+workloads-deployments/deployments.tsx:63 -#: src/renderer/components/+workloads-jobs/jobs.tsx:41 -#: src/renderer/components/+workloads-pods/pods.tsx:81 -#: src/renderer/components/+workloads-replicasets/replicasets.tsx:53 -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:44 +#: src/renderer/components/+namespaces/namespaces.tsx:31 +#: src/renderer/components/+network-endpoints/endpoints.tsx:31 +#: src/renderer/components/+network-ingresses/ingresses.tsx:33 +#: src/renderer/components/+network-policies/network-policies.tsx:31 +#: src/renderer/components/+network-services/services.tsx:48 +#: src/renderer/components/+nodes/nodes.tsx:123 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:35 +#: src/renderer/components/+storage-classes/storage-classes.tsx:35 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:48 +#: src/renderer/components/+storage-volumes/volumes.tsx:41 +#: src/renderer/components/+user-management-roles/roles.tsx:32 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:35 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:36 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:50 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:47 +#: src/renderer/components/+workloads-deployments/deployments.tsx:61 +#: src/renderer/components/+workloads-jobs/jobs.tsx:38 +#: src/renderer/components/+workloads-pods/pods.tsx:78 +#: src/renderer/components/+workloads-replicasets/replicasets.tsx:51 +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:41 msgid "Age" msgstr "Age" @@ -199,68 +197,68 @@ msgstr "All clusters within workspace will be cleared as well" #~ msgid "All clusters within workspace will be cleared as well." #~ msgstr "All clusters within workspace will be cleared as well." -#: src/renderer/components/+custom-resources/crd-list.tsx:56 +#: src/renderer/components/+custom-resources/crd-list.tsx:53 msgid "All groups" msgstr "All groups" #: src/renderer/components/dock/pod-logs.tsx:37 -msgid "All logs" -msgstr "All logs" +#~ msgid "All logs" +#~ msgstr "All logs" #: src/renderer/components/+namespaces/namespace-select.tsx:95 msgid "All namespaces" msgstr "All namespaces" -#: src/renderer/components/+nodes/node-details.tsx:77 +#: src/renderer/components/+nodes/node-details.tsx:76 msgid "Allocatable" msgstr "Allocatable" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:71 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:70 msgid "Allow Privilege Escalation" msgstr "Allow Privilege Escalation" #: src/renderer/components/+preferences/preferences.tsx:172 -msgid "Allow telemetry & usage tracking" -msgstr "Allow telemetry & usage tracking" +#~ msgid "Allow telemetry & usage tracking" +#~ msgstr "Allow telemetry & usage tracking" -#: src/renderer/components/+preferences/preferences.tsx:164 +#: src/renderer/components/+preferences/preferences.tsx:150 msgid "Allow untrusted Certificate Authorities" msgstr "Allow untrusted Certificate Authorities" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:51 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:50 msgid "Allowed CSI Drivers" msgstr "Allowed CSI Drivers" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:43 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:42 msgid "Allowed Capabilities" msgstr "Allowed Capabilities" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:55 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:54 msgid "Allowed Flex Volumes" msgstr "Allowed Flex Volumes" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:110 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:109 msgid "Allowed Host Paths" msgstr "Allowed Host Paths" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:59 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:58 msgid "Allowed Proc Mount Types" msgstr "Allowed Proc Mount Types" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:132 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:131 msgid "Allowed Runtime Class Names" msgstr "Allowed Runtime Class Names" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:63 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:62 msgid "Allowed Unsafe Sysctls" msgstr "Allowed Unsafe Sysctls" -#: src/renderer/components/+nodes/node-details.tsx:102 +#: src/renderer/components/+nodes/node-details.tsx:101 #: src/renderer/components/kube-object/kube-object-meta.tsx:36 msgid "Annotations" msgstr "Annotations" -#: src/renderer/components/+user-management-roles/role-details.tsx:37 +#: src/renderer/components/+user-management-roles/role-details.tsx:36 msgid "Api Groups" msgstr "Api Groups" @@ -277,7 +275,7 @@ msgstr "App crash at <0>{pageUrl}" msgid "Applying.." msgstr "Applying.." -#: src/renderer/components/layout/sidebar.tsx:87 +#: src/renderer/components/layout/sidebar.tsx:88 msgid "Apps" msgstr "Apps" @@ -286,10 +284,10 @@ msgid "Are you sure you want remove workspace <0>{0}?" msgstr "Are you sure you want remove workspace <0>{0}?" #: src/renderer/components/+nodes/node-menu.tsx:41 -msgid "Are you sure you want to drain <0>{nodeName}?" -msgstr "Are you sure you want to drain <0>{nodeName}?" +#~ msgid "Are you sure you want to drain <0>{nodeName}?" +#~ msgstr "Are you sure you want to drain <0>{nodeName}?" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:84 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:103 msgid "Arguments" msgstr "Arguments" @@ -298,14 +296,14 @@ msgid "Associate clusters and choose the ones you want to access via quick launc msgstr "Associate clusters and choose the ones you want to access via quick launch menu by clicking the + button." #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:101 -msgid "Auth App Role" -msgstr "Auth App Role" +#~ msgid "Auth App Role" +#~ msgstr "Auth App Role" -#: src/renderer/components/+preferences/preferences.tsx:160 +#: src/renderer/components/+preferences/preferences.tsx:146 msgid "Auto start-up" msgstr "Auto start-up" -#: src/renderer/components/+preferences/preferences.tsx:161 +#: src/renderer/components/+preferences/preferences.tsx:147 msgid "Automatically start Lens on login" msgstr "Automatically start Lens on login" @@ -314,11 +312,11 @@ msgstr "Automatically start Lens on login" msgid "Back" msgstr "Back" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:43 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:42 msgid "Backends" msgstr "Backends" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:94 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:93 msgid "Binding" msgstr "Binding" @@ -326,8 +324,8 @@ msgstr "Binding" msgid "Binding targets" msgstr "Binding targets" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:90 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:36 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:89 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:33 msgid "Bindings" msgstr "Bindings" @@ -370,17 +368,17 @@ msgstr "Bytes transmitted from all containers" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:97 #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:129 -msgid "CA Bundle" -msgstr "CA Bundle" +#~ msgid "CA Bundle" +#~ msgstr "CA Bundle" #: src/renderer/components/+cluster/cluster-metric-switchers.tsx:24 #: src/renderer/components/+cluster/cluster-pie-charts.tsx:140 -#: src/renderer/components/+nodes/node-details.tsx:62 -#: src/renderer/components/+nodes/node-details.tsx:73 -#: src/renderer/components/+nodes/node-details.tsx:78 -#: src/renderer/components/+nodes/nodes.tsx:120 +#: src/renderer/components/+nodes/node-details.tsx:61 +#: src/renderer/components/+nodes/node-details.tsx:72 +#: src/renderer/components/+nodes/node-details.tsx:77 +#: src/renderer/components/+nodes/nodes.tsx:117 #: src/renderer/components/+workloads-pods/pod-charts.tsx:11 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:26 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:44 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:53 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:95 #: src/renderer/components/resource-metrics/resource-metrics-text.tsx:13 @@ -406,11 +404,11 @@ msgstr "CPU limits" msgid "CPU requests" msgstr "CPU requests" -#: src/renderer/components/+nodes/nodes.tsx:57 +#: src/renderer/components/+nodes/nodes.tsx:54 msgid "CPU:" msgstr "CPU:" -#: src/renderer/components/+workspaces/workspaces.tsx:133 +#: src/renderer/components/+workspaces/workspaces.tsx:138 #: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44 #: src/renderer/components/dock/info-panel.tsx:86 #: src/renderer/components/wizard/wizard.tsx:130 @@ -423,20 +421,20 @@ msgstr "Cancel" #: src/renderer/components/+nodes/node-charts.tsx:39 #: src/renderer/components/+nodes/node-charts.tsx:63 #: src/renderer/components/+nodes/node-charts.tsx:97 -#: src/renderer/components/+nodes/node-details.tsx:72 +#: src/renderer/components/+nodes/node-details.tsx:71 #: src/renderer/components/+storage-volume-claims/volume-claim-disk-chart.tsx:31 #: src/renderer/components/+storage-volumes/volume-details.tsx:29 -#: src/renderer/components/+storage-volumes/volumes.tsx:42 +#: src/renderer/components/+storage-volumes/volumes.tsx:39 msgid "Capacity" msgstr "Capacity" -#: src/renderer/components/+preferences/preferences.tsx:163 +#: src/renderer/components/+preferences/preferences.tsx:149 msgid "Certificate Trust" msgstr "Certificate Trust" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:59 -msgid "Certificates" -msgstr "Certificates" +#~ msgid "Certificates" +#~ msgstr "Certificates" #: src/renderer/components/+apps-releases/release-details.tsx:173 #: src/renderer/components/+apps-releases/releases.tsx:89 @@ -473,7 +471,7 @@ msgstr "Charts" #~ msgstr "Choose how to import clusters: from selected kube-config file or from pasted yaml configuration" #: src/renderer/components/+storage-volumes/volume-details.tsx:68 -#: src/renderer/components/+storage-volumes/volumes.tsx:43 +#: src/renderer/components/+storage-volumes/volumes.tsx:40 msgid "Claim" msgstr "Claim" @@ -491,42 +489,42 @@ msgid "Close (Ctrl+W)" msgstr "Close (Ctrl+W)" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:121 -msgid "Cloud API Token Secret" -msgstr "Cloud API Token Secret" +#~ msgid "Cloud API Token Secret" +#~ msgstr "Cloud API Token Secret" #: src/renderer/components/+namespaces/namespace-select.tsx:43 -#: src/renderer/components/layout/sidebar.tsx:79 +#: src/renderer/components/layout/sidebar.tsx:80 msgid "Cluster" msgstr "Cluster" #: src/renderer/components/+network-services/service-details.tsx:51 -#: src/renderer/components/+network-services/services.tsx:47 +#: src/renderer/components/+network-services/services.tsx:44 msgid "Cluster IP" msgstr "Cluster IP" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:40 -msgid "Cluster Issuers" -msgstr "Cluster Issuers" +#~ msgid "Cluster Issuers" +#~ msgstr "Cluster Issuers" -#: src/renderer/components/+preferences/preferences.tsx:134 +#: src/renderer/components/+preferences/preferences.tsx:120 msgid "Color Theme" msgstr "Color Theme" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:79 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:98 msgid "Command" msgstr "Command" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:47 #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:62 -msgid "Common Name" -msgstr "Common Name" +#~ msgid "Common Name" +#~ msgstr "Common Name" -#: src/renderer/components/layout/sidebar.tsx:76 +#: src/renderer/components/layout/sidebar.tsx:77 msgid "Compact view" msgstr "Compact view" -#: src/renderer/components/+workloads-jobs/job-details.tsx:80 -#: src/renderer/components/+workloads-jobs/jobs.tsx:39 +#: src/renderer/components/+workloads-jobs/job-details.tsx:79 +#: src/renderer/components/+workloads-jobs/jobs.tsx:36 msgid "Completions" msgstr "Completions" @@ -534,17 +532,17 @@ msgstr "Completions" msgid "Component stack" msgstr "Component stack" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:72 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:71 msgid "Condition" msgstr "Condition" -#: src/renderer/components/+custom-resources/crd-details.tsx:52 -#: src/renderer/components/+nodes/node-details.tsx:107 -#: src/renderer/components/+nodes/nodes.tsx:127 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:79 -#: src/renderer/components/+workloads-deployments/deployments.tsx:64 -#: src/renderer/components/+workloads-jobs/job-details.tsx:77 -#: src/renderer/components/+workloads-jobs/jobs.tsx:42 +#: src/renderer/components/+custom-resources/crd-details.tsx:51 +#: src/renderer/components/+nodes/node-details.tsx:106 +#: src/renderer/components/+nodes/nodes.tsx:124 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:78 +#: src/renderer/components/+workloads-deployments/deployments.tsx:62 +#: src/renderer/components/+workloads-jobs/job-details.tsx:76 +#: src/renderer/components/+workloads-jobs/jobs.tsx:39 #: src/renderer/components/+workloads-pods/pod-details.tsx:100 msgid "Conditions" msgstr "Conditions" @@ -558,6 +556,7 @@ msgid "Are you sure you want to restart deployment <0>{0}?" msgstr "Are you sure you want to restart deployment <0>{0}?" #: src/renderer/components/+config-maps/config-maps.tsx:33 +#: src/renderer/components/+config-maps/config-maps.tsx:30 msgid "Config Maps" msgstr "Config Maps" @@ -565,7 +564,7 @@ msgstr "Config Maps" msgid "Config copied to clipboard" msgstr "Config copied to clipboard" -#: src/renderer/components/+config-maps/config-map-details.tsx:41 +#: src/renderer/components/+config-maps/config-map-details.tsx:40 msgid "ConfigMap <0>{0} successfully updated." msgstr "ConfigMap <0>{0} successfully updated." @@ -573,7 +572,7 @@ msgstr "ConfigMap <0>{0} successfully updated." msgid "ConfigMaps" msgstr "ConfigMaps" -#: src/renderer/components/layout/sidebar.tsx:82 +#: src/renderer/components/layout/sidebar.tsx:83 msgid "Configuration" msgstr "Configuration" @@ -581,7 +580,7 @@ msgstr "Configuration" msgid "Connection" msgstr "Connection" -#: src/renderer/components/dock/pod-logs.tsx:148 +#: src/renderer/components/dock/pod-log-controls.tsx:63 msgid "Container" msgstr "Container" @@ -605,13 +604,13 @@ msgstr "Container memory requests" msgid "Container memory usage" msgstr "Container memory usage" -#: src/renderer/components/+nodes/node-details.tsx:95 +#: src/renderer/components/+nodes/node-details.tsx:94 msgid "Container runtime" msgstr "Container runtime" #: src/renderer/components/+workloads-pods/pod-details.tsx:122 -#: src/renderer/components/+workloads-pods/pods.tsx:77 -#: src/renderer/components/dock/pod-logs.tsx:129 +#: src/renderer/components/+workloads-pods/pods.tsx:74 +#: src/renderer/components/dock/pod-log-controls.tsx:43 msgid "Containers" msgstr "Containers" @@ -627,16 +626,16 @@ msgstr "Context" #~ msgid "Contexts: {0}" #~ msgstr "Contexts: {0}" -#: src/renderer/components/+workloads-pods/pods.tsx:79 +#: src/renderer/components/+workloads-pods/pods.tsx:76 #: src/renderer/components/kube-object/kube-object-meta.tsx:39 msgid "Controlled By" msgstr "Controlled By" -#: src/renderer/components/+workloads-jobs/job-details.tsx:68 +#: src/renderer/components/+workloads-jobs/job-details.tsx:67 msgid "Controlled by" msgstr "Controlled by" -#: src/renderer/components/+custom-resources/crd-details.tsx:49 +#: src/renderer/components/+custom-resources/crd-details.tsx:48 msgid "Conversion" msgstr "Conversion" @@ -647,10 +646,10 @@ msgstr "Copy to clipboard" #: src/renderer/components/+nodes/node-menu.tsx:51 #: src/renderer/components/+nodes/node-menu.tsx:52 -msgid "Cordon" -msgstr "Cordon" +#~ msgid "Cordon" +#~ msgstr "Cordon" -#: src/renderer/components/+events/event-details.tsx:45 +#: src/renderer/components/+events/event-details.tsx:44 #: src/renderer/components/+events/events.tsx:67 #: src/renderer/components/+events/kube-event-details.tsx:51 msgid "Count" @@ -686,23 +685,23 @@ msgstr "Create Secret" msgid "Create Service Account" msgstr "Create Service Account" -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:45 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:40 msgid "Create new ResourceQuota" msgstr "Create new ResourceQuota" -#: src/renderer/components/+user-management-roles/roles.tsx:44 +#: src/renderer/components/+user-management-roles/roles.tsx:39 msgid "Create new Role" msgstr "Create new Role" -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:48 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:43 msgid "Create new RoleBinding" msgstr "Create new RoleBinding" -#: src/renderer/components/+config-secrets/secrets.tsx:58 +#: src/renderer/components/+config-secrets/secrets.tsx:53 msgid "Create new Secret" msgstr "Create new Secret" -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:47 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:45 msgid "Create new Service Account" msgstr "Create new Service Account" @@ -719,10 +718,10 @@ msgid "Created at" msgstr "Created at" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:132 -msgid "Credentials Ref" -msgstr "Credentials Ref" +#~ msgid "Credentials Ref" +#~ msgstr "Credentials Ref" -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:42 msgid "Cron Jobs" msgstr "Cron Jobs" @@ -734,8 +733,8 @@ msgstr "CronJobs" msgid "Current / Target" msgstr "Current / Target" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:39 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:43 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:38 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:40 msgid "Current Healthy" msgstr "Current Healthy" @@ -751,8 +750,8 @@ msgstr "Currently applied filters:" #~ msgid "Custom" #~ msgstr "Custom" -#: src/renderer/components/+custom-resources/crd-list.tsx:55 -#: src/renderer/components/layout/sidebar.tsx:89 +#: src/renderer/components/+custom-resources/crd-list.tsx:52 +#: src/renderer/components/layout/sidebar.tsx:90 msgid "Custom Resources" msgstr "Custom Resources" @@ -761,14 +760,14 @@ msgstr "Custom Resources" #~ msgstr "Custom.." #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:95 -msgid "DNS Provider" -msgstr "DNS Provider" +#~ msgid "DNS Provider" +#~ msgstr "DNS Provider" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:50 -msgid "DNS names" -msgstr "DNS names" +#~ msgid "DNS names" +#~ msgstr "DNS names" -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:44 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:41 msgid "Daemon Sets" msgstr "Daemon Sets" @@ -780,20 +779,20 @@ msgstr "DaemonSets" #~ msgid "Dark" #~ msgstr "Dark" -#: src/renderer/components/+config-maps/config-map-details.tsx:69 -#: src/renderer/components/+config-secrets/secret-details.tsx:78 +#: src/renderer/components/+config-maps/config-map-details.tsx:68 +#: src/renderer/components/+config-secrets/secret-details.tsx:77 msgid "Data" msgstr "Data" -#: src/renderer/components/+storage-classes/storage-classes.tsx:37 +#: src/renderer/components/+storage-classes/storage-classes.tsx:34 msgid "Default" msgstr "Default" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:83 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:82 msgid "Default Add Capabilities" msgstr "Default Add Capabilities" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:135 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:134 msgid "Default Runtime Class Name" msgstr "Default Runtime Class Name" @@ -805,27 +804,27 @@ msgstr "Default Runtime Class Name" msgid "Definitions" msgstr "Definitions" -#: src/renderer/components/+workspaces/workspaces.tsx:126 +#: src/renderer/components/+workspaces/workspaces.tsx:131 #: src/renderer/components/menu/menu-actions.tsx:84 msgid "Delete" msgstr "Delete" -#: src/renderer/components/+workloads-replicasets/replicasets.tsx:47 +#: src/renderer/components/+workloads-replicasets/replicasets.tsx:45 msgid "Deploy Revisions" msgstr "Deploy Revisions" #: src/renderer/components/+workloads/workloads.tsx:45 -#: src/renderer/components/+workloads-deployments/deployments.tsx:57 +#: src/renderer/components/+workloads-deployments/deployments.tsx:55 msgid "Deployments" msgstr "Deployments" #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:65 -#: src/renderer/components/+workspaces/workspaces.tsx:131 +#: src/renderer/components/+workspaces/workspaces.tsx:136 msgid "Description" msgstr "Description" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:43 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:44 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:42 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:41 msgid "Desired Healthy" msgstr "Desired Healthy" @@ -833,27 +832,27 @@ msgstr "Desired Healthy" msgid "Desired number of replicas" msgstr "Desired number of replicas" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:62 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:63 msgid "Disconnect" msgstr "Disconnect" -#: src/renderer/components/+nodes/node-details.tsx:64 -#: src/renderer/components/+nodes/nodes.tsx:122 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44 +#: src/renderer/components/+nodes/node-details.tsx:63 +#: src/renderer/components/+nodes/nodes.tsx:119 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:43 msgid "Disk" msgstr "Disk" -#: src/renderer/components/+nodes/nodes.tsx:79 +#: src/renderer/components/+nodes/nodes.tsx:76 msgid "Disk:" msgstr "Disk:" -#: src/renderer/components/+preferences/preferences.tsx:168 +#: src/renderer/components/+preferences/preferences.tsx:154 msgid "Does not affect cluster communications!" msgstr "Does not affect cluster communications!" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:89 -msgid "Domains" -msgstr "Domains" +#~ msgid "Domains" +#~ msgstr "Domains" #: src/renderer/components/+preferences/preferences.tsx:129 #~ msgid "Download Mirror" @@ -881,27 +880,26 @@ msgstr "Download mirror for kubectl" #: src/renderer/components/+nodes/node-menu.tsx:59 #: src/renderer/components/+nodes/node-menu.tsx:60 -msgid "Drain" -msgstr "Drain" +#~ msgid "Drain" +#~ msgstr "Drain" #: src/renderer/components/+nodes/node-menu.tsx:39 -msgid "Drain Node" -msgstr "Drain Node" +#~ msgid "Drain Node" +#~ msgstr "Drain Node" #: src/renderer/components/+storage-volumes/volume-details.tsx:59 msgid "Driver" msgstr "Driver" -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:59 -#: src/renderer/components/+network-ingresses/ingress-details.tsx:87 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:86 msgid "Duration" msgstr "Duration" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:58 -msgid "E-mail" -msgstr "E-mail" +#~ msgid "E-mail" +#~ msgstr "E-mail" -#: src/renderer/components/+workspaces/workspaces.tsx:125 +#: src/renderer/components/+workspaces/workspaces.tsx:130 #: src/renderer/components/menu/menu-actions.tsx:80 #: src/renderer/components/menu/menu-actions.tsx:81 msgid "Edit" @@ -916,7 +914,7 @@ msgstr "Edit RoleBinding <0>{roleBindingName}" msgid "Effect" msgstr "Effect" -#: src/renderer/components/+network-policies/network-policy-details.tsx:105 +#: src/renderer/components/+network-policies/network-policy-details.tsx:104 msgid "Egress" msgstr "Egress" @@ -925,8 +923,8 @@ msgid "Endpoint" msgstr "Endpoint" #: src/renderer/components/+network/network.tsx:35 +#: src/renderer/components/+network-endpoints/endpoints.tsx:27 #: src/renderer/components/+network-endpoints/endpoints.tsx:30 -#: src/renderer/components/+network-endpoints/endpoints.tsx:33 #: src/renderer/components/+network-services/service-details-endpoint.tsx:27 msgid "Endpoints" msgstr "Endpoints" @@ -935,7 +933,7 @@ msgstr "Endpoints" msgid "Enter a name" msgstr "Enter a name" -#: src/renderer/components/+workloads-pods/pod-container-env.tsx:79 +#: src/renderer/components/+workloads-pods/pod-container-env.tsx:80 msgid "Environment" msgstr "Environment" @@ -951,7 +949,7 @@ msgstr "Error while adding cluster(s): {0}" #: src/renderer/components/+events/events.tsx:56 #: src/renderer/components/+events/kube-event-details.tsx:34 #: src/renderer/components/+events/kube-event-details.tsx:39 -#: src/renderer/components/layout/sidebar.tsx:86 +#: src/renderer/components/layout/sidebar.tsx:87 msgid "Events" msgstr "Events" @@ -972,7 +970,7 @@ msgstr "Exit full size mode" #~ msgid "Extended view" #~ msgstr "Extended view" -#: src/renderer/components/+network-services/services.tsx:49 +#: src/renderer/components/+network-services/services.tsx:46 msgid "External IP" msgstr "External IP" @@ -980,16 +978,16 @@ msgstr "External IP" msgid "External IPs" msgstr "External IPs" -#: src/renderer/components/dock/pod-logs.store.ts:65 +#: src/renderer/components/dock/pod-logs.store.ts:56 msgid "Failed to load logs: {0}" msgstr "Failed to load logs: {0}" -#: src/renderer/components/+events/event-details.tsx:58 +#: src/renderer/components/+events/event-details.tsx:57 msgid "Field Path" msgstr "Field Path" #: src/renderer/components/+workloads-pods/pod-charts.tsx:14 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:28 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:46 msgid "Filesystem" msgstr "Filesystem" @@ -1001,7 +999,11 @@ msgstr "Filters ({0}/{1})" msgid "Finalizers" msgstr "Finalizers" -#: src/renderer/components/+events/event-details.tsx:39 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:27 +msgid "Finished at" +msgstr "Finished at" + +#: src/renderer/components/+events/event-details.tsx:38 msgid "First seen" msgstr "First seen" @@ -1013,11 +1015,11 @@ msgstr "Fit to window" msgid "FlexVolume" msgstr "FlexVolume" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:67 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:66 msgid "Forbidden Sysctls" msgstr "Forbidden Sysctls" -#: src/renderer/components/+network-policies/network-policy-details.tsx:26 +#: src/renderer/components/+network-policies/network-policy-details.tsx:25 msgid "From" msgstr "From" @@ -1025,7 +1027,7 @@ msgstr "From" #~ msgid "From <0>{from} to <1>{to}" #~ msgstr "From <0>{from} to <1>{to}" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:125 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:124 msgid "Fs Group" msgstr "Fs Group" @@ -1037,13 +1039,13 @@ msgstr "Get started by associating one or more clusters to Lens." #~ msgid "Global Lens Settings page" #~ msgstr "Global Lens Settings page" -#: src/renderer/components/+custom-resources/crd-details.tsx:32 -#: src/renderer/components/+custom-resources/crd-list.tsx:58 -#: src/renderer/components/+custom-resources/crd-list.tsx:74 +#: src/renderer/components/+custom-resources/crd-details.tsx:31 +#: src/renderer/components/+custom-resources/crd-list.tsx:55 +#: src/renderer/components/+custom-resources/crd-list.tsx:71 msgid "Group" msgstr "Group" -#: src/renderer/components/+custom-resources/crd-list.tsx:60 +#: src/renderer/components/+custom-resources/crd-list.tsx:57 msgid "Groups" msgstr "Groups" @@ -1051,7 +1053,7 @@ msgstr "Groups" msgid "HPA" msgstr "HPA" -#: src/renderer/components/+preferences/preferences.tsx:137 +#: src/renderer/components/+preferences/preferences.tsx:123 msgid "HTTP Proxy" msgstr "HTTP Proxy" @@ -1059,7 +1061,7 @@ msgstr "HTTP Proxy" #~ msgid "HTTP Proxy server. Used for communicating with Kubernetes API." #~ msgstr "HTTP Proxy server. Used for communicating with Kubernetes API." -#: src/renderer/components/+preferences/preferences.tsx:145 +#: src/renderer/components/+preferences/preferences.tsx:131 msgid "Helm" msgstr "Helm" @@ -1079,12 +1081,12 @@ msgstr "Helm Install: {repo}/{name}" msgid "Helm Upgrade: {0}" msgstr "Helm Upgrade: {0}" -#: src/renderer/components/+preferences/preferences.tsx:51 +#: src/renderer/components/+preferences/preferences.tsx:45 msgid "Helm branch <0>{0} already in use" msgstr "Helm branch <0>{0} already in use" -#: src/renderer/components/+config-secrets/secret-details.tsx:93 -#: src/renderer/components/dock/pod-logs.tsx:159 +#: src/renderer/components/+config-secrets/secret-details.tsx:92 +#: src/renderer/components/dock/pod-log-controls.tsx:72 #: src/renderer/components/drawer/drawer-param-toggler.tsx:19 msgid "Hide" msgstr "Hide" @@ -1097,54 +1099,54 @@ msgstr "High number of replicas may cause cluster performance issues" msgid "Home" msgstr "Home" -#: src/renderer/components/+config-autoscalers/hpa.tsx:44 +#: src/renderer/components/+config-autoscalers/hpa.tsx:41 msgid "Horizontal Pod Autoscalers" msgstr "Horizontal Pod Autoscalers" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:91 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:90 msgid "Host IPC" msgstr "Host IPC" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:95 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:94 msgid "Host Network" msgstr "Host Network" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:99 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:98 msgid "Host PID" msgstr "Host PID" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:103 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:102 msgid "Host Ports (Min-Max)" msgstr "Host Ports (Min-Max)" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:38 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:37 msgid "Host: {0}" msgstr "Host: {0}" #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:33 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:64 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:76 -#: src/renderer/components/+network-ingresses/ingress-details.tsx:64 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:63 msgid "Hostname" msgstr "Hostname" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:92 -msgid "Http01" -msgstr "Http01" +#~ msgid "Http01" +#~ msgstr "Http01" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:65 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:64 msgid "IP" msgstr "IP" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:53 -msgid "IP addresses" -msgstr "IP addresses" +#~ msgid "IP addresses" +#~ msgstr "IP addresses" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:45 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:64 msgid "Image" msgstr "Image" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:49 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:68 msgid "ImagePullPolicy" msgstr "ImagePullPolicy" @@ -1152,24 +1154,24 @@ msgstr "ImagePullPolicy" msgid "ImagePullSecrets" msgstr "ImagePullSecrets" -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:65 -#: src/renderer/components/+workloads-jobs/job-details.tsx:64 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:77 -#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:64 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:64 +#: src/renderer/components/+workloads-jobs/job-details.tsx:63 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:76 +#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:63 msgid "Images" msgstr "Images" -#: src/renderer/components/+network-policies/network-policy-details.tsx:92 +#: src/renderer/components/+network-policies/network-policy-details.tsx:91 msgid "Ingress" msgstr "Ingress" #: src/renderer/components/+network/network.tsx:43 -#: src/renderer/components/+network-ingresses/ingresses.tsx:31 +#: src/renderer/components/+network-ingresses/ingresses.tsx:28 msgid "Ingresses" msgstr "Ingresses" #: src/renderer/components/+workloads-pods/pod-details.tsx:118 -#: src/renderer/components/dock/pod-logs.tsx:135 +#: src/renderer/components/dock/pod-log-controls.tsx:49 msgid "Init Containers" msgstr "Init Containers" @@ -1198,24 +1200,24 @@ msgstr "Invalid number" msgid "Involved Object" msgstr "Involved Object" -#: src/renderer/components/+events/event-details.tsx:52 +#: src/renderer/components/+events/event-details.tsx:51 msgid "Involved object" msgstr "Involved object" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:31 #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:64 -msgid "Issuer" -msgstr "Issuer" +#~ msgid "Issuer" +#~ msgstr "Issuer" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:53 -msgid "Issuers" -msgstr "Issuers" +#~ msgid "Issuers" +#~ msgstr "Issuers" #: src/renderer/components/no-items/no-items.tsx:9 msgid "Item list is empty" msgstr "Item list is empty" -#: src/renderer/components/+custom-resources/crd-details.tsx:83 +#: src/renderer/components/+custom-resources/crd-details.tsx:82 msgid "JSON Path" msgstr "JSON Path" @@ -1224,30 +1226,34 @@ msgid "Job name" msgstr "Job name" #: src/renderer/components/+workloads/workloads.tsx:69 -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:62 -#: src/renderer/components/+workloads-jobs/jobs.tsx:36 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:61 +#: src/renderer/components/+workloads-jobs/jobs.tsx:33 msgid "Jobs" msgstr "Jobs" -#: src/renderer/components/+nodes/node-details.tsx:92 +#: src/renderer/components/dock/pod-logs.tsx:151 +msgid "Jump to bottom" +msgstr "Jump to bottom" + +#: src/renderer/components/+nodes/node-details.tsx:91 msgid "Kernel version" msgstr "Kernel version" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:77 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:76 #: src/renderer/components/+workloads-pods/pod-details-tolerations.tsx:16 msgid "Key" msgstr "Key" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:68 -msgid "Key Algorithm" -msgstr "Key Algorithm" +#~ msgid "Key Algorithm" +#~ msgstr "Key Algorithm" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:65 -msgid "Key Size" -msgstr "Key Size" +#~ msgid "Key Size" +#~ msgstr "Key Size" -#: src/renderer/components/+config-maps/config-maps.tsx:36 -#: src/renderer/components/+config-secrets/secrets.tsx:44 +#: src/renderer/components/+config-maps/config-maps.tsx:33 +#: src/renderer/components/+config-secrets/secrets.tsx:41 msgid "Keys" msgstr "Keys" @@ -1255,13 +1261,13 @@ msgstr "Keys" msgid "Keywords" msgstr "Keywords" -#: src/renderer/components/+events/event-details.tsx:57 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:79 +#: src/renderer/components/+events/event-details.tsx:56 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:78 #: src/renderer/components/dock/edit-resource.tsx:88 msgid "Kind" msgstr "Kind" -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:62 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:59 msgid "Kubeconfig" msgstr "Kubeconfig" @@ -1273,34 +1279,37 @@ msgstr "Kubeconfig File" msgid "Kubectl Binary" msgstr "Kubectl Binary" -#: src/renderer/components/+nodes/node-details.tsx:98 +#: src/renderer/components/+nodes/node-details.tsx:97 msgid "Kubelet version" msgstr "Kubelet version" -#: src/renderer/components/+config-secrets/secrets.tsx:43 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:65 -#: src/renderer/components/+namespaces/namespaces.tsx:32 -#: src/renderer/components/+nodes/node-details.tsx:101 +#: src/renderer/components/+config-secrets/secrets.tsx:40 +#: src/renderer/components/+namespaces/namespaces.tsx:30 +#: src/renderer/components/+nodes/node-details.tsx:100 #: src/renderer/components/kube-object/kube-object-meta.tsx:35 msgid "Labels" msgstr "Labels" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:76 -msgid "Last Failure Time" -msgstr "Last Failure Time" +#~ msgid "Last Failure Time" +#~ msgstr "Last Failure Time" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:57 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:51 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:61 +msgid "Last Status" +msgstr "Last Status" + +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:56 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:49 msgid "Last schedule" msgstr "Last schedule" -#: src/renderer/components/+events/event-details.tsx:42 +#: src/renderer/components/+events/event-details.tsx:41 #: src/renderer/components/+events/kube-event-details.tsx:57 msgid "Last seen" msgstr "Last seen" -#: src/renderer/components/+custom-resources/crd-details.tsx:57 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:84 +#: src/renderer/components/+custom-resources/crd-details.tsx:56 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:83 #: src/renderer/components/+workloads-pods/pod-details.tsx:103 msgid "Last transition time: {lastTransitionTime}" msgstr "Last transition time: {lastTransitionTime}" @@ -1309,7 +1318,7 @@ msgstr "Last transition time: {lastTransitionTime}" #~ msgid "Lens Global Settings" #~ msgstr "Lens Global Settings" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:146 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:145 msgid "Level" msgstr "Level" @@ -1331,14 +1340,14 @@ msgid "Limits" msgstr "Limits" #: src/renderer/components/dock/pod-logs.tsx:150 -msgid "Lines" -msgstr "Lines" +#~ msgid "Lines" +#~ msgstr "Lines" #: src/renderer/components/kube-object/kube-object-meta.tsx:29 msgid "Link" msgstr "Link" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:71 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:90 msgid "Liveness" msgstr "Liveness" @@ -1346,18 +1355,22 @@ msgstr "Liveness" msgid "Load Balancer IP" msgstr "Load Balancer IP" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:108 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:107 msgid "Load-Balancer Ingress Points" msgstr "Load-Balancer Ingress Points" +#: src/renderer/components/+network-ingresses/ingresses.tsx:31 +msgid "LoadBalancers" +msgstr "LoadBalancers" + #: src/renderer/components/app-init/app-init.tsx:43 msgid "Loading" msgstr "Loading" #: src/renderer/components/+workloads-pods/pod-menu.tsx:100 #: src/renderer/components/+workloads-pods/pod-menu.tsx:101 -msgid "Logs" -msgstr "Logs" +#~ msgid "Logs" +#~ msgstr "Logs" #: src/renderer/components/dialog/logs-dialog.tsx:27 msgid "Logs copied to clipboard." @@ -1371,21 +1384,21 @@ msgstr "Maintainers" msgid "Master" msgstr "Master" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:75 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:74 msgid "Match Expressions" msgstr "Match Expressions" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:71 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:70 msgid "Match Labels" msgstr "Match Labels" #: src/renderer/components/+config-autoscalers/hpa-details.tsx:80 -#: src/renderer/components/+config-autoscalers/hpa.tsx:49 +#: src/renderer/components/+config-autoscalers/hpa.tsx:46 msgid "Max Pods" msgstr "Max Pods" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:35 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:42 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:34 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:39 msgid "Max Unavailable" msgstr "Max Unavailable" @@ -1399,12 +1412,12 @@ msgstr "Medium" #: src/renderer/components/+cluster/cluster-metric-switchers.tsx:25 #: src/renderer/components/+cluster/cluster-pie-charts.tsx:144 -#: src/renderer/components/+nodes/node-details.tsx:63 -#: src/renderer/components/+nodes/node-details.tsx:74 -#: src/renderer/components/+nodes/node-details.tsx:79 -#: src/renderer/components/+nodes/nodes.tsx:121 +#: src/renderer/components/+nodes/node-details.tsx:62 +#: src/renderer/components/+nodes/node-details.tsx:73 +#: src/renderer/components/+nodes/node-details.tsx:78 +#: src/renderer/components/+nodes/nodes.tsx:118 #: src/renderer/components/+workloads-pods/pod-charts.tsx:12 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:27 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:45 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:63 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:96 #: src/renderer/components/resource-metrics/resource-metrics-text.tsx:18 @@ -1429,17 +1442,17 @@ msgstr "Memory requests" msgid "Memory usage" msgstr "Memory usage" -#: src/renderer/components/+nodes/nodes.tsx:68 +#: src/renderer/components/+nodes/nodes.tsx:65 msgid "Memory:" msgstr "Memory:" #: src/renderer/components/+cluster/cluster-issues.tsx:100 -#: src/renderer/components/+events/event-details.tsx:30 +#: src/renderer/components/+events/event-details.tsx:29 #: src/renderer/components/+events/events.tsx:62 msgid "Message" msgstr "Message" -#: src/renderer/components/+config-autoscalers/hpa.tsx:47 +#: src/renderer/components/+config-autoscalers/hpa.tsx:44 msgid "Metrics" msgstr "Metrics" @@ -1451,13 +1464,13 @@ msgstr "Metrics are not available due to missing or invalid Prometheus configura msgid "Metrics not available at the moment" msgstr "Metrics not available at the moment" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:31 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:41 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:30 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:38 msgid "Min Available" msgstr "Min Available" #: src/renderer/components/+config-autoscalers/hpa-details.tsx:76 -#: src/renderer/components/+config-autoscalers/hpa.tsx:48 +#: src/renderer/components/+config-autoscalers/hpa.tsx:45 msgid "Min Pods" msgstr "Min Pods" @@ -1469,7 +1482,7 @@ msgstr "Minimize" msgid "Minimum length is {minLength}" msgstr "Minimum length is {minLength}" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:38 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:37 #: src/renderer/components/+storage-volumes/volume-details.tsx:33 msgid "Mount Options" msgstr "Mount Options" @@ -1478,7 +1491,7 @@ msgstr "Mount Options" msgid "Mountable secrets" msgstr "Mountable secrets" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:61 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:80 msgid "Mounts" msgstr "Mounts" @@ -1489,47 +1502,45 @@ msgstr "Mounts" #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:64 #: src/renderer/components/+apps-releases/releases.tsx:87 #: src/renderer/components/+config-autoscalers/hpa-details.tsx:49 -#: src/renderer/components/+config-autoscalers/hpa.tsx:45 -#: src/renderer/components/+config-maps/config-maps.tsx:34 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:39 -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:34 +#: src/renderer/components/+config-autoscalers/hpa.tsx:42 +#: src/renderer/components/+config-maps/config-maps.tsx:31 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:36 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:31 #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:131 #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:148 -#: src/renderer/components/+config-secrets/secrets.tsx:41 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:60 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:63 -#: src/renderer/components/+custom-resources/crd-details.tsx:81 -#: src/renderer/components/+custom-resources/crd-resources.tsx:63 -#: src/renderer/components/+events/event-details.tsx:55 -#: src/renderer/components/+namespaces/namespaces.tsx:31 +#: src/renderer/components/+config-secrets/secrets.tsx:38 +#: src/renderer/components/+custom-resources/crd-details.tsx:80 +#: src/renderer/components/+custom-resources/crd-resources.tsx:60 +#: src/renderer/components/+events/event-details.tsx:54 +#: src/renderer/components/+namespaces/namespaces.tsx:29 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:87 -#: src/renderer/components/+network-endpoints/endpoints.tsx:31 -#: src/renderer/components/+network-ingresses/ingresses.tsx:32 -#: src/renderer/components/+network-policies/network-policies.tsx:31 +#: src/renderer/components/+network-endpoints/endpoints.tsx:28 +#: src/renderer/components/+network-ingresses/ingresses.tsx:29 +#: src/renderer/components/+network-policies/network-policies.tsx:28 #: src/renderer/components/+network-services/service-details-endpoint.tsx:26 -#: src/renderer/components/+network-services/services.tsx:44 -#: src/renderer/components/+nodes/nodes.tsx:119 -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:35 -#: src/renderer/components/+storage-classes/storage-classes.tsx:34 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:46 +#: src/renderer/components/+network-services/services.tsx:41 +#: src/renderer/components/+nodes/nodes.tsx:116 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:32 +#: src/renderer/components/+storage-classes/storage-classes.tsx:31 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:43 #: src/renderer/components/+storage-volumes/volume-details.tsx:72 -#: src/renderer/components/+storage-volumes/volumes.tsx:40 -#: src/renderer/components/+user-management-roles/roles.tsx:33 +#: src/renderer/components/+storage-volumes/volumes.tsx:37 +#: src/renderer/components/+user-management-roles/roles.tsx:30 #: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:191 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:80 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:35 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:79 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:32 #: src/renderer/components/+user-management-service-accounts/service-accounts-secret.tsx:29 -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:36 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:45 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:45 -#: src/renderer/components/+workloads-deployments/deployments.tsx:58 -#: src/renderer/components/+workloads-jobs/jobs.tsx:37 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:34 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:43 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:42 +#: src/renderer/components/+workloads-deployments/deployments.tsx:56 +#: src/renderer/components/+workloads-jobs/jobs.tsx:34 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:92 #: src/renderer/components/+workloads-pods/pod-details.tsx:144 -#: src/renderer/components/+workloads-pods/pods.tsx:74 -#: src/renderer/components/+workloads-replicasets/replicasets.tsx:50 -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:40 -#: src/renderer/components/+workspaces/workspaces.tsx:130 +#: src/renderer/components/+workloads-pods/pods.tsx:71 +#: src/renderer/components/+workloads-replicasets/replicasets.tsx:48 +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:37 +#: src/renderer/components/+workspaces/workspaces.tsx:135 #: src/renderer/components/dock/edit-resource.tsx:89 #: src/renderer/components/kube-object/kube-object-meta.tsx:20 msgid "Name" @@ -1539,45 +1550,44 @@ msgstr "Name" msgid "Name (optional)" msgstr "Name (optional)" -#: src/renderer/components/+custom-resources/crd-details.tsx:61 +#: src/renderer/components/+custom-resources/crd-details.tsx:60 msgid "Names" msgstr "Names" #: src/renderer/components/+apps-releases/release-details.tsx:182 #: src/renderer/components/+apps-releases/releases.tsx:88 -#: src/renderer/components/+config-autoscalers/hpa.tsx:46 -#: src/renderer/components/+config-maps/config-maps.tsx:35 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:40 +#: src/renderer/components/+config-autoscalers/hpa.tsx:43 +#: src/renderer/components/+config-maps/config-maps.tsx:32 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:37 #: src/renderer/components/+config-resource-quotas/add-quota-dialog.tsx:129 #: src/renderer/components/+config-resource-quotas/add-quota-dialog.tsx:130 -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:35 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:32 #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:152 -#: src/renderer/components/+config-secrets/secrets.tsx:42 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:61 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:64 -#: src/renderer/components/+custom-resources/crd-resources.tsx:64 -#: src/renderer/components/+events/event-details.tsx:56 +#: src/renderer/components/+config-secrets/secrets.tsx:39 +#: src/renderer/components/+custom-resources/crd-resources.tsx:61 +#: src/renderer/components/+events/event-details.tsx:55 #: src/renderer/components/+events/events.tsx:63 #: src/renderer/components/+namespaces/add-namespace-dialog.tsx:73 -#: src/renderer/components/+network-endpoints/endpoints.tsx:32 -#: src/renderer/components/+network-ingresses/ingresses.tsx:33 -#: src/renderer/components/+network-policies/network-policies.tsx:32 -#: src/renderer/components/+network-services/services.tsx:45 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:47 +#: src/renderer/components/+network-endpoints/endpoints.tsx:29 +#: src/renderer/components/+network-ingresses/ingresses.tsx:30 +#: src/renderer/components/+network-policies/network-policies.tsx:29 +#: src/renderer/components/+network-services/services.tsx:42 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:44 #: src/renderer/components/+storage-volumes/volume-details.tsx:77 -#: src/renderer/components/+user-management-roles/roles.tsx:34 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:96 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:37 +#: src/renderer/components/+user-management-roles/roles.tsx:31 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:95 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:34 #: src/renderer/components/+user-management-service-accounts/create-service-account-dialog.tsx:79 -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:37 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:47 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:46 -#: src/renderer/components/+workloads-deployments/deployments.tsx:59 -#: src/renderer/components/+workloads-jobs/jobs.tsx:38 -#: src/renderer/components/+workloads-pods/pods.tsx:76 -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:41 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:35 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:45 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:43 +#: src/renderer/components/+workloads-deployments/deployments.tsx:57 +#: src/renderer/components/+workloads-jobs/jobs.tsx:35 +#: src/renderer/components/+workloads-pods/pods.tsx:73 +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:38 #: src/renderer/components/dock/edit-resource.tsx:90 #: src/renderer/components/dock/install-chart.tsx:122 +#: src/renderer/components/dock/pod-log-controls.tsx:62 #: src/renderer/components/dock/upgrade-chart.tsx:98 #: src/renderer/components/item-object-list/page-filters-select.tsx:57 #: src/renderer/components/kube-object/kube-object-meta.tsx:23 @@ -1588,8 +1598,8 @@ msgstr "Namespace" msgid "Namespace: {0}" msgstr "Namespace: {0}" -#: src/renderer/components/+namespaces/namespaces.tsx:30 -#: src/renderer/components/layout/sidebar.tsx:85 +#: src/renderer/components/+namespaces/namespaces.tsx:28 +#: src/renderer/components/layout/sidebar.tsx:86 msgid "Namespaces" msgstr "Namespaces" @@ -1597,13 +1607,13 @@ msgstr "Namespaces" msgid "Namespaces: {0}" msgstr "Namespaces: {0}" -#: src/renderer/components/+preferences/preferences.tsx:167 +#: src/renderer/components/+preferences/preferences.tsx:153 msgid "Needed with some corporate proxies that do certificate re-writing." msgstr "Needed with some corporate proxies that do certificate re-writing." -#: src/renderer/components/+network-ingresses/ingress-details.tsx:86 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:85 #: src/renderer/components/+workloads-pods/pod-charts.tsx:13 -#: src/renderer/components/layout/sidebar.tsx:83 +#: src/renderer/components/layout/sidebar.tsx:84 msgid "Network" msgstr "Network" @@ -1612,13 +1622,17 @@ msgid "Network File System" msgstr "Network File System" #: src/renderer/components/+network/network.tsx:51 -#: src/renderer/components/+network-policies/network-policies.tsx:30 +#: src/renderer/components/+network-policies/network-policies.tsx:27 msgid "Network Policies" msgstr "Network Policies" +#: src/renderer/components/dock/pod-logs.tsx:171 +msgid "New logs since opening logs tab" +msgstr "New logs since opening logs tab" + #: src/renderer/components/dock/pod-logs.tsx:178 -msgid "New logs since opening the dialog" -msgstr "New logs since opening the dialog" +#~ msgid "New logs since opening the dialog" +#~ msgstr "New logs since opening the dialog" #: src/renderer/components/dock/dock.tsx:92 msgid "New tab" @@ -1637,16 +1651,14 @@ msgid "Next" msgstr "Next" #: src/renderer/components/+cluster-settings/components/remove-cluster-button.tsx:29 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:44 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:71 -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:42 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:72 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:76 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:80 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:92 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:96 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:100 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:119 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:39 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:71 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:75 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:79 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:91 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:95 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:99 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:118 msgid "No" msgstr "No" @@ -1678,7 +1690,6 @@ msgstr "No items found." msgid "No revisions to rollback." msgstr "No revisions to rollback." -#: src/renderer/components/+nodes/node-menu.tsx:24 #: src/renderer/components/+workloads-pods/pod-details.tsx:85 msgid "Node" msgstr "Node" @@ -1687,13 +1698,13 @@ msgstr "Node" msgid "Node Pods capacity" msgstr "Node Pods capacity" -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:61 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:49 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:73 -#: src/renderer/components/+workloads-jobs/job-details.tsx:60 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:60 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:46 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:72 +#: src/renderer/components/+workloads-jobs/job-details.tsx:59 #: src/renderer/components/+workloads-pods/pod-details.tsx:107 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:73 -#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:60 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:72 +#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:59 msgid "Node Selector" msgstr "Node Selector" @@ -1706,17 +1717,17 @@ msgid "Node filesystem usage in bytes" msgstr "Node filesystem usage in bytes" #: src/renderer/components/+nodes/node-menu.tsx:47 -msgid "Node shell" -msgstr "Node shell" +#~ msgid "Node shell" +#~ msgstr "Node shell" -#: src/renderer/components/+nodes/nodes.tsx:118 -#: src/renderer/components/layout/sidebar.tsx:80 +#: src/renderer/components/+nodes/nodes.tsx:115 +#: src/renderer/components/layout/sidebar.tsx:81 msgid "Nodes" msgstr "Nodes" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:72 -msgid "Not After" -msgstr "Not After" +#~ msgid "Not After" +#~ msgstr "Not After" #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:72 msgid "Not Ready Addresses" @@ -1734,11 +1745,11 @@ msgstr "Notes" msgid "Number of running Pods" msgstr "Number of running Pods" -#: src/renderer/components/+nodes/node-details.tsx:86 +#: src/renderer/components/+nodes/node-details.tsx:85 msgid "OS" msgstr "OS" -#: src/renderer/components/+nodes/node-details.tsx:89 +#: src/renderer/components/+nodes/node-details.tsx:88 msgid "OS Image" msgstr "OS Image" @@ -1764,14 +1775,14 @@ msgid "Open in a browser" msgstr "Open in a browser" #: src/renderer/components/+config-resource-quotas/resource-quota-details.tsx:60 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:78 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:77 #: src/renderer/components/+workloads-pods/pod-details-tolerations.tsx:17 msgid "Operator" msgstr "Operator" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:56 -msgid "Organization" -msgstr "Organization" +#~ msgid "Organization" +#~ msgstr "Organization" #: src/renderer/components/+workloads/workloads.tsx:29 #: src/renderer/components/+workloads-overview/overview-statuses.tsx:45 @@ -1782,11 +1793,11 @@ msgstr "Overview" msgid "Page not found" msgstr "Page not found" -#: src/renderer/components/+workloads-jobs/job-details.tsx:83 +#: src/renderer/components/+workloads-jobs/job-details.tsx:82 msgid "Parallelism" msgstr "Parallelism" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:42 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:41 msgid "Parameters" msgstr "Parameters" @@ -1794,23 +1805,21 @@ msgstr "Parameters" msgid "Paste as text" msgstr "Paste as text" -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:94 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:102 -#: src/renderer/components/+network-ingresses/ingress-details.tsx:42 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:41 msgid "Path" msgstr "Path" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:113 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:112 msgid "Path Prefix" msgstr "Path Prefix" #: src/renderer/components/+storage/storage.tsx:25 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:45 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:42 msgid "Persistent Volume Claims" msgstr "Persistent Volume Claims" #: src/renderer/components/+storage/storage.tsx:32 -#: src/renderer/components/+storage-volumes/volumes.tsx:39 +#: src/renderer/components/+storage-volumes/volumes.tsx:36 msgid "Persistent Volumes" msgstr "Persistent Volumes" @@ -1838,12 +1847,12 @@ msgstr "Please select at least one cluster context" #~ msgid "Please select kubeconfig's context" #~ msgstr "Please select kubeconfig's context" -#: src/renderer/components/+workloads-pods/pod-menu.tsx:50 +#: src/renderer/components/dock/pod-log-controls.tsx:61 msgid "Pod" msgstr "Pod" #: src/renderer/components/+config/config.tsx:63 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:38 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:35 msgid "Pod Disruption Budgets" msgstr "Pod Disruption Budgets" @@ -1851,43 +1860,43 @@ msgstr "Pod Disruption Budgets" msgid "Pod IP" msgstr "Pod IP" -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:34 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:31 #: src/renderer/components/+user-management/user-management.tsx:43 msgid "Pod Security Policies" msgstr "Pod Security Policies" -#: src/renderer/components/+network-policies/network-policy-details.tsx:85 +#: src/renderer/components/+network-policies/network-policy-details.tsx:84 msgid "Pod Selector" msgstr "Pod Selector" -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:73 -#: src/renderer/components/+workloads-jobs/job-details.tsx:88 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:85 -#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:69 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:72 +#: src/renderer/components/+workloads-jobs/job-details.tsx:87 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:84 +#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:68 msgid "Pod Status" msgstr "Pod Status" #: src/renderer/components/+workloads-pods/pod-menu.tsx:77 -msgid "Pod shell" -msgstr "Pod shell" +#~ msgid "Pod shell" +#~ msgstr "Pod shell" #: src/renderer/components/+cluster/cluster-pie-charts.tsx:148 -#: src/renderer/components/+nodes/node-details.tsx:65 -#: src/renderer/components/+nodes/node-details.tsx:75 -#: src/renderer/components/+nodes/node-details.tsx:80 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:60 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:50 +#: src/renderer/components/+nodes/node-details.tsx:64 +#: src/renderer/components/+nodes/node-details.tsx:74 +#: src/renderer/components/+nodes/node-details.tsx:79 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:59 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:47 #: src/renderer/components/+workloads/workloads.tsx:37 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:47 -#: src/renderer/components/+workloads-deployments/deployments.tsx:60 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:44 +#: src/renderer/components/+workloads-deployments/deployments.tsx:58 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:89 -#: src/renderer/components/+workloads-pods/pods.tsx:73 -#: src/renderer/components/+workloads-replicasets/replicasets.tsx:52 -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:42 +#: src/renderer/components/+workloads-pods/pods.tsx:70 +#: src/renderer/components/+workloads-replicasets/replicasets.tsx:50 +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:39 msgid "Pods" msgstr "Pods" -#: src/renderer/components/+network-policies/network-policies.tsx:33 +#: src/renderer/components/+network-policies/network-policies.tsx:30 msgid "Policy Types" msgstr "Policy Types" @@ -1896,29 +1905,29 @@ msgid "Port" msgstr "Port" #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:83 -#: src/renderer/components/+network-ingresses/ingress-details.tsx:94 -#: src/renderer/components/+network-policies/network-policy-details.tsx:96 -#: src/renderer/components/+network-policies/network-policy-details.tsx:109 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:93 +#: src/renderer/components/+network-policies/network-policy-details.tsx:95 +#: src/renderer/components/+network-policies/network-policy-details.tsx:108 #: src/renderer/components/+network-services/service-details.tsx:59 -#: src/renderer/components/+network-services/services.tsx:48 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:53 +#: src/renderer/components/+network-services/services.tsx:45 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:72 msgid "Ports" msgstr "Ports" -#: src/renderer/components/+preferences/preferences.tsx:121 -#~ msgid "Preferences" -#~ msgstr "Preferences" +#: src/renderer/components/+preferences/preferences.tsx:118 +msgid "Preferences" +msgstr "Preferences" #: src/renderer/components/+workloads-pods/pod-details.tsx:93 msgid "Priority Class" msgstr "Priority Class" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:67 -msgid "Private Key Secret" -msgstr "Private Key Secret" +#~ msgid "Private Key Secret" +#~ msgstr "Private Key Secret" -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:36 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:75 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:33 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:74 msgid "Privileged" msgstr "Privileged" @@ -1950,12 +1959,12 @@ msgstr "Pro-Tip: you can also drag-n-drop kubeconfig file to this area" #~ msgid "Pro-tip: you can also drag-n-drop kube-config file to this area" #~ msgstr "Pro-tip: you can also drag-n-drop kube-config file to this area" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:28 -#: src/renderer/components/+storage-classes/storage-classes.tsx:35 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:27 +#: src/renderer/components/+storage-classes/storage-classes.tsx:32 msgid "Provisioner" msgstr "Provisioner" -#: src/renderer/components/+preferences/preferences.tsx:140 +#: src/renderer/components/+preferences/preferences.tsx:126 msgid "Proxy is used only for non-cluster communication." msgstr "Proxy is used only for non-cluster communication." @@ -1963,7 +1972,7 @@ msgstr "Proxy is used only for non-cluster communication." msgid "Proxy settings" msgstr "Proxy settings" -#: src/renderer/components/+workloads-pods/pods.tsx:80 +#: src/renderer/components/+workloads-pods/pods.tsx:77 msgid "QoS" msgstr "QoS" @@ -1975,27 +1984,28 @@ msgstr "QoS Class" msgid "Quotas" msgstr "Quotas" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:27 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:26 msgid "Ranges (Min-Max)" msgstr "Ranges (Min-Max)" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:114 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:113 msgid "Read-only" msgstr "Read-only" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:79 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:78 msgid "Read-only Root Filesystem" msgstr "Read-only Root Filesystem" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:75 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:94 msgid "Readiness" msgstr "Readiness" -#: src/renderer/components/+events/event-details.tsx:33 +#: src/renderer/components/+events/event-details.tsx:32 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:25 msgid "Reason" msgstr "Reason" -#: src/renderer/components/dock/pod-logs.store.ts:66 +#: src/renderer/components/dock/pod-logs.store.ts:57 msgid "Reason: {0} ({1})" msgstr "Reason: {0} ({1})" @@ -2003,8 +2013,8 @@ msgstr "Reason: {0} ({1})" msgid "Receive" msgstr "Receive" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:34 -#: src/renderer/components/+storage-classes/storage-classes.tsx:36 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:33 +#: src/renderer/components/+storage-classes/storage-classes.tsx:33 #: src/renderer/components/+storage-volumes/volume-details.tsx:40 msgid "Reclaim Policy" msgstr "Reclaim Policy" @@ -2014,7 +2024,7 @@ msgstr "Reclaim Policy" #~ msgstr "Reconnect" #: src/renderer/components/+config-autoscalers/hpa-details.tsx:70 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:76 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:75 msgid "Reference" msgstr "Reference" @@ -2039,10 +2049,10 @@ msgstr "Release: {0}" msgid "Releases" msgstr "Releases" -#: src/renderer/components/+preferences/preferences.tsx:152 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:60 -#: src/renderer/components/cluster-manager/clusters-menu.tsx:73 -#: src/renderer/components/cluster-manager/clusters-menu.tsx:79 +#: src/renderer/components/+preferences/preferences.tsx:138 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:59 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:74 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:80 #: src/renderer/components/item-object-list/item-list-layout.tsx:179 #: src/renderer/components/menu/menu-actions.tsx:49 #: src/renderer/components/menu/menu-actions.tsx:85 @@ -2065,11 +2075,11 @@ msgstr "Remove field" msgid "Remove item?" msgstr "Remove item?" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:61 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:60 msgid "Remove selected bindings for <0>{0}?" msgstr "Remove selected bindings for <0>{0}?" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:112 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:111 msgid "Remove selected bindings from ${name}" msgstr "Remove selected bindings from ${name}" @@ -2077,11 +2087,11 @@ msgstr "Remove selected bindings from ${name}" msgid "Remove selected items ({0})" msgstr "Remove selected items ({0})" -#: src/renderer/components/kube-object/kube-object-menu.tsx:69 +#: src/renderer/components/kube-object/kube-object-menu.tsx:70 msgid "Remove {resourceKind} <0>{resourceName}?" msgstr "Remove {resourceKind} <0>{resourceName}?" -#: src/renderer/components/+preferences/preferences.tsx:122 +#: src/renderer/components/+preferences/preferences.tsx:112 msgid "Removing helm branch <0>{0} has failed: {1}" msgstr "Removing helm branch <0>{0} has failed: {1}" @@ -2090,14 +2100,14 @@ msgstr "Removing helm branch <0>{0} has failed: {1}" #~ msgstr "Removing repo <0>{0} has failed: {1}" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:62 -msgid "Renew Before" -msgstr "Renew Before" +#~ msgid "Renew Before" +#~ msgstr "Renew Before" #: src/renderer/components/+config-autoscalers/hpa-details.tsx:84 -#: src/renderer/components/+config-autoscalers/hpa.tsx:50 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:63 -#: src/renderer/components/+workloads-deployments/deployments.tsx:61 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:80 +#: src/renderer/components/+config-autoscalers/hpa.tsx:47 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:62 +#: src/renderer/components/+workloads-deployments/deployments.tsx:59 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:79 msgid "Replicas" msgstr "Replicas" @@ -2105,7 +2115,7 @@ msgstr "Replicas" msgid "Repo/Name" msgstr "Repo/Name" -#: src/renderer/components/+preferences/preferences.tsx:146 +#: src/renderer/components/+preferences/preferences.tsx:132 msgid "Repositories" msgstr "Repositories" @@ -2132,7 +2142,7 @@ msgstr "Request duration in seconds" msgid "Requests" msgstr "Requests" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:87 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:86 msgid "Required Drop Capabilities" msgstr "Required Drop Capabilities" @@ -2161,18 +2171,18 @@ msgstr "Reset filters?" #~ msgid "Resetting kube-config to default: {kubeConfigDefaultPath}" #~ msgstr "Resetting kube-config to default: {kubeConfigDefaultPath}" -#: src/renderer/components/+custom-resources/crd-details.tsx:44 -#: src/renderer/components/+custom-resources/crd-list.tsx:73 +#: src/renderer/components/+custom-resources/crd-details.tsx:43 +#: src/renderer/components/+custom-resources/crd-list.tsx:70 msgid "Resource" msgstr "Resource" -#: src/renderer/components/+user-management-roles/role-details.tsx:45 +#: src/renderer/components/+user-management-roles/role-details.tsx:44 msgid "Resource Names" msgstr "Resource Names" #: src/renderer/components/+config/config.tsx:47 -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:33 -#: src/renderer/components/+namespaces/namespace-details.tsx:41 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:30 +#: src/renderer/components/+namespaces/namespace-details.tsx:40 msgid "Resource Quotas" msgstr "Resource Quotas" @@ -2180,7 +2190,7 @@ msgstr "Resource Quotas" msgid "Resource Version" msgstr "Resource Version" -#: src/renderer/components/kube-object/kube-object-details.tsx:46 +#: src/renderer/components/kube-object/kube-object-details.tsx:48 msgid "Resource loading has failed: <0>{0}" msgstr "Resource loading has failed: <0>{0}" @@ -2193,7 +2203,7 @@ msgid "ResourceQuota name" msgstr "ResourceQuota name" #: src/renderer/components/+apps-releases/release-details.tsx:198 -#: src/renderer/components/+user-management-roles/role-details.tsx:29 +#: src/renderer/components/+user-management-roles/role-details.tsx:28 msgid "Resources" msgstr "Resources" @@ -2209,7 +2219,7 @@ msgstr "Response duration in seconds" msgid "Restart session" msgstr "Restart session" -#: src/renderer/components/+workloads-pods/pods.tsx:78 +#: src/renderer/components/+workloads-pods/pods.tsx:75 msgid "Restarts" msgstr "Restarts" @@ -2222,27 +2232,27 @@ msgstr "Revision" msgid "Right click cluster icon to open cluster settings." msgstr "Right click cluster icon to open cluster settings." -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:149 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:148 #: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:187 msgid "Role" msgstr "Role" #: src/renderer/components/+user-management/user-management.tsx:31 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:34 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:31 msgid "Role Bindings" msgstr "Role Bindings" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:105 -msgid "Role ID" -msgstr "Role ID" +#~ msgid "Role ID" +#~ msgstr "Role ID" #: src/renderer/components/+user-management-roles/add-role-dialog.tsx:74 msgid "Role name" msgstr "Role name" -#: src/renderer/components/+nodes/nodes.tsx:124 +#: src/renderer/components/+nodes/nodes.tsx:121 #: src/renderer/components/+user-management/user-management.tsx:36 -#: src/renderer/components/+user-management-roles/roles.tsx:32 +#: src/renderer/components/+user-management-roles/roles.tsx:29 msgid "Roles" msgstr "Roles" @@ -2256,41 +2266,41 @@ msgstr "Rollback" msgid "Rollback <0>{releaseName}" msgstr "Rollback <0>{releaseName}" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:24 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:142 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:23 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:141 msgid "Rule" msgstr "Rule" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:105 -#: src/renderer/components/+network-ingresses/ingresses.tsx:34 -#: src/renderer/components/+user-management-roles/role-details.tsx:25 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:104 +#: src/renderer/components/+network-ingresses/ingresses.tsx:32 +#: src/renderer/components/+user-management-roles/role-details.tsx:24 msgid "Rules" msgstr "Rules" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:126 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:125 msgid "Run As Group" msgstr "Run As Group" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:127 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:126 msgid "Run As User" msgstr "Run As User" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:131 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:130 msgid "Runtime Class" msgstr "Runtime Class" #: src/renderer/components/+apps-releases/release-details.tsx:114 -#: src/renderer/components/+config-maps/config-map-details.tsx:78 -#: src/renderer/components/+config-secrets/secret-details.tsx:97 -#: src/renderer/components/+workspaces/workspaces.tsx:132 +#: src/renderer/components/+config-maps/config-map-details.tsx:77 +#: src/renderer/components/+config-secrets/secret-details.tsx:96 +#: src/renderer/components/+workspaces/workspaces.tsx:137 #: src/renderer/components/dock/edit-resource.tsx:87 -#: src/renderer/components/dock/pod-logs.tsx:161 +#: src/renderer/components/dock/pod-log-controls.tsx:74 msgid "Save" msgstr "Save" #: src/renderer/components/+workloads-deployments/deployment-scale-dialog.tsx:128 -#: src/renderer/components/+workloads-deployments/deployments.tsx:86 -#: src/renderer/components/+workloads-deployments/deployments.tsx:87 +#: src/renderer/components/+workloads-deployments/deployments.tsx:83 +#: src/renderer/components/+workloads-deployments/deployments.tsx:84 msgid "Scale" msgstr "Scale" @@ -2298,13 +2308,13 @@ msgstr "Scale" msgid "Scale Deployment <0>{deploymentName}" msgstr "Scale Deployment <0>{deploymentName}" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:46 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:45 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:46 msgid "Schedule" msgstr "Schedule" -#: src/renderer/components/+custom-resources/crd-details.tsx:41 -#: src/renderer/components/+custom-resources/crd-list.tsx:76 +#: src/renderer/components/+custom-resources/crd-details.tsx:40 +#: src/renderer/components/+custom-resources/crd-list.tsx:73 msgid "Scope" msgstr "Scope" @@ -2316,7 +2326,7 @@ msgstr "Scope Selector" msgid "Scope name" msgstr "Scope name" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:141 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:140 msgid "Se Linux" msgstr "Se Linux" @@ -2330,13 +2340,13 @@ msgstr "Search..." #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:65 #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:108 -msgid "Secret" -msgstr "Secret" +#~ msgid "Secret" +#~ msgstr "Secret" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:37 #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:80 -msgid "Secret Name" -msgstr "Secret Name" +#~ msgid "Secret Name" +#~ msgstr "Secret Name" #: src/renderer/components/+user-management-service-accounts/service-accounts-details.tsx:72 msgid "Secret is not found" @@ -2346,7 +2356,7 @@ msgstr "Secret is not found" msgid "Secret name" msgstr "Secret name" -#: src/renderer/components/+config-secrets/secret-details.tsx:44 +#: src/renderer/components/+config-secrets/secret-details.tsx:43 msgid "Secret successfully updated." msgstr "Secret successfully updated." @@ -2355,7 +2365,7 @@ msgid "Secret type" msgstr "Secret type" #: src/renderer/components/+config/config.tsx:39 -#: src/renderer/components/+config-secrets/secrets.tsx:40 +#: src/renderer/components/+config-secrets/secrets.tsx:37 #: src/renderer/components/+workloads-pods/pod-details.tsx:113 msgid "Secrets" msgstr "Secrets" @@ -2442,35 +2452,35 @@ msgstr "Selected contexts: <0>{0}" #~ msgid "Selected contexts: {0}" #~ msgstr "Selected contexts: {0}" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:27 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:26 #: src/renderer/components/+network-services/service-details.tsx:37 -#: src/renderer/components/+network-services/services.tsx:50 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:69 -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:75 -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:57 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:69 -#: src/renderer/components/+workloads-jobs/job-details.tsx:56 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:69 -#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:56 +#: src/renderer/components/+network-services/services.tsx:47 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:68 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:74 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:56 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:68 +#: src/renderer/components/+workloads-jobs/job-details.tsx:55 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:68 +#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:55 msgid "Selector" msgstr "Selector" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:61 #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:91 -msgid "Server" -msgstr "Server" +#~ msgid "Server" +#~ msgstr "Server" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:102 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:101 msgid "Service" msgstr "Service" #: src/renderer/components/+user-management/user-management.tsx:26 -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:35 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:33 msgid "Service Accounts" msgstr "Service Accounts" #: src/renderer/components/+network/network.tsx:27 -#: src/renderer/components/+network-services/services.tsx:43 +#: src/renderer/components/+network-services/services.tsx:40 msgid "Services" msgstr "Services" @@ -2486,18 +2496,18 @@ msgstr "Set" msgid "Set quota" msgstr "Set quota" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:51 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:52 msgid "Settings" msgstr "Settings" #: src/renderer/components/+nodes/node-menu.tsx:48 #: src/renderer/components/+workloads-pods/pod-menu.tsx:78 -msgid "Shell" -msgstr "Shell" +#~ msgid "Shell" +#~ msgstr "Shell" -#: src/renderer/components/+config-secrets/secret-details.tsx:93 -#: src/renderer/components/+workloads-pods/pod-container-env.tsx:101 -#: src/renderer/components/dock/pod-logs.tsx:159 +#: src/renderer/components/+config-secrets/secret-details.tsx:92 +#: src/renderer/components/+workloads-pods/pod-container-env.tsx:102 +#: src/renderer/components/dock/pod-log-controls.tsx:72 #: src/renderer/components/drawer/drawer-param-toggler.tsx:19 msgid "Show" msgstr "Show" @@ -2506,11 +2516,11 @@ msgstr "Show" msgid "Show Notes" msgstr "Show Notes" -#: src/renderer/components/dock/pod-logs.tsx:160 +#: src/renderer/components/dock/pod-log-controls.tsx:73 msgid "Show current logs" msgstr "Show current logs" -#: src/renderer/components/dock/pod-logs.tsx:160 +#: src/renderer/components/dock/pod-log-controls.tsx:73 msgid "Show previous terminated container logs" msgstr "Show previous terminated container logs" @@ -2518,12 +2528,12 @@ msgstr "Show previous terminated container logs" msgid "Show value" msgstr "Show value" -#: src/renderer/components/dock/pod-logs.tsx:154 +#: src/renderer/components/dock/pod-log-controls.tsx:67 msgid "Since" msgstr "Since" #: src/renderer/components/+nodes/node-charts.tsx:80 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:49 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:46 msgid "Size" msgstr "Size" @@ -2532,10 +2542,10 @@ msgid "Size Limit" msgstr "Size Limit" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:70 -msgid "Skip TLS Verify" -msgstr "Skip TLS Verify" +#~ msgid "Skip TLS Verify" +#~ msgstr "Skip TLS Verify" -#: src/renderer/components/+events/event-details.tsx:36 +#: src/renderer/components/+events/event-details.tsx:35 #: src/renderer/components/+events/events.tsx:66 #: src/renderer/components/+events/kube-event-details.tsx:48 msgid "Source" @@ -2545,7 +2555,11 @@ msgstr "Source" msgid "Specified limits are higher than node capacity!" msgstr "Specified limits are higher than node capacity!" -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:39 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:26 +msgid "Started at" +msgstr "Started at" + +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:36 msgid "Stateful Sets" msgstr "Stateful Sets" @@ -2556,59 +2570,55 @@ msgstr "StatefulSets" #: src/renderer/components/+apps-releases/release-details.tsx:192 #: src/renderer/components/+apps-releases/releases.tsx:93 #: src/renderer/components/+config-autoscalers/hpa-details.tsx:88 -#: src/renderer/components/+config-autoscalers/hpa.tsx:52 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:79 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:67 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:48 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:68 -#: src/renderer/components/+custom-resources/crd-resource-details.tsx:56 -#: src/renderer/components/+namespaces/namespace-details.tsx:37 -#: src/renderer/components/+namespaces/namespaces.tsx:34 -#: src/renderer/components/+network-services/services.tsx:52 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:65 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:52 +#: src/renderer/components/+config-autoscalers/hpa.tsx:49 +#: src/renderer/components/+custom-resources/crd-resource-details.tsx:49 +#: src/renderer/components/+namespaces/namespace-details.tsx:36 +#: src/renderer/components/+namespaces/namespaces.tsx:32 +#: src/renderer/components/+network-services/services.tsx:49 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:64 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:49 #: src/renderer/components/+storage-volumes/volume-details.tsx:46 -#: src/renderer/components/+storage-volumes/volumes.tsx:45 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:39 +#: src/renderer/components/+storage-volumes/volumes.tsx:42 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:57 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:97 #: src/renderer/components/+workloads-pods/pod-details.tsx:82 -#: src/renderer/components/+workloads-pods/pods.tsx:82 +#: src/renderer/components/+workloads-pods/pods.tsx:79 msgid "Status" msgstr "Status" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:64 -msgid "Status URI" -msgstr "Status URI" +#~ msgid "Status URI" +#~ msgstr "Status URI" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:57 -#: src/renderer/components/layout/sidebar.tsx:84 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:56 +#: src/renderer/components/layout/sidebar.tsx:85 msgid "Storage" msgstr "Storage" -#: src/renderer/components/+storage-volumes/volumes.tsx:41 +#: src/renderer/components/+storage-volumes/volumes.tsx:38 msgid "Storage Class" msgstr "Storage Class" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:54 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:53 #: src/renderer/components/+storage-volumes/volume-details.tsx:43 msgid "Storage Class Name" msgstr "Storage Class Name" #: src/renderer/components/+storage/storage.tsx:40 -#: src/renderer/components/+storage-classes/storage-classes.tsx:33 +#: src/renderer/components/+storage-classes/storage-classes.tsx:30 msgid "Storage Classes" msgstr "Storage Classes" -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:48 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:45 msgid "Storage class" msgstr "Storage class" -#: src/renderer/components/+custom-resources/crd-details.tsx:38 +#: src/renderer/components/+custom-resources/crd-details.tsx:37 msgid "Stored versions" msgstr "Stored versions" -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:68 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:76 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:67 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:75 msgid "Strategy Type" msgstr "Strategy Type" @@ -2625,7 +2635,7 @@ msgstr "Submit" msgid "Submitting.." msgstr "Submitting.." -#: src/renderer/components/+network-endpoints/endpoint-details.tsx:24 +#: src/renderer/components/+network-endpoints/endpoint-details.tsx:23 msgid "Subsets" msgstr "Subsets" @@ -2633,31 +2643,31 @@ msgstr "Subsets" msgid "Successfully imported <0>{0} cluster(s)" msgstr "Successfully imported <0>{0} cluster(s)" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:128 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:127 msgid "Supplemental Groups" msgstr "Supplemental Groups" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:54 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:49 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:53 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:47 msgid "Suspend" msgstr "Suspend" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:98 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:97 msgid "TLS" msgstr "TLS" -#: src/renderer/components/+nodes/node-details.tsx:103 -#: src/renderer/components/+nodes/nodes.tsx:123 +#: src/renderer/components/+nodes/node-details.tsx:102 +#: src/renderer/components/+nodes/nodes.tsx:120 msgid "Taints" msgstr "Taints" #: src/renderer/components/+preferences/preferences.tsx:171 -msgid "Telemetry & Usage Tracking" -msgstr "Telemetry & Usage Tracking" +#~ msgid "Telemetry & Usage Tracking" +#~ msgstr "Telemetry & Usage Tracking" #: src/renderer/components/+preferences/preferences.tsx:174 -msgid "Telemetry & usage data is collected to continuously improve the Lens experience." -msgstr "Telemetry & usage data is collected to continuously improve the Lens experience." +#~ msgid "Telemetry & usage data is collected to continuously improve the Lens experience." +#~ msgstr "Telemetry & usage data is collected to continuously improve the Lens experience." #: src/renderer/components/dock/terminal.store.ts:28 msgid "Terminal" @@ -2671,7 +2681,7 @@ msgstr "Terminal session" msgid "The path to the kubectl binary on the system." msgstr "The path to the kubectl binary on the system." -#: src/renderer/components/dock/pod-logs.tsx:172 +#: src/renderer/components/dock/pod-logs.tsx:162 msgid "There are no logs available for container." msgstr "There are no logs available for container." @@ -2691,11 +2701,15 @@ msgstr "This field must be a valid path" msgid "This is the quick launch menu." msgstr "This is the quick launch menu." -#: src/renderer/components/+preferences/preferences.tsx:166 +#: src/renderer/components/+cluster-settings/components/cluster-accessible-namespaces.tsx:22 +msgid "This setting is useful for manually specifying which namespaces you have access to. This is useful when you don't have permissions to list namespaces." +msgstr "This setting is useful for manually specifying which namespaces you have access to. This is useful when you don't have permissions to list namespaces." + +#: src/renderer/components/+preferences/preferences.tsx:152 msgid "This will make Lens to trust ANY certificate authority without any validations." msgstr "This will make Lens to trust ANY certificate authority without any validations." -#: src/renderer/components/+network-policies/network-policy-details.tsx:59 +#: src/renderer/components/+network-policies/network-policy-details.tsx:58 msgid "To" msgstr "To" @@ -2716,8 +2730,8 @@ msgid "Transmit" msgstr "Transmit" #: src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx:106 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:79 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:80 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:76 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:77 msgid "Trigger" msgstr "Trigger" @@ -2726,25 +2740,22 @@ msgid "Trigger CronJob <0>{cronjobName}" msgstr "Trigger CronJob <0>{cronjobName}" #: src/renderer/components/+cluster/cluster-issues.tsx:102 -#: src/renderer/components/+config-secrets/secret-details.tsx:74 -#: src/renderer/components/+config-secrets/secrets.tsx:45 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:63 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:44 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:66 -#: src/renderer/components/+custom-resources/crd-details.tsx:82 -#: src/renderer/components/+events/event-details.tsx:48 +#: src/renderer/components/+config-secrets/secret-details.tsx:73 +#: src/renderer/components/+config-secrets/secrets.tsx:42 +#: src/renderer/components/+custom-resources/crd-details.tsx:81 +#: src/renderer/components/+events/event-details.tsx:47 #: src/renderer/components/+events/events.tsx:64 #: src/renderer/components/+network-services/service-details.tsx:41 -#: src/renderer/components/+network-services/services.tsx:46 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:152 +#: src/renderer/components/+network-services/services.tsx:43 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:151 #: src/renderer/components/+storage-volumes/volume-details.tsx:69 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:95 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:94 #: src/renderer/components/+user-management-service-accounts/service-accounts-secret.tsx:43 #: src/renderer/components/+workloads-pods/pod-details.tsx:140 msgid "Type" msgstr "Type" -#: src/renderer/components/+preferences/preferences.tsx:138 +#: src/renderer/components/+preferences/preferences.tsx:124 msgid "Type HTTP proxy url (example: http://proxy.acme.org:8080)" msgstr "Type HTTP proxy url (example: http://proxy.acme.org:8080)" @@ -2753,13 +2764,13 @@ msgid "UID" msgstr "UID" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:126 -msgid "URL" -msgstr "URL" +#~ msgid "URL" +#~ msgstr "URL" #: src/renderer/components/+nodes/node-menu.tsx:55 #: src/renderer/components/+nodes/node-menu.tsx:56 -msgid "Uncordon" -msgstr "Uncordon" +#~ msgid "Uncordon" +#~ msgstr "Uncordon" #: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:212 msgid "Update" @@ -2814,11 +2825,11 @@ msgstr "Use same name for RoleBinding" #~ msgid "Used" #~ msgstr "Used" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:155 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:154 msgid "User" msgstr "User" -#: src/renderer/components/+custom-resources/crd-details.tsx:99 +#: src/renderer/components/+custom-resources/crd-details.tsx:98 msgid "Validation" msgstr "Validation" @@ -2831,11 +2842,11 @@ msgstr "Value" #: src/renderer/components/+apps-releases/release-details.tsx:111 #: src/renderer/components/+config-resource-quotas/add-quota-dialog.tsx:132 #: src/renderer/components/+config-resource-quotas/resource-quota-details.tsx:62 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:79 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:78 msgid "Values" msgstr "Values" -#: src/renderer/components/+user-management-roles/role-details.tsx:33 +#: src/renderer/components/+user-management-roles/role-details.tsx:32 msgid "Verbs" msgstr "Verbs" @@ -2843,9 +2854,9 @@ msgstr "Verbs" #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:66 #: src/renderer/components/+apps-releases/release-details.tsx:185 #: src/renderer/components/+apps-releases/releases.tsx:91 -#: src/renderer/components/+custom-resources/crd-details.tsx:35 -#: src/renderer/components/+custom-resources/crd-list.tsx:75 -#: src/renderer/components/+nodes/nodes.tsx:125 +#: src/renderer/components/+custom-resources/crd-details.tsx:34 +#: src/renderer/components/+custom-resources/crd-list.tsx:72 +#: src/renderer/components/+nodes/nodes.tsx:122 #: src/renderer/components/dock/install-chart.tsx:120 #: src/renderer/components/dock/upgrade-chart.tsx:99 msgid "Version" @@ -2855,7 +2866,7 @@ msgstr "Version" msgid "View Helm Release" msgstr "View Helm Release" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:31 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:30 msgid "Volume Binding Mode" msgstr "Volume Binding Mode" @@ -2867,8 +2878,8 @@ msgstr "Volume disk capacity" msgid "Volume disk usage" msgstr "Volume disk usage" -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:37 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:47 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:34 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:46 #: src/renderer/components/+workloads-pods/pod-details.tsx:130 msgid "Volumes" msgstr "Volumes" @@ -2885,7 +2896,7 @@ msgstr "Warnings: {0}" msgid "Welcome!" msgstr "Welcome!" -#: src/renderer/components/+workspaces/workspaces.tsx:88 +#: src/renderer/components/+workspaces/workspaces.tsx:92 msgid "What is a Workspace?" msgstr "What is a Workspace?" @@ -2893,16 +2904,16 @@ msgstr "What is a Workspace?" msgid "Worker" msgstr "Worker" -#: src/renderer/components/layout/sidebar.tsx:81 +#: src/renderer/components/layout/sidebar.tsx:82 msgid "Workloads" msgstr "Workloads" #: src/renderer/components/+workspaces/workspace-menu.tsx:39 -#: src/renderer/components/+workspaces/workspaces.tsx:100 +#: src/renderer/components/+workspaces/workspaces.tsx:104 msgid "Workspaces" msgstr "Workspaces" -#: src/renderer/components/+workspaces/workspaces.tsx:90 +#: src/renderer/components/+workspaces/workspaces.tsx:94 msgid "Workspaces are used to organize number of clusters into logical groups." msgstr "Workspaces are used to organize number of clusters into logical groups." @@ -2915,27 +2926,25 @@ msgid "Wrong url format" msgstr "Wrong url format" #: src/renderer/components/+cluster-settings/components/remove-cluster-button.tsx:28 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:44 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:71 -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:42 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:72 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:76 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:80 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:92 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:96 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:100 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:119 -#: src/renderer/components/+storage-classes/storage-classes.tsx:43 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:39 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:71 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:75 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:79 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:91 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:95 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:99 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:118 +#: src/renderer/components/+storage-classes/storage-classes.tsx:40 msgid "Yes" msgstr "Yes" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:118 -msgid "Zone" -msgstr "Zone" +#~ msgid "Zone" +#~ msgstr "Zone" #: src/renderer/components/+apps-releases/release-details.tsx:180 -#: src/renderer/components/+events/event-details.tsx:40 -#: src/renderer/components/+events/event-details.tsx:43 +#: src/renderer/components/+events/event-details.tsx:39 +#: src/renderer/components/+events/event-details.tsx:42 #: src/renderer/components/kube-object/kube-object-meta.tsx:18 msgid "ago" msgstr "ago" @@ -2948,36 +2957,37 @@ msgstr "and <0>{tailCount} more" #~ msgid "applicable to all clusters" #~ msgstr "applicable to all clusters" -#: src/renderer/components/+nodes/nodes.tsx:57 +#: src/renderer/components/+nodes/nodes.tsx:54 msgid "cores:" msgstr "cores:" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:42 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:18 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:25 msgid "exit code" msgstr "exit code" -#: src/renderer/components/+custom-resources/crd-details.tsx:66 +#: src/renderer/components/+custom-resources/crd-details.tsx:65 msgid "kind" msgstr "kind" -#: src/renderer/components/+custom-resources/crd-details.tsx:67 +#: src/renderer/components/+custom-resources/crd-details.tsx:66 msgid "listKind" msgstr "listKind" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:48 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:61 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:47 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:59 msgid "never" msgstr "never" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:130 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:133 msgid "new" msgstr "new" -#: src/renderer/components/+custom-resources/crd-details.tsx:64 +#: src/renderer/components/+custom-resources/crd-details.tsx:63 msgid "plural" msgstr "plural" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:41 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:17 msgid "ready" msgstr "ready" @@ -2985,11 +2995,11 @@ msgstr "ready" msgid "sec" msgstr "sec" -#: src/renderer/components/+custom-resources/crd-details.tsx:65 +#: src/renderer/components/+custom-resources/crd-details.tsx:64 msgid "singular" msgstr "singular" -#: src/renderer/components/dock/pod-logs.tsx:159 +#: src/renderer/components/dock/pod-log-controls.tsx:72 msgid "timestamps" msgstr "timestamps" @@ -2997,7 +3007,7 @@ msgstr "timestamps" msgid "{0, plural, one {Resource} other {Resources}}" msgstr "{0, plural, one {Resource} other {Resources}}" -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:64 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:63 msgid "{0} desired, {1} updated" msgstr "{0} desired, {1} updated" @@ -3013,11 +3023,11 @@ msgstr "{0} on Pods" msgid "{0} on {1}" msgstr "{0} on {1}" -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:65 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:64 msgid "{0} total, {1} available" msgstr "{0} total, {1} available" -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:66 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:65 msgid "{0} unavailable" msgstr "{0} unavailable" @@ -3029,7 +3039,7 @@ msgstr "{accountName} kubeconfig" msgid "{allItemsCount, plural, one {# item} other {# items}}" msgstr "{allItemsCount, plural, one {# item} other {# items}}" -#: src/renderer/components/+config-autoscalers/hpa.tsx:31 +#: src/renderer/components/+config-autoscalers/hpa.tsx:28 msgid "{metricsRemainCount} more..." msgstr "{metricsRemainCount} more..." diff --git a/locales/fi/messages.po b/locales/fi/messages.po index ac1c8902a0..0b668b7605 100644 --- a/locales/fi/messages.po +++ b/locales/fi/messages.po @@ -25,11 +25,11 @@ msgstr "" msgid "(as a percentage of request)" msgstr "" -#: src/renderer/components/+workspaces/workspaces.tsx:121 +#: src/renderer/components/+workspaces/workspaces.tsx:126 msgid "(current)" msgstr "" -#: src/renderer/components/+network-policies/network-policy-details.tsx:88 +#: src/renderer/components/+network-policies/network-policy-details.tsx:87 msgid "(empty) (Allowing the specific traffic to all pods in this namespace)" msgstr "" @@ -61,19 +61,19 @@ msgstr "" msgid "A System Name must be lowercase DNS labels separated by dots. DNS labels are alphanumerics and dashes enclosed by alphanumerics." msgstr "" -#: src/renderer/components/+workspaces/workspaces.tsx:93 +#: src/renderer/components/+workspaces/workspaces.tsx:97 msgid "A single workspaces contains a list of clusters and their full configuration." msgstr "" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:81 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:80 msgid "API Group" msgstr "" -#: src/renderer/components/layout/sidebar.tsx:88 +#: src/renderer/components/layout/sidebar.tsx:89 msgid "Access Control" msgstr "" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:51 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:50 #: src/renderer/components/+storage-volumes/volume-details.tsx:37 msgid "Access Modes" msgstr "" @@ -82,17 +82,17 @@ msgstr "" msgid "Account Name" msgstr "" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:51 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:50 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:50 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48 msgid "Active" msgstr "" #: src/renderer/components/+add-cluster/add-cluster.tsx:310 -#: src/renderer/components/cluster-manager/clusters-menu.tsx:127 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:130 msgid "Add Cluster" msgstr "" -#: src/renderer/components/+namespaces/namespaces.tsx:43 +#: src/renderer/components/+namespaces/namespaces.tsx:39 msgid "Add Namespace" msgstr "" @@ -100,11 +100,11 @@ msgstr "" msgid "Add RoleBinding" msgstr "" -#: src/renderer/components/+workspaces/workspaces.tsx:138 +#: src/renderer/components/+workspaces/workspaces.tsx:143 msgid "Add Workspace" msgstr "" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:112 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:111 msgid "Add bindings to {name}" msgstr "" @@ -136,7 +136,7 @@ msgstr "" #~ msgid "Adding clusters: <0>{0}" #~ msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:111 +#: src/renderer/components/+preferences/preferences.tsx:101 msgid "Adding helm branch <0>{0} has failed: {1}" msgstr "" @@ -144,13 +144,13 @@ msgstr "" #~ msgid "Adding repo <0>{0} has failed: {1}" #~ msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:78 +#: src/renderer/components/+custom-resources/crd-details.tsx:77 msgid "Additional Printer Columns" msgstr "" #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:29 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:60 -#: src/renderer/components/+nodes/node-details.tsx:83 +#: src/renderer/components/+nodes/node-details.tsx:82 msgid "Addresses" msgstr "" @@ -158,36 +158,34 @@ msgstr "" msgid "Affinities" msgstr "" -#: src/renderer/components/+config-autoscalers/hpa.tsx:51 -#: src/renderer/components/+config-maps/config-maps.tsx:37 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:45 -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:36 -#: src/renderer/components/+config-secrets/secrets.tsx:46 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:66 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:67 -#: src/renderer/components/+custom-resources/crd-list.tsx:77 -#: src/renderer/components/+custom-resources/crd-resources.tsx:73 +#: src/renderer/components/+config-autoscalers/hpa.tsx:48 +#: src/renderer/components/+config-maps/config-maps.tsx:34 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:42 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:33 +#: src/renderer/components/+config-secrets/secrets.tsx:43 +#: src/renderer/components/+custom-resources/crd-list.tsx:74 +#: src/renderer/components/+custom-resources/crd-resources.tsx:70 #: src/renderer/components/+events/events.tsx:68 -#: src/renderer/components/+namespaces/namespaces.tsx:33 -#: src/renderer/components/+network-endpoints/endpoints.tsx:34 -#: src/renderer/components/+network-ingresses/ingresses.tsx:35 -#: src/renderer/components/+network-policies/network-policies.tsx:34 -#: src/renderer/components/+network-services/services.tsx:51 -#: src/renderer/components/+nodes/nodes.tsx:126 -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:38 -#: src/renderer/components/+storage-classes/storage-classes.tsx:38 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:51 -#: src/renderer/components/+storage-volumes/volumes.tsx:44 -#: src/renderer/components/+user-management-roles/roles.tsx:35 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:38 -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:38 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:52 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:50 -#: src/renderer/components/+workloads-deployments/deployments.tsx:63 -#: src/renderer/components/+workloads-jobs/jobs.tsx:41 -#: src/renderer/components/+workloads-pods/pods.tsx:81 -#: src/renderer/components/+workloads-replicasets/replicasets.tsx:53 -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:44 +#: src/renderer/components/+namespaces/namespaces.tsx:31 +#: src/renderer/components/+network-endpoints/endpoints.tsx:31 +#: src/renderer/components/+network-ingresses/ingresses.tsx:33 +#: src/renderer/components/+network-policies/network-policies.tsx:31 +#: src/renderer/components/+network-services/services.tsx:48 +#: src/renderer/components/+nodes/nodes.tsx:123 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:35 +#: src/renderer/components/+storage-classes/storage-classes.tsx:35 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:48 +#: src/renderer/components/+storage-volumes/volumes.tsx:41 +#: src/renderer/components/+user-management-roles/roles.tsx:32 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:35 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:36 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:50 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:47 +#: src/renderer/components/+workloads-deployments/deployments.tsx:61 +#: src/renderer/components/+workloads-jobs/jobs.tsx:38 +#: src/renderer/components/+workloads-pods/pods.tsx:78 +#: src/renderer/components/+workloads-replicasets/replicasets.tsx:51 +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:41 msgid "Age" msgstr "" @@ -199,68 +197,68 @@ msgstr "" #~ msgid "All clusters within workspace will be cleared as well." #~ msgstr "" -#: src/renderer/components/+custom-resources/crd-list.tsx:56 +#: src/renderer/components/+custom-resources/crd-list.tsx:53 msgid "All groups" msgstr "" #: src/renderer/components/dock/pod-logs.tsx:37 -msgid "All logs" -msgstr "" +#~ msgid "All logs" +#~ msgstr "" #: src/renderer/components/+namespaces/namespace-select.tsx:95 msgid "All namespaces" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:77 +#: src/renderer/components/+nodes/node-details.tsx:76 msgid "Allocatable" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:71 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:70 msgid "Allow Privilege Escalation" msgstr "" #: src/renderer/components/+preferences/preferences.tsx:172 -msgid "Allow telemetry & usage tracking" -msgstr "" +#~ msgid "Allow telemetry & usage tracking" +#~ msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:164 +#: src/renderer/components/+preferences/preferences.tsx:150 msgid "Allow untrusted Certificate Authorities" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:51 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:50 msgid "Allowed CSI Drivers" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:43 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:42 msgid "Allowed Capabilities" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:55 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:54 msgid "Allowed Flex Volumes" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:110 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:109 msgid "Allowed Host Paths" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:59 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:58 msgid "Allowed Proc Mount Types" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:132 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:131 msgid "Allowed Runtime Class Names" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:63 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:62 msgid "Allowed Unsafe Sysctls" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:102 +#: src/renderer/components/+nodes/node-details.tsx:101 #: src/renderer/components/kube-object/kube-object-meta.tsx:36 msgid "Annotations" msgstr "" -#: src/renderer/components/+user-management-roles/role-details.tsx:37 +#: src/renderer/components/+user-management-roles/role-details.tsx:36 msgid "Api Groups" msgstr "" @@ -277,7 +275,7 @@ msgstr "" msgid "Applying.." msgstr "" -#: src/renderer/components/layout/sidebar.tsx:87 +#: src/renderer/components/layout/sidebar.tsx:88 msgid "Apps" msgstr "" @@ -286,10 +284,10 @@ msgid "Are you sure you want remove workspace <0>{0}?" msgstr "" #: src/renderer/components/+nodes/node-menu.tsx:41 -msgid "Are you sure you want to drain <0>{nodeName}?" -msgstr "" +#~ msgid "Are you sure you want to drain <0>{nodeName}?" +#~ msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:84 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:103 msgid "Arguments" msgstr "" @@ -298,14 +296,14 @@ msgid "Associate clusters and choose the ones you want to access via quick launc msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:101 -msgid "Auth App Role" -msgstr "" +#~ msgid "Auth App Role" +#~ msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:160 +#: src/renderer/components/+preferences/preferences.tsx:146 msgid "Auto start-up" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:161 +#: src/renderer/components/+preferences/preferences.tsx:147 msgid "Automatically start Lens on login" msgstr "" @@ -314,11 +312,11 @@ msgstr "" msgid "Back" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:43 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:42 msgid "Backends" msgstr "" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:94 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:93 msgid "Binding" msgstr "" @@ -326,8 +324,8 @@ msgstr "" msgid "Binding targets" msgstr "" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:90 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:36 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:89 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:33 msgid "Bindings" msgstr "" @@ -370,17 +368,17 @@ msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:97 #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:129 -msgid "CA Bundle" -msgstr "" +#~ msgid "CA Bundle" +#~ msgstr "" #: src/renderer/components/+cluster/cluster-metric-switchers.tsx:24 #: src/renderer/components/+cluster/cluster-pie-charts.tsx:140 -#: src/renderer/components/+nodes/node-details.tsx:62 -#: src/renderer/components/+nodes/node-details.tsx:73 -#: src/renderer/components/+nodes/node-details.tsx:78 -#: src/renderer/components/+nodes/nodes.tsx:120 +#: src/renderer/components/+nodes/node-details.tsx:61 +#: src/renderer/components/+nodes/node-details.tsx:72 +#: src/renderer/components/+nodes/node-details.tsx:77 +#: src/renderer/components/+nodes/nodes.tsx:117 #: src/renderer/components/+workloads-pods/pod-charts.tsx:11 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:26 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:44 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:53 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:95 #: src/renderer/components/resource-metrics/resource-metrics-text.tsx:13 @@ -406,11 +404,11 @@ msgstr "" msgid "CPU requests" msgstr "" -#: src/renderer/components/+nodes/nodes.tsx:57 +#: src/renderer/components/+nodes/nodes.tsx:54 msgid "CPU:" msgstr "" -#: src/renderer/components/+workspaces/workspaces.tsx:133 +#: src/renderer/components/+workspaces/workspaces.tsx:138 #: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44 #: src/renderer/components/dock/info-panel.tsx:86 #: src/renderer/components/wizard/wizard.tsx:130 @@ -423,20 +421,20 @@ msgstr "" #: src/renderer/components/+nodes/node-charts.tsx:39 #: src/renderer/components/+nodes/node-charts.tsx:63 #: src/renderer/components/+nodes/node-charts.tsx:97 -#: src/renderer/components/+nodes/node-details.tsx:72 +#: src/renderer/components/+nodes/node-details.tsx:71 #: src/renderer/components/+storage-volume-claims/volume-claim-disk-chart.tsx:31 #: src/renderer/components/+storage-volumes/volume-details.tsx:29 -#: src/renderer/components/+storage-volumes/volumes.tsx:42 +#: src/renderer/components/+storage-volumes/volumes.tsx:39 msgid "Capacity" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:163 +#: src/renderer/components/+preferences/preferences.tsx:149 msgid "Certificate Trust" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:59 -msgid "Certificates" -msgstr "" +#~ msgid "Certificates" +#~ msgstr "" #: src/renderer/components/+apps-releases/release-details.tsx:173 #: src/renderer/components/+apps-releases/releases.tsx:89 @@ -469,7 +467,7 @@ msgstr "" #~ msgstr "" #: src/renderer/components/+storage-volumes/volume-details.tsx:68 -#: src/renderer/components/+storage-volumes/volumes.tsx:43 +#: src/renderer/components/+storage-volumes/volumes.tsx:40 msgid "Claim" msgstr "" @@ -487,42 +485,42 @@ msgid "Close (Ctrl+W)" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:121 -msgid "Cloud API Token Secret" -msgstr "" +#~ msgid "Cloud API Token Secret" +#~ msgstr "" #: src/renderer/components/+namespaces/namespace-select.tsx:43 -#: src/renderer/components/layout/sidebar.tsx:79 +#: src/renderer/components/layout/sidebar.tsx:80 msgid "Cluster" msgstr "" #: src/renderer/components/+network-services/service-details.tsx:51 -#: src/renderer/components/+network-services/services.tsx:47 +#: src/renderer/components/+network-services/services.tsx:44 msgid "Cluster IP" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:40 -msgid "Cluster Issuers" -msgstr "" +#~ msgid "Cluster Issuers" +#~ msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:134 +#: src/renderer/components/+preferences/preferences.tsx:120 msgid "Color Theme" msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:79 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:98 msgid "Command" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:47 #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:62 -msgid "Common Name" -msgstr "" +#~ msgid "Common Name" +#~ msgstr "" -#: src/renderer/components/layout/sidebar.tsx:76 +#: src/renderer/components/layout/sidebar.tsx:77 msgid "Compact view" msgstr "" -#: src/renderer/components/+workloads-jobs/job-details.tsx:80 -#: src/renderer/components/+workloads-jobs/jobs.tsx:39 +#: src/renderer/components/+workloads-jobs/job-details.tsx:79 +#: src/renderer/components/+workloads-jobs/jobs.tsx:36 msgid "Completions" msgstr "" @@ -530,17 +528,17 @@ msgstr "" msgid "Component stack" msgstr "" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:72 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:71 msgid "Condition" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:52 -#: src/renderer/components/+nodes/node-details.tsx:107 -#: src/renderer/components/+nodes/nodes.tsx:127 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:79 -#: src/renderer/components/+workloads-deployments/deployments.tsx:64 -#: src/renderer/components/+workloads-jobs/job-details.tsx:77 -#: src/renderer/components/+workloads-jobs/jobs.tsx:42 +#: src/renderer/components/+custom-resources/crd-details.tsx:51 +#: src/renderer/components/+nodes/node-details.tsx:106 +#: src/renderer/components/+nodes/nodes.tsx:124 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:78 +#: src/renderer/components/+workloads-deployments/deployments.tsx:62 +#: src/renderer/components/+workloads-jobs/job-details.tsx:76 +#: src/renderer/components/+workloads-jobs/jobs.tsx:39 #: src/renderer/components/+workloads-pods/pod-details.tsx:100 msgid "Conditions" msgstr "" @@ -554,6 +552,7 @@ msgid "Are you sure you want to restart deployment <0>{0}?" msgstr "" #: src/renderer/components/+config-maps/config-maps.tsx:33 +#: src/renderer/components/+config-maps/config-maps.tsx:30 msgid "Config Maps" msgstr "" @@ -561,7 +560,7 @@ msgstr "" msgid "Config copied to clipboard" msgstr "" -#: src/renderer/components/+config-maps/config-map-details.tsx:41 +#: src/renderer/components/+config-maps/config-map-details.tsx:40 msgid "ConfigMap <0>{0} successfully updated." msgstr "" @@ -569,7 +568,7 @@ msgstr "" msgid "ConfigMaps" msgstr "" -#: src/renderer/components/layout/sidebar.tsx:82 +#: src/renderer/components/layout/sidebar.tsx:83 msgid "Configuration" msgstr "" @@ -577,7 +576,7 @@ msgstr "" msgid "Connection" msgstr "" -#: src/renderer/components/dock/pod-logs.tsx:148 +#: src/renderer/components/dock/pod-log-controls.tsx:63 msgid "Container" msgstr "" @@ -601,13 +600,13 @@ msgstr "" msgid "Container memory usage" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:95 +#: src/renderer/components/+nodes/node-details.tsx:94 msgid "Container runtime" msgstr "" #: src/renderer/components/+workloads-pods/pod-details.tsx:122 -#: src/renderer/components/+workloads-pods/pods.tsx:77 -#: src/renderer/components/dock/pod-logs.tsx:129 +#: src/renderer/components/+workloads-pods/pods.tsx:74 +#: src/renderer/components/dock/pod-log-controls.tsx:43 msgid "Containers" msgstr "" @@ -623,16 +622,16 @@ msgstr "" #~ msgid "Contexts: {0}" #~ msgstr "" -#: src/renderer/components/+workloads-pods/pods.tsx:79 +#: src/renderer/components/+workloads-pods/pods.tsx:76 #: src/renderer/components/kube-object/kube-object-meta.tsx:39 msgid "Controlled By" msgstr "" -#: src/renderer/components/+workloads-jobs/job-details.tsx:68 +#: src/renderer/components/+workloads-jobs/job-details.tsx:67 msgid "Controlled by" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:49 +#: src/renderer/components/+custom-resources/crd-details.tsx:48 msgid "Conversion" msgstr "" @@ -643,10 +642,10 @@ msgstr "" #: src/renderer/components/+nodes/node-menu.tsx:51 #: src/renderer/components/+nodes/node-menu.tsx:52 -msgid "Cordon" -msgstr "" +#~ msgid "Cordon" +#~ msgstr "" -#: src/renderer/components/+events/event-details.tsx:45 +#: src/renderer/components/+events/event-details.tsx:44 #: src/renderer/components/+events/events.tsx:67 #: src/renderer/components/+events/kube-event-details.tsx:51 msgid "Count" @@ -682,23 +681,23 @@ msgstr "" msgid "Create Service Account" msgstr "" -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:45 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:40 msgid "Create new ResourceQuota" msgstr "" -#: src/renderer/components/+user-management-roles/roles.tsx:44 +#: src/renderer/components/+user-management-roles/roles.tsx:39 msgid "Create new Role" msgstr "" -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:48 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:43 msgid "Create new RoleBinding" msgstr "" -#: src/renderer/components/+config-secrets/secrets.tsx:58 +#: src/renderer/components/+config-secrets/secrets.tsx:53 msgid "Create new Secret" msgstr "" -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:47 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:45 msgid "Create new Service Account" msgstr "" @@ -715,10 +714,10 @@ msgid "Created at" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:132 -msgid "Credentials Ref" -msgstr "" +#~ msgid "Credentials Ref" +#~ msgstr "" -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:42 msgid "Cron Jobs" msgstr "" @@ -730,8 +729,8 @@ msgstr "" msgid "Current / Target" msgstr "" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:39 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:43 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:38 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:40 msgid "Current Healthy" msgstr "" @@ -747,8 +746,8 @@ msgstr "" #~ msgid "Custom" #~ msgstr "" -#: src/renderer/components/+custom-resources/crd-list.tsx:55 -#: src/renderer/components/layout/sidebar.tsx:89 +#: src/renderer/components/+custom-resources/crd-list.tsx:52 +#: src/renderer/components/layout/sidebar.tsx:90 msgid "Custom Resources" msgstr "" @@ -757,14 +756,14 @@ msgstr "" #~ msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:95 -msgid "DNS Provider" -msgstr "" +#~ msgid "DNS Provider" +#~ msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:50 -msgid "DNS names" -msgstr "" +#~ msgid "DNS names" +#~ msgstr "" -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:44 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:41 msgid "Daemon Sets" msgstr "" @@ -776,20 +775,20 @@ msgstr "" #~ msgid "Dark" #~ msgstr "" -#: src/renderer/components/+config-maps/config-map-details.tsx:69 -#: src/renderer/components/+config-secrets/secret-details.tsx:78 +#: src/renderer/components/+config-maps/config-map-details.tsx:68 +#: src/renderer/components/+config-secrets/secret-details.tsx:77 msgid "Data" msgstr "" -#: src/renderer/components/+storage-classes/storage-classes.tsx:37 +#: src/renderer/components/+storage-classes/storage-classes.tsx:34 msgid "Default" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:83 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:82 msgid "Default Add Capabilities" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:135 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:134 msgid "Default Runtime Class Name" msgstr "" @@ -801,27 +800,27 @@ msgstr "" msgid "Definitions" msgstr "" -#: src/renderer/components/+workspaces/workspaces.tsx:126 +#: src/renderer/components/+workspaces/workspaces.tsx:131 #: src/renderer/components/menu/menu-actions.tsx:84 msgid "Delete" msgstr "" -#: src/renderer/components/+workloads-replicasets/replicasets.tsx:47 +#: src/renderer/components/+workloads-replicasets/replicasets.tsx:45 msgid "Deploy Revisions" msgstr "" #: src/renderer/components/+workloads/workloads.tsx:45 -#: src/renderer/components/+workloads-deployments/deployments.tsx:57 +#: src/renderer/components/+workloads-deployments/deployments.tsx:55 msgid "Deployments" msgstr "" #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:65 -#: src/renderer/components/+workspaces/workspaces.tsx:131 +#: src/renderer/components/+workspaces/workspaces.tsx:136 msgid "Description" msgstr "" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:43 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:44 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:42 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:41 msgid "Desired Healthy" msgstr "" @@ -829,27 +828,27 @@ msgstr "" msgid "Desired number of replicas" msgstr "" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:62 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:63 msgid "Disconnect" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:64 -#: src/renderer/components/+nodes/nodes.tsx:122 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44 +#: src/renderer/components/+nodes/node-details.tsx:63 +#: src/renderer/components/+nodes/nodes.tsx:119 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:43 msgid "Disk" msgstr "" -#: src/renderer/components/+nodes/nodes.tsx:79 +#: src/renderer/components/+nodes/nodes.tsx:76 msgid "Disk:" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:168 +#: src/renderer/components/+preferences/preferences.tsx:154 msgid "Does not affect cluster communications!" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:89 -msgid "Domains" -msgstr "" +#~ msgid "Domains" +#~ msgstr "" #: src/renderer/components/+preferences/preferences.tsx:129 #~ msgid "Download Mirror" @@ -877,27 +876,26 @@ msgstr "" #: src/renderer/components/+nodes/node-menu.tsx:59 #: src/renderer/components/+nodes/node-menu.tsx:60 -msgid "Drain" -msgstr "" +#~ msgid "Drain" +#~ msgstr "" #: src/renderer/components/+nodes/node-menu.tsx:39 -msgid "Drain Node" -msgstr "" +#~ msgid "Drain Node" +#~ msgstr "" #: src/renderer/components/+storage-volumes/volume-details.tsx:59 msgid "Driver" msgstr "" -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:59 -#: src/renderer/components/+network-ingresses/ingress-details.tsx:87 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:86 msgid "Duration" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:58 -msgid "E-mail" -msgstr "" +#~ msgid "E-mail" +#~ msgstr "" -#: src/renderer/components/+workspaces/workspaces.tsx:125 +#: src/renderer/components/+workspaces/workspaces.tsx:130 #: src/renderer/components/menu/menu-actions.tsx:80 #: src/renderer/components/menu/menu-actions.tsx:81 msgid "Edit" @@ -912,7 +910,7 @@ msgstr "" msgid "Effect" msgstr "" -#: src/renderer/components/+network-policies/network-policy-details.tsx:105 +#: src/renderer/components/+network-policies/network-policy-details.tsx:104 msgid "Egress" msgstr "" @@ -921,8 +919,8 @@ msgid "Endpoint" msgstr "" #: src/renderer/components/+network/network.tsx:35 +#: src/renderer/components/+network-endpoints/endpoints.tsx:27 #: src/renderer/components/+network-endpoints/endpoints.tsx:30 -#: src/renderer/components/+network-endpoints/endpoints.tsx:33 #: src/renderer/components/+network-services/service-details-endpoint.tsx:27 msgid "Endpoints" msgstr "" @@ -931,7 +929,7 @@ msgstr "" msgid "Enter a name" msgstr "" -#: src/renderer/components/+workloads-pods/pod-container-env.tsx:79 +#: src/renderer/components/+workloads-pods/pod-container-env.tsx:80 msgid "Environment" msgstr "" @@ -947,7 +945,7 @@ msgstr "" #: src/renderer/components/+events/events.tsx:56 #: src/renderer/components/+events/kube-event-details.tsx:34 #: src/renderer/components/+events/kube-event-details.tsx:39 -#: src/renderer/components/layout/sidebar.tsx:86 +#: src/renderer/components/layout/sidebar.tsx:87 msgid "Events" msgstr "" @@ -963,7 +961,7 @@ msgstr "" #~ msgid "Extended view" #~ msgstr "" -#: src/renderer/components/+network-services/services.tsx:49 +#: src/renderer/components/+network-services/services.tsx:46 msgid "External IP" msgstr "" @@ -971,16 +969,16 @@ msgstr "" msgid "External IPs" msgstr "" -#: src/renderer/components/dock/pod-logs.store.ts:65 +#: src/renderer/components/dock/pod-logs.store.ts:56 msgid "Failed to load logs: {0}" msgstr "" -#: src/renderer/components/+events/event-details.tsx:58 +#: src/renderer/components/+events/event-details.tsx:57 msgid "Field Path" msgstr "" #: src/renderer/components/+workloads-pods/pod-charts.tsx:14 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:28 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:46 msgid "Filesystem" msgstr "" @@ -992,7 +990,11 @@ msgstr "" msgid "Finalizers" msgstr "" -#: src/renderer/components/+events/event-details.tsx:39 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:27 +msgid "Finished at" +msgstr "" + +#: src/renderer/components/+events/event-details.tsx:38 msgid "First seen" msgstr "" @@ -1004,11 +1006,11 @@ msgstr "" msgid "FlexVolume" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:67 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:66 msgid "Forbidden Sysctls" msgstr "" -#: src/renderer/components/+network-policies/network-policy-details.tsx:26 +#: src/renderer/components/+network-policies/network-policy-details.tsx:25 msgid "From" msgstr "" @@ -1016,7 +1018,7 @@ msgstr "" #~ msgid "From <0>{from} to <1>{to}" #~ msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:125 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:124 msgid "Fs Group" msgstr "" @@ -1028,13 +1030,13 @@ msgstr "" #~ msgid "Global Lens Settings page" #~ msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:32 -#: src/renderer/components/+custom-resources/crd-list.tsx:58 -#: src/renderer/components/+custom-resources/crd-list.tsx:74 +#: src/renderer/components/+custom-resources/crd-details.tsx:31 +#: src/renderer/components/+custom-resources/crd-list.tsx:55 +#: src/renderer/components/+custom-resources/crd-list.tsx:71 msgid "Group" msgstr "" -#: src/renderer/components/+custom-resources/crd-list.tsx:60 +#: src/renderer/components/+custom-resources/crd-list.tsx:57 msgid "Groups" msgstr "" @@ -1042,7 +1044,7 @@ msgstr "" msgid "HPA" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:137 +#: src/renderer/components/+preferences/preferences.tsx:123 msgid "HTTP Proxy" msgstr "" @@ -1050,7 +1052,7 @@ msgstr "" #~ msgid "HTTP Proxy server. Used for communicating with Kubernetes API." #~ msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:145 +#: src/renderer/components/+preferences/preferences.tsx:131 msgid "Helm" msgstr "" @@ -1070,12 +1072,12 @@ msgstr "" msgid "Helm Upgrade: {0}" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:51 +#: src/renderer/components/+preferences/preferences.tsx:45 msgid "Helm branch <0>{0} already in use" msgstr "" -#: src/renderer/components/+config-secrets/secret-details.tsx:93 -#: src/renderer/components/dock/pod-logs.tsx:159 +#: src/renderer/components/+config-secrets/secret-details.tsx:92 +#: src/renderer/components/dock/pod-log-controls.tsx:72 #: src/renderer/components/drawer/drawer-param-toggler.tsx:19 msgid "Hide" msgstr "" @@ -1088,54 +1090,54 @@ msgstr "" msgid "Home" msgstr "" -#: src/renderer/components/+config-autoscalers/hpa.tsx:44 +#: src/renderer/components/+config-autoscalers/hpa.tsx:41 msgid "Horizontal Pod Autoscalers" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:91 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:90 msgid "Host IPC" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:95 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:94 msgid "Host Network" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:99 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:98 msgid "Host PID" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:103 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:102 msgid "Host Ports (Min-Max)" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:38 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:37 msgid "Host: {0}" msgstr "" #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:33 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:64 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:76 -#: src/renderer/components/+network-ingresses/ingress-details.tsx:64 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:63 msgid "Hostname" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:92 -msgid "Http01" -msgstr "" +#~ msgid "Http01" +#~ msgstr "" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:65 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:64 msgid "IP" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:53 -msgid "IP addresses" -msgstr "" +#~ msgid "IP addresses" +#~ msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:45 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:64 msgid "Image" msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:49 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:68 msgid "ImagePullPolicy" msgstr "" @@ -1143,24 +1145,24 @@ msgstr "" msgid "ImagePullSecrets" msgstr "" -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:65 -#: src/renderer/components/+workloads-jobs/job-details.tsx:64 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:77 -#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:64 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:64 +#: src/renderer/components/+workloads-jobs/job-details.tsx:63 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:76 +#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:63 msgid "Images" msgstr "" -#: src/renderer/components/+network-policies/network-policy-details.tsx:92 +#: src/renderer/components/+network-policies/network-policy-details.tsx:91 msgid "Ingress" msgstr "" #: src/renderer/components/+network/network.tsx:43 -#: src/renderer/components/+network-ingresses/ingresses.tsx:31 +#: src/renderer/components/+network-ingresses/ingresses.tsx:28 msgid "Ingresses" msgstr "" #: src/renderer/components/+workloads-pods/pod-details.tsx:118 -#: src/renderer/components/dock/pod-logs.tsx:135 +#: src/renderer/components/dock/pod-log-controls.tsx:49 msgid "Init Containers" msgstr "" @@ -1189,24 +1191,24 @@ msgstr "" msgid "Involved Object" msgstr "" -#: src/renderer/components/+events/event-details.tsx:52 +#: src/renderer/components/+events/event-details.tsx:51 msgid "Involved object" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:31 #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:64 -msgid "Issuer" -msgstr "" +#~ msgid "Issuer" +#~ msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:53 -msgid "Issuers" -msgstr "" +#~ msgid "Issuers" +#~ msgstr "" #: src/renderer/components/no-items/no-items.tsx:9 msgid "Item list is empty" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:83 +#: src/renderer/components/+custom-resources/crd-details.tsx:82 msgid "JSON Path" msgstr "" @@ -1215,30 +1217,34 @@ msgid "Job name" msgstr "" #: src/renderer/components/+workloads/workloads.tsx:69 -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:62 -#: src/renderer/components/+workloads-jobs/jobs.tsx:36 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:61 +#: src/renderer/components/+workloads-jobs/jobs.tsx:33 msgid "Jobs" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:92 +#: src/renderer/components/dock/pod-logs.tsx:151 +msgid "Jump to bottom" +msgstr "" + +#: src/renderer/components/+nodes/node-details.tsx:91 msgid "Kernel version" msgstr "" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:77 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:76 #: src/renderer/components/+workloads-pods/pod-details-tolerations.tsx:16 msgid "Key" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:68 -msgid "Key Algorithm" -msgstr "" +#~ msgid "Key Algorithm" +#~ msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:65 -msgid "Key Size" -msgstr "" +#~ msgid "Key Size" +#~ msgstr "" -#: src/renderer/components/+config-maps/config-maps.tsx:36 -#: src/renderer/components/+config-secrets/secrets.tsx:44 +#: src/renderer/components/+config-maps/config-maps.tsx:33 +#: src/renderer/components/+config-secrets/secrets.tsx:41 msgid "Keys" msgstr "" @@ -1246,13 +1252,13 @@ msgstr "" msgid "Keywords" msgstr "" -#: src/renderer/components/+events/event-details.tsx:57 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:79 +#: src/renderer/components/+events/event-details.tsx:56 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:78 #: src/renderer/components/dock/edit-resource.tsx:88 msgid "Kind" msgstr "" -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:62 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:59 msgid "Kubeconfig" msgstr "" @@ -1264,34 +1270,37 @@ msgstr "" msgid "Kubectl Binary" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:98 +#: src/renderer/components/+nodes/node-details.tsx:97 msgid "Kubelet version" msgstr "" -#: src/renderer/components/+config-secrets/secrets.tsx:43 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:65 -#: src/renderer/components/+namespaces/namespaces.tsx:32 -#: src/renderer/components/+nodes/node-details.tsx:101 +#: src/renderer/components/+config-secrets/secrets.tsx:40 +#: src/renderer/components/+namespaces/namespaces.tsx:30 +#: src/renderer/components/+nodes/node-details.tsx:100 #: src/renderer/components/kube-object/kube-object-meta.tsx:35 msgid "Labels" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:76 -msgid "Last Failure Time" +#~ msgid "Last Failure Time" +#~ msgstr "" + +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:61 +msgid "Last Status" msgstr "" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:57 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:51 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:56 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:49 msgid "Last schedule" msgstr "" -#: src/renderer/components/+events/event-details.tsx:42 +#: src/renderer/components/+events/event-details.tsx:41 #: src/renderer/components/+events/kube-event-details.tsx:57 msgid "Last seen" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:57 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:84 +#: src/renderer/components/+custom-resources/crd-details.tsx:56 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:83 #: src/renderer/components/+workloads-pods/pod-details.tsx:103 msgid "Last transition time: {lastTransitionTime}" msgstr "" @@ -1300,7 +1309,7 @@ msgstr "" #~ msgid "Lens Global Settings" #~ msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:146 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:145 msgid "Level" msgstr "" @@ -1322,14 +1331,14 @@ msgid "Limits" msgstr "" #: src/renderer/components/dock/pod-logs.tsx:150 -msgid "Lines" -msgstr "" +#~ msgid "Lines" +#~ msgstr "" #: src/renderer/components/kube-object/kube-object-meta.tsx:29 msgid "Link" msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:71 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:90 msgid "Liveness" msgstr "" @@ -1337,18 +1346,22 @@ msgstr "" msgid "Load Balancer IP" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:108 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:107 msgid "Load-Balancer Ingress Points" msgstr "" +#: src/renderer/components/+network-ingresses/ingresses.tsx:31 +msgid "LoadBalancers" +msgstr "" + #: src/renderer/components/app-init/app-init.tsx:43 msgid "Loading" msgstr "" #: src/renderer/components/+workloads-pods/pod-menu.tsx:100 #: src/renderer/components/+workloads-pods/pod-menu.tsx:101 -msgid "Logs" -msgstr "" +#~ msgid "Logs" +#~ msgstr "" #: src/renderer/components/dialog/logs-dialog.tsx:27 msgid "Logs copied to clipboard." @@ -1362,21 +1375,21 @@ msgstr "" msgid "Master" msgstr "" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:75 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:74 msgid "Match Expressions" msgstr "" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:71 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:70 msgid "Match Labels" msgstr "" #: src/renderer/components/+config-autoscalers/hpa-details.tsx:80 -#: src/renderer/components/+config-autoscalers/hpa.tsx:49 +#: src/renderer/components/+config-autoscalers/hpa.tsx:46 msgid "Max Pods" msgstr "" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:35 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:42 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:34 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:39 msgid "Max Unavailable" msgstr "" @@ -1390,12 +1403,12 @@ msgstr "" #: src/renderer/components/+cluster/cluster-metric-switchers.tsx:25 #: src/renderer/components/+cluster/cluster-pie-charts.tsx:144 -#: src/renderer/components/+nodes/node-details.tsx:63 -#: src/renderer/components/+nodes/node-details.tsx:74 -#: src/renderer/components/+nodes/node-details.tsx:79 -#: src/renderer/components/+nodes/nodes.tsx:121 +#: src/renderer/components/+nodes/node-details.tsx:62 +#: src/renderer/components/+nodes/node-details.tsx:73 +#: src/renderer/components/+nodes/node-details.tsx:78 +#: src/renderer/components/+nodes/nodes.tsx:118 #: src/renderer/components/+workloads-pods/pod-charts.tsx:12 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:27 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:45 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:63 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:96 #: src/renderer/components/resource-metrics/resource-metrics-text.tsx:18 @@ -1420,17 +1433,17 @@ msgstr "" msgid "Memory usage" msgstr "" -#: src/renderer/components/+nodes/nodes.tsx:68 +#: src/renderer/components/+nodes/nodes.tsx:65 msgid "Memory:" msgstr "" #: src/renderer/components/+cluster/cluster-issues.tsx:100 -#: src/renderer/components/+events/event-details.tsx:30 +#: src/renderer/components/+events/event-details.tsx:29 #: src/renderer/components/+events/events.tsx:62 msgid "Message" msgstr "" -#: src/renderer/components/+config-autoscalers/hpa.tsx:47 +#: src/renderer/components/+config-autoscalers/hpa.tsx:44 msgid "Metrics" msgstr "" @@ -1442,13 +1455,13 @@ msgstr "" msgid "Metrics not available at the moment" msgstr "" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:31 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:41 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:30 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:38 msgid "Min Available" msgstr "" #: src/renderer/components/+config-autoscalers/hpa-details.tsx:76 -#: src/renderer/components/+config-autoscalers/hpa.tsx:48 +#: src/renderer/components/+config-autoscalers/hpa.tsx:45 msgid "Min Pods" msgstr "" @@ -1460,7 +1473,7 @@ msgstr "" msgid "Minimum length is {minLength}" msgstr "" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:38 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:37 #: src/renderer/components/+storage-volumes/volume-details.tsx:33 msgid "Mount Options" msgstr "" @@ -1469,7 +1482,7 @@ msgstr "" msgid "Mountable secrets" msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:61 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:80 msgid "Mounts" msgstr "" @@ -1480,47 +1493,45 @@ msgstr "" #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:64 #: src/renderer/components/+apps-releases/releases.tsx:87 #: src/renderer/components/+config-autoscalers/hpa-details.tsx:49 -#: src/renderer/components/+config-autoscalers/hpa.tsx:45 -#: src/renderer/components/+config-maps/config-maps.tsx:34 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:39 -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:34 +#: src/renderer/components/+config-autoscalers/hpa.tsx:42 +#: src/renderer/components/+config-maps/config-maps.tsx:31 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:36 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:31 #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:131 #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:148 -#: src/renderer/components/+config-secrets/secrets.tsx:41 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:60 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:63 -#: src/renderer/components/+custom-resources/crd-details.tsx:81 -#: src/renderer/components/+custom-resources/crd-resources.tsx:63 -#: src/renderer/components/+events/event-details.tsx:55 -#: src/renderer/components/+namespaces/namespaces.tsx:31 +#: src/renderer/components/+config-secrets/secrets.tsx:38 +#: src/renderer/components/+custom-resources/crd-details.tsx:80 +#: src/renderer/components/+custom-resources/crd-resources.tsx:60 +#: src/renderer/components/+events/event-details.tsx:54 +#: src/renderer/components/+namespaces/namespaces.tsx:29 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:87 -#: src/renderer/components/+network-endpoints/endpoints.tsx:31 -#: src/renderer/components/+network-ingresses/ingresses.tsx:32 -#: src/renderer/components/+network-policies/network-policies.tsx:31 +#: src/renderer/components/+network-endpoints/endpoints.tsx:28 +#: src/renderer/components/+network-ingresses/ingresses.tsx:29 +#: src/renderer/components/+network-policies/network-policies.tsx:28 #: src/renderer/components/+network-services/service-details-endpoint.tsx:26 -#: src/renderer/components/+network-services/services.tsx:44 -#: src/renderer/components/+nodes/nodes.tsx:119 -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:35 -#: src/renderer/components/+storage-classes/storage-classes.tsx:34 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:46 +#: src/renderer/components/+network-services/services.tsx:41 +#: src/renderer/components/+nodes/nodes.tsx:116 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:32 +#: src/renderer/components/+storage-classes/storage-classes.tsx:31 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:43 #: src/renderer/components/+storage-volumes/volume-details.tsx:72 -#: src/renderer/components/+storage-volumes/volumes.tsx:40 -#: src/renderer/components/+user-management-roles/roles.tsx:33 +#: src/renderer/components/+storage-volumes/volumes.tsx:37 +#: src/renderer/components/+user-management-roles/roles.tsx:30 #: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:191 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:80 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:35 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:79 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:32 #: src/renderer/components/+user-management-service-accounts/service-accounts-secret.tsx:29 -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:36 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:45 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:45 -#: src/renderer/components/+workloads-deployments/deployments.tsx:58 -#: src/renderer/components/+workloads-jobs/jobs.tsx:37 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:34 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:43 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:42 +#: src/renderer/components/+workloads-deployments/deployments.tsx:56 +#: src/renderer/components/+workloads-jobs/jobs.tsx:34 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:92 #: src/renderer/components/+workloads-pods/pod-details.tsx:144 -#: src/renderer/components/+workloads-pods/pods.tsx:74 -#: src/renderer/components/+workloads-replicasets/replicasets.tsx:50 -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:40 -#: src/renderer/components/+workspaces/workspaces.tsx:130 +#: src/renderer/components/+workloads-pods/pods.tsx:71 +#: src/renderer/components/+workloads-replicasets/replicasets.tsx:48 +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:37 +#: src/renderer/components/+workspaces/workspaces.tsx:135 #: src/renderer/components/dock/edit-resource.tsx:89 #: src/renderer/components/kube-object/kube-object-meta.tsx:20 msgid "Name" @@ -1530,45 +1541,44 @@ msgstr "" msgid "Name (optional)" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:61 +#: src/renderer/components/+custom-resources/crd-details.tsx:60 msgid "Names" msgstr "" #: src/renderer/components/+apps-releases/release-details.tsx:182 #: src/renderer/components/+apps-releases/releases.tsx:88 -#: src/renderer/components/+config-autoscalers/hpa.tsx:46 -#: src/renderer/components/+config-maps/config-maps.tsx:35 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:40 +#: src/renderer/components/+config-autoscalers/hpa.tsx:43 +#: src/renderer/components/+config-maps/config-maps.tsx:32 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:37 #: src/renderer/components/+config-resource-quotas/add-quota-dialog.tsx:129 #: src/renderer/components/+config-resource-quotas/add-quota-dialog.tsx:130 -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:35 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:32 #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:152 -#: src/renderer/components/+config-secrets/secrets.tsx:42 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:61 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:64 -#: src/renderer/components/+custom-resources/crd-resources.tsx:64 -#: src/renderer/components/+events/event-details.tsx:56 +#: src/renderer/components/+config-secrets/secrets.tsx:39 +#: src/renderer/components/+custom-resources/crd-resources.tsx:61 +#: src/renderer/components/+events/event-details.tsx:55 #: src/renderer/components/+events/events.tsx:63 #: src/renderer/components/+namespaces/add-namespace-dialog.tsx:73 -#: src/renderer/components/+network-endpoints/endpoints.tsx:32 -#: src/renderer/components/+network-ingresses/ingresses.tsx:33 -#: src/renderer/components/+network-policies/network-policies.tsx:32 -#: src/renderer/components/+network-services/services.tsx:45 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:47 +#: src/renderer/components/+network-endpoints/endpoints.tsx:29 +#: src/renderer/components/+network-ingresses/ingresses.tsx:30 +#: src/renderer/components/+network-policies/network-policies.tsx:29 +#: src/renderer/components/+network-services/services.tsx:42 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:44 #: src/renderer/components/+storage-volumes/volume-details.tsx:77 -#: src/renderer/components/+user-management-roles/roles.tsx:34 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:96 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:37 +#: src/renderer/components/+user-management-roles/roles.tsx:31 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:95 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:34 #: src/renderer/components/+user-management-service-accounts/create-service-account-dialog.tsx:79 -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:37 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:47 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:46 -#: src/renderer/components/+workloads-deployments/deployments.tsx:59 -#: src/renderer/components/+workloads-jobs/jobs.tsx:38 -#: src/renderer/components/+workloads-pods/pods.tsx:76 -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:41 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:35 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:45 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:43 +#: src/renderer/components/+workloads-deployments/deployments.tsx:57 +#: src/renderer/components/+workloads-jobs/jobs.tsx:35 +#: src/renderer/components/+workloads-pods/pods.tsx:73 +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:38 #: src/renderer/components/dock/edit-resource.tsx:90 #: src/renderer/components/dock/install-chart.tsx:122 +#: src/renderer/components/dock/pod-log-controls.tsx:62 #: src/renderer/components/dock/upgrade-chart.tsx:98 #: src/renderer/components/item-object-list/page-filters-select.tsx:57 #: src/renderer/components/kube-object/kube-object-meta.tsx:23 @@ -1579,8 +1589,8 @@ msgstr "" msgid "Namespace: {0}" msgstr "" -#: src/renderer/components/+namespaces/namespaces.tsx:30 -#: src/renderer/components/layout/sidebar.tsx:85 +#: src/renderer/components/+namespaces/namespaces.tsx:28 +#: src/renderer/components/layout/sidebar.tsx:86 msgid "Namespaces" msgstr "" @@ -1588,13 +1598,13 @@ msgstr "" msgid "Namespaces: {0}" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:167 +#: src/renderer/components/+preferences/preferences.tsx:153 msgid "Needed with some corporate proxies that do certificate re-writing." msgstr "" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:86 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:85 #: src/renderer/components/+workloads-pods/pod-charts.tsx:13 -#: src/renderer/components/layout/sidebar.tsx:83 +#: src/renderer/components/layout/sidebar.tsx:84 msgid "Network" msgstr "" @@ -1603,14 +1613,18 @@ msgid "Network File System" msgstr "" #: src/renderer/components/+network/network.tsx:51 -#: src/renderer/components/+network-policies/network-policies.tsx:30 +#: src/renderer/components/+network-policies/network-policies.tsx:27 msgid "Network Policies" msgstr "" -#: src/renderer/components/dock/pod-logs.tsx:178 -msgid "New logs since opening the dialog" +#: src/renderer/components/dock/pod-logs.tsx:171 +msgid "New logs since opening logs tab" msgstr "" +#: src/renderer/components/dock/pod-logs.tsx:178 +#~ msgid "New logs since opening the dialog" +#~ msgstr "" + #: src/renderer/components/dock/dock.tsx:92 msgid "New tab" msgstr "" @@ -1620,16 +1634,14 @@ msgid "Next" msgstr "" #: src/renderer/components/+cluster-settings/components/remove-cluster-button.tsx:29 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:44 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:71 -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:42 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:72 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:76 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:80 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:92 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:96 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:100 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:119 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:39 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:71 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:75 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:79 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:91 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:95 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:99 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:118 msgid "No" msgstr "" @@ -1661,7 +1673,6 @@ msgstr "" msgid "No revisions to rollback." msgstr "" -#: src/renderer/components/+nodes/node-menu.tsx:24 #: src/renderer/components/+workloads-pods/pod-details.tsx:85 msgid "Node" msgstr "" @@ -1670,13 +1681,13 @@ msgstr "" msgid "Node Pods capacity" msgstr "" -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:61 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:49 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:73 -#: src/renderer/components/+workloads-jobs/job-details.tsx:60 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:60 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:46 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:72 +#: src/renderer/components/+workloads-jobs/job-details.tsx:59 #: src/renderer/components/+workloads-pods/pod-details.tsx:107 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:73 -#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:60 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:72 +#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:59 msgid "Node Selector" msgstr "" @@ -1689,17 +1700,17 @@ msgid "Node filesystem usage in bytes" msgstr "" #: src/renderer/components/+nodes/node-menu.tsx:47 -msgid "Node shell" -msgstr "" +#~ msgid "Node shell" +#~ msgstr "" -#: src/renderer/components/+nodes/nodes.tsx:118 -#: src/renderer/components/layout/sidebar.tsx:80 +#: src/renderer/components/+nodes/nodes.tsx:115 +#: src/renderer/components/layout/sidebar.tsx:81 msgid "Nodes" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:72 -msgid "Not After" -msgstr "" +#~ msgid "Not After" +#~ msgstr "" #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:72 msgid "Not Ready Addresses" @@ -1717,11 +1728,11 @@ msgstr "" msgid "Number of running Pods" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:86 +#: src/renderer/components/+nodes/node-details.tsx:85 msgid "OS" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:89 +#: src/renderer/components/+nodes/node-details.tsx:88 msgid "OS Image" msgstr "" @@ -1747,14 +1758,14 @@ msgid "Open in a browser" msgstr "" #: src/renderer/components/+config-resource-quotas/resource-quota-details.tsx:60 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:78 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:77 #: src/renderer/components/+workloads-pods/pod-details-tolerations.tsx:17 msgid "Operator" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:56 -msgid "Organization" -msgstr "" +#~ msgid "Organization" +#~ msgstr "" #: src/renderer/components/+workloads/workloads.tsx:29 #: src/renderer/components/+workloads-overview/overview-statuses.tsx:45 @@ -1765,11 +1776,11 @@ msgstr "" msgid "Page not found" msgstr "" -#: src/renderer/components/+workloads-jobs/job-details.tsx:83 +#: src/renderer/components/+workloads-jobs/job-details.tsx:82 msgid "Parallelism" msgstr "" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:42 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:41 msgid "Parameters" msgstr "" @@ -1777,23 +1788,21 @@ msgstr "" msgid "Paste as text" msgstr "" -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:94 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:102 -#: src/renderer/components/+network-ingresses/ingress-details.tsx:42 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:41 msgid "Path" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:113 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:112 msgid "Path Prefix" msgstr "" #: src/renderer/components/+storage/storage.tsx:25 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:45 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:42 msgid "Persistent Volume Claims" msgstr "" #: src/renderer/components/+storage/storage.tsx:32 -#: src/renderer/components/+storage-volumes/volumes.tsx:39 +#: src/renderer/components/+storage-volumes/volumes.tsx:36 msgid "Persistent Volumes" msgstr "" @@ -1821,12 +1830,12 @@ msgstr "" #~ msgid "Please select kubeconfig's context" #~ msgstr "" -#: src/renderer/components/+workloads-pods/pod-menu.tsx:50 +#: src/renderer/components/dock/pod-log-controls.tsx:61 msgid "Pod" msgstr "" #: src/renderer/components/+config/config.tsx:63 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:38 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:35 msgid "Pod Disruption Budgets" msgstr "" @@ -1834,43 +1843,43 @@ msgstr "" msgid "Pod IP" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:34 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:31 #: src/renderer/components/+user-management/user-management.tsx:43 msgid "Pod Security Policies" msgstr "" -#: src/renderer/components/+network-policies/network-policy-details.tsx:85 +#: src/renderer/components/+network-policies/network-policy-details.tsx:84 msgid "Pod Selector" msgstr "" -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:73 -#: src/renderer/components/+workloads-jobs/job-details.tsx:88 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:85 -#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:69 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:72 +#: src/renderer/components/+workloads-jobs/job-details.tsx:87 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:84 +#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:68 msgid "Pod Status" msgstr "" #: src/renderer/components/+workloads-pods/pod-menu.tsx:77 -msgid "Pod shell" -msgstr "" +#~ msgid "Pod shell" +#~ msgstr "" #: src/renderer/components/+cluster/cluster-pie-charts.tsx:148 -#: src/renderer/components/+nodes/node-details.tsx:65 -#: src/renderer/components/+nodes/node-details.tsx:75 -#: src/renderer/components/+nodes/node-details.tsx:80 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:60 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:50 +#: src/renderer/components/+nodes/node-details.tsx:64 +#: src/renderer/components/+nodes/node-details.tsx:74 +#: src/renderer/components/+nodes/node-details.tsx:79 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:59 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:47 #: src/renderer/components/+workloads/workloads.tsx:37 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:47 -#: src/renderer/components/+workloads-deployments/deployments.tsx:60 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:44 +#: src/renderer/components/+workloads-deployments/deployments.tsx:58 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:89 -#: src/renderer/components/+workloads-pods/pods.tsx:73 -#: src/renderer/components/+workloads-replicasets/replicasets.tsx:52 -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:42 +#: src/renderer/components/+workloads-pods/pods.tsx:70 +#: src/renderer/components/+workloads-replicasets/replicasets.tsx:50 +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:39 msgid "Pods" msgstr "" -#: src/renderer/components/+network-policies/network-policies.tsx:33 +#: src/renderer/components/+network-policies/network-policies.tsx:30 msgid "Policy Types" msgstr "" @@ -1879,29 +1888,29 @@ msgid "Port" msgstr "" #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:83 -#: src/renderer/components/+network-ingresses/ingress-details.tsx:94 -#: src/renderer/components/+network-policies/network-policy-details.tsx:96 -#: src/renderer/components/+network-policies/network-policy-details.tsx:109 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:93 +#: src/renderer/components/+network-policies/network-policy-details.tsx:95 +#: src/renderer/components/+network-policies/network-policy-details.tsx:108 #: src/renderer/components/+network-services/service-details.tsx:59 -#: src/renderer/components/+network-services/services.tsx:48 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:53 +#: src/renderer/components/+network-services/services.tsx:45 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:72 msgid "Ports" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:121 -#~ msgid "Preferences" -#~ msgstr "" +#: src/renderer/components/+preferences/preferences.tsx:118 +msgid "Preferences" +msgstr "" #: src/renderer/components/+workloads-pods/pod-details.tsx:93 msgid "Priority Class" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:67 -msgid "Private Key Secret" -msgstr "" +#~ msgid "Private Key Secret" +#~ msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:36 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:75 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:33 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:74 msgid "Privileged" msgstr "" @@ -1933,12 +1942,12 @@ msgstr "" #~ msgid "Pro-tip: you can also drag-n-drop kube-config file to this area" #~ msgstr "" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:28 -#: src/renderer/components/+storage-classes/storage-classes.tsx:35 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:27 +#: src/renderer/components/+storage-classes/storage-classes.tsx:32 msgid "Provisioner" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:140 +#: src/renderer/components/+preferences/preferences.tsx:126 msgid "Proxy is used only for non-cluster communication." msgstr "" @@ -1946,7 +1955,7 @@ msgstr "" msgid "Proxy settings" msgstr "" -#: src/renderer/components/+workloads-pods/pods.tsx:80 +#: src/renderer/components/+workloads-pods/pods.tsx:77 msgid "QoS" msgstr "" @@ -1958,27 +1967,28 @@ msgstr "" msgid "Quotas" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:27 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:26 msgid "Ranges (Min-Max)" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:114 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:113 msgid "Read-only" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:79 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:78 msgid "Read-only Root Filesystem" msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:75 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:94 msgid "Readiness" msgstr "" -#: src/renderer/components/+events/event-details.tsx:33 +#: src/renderer/components/+events/event-details.tsx:32 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:25 msgid "Reason" msgstr "" -#: src/renderer/components/dock/pod-logs.store.ts:66 +#: src/renderer/components/dock/pod-logs.store.ts:57 msgid "Reason: {0} ({1})" msgstr "" @@ -1986,8 +1996,8 @@ msgstr "" msgid "Receive" msgstr "" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:34 -#: src/renderer/components/+storage-classes/storage-classes.tsx:36 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:33 +#: src/renderer/components/+storage-classes/storage-classes.tsx:33 #: src/renderer/components/+storage-volumes/volume-details.tsx:40 msgid "Reclaim Policy" msgstr "" @@ -1997,7 +2007,7 @@ msgstr "" #~ msgstr "" #: src/renderer/components/+config-autoscalers/hpa-details.tsx:70 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:76 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:75 msgid "Reference" msgstr "" @@ -2022,10 +2032,10 @@ msgstr "" msgid "Releases" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:152 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:60 -#: src/renderer/components/cluster-manager/clusters-menu.tsx:73 -#: src/renderer/components/cluster-manager/clusters-menu.tsx:79 +#: src/renderer/components/+preferences/preferences.tsx:138 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:59 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:74 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:80 #: src/renderer/components/item-object-list/item-list-layout.tsx:179 #: src/renderer/components/menu/menu-actions.tsx:49 #: src/renderer/components/menu/menu-actions.tsx:85 @@ -2048,11 +2058,11 @@ msgstr "" msgid "Remove item?" msgstr "" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:61 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:60 msgid "Remove selected bindings for <0>{0}?" msgstr "" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:112 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:111 msgid "Remove selected bindings from ${name}" msgstr "" @@ -2060,11 +2070,11 @@ msgstr "" msgid "Remove selected items ({0})" msgstr "" -#: src/renderer/components/kube-object/kube-object-menu.tsx:69 +#: src/renderer/components/kube-object/kube-object-menu.tsx:70 msgid "Remove {resourceKind} <0>{resourceName}?" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:122 +#: src/renderer/components/+preferences/preferences.tsx:112 msgid "Removing helm branch <0>{0} has failed: {1}" msgstr "" @@ -2073,14 +2083,14 @@ msgstr "" #~ msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:62 -msgid "Renew Before" -msgstr "" +#~ msgid "Renew Before" +#~ msgstr "" #: src/renderer/components/+config-autoscalers/hpa-details.tsx:84 -#: src/renderer/components/+config-autoscalers/hpa.tsx:50 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:63 -#: src/renderer/components/+workloads-deployments/deployments.tsx:61 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:80 +#: src/renderer/components/+config-autoscalers/hpa.tsx:47 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:62 +#: src/renderer/components/+workloads-deployments/deployments.tsx:59 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:79 msgid "Replicas" msgstr "" @@ -2088,7 +2098,7 @@ msgstr "" msgid "Repo/Name" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:146 +#: src/renderer/components/+preferences/preferences.tsx:132 msgid "Repositories" msgstr "" @@ -2115,7 +2125,7 @@ msgstr "" msgid "Requests" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:87 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:86 msgid "Required Drop Capabilities" msgstr "" @@ -2144,18 +2154,18 @@ msgstr "" #~ msgid "Resetting kube-config to default: {kubeConfigDefaultPath}" #~ msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:44 -#: src/renderer/components/+custom-resources/crd-list.tsx:73 +#: src/renderer/components/+custom-resources/crd-details.tsx:43 +#: src/renderer/components/+custom-resources/crd-list.tsx:70 msgid "Resource" msgstr "" -#: src/renderer/components/+user-management-roles/role-details.tsx:45 +#: src/renderer/components/+user-management-roles/role-details.tsx:44 msgid "Resource Names" msgstr "" #: src/renderer/components/+config/config.tsx:47 -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:33 -#: src/renderer/components/+namespaces/namespace-details.tsx:41 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:30 +#: src/renderer/components/+namespaces/namespace-details.tsx:40 msgid "Resource Quotas" msgstr "" @@ -2163,7 +2173,7 @@ msgstr "" msgid "Resource Version" msgstr "" -#: src/renderer/components/kube-object/kube-object-details.tsx:46 +#: src/renderer/components/kube-object/kube-object-details.tsx:48 msgid "Resource loading has failed: <0>{0}" msgstr "" @@ -2176,7 +2186,7 @@ msgid "ResourceQuota name" msgstr "" #: src/renderer/components/+apps-releases/release-details.tsx:198 -#: src/renderer/components/+user-management-roles/role-details.tsx:29 +#: src/renderer/components/+user-management-roles/role-details.tsx:28 msgid "Resources" msgstr "" @@ -2192,7 +2202,7 @@ msgstr "" msgid "Restart session" msgstr "" -#: src/renderer/components/+workloads-pods/pods.tsx:78 +#: src/renderer/components/+workloads-pods/pods.tsx:75 msgid "Restarts" msgstr "" @@ -2205,27 +2215,27 @@ msgstr "" msgid "Right click cluster icon to open cluster settings." msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:149 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:148 #: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:187 msgid "Role" msgstr "" #: src/renderer/components/+user-management/user-management.tsx:31 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:34 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:31 msgid "Role Bindings" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:105 -msgid "Role ID" -msgstr "" +#~ msgid "Role ID" +#~ msgstr "" #: src/renderer/components/+user-management-roles/add-role-dialog.tsx:74 msgid "Role name" msgstr "" -#: src/renderer/components/+nodes/nodes.tsx:124 +#: src/renderer/components/+nodes/nodes.tsx:121 #: src/renderer/components/+user-management/user-management.tsx:36 -#: src/renderer/components/+user-management-roles/roles.tsx:32 +#: src/renderer/components/+user-management-roles/roles.tsx:29 msgid "Roles" msgstr "" @@ -2239,41 +2249,41 @@ msgstr "" msgid "Rollback <0>{releaseName}" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:24 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:142 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:23 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:141 msgid "Rule" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:105 -#: src/renderer/components/+network-ingresses/ingresses.tsx:34 -#: src/renderer/components/+user-management-roles/role-details.tsx:25 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:104 +#: src/renderer/components/+network-ingresses/ingresses.tsx:32 +#: src/renderer/components/+user-management-roles/role-details.tsx:24 msgid "Rules" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:126 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:125 msgid "Run As Group" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:127 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:126 msgid "Run As User" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:131 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:130 msgid "Runtime Class" msgstr "" #: src/renderer/components/+apps-releases/release-details.tsx:114 -#: src/renderer/components/+config-maps/config-map-details.tsx:78 -#: src/renderer/components/+config-secrets/secret-details.tsx:97 -#: src/renderer/components/+workspaces/workspaces.tsx:132 +#: src/renderer/components/+config-maps/config-map-details.tsx:77 +#: src/renderer/components/+config-secrets/secret-details.tsx:96 +#: src/renderer/components/+workspaces/workspaces.tsx:137 #: src/renderer/components/dock/edit-resource.tsx:87 -#: src/renderer/components/dock/pod-logs.tsx:161 +#: src/renderer/components/dock/pod-log-controls.tsx:74 msgid "Save" msgstr "" #: src/renderer/components/+workloads-deployments/deployment-scale-dialog.tsx:128 -#: src/renderer/components/+workloads-deployments/deployments.tsx:86 -#: src/renderer/components/+workloads-deployments/deployments.tsx:87 +#: src/renderer/components/+workloads-deployments/deployments.tsx:83 +#: src/renderer/components/+workloads-deployments/deployments.tsx:84 msgid "Scale" msgstr "" @@ -2281,13 +2291,13 @@ msgstr "" msgid "Scale Deployment <0>{deploymentName}" msgstr "" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:46 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:45 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:46 msgid "Schedule" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:41 -#: src/renderer/components/+custom-resources/crd-list.tsx:76 +#: src/renderer/components/+custom-resources/crd-details.tsx:40 +#: src/renderer/components/+custom-resources/crd-list.tsx:73 msgid "Scope" msgstr "" @@ -2299,7 +2309,7 @@ msgstr "" msgid "Scope name" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:141 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:140 msgid "Se Linux" msgstr "" @@ -2313,13 +2323,13 @@ msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:65 #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:108 -msgid "Secret" -msgstr "" +#~ msgid "Secret" +#~ msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:37 #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:80 -msgid "Secret Name" -msgstr "" +#~ msgid "Secret Name" +#~ msgstr "" #: src/renderer/components/+user-management-service-accounts/service-accounts-details.tsx:72 msgid "Secret is not found" @@ -2329,7 +2339,7 @@ msgstr "" msgid "Secret name" msgstr "" -#: src/renderer/components/+config-secrets/secret-details.tsx:44 +#: src/renderer/components/+config-secrets/secret-details.tsx:43 msgid "Secret successfully updated." msgstr "" @@ -2338,7 +2348,7 @@ msgid "Secret type" msgstr "" #: src/renderer/components/+config/config.tsx:39 -#: src/renderer/components/+config-secrets/secrets.tsx:40 +#: src/renderer/components/+config-secrets/secrets.tsx:37 #: src/renderer/components/+workloads-pods/pod-details.tsx:113 msgid "Secrets" msgstr "" @@ -2425,35 +2435,35 @@ msgstr "" #~ msgid "Selected contexts: {0}" #~ msgstr "" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:27 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:26 #: src/renderer/components/+network-services/service-details.tsx:37 -#: src/renderer/components/+network-services/services.tsx:50 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:69 -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:75 -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:57 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:69 -#: src/renderer/components/+workloads-jobs/job-details.tsx:56 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:69 -#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:56 +#: src/renderer/components/+network-services/services.tsx:47 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:68 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:74 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:56 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:68 +#: src/renderer/components/+workloads-jobs/job-details.tsx:55 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:68 +#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:55 msgid "Selector" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:61 #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:91 -msgid "Server" -msgstr "" +#~ msgid "Server" +#~ msgstr "" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:102 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:101 msgid "Service" msgstr "" #: src/renderer/components/+user-management/user-management.tsx:26 -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:35 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:33 msgid "Service Accounts" msgstr "" #: src/renderer/components/+network/network.tsx:27 -#: src/renderer/components/+network-services/services.tsx:43 +#: src/renderer/components/+network-services/services.tsx:40 msgid "Services" msgstr "" @@ -2469,18 +2479,18 @@ msgstr "" msgid "Set quota" msgstr "" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:51 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:52 msgid "Settings" msgstr "" #: src/renderer/components/+nodes/node-menu.tsx:48 #: src/renderer/components/+workloads-pods/pod-menu.tsx:78 -msgid "Shell" -msgstr "" +#~ msgid "Shell" +#~ msgstr "" -#: src/renderer/components/+config-secrets/secret-details.tsx:93 -#: src/renderer/components/+workloads-pods/pod-container-env.tsx:101 -#: src/renderer/components/dock/pod-logs.tsx:159 +#: src/renderer/components/+config-secrets/secret-details.tsx:92 +#: src/renderer/components/+workloads-pods/pod-container-env.tsx:102 +#: src/renderer/components/dock/pod-log-controls.tsx:72 #: src/renderer/components/drawer/drawer-param-toggler.tsx:19 msgid "Show" msgstr "" @@ -2489,11 +2499,11 @@ msgstr "" msgid "Show Notes" msgstr "" -#: src/renderer/components/dock/pod-logs.tsx:160 +#: src/renderer/components/dock/pod-log-controls.tsx:73 msgid "Show current logs" msgstr "" -#: src/renderer/components/dock/pod-logs.tsx:160 +#: src/renderer/components/dock/pod-log-controls.tsx:73 msgid "Show previous terminated container logs" msgstr "" @@ -2501,12 +2511,12 @@ msgstr "" msgid "Show value" msgstr "" -#: src/renderer/components/dock/pod-logs.tsx:154 +#: src/renderer/components/dock/pod-log-controls.tsx:67 msgid "Since" msgstr "" #: src/renderer/components/+nodes/node-charts.tsx:80 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:49 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:46 msgid "Size" msgstr "" @@ -2515,10 +2525,10 @@ msgid "Size Limit" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:70 -msgid "Skip TLS Verify" -msgstr "" +#~ msgid "Skip TLS Verify" +#~ msgstr "" -#: src/renderer/components/+events/event-details.tsx:36 +#: src/renderer/components/+events/event-details.tsx:35 #: src/renderer/components/+events/events.tsx:66 #: src/renderer/components/+events/kube-event-details.tsx:48 msgid "Source" @@ -2528,7 +2538,11 @@ msgstr "" msgid "Specified limits are higher than node capacity!" msgstr "" -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:39 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:26 +msgid "Started at" +msgstr "" + +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:36 msgid "Stateful Sets" msgstr "" @@ -2539,59 +2553,55 @@ msgstr "" #: src/renderer/components/+apps-releases/release-details.tsx:192 #: src/renderer/components/+apps-releases/releases.tsx:93 #: src/renderer/components/+config-autoscalers/hpa-details.tsx:88 -#: src/renderer/components/+config-autoscalers/hpa.tsx:52 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:79 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:67 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:48 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:68 -#: src/renderer/components/+custom-resources/crd-resource-details.tsx:56 -#: src/renderer/components/+namespaces/namespace-details.tsx:37 -#: src/renderer/components/+namespaces/namespaces.tsx:34 -#: src/renderer/components/+network-services/services.tsx:52 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:65 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:52 +#: src/renderer/components/+config-autoscalers/hpa.tsx:49 +#: src/renderer/components/+custom-resources/crd-resource-details.tsx:49 +#: src/renderer/components/+namespaces/namespace-details.tsx:36 +#: src/renderer/components/+namespaces/namespaces.tsx:32 +#: src/renderer/components/+network-services/services.tsx:49 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:64 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:49 #: src/renderer/components/+storage-volumes/volume-details.tsx:46 -#: src/renderer/components/+storage-volumes/volumes.tsx:45 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:39 +#: src/renderer/components/+storage-volumes/volumes.tsx:42 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:57 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:97 #: src/renderer/components/+workloads-pods/pod-details.tsx:82 -#: src/renderer/components/+workloads-pods/pods.tsx:82 +#: src/renderer/components/+workloads-pods/pods.tsx:79 msgid "Status" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:64 -msgid "Status URI" -msgstr "" +#~ msgid "Status URI" +#~ msgstr "" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:57 -#: src/renderer/components/layout/sidebar.tsx:84 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:56 +#: src/renderer/components/layout/sidebar.tsx:85 msgid "Storage" msgstr "" -#: src/renderer/components/+storage-volumes/volumes.tsx:41 +#: src/renderer/components/+storage-volumes/volumes.tsx:38 msgid "Storage Class" msgstr "" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:54 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:53 #: src/renderer/components/+storage-volumes/volume-details.tsx:43 msgid "Storage Class Name" msgstr "" #: src/renderer/components/+storage/storage.tsx:40 -#: src/renderer/components/+storage-classes/storage-classes.tsx:33 +#: src/renderer/components/+storage-classes/storage-classes.tsx:30 msgid "Storage Classes" msgstr "" -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:48 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:45 msgid "Storage class" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:38 +#: src/renderer/components/+custom-resources/crd-details.tsx:37 msgid "Stored versions" msgstr "" -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:68 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:76 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:67 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:75 msgid "Strategy Type" msgstr "" @@ -2608,7 +2618,7 @@ msgstr "" msgid "Submitting.." msgstr "" -#: src/renderer/components/+network-endpoints/endpoint-details.tsx:24 +#: src/renderer/components/+network-endpoints/endpoint-details.tsx:23 msgid "Subsets" msgstr "" @@ -2616,31 +2626,31 @@ msgstr "" msgid "Successfully imported <0>{0} cluster(s)" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:128 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:127 msgid "Supplemental Groups" msgstr "" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:54 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:49 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:53 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:47 msgid "Suspend" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:98 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:97 msgid "TLS" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:103 -#: src/renderer/components/+nodes/nodes.tsx:123 +#: src/renderer/components/+nodes/node-details.tsx:102 +#: src/renderer/components/+nodes/nodes.tsx:120 msgid "Taints" msgstr "" #: src/renderer/components/+preferences/preferences.tsx:171 -msgid "Telemetry & Usage Tracking" -msgstr "" +#~ msgid "Telemetry & Usage Tracking" +#~ msgstr "" #: src/renderer/components/+preferences/preferences.tsx:174 -msgid "Telemetry & usage data is collected to continuously improve the Lens experience." -msgstr "" +#~ msgid "Telemetry & usage data is collected to continuously improve the Lens experience." +#~ msgstr "" #: src/renderer/components/dock/terminal.store.ts:28 msgid "Terminal" @@ -2654,7 +2664,7 @@ msgstr "" msgid "The path to the kubectl binary on the system." msgstr "" -#: src/renderer/components/dock/pod-logs.tsx:172 +#: src/renderer/components/dock/pod-logs.tsx:162 msgid "There are no logs available for container." msgstr "" @@ -2674,11 +2684,15 @@ msgstr "" msgid "This is the quick launch menu." msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:166 +#: src/renderer/components/+cluster-settings/components/cluster-accessible-namespaces.tsx:22 +msgid "This setting is useful for manually specifying which namespaces you have access to. This is useful when you don't have permissions to list namespaces." +msgstr "" + +#: src/renderer/components/+preferences/preferences.tsx:152 msgid "This will make Lens to trust ANY certificate authority without any validations." msgstr "" -#: src/renderer/components/+network-policies/network-policy-details.tsx:59 +#: src/renderer/components/+network-policies/network-policy-details.tsx:58 msgid "To" msgstr "" @@ -2699,8 +2713,8 @@ msgid "Transmit" msgstr "" #: src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx:106 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:79 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:80 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:76 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:77 msgid "Trigger" msgstr "" @@ -2709,25 +2723,22 @@ msgid "Trigger CronJob <0>{cronjobName}" msgstr "" #: src/renderer/components/+cluster/cluster-issues.tsx:102 -#: src/renderer/components/+config-secrets/secret-details.tsx:74 -#: src/renderer/components/+config-secrets/secrets.tsx:45 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:63 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:44 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:66 -#: src/renderer/components/+custom-resources/crd-details.tsx:82 -#: src/renderer/components/+events/event-details.tsx:48 +#: src/renderer/components/+config-secrets/secret-details.tsx:73 +#: src/renderer/components/+config-secrets/secrets.tsx:42 +#: src/renderer/components/+custom-resources/crd-details.tsx:81 +#: src/renderer/components/+events/event-details.tsx:47 #: src/renderer/components/+events/events.tsx:64 #: src/renderer/components/+network-services/service-details.tsx:41 -#: src/renderer/components/+network-services/services.tsx:46 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:152 +#: src/renderer/components/+network-services/services.tsx:43 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:151 #: src/renderer/components/+storage-volumes/volume-details.tsx:69 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:95 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:94 #: src/renderer/components/+user-management-service-accounts/service-accounts-secret.tsx:43 #: src/renderer/components/+workloads-pods/pod-details.tsx:140 msgid "Type" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:138 +#: src/renderer/components/+preferences/preferences.tsx:124 msgid "Type HTTP proxy url (example: http://proxy.acme.org:8080)" msgstr "" @@ -2736,13 +2747,13 @@ msgid "UID" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:126 -msgid "URL" -msgstr "" +#~ msgid "URL" +#~ msgstr "" #: src/renderer/components/+nodes/node-menu.tsx:55 #: src/renderer/components/+nodes/node-menu.tsx:56 -msgid "Uncordon" -msgstr "" +#~ msgid "Uncordon" +#~ msgstr "" #: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:212 msgid "Update" @@ -2797,11 +2808,11 @@ msgstr "" #~ msgid "Used" #~ msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:155 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:154 msgid "User" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:99 +#: src/renderer/components/+custom-resources/crd-details.tsx:98 msgid "Validation" msgstr "" @@ -2814,11 +2825,11 @@ msgstr "" #: src/renderer/components/+apps-releases/release-details.tsx:111 #: src/renderer/components/+config-resource-quotas/add-quota-dialog.tsx:132 #: src/renderer/components/+config-resource-quotas/resource-quota-details.tsx:62 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:79 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:78 msgid "Values" msgstr "" -#: src/renderer/components/+user-management-roles/role-details.tsx:33 +#: src/renderer/components/+user-management-roles/role-details.tsx:32 msgid "Verbs" msgstr "" @@ -2826,9 +2837,9 @@ msgstr "" #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:66 #: src/renderer/components/+apps-releases/release-details.tsx:185 #: src/renderer/components/+apps-releases/releases.tsx:91 -#: src/renderer/components/+custom-resources/crd-details.tsx:35 -#: src/renderer/components/+custom-resources/crd-list.tsx:75 -#: src/renderer/components/+nodes/nodes.tsx:125 +#: src/renderer/components/+custom-resources/crd-details.tsx:34 +#: src/renderer/components/+custom-resources/crd-list.tsx:72 +#: src/renderer/components/+nodes/nodes.tsx:122 #: src/renderer/components/dock/install-chart.tsx:120 #: src/renderer/components/dock/upgrade-chart.tsx:99 msgid "Version" @@ -2838,7 +2849,7 @@ msgstr "" msgid "View Helm Release" msgstr "" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:31 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:30 msgid "Volume Binding Mode" msgstr "" @@ -2850,8 +2861,8 @@ msgstr "" msgid "Volume disk usage" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:37 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:47 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:34 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:46 #: src/renderer/components/+workloads-pods/pod-details.tsx:130 msgid "Volumes" msgstr "" @@ -2868,7 +2879,7 @@ msgstr "" msgid "Welcome!" msgstr "" -#: src/renderer/components/+workspaces/workspaces.tsx:88 +#: src/renderer/components/+workspaces/workspaces.tsx:92 msgid "What is a Workspace?" msgstr "" @@ -2876,16 +2887,16 @@ msgstr "" msgid "Worker" msgstr "" -#: src/renderer/components/layout/sidebar.tsx:81 +#: src/renderer/components/layout/sidebar.tsx:82 msgid "Workloads" msgstr "" #: src/renderer/components/+workspaces/workspace-menu.tsx:39 -#: src/renderer/components/+workspaces/workspaces.tsx:100 +#: src/renderer/components/+workspaces/workspaces.tsx:104 msgid "Workspaces" msgstr "" -#: src/renderer/components/+workspaces/workspaces.tsx:90 +#: src/renderer/components/+workspaces/workspaces.tsx:94 msgid "Workspaces are used to organize number of clusters into logical groups." msgstr "" @@ -2898,27 +2909,25 @@ msgid "Wrong url format" msgstr "" #: src/renderer/components/+cluster-settings/components/remove-cluster-button.tsx:28 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:44 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:71 -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:42 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:72 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:76 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:80 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:92 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:96 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:100 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:119 -#: src/renderer/components/+storage-classes/storage-classes.tsx:43 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:39 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:71 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:75 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:79 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:91 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:95 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:99 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:118 +#: src/renderer/components/+storage-classes/storage-classes.tsx:40 msgid "Yes" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:118 -msgid "Zone" -msgstr "" +#~ msgid "Zone" +#~ msgstr "" #: src/renderer/components/+apps-releases/release-details.tsx:180 -#: src/renderer/components/+events/event-details.tsx:40 -#: src/renderer/components/+events/event-details.tsx:43 +#: src/renderer/components/+events/event-details.tsx:39 +#: src/renderer/components/+events/event-details.tsx:42 #: src/renderer/components/kube-object/kube-object-meta.tsx:18 msgid "ago" msgstr "" @@ -2931,36 +2940,37 @@ msgstr "" #~ msgid "applicable to all clusters" #~ msgstr "" -#: src/renderer/components/+nodes/nodes.tsx:57 +#: src/renderer/components/+nodes/nodes.tsx:54 msgid "cores:" msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:42 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:18 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:25 msgid "exit code" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:66 +#: src/renderer/components/+custom-resources/crd-details.tsx:65 msgid "kind" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:67 +#: src/renderer/components/+custom-resources/crd-details.tsx:66 msgid "listKind" msgstr "" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:48 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:61 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:47 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:59 msgid "never" msgstr "" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:130 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:133 msgid "new" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:64 +#: src/renderer/components/+custom-resources/crd-details.tsx:63 msgid "plural" msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:41 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:17 msgid "ready" msgstr "" @@ -2968,11 +2978,11 @@ msgstr "" msgid "sec" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:65 +#: src/renderer/components/+custom-resources/crd-details.tsx:64 msgid "singular" msgstr "" -#: src/renderer/components/dock/pod-logs.tsx:159 +#: src/renderer/components/dock/pod-log-controls.tsx:72 msgid "timestamps" msgstr "" @@ -2980,7 +2990,7 @@ msgstr "" msgid "{0, plural, one {Resource} other {Resources}}" msgstr "" -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:64 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:63 msgid "{0} desired, {1} updated" msgstr "" @@ -2996,11 +3006,11 @@ msgstr "" msgid "{0} on {1}" msgstr "" -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:65 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:64 msgid "{0} total, {1} available" msgstr "" -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:66 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:65 msgid "{0} unavailable" msgstr "" @@ -3012,7 +3022,7 @@ msgstr "" msgid "{allItemsCount, plural, one {# item} other {# items}}" msgstr "" -#: src/renderer/components/+config-autoscalers/hpa.tsx:31 +#: src/renderer/components/+config-autoscalers/hpa.tsx:28 msgid "{metricsRemainCount} more..." msgstr "" diff --git a/locales/ru/messages.po b/locales/ru/messages.po index 9b4fbc99ba..dc947d724c 100644 --- a/locales/ru/messages.po +++ b/locales/ru/messages.po @@ -26,11 +26,11 @@ msgstr "" msgid "(as a percentage of request)" msgstr "" -#: src/renderer/components/+workspaces/workspaces.tsx:121 +#: src/renderer/components/+workspaces/workspaces.tsx:126 msgid "(current)" msgstr "" -#: src/renderer/components/+network-policies/network-policy-details.tsx:88 +#: src/renderer/components/+network-policies/network-policy-details.tsx:87 msgid "(empty) (Allowing the specific traffic to all pods in this namespace)" msgstr "(Пусто) (Допускается трафик ко всем подам в данной области имен)" @@ -62,19 +62,19 @@ msgstr "" msgid "A System Name must be lowercase DNS labels separated by dots. DNS labels are alphanumerics and dashes enclosed by alphanumerics." msgstr "Это поле может содержать только латинские буквы в нижнем регистре, номера и дефис." -#: src/renderer/components/+workspaces/workspaces.tsx:93 +#: src/renderer/components/+workspaces/workspaces.tsx:97 msgid "A single workspaces contains a list of clusters and their full configuration." msgstr "" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:81 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:80 msgid "API Group" msgstr "" -#: src/renderer/components/layout/sidebar.tsx:88 +#: src/renderer/components/layout/sidebar.tsx:89 msgid "Access Control" msgstr "Контроль доступа" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:51 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:50 #: src/renderer/components/+storage-volumes/volume-details.tsx:37 msgid "Access Modes" msgstr "Режимы доступа" @@ -83,17 +83,17 @@ msgstr "Режимы доступа" msgid "Account Name" msgstr "Название аккаунта" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:51 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:50 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:50 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48 msgid "Active" msgstr "Активный" #: src/renderer/components/+add-cluster/add-cluster.tsx:310 -#: src/renderer/components/cluster-manager/clusters-menu.tsx:127 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:130 msgid "Add Cluster" msgstr "" -#: src/renderer/components/+namespaces/namespaces.tsx:43 +#: src/renderer/components/+namespaces/namespaces.tsx:39 msgid "Add Namespace" msgstr "Добавить Namespace" @@ -101,11 +101,11 @@ msgstr "Добавить Namespace" msgid "Add RoleBinding" msgstr "Добавить привязку ролей" -#: src/renderer/components/+workspaces/workspaces.tsx:138 +#: src/renderer/components/+workspaces/workspaces.tsx:143 msgid "Add Workspace" msgstr "" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:112 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:111 msgid "Add bindings to {name}" msgstr "Добавить привязки к {name}" @@ -137,7 +137,7 @@ msgstr "Добавить поле" #~ msgid "Adding clusters: <0>{0}" #~ msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:111 +#: src/renderer/components/+preferences/preferences.tsx:101 msgid "Adding helm branch <0>{0} has failed: {1}" msgstr "" @@ -145,13 +145,13 @@ msgstr "" #~ msgid "Adding repo <0>{0} has failed: {1}" #~ msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:78 +#: src/renderer/components/+custom-resources/crd-details.tsx:77 msgid "Additional Printer Columns" msgstr "" #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:29 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:60 -#: src/renderer/components/+nodes/node-details.tsx:83 +#: src/renderer/components/+nodes/node-details.tsx:82 msgid "Addresses" msgstr "Адреса" @@ -159,36 +159,34 @@ msgstr "Адреса" msgid "Affinities" msgstr "Аффинитеты" -#: src/renderer/components/+config-autoscalers/hpa.tsx:51 -#: src/renderer/components/+config-maps/config-maps.tsx:37 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:45 -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:36 -#: src/renderer/components/+config-secrets/secrets.tsx:46 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:66 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:67 -#: src/renderer/components/+custom-resources/crd-list.tsx:77 -#: src/renderer/components/+custom-resources/crd-resources.tsx:73 +#: src/renderer/components/+config-autoscalers/hpa.tsx:48 +#: src/renderer/components/+config-maps/config-maps.tsx:34 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:42 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:33 +#: src/renderer/components/+config-secrets/secrets.tsx:43 +#: src/renderer/components/+custom-resources/crd-list.tsx:74 +#: src/renderer/components/+custom-resources/crd-resources.tsx:70 #: src/renderer/components/+events/events.tsx:68 -#: src/renderer/components/+namespaces/namespaces.tsx:33 -#: src/renderer/components/+network-endpoints/endpoints.tsx:34 -#: src/renderer/components/+network-ingresses/ingresses.tsx:35 -#: src/renderer/components/+network-policies/network-policies.tsx:34 -#: src/renderer/components/+network-services/services.tsx:51 -#: src/renderer/components/+nodes/nodes.tsx:126 -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:38 -#: src/renderer/components/+storage-classes/storage-classes.tsx:38 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:51 -#: src/renderer/components/+storage-volumes/volumes.tsx:44 -#: src/renderer/components/+user-management-roles/roles.tsx:35 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:38 -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:38 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:52 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:50 -#: src/renderer/components/+workloads-deployments/deployments.tsx:63 -#: src/renderer/components/+workloads-jobs/jobs.tsx:41 -#: src/renderer/components/+workloads-pods/pods.tsx:81 -#: src/renderer/components/+workloads-replicasets/replicasets.tsx:53 -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:44 +#: src/renderer/components/+namespaces/namespaces.tsx:31 +#: src/renderer/components/+network-endpoints/endpoints.tsx:31 +#: src/renderer/components/+network-ingresses/ingresses.tsx:33 +#: src/renderer/components/+network-policies/network-policies.tsx:31 +#: src/renderer/components/+network-services/services.tsx:48 +#: src/renderer/components/+nodes/nodes.tsx:123 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:35 +#: src/renderer/components/+storage-classes/storage-classes.tsx:35 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:48 +#: src/renderer/components/+storage-volumes/volumes.tsx:41 +#: src/renderer/components/+user-management-roles/roles.tsx:32 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:35 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:36 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:50 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:47 +#: src/renderer/components/+workloads-deployments/deployments.tsx:61 +#: src/renderer/components/+workloads-jobs/jobs.tsx:38 +#: src/renderer/components/+workloads-pods/pods.tsx:78 +#: src/renderer/components/+workloads-replicasets/replicasets.tsx:51 +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:41 msgid "Age" msgstr "Возраст" @@ -200,68 +198,68 @@ msgstr "" #~ msgid "All clusters within workspace will be cleared as well." #~ msgstr "" -#: src/renderer/components/+custom-resources/crd-list.tsx:56 +#: src/renderer/components/+custom-resources/crd-list.tsx:53 msgid "All groups" msgstr "" #: src/renderer/components/dock/pod-logs.tsx:37 -msgid "All logs" -msgstr "Все логи" +#~ msgid "All logs" +#~ msgstr "Все логи" #: src/renderer/components/+namespaces/namespace-select.tsx:95 msgid "All namespaces" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:77 +#: src/renderer/components/+nodes/node-details.tsx:76 msgid "Allocatable" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:71 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:70 msgid "Allow Privilege Escalation" msgstr "" #: src/renderer/components/+preferences/preferences.tsx:172 -msgid "Allow telemetry & usage tracking" -msgstr "" +#~ msgid "Allow telemetry & usage tracking" +#~ msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:164 +#: src/renderer/components/+preferences/preferences.tsx:150 msgid "Allow untrusted Certificate Authorities" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:51 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:50 msgid "Allowed CSI Drivers" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:43 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:42 msgid "Allowed Capabilities" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:55 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:54 msgid "Allowed Flex Volumes" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:110 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:109 msgid "Allowed Host Paths" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:59 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:58 msgid "Allowed Proc Mount Types" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:132 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:131 msgid "Allowed Runtime Class Names" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:63 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:62 msgid "Allowed Unsafe Sysctls" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:102 +#: src/renderer/components/+nodes/node-details.tsx:101 #: src/renderer/components/kube-object/kube-object-meta.tsx:36 msgid "Annotations" msgstr "Аннотации" -#: src/renderer/components/+user-management-roles/role-details.tsx:37 +#: src/renderer/components/+user-management-roles/role-details.tsx:36 msgid "Api Groups" msgstr "API группы" @@ -278,7 +276,7 @@ msgstr "Сбой работы приложения на <0>{pageUrl}" msgid "Applying.." msgstr "Применение.." -#: src/renderer/components/layout/sidebar.tsx:87 +#: src/renderer/components/layout/sidebar.tsx:88 msgid "Apps" msgstr "Приложения" @@ -287,10 +285,10 @@ msgid "Are you sure you want remove workspace <0>{0}?" msgstr "" #: src/renderer/components/+nodes/node-menu.tsx:41 -msgid "Are you sure you want to drain <0>{nodeName}?" -msgstr "Выполнить команду drain для ноды <0>{nodeName}?" +#~ msgid "Are you sure you want to drain <0>{nodeName}?" +#~ msgstr "Выполнить команду drain для ноды <0>{nodeName}?" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:84 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:103 msgid "Arguments" msgstr "Аргументы" @@ -299,14 +297,14 @@ msgid "Associate clusters and choose the ones you want to access via quick launc msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:101 -msgid "Auth App Role" -msgstr "Auth App Role" +#~ msgid "Auth App Role" +#~ msgstr "Auth App Role" -#: src/renderer/components/+preferences/preferences.tsx:160 +#: src/renderer/components/+preferences/preferences.tsx:146 msgid "Auto start-up" msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:161 +#: src/renderer/components/+preferences/preferences.tsx:147 msgid "Automatically start Lens on login" msgstr "" @@ -315,11 +313,11 @@ msgstr "" msgid "Back" msgstr "Назад" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:43 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:42 msgid "Backends" msgstr "Бэкенды" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:94 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:93 msgid "Binding" msgstr "Привязка" @@ -327,8 +325,8 @@ msgstr "Привязка" msgid "Binding targets" msgstr "Цели привязки" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:90 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:36 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:89 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:33 msgid "Bindings" msgstr "Привязки" @@ -371,17 +369,17 @@ msgstr "Байты, отправленные всеми контейнерами #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:97 #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:129 -msgid "CA Bundle" -msgstr "CA Bundle" +#~ msgid "CA Bundle" +#~ msgstr "CA Bundle" #: src/renderer/components/+cluster/cluster-metric-switchers.tsx:24 #: src/renderer/components/+cluster/cluster-pie-charts.tsx:140 -#: src/renderer/components/+nodes/node-details.tsx:62 -#: src/renderer/components/+nodes/node-details.tsx:73 -#: src/renderer/components/+nodes/node-details.tsx:78 -#: src/renderer/components/+nodes/nodes.tsx:120 +#: src/renderer/components/+nodes/node-details.tsx:61 +#: src/renderer/components/+nodes/node-details.tsx:72 +#: src/renderer/components/+nodes/node-details.tsx:77 +#: src/renderer/components/+nodes/nodes.tsx:117 #: src/renderer/components/+workloads-pods/pod-charts.tsx:11 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:26 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:44 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:53 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:95 #: src/renderer/components/resource-metrics/resource-metrics-text.tsx:13 @@ -407,11 +405,11 @@ msgstr "Лимиты процессора" msgid "CPU requests" msgstr "Запросы к процессору" -#: src/renderer/components/+nodes/nodes.tsx:57 +#: src/renderer/components/+nodes/nodes.tsx:54 msgid "CPU:" msgstr "CPU:" -#: src/renderer/components/+workspaces/workspaces.tsx:133 +#: src/renderer/components/+workspaces/workspaces.tsx:138 #: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44 #: src/renderer/components/dock/info-panel.tsx:86 #: src/renderer/components/wizard/wizard.tsx:130 @@ -424,20 +422,20 @@ msgstr "Отмена" #: src/renderer/components/+nodes/node-charts.tsx:39 #: src/renderer/components/+nodes/node-charts.tsx:63 #: src/renderer/components/+nodes/node-charts.tsx:97 -#: src/renderer/components/+nodes/node-details.tsx:72 +#: src/renderer/components/+nodes/node-details.tsx:71 #: src/renderer/components/+storage-volume-claims/volume-claim-disk-chart.tsx:31 #: src/renderer/components/+storage-volumes/volume-details.tsx:29 -#: src/renderer/components/+storage-volumes/volumes.tsx:42 +#: src/renderer/components/+storage-volumes/volumes.tsx:39 msgid "Capacity" msgstr "Емкость" -#: src/renderer/components/+preferences/preferences.tsx:163 +#: src/renderer/components/+preferences/preferences.tsx:149 msgid "Certificate Trust" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:59 -msgid "Certificates" -msgstr "Сертификаты" +#~ msgid "Certificates" +#~ msgstr "Сертификаты" #: src/renderer/components/+apps-releases/release-details.tsx:173 #: src/renderer/components/+apps-releases/releases.tsx:89 @@ -474,7 +472,7 @@ msgstr "Чарты" #~ msgstr "" #: src/renderer/components/+storage-volumes/volume-details.tsx:68 -#: src/renderer/components/+storage-volumes/volumes.tsx:43 +#: src/renderer/components/+storage-volumes/volumes.tsx:40 msgid "Claim" msgstr "Запрос" @@ -492,42 +490,42 @@ msgid "Close (Ctrl+W)" msgstr "Закрыть (Ctrl+W)" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:121 -msgid "Cloud API Token Secret" -msgstr "Cloud API Token Secret" +#~ msgid "Cloud API Token Secret" +#~ msgstr "Cloud API Token Secret" #: src/renderer/components/+namespaces/namespace-select.tsx:43 -#: src/renderer/components/layout/sidebar.tsx:79 +#: src/renderer/components/layout/sidebar.tsx:80 msgid "Cluster" msgstr "Кластер" #: src/renderer/components/+network-services/service-details.tsx:51 -#: src/renderer/components/+network-services/services.tsx:47 +#: src/renderer/components/+network-services/services.tsx:44 msgid "Cluster IP" msgstr "IP-адрес кластера" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:40 -msgid "Cluster Issuers" -msgstr "" +#~ msgid "Cluster Issuers" +#~ msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:134 +#: src/renderer/components/+preferences/preferences.tsx:120 msgid "Color Theme" msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:79 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:98 msgid "Command" msgstr "Команда" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:47 #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:62 -msgid "Common Name" -msgstr "Общее имя" +#~ msgid "Common Name" +#~ msgstr "Общее имя" -#: src/renderer/components/layout/sidebar.tsx:76 +#: src/renderer/components/layout/sidebar.tsx:77 msgid "Compact view" msgstr "Компактный вид" -#: src/renderer/components/+workloads-jobs/job-details.tsx:80 -#: src/renderer/components/+workloads-jobs/jobs.tsx:39 +#: src/renderer/components/+workloads-jobs/job-details.tsx:79 +#: src/renderer/components/+workloads-jobs/jobs.tsx:36 msgid "Completions" msgstr "Завершения" @@ -535,17 +533,17 @@ msgstr "Завершения" msgid "Component stack" msgstr "Стэк компонентов" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:72 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:71 msgid "Condition" msgstr "Состояние" -#: src/renderer/components/+custom-resources/crd-details.tsx:52 -#: src/renderer/components/+nodes/node-details.tsx:107 -#: src/renderer/components/+nodes/nodes.tsx:127 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:79 -#: src/renderer/components/+workloads-deployments/deployments.tsx:64 -#: src/renderer/components/+workloads-jobs/job-details.tsx:77 -#: src/renderer/components/+workloads-jobs/jobs.tsx:42 +#: src/renderer/components/+custom-resources/crd-details.tsx:51 +#: src/renderer/components/+nodes/node-details.tsx:106 +#: src/renderer/components/+nodes/nodes.tsx:124 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:78 +#: src/renderer/components/+workloads-deployments/deployments.tsx:62 +#: src/renderer/components/+workloads-jobs/job-details.tsx:76 +#: src/renderer/components/+workloads-jobs/jobs.tsx:39 #: src/renderer/components/+workloads-pods/pod-details.tsx:100 msgid "Conditions" msgstr "Состояния" @@ -559,6 +557,7 @@ msgid "Are you sure you want to restart deployment <0>{0}?" msgstr "Выполнить перезагрузку деплоймента <0>{0}?" #: src/renderer/components/+config-maps/config-maps.tsx:33 +#: src/renderer/components/+config-maps/config-maps.tsx:30 msgid "Config Maps" msgstr "" @@ -566,7 +565,7 @@ msgstr "" msgid "Config copied to clipboard" msgstr "Конфигурация скопирована в буфер" -#: src/renderer/components/+config-maps/config-map-details.tsx:41 +#: src/renderer/components/+config-maps/config-map-details.tsx:40 msgid "ConfigMap <0>{0} successfully updated." msgstr "ConfigMap <0>{0} успешно обновлена." @@ -574,7 +573,7 @@ msgstr "ConfigMap <0>{0} успешно обновлена." msgid "ConfigMaps" msgstr "ConfigMaps" -#: src/renderer/components/layout/sidebar.tsx:82 +#: src/renderer/components/layout/sidebar.tsx:83 msgid "Configuration" msgstr "Конфигурация" @@ -582,7 +581,7 @@ msgstr "Конфигурация" msgid "Connection" msgstr "Соединение" -#: src/renderer/components/dock/pod-logs.tsx:148 +#: src/renderer/components/dock/pod-log-controls.tsx:63 msgid "Container" msgstr "Контейнер" @@ -606,13 +605,13 @@ msgstr "Запросы памяти от контейнеров" msgid "Container memory usage" msgstr "Использование памяти" -#: src/renderer/components/+nodes/node-details.tsx:95 +#: src/renderer/components/+nodes/node-details.tsx:94 msgid "Container runtime" msgstr "Среда контейнеров" #: src/renderer/components/+workloads-pods/pod-details.tsx:122 -#: src/renderer/components/+workloads-pods/pods.tsx:77 -#: src/renderer/components/dock/pod-logs.tsx:129 +#: src/renderer/components/+workloads-pods/pods.tsx:74 +#: src/renderer/components/dock/pod-log-controls.tsx:43 msgid "Containers" msgstr "Контейнеры" @@ -628,16 +627,16 @@ msgstr "Контекст" #~ msgid "Contexts: {0}" #~ msgstr "" -#: src/renderer/components/+workloads-pods/pods.tsx:79 +#: src/renderer/components/+workloads-pods/pods.tsx:76 #: src/renderer/components/kube-object/kube-object-meta.tsx:39 msgid "Controlled By" msgstr "Управляемый" -#: src/renderer/components/+workloads-jobs/job-details.tsx:68 +#: src/renderer/components/+workloads-jobs/job-details.tsx:67 msgid "Controlled by" msgstr "Контролируется" -#: src/renderer/components/+custom-resources/crd-details.tsx:49 +#: src/renderer/components/+custom-resources/crd-details.tsx:48 msgid "Conversion" msgstr "" @@ -648,10 +647,10 @@ msgstr "Копировать" #: src/renderer/components/+nodes/node-menu.tsx:51 #: src/renderer/components/+nodes/node-menu.tsx:52 -msgid "Cordon" -msgstr "Блокировка" +#~ msgid "Cordon" +#~ msgstr "Блокировка" -#: src/renderer/components/+events/event-details.tsx:45 +#: src/renderer/components/+events/event-details.tsx:44 #: src/renderer/components/+events/events.tsx:67 #: src/renderer/components/+events/kube-event-details.tsx:51 msgid "Count" @@ -687,23 +686,23 @@ msgstr "Создать секрет" msgid "Create Service Account" msgstr "Создать Service Account" -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:45 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:40 msgid "Create new ResourceQuota" msgstr "Создать новую ResourceQuota" -#: src/renderer/components/+user-management-roles/roles.tsx:44 +#: src/renderer/components/+user-management-roles/roles.tsx:39 msgid "Create new Role" msgstr "Создать новую роль" -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:48 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:43 msgid "Create new RoleBinding" msgstr "Создать новый билдинг роли" -#: src/renderer/components/+config-secrets/secrets.tsx:58 +#: src/renderer/components/+config-secrets/secrets.tsx:53 msgid "Create new Secret" msgstr "Создать новый секрет" -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:47 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:45 msgid "Create new Service Account" msgstr "Создать новый Service Account" @@ -720,10 +719,10 @@ msgid "Created at" msgstr "Создано" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:132 -msgid "Credentials Ref" -msgstr "Credentials Ref" +#~ msgid "Credentials Ref" +#~ msgstr "Credentials Ref" -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:42 msgid "Cron Jobs" msgstr "" @@ -735,8 +734,8 @@ msgstr "CronJobs" msgid "Current / Target" msgstr "Текущее / Цель" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:39 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:43 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:38 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:40 msgid "Current Healthy" msgstr "" @@ -752,8 +751,8 @@ msgstr "Текущие фильтры:" #~ msgid "Custom" #~ msgstr "" -#: src/renderer/components/+custom-resources/crd-list.tsx:55 -#: src/renderer/components/layout/sidebar.tsx:89 +#: src/renderer/components/+custom-resources/crd-list.tsx:52 +#: src/renderer/components/layout/sidebar.tsx:90 msgid "Custom Resources" msgstr "" @@ -762,14 +761,14 @@ msgstr "" #~ msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:95 -msgid "DNS Provider" -msgstr "DNS провайдер" +#~ msgid "DNS Provider" +#~ msgstr "DNS провайдер" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:50 -msgid "DNS names" -msgstr "DNS имена" +#~ msgid "DNS names" +#~ msgstr "DNS имена" -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:44 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:41 msgid "Daemon Sets" msgstr "" @@ -781,20 +780,20 @@ msgstr "DaemonSets" #~ msgid "Dark" #~ msgstr "" -#: src/renderer/components/+config-maps/config-map-details.tsx:69 -#: src/renderer/components/+config-secrets/secret-details.tsx:78 +#: src/renderer/components/+config-maps/config-map-details.tsx:68 +#: src/renderer/components/+config-secrets/secret-details.tsx:77 msgid "Data" msgstr "Данные" -#: src/renderer/components/+storage-classes/storage-classes.tsx:37 +#: src/renderer/components/+storage-classes/storage-classes.tsx:34 msgid "Default" msgstr "По умолчанию" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:83 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:82 msgid "Default Add Capabilities" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:135 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:134 msgid "Default Runtime Class Name" msgstr "" @@ -806,27 +805,27 @@ msgstr "" msgid "Definitions" msgstr "" -#: src/renderer/components/+workspaces/workspaces.tsx:126 +#: src/renderer/components/+workspaces/workspaces.tsx:131 #: src/renderer/components/menu/menu-actions.tsx:84 msgid "Delete" msgstr "Удалить" -#: src/renderer/components/+workloads-replicasets/replicasets.tsx:47 +#: src/renderer/components/+workloads-replicasets/replicasets.tsx:45 msgid "Deploy Revisions" msgstr "" #: src/renderer/components/+workloads/workloads.tsx:45 -#: src/renderer/components/+workloads-deployments/deployments.tsx:57 +#: src/renderer/components/+workloads-deployments/deployments.tsx:55 msgid "Deployments" msgstr "Deployments" #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:65 -#: src/renderer/components/+workspaces/workspaces.tsx:131 +#: src/renderer/components/+workspaces/workspaces.tsx:136 msgid "Description" msgstr "Описание" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:43 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:44 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:42 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:41 msgid "Desired Healthy" msgstr "" @@ -834,27 +833,27 @@ msgstr "" msgid "Desired number of replicas" msgstr "Нужный уровень реплик" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:62 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:63 msgid "Disconnect" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:64 -#: src/renderer/components/+nodes/nodes.tsx:122 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44 +#: src/renderer/components/+nodes/node-details.tsx:63 +#: src/renderer/components/+nodes/nodes.tsx:119 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:43 msgid "Disk" msgstr "Диск" -#: src/renderer/components/+nodes/nodes.tsx:79 +#: src/renderer/components/+nodes/nodes.tsx:76 msgid "Disk:" msgstr "Диск:" -#: src/renderer/components/+preferences/preferences.tsx:168 +#: src/renderer/components/+preferences/preferences.tsx:154 msgid "Does not affect cluster communications!" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:89 -msgid "Domains" -msgstr "Домены" +#~ msgid "Domains" +#~ msgstr "Домены" #: src/renderer/components/+preferences/preferences.tsx:129 #~ msgid "Download Mirror" @@ -882,27 +881,26 @@ msgstr "" #: src/renderer/components/+nodes/node-menu.tsx:59 #: src/renderer/components/+nodes/node-menu.tsx:60 -msgid "Drain" -msgstr "Очистка" +#~ msgid "Drain" +#~ msgstr "Очистка" #: src/renderer/components/+nodes/node-menu.tsx:39 -msgid "Drain Node" -msgstr "Очистить Node" +#~ msgid "Drain Node" +#~ msgstr "Очистить Node" #: src/renderer/components/+storage-volumes/volume-details.tsx:59 msgid "Driver" msgstr "Драйвер" -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:59 -#: src/renderer/components/+network-ingresses/ingress-details.tsx:87 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:86 msgid "Duration" msgstr "Продолжительность" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:58 -msgid "E-mail" -msgstr "Эл. почта" +#~ msgid "E-mail" +#~ msgstr "Эл. почта" -#: src/renderer/components/+workspaces/workspaces.tsx:125 +#: src/renderer/components/+workspaces/workspaces.tsx:130 #: src/renderer/components/menu/menu-actions.tsx:80 #: src/renderer/components/menu/menu-actions.tsx:81 msgid "Edit" @@ -917,7 +915,7 @@ msgstr "Редактировать RoleBinding <0>{roleBindingName}" msgid "Effect" msgstr "Эффект" -#: src/renderer/components/+network-policies/network-policy-details.tsx:105 +#: src/renderer/components/+network-policies/network-policy-details.tsx:104 msgid "Egress" msgstr "Egress" @@ -926,8 +924,8 @@ msgid "Endpoint" msgstr "" #: src/renderer/components/+network/network.tsx:35 +#: src/renderer/components/+network-endpoints/endpoints.tsx:27 #: src/renderer/components/+network-endpoints/endpoints.tsx:30 -#: src/renderer/components/+network-endpoints/endpoints.tsx:33 #: src/renderer/components/+network-services/service-details-endpoint.tsx:27 msgid "Endpoints" msgstr "" @@ -936,7 +934,7 @@ msgstr "" msgid "Enter a name" msgstr "Название" -#: src/renderer/components/+workloads-pods/pod-container-env.tsx:79 +#: src/renderer/components/+workloads-pods/pod-container-env.tsx:80 msgid "Environment" msgstr "Среда" @@ -952,7 +950,7 @@ msgstr "" #: src/renderer/components/+events/events.tsx:56 #: src/renderer/components/+events/kube-event-details.tsx:34 #: src/renderer/components/+events/kube-event-details.tsx:39 -#: src/renderer/components/layout/sidebar.tsx:86 +#: src/renderer/components/layout/sidebar.tsx:87 msgid "Events" msgstr "События" @@ -973,7 +971,7 @@ msgstr "Выйти из полного размера" #~ msgid "Extended view" #~ msgstr "Расширенный вид" -#: src/renderer/components/+network-services/services.tsx:49 +#: src/renderer/components/+network-services/services.tsx:46 msgid "External IP" msgstr "Внешний IP" @@ -981,16 +979,16 @@ msgstr "Внешний IP" msgid "External IPs" msgstr "Внешние IP" -#: src/renderer/components/dock/pod-logs.store.ts:65 +#: src/renderer/components/dock/pod-logs.store.ts:56 msgid "Failed to load logs: {0}" msgstr "Ошибка загрузки логов: {0}" -#: src/renderer/components/+events/event-details.tsx:58 +#: src/renderer/components/+events/event-details.tsx:57 msgid "Field Path" msgstr "" #: src/renderer/components/+workloads-pods/pod-charts.tsx:14 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:28 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:46 msgid "Filesystem" msgstr "Файловая система" @@ -1002,7 +1000,11 @@ msgstr "Фильтры ({0}/{1})" msgid "Finalizers" msgstr "Финализаторы" -#: src/renderer/components/+events/event-details.tsx:39 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:27 +msgid "Finished at" +msgstr "" + +#: src/renderer/components/+events/event-details.tsx:38 msgid "First seen" msgstr "Увиденно впервые" @@ -1014,11 +1016,11 @@ msgstr "По размеру окна" msgid "FlexVolume" msgstr "FlexVolume" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:67 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:66 msgid "Forbidden Sysctls" msgstr "" -#: src/renderer/components/+network-policies/network-policy-details.tsx:26 +#: src/renderer/components/+network-policies/network-policy-details.tsx:25 msgid "From" msgstr "От" @@ -1026,7 +1028,7 @@ msgstr "От" #~ msgid "From <0>{from} to <1>{to}" #~ msgstr "От <0>{from} до <1>{to}" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:125 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:124 msgid "Fs Group" msgstr "" @@ -1038,13 +1040,13 @@ msgstr "" #~ msgid "Global Lens Settings page" #~ msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:32 -#: src/renderer/components/+custom-resources/crd-list.tsx:58 -#: src/renderer/components/+custom-resources/crd-list.tsx:74 +#: src/renderer/components/+custom-resources/crd-details.tsx:31 +#: src/renderer/components/+custom-resources/crd-list.tsx:55 +#: src/renderer/components/+custom-resources/crd-list.tsx:71 msgid "Group" msgstr "Группа" -#: src/renderer/components/+custom-resources/crd-list.tsx:60 +#: src/renderer/components/+custom-resources/crd-list.tsx:57 msgid "Groups" msgstr "Группы" @@ -1052,7 +1054,7 @@ msgstr "Группы" msgid "HPA" msgstr "HPA" -#: src/renderer/components/+preferences/preferences.tsx:137 +#: src/renderer/components/+preferences/preferences.tsx:123 msgid "HTTP Proxy" msgstr "" @@ -1060,7 +1062,7 @@ msgstr "" #~ msgid "HTTP Proxy server. Used for communicating with Kubernetes API." #~ msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:145 +#: src/renderer/components/+preferences/preferences.tsx:131 msgid "Helm" msgstr "" @@ -1080,12 +1082,12 @@ msgstr "Helm установка: {repo}/{name}" msgid "Helm Upgrade: {0}" msgstr "Helm обновление: {0}" -#: src/renderer/components/+preferences/preferences.tsx:51 +#: src/renderer/components/+preferences/preferences.tsx:45 msgid "Helm branch <0>{0} already in use" msgstr "" -#: src/renderer/components/+config-secrets/secret-details.tsx:93 -#: src/renderer/components/dock/pod-logs.tsx:159 +#: src/renderer/components/+config-secrets/secret-details.tsx:92 +#: src/renderer/components/dock/pod-log-controls.tsx:72 #: src/renderer/components/drawer/drawer-param-toggler.tsx:19 msgid "Hide" msgstr "Скрыть" @@ -1098,54 +1100,54 @@ msgstr "Большое количество реплик может вызват msgid "Home" msgstr "Ссылка" -#: src/renderer/components/+config-autoscalers/hpa.tsx:44 +#: src/renderer/components/+config-autoscalers/hpa.tsx:41 msgid "Horizontal Pod Autoscalers" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:91 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:90 msgid "Host IPC" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:95 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:94 msgid "Host Network" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:99 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:98 msgid "Host PID" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:103 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:102 msgid "Host Ports (Min-Max)" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:38 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:37 msgid "Host: {0}" msgstr "Хост: {0}" #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:33 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:64 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:76 -#: src/renderer/components/+network-ingresses/ingress-details.tsx:64 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:63 msgid "Hostname" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:92 -msgid "Http01" -msgstr "Http01" +#~ msgid "Http01" +#~ msgstr "Http01" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:65 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:64 msgid "IP" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:53 -msgid "IP addresses" -msgstr "IP-адреса" +#~ msgid "IP addresses" +#~ msgstr "IP-адреса" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:45 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:64 msgid "Image" msgstr "Изображение" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:49 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:68 msgid "ImagePullPolicy" msgstr "ImagePullPolicy" @@ -1153,24 +1155,24 @@ msgstr "ImagePullPolicy" msgid "ImagePullSecrets" msgstr "ImagePullSecrets" -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:65 -#: src/renderer/components/+workloads-jobs/job-details.tsx:64 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:77 -#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:64 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:64 +#: src/renderer/components/+workloads-jobs/job-details.tsx:63 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:76 +#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:63 msgid "Images" msgstr "Изображения" -#: src/renderer/components/+network-policies/network-policy-details.tsx:92 +#: src/renderer/components/+network-policies/network-policy-details.tsx:91 msgid "Ingress" msgstr "Ingress" #: src/renderer/components/+network/network.tsx:43 -#: src/renderer/components/+network-ingresses/ingresses.tsx:31 +#: src/renderer/components/+network-ingresses/ingresses.tsx:28 msgid "Ingresses" msgstr "Ingresses" #: src/renderer/components/+workloads-pods/pod-details.tsx:118 -#: src/renderer/components/dock/pod-logs.tsx:135 +#: src/renderer/components/dock/pod-log-controls.tsx:49 msgid "Init Containers" msgstr "Контейнеры инициализации" @@ -1199,24 +1201,24 @@ msgstr "Неверный номер" msgid "Involved Object" msgstr "Затронутый объект" -#: src/renderer/components/+events/event-details.tsx:52 +#: src/renderer/components/+events/event-details.tsx:51 msgid "Involved object" msgstr "Затронутый объект" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:31 #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:64 -msgid "Issuer" -msgstr "Issuer" +#~ msgid "Issuer" +#~ msgstr "Issuer" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:53 -msgid "Issuers" -msgstr "Issuers" +#~ msgid "Issuers" +#~ msgstr "Issuers" #: src/renderer/components/no-items/no-items.tsx:9 msgid "Item list is empty" msgstr "Список пуст" -#: src/renderer/components/+custom-resources/crd-details.tsx:83 +#: src/renderer/components/+custom-resources/crd-details.tsx:82 msgid "JSON Path" msgstr "" @@ -1225,30 +1227,34 @@ msgid "Job name" msgstr "" #: src/renderer/components/+workloads/workloads.tsx:69 -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:62 -#: src/renderer/components/+workloads-jobs/jobs.tsx:36 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:61 +#: src/renderer/components/+workloads-jobs/jobs.tsx:33 msgid "Jobs" msgstr "Jobs" -#: src/renderer/components/+nodes/node-details.tsx:92 +#: src/renderer/components/dock/pod-logs.tsx:151 +msgid "Jump to bottom" +msgstr "" + +#: src/renderer/components/+nodes/node-details.tsx:91 msgid "Kernel version" msgstr "Версия Kernel" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:77 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:76 #: src/renderer/components/+workloads-pods/pod-details-tolerations.tsx:16 msgid "Key" msgstr "Ключ" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:68 -msgid "Key Algorithm" -msgstr "Алгоритм ключа" +#~ msgid "Key Algorithm" +#~ msgstr "Алгоритм ключа" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:65 -msgid "Key Size" -msgstr "Размер ключа" +#~ msgid "Key Size" +#~ msgstr "Размер ключа" -#: src/renderer/components/+config-maps/config-maps.tsx:36 -#: src/renderer/components/+config-secrets/secrets.tsx:44 +#: src/renderer/components/+config-maps/config-maps.tsx:33 +#: src/renderer/components/+config-secrets/secrets.tsx:41 msgid "Keys" msgstr "Ключи" @@ -1256,13 +1262,13 @@ msgstr "Ключи" msgid "Keywords" msgstr "Ключевые слова" -#: src/renderer/components/+events/event-details.tsx:57 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:79 +#: src/renderer/components/+events/event-details.tsx:56 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:78 #: src/renderer/components/dock/edit-resource.tsx:88 msgid "Kind" msgstr "Тип" -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:62 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:59 msgid "Kubeconfig" msgstr "Файл конфигурации" @@ -1274,34 +1280,37 @@ msgstr "Файл конфигурации" msgid "Kubectl Binary" msgstr "" -#: src/renderer/components/+nodes/node-details.tsx:98 +#: src/renderer/components/+nodes/node-details.tsx:97 msgid "Kubelet version" msgstr "Версия Kubelet" -#: src/renderer/components/+config-secrets/secrets.tsx:43 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:65 -#: src/renderer/components/+namespaces/namespaces.tsx:32 -#: src/renderer/components/+nodes/node-details.tsx:101 +#: src/renderer/components/+config-secrets/secrets.tsx:40 +#: src/renderer/components/+namespaces/namespaces.tsx:30 +#: src/renderer/components/+nodes/node-details.tsx:100 #: src/renderer/components/kube-object/kube-object-meta.tsx:35 msgid "Labels" msgstr "Метки" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:76 -msgid "Last Failure Time" -msgstr "Время последнего сбоя" +#~ msgid "Last Failure Time" +#~ msgstr "Время последнего сбоя" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:57 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:51 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:61 +msgid "Last Status" +msgstr "" + +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:56 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:49 msgid "Last schedule" msgstr "Последний запуск" -#: src/renderer/components/+events/event-details.tsx:42 +#: src/renderer/components/+events/event-details.tsx:41 #: src/renderer/components/+events/kube-event-details.tsx:57 msgid "Last seen" msgstr "Увиденно в последний раз" -#: src/renderer/components/+custom-resources/crd-details.tsx:57 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:84 +#: src/renderer/components/+custom-resources/crd-details.tsx:56 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:83 #: src/renderer/components/+workloads-pods/pod-details.tsx:103 msgid "Last transition time: {lastTransitionTime}" msgstr "Последнее изменение: {lastTransitionTime}" @@ -1310,7 +1319,7 @@ msgstr "Последнее изменение: {lastTransitionTime}" #~ msgid "Lens Global Settings" #~ msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:146 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:145 msgid "Level" msgstr "" @@ -1332,14 +1341,14 @@ msgid "Limits" msgstr "Лимиты" #: src/renderer/components/dock/pod-logs.tsx:150 -msgid "Lines" -msgstr "Строки" +#~ msgid "Lines" +#~ msgstr "Строки" #: src/renderer/components/kube-object/kube-object-meta.tsx:29 msgid "Link" msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:71 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:90 msgid "Liveness" msgstr "Живучесть" @@ -1347,18 +1356,22 @@ msgstr "Живучесть" msgid "Load Balancer IP" msgstr "IP балансировщика нагрузки" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:108 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:107 msgid "Load-Balancer Ingress Points" msgstr "" +#: src/renderer/components/+network-ingresses/ingresses.tsx:31 +msgid "LoadBalancers" +msgstr "" + #: src/renderer/components/app-init/app-init.tsx:43 msgid "Loading" msgstr "Загрузка" #: src/renderer/components/+workloads-pods/pod-menu.tsx:100 #: src/renderer/components/+workloads-pods/pod-menu.tsx:101 -msgid "Logs" -msgstr "Логи" +#~ msgid "Logs" +#~ msgstr "Логи" #: src/renderer/components/dialog/logs-dialog.tsx:27 msgid "Logs copied to clipboard." @@ -1372,21 +1385,21 @@ msgstr "Создатели" msgid "Master" msgstr "Мастера" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:75 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:74 msgid "Match Expressions" msgstr "Совпадения выражений" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:71 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:70 msgid "Match Labels" msgstr "Совпадения меток" #: src/renderer/components/+config-autoscalers/hpa-details.tsx:80 -#: src/renderer/components/+config-autoscalers/hpa.tsx:49 +#: src/renderer/components/+config-autoscalers/hpa.tsx:46 msgid "Max Pods" msgstr "Макс. подов" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:35 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:42 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:34 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:39 msgid "Max Unavailable" msgstr "" @@ -1400,12 +1413,12 @@ msgstr "" #: src/renderer/components/+cluster/cluster-metric-switchers.tsx:25 #: src/renderer/components/+cluster/cluster-pie-charts.tsx:144 -#: src/renderer/components/+nodes/node-details.tsx:63 -#: src/renderer/components/+nodes/node-details.tsx:74 -#: src/renderer/components/+nodes/node-details.tsx:79 -#: src/renderer/components/+nodes/nodes.tsx:121 +#: src/renderer/components/+nodes/node-details.tsx:62 +#: src/renderer/components/+nodes/node-details.tsx:73 +#: src/renderer/components/+nodes/node-details.tsx:78 +#: src/renderer/components/+nodes/nodes.tsx:118 #: src/renderer/components/+workloads-pods/pod-charts.tsx:12 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:27 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:45 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:63 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:96 #: src/renderer/components/resource-metrics/resource-metrics-text.tsx:18 @@ -1430,17 +1443,17 @@ msgstr "Запросы к памяти" msgid "Memory usage" msgstr "Использование памяти" -#: src/renderer/components/+nodes/nodes.tsx:68 +#: src/renderer/components/+nodes/nodes.tsx:65 msgid "Memory:" msgstr "Память:" #: src/renderer/components/+cluster/cluster-issues.tsx:100 -#: src/renderer/components/+events/event-details.tsx:30 +#: src/renderer/components/+events/event-details.tsx:29 #: src/renderer/components/+events/events.tsx:62 msgid "Message" msgstr "Сообщение" -#: src/renderer/components/+config-autoscalers/hpa.tsx:47 +#: src/renderer/components/+config-autoscalers/hpa.tsx:44 msgid "Metrics" msgstr "Метрики" @@ -1452,13 +1465,13 @@ msgstr "" msgid "Metrics not available at the moment" msgstr "В данный момент метрики недоступны" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:31 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:41 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:30 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:38 msgid "Min Available" msgstr "" #: src/renderer/components/+config-autoscalers/hpa-details.tsx:76 -#: src/renderer/components/+config-autoscalers/hpa.tsx:48 +#: src/renderer/components/+config-autoscalers/hpa.tsx:45 msgid "Min Pods" msgstr "Мин. подов" @@ -1470,7 +1483,7 @@ msgstr "Минимизировать" msgid "Minimum length is {minLength}" msgstr "Минимальная длина {minLength}" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:38 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:37 #: src/renderer/components/+storage-volumes/volume-details.tsx:33 msgid "Mount Options" msgstr "Опции монтирования" @@ -1479,7 +1492,7 @@ msgstr "Опции монтирования" msgid "Mountable secrets" msgstr "Монтируемые секреты" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:61 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:80 msgid "Mounts" msgstr "Установки" @@ -1490,47 +1503,45 @@ msgstr "Установки" #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:64 #: src/renderer/components/+apps-releases/releases.tsx:87 #: src/renderer/components/+config-autoscalers/hpa-details.tsx:49 -#: src/renderer/components/+config-autoscalers/hpa.tsx:45 -#: src/renderer/components/+config-maps/config-maps.tsx:34 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:39 -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:34 +#: src/renderer/components/+config-autoscalers/hpa.tsx:42 +#: src/renderer/components/+config-maps/config-maps.tsx:31 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:36 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:31 #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:131 #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:148 -#: src/renderer/components/+config-secrets/secrets.tsx:41 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:60 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:63 -#: src/renderer/components/+custom-resources/crd-details.tsx:81 -#: src/renderer/components/+custom-resources/crd-resources.tsx:63 -#: src/renderer/components/+events/event-details.tsx:55 -#: src/renderer/components/+namespaces/namespaces.tsx:31 +#: src/renderer/components/+config-secrets/secrets.tsx:38 +#: src/renderer/components/+custom-resources/crd-details.tsx:80 +#: src/renderer/components/+custom-resources/crd-resources.tsx:60 +#: src/renderer/components/+events/event-details.tsx:54 +#: src/renderer/components/+namespaces/namespaces.tsx:29 #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:87 -#: src/renderer/components/+network-endpoints/endpoints.tsx:31 -#: src/renderer/components/+network-ingresses/ingresses.tsx:32 -#: src/renderer/components/+network-policies/network-policies.tsx:31 +#: src/renderer/components/+network-endpoints/endpoints.tsx:28 +#: src/renderer/components/+network-ingresses/ingresses.tsx:29 +#: src/renderer/components/+network-policies/network-policies.tsx:28 #: src/renderer/components/+network-services/service-details-endpoint.tsx:26 -#: src/renderer/components/+network-services/services.tsx:44 -#: src/renderer/components/+nodes/nodes.tsx:119 -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:35 -#: src/renderer/components/+storage-classes/storage-classes.tsx:34 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:46 +#: src/renderer/components/+network-services/services.tsx:41 +#: src/renderer/components/+nodes/nodes.tsx:116 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:32 +#: src/renderer/components/+storage-classes/storage-classes.tsx:31 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:43 #: src/renderer/components/+storage-volumes/volume-details.tsx:72 -#: src/renderer/components/+storage-volumes/volumes.tsx:40 -#: src/renderer/components/+user-management-roles/roles.tsx:33 +#: src/renderer/components/+storage-volumes/volumes.tsx:37 +#: src/renderer/components/+user-management-roles/roles.tsx:30 #: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:191 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:80 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:35 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:79 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:32 #: src/renderer/components/+user-management-service-accounts/service-accounts-secret.tsx:29 -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:36 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:45 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:45 -#: src/renderer/components/+workloads-deployments/deployments.tsx:58 -#: src/renderer/components/+workloads-jobs/jobs.tsx:37 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:34 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:43 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:42 +#: src/renderer/components/+workloads-deployments/deployments.tsx:56 +#: src/renderer/components/+workloads-jobs/jobs.tsx:34 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:92 #: src/renderer/components/+workloads-pods/pod-details.tsx:144 -#: src/renderer/components/+workloads-pods/pods.tsx:74 -#: src/renderer/components/+workloads-replicasets/replicasets.tsx:50 -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:40 -#: src/renderer/components/+workspaces/workspaces.tsx:130 +#: src/renderer/components/+workloads-pods/pods.tsx:71 +#: src/renderer/components/+workloads-replicasets/replicasets.tsx:48 +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:37 +#: src/renderer/components/+workspaces/workspaces.tsx:135 #: src/renderer/components/dock/edit-resource.tsx:89 #: src/renderer/components/kube-object/kube-object-meta.tsx:20 msgid "Name" @@ -1540,45 +1551,44 @@ msgstr "Имя" msgid "Name (optional)" msgstr "Название (необязательно)" -#: src/renderer/components/+custom-resources/crd-details.tsx:61 +#: src/renderer/components/+custom-resources/crd-details.tsx:60 msgid "Names" msgstr "" #: src/renderer/components/+apps-releases/release-details.tsx:182 #: src/renderer/components/+apps-releases/releases.tsx:88 -#: src/renderer/components/+config-autoscalers/hpa.tsx:46 -#: src/renderer/components/+config-maps/config-maps.tsx:35 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:40 +#: src/renderer/components/+config-autoscalers/hpa.tsx:43 +#: src/renderer/components/+config-maps/config-maps.tsx:32 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:37 #: src/renderer/components/+config-resource-quotas/add-quota-dialog.tsx:129 #: src/renderer/components/+config-resource-quotas/add-quota-dialog.tsx:130 -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:35 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:32 #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:152 -#: src/renderer/components/+config-secrets/secrets.tsx:42 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:61 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:64 -#: src/renderer/components/+custom-resources/crd-resources.tsx:64 -#: src/renderer/components/+events/event-details.tsx:56 +#: src/renderer/components/+config-secrets/secrets.tsx:39 +#: src/renderer/components/+custom-resources/crd-resources.tsx:61 +#: src/renderer/components/+events/event-details.tsx:55 #: src/renderer/components/+events/events.tsx:63 #: src/renderer/components/+namespaces/add-namespace-dialog.tsx:73 -#: src/renderer/components/+network-endpoints/endpoints.tsx:32 -#: src/renderer/components/+network-ingresses/ingresses.tsx:33 -#: src/renderer/components/+network-policies/network-policies.tsx:32 -#: src/renderer/components/+network-services/services.tsx:45 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:47 +#: src/renderer/components/+network-endpoints/endpoints.tsx:29 +#: src/renderer/components/+network-ingresses/ingresses.tsx:30 +#: src/renderer/components/+network-policies/network-policies.tsx:29 +#: src/renderer/components/+network-services/services.tsx:42 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:44 #: src/renderer/components/+storage-volumes/volume-details.tsx:77 -#: src/renderer/components/+user-management-roles/roles.tsx:34 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:96 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:37 +#: src/renderer/components/+user-management-roles/roles.tsx:31 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:95 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:34 #: src/renderer/components/+user-management-service-accounts/create-service-account-dialog.tsx:79 -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:37 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:47 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:46 -#: src/renderer/components/+workloads-deployments/deployments.tsx:59 -#: src/renderer/components/+workloads-jobs/jobs.tsx:38 -#: src/renderer/components/+workloads-pods/pods.tsx:76 -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:41 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:35 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:45 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:43 +#: src/renderer/components/+workloads-deployments/deployments.tsx:57 +#: src/renderer/components/+workloads-jobs/jobs.tsx:35 +#: src/renderer/components/+workloads-pods/pods.tsx:73 +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:38 #: src/renderer/components/dock/edit-resource.tsx:90 #: src/renderer/components/dock/install-chart.tsx:122 +#: src/renderer/components/dock/pod-log-controls.tsx:62 #: src/renderer/components/dock/upgrade-chart.tsx:98 #: src/renderer/components/item-object-list/page-filters-select.tsx:57 #: src/renderer/components/kube-object/kube-object-meta.tsx:23 @@ -1589,8 +1599,8 @@ msgstr "Namespace" msgid "Namespace: {0}" msgstr "Namespace: {0}" -#: src/renderer/components/+namespaces/namespaces.tsx:30 -#: src/renderer/components/layout/sidebar.tsx:85 +#: src/renderer/components/+namespaces/namespaces.tsx:28 +#: src/renderer/components/layout/sidebar.tsx:86 msgid "Namespaces" msgstr "Namespaces" @@ -1598,13 +1608,13 @@ msgstr "Namespaces" msgid "Namespaces: {0}" msgstr "Namespaces: {0}" -#: src/renderer/components/+preferences/preferences.tsx:167 +#: src/renderer/components/+preferences/preferences.tsx:153 msgid "Needed with some corporate proxies that do certificate re-writing." msgstr "" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:86 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:85 #: src/renderer/components/+workloads-pods/pod-charts.tsx:13 -#: src/renderer/components/layout/sidebar.tsx:83 +#: src/renderer/components/layout/sidebar.tsx:84 msgid "Network" msgstr "Сеть" @@ -1613,13 +1623,17 @@ msgid "Network File System" msgstr "Сетевая файловая система" #: src/renderer/components/+network/network.tsx:51 -#: src/renderer/components/+network-policies/network-policies.tsx:30 +#: src/renderer/components/+network-policies/network-policies.tsx:27 msgid "Network Policies" msgstr "Network Policies" +#: src/renderer/components/dock/pod-logs.tsx:171 +msgid "New logs since opening logs tab" +msgstr "" + #: src/renderer/components/dock/pod-logs.tsx:178 -msgid "New logs since opening the dialog" -msgstr "Новые логи с момента открытия диалога" +#~ msgid "New logs since opening the dialog" +#~ msgstr "Новые логи с момента открытия диалога" #: src/renderer/components/dock/dock.tsx:92 msgid "New tab" @@ -1638,16 +1652,14 @@ msgid "Next" msgstr "Далее" #: src/renderer/components/+cluster-settings/components/remove-cluster-button.tsx:29 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:44 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:71 -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:42 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:72 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:76 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:80 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:92 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:96 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:100 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:119 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:39 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:71 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:75 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:79 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:91 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:95 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:99 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:118 msgid "No" msgstr "Нет" @@ -1679,7 +1691,6 @@ msgstr "Ничего не найдено." msgid "No revisions to rollback." msgstr "Нет изменений для отката." -#: src/renderer/components/+nodes/node-menu.tsx:24 #: src/renderer/components/+workloads-pods/pod-details.tsx:85 msgid "Node" msgstr "Нода" @@ -1688,13 +1699,13 @@ msgstr "Нода" msgid "Node Pods capacity" msgstr "Емкость подов" -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:61 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:49 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:73 -#: src/renderer/components/+workloads-jobs/job-details.tsx:60 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:60 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:46 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:72 +#: src/renderer/components/+workloads-jobs/job-details.tsx:59 #: src/renderer/components/+workloads-pods/pod-details.tsx:107 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:73 -#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:60 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:72 +#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:59 msgid "Node Selector" msgstr "Селектор ноды" @@ -1707,17 +1718,17 @@ msgid "Node filesystem usage in bytes" msgstr "Использование файловой системы ноды в байтах" #: src/renderer/components/+nodes/node-menu.tsx:47 -msgid "Node shell" -msgstr "Командная строка ноды" +#~ msgid "Node shell" +#~ msgstr "Командная строка ноды" -#: src/renderer/components/+nodes/nodes.tsx:118 -#: src/renderer/components/layout/sidebar.tsx:80 +#: src/renderer/components/+nodes/nodes.tsx:115 +#: src/renderer/components/layout/sidebar.tsx:81 msgid "Nodes" msgstr "Ноды" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:72 -msgid "Not After" -msgstr "Не позже" +#~ msgid "Not After" +#~ msgstr "Не позже" #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:72 msgid "Not Ready Addresses" @@ -1735,11 +1746,11 @@ msgstr "Заметки" msgid "Number of running Pods" msgstr "Кол-во работающих подов" -#: src/renderer/components/+nodes/node-details.tsx:86 +#: src/renderer/components/+nodes/node-details.tsx:85 msgid "OS" msgstr "ОС" -#: src/renderer/components/+nodes/node-details.tsx:89 +#: src/renderer/components/+nodes/node-details.tsx:88 msgid "OS Image" msgstr "Образ ОС" @@ -1765,14 +1776,14 @@ msgid "Open in a browser" msgstr "" #: src/renderer/components/+config-resource-quotas/resource-quota-details.tsx:60 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:78 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:77 #: src/renderer/components/+workloads-pods/pod-details-tolerations.tsx:17 msgid "Operator" msgstr "Оператор" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:56 -msgid "Organization" -msgstr "Организация" +#~ msgid "Organization" +#~ msgstr "Организация" #: src/renderer/components/+workloads/workloads.tsx:29 #: src/renderer/components/+workloads-overview/overview-statuses.tsx:45 @@ -1783,11 +1794,11 @@ msgstr "Обзор" msgid "Page not found" msgstr "Страница не найдена" -#: src/renderer/components/+workloads-jobs/job-details.tsx:83 +#: src/renderer/components/+workloads-jobs/job-details.tsx:82 msgid "Parallelism" msgstr "Параллелизм" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:42 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:41 msgid "Parameters" msgstr "Параметры" @@ -1795,23 +1806,21 @@ msgstr "Параметры" msgid "Paste as text" msgstr "" -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:94 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:102 -#: src/renderer/components/+network-ingresses/ingress-details.tsx:42 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:41 msgid "Path" msgstr "Путь" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:113 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:112 msgid "Path Prefix" msgstr "" #: src/renderer/components/+storage/storage.tsx:25 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:45 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:42 msgid "Persistent Volume Claims" msgstr "Persistent Volume Claims" #: src/renderer/components/+storage/storage.tsx:32 -#: src/renderer/components/+storage-volumes/volumes.tsx:39 +#: src/renderer/components/+storage-volumes/volumes.tsx:36 msgid "Persistent Volumes" msgstr "Persistent Volumes" @@ -1839,12 +1848,12 @@ msgstr "" #~ msgid "Please select kubeconfig's context" #~ msgstr "" -#: src/renderer/components/+workloads-pods/pod-menu.tsx:50 +#: src/renderer/components/dock/pod-log-controls.tsx:61 msgid "Pod" msgstr "" #: src/renderer/components/+config/config.tsx:63 -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:38 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx:35 msgid "Pod Disruption Budgets" msgstr "" @@ -1852,43 +1861,43 @@ msgstr "" msgid "Pod IP" msgstr "IP пода" -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:34 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:31 #: src/renderer/components/+user-management/user-management.tsx:43 msgid "Pod Security Policies" msgstr "" -#: src/renderer/components/+network-policies/network-policy-details.tsx:85 +#: src/renderer/components/+network-policies/network-policy-details.tsx:84 msgid "Pod Selector" msgstr "Селектор подов" -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:73 -#: src/renderer/components/+workloads-jobs/job-details.tsx:88 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:85 -#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:69 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:72 +#: src/renderer/components/+workloads-jobs/job-details.tsx:87 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:84 +#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:68 msgid "Pod Status" msgstr "Статус подов" #: src/renderer/components/+workloads-pods/pod-menu.tsx:77 -msgid "Pod shell" -msgstr "Командная строка пода" +#~ msgid "Pod shell" +#~ msgstr "Командная строка пода" #: src/renderer/components/+cluster/cluster-pie-charts.tsx:148 -#: src/renderer/components/+nodes/node-details.tsx:65 -#: src/renderer/components/+nodes/node-details.tsx:75 -#: src/renderer/components/+nodes/node-details.tsx:80 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:60 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:50 +#: src/renderer/components/+nodes/node-details.tsx:64 +#: src/renderer/components/+nodes/node-details.tsx:74 +#: src/renderer/components/+nodes/node-details.tsx:79 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:59 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:47 #: src/renderer/components/+workloads/workloads.tsx:37 -#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:47 -#: src/renderer/components/+workloads-deployments/deployments.tsx:60 +#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:44 +#: src/renderer/components/+workloads-deployments/deployments.tsx:58 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:89 -#: src/renderer/components/+workloads-pods/pods.tsx:73 -#: src/renderer/components/+workloads-replicasets/replicasets.tsx:52 -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:42 +#: src/renderer/components/+workloads-pods/pods.tsx:70 +#: src/renderer/components/+workloads-replicasets/replicasets.tsx:50 +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:39 msgid "Pods" msgstr "" -#: src/renderer/components/+network-policies/network-policies.tsx:33 +#: src/renderer/components/+network-policies/network-policies.tsx:30 msgid "Policy Types" msgstr "Типы политик" @@ -1897,29 +1906,29 @@ msgid "Port" msgstr "" #: src/renderer/components/+network-endpoints/endpoint-subset-list.tsx:83 -#: src/renderer/components/+network-ingresses/ingress-details.tsx:94 -#: src/renderer/components/+network-policies/network-policy-details.tsx:96 -#: src/renderer/components/+network-policies/network-policy-details.tsx:109 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:93 +#: src/renderer/components/+network-policies/network-policy-details.tsx:95 +#: src/renderer/components/+network-policies/network-policy-details.tsx:108 #: src/renderer/components/+network-services/service-details.tsx:59 -#: src/renderer/components/+network-services/services.tsx:48 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:53 +#: src/renderer/components/+network-services/services.tsx:45 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:72 msgid "Ports" msgstr "Порты" -#: src/renderer/components/+preferences/preferences.tsx:121 -#~ msgid "Preferences" -#~ msgstr "" +#: src/renderer/components/+preferences/preferences.tsx:118 +msgid "Preferences" +msgstr "" #: src/renderer/components/+workloads-pods/pod-details.tsx:93 msgid "Priority Class" msgstr "Класс приоритета" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:67 -msgid "Private Key Secret" -msgstr "Секрет приватного ключа" +#~ msgid "Private Key Secret" +#~ msgstr "Секрет приватного ключа" -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:36 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:75 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:33 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:74 msgid "Privileged" msgstr "" @@ -1951,12 +1960,12 @@ msgstr "" #~ msgid "Pro-tip: you can also drag-n-drop kube-config file to this area" #~ msgstr "" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:28 -#: src/renderer/components/+storage-classes/storage-classes.tsx:35 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:27 +#: src/renderer/components/+storage-classes/storage-classes.tsx:32 msgid "Provisioner" msgstr "Комиссия" -#: src/renderer/components/+preferences/preferences.tsx:140 +#: src/renderer/components/+preferences/preferences.tsx:126 msgid "Proxy is used only for non-cluster communication." msgstr "" @@ -1964,7 +1973,7 @@ msgstr "" msgid "Proxy settings" msgstr "" -#: src/renderer/components/+workloads-pods/pods.tsx:80 +#: src/renderer/components/+workloads-pods/pods.tsx:77 msgid "QoS" msgstr "QoS" @@ -1976,27 +1985,28 @@ msgstr "QoS класс" msgid "Quotas" msgstr "Квоты" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:27 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:26 msgid "Ranges (Min-Max)" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:114 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:113 msgid "Read-only" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:79 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:78 msgid "Read-only Root Filesystem" msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:75 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:94 msgid "Readiness" msgstr "Готовность" -#: src/renderer/components/+events/event-details.tsx:33 +#: src/renderer/components/+events/event-details.tsx:32 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:25 msgid "Reason" msgstr "Причина" -#: src/renderer/components/dock/pod-logs.store.ts:66 +#: src/renderer/components/dock/pod-logs.store.ts:57 msgid "Reason: {0} ({1})" msgstr "Причина: {0} ({1})" @@ -2004,8 +2014,8 @@ msgstr "Причина: {0} ({1})" msgid "Receive" msgstr "Получение" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:34 -#: src/renderer/components/+storage-classes/storage-classes.tsx:36 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:33 +#: src/renderer/components/+storage-classes/storage-classes.tsx:33 #: src/renderer/components/+storage-volumes/volume-details.tsx:40 msgid "Reclaim Policy" msgstr "Политика отката" @@ -2015,7 +2025,7 @@ msgstr "Политика отката" #~ msgstr "" #: src/renderer/components/+config-autoscalers/hpa-details.tsx:70 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:76 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:75 msgid "Reference" msgstr "Ссылка" @@ -2040,10 +2050,10 @@ msgstr "Установка: {0}" msgid "Releases" msgstr "Релизы" -#: src/renderer/components/+preferences/preferences.tsx:152 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:60 -#: src/renderer/components/cluster-manager/clusters-menu.tsx:73 -#: src/renderer/components/cluster-manager/clusters-menu.tsx:79 +#: src/renderer/components/+preferences/preferences.tsx:138 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:59 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:74 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:80 #: src/renderer/components/item-object-list/item-list-layout.tsx:179 #: src/renderer/components/menu/menu-actions.tsx:49 #: src/renderer/components/menu/menu-actions.tsx:85 @@ -2066,11 +2076,11 @@ msgstr "Удалить поле" msgid "Remove item?" msgstr "Удалить объект?" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:61 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:60 msgid "Remove selected bindings for <0>{0}?" msgstr "Удалить выбранные связки <0>{0}?" -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:112 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:111 msgid "Remove selected bindings from ${name}" msgstr "Удалить выбранные связки из ${name}" @@ -2078,11 +2088,11 @@ msgstr "Удалить выбранные связки из ${name}" msgid "Remove selected items ({0})" msgstr "Удалить выбранные элементы ({0})" -#: src/renderer/components/kube-object/kube-object-menu.tsx:69 +#: src/renderer/components/kube-object/kube-object-menu.tsx:70 msgid "Remove {resourceKind} <0>{resourceName}?" msgstr "Удалить {resourceKind} <0>{resourceName}?" -#: src/renderer/components/+preferences/preferences.tsx:122 +#: src/renderer/components/+preferences/preferences.tsx:112 msgid "Removing helm branch <0>{0} has failed: {1}" msgstr "" @@ -2091,14 +2101,14 @@ msgstr "" #~ msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:62 -msgid "Renew Before" -msgstr "Обновить до" +#~ msgid "Renew Before" +#~ msgstr "Обновить до" #: src/renderer/components/+config-autoscalers/hpa-details.tsx:84 -#: src/renderer/components/+config-autoscalers/hpa.tsx:50 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:63 -#: src/renderer/components/+workloads-deployments/deployments.tsx:61 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:80 +#: src/renderer/components/+config-autoscalers/hpa.tsx:47 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:62 +#: src/renderer/components/+workloads-deployments/deployments.tsx:59 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:79 msgid "Replicas" msgstr "Реплики" @@ -2106,7 +2116,7 @@ msgstr "Реплики" msgid "Repo/Name" msgstr "Репозиторий/Имя" -#: src/renderer/components/+preferences/preferences.tsx:146 +#: src/renderer/components/+preferences/preferences.tsx:132 msgid "Repositories" msgstr "" @@ -2133,7 +2143,7 @@ msgstr "Продолжительность запроса в секундах" msgid "Requests" msgstr "Запросы" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:87 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:86 msgid "Required Drop Capabilities" msgstr "" @@ -2162,18 +2172,18 @@ msgstr "Сбросить фильтры?" #~ msgid "Resetting kube-config to default: {kubeConfigDefaultPath}" #~ msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:44 -#: src/renderer/components/+custom-resources/crd-list.tsx:73 +#: src/renderer/components/+custom-resources/crd-details.tsx:43 +#: src/renderer/components/+custom-resources/crd-list.tsx:70 msgid "Resource" msgstr "" -#: src/renderer/components/+user-management-roles/role-details.tsx:45 +#: src/renderer/components/+user-management-roles/role-details.tsx:44 msgid "Resource Names" msgstr "Имена ресурсов" #: src/renderer/components/+config/config.tsx:47 -#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:33 -#: src/renderer/components/+namespaces/namespace-details.tsx:41 +#: src/renderer/components/+config-resource-quotas/resource-quotas.tsx:30 +#: src/renderer/components/+namespaces/namespace-details.tsx:40 msgid "Resource Quotas" msgstr "Квоты ресурсов" @@ -2181,7 +2191,7 @@ msgstr "Квоты ресурсов" msgid "Resource Version" msgstr "" -#: src/renderer/components/kube-object/kube-object-details.tsx:46 +#: src/renderer/components/kube-object/kube-object-details.tsx:48 msgid "Resource loading has failed: <0>{0}" msgstr "Загрузка ресурса не удалась: <0>{0}" @@ -2194,7 +2204,7 @@ msgid "ResourceQuota name" msgstr "Имя квоты ресурса" #: src/renderer/components/+apps-releases/release-details.tsx:198 -#: src/renderer/components/+user-management-roles/role-details.tsx:29 +#: src/renderer/components/+user-management-roles/role-details.tsx:28 msgid "Resources" msgstr "Ресурсы" @@ -2210,7 +2220,7 @@ msgstr "Продолжительность ответа в секундах" msgid "Restart session" msgstr "Перезагрузить сессию" -#: src/renderer/components/+workloads-pods/pods.tsx:78 +#: src/renderer/components/+workloads-pods/pods.tsx:75 msgid "Restarts" msgstr "Перезагрузки" @@ -2223,27 +2233,27 @@ msgstr "Ревизия" msgid "Right click cluster icon to open cluster settings." msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:149 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:148 #: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:187 msgid "Role" msgstr "Role" #: src/renderer/components/+user-management/user-management.tsx:31 -#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:34 +#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:31 msgid "Role Bindings" msgstr "Role Bindings" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:105 -msgid "Role ID" -msgstr "Идентификатор роли" +#~ msgid "Role ID" +#~ msgstr "Идентификатор роли" #: src/renderer/components/+user-management-roles/add-role-dialog.tsx:74 msgid "Role name" msgstr "Имя роли" -#: src/renderer/components/+nodes/nodes.tsx:124 +#: src/renderer/components/+nodes/nodes.tsx:121 #: src/renderer/components/+user-management/user-management.tsx:36 -#: src/renderer/components/+user-management-roles/roles.tsx:32 +#: src/renderer/components/+user-management-roles/roles.tsx:29 msgid "Roles" msgstr "Roles" @@ -2257,41 +2267,41 @@ msgstr "Откат" msgid "Rollback <0>{releaseName}" msgstr "Откатить <0>{releaseName}" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:24 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:142 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:23 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:141 msgid "Rule" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:105 -#: src/renderer/components/+network-ingresses/ingresses.tsx:34 -#: src/renderer/components/+user-management-roles/role-details.tsx:25 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:104 +#: src/renderer/components/+network-ingresses/ingresses.tsx:32 +#: src/renderer/components/+user-management-roles/role-details.tsx:24 msgid "Rules" msgstr "Правила" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:126 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:125 msgid "Run As Group" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:127 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:126 msgid "Run As User" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:131 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:130 msgid "Runtime Class" msgstr "" #: src/renderer/components/+apps-releases/release-details.tsx:114 -#: src/renderer/components/+config-maps/config-map-details.tsx:78 -#: src/renderer/components/+config-secrets/secret-details.tsx:97 -#: src/renderer/components/+workspaces/workspaces.tsx:132 +#: src/renderer/components/+config-maps/config-map-details.tsx:77 +#: src/renderer/components/+config-secrets/secret-details.tsx:96 +#: src/renderer/components/+workspaces/workspaces.tsx:137 #: src/renderer/components/dock/edit-resource.tsx:87 -#: src/renderer/components/dock/pod-logs.tsx:161 +#: src/renderer/components/dock/pod-log-controls.tsx:74 msgid "Save" msgstr "Сохранить" #: src/renderer/components/+workloads-deployments/deployment-scale-dialog.tsx:128 -#: src/renderer/components/+workloads-deployments/deployments.tsx:86 -#: src/renderer/components/+workloads-deployments/deployments.tsx:87 +#: src/renderer/components/+workloads-deployments/deployments.tsx:83 +#: src/renderer/components/+workloads-deployments/deployments.tsx:84 msgid "Scale" msgstr "Масштабировать" @@ -2299,13 +2309,13 @@ msgstr "Масштабировать" msgid "Scale Deployment <0>{deploymentName}" msgstr "Масштабировать Deployment <0>{deploymentName}" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:46 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:45 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:46 msgid "Schedule" msgstr "Расписание" -#: src/renderer/components/+custom-resources/crd-details.tsx:41 -#: src/renderer/components/+custom-resources/crd-list.tsx:76 +#: src/renderer/components/+custom-resources/crd-details.tsx:40 +#: src/renderer/components/+custom-resources/crd-list.tsx:73 msgid "Scope" msgstr "" @@ -2317,7 +2327,7 @@ msgstr "Селектор области" msgid "Scope name" msgstr "Имя области" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:141 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:140 msgid "Se Linux" msgstr "" @@ -2331,13 +2341,13 @@ msgstr "Поиск.." #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:65 #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:108 -msgid "Secret" -msgstr "Секрет" +#~ msgid "Secret" +#~ msgstr "Секрет" #: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:37 #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:80 -msgid "Secret Name" -msgstr "Название секрета" +#~ msgid "Secret Name" +#~ msgstr "Название секрета" #: src/renderer/components/+user-management-service-accounts/service-accounts-details.tsx:72 msgid "Secret is not found" @@ -2347,7 +2357,7 @@ msgstr "" msgid "Secret name" msgstr "Имя секрета" -#: src/renderer/components/+config-secrets/secret-details.tsx:44 +#: src/renderer/components/+config-secrets/secret-details.tsx:43 msgid "Secret successfully updated." msgstr "Секрет успешно обновлен." @@ -2356,7 +2366,7 @@ msgid "Secret type" msgstr "Тип секрета" #: src/renderer/components/+config/config.tsx:39 -#: src/renderer/components/+config-secrets/secrets.tsx:40 +#: src/renderer/components/+config-secrets/secrets.tsx:37 #: src/renderer/components/+workloads-pods/pod-details.tsx:113 msgid "Secrets" msgstr "Secrets" @@ -2443,35 +2453,35 @@ msgstr "" #~ msgid "Selected contexts: {0}" #~ msgstr "" -#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:27 +#: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:26 #: src/renderer/components/+network-services/service-details.tsx:37 -#: src/renderer/components/+network-services/services.tsx:50 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:69 -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:75 -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:57 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:69 -#: src/renderer/components/+workloads-jobs/job-details.tsx:56 -#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:69 -#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:56 +#: src/renderer/components/+network-services/services.tsx:47 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:68 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:74 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:56 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:68 +#: src/renderer/components/+workloads-jobs/job-details.tsx:55 +#: src/renderer/components/+workloads-replicasets/replicaset-details.tsx:68 +#: src/renderer/components/+workloads-statefulsets/statefulset-details.tsx:55 msgid "Selector" msgstr "Селектор" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:61 #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:91 -msgid "Server" -msgstr "Сервер" +#~ msgid "Server" +#~ msgstr "Сервер" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:102 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:101 msgid "Service" msgstr "Service" #: src/renderer/components/+user-management/user-management.tsx:26 -#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:35 +#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:33 msgid "Service Accounts" msgstr "Service Accounts" #: src/renderer/components/+network/network.tsx:27 -#: src/renderer/components/+network-services/services.tsx:43 +#: src/renderer/components/+network-services/services.tsx:40 msgid "Services" msgstr "Services" @@ -2487,18 +2497,18 @@ msgstr "Установлено" msgid "Set quota" msgstr "Установить квоту" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:51 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:52 msgid "Settings" msgstr "" #: src/renderer/components/+nodes/node-menu.tsx:48 #: src/renderer/components/+workloads-pods/pod-menu.tsx:78 -msgid "Shell" -msgstr "Командная строка" +#~ msgid "Shell" +#~ msgstr "Командная строка" -#: src/renderer/components/+config-secrets/secret-details.tsx:93 -#: src/renderer/components/+workloads-pods/pod-container-env.tsx:101 -#: src/renderer/components/dock/pod-logs.tsx:159 +#: src/renderer/components/+config-secrets/secret-details.tsx:92 +#: src/renderer/components/+workloads-pods/pod-container-env.tsx:102 +#: src/renderer/components/dock/pod-log-controls.tsx:72 #: src/renderer/components/drawer/drawer-param-toggler.tsx:19 msgid "Show" msgstr "Показать" @@ -2507,11 +2517,11 @@ msgstr "Показать" msgid "Show Notes" msgstr "Показать логи" -#: src/renderer/components/dock/pod-logs.tsx:160 +#: src/renderer/components/dock/pod-log-controls.tsx:73 msgid "Show current logs" msgstr "" -#: src/renderer/components/dock/pod-logs.tsx:160 +#: src/renderer/components/dock/pod-log-controls.tsx:73 msgid "Show previous terminated container logs" msgstr "" @@ -2519,12 +2529,12 @@ msgstr "" msgid "Show value" msgstr "Показать значение" -#: src/renderer/components/dock/pod-logs.tsx:154 +#: src/renderer/components/dock/pod-log-controls.tsx:67 msgid "Since" msgstr "" #: src/renderer/components/+nodes/node-charts.tsx:80 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:49 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:46 msgid "Size" msgstr "Размер" @@ -2533,10 +2543,10 @@ msgid "Size Limit" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:70 -msgid "Skip TLS Verify" -msgstr "Skip TLS Verify" +#~ msgid "Skip TLS Verify" +#~ msgstr "Skip TLS Verify" -#: src/renderer/components/+events/event-details.tsx:36 +#: src/renderer/components/+events/event-details.tsx:35 #: src/renderer/components/+events/events.tsx:66 #: src/renderer/components/+events/kube-event-details.tsx:48 msgid "Source" @@ -2546,7 +2556,11 @@ msgstr "Источник" msgid "Specified limits are higher than node capacity!" msgstr "Заданные лимиты выше вместимости ноды!" -#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:39 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:26 +msgid "Started at" +msgstr "" + +#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:36 msgid "Stateful Sets" msgstr "" @@ -2557,59 +2571,55 @@ msgstr "StatefulSets" #: src/renderer/components/+apps-releases/release-details.tsx:192 #: src/renderer/components/+apps-releases/releases.tsx:93 #: src/renderer/components/+config-autoscalers/hpa-details.tsx:88 -#: src/renderer/components/+config-autoscalers/hpa.tsx:52 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:79 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:67 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:48 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:68 -#: src/renderer/components/+custom-resources/crd-resource-details.tsx:56 -#: src/renderer/components/+namespaces/namespace-details.tsx:37 -#: src/renderer/components/+namespaces/namespaces.tsx:34 -#: src/renderer/components/+network-services/services.tsx:52 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:65 -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:52 +#: src/renderer/components/+config-autoscalers/hpa.tsx:49 +#: src/renderer/components/+custom-resources/crd-resource-details.tsx:49 +#: src/renderer/components/+namespaces/namespace-details.tsx:36 +#: src/renderer/components/+namespaces/namespaces.tsx:32 +#: src/renderer/components/+network-services/services.tsx:49 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:64 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:49 #: src/renderer/components/+storage-volumes/volume-details.tsx:46 -#: src/renderer/components/+storage-volumes/volumes.tsx:45 -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:39 +#: src/renderer/components/+storage-volumes/volumes.tsx:42 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:57 #: src/renderer/components/+workloads-pods/pod-details-list.tsx:97 #: src/renderer/components/+workloads-pods/pod-details.tsx:82 -#: src/renderer/components/+workloads-pods/pods.tsx:82 +#: src/renderer/components/+workloads-pods/pods.tsx:79 msgid "Status" msgstr "Статус" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:64 -msgid "Status URI" -msgstr "Адрес статуса" +#~ msgid "Status URI" +#~ msgstr "Адрес статуса" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:57 -#: src/renderer/components/layout/sidebar.tsx:84 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:56 +#: src/renderer/components/layout/sidebar.tsx:85 msgid "Storage" msgstr "Storage" -#: src/renderer/components/+storage-volumes/volumes.tsx:41 +#: src/renderer/components/+storage-volumes/volumes.tsx:38 msgid "Storage Class" msgstr "" -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:54 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:53 #: src/renderer/components/+storage-volumes/volume-details.tsx:43 msgid "Storage Class Name" msgstr "Имя Storage Class" #: src/renderer/components/+storage/storage.tsx:40 -#: src/renderer/components/+storage-classes/storage-classes.tsx:33 +#: src/renderer/components/+storage-classes/storage-classes.tsx:30 msgid "Storage Classes" msgstr "Storage Classes" -#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:48 +#: src/renderer/components/+storage-volume-claims/volume-claims.tsx:45 msgid "Storage class" msgstr "Класс хранилища" -#: src/renderer/components/+custom-resources/crd-details.tsx:38 +#: src/renderer/components/+custom-resources/crd-details.tsx:37 msgid "Stored versions" msgstr "" -#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:68 -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:76 +#: src/renderer/components/+workloads-daemonsets/daemonset-details.tsx:67 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:75 msgid "Strategy Type" msgstr "Тип стратегии" @@ -2626,7 +2636,7 @@ msgstr "Отправить" msgid "Submitting.." msgstr "Применение.." -#: src/renderer/components/+network-endpoints/endpoint-details.tsx:24 +#: src/renderer/components/+network-endpoints/endpoint-details.tsx:23 msgid "Subsets" msgstr "" @@ -2634,31 +2644,31 @@ msgstr "" msgid "Successfully imported <0>{0} cluster(s)" msgstr "" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:128 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:127 msgid "Supplemental Groups" msgstr "" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:54 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:49 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:53 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:47 msgid "Suspend" msgstr "Заморозка" -#: src/renderer/components/+network-ingresses/ingress-details.tsx:98 +#: src/renderer/components/+network-ingresses/ingress-details.tsx:97 msgid "TLS" msgstr "TLS" -#: src/renderer/components/+nodes/node-details.tsx:103 -#: src/renderer/components/+nodes/nodes.tsx:123 +#: src/renderer/components/+nodes/node-details.tsx:102 +#: src/renderer/components/+nodes/nodes.tsx:120 msgid "Taints" msgstr "Метки блокировки" #: src/renderer/components/+preferences/preferences.tsx:171 -msgid "Telemetry & Usage Tracking" -msgstr "" +#~ msgid "Telemetry & Usage Tracking" +#~ msgstr "" #: src/renderer/components/+preferences/preferences.tsx:174 -msgid "Telemetry & usage data is collected to continuously improve the Lens experience." -msgstr "" +#~ msgid "Telemetry & usage data is collected to continuously improve the Lens experience." +#~ msgstr "" #: src/renderer/components/dock/terminal.store.ts:28 msgid "Terminal" @@ -2672,7 +2682,7 @@ msgstr "Сессия терминала" msgid "The path to the kubectl binary on the system." msgstr "" -#: src/renderer/components/dock/pod-logs.tsx:172 +#: src/renderer/components/dock/pod-logs.tsx:162 msgid "There are no logs available for container." msgstr "Для контейнера нет логов." @@ -2692,11 +2702,15 @@ msgstr "" msgid "This is the quick launch menu." msgstr "" -#: src/renderer/components/+preferences/preferences.tsx:166 +#: src/renderer/components/+cluster-settings/components/cluster-accessible-namespaces.tsx:22 +msgid "This setting is useful for manually specifying which namespaces you have access to. This is useful when you don't have permissions to list namespaces." +msgstr "" + +#: src/renderer/components/+preferences/preferences.tsx:152 msgid "This will make Lens to trust ANY certificate authority without any validations." msgstr "" -#: src/renderer/components/+network-policies/network-policy-details.tsx:59 +#: src/renderer/components/+network-policies/network-policy-details.tsx:58 msgid "To" msgstr "Из" @@ -2717,8 +2731,8 @@ msgid "Transmit" msgstr "Транзит" #: src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx:106 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:79 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:80 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:76 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:77 msgid "Trigger" msgstr "" @@ -2727,25 +2741,22 @@ msgid "Trigger CronJob <0>{cronjobName}" msgstr "" #: src/renderer/components/+cluster/cluster-issues.tsx:102 -#: src/renderer/components/+config-secrets/secret-details.tsx:74 -#: src/renderer/components/+config-secrets/secrets.tsx:45 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificates.tsx:63 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:44 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuers.tsx:66 -#: src/renderer/components/+custom-resources/crd-details.tsx:82 -#: src/renderer/components/+events/event-details.tsx:48 +#: src/renderer/components/+config-secrets/secret-details.tsx:73 +#: src/renderer/components/+config-secrets/secrets.tsx:42 +#: src/renderer/components/+custom-resources/crd-details.tsx:81 +#: src/renderer/components/+events/event-details.tsx:47 #: src/renderer/components/+events/events.tsx:64 #: src/renderer/components/+network-services/service-details.tsx:41 -#: src/renderer/components/+network-services/services.tsx:46 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:152 +#: src/renderer/components/+network-services/services.tsx:43 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:151 #: src/renderer/components/+storage-volumes/volume-details.tsx:69 -#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:95 +#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:94 #: src/renderer/components/+user-management-service-accounts/service-accounts-secret.tsx:43 #: src/renderer/components/+workloads-pods/pod-details.tsx:140 msgid "Type" msgstr "Тип" -#: src/renderer/components/+preferences/preferences.tsx:138 +#: src/renderer/components/+preferences/preferences.tsx:124 msgid "Type HTTP proxy url (example: http://proxy.acme.org:8080)" msgstr "" @@ -2754,13 +2765,13 @@ msgid "UID" msgstr "" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:126 -msgid "URL" -msgstr "УРЛ" +#~ msgid "URL" +#~ msgstr "УРЛ" #: src/renderer/components/+nodes/node-menu.tsx:55 #: src/renderer/components/+nodes/node-menu.tsx:56 -msgid "Uncordon" -msgstr "Разблокировка" +#~ msgid "Uncordon" +#~ msgstr "Разблокировка" #: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:212 msgid "Update" @@ -2815,11 +2826,11 @@ msgstr "Использовать тоже имя для привязки рол #~ msgid "Used" #~ msgstr "Использовано" -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:155 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:154 msgid "User" msgstr "Пользователь" -#: src/renderer/components/+custom-resources/crd-details.tsx:99 +#: src/renderer/components/+custom-resources/crd-details.tsx:98 msgid "Validation" msgstr "" @@ -2832,11 +2843,11 @@ msgstr "Значение" #: src/renderer/components/+apps-releases/release-details.tsx:111 #: src/renderer/components/+config-resource-quotas/add-quota-dialog.tsx:132 #: src/renderer/components/+config-resource-quotas/resource-quota-details.tsx:62 -#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:79 +#: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:78 msgid "Values" msgstr "Конфигурация" -#: src/renderer/components/+user-management-roles/role-details.tsx:33 +#: src/renderer/components/+user-management-roles/role-details.tsx:32 msgid "Verbs" msgstr "Определения" @@ -2844,9 +2855,9 @@ msgstr "Определения" #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:66 #: src/renderer/components/+apps-releases/release-details.tsx:185 #: src/renderer/components/+apps-releases/releases.tsx:91 -#: src/renderer/components/+custom-resources/crd-details.tsx:35 -#: src/renderer/components/+custom-resources/crd-list.tsx:75 -#: src/renderer/components/+nodes/nodes.tsx:125 +#: src/renderer/components/+custom-resources/crd-details.tsx:34 +#: src/renderer/components/+custom-resources/crd-list.tsx:72 +#: src/renderer/components/+nodes/nodes.tsx:122 #: src/renderer/components/dock/install-chart.tsx:120 #: src/renderer/components/dock/upgrade-chart.tsx:99 msgid "Version" @@ -2856,7 +2867,7 @@ msgstr "Версия" msgid "View Helm Release" msgstr "Показать Helm релиз" -#: src/renderer/components/+storage-classes/storage-class-details.tsx:31 +#: src/renderer/components/+storage-classes/storage-class-details.tsx:30 msgid "Volume Binding Mode" msgstr "Режим связи с Volume" @@ -2868,8 +2879,8 @@ msgstr "Емкость диска Volume" msgid "Volume disk usage" msgstr "Использование диска Volume" -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:37 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:47 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:34 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:46 #: src/renderer/components/+workloads-pods/pod-details.tsx:130 msgid "Volumes" msgstr "Volumes" @@ -2886,7 +2897,7 @@ msgstr "Предупреждения: {0}" msgid "Welcome!" msgstr "" -#: src/renderer/components/+workspaces/workspaces.tsx:88 +#: src/renderer/components/+workspaces/workspaces.tsx:92 msgid "What is a Workspace?" msgstr "" @@ -2894,16 +2905,16 @@ msgstr "" msgid "Worker" msgstr "Рабочие" -#: src/renderer/components/layout/sidebar.tsx:81 +#: src/renderer/components/layout/sidebar.tsx:82 msgid "Workloads" msgstr "Ресурсы" #: src/renderer/components/+workspaces/workspace-menu.tsx:39 -#: src/renderer/components/+workspaces/workspaces.tsx:100 +#: src/renderer/components/+workspaces/workspaces.tsx:104 msgid "Workspaces" msgstr "" -#: src/renderer/components/+workspaces/workspaces.tsx:90 +#: src/renderer/components/+workspaces/workspaces.tsx:94 msgid "Workspaces are used to organize number of clusters into logical groups." msgstr "" @@ -2916,27 +2927,25 @@ msgid "Wrong url format" msgstr "Неверный url формат" #: src/renderer/components/+cluster-settings/components/remove-cluster-button.tsx:28 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx:44 -#: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:71 -#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:42 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:72 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:76 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:80 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:92 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:96 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:100 -#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:119 -#: src/renderer/components/+storage-classes/storage-classes.tsx:43 +#: src/renderer/components/+pod-security-policies/pod-security-policies.tsx:39 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:71 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:75 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:79 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:91 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:95 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:99 +#: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:118 +#: src/renderer/components/+storage-classes/storage-classes.tsx:40 msgid "Yes" msgstr "Да" #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:118 -msgid "Zone" -msgstr "Зона" +#~ msgid "Zone" +#~ msgstr "Зона" #: src/renderer/components/+apps-releases/release-details.tsx:180 -#: src/renderer/components/+events/event-details.tsx:40 -#: src/renderer/components/+events/event-details.tsx:43 +#: src/renderer/components/+events/event-details.tsx:39 +#: src/renderer/components/+events/event-details.tsx:42 #: src/renderer/components/kube-object/kube-object-meta.tsx:18 msgid "ago" msgstr "тому назад" @@ -2949,36 +2958,37 @@ msgstr "и <0>{tailCount} ещё" #~ msgid "applicable to all clusters" #~ msgstr "" -#: src/renderer/components/+nodes/nodes.tsx:57 +#: src/renderer/components/+nodes/nodes.tsx:54 msgid "cores:" msgstr "ядер:" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:42 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:18 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:25 msgid "exit code" msgstr "код выхода" -#: src/renderer/components/+custom-resources/crd-details.tsx:66 +#: src/renderer/components/+custom-resources/crd-details.tsx:65 msgid "kind" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:67 +#: src/renderer/components/+custom-resources/crd-details.tsx:66 msgid "listKind" msgstr "" -#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:48 -#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:61 +#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:47 +#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:59 msgid "never" msgstr "" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:130 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:133 msgid "new" msgstr "" -#: src/renderer/components/+custom-resources/crd-details.tsx:64 +#: src/renderer/components/+custom-resources/crd-details.tsx:63 msgid "plural" msgstr "" -#: src/renderer/components/+workloads-pods/pod-details-container.tsx:41 +#: src/renderer/components/+workloads-pods/pod-details-container.tsx:17 msgid "ready" msgstr "готово" @@ -2986,11 +2996,11 @@ msgstr "готово" msgid "sec" msgstr "сек" -#: src/renderer/components/+custom-resources/crd-details.tsx:65 +#: src/renderer/components/+custom-resources/crd-details.tsx:64 msgid "singular" msgstr "" -#: src/renderer/components/dock/pod-logs.tsx:159 +#: src/renderer/components/dock/pod-log-controls.tsx:72 msgid "timestamps" msgstr "временные метки" @@ -2998,7 +3008,7 @@ msgstr "временные метки" msgid "{0, plural, one {Resource} other {Resources}}" msgstr "{0, plural, one {Ресурс} few {Ресурсы} many {Ресурсы} other {Ресурсы}}" -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:64 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:63 msgid "{0} desired, {1} updated" msgstr "{0} ожидаемые, {1} обновленные" @@ -3014,11 +3024,11 @@ msgstr "{0} на Подах" msgid "{0} on {1}" msgstr "{0} на {1}" -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:65 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:64 msgid "{0} total, {1} available" msgstr "{0} всего, {1} доступно" -#: src/renderer/components/+workloads-deployments/deployment-details.tsx:66 +#: src/renderer/components/+workloads-deployments/deployment-details.tsx:65 msgid "{0} unavailable" msgstr "{0} недоступно" @@ -3030,7 +3040,7 @@ msgstr "{accountName} конфигурация" msgid "{allItemsCount, plural, one {# item} other {# items}}" msgstr "{allItemsCount, plural, one {# элемент} few {# элемента} many {# элементов} other {# элементов}}" -#: src/renderer/components/+config-autoscalers/hpa.tsx:31 +#: src/renderer/components/+config-autoscalers/hpa.tsx:28 msgid "{metricsRemainCount} more..." msgstr "{metricsRemainCount} еще…" diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000000..021287ac94 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,100 @@ +site_name: Lens Documentation +site_description: Documentation for Lens IDE. The only system you’ll ever need to take control of your Kubernetes clusters. It's open source and free. Download it today! +site_author: Mirantis, Inc. +site_url: https://docs.k8slens.dev +docs_dir: docs/ +repo_name: GitHub +repo_url: https://github.com/lensapp/lens +copyright: Copyright © 2020 Mirantis Inc. - All rights reserved. +edit_uri: "" +nav: + - Overview: README.md + - Getting Started: getting-started/README.md + - Managing Clusters: + - Adding clusters: clusters/adding-clusters.md + - Removing cluster: clusters/removing-clusters.md + - Settings: clusters/settings.md + - Using Helm Charts: helm/README.md + - Using Extensions: extensions/usage/README.md + - Preferences: getting-started/preferences.md + - Extension Development: + - Overview: extensions/README.md + - Get Started: + - Your First Extension: extensions/get-started/your-first-extension.md + - Extension Anatomy: extensions/get-started/anatomy.md + - Wrapping Up: extensions/get-started/wrapping-up.md + - Extension Capabilities: + - Overview: extensions/capabilities/README.md + - Common Capabilities: extensions/capabilities/common-capabilities.md + - Styling: extensions/capabilities/styling.md + - Color reference: extensions/capabilities/color-reference.md + - Extension Guides: + - Overview: extensions/guides/README.md + - Renderer Extension: extensions/guides/renderer-extension.md + - Testing and Publishing: + - Testing Extensions: extensions/testing-and-publishing/testing.md + - Publishing Extensions: extensions/testing-and-publishing/publishing.md + - Bundling Extensions: extensions/testing-and-publishing/bundling.md + - API Reference: extensions/api/README.md + - Contributing: + - Overview: contributing/README.md + - Development: contributing/development.md + - Documentation: contributing/documentation.md + - Maintainers: contributing/maintainers.md + - Promotion: contributing/promotion.md + + - FAQ: faq/README.md +theme: + name: 'material' + highlightjs: true + language: 'en' + custom_dir: docs/custom_theme + favicon: img/favicon.ico + logo: img/lens-logo-icon.svg + palette: + - scheme: default + toggle: + icon: material/toggle-switch + name: Switch to light mode + - scheme: slate + toggle: + icon: material/toggle-switch-off-outline + name: Switch to dark mode + features: + - navigation.instant + - toc.autohide + - search.suggest + - search.highlight + +extra_css: + - stylesheets/extra.css + +plugins: + - search + - git-revision-date-localized + +markdown_extensions: + - pymdownx.highlight: {} + - pymdownx.superfences: {} + - pymdownx.inlinehilite: {} + - toc: + permalink: "#" + toc_depth: 3 + +extra: + generator: false + social: + - icon: fontawesome/brands/github + link: https://github.com/lensapp/lens + name: Lens on GitHub + - icon: fontawesome/brands/twitter + link: https://twitter.com/k8slens + name: Lens on Twitter + - icon: fontawesome/brands/slack + link: http://k8slens.slack.com/ + name: Lens on Slack + - icon: fontawesome/solid/link + link: https://k8slens.dev/ + name: Lens Website + version: + method: mike diff --git a/mkdocs/Dockerfile b/mkdocs/Dockerfile new file mode 100644 index 0000000000..81a82d3443 --- /dev/null +++ b/mkdocs/Dockerfile @@ -0,0 +1,35 @@ +ARG PYTHON_VERSION=3.8.1-alpine3.11 + +FROM python:${PYTHON_VERSION} as builder + +ENV PYTHONUNBUFFERED 1 + +# Set build directory +WORKDIR /wheels + +# Copy files necessary +COPY ./requirements.txt . + +# Perform build and cleanup artifacts +RUN \ + apk add --no-cache \ + git \ + git-fast-import \ + && apk add --no-cache --virtual .build gcc musl-dev \ + && python -m pip install --upgrade pip \ + && pip install -r requirements.txt \ + && apk del .build gcc musl-dev \ + && rm -rf /usr/local/lib/python3.8/site-packages/mkdocs/themes/*/* \ + && rm -rf /tmp/* + + + +# Set final MkDocs working directory +WORKDIR /docs + +# Expose MkDocs development server port +EXPOSE 8000 + +# Start development server by default +ENTRYPOINT ["mkdocs"] +CMD ["serve", "--dev-addr=0.0.0.0:8000"] diff --git a/mkdocs/requirements.txt b/mkdocs/requirements.txt new file mode 100644 index 0000000000..4db6d92e25 --- /dev/null +++ b/mkdocs/requirements.txt @@ -0,0 +1,8 @@ +# Direct dependencies +mkdocs>=1.1 +Pygments>=2.4 +markdown>=3.2 +pymdown-extensions>=7.0 +mkdocs-material-extensions>=1.0 +mkdocs-git-revision-date-localized-plugin>=0.7.3 +mkdocs-material>=6.1.0 \ No newline at end of file diff --git a/package.json b/package.json index f728a59c4e..21315e065e 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "dev-build": "concurrently yarn:compile:*", "dev-run": "nodemon --watch static/build/main.js --exec \"electron --inspect .\"", "dev:main": "yarn compile:main --watch", - "dev:renderer": "yarn compile:renderer --watch", + "dev:renderer": "yarn webpack-dev-server --config webpack.renderer.ts", "dev:extension-types": "yarn compile:extension-types --watch", "compile": "env NODE_ENV=production concurrently yarn:compile:*", "compile:main": "webpack --config webpack.main.ts", @@ -37,7 +37,8 @@ "download:kubectl": "yarn run ts-node build/download_kubectl.ts", "download:helm": "yarn run ts-node build/download_helm.ts", "build:tray-icons": "yarn run ts-node build/build_tray_icon.ts", - "lint": "eslint $@ --ext js,ts,tsx --max-warnings=0 src/" + "lint": "eslint $@ --ext js,ts,tsx --max-warnings=0 src/", + "mkdocs-serve-local": "docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -it -p 8000:8000 -v ${PWD}:/docs mkdocs-serve-local:latest" }, "config": { "bundledKubectlVersion": "1.17.11", @@ -268,6 +269,7 @@ "@lingui/macro": "^3.0.0-13", "@lingui/react": "^3.0.0-13", "@material-ui/core": "^4.10.1", + "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", "@rollup/plugin-json": "^4.1.0", "@testing-library/jest-dom": "^5.11.5", "@testing-library/react": "^11.1.0", @@ -279,6 +281,7 @@ "@types/electron-window-state": "^2.0.34", "@types/fs-extra": "^9.0.1", "@types/hapi": "^18.0.3", + "@types/hard-source-webpack-plugin": "^1.0.1", "@types/hoist-non-react-statics": "^3.3.1", "@types/html-webpack-plugin": "^3.2.3", "@types/http-proxy": "^1.17.4", @@ -315,6 +318,7 @@ "@types/uuid": "^8.0.0", "@types/webdriverio": "^4.13.0", "@types/webpack": "^4.41.17", + "@types/webpack-dev-server": "^3.11.1", "@types/webpack-env": "^1.15.2", "@types/webpack-node-externals": "^1.7.1", "@typescript-eslint/eslint-plugin": "^4.0.0", @@ -339,6 +343,7 @@ "file-loader": "^6.0.0", "flex.box": "^3.4.4", "fork-ts-checker-webpack-plugin": "^5.0.0", + "hard-source-webpack-plugin": "^0.13.1", "hoist-non-react-statics": "^3.3.2", "html-webpack-plugin": "^4.3.0", "identity-obj-proxy": "^3.0.0", @@ -360,6 +365,7 @@ "react": "^16.14.0", "react-beautiful-dnd": "^13.0.0", "react-dom": "^16.13.1", + "react-refresh": "^0.9.0", "react-router": "^5.2.0", "react-router-dom": "^5.2.0", "react-select": "^3.1.0", @@ -376,11 +382,13 @@ "ts-jest": "^26.1.0", "ts-loader": "^7.0.5", "ts-node": "^8.10.2", + "type-fest": "^0.18.0", "typeface-roboto": "^0.0.75", "typescript": "^4.0.2", "url-loader": "^4.1.0", - "webpack": "^4.43.0", + "webpack": "^4.44.2", "webpack-cli": "^3.3.11", + "webpack-dev-server": "^3.11.0", "webpack-node-externals": "^1.7.2", "xterm": "^4.6.0", "xterm-addon-fit": "^0.4.0" diff --git a/src/common/__tests__/search-store.test.ts b/src/common/__tests__/search-store.test.ts new file mode 100644 index 0000000000..517182a04a --- /dev/null +++ b/src/common/__tests__/search-store.test.ts @@ -0,0 +1,80 @@ +/** + * @jest-environment jsdom + */ + +import { SearchStore } from "../search-store" + +let searchStore: SearchStore = null; + +const logs = [ + "1:M 30 Oct 2020 16:17:41.553 # Connection with replica 172.17.0.12:6379 lost", + "1:M 30 Oct 2020 16:17:41.623 * Replica 172.17.0.12:6379 asks for synchronization", + "1:M 30 Oct 2020 16:17:41.623 * Starting Partial resynchronization request from 172.17.0.12:6379 accepted. Sending 0 bytes of backlog starting from offset 14407." +] + +describe("search store tests", () => { + beforeEach(async () => { + searchStore = new SearchStore(); + }) + + it("does nothing with empty search query", () => { + searchStore.onSearch([], ""); + expect(searchStore.occurrences).toEqual([]); + }) + + it("doesn't break if no text provided", () => { + searchStore.onSearch(null, "replica"); + expect(searchStore.occurrences).toEqual([]); + + searchStore.onSearch([], "replica"); + expect(searchStore.occurrences).toEqual([]); + }) + + it("find 3 occurences across 3 lines", () => { + searchStore.onSearch(logs, "172"); + expect(searchStore.occurrences).toEqual([0, 1, 2]); + }) + + it("find occurences within 1 line (case-insensitive)", () => { + searchStore.onSearch(logs, "Starting"); + expect(searchStore.occurrences).toEqual([2, 2]); + }) + + it("sets overlay index equal to first occurence", () => { + searchStore.onSearch(logs, "Replica"); + expect(searchStore.activeOverlayIndex).toBe(0); + }) + + it("set overlay index to next occurence", () => { + searchStore.onSearch(logs, "172"); + searchStore.setNextOverlayActive(); + expect(searchStore.activeOverlayIndex).toBe(1); + }) + + it("sets overlay to last occurence", () => { + searchStore.onSearch(logs, "172"); + searchStore.setPrevOverlayActive(); + expect(searchStore.activeOverlayIndex).toBe(2); + }) + + it("gets line index where overlay is located", () => { + searchStore.onSearch(logs, "synchronization"); + expect(searchStore.activeOverlayLine).toBe(1); + }) + + it("escapes string for using in regex", () => { + const regex = searchStore.escapeRegex("some.interesting-query\\#?()[]"); + expect(regex).toBe("some\\.interesting\\-query\\\\\\#\\?\\(\\)\\[\\]"); + }) + + it("gets active find number", () => { + searchStore.onSearch(logs, "172"); + searchStore.setNextOverlayActive(); + expect(searchStore.activeFind).toBe(2); + }) + + it("gets total finds number", () => { + searchStore.onSearch(logs, "Starting"); + expect(searchStore.totalFinds).toBe(2); + }) +}) \ No newline at end of file diff --git a/src/common/cluster-store.ts b/src/common/cluster-store.ts index 838e6cc119..7ea92b612a 100644 --- a/src/common/cluster-store.ts +++ b/src/common/cluster-store.ts @@ -39,6 +39,7 @@ export interface ClusterModel { preferences?: ClusterPreferences; metadata?: ClusterMetadata; ownerRef?: string; + accessibleNamespaces?: string[]; /** @deprecated */ kubeConfig?: string; // yaml @@ -179,8 +180,8 @@ export class ClusterStore extends BaseStore { } @action - addCluster(model: ClusterModel | Cluster ): Cluster { - appEventBus.emit({name: "cluster", action: "add"}) + addCluster(model: ClusterModel | Cluster): Cluster { + appEventBus.emit({ name: "cluster", action: "add" }) let cluster = model as Cluster; if (!(model instanceof Cluster)) { cluster = new Cluster(model) @@ -195,7 +196,7 @@ export class ClusterStore extends BaseStore { @action async removeById(clusterId: ClusterId) { - appEventBus.emit({name: "cluster", action: "remove"}) + appEventBus.emit({ name: "cluster", action: "remove" }) const cluster = this.getById(clusterId); if (cluster) { this.clusters.delete(clusterId); diff --git a/src/common/search-store.ts b/src/common/search-store.ts new file mode 100644 index 0000000000..3288bbb3a0 --- /dev/null +++ b/src/common/search-store.ts @@ -0,0 +1,126 @@ +import { action, computed, observable } from "mobx"; +import { autobind } from "../renderer/utils"; + +export class SearchStore { + @observable searchQuery = ""; // Text in the search input + @observable occurrences: number[] = []; // Array with line numbers, eg [0, 0, 10, 21, 21, 40...] + @observable activeOverlayIndex = -1; // Index withing the occurences array. Showing where is activeOverlay currently located + + /** + * Sets default activeOverlayIndex + * @param text An array of any textual data (logs, for example) + * @param query Search query from input + */ + @action + onSearch(text: string[], query = this.searchQuery) { + this.searchQuery = query; + if (!query) { + this.reset(); + return; + } + this.occurrences = this.findOccurences(text, query); + if (!this.occurrences.length) return; + + // If new highlighted keyword in exact same place as previous one, then no changing in active overlay + if (this.occurrences[this.activeOverlayIndex] !== undefined) return; + this.activeOverlayIndex = this.getNextOverlay(true); + } + + /** + * Does searching within text array, create a list of search keyword occurences. + * Each keyword "occurency" is saved as index of the the line where keyword founded + * @param text An array of any textual data (logs, for example) + * @param query Search query from input + * @returns {Array} Array of line indexes [0, 0, 14, 17, 17, 17, 20...] + */ + findOccurences(text: string[], query: string) { + if (!text) return []; + const occurences: number[] = []; + text.forEach((line, index) => { + const regex = new RegExp(this.escapeRegex(query), "gi"); + const matches = [...line.matchAll(regex)]; + matches.forEach(() => occurences.push(index)); + }); + return occurences; + } + + /** + * Getting next overlay index within the occurences array + * @param loopOver Allows to jump from last element to first + * @returns {number} next overlay index + */ + getNextOverlay(loopOver = false) { + const next = this.activeOverlayIndex + 1; + if (next > this.occurrences.length - 1) { + return loopOver ? 0 : this.activeOverlayIndex; + } + return next; + } + + /** + * Getting previous overlay index within the occurences array of occurences + * @param loopOver Allows to jump from first element to last one + * @returns {number} prev overlay index + */ + getPrevOverlay(loopOver = false) { + const prev = this.activeOverlayIndex - 1; + if (prev < 0) { + return loopOver ? this.occurrences.length - 1 : this.activeOverlayIndex; + } + return prev; + } + + @autobind() + setNextOverlayActive() { + this.activeOverlayIndex = this.getNextOverlay(true); + } + + @autobind() + setPrevOverlayActive() { + this.activeOverlayIndex = this.getPrevOverlay(true); + } + + /** + * Gets line index of where active overlay is located + * @returns {number} A line index within the text/logs array + */ + @computed get activeOverlayLine(): number { + return this.occurrences[this.activeOverlayIndex]; + } + + @computed get activeFind(): number { + return this.activeOverlayIndex + 1; + } + + @computed get totalFinds(): number { + return this.occurrences.length; + } + + /** + * Checks if overlay is active (to highlight it with orange background usually) + * @param line Index of the line where overlay is located + * @param occurence Number of the overlay within one line + */ + @autobind() + isActiveOverlay(line: number, occurence: number) { + const firstLineIndex = this.occurrences.findIndex(item => item === line); + return firstLineIndex + occurence === this.activeOverlayIndex; + } + + /** + * An utility methods escaping user string to safely pass it into new Regex(variable) + * @param value Unescaped string + */ + escapeRegex(value: string) { + return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); + } + + @action + reset() { + this.searchQuery = ""; + this.activeOverlayIndex = -1; + this.occurrences = []; + } +} + +export const searchStore = new SearchStore; \ No newline at end of file diff --git a/src/common/user-store.ts b/src/common/user-store.ts index 0bb953b153..b03616c1d2 100644 --- a/src/common/user-store.ts +++ b/src/common/user-store.ts @@ -31,7 +31,7 @@ export interface UserPreferences { } export class UserStore extends BaseStore { - static readonly defaultTheme: ThemeId = "kontena-dark" + static readonly defaultTheme: ThemeId = "lens-dark" private constructor() { super({ diff --git a/src/common/vars.ts b/src/common/vars.ts index 206aa59ce2..dd792e3bed 100644 --- a/src/common/vars.ts +++ b/src/common/vars.ts @@ -22,6 +22,7 @@ export const mainDir = path.join(contextDir, "src/main"); export const rendererDir = path.join(contextDir, "src/renderer"); export const htmlTemplate = path.resolve(rendererDir, "template.html"); export const sassCommonVars = path.resolve(rendererDir, "components/vars.scss"); +export const webpackDevServerPort = 9009 // Special runtime paths defineGlobal("__static", { diff --git a/src/extensions/extension-loader.ts b/src/extensions/extension-loader.ts index a19b717e82..78ff1fd3ee 100644 --- a/src/extensions/extension-loader.ts +++ b/src/extensions/extension-loader.ts @@ -4,11 +4,11 @@ import type { LensRendererExtension } from "./lens-renderer-extension" import type { InstalledExtension } from "./extension-manager"; import path from "path" import { broadcastIpc } from "../common/ipc" -import { computed, observable, reaction, when } from "mobx" +import { action, computed, observable, reaction, toJS, when } from "mobx" import logger from "../main/logger" import { app, ipcRenderer, remote } from "electron" import * as registries from "./registries"; -import { kubeObjectStatusRegistry } from "./registries"; +import { extensionsStore } from "./extensions-store"; // lazy load so that we get correct userData export function extensionPackagesRoot() { @@ -16,33 +16,42 @@ export function extensionPackagesRoot() { } export class ExtensionLoader { + protected extensions = observable.map(); + protected instances = observable.map(); + @observable isLoaded = false; - protected extensions = observable.map([], { deep: false }); - protected instances = observable.map([], { deep: false }) + whenLoaded = when(() => this.isLoaded); constructor() { if (ipcRenderer) { - ipcRenderer.on("extensions:loaded", (event, extensions: InstalledExtension[]) => { + ipcRenderer.on("extensions:loaded", (event, extensions: [LensExtensionId, InstalledExtension][]) => { this.isLoaded = true; - extensions.forEach((ext) => { - if (!this.extensions.has(ext.manifestPath)) { - this.extensions.set(ext.manifestPath, ext) + extensions.forEach(([extId, ext]) => { + if (!this.extensions.has(extId)) { + this.extensions.set(extId, ext) } }) }); } + extensionsStore.manageState(this); } - @computed get userExtensions(): LensExtension[] { - return [...this.instances.values()].filter(ext => !ext.isBundled) + @computed get userExtensions(): Map { + const extensions = this.extensions.toJS(); + extensions.forEach((ext, extId) => { + if (ext.isBundled) { + extensions.delete(extId); + } + }) + return extensions; } - async init() { - const { extensionManager } = await import("./extension-manager"); - const installedExtensions = await extensionManager.load(); - this.extensions.replace(installedExtensions); + @action + async init(extensions: Map) { + this.extensions.replace(extensions); this.isLoaded = true; this.loadOnMain(); + this.broadcastExtensions(); } loadOnMain() { @@ -74,21 +83,26 @@ export class ExtensionLoader { } protected autoInitExtensions(register: (ext: LensExtension) => Function[]) { - return reaction(() => this.extensions.toJS(), (installedExtensions) => { - for (const [id, ext] of installedExtensions) { - let instance = this.instances.get(ext.manifestPath) - if (!instance) { - const extensionModule = this.requireExtension(ext) - if (!extensionModule) { - continue - } + return reaction(() => this.toJSON(), installedExtensions => { + for (const [extId, ext] of installedExtensions) { + let instance = this.instances.get(extId); + if (ext.isEnabled && !instance) { try { - const LensExtensionClass: LensExtensionConstructor = extensionModule.default; + const LensExtensionClass: LensExtensionConstructor = this.requireExtension(ext) + if (!LensExtensionClass) continue; instance = new LensExtensionClass(ext); instance.whenEnabled(() => register(instance)); - this.instances.set(ext.manifestPath, instance); + instance.enable(); + this.instances.set(extId, instance); } catch (err) { - logger.error(`[EXTENSIONS-LOADER]: init extension instance error`, { ext, err }) + logger.error(`[EXTENSION-LOADER]: activation extension error`, { ext, err }) + } + } else if (!ext.isEnabled && instance) { + try { + instance.disable(); + this.instances.delete(extId); + } catch (err) { + logger.error(`[EXTENSION-LOADER]: deactivation extension error`, { ext, err }) } } } @@ -106,7 +120,7 @@ export class ExtensionLoader { extEntrypoint = path.resolve(path.join(path.dirname(extension.manifestPath), extension.manifest.main)) } if (extEntrypoint !== "") { - return __non_webpack_require__(extEntrypoint) + return __non_webpack_require__(extEntrypoint).default; } } catch (err) { console.error(`[EXTENSION-LOADER]: can't load extension main at ${extEntrypoint}: ${err}`, { extension }); @@ -114,6 +128,17 @@ export class ExtensionLoader { } } + getExtension(extId: LensExtensionId): InstalledExtension { + return this.extensions.get(extId); + } + + toJSON(): Map { + return toJS(this.extensions, { + exportMapsAsObjects: false, + recurseEverything: true, + }) + } + async broadcastExtensions(frameId?: number) { await when(() => this.isLoaded); broadcastIpc({ @@ -121,7 +146,7 @@ export class ExtensionLoader { frameId: frameId, frameOnly: !!frameId, args: [ - Array.from(this.extensions.toJS().values()) + Array.from(this.toJSON()), ], }) } diff --git a/src/extensions/extension-manager.ts b/src/extensions/extension-manager.ts index 1d37707596..7a10fa35f4 100644 --- a/src/extensions/extension-manager.ts +++ b/src/extensions/extension-manager.ts @@ -8,9 +8,10 @@ import { extensionPackagesRoot } from "./extension-loader" import { getBundledExtensions } from "../common/utils/app-version" export interface InstalledExtension { - manifest: LensExtensionManifest; - manifestPath: string; - isBundled?: boolean; // defined in package.json + readonly manifest: LensExtensionManifest; + readonly manifestPath: string; + readonly isBundled: boolean; // defined in project root's package.json + isEnabled: boolean; } type Dependencies = { @@ -77,7 +78,7 @@ export class ExtensionManager { return await this.loadExtensions(); } - protected async getByManifest(manifestPath: string): Promise { + protected async getByManifest(manifestPath: string, { isBundled = false } = {}): Promise { let manifestJson: LensExtensionManifest; try { fs.accessSync(manifestPath, fs.constants.F_OK); // check manifest file for existence @@ -88,6 +89,8 @@ export class ExtensionManager { return { manifestPath: path.join(this.nodeModulesPath, manifestJson.name, "package.json"), manifest: manifestJson, + isBundled: isBundled, + isEnabled: isBundled, } } catch (err) { logger.error(`[EXTENSION-MANAGER]: can't install extension at ${manifestPath}: ${err}`, { manifestJson }); @@ -129,9 +132,8 @@ export class ExtensionManager { } const absPath = path.resolve(folderPath, fileName); const manifestPath = path.resolve(absPath, "package.json"); - const ext = await this.getByManifest(manifestPath).catch(() => null) + const ext = await this.getByManifest(manifestPath, { isBundled: true }).catch(() => null) if (ext) { - ext.isBundled = true; extensions.push(ext) } } diff --git a/src/extensions/extensions-store.ts b/src/extensions/extensions-store.ts new file mode 100644 index 0000000000..ba942c41d9 --- /dev/null +++ b/src/extensions/extensions-store.ts @@ -0,0 +1,77 @@ +import type { LensExtensionId } from "./lens-extension"; +import type { ExtensionLoader } from "./extension-loader"; +import { BaseStore } from "../common/base-store" +import { action, observable, reaction, toJS } from "mobx"; + +export interface LensExtensionsStoreModel { + extensions: Record; +} + +export interface LensExtensionState { + enabled?: boolean; +} + +export class ExtensionsStore extends BaseStore { + constructor() { + super({ + configName: "lens-extensions", + }); + } + + protected state = observable.map(); + + protected getState(extensionLoader: ExtensionLoader) { + const state: Record = {}; + return Array.from(extensionLoader.userExtensions).reduce((state, [extId, ext]) => { + state[extId] = { + enabled: ext.isEnabled, + } + return state; + }, state) + } + + async manageState(extensionLoader: ExtensionLoader) { + await extensionLoader.whenLoaded; + await this.whenLoaded; + + // activate user-extensions when state is ready + extensionLoader.userExtensions.forEach((ext, extId) => { + ext.isEnabled = this.isEnabled(extId); + }); + + // apply state on changes from store + reaction(() => this.state.toJS(), extensionsState => { + extensionsState.forEach((state, extId) => { + const ext = extensionLoader.getExtension(extId); + if (ext && !ext.isBundled) { + ext.isEnabled = state.enabled; + } + }) + }) + + // save state on change `extension.isEnabled` + reaction(() => this.getState(extensionLoader), extensionsState => { + this.state.merge(extensionsState) + }) + } + + isEnabled(extId: LensExtensionId) { + const state = this.state.get(extId); + return !state /* enabled by default */ || state.enabled; + } + + @action + protected fromStore({ extensions }: LensExtensionsStoreModel) { + this.state.merge(extensions); + } + + toJSON(): LensExtensionsStoreModel { + return toJS({ + extensions: this.state.toJSON(), + }, { + recurseEverything: true + }) + } +} + +export const extensionsStore = new ExtensionsStore(); diff --git a/src/extensions/lens-extension.ts b/src/extensions/lens-extension.ts index 246edfe110..f1ffb9184b 100644 --- a/src/extensions/lens-extension.ts +++ b/src/extensions/lens-extension.ts @@ -1,7 +1,6 @@ import type { InstalledExtension } from "./extension-manager"; -import { action, reaction } from "mobx"; +import { action, observable, reaction } from "mobx"; import logger from "../main/logger"; -import { ExtensionStore } from "./extension-store"; export type LensExtensionId = string; // path to manifest (package.json) export type LensExtensionConstructor = new (...args: ConstructorParameters) => LensExtension; @@ -14,35 +13,17 @@ export interface LensExtensionManifest { renderer?: string; // path to %ext/dist/renderer.js } -export interface LensExtensionStoreModel { - isEnabled: boolean; -} - -export class LensExtension = any> { - protected store: S; +export class LensExtension { readonly manifest: LensExtensionManifest; readonly manifestPath: string; readonly isBundled: boolean; + @observable private isEnabled = false; + constructor({ manifest, manifestPath, isBundled }: InstalledExtension) { this.manifest = manifest this.manifestPath = manifestPath this.isBundled = !!isBundled - this.init(); - } - - protected async init(store: S = createBaseStore().getInstance()) { - this.store = store; - await this.store.loadExtension(this); - reaction(() => this.store.data.isEnabled, (isEnabled = true) => { - this.toggle(isEnabled); // handle activation & deactivation - }, { - fireImmediately: true - }); - } - - get isEnabled() { - return !!this.store.data.isEnabled; } get id(): LensExtensionId { @@ -64,7 +45,7 @@ export class LensExtension = a @action async enable() { if (this.isEnabled) return; - this.store.data.isEnabled = true; + this.isEnabled = true; this.onActivate(); logger.info(`[EXTENSION]: enabled ${this.name}@${this.version}`); } @@ -72,7 +53,7 @@ export class LensExtension = a @action async disable() { if (!this.isEnabled) return; - this.store.data.isEnabled = false; + this.isEnabled = false; this.onDeactivate(); logger.info(`[EXTENSION]: disabled ${this.name}@${this.version}`); } @@ -114,13 +95,3 @@ export class LensExtension = a // mock } } - -function createBaseStore() { - return class extends ExtensionStore { - constructor() { - super({ - configName: "state" - }); - } - } -} diff --git a/src/extensions/renderer-api/components.ts b/src/extensions/renderer-api/components.ts index 76bf6c2b50..c051ce13e3 100644 --- a/src/extensions/renderer-api/components.ts +++ b/src/extensions/renderer-api/components.ts @@ -1,23 +1,38 @@ -// TODO: add more common re-usable UI components + refactor interfaces (Props -> ComponentProps) +// Common UI components -export * from "../../renderer/components/icon" -export * from "../../renderer/components/checkbox" -export * from "../../renderer/components/tooltip" -export * from "../../renderer/components/button" -export * from "../../renderer/components/tabs" -export * from "../../renderer/components/badge" +// layouts export * from "../../renderer/components/layout/page-layout" +export * from "../../renderer/components/layout/wizard-layout" +export * from "../../renderer/components/layout/tab-layout" + +// form-controls +export * from "../../renderer/components/button" +export * from "../../renderer/components/checkbox" +export * from "../../renderer/components/radio" +export * from "../../renderer/components/select" +export * from "../../renderer/components/slider" +export * from "../../renderer/components/input/input" + +// other components +export * from "../../renderer/components/icon" +export * from "../../renderer/components/tooltip" +export * from "../../renderer/components/tabs" +export * from "../../renderer/components/table" +export * from "../../renderer/components/badge" export * from "../../renderer/components/drawer" +export * from "../../renderer/components/dialog" +export * from "../../renderer/components/confirm-dialog"; +export * from "../../renderer/components/line-progress" +export * from "../../renderer/components/menu" +export * from "../../renderer/components/notifications" +export * from "../../renderer/components/spinner" +export * from "../../renderer/components/stepper" // kube helpers -export { KubeObjectDetailsProps, KubeObjectMenuProps } from "../../renderer/components/kube-object" -export { KubeObjectMeta } from "../../renderer/components/kube-object/kube-object-meta" -export { KubeObjectListLayout, KubeObjectListLayoutProps } from "../../renderer/components/kube-object/kube-object-list-layout"; -export { KubeEventDetails } from "../../renderer/components/+events/kube-event-details" +export * from "../../renderer/components/kube-object" +export * from "../../renderer/components/+events/kube-event-details" // specific exports -export { ConfirmDialog } from "../../renderer/components/confirm-dialog"; -export { MenuItem, SubMenu } from "../../renderer/components/menu"; -export { StatusBrick } from "../../renderer/components/status-brick"; +export * from "../../renderer/components/status-brick"; export { terminalStore, createTerminalTab } from "../../renderer/components/dock/terminal.store"; export { createPodLogsTab } from "../../renderer/components/dock/pod-logs.store"; diff --git a/src/extensions/renderer-api/k8s-api.ts b/src/extensions/renderer-api/k8s-api.ts index bb94a9857c..613b1dc867 100644 --- a/src/extensions/renderer-api/k8s-api.ts +++ b/src/extensions/renderer-api/k8s-api.ts @@ -42,3 +42,4 @@ export enum KubeObjectStatusLevel { WARNING = 2, CRITICAL = 3 } +export { CustomResourceDefinition, crdApi } from "../../renderer/api/endpoints"; diff --git a/src/main/cluster.ts b/src/main/cluster.ts index 656ee67cdb..b88fe6c7ef 100644 --- a/src/main/cluster.ts +++ b/src/main/cluster.ts @@ -80,13 +80,14 @@ export class Cluster implements ClusterModel, ClusterState { @observable metadata: ClusterMetadata = {}; @observable allowedNamespaces: string[] = []; @observable allowedResources: string[] = []; + @observable accessibleNamespaces: string[] = []; @computed get available() { return this.accessible && !this.disconnected; } get version(): string { - return String(this.metadata?.version) || "" + return String(this.metadata?.version) || "" } constructor(model: ClusterModel) { @@ -149,7 +150,7 @@ export class Cluster implements ClusterModel, ClusterState { } @action - async activate(force = false ) { + async activate(force = false) { if (this.activated && !force) { return this.pushState(); } @@ -340,7 +341,7 @@ export class Cluster implements ClusterModel, ClusterState { for (const w of warnings) { if (w.involvedObject.kind === 'Pod') { try { - const pod = (await client.readNamespacedPod(w.involvedObject.name, w.involvedObject.namespace)).body; + const { body: pod } = await client.readNamespacedPod(w.involvedObject.name, w.involvedObject.namespace); logger.debug(`checking pod ${w.involvedObject.namespace}/${w.involvedObject.name}`) if (podHasIssues(pod)) { uniqEventSources.add(w.involvedObject.uid); @@ -351,11 +352,10 @@ export class Cluster implements ClusterModel, ClusterState { uniqEventSources.add(w.involvedObject.uid); } } - let nodeNotificationCount = 0; const nodes = (await client.listNode()).body.items; - nodes.map(n => { - nodeNotificationCount = nodeNotificationCount + getNodeWarningConditions(n).length - }); + const nodeNotificationCount = nodes + .map(getNodeWarningConditions) + .reduce((sum, conditions) => sum + conditions.length, 0); return uniqEventSources.size + nodeNotificationCount; } catch (error) { logger.error("Failed to fetch event count: " + JSON.stringify(error)) @@ -371,7 +371,8 @@ export class Cluster implements ClusterModel, ClusterState { workspace: this.workspace, preferences: this.preferences, metadata: this.metadata, - ownerRef: this.ownerRef + ownerRef: this.ownerRef, + accessibleNamespaces: this.accessibleNamespaces, }; return toJS(model, { recurseEverything: true @@ -426,6 +427,10 @@ export class Cluster implements ClusterModel, ClusterState { } protected async getAllowedNamespaces() { + if (this.accessibleNamespaces.length) { + return this.accessibleNamespaces + } + const api = this.getProxyKubeconfig().makeApiClient(CoreV1Api) try { const namespaceList = await api.listNamespace() @@ -442,7 +447,7 @@ export class Cluster implements ClusterModel, ClusterState { } catch (error) { const ctx = this.getProxyKubeconfig().getContextObject(this.contextName) if (ctx.namespace) return [ctx.namespace] - return [] + return []; } } diff --git a/src/main/index.ts b/src/main/index.ts index 762c166bc4..01b98d0f41 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -21,6 +21,8 @@ import { userStore } from "../common/user-store"; import { workspaceStore } from "../common/workspace-store"; import { appEventBus } from "../common/event-bus" import { extensionLoader } from "../extensions/extension-loader"; +import { extensionManager } from "../extensions/extension-manager"; +import { extensionsStore } from "../extensions/extensions-store"; const workingDir = path.join(app.getPath("appData"), appName); let proxyPort: number; @@ -52,6 +54,7 @@ app.on("ready", async () => { userStore.load(), clusterStore.load(), workspaceStore.load(), + extensionsStore.load(), ]); // find free port @@ -76,7 +79,7 @@ app.on("ready", async () => { } LensExtensionsApi.windowManager = windowManager = new WindowManager(proxyPort); - extensionLoader.init(); // call after windowManager to see splash earlier + extensionLoader.init(await extensionManager.load()); // call after windowManager to see splash earlier setTimeout(() => { appEventBus.emit({ name: "app", action: "start" }) diff --git a/src/main/menu.ts b/src/main/menu.ts index 037378537d..bc4be680cf 100644 --- a/src/main/menu.ts +++ b/src/main/menu.ts @@ -1,7 +1,7 @@ -import { app, BrowserWindow, dialog, Menu, MenuItem, MenuItemConstructorOptions, webContents } from "electron" +import { app, BrowserWindow, dialog, ipcMain, IpcMainEvent, Menu, MenuItem, MenuItemConstructorOptions, webContents, shell } from "electron" import { autorun } from "mobx"; import { WindowManager } from "./window-manager"; -import { appName, isMac, isWindows } from "../common/vars"; +import { appName, isMac, isWindows, isTestEnv } from "../common/vars"; import { addClusterURL } from "../renderer/components/+add-cluster/add-cluster.route"; import { preferencesURL } from "../renderer/components/+preferences/preferences.route"; import { whatsNewURL } from "../renderer/components/+whats-new/whats-new.route"; @@ -193,6 +193,12 @@ export function buildMenu(windowManager: WindowManager) { navigate(whatsNewURL()) }, }, + { + label: "Documentation", + click: async () => { + shell.openExternal('https://docs.k8slens.dev/'); + }, + }, ...ignoreOnMac([ { label: "About Lens", @@ -229,4 +235,38 @@ export function buildMenu(windowManager: WindowManager) { const menu = Menu.buildFromTemplate(Object.values(appMenu)); Menu.setApplicationMenu(menu); + + if (isTestEnv) { + // this is a workaround for the test environment (spectron) not being able to directly access + // the application menus (https://github.com/electron-userland/spectron/issues/21) + ipcMain.on('test-menu-item-click', (event: IpcMainEvent, ...names: string[]) => { + let menu: Menu = Menu.getApplicationMenu() + const parentLabels: string[] = []; + let menuItem: MenuItem + + for (const name of names) { + parentLabels.push(name); + menuItem = menu?.items?.find(item => item.label === name); + if (!menuItem) { + break; + } + menu = menuItem.submenu; + } + + const menuPath: string = parentLabels.join(" -> ") + if (!menuItem) { + logger.info(`[MENU:test-menu-item-click] Cannot find menu item ${menuPath}`); + return; + } + + const { enabled, visible, click } = menuItem; + if (enabled === false || visible === false || typeof click !== 'function') { + logger.info(`[MENU:test-menu-item-click] Menu item ${menuPath} not clickable`); + return; + } + + logger.info(`[MENU:test-menu-item-click] Menu item ${menuPath} click!`); + menuItem.click(); + }); + } } diff --git a/src/main/router.ts b/src/main/router.ts index 976d7cac9c..a5323bf150 100644 --- a/src/main/router.ts +++ b/src/main/router.ts @@ -4,7 +4,7 @@ import http from "http" import path from "path" import { readFile } from "fs-extra" import { Cluster } from "./cluster" -import { apiPrefix, appName, publicPath } from "../common/vars"; +import { apiPrefix, appName, publicPath, isDevelopment, webpackDevServerPort } from "../common/vars"; import { helmRoute, kubeconfigRoute, metricsRoute, portForwardRoute, resourceApplierRoute, watchRoute } from "./routes"; export interface RouterRequestOpts { @@ -94,23 +94,35 @@ export class Router { return mimeTypes[path.extname(filename).slice(1)] || "text/plain" } - async handleStaticFile(filePath: string, res: http.ServerResponse) { + async handleStaticFile(filePath: string, res: http.ServerResponse, req: http.IncomingMessage) { const asset = path.join(__static, filePath); try { + const filename = path.basename(req.url); + // redirect requests to [appName].js, [appName].html /sockjs-node/ to webpack-dev-server (for hot-reload support) + const toWebpackDevServer = filename.includes(appName) || filename.includes('hot-update') || req.url.includes('sockjs-node'); + if (isDevelopment && toWebpackDevServer) { + const redirectLocation = `http://localhost:${webpackDevServerPort}` + req.url; + res.statusCode = 307; + res.setHeader('Location', redirectLocation); + res.end(); + return; + } const data = await readFile(asset); res.setHeader("Content-Type", this.getMimeType(asset)); - res.write(data) - res.end() + res.write(data); + res.end(); } catch (err) { - this.handleStaticFile(`${publicPath}/${appName}.html`, res); + this.handleStaticFile(`${publicPath}/${appName}.html`, res, req); } } protected addRoutes() { // Static assets - this.router.add({ method: 'get', path: '/{path*}' }, ({ params, response }: LensApiRequest) => { - this.handleStaticFile(params.path, response); - }); + this.router.add( + { method: 'get', path: '/{path*}' }, + ({ params, response, path, raw: { req }}: LensApiRequest) => { + this.handleStaticFile(params.path, response, req); + }); this.router.add({ method: "get", path: `${apiPrefix}/kubeconfig/service-account/{namespace}/{account}` }, kubeconfigRoute.routeServiceAccountRoute.bind(kubeconfigRoute)) diff --git a/src/renderer/api/api-manager.ts b/src/renderer/api/api-manager.ts index b178c55739..0b066f37e1 100644 --- a/src/renderer/api/api-manager.ts +++ b/src/renderer/api/api-manager.ts @@ -1,22 +1,13 @@ import type { KubeObjectStore } from "../kube-object.store"; -import type { KubeObjectDetailsProps, KubeObjectListLayoutProps, KubeObjectMenuProps } from "../components/kube-object"; -import type React from "react"; -import { observable } from "mobx"; +import { action, observable } from "mobx"; import { autobind } from "../utils"; import { KubeApi } from "./kube-api"; -export interface ApiComponents { - List?: React.ComponentType; - Menu?: React.ComponentType; - Details?: React.ComponentType; -} - @autobind() export class ApiManager { private apis = observable.map(); private stores = observable.map(); - private views = observable.map(); getApi(pathOrCallback: string | ((api: KubeApi) => boolean)) { if (typeof pathOrCallback === "string") { @@ -46,8 +37,11 @@ export class ApiManager { } } - registerStore(api: KubeApi, store: KubeObjectStore) { - this.stores.set(api, store); + @action + registerStore(store: KubeObjectStore, apis: KubeApi[] = [store.api]) { + apis.forEach(api => { + this.stores.set(api, store); + }) } getStore(api: string | KubeApi): KubeObjectStore { diff --git a/src/renderer/api/endpoints/index.ts b/src/renderer/api/endpoints/index.ts index 3d69068e30..337d193043 100644 --- a/src/renderer/api/endpoints/index.ts +++ b/src/renderer/api/endpoints/index.ts @@ -5,6 +5,7 @@ export * from "./cluster.api" export * from "./cluster-role.api" export * from "./cluster-role-binding.api" export * from "./configmap.api" +export * from "./crd.api" export * from "./cron-job.api" export * from "./daemon-set.api" export * from "./deployment.api" diff --git a/src/renderer/api/kube-api.ts b/src/renderer/api/kube-api.ts index d2373985f0..b572bd774c 100644 --- a/src/renderer/api/kube-api.ts +++ b/src/renderer/api/kube-api.ts @@ -9,7 +9,6 @@ import { kubeWatchApi } from "./kube-watch-api"; import { apiManager } from "./api-manager"; import { createKubeApiURL, parseKubeApi } from "./kube-api-parse"; import { apiKubePrefix, isDevelopment } from "../../common/vars"; -import * as URL from "url" export interface IKubeApiOptions { apiBase?: string; // base api-path for listing all resources, e.g. "/api/v1/pods" diff --git a/src/renderer/bootstrap.tsx b/src/renderer/bootstrap.tsx index 7311e0e0cf..52a92b7c11 100644 --- a/src/renderer/bootstrap.tsx +++ b/src/renderer/bootstrap.tsx @@ -4,6 +4,8 @@ import React from "react"; import * as Mobx from "mobx" import * as MobxReact from "mobx-react" import * as LensExtensions from "../extensions/extension-api" +import { App } from "./components/app"; +import { LensApp } from "./lens-app"; import { render, unmountComponentAtNode } from "react-dom"; import { isMac } from "../common/vars"; import { userStore } from "../common/user-store"; @@ -11,8 +13,7 @@ import { workspaceStore } from "../common/workspace-store"; import { clusterStore } from "../common/cluster-store"; import { i18nStore } from "./i18n"; import { themeStore } from "./theme.store"; -import { App } from "./components/app"; -import { LensApp } from "./lens-app"; +import { extensionsStore } from "../extensions/extensions-store"; type AppComponent = React.ComponentType & { init?(): Promise; @@ -34,6 +35,7 @@ export async function bootstrap(App: AppComponent) { userStore.load(), workspaceStore.load(), clusterStore.load(), + extensionsStore.load(), i18nStore.init(), themeStore.init(), ]); diff --git a/src/renderer/components/+apps-helm-charts/helm-charts.tsx b/src/renderer/components/+apps-helm-charts/helm-charts.tsx index 7948cf950e..473d78194e 100644 --- a/src/renderer/components/+apps-helm-charts/helm-charts.tsx +++ b/src/renderer/components/+apps-helm-charts/helm-charts.tsx @@ -11,7 +11,7 @@ import { navigation } from "../../navigation"; import { ItemListLayout } from "../item-object-list/item-list-layout"; import { t, Trans } from "@lingui/macro"; import { _i18n } from "../../i18n"; -import { SearchInput } from "../input"; +import { SearchInputUrl } from "../input"; enum sortBy { name = "name", @@ -72,7 +72,7 @@ export class HelmCharts extends Component { (items: HelmChart[]) => items.filter(item => !item.deprecated) ]} customizeHeader={() => ( - + )} renderTableHeader={[ { className: "icon" }, diff --git a/src/renderer/components/+cluster-settings/components/cluster-accessible-namespaces.tsx b/src/renderer/components/+cluster-settings/components/cluster-accessible-namespaces.tsx new file mode 100644 index 0000000000..f4c9e2731d --- /dev/null +++ b/src/renderer/components/+cluster-settings/components/cluster-accessible-namespaces.tsx @@ -0,0 +1,38 @@ +import React from "react"; +import { observer } from "mobx-react"; +import { Cluster } from "../../../../main/cluster"; +import { SubTitle } from "../../layout/sub-title"; +import { EditableList } from "../../editable-list"; +import { observable } from "mobx"; +import { _i18n } from "../../../i18n"; +import { Trans } from "@lingui/macro"; + +interface Props { + cluster: Cluster; +} + +@observer +export class ClusterAccessibleNamespaces extends React.Component { + @observable namespaces = new Set(this.props.cluster.accessibleNamespaces); + + render() { + return ( + <> + +

This setting is useful for manually specifying which namespaces you have access to. This is useful when you don't have permissions to list namespaces.

+ { + this.namespaces.add(newNamespace); + this.props.cluster.accessibleNamespaces = Array.from(this.namespaces); + }} + items={Array.from(this.namespaces)} + remove={({ oldItem: oldNamesapce }) => { + this.namespaces.delete(oldNamesapce); + this.props.cluster.accessibleNamespaces = Array.from(this.namespaces); + }} + /> + + ); + } +} diff --git a/src/renderer/components/+cluster-settings/general.tsx b/src/renderer/components/+cluster-settings/general.tsx index 5fb6e9b81f..1d498bc94b 100644 --- a/src/renderer/components/+cluster-settings/general.tsx +++ b/src/renderer/components/+cluster-settings/general.tsx @@ -6,6 +6,7 @@ import { ClusterIconSetting } from "./components/cluster-icon-setting"; import { ClusterProxySetting } from "./components/cluster-proxy-setting"; import { ClusterPrometheusSetting } from "./components/cluster-prometheus-setting"; import { ClusterHomeDirSetting } from "./components/cluster-home-dir-setting"; +import { ClusterAccessibleNamespaces } from "./components/cluster-accessible-namespaces"; interface Props { cluster: Cluster; @@ -21,6 +22,7 @@ export class General extends React.Component { + ; } } \ No newline at end of file diff --git a/src/renderer/components/+cluster/cluster.store.ts b/src/renderer/components/+cluster/cluster.store.ts index 01c4e0f013..3af42297b0 100644 --- a/src/renderer/components/+cluster/cluster.store.ts +++ b/src/renderer/components/+cluster/cluster.store.ts @@ -107,4 +107,4 @@ export class ClusterStore extends KubeObjectStore { } export const clusterStore = new ClusterStore(); -apiManager.registerStore(clusterApi, clusterStore); +apiManager.registerStore(clusterStore); diff --git a/src/renderer/components/+config-autoscalers/hpa.store.ts b/src/renderer/components/+config-autoscalers/hpa.store.ts index 62b971dd5c..240f42a309 100644 --- a/src/renderer/components/+config-autoscalers/hpa.store.ts +++ b/src/renderer/components/+config-autoscalers/hpa.store.ts @@ -9,4 +9,4 @@ export class HPAStore extends KubeObjectStore { } export const hpaStore = new HPAStore(); -apiManager.registerStore(hpaApi, hpaStore); +apiManager.registerStore(hpaStore); diff --git a/src/renderer/components/+config-maps/config-maps.store.ts b/src/renderer/components/+config-maps/config-maps.store.ts index 5fd2526641..d6dcc5f916 100644 --- a/src/renderer/components/+config-maps/config-maps.store.ts +++ b/src/renderer/components/+config-maps/config-maps.store.ts @@ -9,4 +9,4 @@ export class ConfigMapsStore extends KubeObjectStore { } export const configMapsStore = new ConfigMapsStore(); -apiManager.registerStore(configMapApi, configMapsStore); +apiManager.registerStore(configMapsStore); diff --git a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.store.ts b/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.store.ts index f25904119e..1eca71e1ba 100644 --- a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.store.ts +++ b/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.store.ts @@ -9,4 +9,4 @@ export class PodDisruptionBudgetsStore extends KubeObjectStore { } export const resourceQuotaStore = new ResourceQuotasStore(); -apiManager.registerStore(resourceQuotaApi, resourceQuotaStore); +apiManager.registerStore(resourceQuotaStore); diff --git a/src/renderer/components/+config-secrets/secrets.store.ts b/src/renderer/components/+config-secrets/secrets.store.ts index 18f3a3e5d3..df5a78b3ac 100644 --- a/src/renderer/components/+config-secrets/secrets.store.ts +++ b/src/renderer/components/+config-secrets/secrets.store.ts @@ -9,4 +9,4 @@ export class SecretsStore extends KubeObjectStore { } export const secretsStore = new SecretsStore(); -apiManager.registerStore(secretsApi, secretsStore); +apiManager.registerStore(secretsStore); diff --git a/src/renderer/components/+custom-resources/crd-resources.tsx b/src/renderer/components/+custom-resources/crd-resources.tsx index 26c8c17e5c..3a7d726b59 100644 --- a/src/renderer/components/+custom-resources/crd-resources.tsx +++ b/src/renderer/components/+custom-resources/crd-resources.tsx @@ -10,7 +10,7 @@ import { KubeObject } from "../../api/kube-object"; import { ICRDRouteParams } from "./crd.route"; import { autorun, computed } from "mobx"; import { crdStore } from "./crd.store"; -import { SortingCallback } from "../table"; +import { TableSortCallback } from "../table"; import { apiManager } from "../../api/api-manager"; interface Props extends RouteComponentProps { @@ -50,7 +50,7 @@ export class CrdResources extends React.Component { if (!crd) return null; const isNamespaced = crd.isNamespaced(); const extraColumns = crd.getPrinterColumns(false); // Cols with priority bigger than 0 are shown in details - const sortingCallbacks: { [sortBy: string]: SortingCallback } = { + const sortingCallbacks: { [sortBy: string]: TableSortCallback } = { [sortBy.name]: (item: KubeObject) => item.getName(), [sortBy.namespace]: (item: KubeObject) => item.getNs(), [sortBy.age]: (item: KubeObject) => item.metadata.creationTimestamp, diff --git a/src/renderer/components/+custom-resources/crd.store.ts b/src/renderer/components/+custom-resources/crd.store.ts index fadb1222e2..e73bbd1fb7 100644 --- a/src/renderer/components/+custom-resources/crd.store.ts +++ b/src/renderer/components/+custom-resources/crd.store.ts @@ -14,7 +14,7 @@ function initStore(crd: CustomResourceDefinition) { const api = apiManager.getApi(apiBase) || new KubeApi({ apiBase, kind, isNamespaced }); if (!apiManager.getStore(api)) { - apiManager.registerStore(api, new CRDResourceStore(api)); + apiManager.registerStore(new CRDResourceStore(api)); } } @@ -64,4 +64,4 @@ export class CRDStore extends KubeObjectStore { export const crdStore = new CRDStore(); -apiManager.registerStore(crdApi, crdStore); +apiManager.registerStore(crdStore); diff --git a/src/renderer/components/+events/event.store.ts b/src/renderer/components/+events/event.store.ts index 23ebc7ccc9..3d8142a55f 100644 --- a/src/renderer/components/+events/event.store.ts +++ b/src/renderer/components/+events/event.store.ts @@ -49,4 +49,4 @@ export class EventStore extends KubeObjectStore { } export const eventStore = new EventStore(); -apiManager.registerStore(eventApi, eventStore); +apiManager.registerStore(eventStore); diff --git a/src/renderer/components/+events/kube-event-details.tsx b/src/renderer/components/+events/kube-event-details.tsx index 16113cd305..9716586869 100644 --- a/src/renderer/components/+events/kube-event-details.tsx +++ b/src/renderer/components/+events/kube-event-details.tsx @@ -6,15 +6,14 @@ import { Trans } from "@lingui/macro"; import { KubeObject } from "../../api/kube-object"; import { DrawerItem, DrawerTitle } from "../drawer"; import { cssNames } from "../../utils"; -import { Icon } from "../icon"; import { eventStore } from "./event.store"; -interface Props { +export interface KubeEventDetailsProps { object: KubeObject; } @observer -export class KubeEventDetails extends React.Component { +export class KubeEventDetails extends React.Component { async componentDidMount() { eventStore.loadAll(); } diff --git a/src/renderer/components/+extensions/extensions.scss b/src/renderer/components/+extensions/extensions.scss index 8e9256c201..63778d37e9 100644 --- a/src/renderer/components/+extensions/extensions.scss +++ b/src/renderer/components/+extensions/extensions.scss @@ -2,11 +2,17 @@ --width: 100%; --max-width: auto; - .extension { - --flex-gap: $padding / 3; - padding: $padding $padding * 2; - background: $colorVague; - border-radius: $radius; + .extension-list { + .extension { + --flex-gap: $padding / 3; + padding: $padding $padding * 2; + background: $colorVague; + border-radius: $radius; + + &:not(:first-of-type) { + margin-top: $padding * 2; + } + } } .extensions-path { diff --git a/src/renderer/components/+extensions/extensions.tsx b/src/renderer/components/+extensions/extensions.tsx index 7dc5f55726..34814393ae 100644 --- a/src/renderer/components/+extensions/extensions.tsx +++ b/src/renderer/components/+extensions/extensions.tsx @@ -19,7 +19,8 @@ export class Extensions extends React.Component { @computed get extensions() { const searchText = this.search.toLowerCase(); - return extensionLoader.userExtensions.filter(({ name, description }) => { + return Array.from(extensionLoader.userExtensions.values()).filter(ext => { + const { name, description } = ext.manifest; return [ name.toLowerCase().includes(searchText), description.toLowerCase().includes(searchText), @@ -68,9 +69,10 @@ export class Extensions extends React.Component { ) } return extensions.map(ext => { - const { id, name, description, isEnabled } = ext; + const { manifestPath: extId, isEnabled, manifest } = ext; + const { name, description } = manifest; return ( -
+
Name: {name} @@ -80,10 +82,10 @@ export class Extensions extends React.Component {
{!isEnabled && ( - + )} {isEnabled && ( - + )}
) @@ -102,7 +104,7 @@ export class Extensions extends React.Component { value={this.search} onChange={(value) => this.search = value} /> -
+
{this.renderExtensions()}
diff --git a/src/renderer/components/+namespaces/namespace.store.ts b/src/renderer/components/+namespaces/namespace.store.ts index c9f190be97..8874aa9233 100644 --- a/src/renderer/components/+namespaces/namespace.store.ts +++ b/src/renderer/components/+namespaces/namespace.store.ts @@ -95,4 +95,4 @@ export class NamespaceStore extends KubeObjectStore { } export const namespaceStore = new NamespaceStore(); -apiManager.registerStore(namespacesApi, namespaceStore); +apiManager.registerStore(namespaceStore); diff --git a/src/renderer/components/+network-endpoints/endpoints.store.ts b/src/renderer/components/+network-endpoints/endpoints.store.ts index 17485ec712..5d4a6b6ff7 100644 --- a/src/renderer/components/+network-endpoints/endpoints.store.ts +++ b/src/renderer/components/+network-endpoints/endpoints.store.ts @@ -9,4 +9,4 @@ export class EndpointStore extends KubeObjectStore { } export const endpointStore = new EndpointStore(); -apiManager.registerStore(endpointApi, endpointStore); +apiManager.registerStore(endpointStore); diff --git a/src/renderer/components/+network-ingresses/ingress.store.ts b/src/renderer/components/+network-ingresses/ingress.store.ts index 5f299c51e8..37156c2741 100644 --- a/src/renderer/components/+network-ingresses/ingress.store.ts +++ b/src/renderer/components/+network-ingresses/ingress.store.ts @@ -19,4 +19,4 @@ export class IngressStore extends KubeObjectStore { } export const ingressStore = new IngressStore(); -apiManager.registerStore(ingressApi, ingressStore); +apiManager.registerStore(ingressStore); diff --git a/src/renderer/components/+network-policies/network-policy.store.ts b/src/renderer/components/+network-policies/network-policy.store.ts index 74faa8db26..0f37de3ac0 100644 --- a/src/renderer/components/+network-policies/network-policy.store.ts +++ b/src/renderer/components/+network-policies/network-policy.store.ts @@ -9,4 +9,4 @@ export class NetworkPolicyStore extends KubeObjectStore { } export const networkPolicyStore = new NetworkPolicyStore(); -apiManager.registerStore(networkPolicyApi, networkPolicyStore); +apiManager.registerStore(networkPolicyStore); diff --git a/src/renderer/components/+network-services/services.store.ts b/src/renderer/components/+network-services/services.store.ts index b080297dfa..d3e3c7b983 100644 --- a/src/renderer/components/+network-services/services.store.ts +++ b/src/renderer/components/+network-services/services.store.ts @@ -9,4 +9,4 @@ export class ServiceStore extends KubeObjectStore { } export const serviceStore = new ServiceStore(); -apiManager.registerStore(serviceApi, serviceStore); +apiManager.registerStore(serviceStore); diff --git a/src/renderer/components/+nodes/nodes.store.ts b/src/renderer/components/+nodes/nodes.store.ts index 7892b005a8..8c04f55ad5 100644 --- a/src/renderer/components/+nodes/nodes.store.ts +++ b/src/renderer/components/+nodes/nodes.store.ts @@ -69,4 +69,4 @@ export class NodesStore extends KubeObjectStore { } export const nodesStore = new NodesStore() -apiManager.registerStore(nodesApi, nodesStore); +apiManager.registerStore(nodesStore); diff --git a/src/renderer/components/+pod-security-policies/pod-security-policies.store.ts b/src/renderer/components/+pod-security-policies/pod-security-policies.store.ts index d79b3d5d10..2517dcc59a 100644 --- a/src/renderer/components/+pod-security-policies/pod-security-policies.store.ts +++ b/src/renderer/components/+pod-security-policies/pod-security-policies.store.ts @@ -9,4 +9,4 @@ export class PodSecurityPoliciesStore extends KubeObjectStore } export const podSecurityPoliciesStore = new PodSecurityPoliciesStore() -apiManager.registerStore(pspApi, podSecurityPoliciesStore); +apiManager.registerStore(podSecurityPoliciesStore); diff --git a/src/renderer/components/+preferences/preferences.tsx b/src/renderer/components/+preferences/preferences.tsx index 22cbd4a7b1..2fc58646df 100644 --- a/src/renderer/components/+preferences/preferences.tsx +++ b/src/renderer/components/+preferences/preferences.tsx @@ -128,7 +128,7 @@ export class Preferences extends React.Component {

Helm

- this.currentNewItem = val} + /> +
+
+ { + items.map((item, index) => ( +
+
{renderItem(item, index)}
+
+ remove(({ index, oldItem: item }))} /> +
+
+ )) + } +
+
+ ) + } +} diff --git a/src/renderer/components/editable-list/index.ts b/src/renderer/components/editable-list/index.ts new file mode 100644 index 0000000000..3ca5ee970e --- /dev/null +++ b/src/renderer/components/editable-list/index.ts @@ -0,0 +1 @@ +export * from "./editable-list" \ No newline at end of file diff --git a/src/renderer/components/input/index.ts b/src/renderer/components/input/index.ts index ea9117e3e1..b4bfe3a56b 100644 --- a/src/renderer/components/input/index.ts +++ b/src/renderer/components/input/index.ts @@ -1,3 +1,4 @@ export * from './input' export * from './search-input' +export * from './search-input-url' export * from './file-input' diff --git a/src/renderer/components/input/input.tsx b/src/renderer/components/input/input.tsx index 224f7f953e..f0938255a6 100644 --- a/src/renderer/components/input/input.tsx +++ b/src/renderer/components/input/input.tsx @@ -3,13 +3,16 @@ import "./input.scss"; import React, { DOMAttributes, InputHTMLAttributes, TextareaHTMLAttributes } from "react"; import { autobind, cssNames, debouncePromise } from "../../utils"; import { Icon } from "../icon"; -import { conditionalValidators, Validator } from "./input_validators"; +import * as Validators from "./input_validators"; +import { InputValidator } from "./input_validators"; import isString from "lodash/isString" import isFunction from "lodash/isFunction" import isBoolean from "lodash/isBoolean" import uniqueId from "lodash/uniqueId" -type Omit = Pick> +const { conditionalValidators, ...InputValidators } = Validators; +export { InputValidators, InputValidator } + type InputElement = HTMLInputElement | HTMLTextAreaElement; type InputElementProps = InputHTMLAttributes & TextareaHTMLAttributes & DOMAttributes; @@ -24,7 +27,8 @@ export type InputProps = Omit): void; onSubmit?(value: T): void; } @@ -49,7 +53,7 @@ export class Input extends React.Component { static defaultProps = defaultProps as object; public input: InputElement; - public validators: Validator[] = []; + public validators: InputValidator[] = []; public state: State = { dirty: !!this.props.dirty, @@ -149,7 +153,7 @@ export class Input extends React.Component { }); } - private getValidatorError(value: string, { message }: Validator) { + private getValidatorError(value: string, { message }: InputValidator) { if (isFunction(message)) return message(value, this.props) return message || ""; } @@ -213,6 +217,10 @@ export class Input extends React.Component { onKeyDown(evt: React.KeyboardEvent) { const modified = evt.shiftKey || evt.metaKey || evt.altKey || evt.ctrlKey; + if (this.props.onKeyDown) { + this.props.onKeyDown(evt); + } + switch (evt.key) { case "Enter": if (this.props.onSubmit && !modified && !evt.repeat) { @@ -258,7 +266,7 @@ export class Input extends React.Component { render() { const { multiLine, showValidationLine, validators, theme, maxRows, children, - maxLength, rows, disabled, autoSelectOnFocus, iconLeft, iconRight, + maxLength, rows, disabled, autoSelectOnFocus, iconLeft, iconRight, contentRight, ...inputProps } = this.props; const { focused, dirty, valid, validating, errors } = this.state; @@ -288,9 +296,10 @@ export class Input extends React.Component { return (