Commit Graph

321 Commits

Author SHA1 Message Date
Sergei Garin
37cc980082
Offline Mode Support (#10317)
#### Tl;dr
Closes: enso-org/cloud-v2#1283
This PR significantly reimplements Offline mode

<details><summary>Demo Presentation</summary>
<p>


https://github.com/enso-org/enso/assets/61194245/752d0423-9c0a-43ba-91e3-4a6688f77034


</p>
</details>

---

#### Context:
Offline mode is one of the core features of the dashboard. Unfortunately, after adding new features and a few refactoring,  we lost the ability to work offline.
This PR should bring this functionality back, with a few key differences:
1. We require users to sign in before using the dashboard even in local mode.
2. Once a user is logged in, we allow him to work with local files
3. If a user closes the dashboard, and then open it, he can continue using it in offline mode


#### This Change:
What does this change do in the larger context? Specific details to highlight for review:
1. Reimplements `<AuthProvider />` functionality, now it implemented on top of `<Suspense />` and ReactQuery
2. Reimplements Backend module flow, now remote backend is always created, You no longer need to check if the RemoteBackend is present
3. Introduces new `<Suspense />` component, which is aware of offline status
4. Introduce new offline-related hooks
5. Add a banner to the form if it's unable to submit it offline
6. Refactor `InviteUserDialog` to the new `<Form />` component
7. Fixes redirect bug when the app doesn't redirect a user to the dashboard after logging in
8. Fixes strange behavior when `/users/me` could stuck into infinite refetch
9. Redesign the Cloud table for offline mode.
10. Adds blocking UI dialog when a user clicks "log out" button

#### Test Plan:
This PR requires thorough QA on the login flow across the browser and IDE. All redirect logic must stay unchanged.

---
2024-06-21 07:14:40 +00:00
somebody1234
b5641aa3bd
Fix various issues on the Dashboard (#10256)
- Fix React DevTools not working in Firefox
- Fix selection of asset names when editing them, not working at all in Firefox
- Convert tick/cross buttons when editing assets, and the "plus" and "reload" buttons on the "shared with" column, "labels" column, and keyboard shortcuts table, to match more with the rest of the design
- Update clip path when the container resizes, so that the icons for hidden columns never overlap the actual table header
- Fix #10184
- Fix renames being committed even when cancelling
- Fix duplicate name detection - previously, all asset types only checked folders with the same name, not assets with the same name
- I'm not 100% sure this is the correct behavior still
- Stop using `kbd` (`aria.Keyboard`) to display keyboard shortcuts, since they should not be displayed in a monospace font.
- Fix "plus" and "reload" buttons going past the right side of their parent table cell
- Limit length of `PermissionDisplay` - if the username of a user with permission is too long, it uses a tooltip instead
- Update the username dynamically for all permissions owned by self, when changing username in the settings.
- This avoids having to fully invalidate the directory tree every time the username changes, given that nothing changes about the assets' metadata themselves.
- Cache children in the Drive tree
- This avoids loading spinners when closing a folder and immediately reopening it.
- Note that children are still re-fetched on reopen to ensure freshness

# Important Notes
- This MAY be split into multiple smaller PRs. However, I think it's better to QA as a single PR, to avoid duplicating work checking behavior that may be changed by a sibling PR (assuming the PR was split into multiple).
2024-06-20 18:30:24 +00:00
somebody1234
83ec24da59
Refactor E2E tests for Dashboard; add E2E tests for User and Organization settings pages (#10031)
- PARTIALLY implements https://github.com/enso-org/cloud-v2/issues/1232
- Partially refactor E2E test actions into a state machine.
- The main goal of this is to _disallow_ invalid actions - for example going from a page to itself, which will fail at runtime, or trying to create a new Data Link on a page where that button is not accessible.
- An auxiliary goal is to have better namespacing of actions and better clarity:
- Previously, everything was a locator at the top level of a single module. This makes it very difficult to comprehend what kinds of actions are available.
- Note: There is also older `namespace`-based namespacing for the User and Organization settings pages, which were added before this refactor. They SHOULD be refactored to the new API, but I'm not sure whether it's worth spending the time right now.
- Add E2E tests for every input on the "user" settings page and the "organization" settings page.
- A skeletal E2E test for the Datalink modal has also been added - it does not actually test anything currently but should be sufficient for building upon.

# Important Notes
None
2024-06-20 16:19:01 +00:00
Sergei Garin
c5853e0ffc
Paywalls for User invites, sharing, and group management (#10203)
#### Tl;dr
This PR adds paywalls for Invites, Sharing, Members settings, and User Group settings

<details><summary>Demo Presentation</summary>
<p>
2024-06-20 14:51:43 +00:00
Sergei Garin
7204b912ce
Imrpove BG rendering (#10219)
<details><summary>Difference</summary>
<p>

The difference isn't significant, but noticeable

| Before | After |
|--------|--------|
| ![Before](https://github.com/enso-org/enso/assets/61194245/b35f2ee2-9e9d-4f42-9f0d-fa722373489c) | ![After](https://github.com/enso-org/enso/assets/61194245/a241e1c9-089a-4760-bcfc-133f4d9535c1)
|

</p>
</details>
2024-06-20 09:21:25 +00:00
somebody1234
ccfeac1c02
Move to the Tab layout for Dashboard (#9918)
⚠️ This PR depends on #9896 and MUST NOT be merged before that one.

- Close #9898
- Move right menu to Drive View
- Use new icon for toggling the menu
- Move Search Bar into Drive View
- both of these changes come with free simplifications to the code.
- Refactor entire Top Bar to show pages as tabs
- Fix https://github.com/enso-org/cloud-v2/issues/1301
- Remove grey background from arrow icon visible when hovering over directory rows

# Important Notes
- Fonts containing slight variants have been added to make it match more closely with the Figma design. HOWEVER:
- They have been added in `app/gui2` instead of the Dashboard codebase, because that is where the existing Enso font is located.
- While it's definitely possible to put them in the Dashboard codebase, I think it's preferable to avoid that, otherwise we will have two separate mechanisms for loading/packaging fonts.
- However, this problem SHOULD go away if (if not when) the entrypoints for the desktop app (in `app/gui2`) and cloud.enso.org (in `app/ide-desktop/lib/dashboard`) are merged.
2024-06-19 15:24:11 +00:00
Sergei Garin
0b4ea9a9fe
Fix broken MembersTable (#10300) 2024-06-17 16:15:20 +03:00
Sergei Garin
20998e30b0
Fix tooltips and Start Modal (#10294) 2024-06-16 19:51:37 +03:00
Sergei Garin
04551f4b8a
Initial Support for paywalls (#10202)
This PR introduces:
1. Set of Paywall components: PaywallButton, PaywallDialog
2. Adds Devtools
3. Implement Paywall Configuration

This PR partially depends on https://github.com/enso-org/enso/pull/10199
2024-06-16 13:57:17 +00:00
Sergei Garin
1b7b24f1b8
Fix suspence query error (#10257) 2024-06-16 11:21:27 +03:00
somebody1234
b053ab53e2
Dashboard hotfixes (#10271)
- Fix the appearance of the `tertiary` button variant
- Fix spinner for projects that are opening being misaligned by 1px
- Fix appearance of "Login with Google" and "Login with GitHub" icons in the Login page
- Fix #10279
- Switch to Local tab when on desktop app and user does not have an active plan

# Important Notes
None
2024-06-13 16:57:50 +00:00
somebody1234
46f6b4f698
Update dashboard to design v122 (Part 1) (#9896)
- Close #9886
- Update style of buttons in Drive Bar
- Move "Home" page into a "Start" dialog
- Remove icons that are no longer needed
- Remove Backend Switcher in top bar - they have now been converted to categories

- Incidental changes
- Refactor Backend provider so that both Remote and Local backends are available.
- This was done because both Cloud and Local backends are now easily accessible by switching tabs - the Local backend no longer has its own views with the hidden category switcher

# Important Notes
None
2024-06-12 10:20:07 +00:00
Sergei Garin
6e307d5fc9
Improve styling system of some components. Now it's much easier to reuse styling across the project (#10230) 2024-06-11 13:29:11 +03:00
Sergei Garin
f12e985b3a
Fix auth refresh in certain edge cases (#10218)
This PR should fix a bug when session doesn't refresh when a computer comes back from sleep mode
2024-06-10 17:21:36 +00:00
Sergei Garin
7744e8b464
Remove Chat Placeholder when chat is hidden (#10209) 2024-06-07 11:58:50 +00:00
Sergei Garin
ed9651fc2b
Fix button sizes (#10208)
This PR fixes button sizes and fixes a nasty bug with popover
2024-06-07 11:05:05 +00:00
Sergei Garin
f74c79048e
Make Settings Sidebar a bit dimmer (#10201)
https://github.com/enso-org/enso/assets/61194245/98eaac8b-2284-4b98-a8f8-a9fe19d3227b


This PR partially depends on https://github.com/enso-org/enso/pull/10199
2024-06-07 09:28:36 +00:00
Sergei Garin
0f7bae3177
Add declarative api to invalidate queries in mutations (#10200)
In this PR:

1. We added support to declaratively invalidate queries after making a mutation
2. We pull ReactQueryDevtools up in the component tree to make it available during dashboard loading

Also, this PR removes some rules in eslint
2024-06-07 09:24:25 +00:00
Sergei Garin
7a20bdc82f
Refactors of Dialogs, Popover styles, button sizes and Text (#10199)
In this PR:

1. Now button has proper sized icons, size of the button is also alighned with the grid
2. Migrate ResizableTextContentEditableInput to Text component
3. Migrate Dialog to variants API
4. Did another attemt to make text more reusable. Now instead of using paddings, we use ::before and ::after to make text better aligned inside a grid
2024-06-07 08:10:11 +00:00
Paweł Grabarz
b0589d267d
Implement new design for tooltips in GUI (#10172)
Fixes #10088, #10154

Implemented figma tooltip design through Vue components and store. Attached tooltips to all existing SVG buttons, based on assigned label property.


https://github.com/enso-org/enso/assets/919491/85f5fef7-c6df-471b-b544-b45f45f4f51e

# Important Notes
Removed all usages of `v-bind` in styles due to issues during hot reloading when updating stores. The internal CSS binding composable sometimes crashes when the component is being unmounted due to hot reload.
2024-06-07 01:48:11 +00:00
Sergei Garin
4beded2438
Refactor Stripe integration (#10191)
This PR improves intergration with Stripe functionality:

1. Moves Stripe into a separate provider
2. Add bakn card component extracted into a separate component
2024-06-06 14:36:41 +00:00
Sergei Garin
d21140e422
Small refinements across dashboard components (#10188)
This PR:

1. Improves typography across the components
2. Refactors Terms of service modal to `<Field />` component
3. Changes the way we render background for modals (we no longer need ::before and relative hacks)
4. Adds ability to nest `<Text />` components and remove paddings of the nested text elements. this is helpful if we want to change styling of a particular word inside the text or we want to display 2 text nodes closer to each other
5. Remove timeot before showing a tooltip on button elements.
2024-06-06 08:59:48 +00:00
Sergei Garin
149a2c8965
Radio and RadioGroup components (#10178)
This PR adds 2 new components:
1. Radio
2. RadioGroup

Also makes Form 99% feature-complete

This shall be merged after https://github.com/enso-org/enso/pull/10176
2024-06-05 13:19:33 +00:00
Sergei Garin
e6ecaff4c4
Improve Dialog behavior (#10176)
This PR improves the DX and UX of dialogs/popovers:
1. Now the content is wrapped in `<Suspense />` and `<ErrorBoundary />`
2. Dialogs no longer close if they are underlay below the other dialogs
3. Provides an ability to close the dialog underlay component using dialog context
2024-06-05 10:41:40 +00:00
Sergei Garin
4e92d784e2
Don't hide visual tooltip when mouse goes from target to tooltip (#10177) 2024-06-05 09:05:33 +00:00
Sergei Garin
448272a2f9
Fetch EULA in background if user already accepted it (#10153) 2024-06-03 17:15:37 +03:00
Sergei Garin
6adf590d9f
Improve Form typings (#10119)
This PR improves ergonimics and typesafety when using new Form component.
Also it passes validation state into react-aria-components
2024-06-03 09:03:12 +00:00
Sergei Garin
28655e13d7
Frontend adjustments for Stripe refactoring (#10054)
#### Tl;dr
Closes: enso-org/cloud-v2#1185
This PR changes endpoints according to the comment left by @PabloBuchu: https://github.com/enso-org/cloud-v2/issues/1185#issuecomment-2114606101


#### This Change:
Changes endpoint names and fixes subscription flow

---
2024-05-31 09:59:25 +00:00
somebody1234
c94507dd3b
Duplicate and restore project (#9816)
- Close https://github.com/enso-org/cloud-v2/issues/943
- Add buttons in "versions" tab on the right hand side panel to restore and duplicate projects.

# Important Notes
- There is an UI issue when restoring a project - the placeholder UI is removed one render tick later than the "list versions" query is refetched, so an extra version appears for one frame.
2024-05-30 09:30:42 +00:00
Sergei Garin
20ff1258cd
Implement Text component (#10049)
This PR provides basic support for `<Text />` component. It allows customization of visual states, weight, truncate, displays a tooltip if text overflows(automatically!)


https://github.com/enso-org/enso/assets/61194245/dee2b0d2-3d83-4958-8066-9522dfb98510
2024-05-28 10:56:40 +00:00
Paweł Grabarz
8edf49343f
Expose cloud event logging endpoint to GUI and render GUI editor as react component. (#9951)
fixes #9730

Added a `logEvent` method to remote backend implementation in dashboard. Added an always-present remote backend instance that can be used for logging even when running a local project (intentional behavior).

# Important Notes
Because the backend implementation requires access to always fresh session token, the logger needs to be periodically updated on GUI side, so it can continue to function. To accomplish that, I simplified the app loading logic to treat GUI as an ordinary react component, so its props can be updated with normal react rendering flow. That refactor also removed the dynamic GUI asset loading code that was only needed for Rust GUI.
2024-05-27 17:32:42 +00:00
Sergei Garin
384f7ec5c8
Improve tooltip visuals according to new design (#10074)
#### Tl;dr
Closes: enso-org/cloud-v2#1257
---

![CleanShot 2024-05-24 at 16 23 09](https://github.com/enso-org/enso/assets/61194245/90c25ad8-8079-4cde-a4aa-55d03c6a9389)
2024-05-27 09:32:10 +00:00
Sergei Garin
39098e2c26
Improve tooltip visuals (#10045) 2024-05-23 12:09:46 +03:00
Sergei Garin
5ed5c71e93
New Terms of Service Dialog (#9975)
#### Tl;dr
Closes: enso-org/cloud-v2#1228
This PR adds a new DIalog that requires user to submit terms and conditions

![CleanShot 2024-05-16 at 16 44 52@2x](https://github.com/enso-org/enso/assets/61194245/02814557-e7b3-4e4a-9148-2f8be52c0858)


<details><summary>Demo Presentation</summary>
<p>
2024-05-23 07:53:55 +00:00
somebody1234
d4ef04bc52
Redirect to browser for user registration (#10000)
- Close https://github.com/enso-org/cloud-v2/issues/1224
- Redirect from desktop app to browser for registration

# Important Notes
None
2024-05-23 06:19:45 +00:00
Sergei Garin
58ae73dc78
Improve Invitation flow (#9928)
#### Tl;dr
Closes: enso-org/cloud-v2#1186
This PR significantly improves the invitation UX and add ability to view/resend/copy/delete invitations

<details><summary>Demo Presentation</summary>
<p>


https://github.com/enso-org/enso/assets/61194245/62124243-50ce-47e1-bcac-789463b5e755


</p>
</details>

---

#### Context:



#### This Change:
What the change does in the larger context? Specific details to highlight for review:
1. Redesign the Invitation dialog
2. Add the ability to edit emails after typing ` `
3. Adds ability to use different separators: `<space>`, `<semicolon>`, `<colon>` or `<newline>`
4. Shows Invitation on the `members` page in settings.
5. Adds ability to remove, resend, copy or delete invitations
6. Improve the UI of dialogs, buttons

#### Test Plan:
Go over how you plan to test it. Your test plan should be more thorough the riskier the change is. For major changes, I like to describe how I E2E tested it and will monitor the rollout.

---
2024-05-22 18:26:02 +00:00
Sergei Garin
91a2afb098
Fix broken login flow (#9965)
* kill the electron process instead of restarting

limit the port range with single one

Make ENSO_CLOUD_REDIRECT optional, use window.location.origin by default

* Revert server changes

* limit the amount of ports in server
2024-05-22 16:56:42 +03:00
Sergei Garin
1991aab19d
Form Component (#9995)
This PR provides initial support for `Form` component and is supposed to be a first step in the long run.
Over the next iterations, we're going to continue adding new features that support `<Form />` out of the box(inputs, checkboxes, and so on)

Current PR is focused on providing the first version of Form component

As a tech stack, we chose:
1. `react-hook-form` for being mature and feature-complete and performant
2. Zod as validation library instead of ajv(that is present in the project already) for smaller bundle size, simpler and ts-friendly configuration, and better support
2024-05-20 13:53:38 +00:00
Sergei Garin
8e403fb0f2
Remove access without account (#9987)
Closes: https://github.com/enso-org/cloud-v2/issues/1229

This PR removes button "Continue without creating an account" on Login page.
Aslo, This PR removes weird behaivor when dashboard goes into offline mode in canse if network error is happening
2024-05-20 08:50:43 +00:00
Sergei Garin
55d43a3d8a
Rename Connector to Datalinks (#9948)
#### Tl;dr
Closes: enso-org/cloud-v2#1132
This PR renames Connector to Datalink

---

#### Test Plan:
Everything should work as before,  but instead of sending `connectorId` we send `dataLinkId` and endpoint now is `/datalink`

---
2024-05-20 08:45:55 +00:00
Sergei Garin
c5a91a63fe
Add tanstack query devtools (#9991)
This PR adds tanstack devtools to debug react query queries


https://github.com/enso-org/enso/assets/61194245/6898de33-cf9a-4077-9fdd-7b710484a94b


Also, this PR provides a way to download dev tools in Production
2024-05-18 06:50:28 +00:00
somebody1234
f0411766fa
Add "About app" modal (#9833)
- Close #9433
- Add modal displaying version info of the app

# Important Notes
None
2024-05-14 14:00:00 +00:00
Sergei Garin
2ed83f2fb5
Send Payment method id in checkout session (#9932) 2024-05-13 13:43:34 +00:00
Sergei Garin
9f4b374485
Implement Subscribe flow (#9776) 2024-05-10 12:28:49 +00:00
somebody1234
35571f64ba
Add tooltips (#9899)
- Dashboard side of #9828
- Add tooltips for elements rendered by the Dashboard

# Important Notes
- The UI for the tooltips can be changed at any time.
2024-05-10 08:17:06 +00:00
somebody1234
65179fbd98
"User groups" settings page (#9081)
- Close https://github.com/enso-org/cloud-v2/issues/907
- Add a settings page for listing groups
- Add users list with drag-n-drop into user groups
- Show users below user groups
- Add delete button for users and user groups

Other changes:
- Add delete button for users on "Members" settings page. Note that it currently does not work as corresponding backend functionality is missing.

# Important Notes
None
2024-05-09 12:04:35 +00:00
Sergei Garin
077b6547a9
Fix Invite flow (#9890) 2024-05-08 18:07:32 +03:00
somebody1234
5721760a1c
Fixes for local backend (#9850)
- Mostly fix #9817
- Fix creating directories at the top level in Local Backend
- Allow renaming files and directories in Local Backend
- Fix opening a template when a project is already open, causing both projects to be open. (Normally only one project should be open at a time)
- Hidden files cannot be hidden as the dashboard does not yet have the required information.

- Fix issue with selection. To reproduce on develop:
- Begin editing an asset's name
- Drag to select text in the input
- Continue dragging *past* the bounds of the input.
- Release mouse
- Observe that the selection collapses into a mouse cursor.
- (Note: this behavior should no longer happen on this branch, only on develop).

# Important Notes
None
2024-05-06 07:43:11 +00:00
somebody1234
82b0c1f4e8
Minor fixes to UX for Data Link input (#9857)
- Make object keys fixed width again
- Fix bug causing autocomplete to re-appear the first time after selecting an option
- Allow modal to grow wider to better show long inputs (e.g. long secret paths)

# Important Notes
None
2024-05-06 07:42:39 +00:00
Dmitry Bushev
5995a00958
Run ydoc-server with GraalVM (#9528)
part of #7954

# Important Notes
The workflow is:
- `$ npm install` -- just in case
- `$ npm --workspace=enso-gui2 run build-ydoc-server-polyglot` -- build the `ydocServer.js` bundle
- `$ sbt ydoc-server/assembly` -- build the ydoc server jar
- `env POLYGLOT_YDOC_SERVER=true npm --workspace=enso-gui2 run dev` -- run the dev server with the polyglot ydoc server. Providing `POLYGLOT_YDOC_SERVER_DEBUG=true` env variable enables the chrome debugger
2024-05-02 06:28:57 +00:00