Commit Graph
746 Commits
Author SHA1 Message Date
Sebastian Malton cb4a7497dd Remove Namespace filter from ItemListLayout (#2952) 2021-06-07 08:13:26 -04:00
Sebastian Malton d21f99e609 Await onActivate/onDeactive of extensions (#2963)
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-06-07 08:08:39 -04:00
Alex Andreev 026cbbac09 Generic TopBar component for Catalog/Cluster views (#2882)
* Rendering close button in cluster view

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Changing Icon hover style

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Moving onClick handler away

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Removing sidebar compact view

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Removing 'compact' refs in SidebarItem

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Wrapping Catalog with MainLayout

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Making sidebar resizing indicator visible on hover

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Adding TopBar to catalog view

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Using TopBar in cluster views

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Cleaning up Sidebar styles

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Using getActiveClusterEntity() for searching

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fix resizing anchor position

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Align cluster name on left

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Removing unused files

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Removing unused css var

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Showing Topbar in ClusterStatus page

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Removing TopBar from ClusterManager

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
2021-06-07 11:46:40 +03:00
Jari KolehmainenandSebastian Malton 0fb927f96b catalog details panel (#2939)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

Co-authored-by: Sebastian Malton <sebastian@malton.name>
2021-06-07 10:09:00 +03:00
Sebastian Malton 031c57962b Readd NamespaceSelectFilter to releases.tsx (#2962)
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-06-07 10:06:52 +03:00
Sebastian Malton 683a520186 Fix drawer closing on updating kube objects (#2964)
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-06-07 08:23:09 +03:00
Aprameya Bhat 91404d3ab3 Fixed #2954: Rollback should include current version as well. (#2955)
Rollback should include the current version as well. This will reset the rollback.

Signed-off-by: Aprameya <abhat@fanatics.com>
2021-06-04 08:59:41 -04:00
Jari Kolehmainen a411f4cfe5 Cleanup cluster views on unmount (#2961)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2021-06-04 08:51:41 -04:00
Lauri Nevala 573a635e29 Fix app crash when logTabData does not exist in store (#2959)
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
2021-06-04 08:51:11 -04:00
Lauri Nevala 9852e5cfd8 Implement extensions API for workloads overview details (#2945)
* Implement extensions API for workloads overview details

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>

* Prefix workloadsOverviewDetailItems

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>

* More renaming

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>

* Add missing registry

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
2021-06-04 15:14:45 +03:00
Sebastian Malton deaf67b30b Remove isClusterScoped from ItemListLayout (#2743)
* remove isClusterScoped from ItemListLayout

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Move <NamespaceSelectFilter> to KubeObjectListLayout

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* revert to simpler NamespaceSelectFilter fix

Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-06-04 12:58:12 +03:00
Sebastian Malton 0d0c67f13f Update docs to be correct with the new api changes (#2916)
* Update docs to be correct with the new api changes

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Fix renderer-extension.md

Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-06-04 12:44:25 +03:00
Violetta 3acc7b80d7 Add labels to metrics graph (#2931)
Signed-off-by: vshakirova <vshakirova@mirantis.com>
2021-06-03 09:20:40 -04:00
Jari Kolehmainen 39149eedfd Improve how kubernetes cluster status is resolved (#2909) 2021-06-03 08:43:08 -04:00
Jari Kolehmainen 0ad44d6f40 Show entity kind on catalog browse-all list (#2932)
* show entity kind on catalog browse-all list

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* cleanup

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2021-06-03 15:15:10 +03:00
Jari Kolehmainen e7086a66d1 update react-select types (#2930)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2021-06-02 21:15:30 +03:00
Sebastian Malton 043f411ad1 Fix getReleases returning inconsistent data types (#2924) 2021-06-01 11:53:24 -04:00
Jari Kolehmainen 06612409ef Fix ClusterView bugs (#2928)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2021-06-01 09:32:42 -04:00
Lauri Nevala e1be10b74d Expose NamespaceSelectFilter component to Extensions API (#2934)
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
2021-06-01 09:05:41 -04:00
Sebastian Malton 5fd2d5501c Add notification in renderer if lens protocol handler fails to find any routes (#2787)
- Add notifications on missing lens:// handlers, and invalid URIs

- add notifications on unknown entity IDs

Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-06-01 08:28:38 -04:00
Sebastian Malton 36e8888ecb Improve loading animation when switching release details (#2367)
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-05-31 16:43:08 -04:00
Jari Kolehmainen 18e38223d4 Use in-tree extension tgz package only in production builds (#2915)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2021-05-31 15:36:24 +03:00
Jari Kolehmainen cd96842750 Typed catalog category events (#2812)
* typesafe catalog category events

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* use emit

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* rename events

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2021-05-31 08:09:57 +03:00
Jari Kolehmainen c8e2f7ca2d Fix main->renderer catalog entity sync issue (#2902)
* fix main->renderer catalog entity sync issue

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* refactor

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2021-05-31 08:09:16 +03:00
Sebastian Malton 972d2f9a01 Use type-fest's TypedArray for ReadableWebToNodeStream (#2899)
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-05-28 09:38:59 -04:00
Violetta 23dadaa1a1 Show all pod addresses (#2841)
Signed-off-by: vshakirova <vshakirova@mirantis.com>
2021-05-28 09:14:09 -04:00
Sebastian Malton 847ba3f8eb Fix: don't remove clear all of groupKinds when running disposer (#2835) 2021-05-28 09:10:01 -04:00
Sebastian Malton 9f1e262310 Upgrade to typescript 4.3 (#2894) 2021-05-28 08:41:27 -04:00
Lauri Nevala b322d13d47 Fix BaseRegistry's items observable map (#2889)
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
2021-05-28 15:01:18 +03:00
Roman 643b0d861f Fix: cluster commands disappeared from Command Palette (#2886)
* Cluster commands disappeared from Command Palette, close #2760

Signed-off-by: Roman <ixrock@gmail.com>

* refactoring: get rid of ClusterStore.active && ClusterStore.activeCluster (managed via catalog's entity)

Signed-off-by: Roman <ixrock@gmail.com>
2021-05-28 14:06:18 +03:00
Jari KolehmainenandSebastian Malton d0dbb8744c Expose more catalog apis to renderer extensions (#2885)
* Rework extension API into parts

- Main, Common, and Renderer

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* expose more catalog apis to renderer

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* move common things to common

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* cleanup

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* cleanup

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

Co-authored-by: Sebastian Malton <sebastian@malton.name>
2021-05-28 13:31:06 +03:00
Sebastian Malton df1f6e128e Rework extension API into parts (#2879)
* `Main`, `Common`, and `Renderer`
* move registry types to Common.Types

Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-05-27 14:56:33 -04:00
Lauri Nevala db54a658a2 Fix Navigation.navigate to work with fragments (#2890) 2021-05-27 14:33:19 -04:00
Sebastian Malton 8b352f6c6b fix regression from #2260 (#2891)
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-05-27 10:46:15 -04:00
Sebastian Malton 6104572fea Cleanup pod log store (#2260)
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-05-27 10:13:24 -04:00
Sebastian Malton 652319ac89 Refactor PrometheusProviders (#2707) 2021-05-27 09:50:18 -04:00
Violetta 6cee819c8b Show all node resources in node view (#2861)
Signed-off-by: vshakirova <vshakirova@mirantis.com>
2021-05-27 08:52:35 -04:00
Sebastian Malton 81a35737fd Fix spelling and grammar in Ipc docs (#2880)
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-05-27 08:12:53 -04:00
Sebastian Malton 57c87a2e71 Change where extension IPC is exported (#2845)
- Fix documentation and guide
2021-05-26 17:10:39 -04:00
Patrick J. McNerthney c9e0aa221a Ingress and PersistentVolumeClaims metrics need to also be (#2443)
filtered and grouped by namespace, in addition to ingress.

Signed-off-by: Patrick J McNerthney <pat@mcnerthney.com>
2021-05-26 16:51:44 +03:00
Jari Kolehmainen 4daf7f6526 Timeout shell env sync (#2874)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2021-05-26 15:17:10 +03:00
Jari Kolehmainen 0466971a6c Preload pods/events on nodes page (#2870)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2021-05-25 18:54:38 -04:00
Jari Kolehmainen 96c3d8d3f5 Shorter kubeconfig-sync file label (#2853)
* shorter kubeconfig-sync file label

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* fix tests

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2021-05-25 20:09:04 +03:00
Sebastian Malton 73b5d30692 Show event last-seen column in addition to age (#2820) 2021-05-25 10:34:28 -04:00
Sebastian Malton 45d74b8c3a Remove getOrDefault from ExtendedObservableMap (#2836)
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2021-05-25 09:20:26 -04:00
Alex Andreev 353a166b1e Fix Extensions browse icon onClick event (#2855)
* Fix browse icon onClick event

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Moving material-tooltip folder up to ./components

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
2021-05-25 14:47:40 +03:00
RomanandJari Kolehmainen 2c3b510997 Mobx-6 migration (#2718)
* mobx-6 migration -- part 1

Signed-off-by: Roman <ixrock@gmail.com>

* mobx-6 migration -- part 2 (npx mobx-undecorate --keepDecorators)

Signed-off-by: Roman <ixrock@gmail.com>

* mobx-6 migration -- part 3 (more fixes)

Signed-off-by: Roman <ixrock@gmail.com>

* unwrap possible observables from IPC-messaging

Signed-off-by: Roman <ixrock@gmail.com>

* mobx-6 migration -- remove @autobind as class-decorator

Signed-off-by: Roman <ixrock@gmail.com>

* mobx-6: replacing @autobind() as method-decorator to @boundMethod

Signed-off-by: Roman <ixrock@gmail.com>

* mobx-6: use toJS()-wrapper since monkey-patching require(mobx).toJS doesn't work

Signed-off-by: Roman <ixrock@gmail.com>

* removed `@observable static`

Signed-off-by: Roman <ixrock@gmail.com>

* use {useDefineForClassFields: true} in tsconfig.json

Signed-off-by: Roman <ixrock@gmail.com>

* remove ExtendedObservableMap

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* fix: removed makeObservable(this) from "terminal-tab.tsx"

Signed-off-by: Roman <ixrock@gmail.com>

* storage-helper refactoring

Signed-off-by: Roman <ixrock@gmail.com>

* normalize usages of #observable-value.toJSON() / attempt to catch the wind

Signed-off-by: Roman <ixrock@gmail.com>

* refactoring, more possible branch fixes + lint

Signed-off-by: Roman <ixrock@gmail.com>

* debugging cluster-view error -- part 1

Signed-off-by: Roman <ixrock@gmail.com>

* fix: refreshing cluster-view on ready

Signed-off-by: Roman <ixrock@gmail.com>

* fix: various app-crashes related to KubeObject.spec.* access from "undefined"
fix: config-map-details crash

Signed-off-by: Roman <ixrock@gmail.com>

* fix: namespace-store refactoring / saving selected-namespaces to external json-file

Signed-off-by: Roman <ixrock@gmail.com>

* fix: don't cache mobx.when(() => this.someObservable) cause might not work as expected due later call of makeObservable(this) in constructor

Signed-off-by: Roman <ixrock@gmail.com>

* fix: app-crash on editing k8s resource

Signed-off-by: Roman <ixrock@gmail.com>

* fix: restore "all namespaces" on page reload

Signed-off-by: Roman <ixrock@gmail.com>

* - fix: persist table-sort params and cluster-view's sidebar state to lens-local-storage
- new-feature: auto-open main-window's devtools in development-mode (yes/no/ugly?)

Signed-off-by: Roman <ixrock@gmail.com>

* fix: crd definition details -> crashing with <AceEditor mode="json"> (added missing mode-file in ace-editor.tsx)

Signed-off-by: Roman <ixrock@gmail.com>

* fix: crd definitions -> groups selector couldn't deselect last selected option

Signed-off-by: Roman <ixrock@gmail.com>

* refactoring: extensions-api exports clarification for "@k8slens/extensions"

Signed-off-by: Roman <ixrock@gmail.com>

* fix: various app-crashes related to kube-events (events page, some details page, overview, etc.)

Signed-off-by: Roman <ixrock@gmail.com>

* Reverted "use {useDefineForClassFields: true} in tsconfig.json" (various app-crash fixes)
This flag seems to be not possible to use with class-inheritance in some cases.

Example / demo:
`KubeObject` class has initial type definitions for the fields like: "metadata", "kind", etc.
and constructor() has Object.assign(this, data);
Meanwhile child class, e.g. KubeEvent inherited from KubeObject and has it's own extra type definitions for underlying resource, e.g. "involvedObject", "source", etc.

So calling super(data) doesn't work as expected for child class as it's own type definitions overwrites data from parent's constructor with `undefined` at later point.

Signed-off-by: Roman <ixrock@gmail.com>

* master-merge lint-fixes

Signed-off-by: Roman <ixrock@gmail.com>

* catalog.tsx / catalog-entities.store.ts refactoring & fixes

Signed-off-by: Roman <ixrock@gmail.com>

* fix: Catalog -> Browse all tab

Signed-off-by: Roman <ixrock@gmail.com>

* fix: CommandPalette doesn't appear from global menu by click/hotkey

Signed-off-by: Roman <ixrock@gmail.com>

* - Merging interfaces & classses to avoid overwriting fields from parent's super(data)-call with Object.assign(this, data). Otherwise use "declare" keyword at class field definition.

- Revamping {useDefineForClassFields: true} to avoid issues with non-observable class fields in some cases (from previous commit):

```
@observer
export class CommandContainer extends React.Component<CommandContainerProps> {
  // without some defined initial value "commandComponent" is non-observable for some reasons
  // when tsconfig.ts has {useDefineForClassFields:false}
  @observable.ref commandComponent: React.ReactNode = null;

  constructor(props: CommandContainerProps) {
    super(props);
    makeObservable(this);
  }
```

Signed-off-by: Roman <ixrock@gmail.com>

* update KubeObject class type definition

Signed-off-by: Roman <ixrock@gmail.com>

* clean up / responding to comments

Signed-off-by: Roman <ixrock@gmail.com>

* fix: app-crash when navigating to catalog from active cluster-view, refactoring `catalog-entity-store`

Signed-off-by: Roman <ixrock@gmail.com>

* catalog-pusher clean up, replaced .observe_() to external observe() helper from "mobx"

Signed-off-by: Roman <ixrock@gmail.com>

* fix: catalog's items stale/non-observable (after connection to the cluster status still "disconnected"), lint-fixes

Signed-off-by: Roman <ixrock@gmail.com>

* fix: Catalog is empty after closing main-window and re-opening app from Tray

Signed-off-by: Roman <ixrock@gmail.com>

* fix: HotBar's icon context menu items non-observable (no "disconnect cluster", etc.)

Signed-off-by: Roman <ixrock@gmail.com>

* lint-fix/license check

Signed-off-by: Roman <ixrock@gmail.com>

* fix: redirect to catalog when disconnecting active cluster

Signed-off-by: Roman <ixrock@gmail.com>

* fix: refresh visibility of active cluster-view on switching from hotbar/catalog

Signed-off-by: Roman <ixrock@gmail.com>

* updated package.json for built-in extensions to use "*" version for packages served from main app

Signed-off-by: Roman <ixrock@gmail.com>

* - added missing makeObservable(this) to metrics-settings.tsx
- updated package-lock.json for built-in extensions
- lint fixes

Signed-off-by: Roman <ixrock@gmail.com>

* master-merge clean up fix, updated package-lock.json for built-in extensions after `make clean-extensions && make build-extensions`

Signed-off-by: Roman <ixrock@gmail.com>

* fix unit-tests

Signed-off-by: Roman <ixrock@gmail.com>

* master-merge fixes

Signed-off-by: Roman <ixrock@gmail.com>

* make lint happy

Signed-off-by: Roman <ixrock@gmail.com>

* reverted some changes, removed auto-opening devtools in dev-mode

Signed-off-by: Roman <ixrock@gmail.com>

* merge fixes

Signed-off-by: Roman <ixrock@gmail.com>

* master-merge conflict fixes:
- proper handling and navigating into catalog's active category via URL-builder

Signed-off-by: Roman <ixrock@gmail.com>

* reverting splitted params for catalog's page route to "/catalog/:group?/:kind?"

Signed-off-by: Roman <ixrock@gmail.com>

* clean-up: remove app's injecting dependencies from `extensions/kube-object-event-status/package.json`

Signed-off-by: Roman <ixrock@gmail.com>

* master-merge fix: added missing makeObservable(this) for extensions.tsx

Signed-off-by: Roman <ixrock@gmail.com>

* fix: catalog entity context menu stale/unobservable

Signed-off-by: Roman <ixrock@gmail.com>

Co-authored-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2021-05-25 10:24:31 +03:00
Jari Kolehmainen 0c45dd807e Fix openlens svg logo (#2857)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2021-05-24 14:52:03 +03:00
Jari KolehmainenandAlex Andreev e033122baf Add icon column to catalog list (#2852)
* add icon column to catalog list

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* Create generic Avatar component

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

Co-authored-by: Alex Andreev <alex.andreev.email@gmail.com>
2021-05-24 13:48:45 +03:00
Alex Andreev 0899ace037 Restyling extensions page with tailwindcss (#2796)
* Setting up tailwind and css modules env

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Using tailwind with scss files also

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Introducing react-table

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Spread extensions to smaller components

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Add table sorting

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fixing inputs line-height

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fine-tuning page view

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Align table rows

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Adding extension notice

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fine-tuning overall styling

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Adding a extensions placeholder

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Updating MaterialIcons font

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Aligning not found state

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Making extension components observable

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fixing search input cross icon

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fix drag-n-drop indication

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fixing extension name sorting

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fix linter

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fixing tests

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Ignoring ts files to tailwind purge

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Cleaning up

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Renaming Table -> ReactTable

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fixing integration tests

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Moving tailwind imports into app.scss

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Moving userExtensionList() out from extension-loader

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Transform extension list to array

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Expand install input placeholder a bit

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
2021-05-23 15:15:42 +03:00