Commit Graph

1226 Commits

Author SHA1 Message Date
Adam Obuchowicz
0f6b29c88f
Make background clicks less flaky (#10069)
We had some false test failures: https://github.com/enso-org/enso/actions/runs/9178969067/job/25240028635

The problem was the connection, which, while not being completely broken, still wasn't updated to proper position, thus taking clicks meant for the background. Now, I use proper locator click, so the test should wait for click spot being clear.

Also added locator-based clicks where I felt it's proper.
2024-05-24 13:28:51 +00:00
Adam Obuchowicz
8ac0ee41c6
Allow picking non-existing files in write component (#10047)
Fixes #9984

Added a flag to `File_Browse` widget configuration specifying if we require an existing file. Also, the FileBrowserWidget will match against all "Writable_File", also displaying Save dialog.
2024-05-24 09:21:32 +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
Adam Obuchowicz
a0a6f8c302
Tooltips (#10039)
First solution for #9828, just using HTML `title` attribute.
2024-05-23 07:52:39 +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
Kaz Wesley
dd5fa61d90
Add copy button to component messages. (#10023)
Add button to component messages that copies the message to the system clipboard.

https://github.com/enso-org/enso/assets/1047859/ab645ecd-78d6-4602-b210-9f0041f4329b

Closes #9878.
2024-05-22 16:38:21 +00:00
Adam Obuchowicz
8ba12356fe
Rename function widget (#9959)
Fixes #9790

Adds a new widget type which allows renaming the called function - if we are able to do it.
2024-05-22 15:07:39 +00:00
AdRiley
f000cf6999
Add copy2 icon (#10036)
![image](https://github.com/enso-org/enso/assets/1720119/90b0883f-cc0d-411e-8d3c-f62458243982)
2024-05-22 15:07:36 +00:00
Kaz Wesley
fcfc081851
Use group icon for components created by grouping. (#10020)
Use `group` icon for components created by grouping.

https://github.com/enso-org/enso/assets/1047859/50a0dbb6-d36e-4fcb-9f39-b6493b8cca86

See: #9831.

# Important Notes
- This PR always sets the icon, but it is not always shown due to missing updates from the backend; this issue is currently being investigated.
2024-05-22 14:38:21 +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
AdRiley
202a05011b
Added bold-italic-strikethrough (#10030) 2024-05-22 10:56:37 +01:00
Kaz Wesley
1633965173
CB self icons (#10006)
In the component browser input field, render the source node as an icon instead of its identifier; an edge connects the icon to the source node's output port.

https://github.com/enso-org/enso/assets/1047859/a36a8a55-6717-4887-a72c-2b2eafde4260

Closes #9210.

# Important Notes
- Fix node selection being visible (but glitched) while editing node.
- Fix bug in CB positioning when editing a node at non-default zoom.
- Fix disconnected edge hover allowing self-connection.
- Consolidate some color logic in `nodeColors`.
2024-05-21 18:34:30 +00:00
Kaz Wesley
9601543de3
Fix adding nodes in collapsed functions (#10009)
Insert new nodes before the block's terminal expression-statement, if present.

Fixes #9963.

# Important Notes
- Fix a bug that caused any empty lines at the beginning of a module not to be printed.
- Remove a redundant data-property from `GraphNode`.
2024-05-21 17:38:51 +00:00
Kaz Wesley
e98ac01015
Prevent touchpad back gesture (#10007)
Disable back gesture, which sometimes triggers while panning with the touchpad
on OS X.
2024-05-21 11:45:50 -04:00
Kaz Wesley
aae93e6ee6
List support in documentation pane (#10008) 2024-05-21 11:41:56 -04: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
Adam Obuchowicz
65f28c322a
Icon highlight and SvgButton (#10002)
Fixes #9904

Refactored our button: the common logic of "button being an SVG icon" moved to new `SvgButton` component. Simplified and unified CSS. Added hover highlight.

![image](https://github.com/enso-org/enso/assets/3919101/40aa628c-4181-487c-a0f7-b49e06d274b8)
2024-05-20 12:59:03 +00:00
Adam Obuchowicz
c3976f727f
Fix test (#10001)
Merging as not changing GraalVM stuff.
2024-05-20 12:10:05 +01: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
Adam Obuchowicz
e13950ed0d
Display grab cursor 2 (#9982)
Fixes #9906, but the grab hand appears only when actually moving nodes.

Also changed cursor on some widgets.
2024-05-20 07:24:45 +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
Ilya Bogdanov
ff21cc4e8f
Implement new node naming (#9964)
- Closes #9829
- Name is selected from the type of the first suggestion applied in the component browser
- If no suggestion is selected, we try to infer the name from the AST
- If both fail, we revert to the `operator` name
- Adding unique number suffixes in sequential order, reusing them as soon as they become available.

https://github.com/enso-org/enso/assets/6566674/4e6bd1e5-7b11-4e04-b49f-315675d34a0f

# Important Notes
- Search through available identifiers is linear, which potentially can cause problems in huge projects.
- I made changes to the `ReactiveIndex` implementation to fix the behavior of `identifierUsed()` and `allIdentifiers()` which were not working correctly.
2024-05-17 18:06:43 +00:00
Ilya Bogdanov
1034596e5b
Fix text widget rendering (#9981)
Fixes https://github.com/enso-org/enso/issues/9688

<img width="685" alt="Screenshot 2024-05-17 at 1 24 19 PM" src="https://github.com/enso-org/enso/assets/6566674/9f30b607-7776-4acb-98b3-75c697a1b58e">
2024-05-17 16:54:45 +00:00
Ilya Bogdanov
6e9b4ec9fb
Call showAll on opening projects (#9974)
Fixes #9902


https://github.com/enso-org/enso/assets/6566674/2eb2b0dd-610a-48e7-aeb6-6c9c423746db
2024-05-17 13:32:09 +00:00
Kaz Wesley
d39451dd4d
Use Lexical for method docs and node comments (#9956)
Use a Lexical-based markdown editor in the right dock; use a Lexical-based plain text editor for node comments.
2024-05-16 14:38:03 +00:00
Kaz Wesley
8823a2aaa0
Track live selection (#9924)
* Track live selection
2024-05-16 09:24:17 -04:00
Kaz Wesley
0571000c74
Color ring updates component colors continuously (#9939)
Commit color ring selections to nodes live.

- To prevent opening the picker from immediately changing the color, gradient is rotated so that the initially-selected color is under the mouse when the picker is opened.
- Escape key reverts selection to initial color(s).

Closes #9936
2024-05-15 16:14:09 +00:00
Jaroslav Tulach
a53b2f0b18
Reverse order of stack frames and test the result (#9954)
Fixes #9934 by reversing the order of `dropInitJava` frames.
2024-05-15 09:09:36 +00:00
James Dunkerley
c437721ba5
Show ALIAS matches as <name> (<alias>) (#9955)
In order to help with discovery of the functions we want to have more ALIASes (such as select_columns) on associated functions. To make it clearer what each does reversing the order helps.

![image](https://github.com/enso-org/enso/assets/4699705/55fac1fa-1307-4544-b150-dc184ddc27aa)
2024-05-14 20:17:08 +00:00
Ilya Bogdanov
557d585216
Cleanup placement unit tests (#9943)
While fixing prop test in #9916, I was surprised to see a lot of basically unused checks in unit tests. With the new API, the need for them is gone.
2024-05-14 15:58:25 +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
Ilya Bogdanov
cc8e5ae2d1
Place dropdown arrow under autoscoped identifier (#9945)
Place arrows below autoscoped identifier, also fixes issue with CSS.
2024-05-14 13:45:04 +00:00
Adam Obuchowicz
9faa1823ec
Fix visualization resizing (#9946)
* Fixes #9942
* Restores updating visualization size in metadata. Also, the height is also stored.
2024-05-14 11:49:37 +00:00
Ilya Bogdanov
52b8ed4d3a
Consider autoscoped name when looking up dynamic config (#9916)
Fixes #9635

@JaroslavTulach with this change you reproduction scenario works as it should.


https://github.com/enso-org/enso/assets/6566674/89ecaae4-c5e5-437a-8ff2-3e77ccb0a67c
2024-05-14 11:01:19 +00:00
Sergei Garin
2ed83f2fb5
Send Payment method id in checkout session (#9932) 2024-05-13 13:43:34 +00:00
Kaz Wesley
4af33f077b
Documentation editor (#9910)
#### New documentation panel:
- Shows documentation of currently-entered method.
- Open/close with Ctrl+D or the extended menu.
- Renders markdown; supports WYSIWYG editing.
- Formatting can be added by typing the same markdown special characters that will appear in the source code, e.g.:
- `# Heading`
- `## Subheading`
- `*emphasis*`
- Panel left edge can be dragged to resize similarly to visualization container.

https://github.com/enso-org/enso/assets/1047859/6feb5d23-1525-48f7-933e-c9371312decf

#### Node comments are now markdown:
![image](https://github.com/enso-org/enso/assets/1047859/c5df13fe-0290-4f1d-abb2-b2f42df274d3)

#### Top bar extended menu improvements:
- Now closes after any menu action except +/- buttons, and on defocus/Esc.
- Editor/doc-panel buttons now colored to indicate whether editor/panel is open.

https://github.com/enso-org/enso/assets/1047859/345af322-c1a8-4717-8ffc-a5c919494fed

Closes #9786.

# Important Notes
New APIs:
- `DocumentationEditor` component: Lazily-loads and instantiates the implementation component (`MilkdownEditor`).
- `AstDocumentation` component: Connects a `DocumentationEditor` to the documentation of an `Ast` node.
- `ResizeHandles` component: Supports reuse of the resize handles used by the visualization container.
- `graphStore.undoManager`: Facade for the Y.UndoManager in the project store.
2024-05-10 17:23:16 +00:00
Kaz Wesley
a14a95c057
Only Escape cancels edits (#9913) 2024-05-10 16:13:59 +00:00
Ilya Bogdanov
4376a5a851
Improve dropdown arrows placement (#9909)
Closes #9428

Hilariously tricky thing to implement. Besides placing arrows below constructor names, we also position them under values in argument placeholders.

We also added a new feature to the widget tree: the `allowAsLeaf` property. See provided documentation.

https://github.com/enso-org/enso/assets/6566674/e3ba96b3-fff8-4553-ac94-866436aea013
2024-05-10 14:38:38 +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
Adam Obuchowicz
147c1cf99f
Refactor drag handlers (#9874)
Fixes #9780

Before all drag handlers set pointer capture on their `currentTarget`, preventing click events on the actual click target, and to prevent that we stopped `pointerdown` (and more) on every "panel-like" element. Now it's ok to stop only actually handled events.

Navigator and selection handlers just ignore `pointerdown` events not targeted to actual Graph Editor background.

Node dragging is more complex, as we want to allow dragging the node by grabbing just any of its part (including widgets). So the handler takes pointer capture from widget only after a significant move (long enough in time _or_ space). **This allows user to drag nodes by many interactive widgets (before they stopped `pointerdown` disabling node drag).

[Screencast from 2024-05-08 10-45-33.webm](https://github.com/enso-org/enso/assets/3919101/d521b7a4-96c5-4e2c-a8a6-84388a18d041)
2024-05-09 12:48:58 +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
Kaz Wesley
414a2ff568
Fix color-picker single-color-graph case (#9892)
- Increase minimum gradient points
- Update property tests to match browser interpretation of increasing-hue interpolation, and catch bugs of this type.
2024-05-08 09:13:54 -07:00
Sergei Garin
077b6547a9
Fix Invite flow (#9890) 2024-05-08 18:07:32 +03:00
Michał Wawrzyniec Urbańczyk
e859be7fe1
Bump electron-builder (#9884)
Now that #9815 has landed, we can finally bump electron-builder to the latest release. As this brings in python3 support out-of-the-box, workaround of the runtime-bump on macOS runners can be removed.
2024-05-08 13:20:48 +00:00
AdRiley
f77cb0c3ba
Add random icon (#9877)
Add new random icon

![image](https://github.com/enso-org/enso/assets/1720119/f7904801-2077-448e-9086-9f6e5156fbed)
2024-05-08 07:41:39 +00:00
Michał Wawrzyniec Urbańczyk
a4f56e92aa
Custom Windows Installer & Uninstaller (#9815)
This PR introduces a new installer and uninstaller for the Windows platform.

Both are written in Rust and compiled to a single executable. The executable has no dependencies (other than what is included in the Windows), links the C++ runtime statically if needed.

The change is motivated by numerous issues with with the `electron-builder`-generated installers. The new installer should behave better, not have issues with long paths and unblock the `electron-builder` upgrade (which will significantly simplify the workflow definitions).

To build an installer, one needs to provide the unpacked application (generated by `electron-builder`) and the `electron-builder` configuration (with a few minor extensions). Code signing is also supported.
2024-05-07 16:22:11 +00:00
Kaz Wesley
01a2ca458b
Enso color picker (#9825)
New color picker, designed for Enso:

https://github.com/enso-org/enso/assets/1047859/c3eff168-6807-4825-b17b-053e3cd8b04c

- Colors never clash: OKLCH lightness and chroma are fixed.
- Easily match colors: Colors of other nodes in the current method are expanded to slices of the color wheel.

Closes #9613.
2024-05-06 17:37:13 +00:00
Kaz Wesley
36dcbf1a07
Output port changes (#9842)
* Output port changes

- Enlarge output port hover area; fix hover area extending above node
- Show ports when selection is shown
- Adjust port stroke-width and offset to match Figma
- Change cursor when output port is hovered
2024-05-06 09:36:43 -07:00
Kaz Wesley
15730afa01
Fix z-indexes (#9848)
Prevent visualizations (such as table) and visualization container (including toolbar) from drawing above widgets (such as dropdown).

![image](https://github.com/enso-org/enso/assets/1047859/ec3d67d8-b25c-491b-ad4c-3d42f82cbdc7)
Dropdown now covers visualization toolbars

![image](https://github.com/enso-org/enso/assets/1047859/4b870bf0-71d3-43e5-98d2-382cbecd8ba0)
Dropdown now covers table column resize handle

Fixes #9783
2024-05-06 13:40:04 +00:00
Adam Obuchowicz
6f802cca15
Enhanced visualization resizing (#9837)
Fixes #9702

* Added a resizer on the left side
* The resizers were moved a bit, and their position is now configurable by CSS vars: --visualization-resize-handle-inside and --visualization-resize-handle-outside of `:root` (see screencast below)

[Screencast from 2024-05-02 11-51-17.webm](https://github.com/enso-org/enso/assets/3919101/d58a0970-6994-4ac6-a55e-d77bccc6dac5)

# Important Notes
* The way I decide how to update the node position when resizing left side is a bit hacky, but I cannot think about any other way of handling minimum node's width. That unfortunately makes the right side tremble a bit when resizing the left side.
* I went against the task description regarding the resizers sizes: put 3px inside instead of 16px, because the latter made using scrollbars impossible.
2024-05-06 10:43:08 +00: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
somebody1234
25d1007a9e
Allow downloading projects on GUI dev server (#9851)
- Fixes #9482
- Add URL rewriting logic to `npm run dev` in `app/gui2/` so that "download" actions work

# Important Notes
- ⚠️ `config.yaml` HAS BEEN REMOVED in favor of `config.json`.
- Most of the keys have been removed as they were only used by GUI1.
- This is a REQUIRED change, because the vite dev server does not seem to like importing yaml files when running `vite.config.ts`.
2024-05-03 13:37:26 +00:00
Adam Obuchowicz
0186ed1961
Fix table viz context menu (#9820)
Fixes #9700

[Screencast from 2024-04-30 15-09-17.webm](https://github.com/enso-org/enso/assets/3919101/a11ae875-7e2f-4c84-8d91-33aa1ca8bdbd)

# Important Notes
During implementation, I discovered a bug that the context menu wasn't hidden by click at background (or node) - all because of preventDefault, as it turned out.
2024-05-02 11:17:13 +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
Adam Obuchowicz
7db7fa039c
Add remove nodes icon to selection menu (#9827)
![image](https://github.com/enso-org/enso/assets/3919101/29c09e74-47db-4bd5-8770-4a79b23a7cf1)
2024-05-02 05:51:54 +00:00
Shixian Sheng
c340727735
Fixed LICENSE Link. Added missing LICENSE file (#9804)
Added License to the app/gui2 folder and 2 links for it in README
2024-05-01 19:15:52 +02:00
somebody1234
d995d17dcb
Fix Google Analytics tag injection (#9819)
I missed injecting the Google Analytics tag from the environment at build time...

# Important Notes
None
2024-05-01 11:32:50 +00:00
Kaz Wesley
6655d5fbb2
Move node type to visualization container (#9784) 2024-04-30 08:55:43 -04:00
Adam Obuchowicz
04a10b72e5
Dragging edges (#9788)
Fixes #9423
2024-04-29 14:16:02 +00:00
Adam Obuchowicz
210f0482a4
Set of improvements: selection "committed" state and "add new compnent" button hitbox fix. (#9775)
1. Did selection refactoring as follow-up of #9519. Now the circular menu visibility or node extension is altered only when selection is ended (before, node shrank once the selection started a bit less blinking).

[Screencast from 2024-04-24 10-56-05.webm](https://github.com/enso-org/enso/assets/3919101/744e7579-80dd-4d44-a545-7af812239be2)

3. Fixes #9699 I don't know why the add-node button shape was done in :before element, if it happily works by shaping the main div itself.

[Screencast from 2024-04-24 10-51-57.webm](https://github.com/enso-org/enso/assets/3919101/004aede5-ea00-4e30-9a3d-6e2574e3b755)
2024-04-29 11:31:26 +00:00
somebody1234
d58b5f2a7d
Change heuristics for showing missing .env error (#9491)
- Fix #9479

# Important Notes
None
2024-04-29 07:27:00 +00:00
James Dunkerley
c5179309fd
Improve Table Viz handling of Numbers (#9793)
- Added support for NaN, Infinity and -Infinity in the Table viz.
- Simplified the logic so all the formatting in a single place in the Table viz.
- Sorted Number formatting for BigInt and < 10000.

![image](https://github.com/enso-org/enso/assets/4699705/1486eb7e-df87-4516-90d0-75fda1e9743d)

![image](https://github.com/enso-org/enso/assets/4699705/e55c0e6b-bd3c-4dcf-a65f-41f8516568a6)
2024-04-26 07:52:40 +00:00
somebody1234
cb31bcaf8e
Remove special-cased injected Google Analytics tag (#9787)
- #9779 introduced (incorrect) detection to determine when to inject the Google Analytics tag. Instead, it should be injected by CI, because sending Google Analytics events is undesirable in development mode.

# Important Notes
None
2024-04-25 19:19:42 +00:00
Kaz Wesley
12cbd900b4
Node creation improvements (#9781) 2024-04-25 09:18:38 -04:00
somebody1234
3a53d470eb
Google Analytics events for opening and closing the app, and opening and closing projects (#9779)
- Closes #9778
- Add `open_app`, `close_app`, `open_workflow`, and `close_workflow` events
- Miscellaneous fixes for Google Analytics:
- Fix `open_chat` and `close_chat` events firing even when chat is not visible
- Add Google Analytics script to GUI2 entrypoint (i.e. the entrypoint used by the desktop app)

Unrelated changes:
- Add Nix development shell to allow Nix users to build GUI2 and the build script
- Java dependencies have *not* been added in this PR to keep things simple

# Important Notes
None
2024-04-25 11:33:59 +00:00
Adam Obuchowicz
5807c5c112
Restore state after reconnecting (#9755)
Fixes: #8522

Execution context is refactored slightly: now we have a single `sync` function to synchronize both visualization and execution stack.

Tested hibernation on Linux: I was able to continue my work  🎉

# Important Notes
The Refinement Notes state, that the execution mode should be set before updating the stack, but actually it makes an error on startup (changing context automatically re-executes programs, what fails if there's no frame on the stack).
2024-04-25 09:02:47 +00:00
Ilya Bogdanov
717f6bb330
Display argument placeholders for autoscoped constructors (#9737)
Fixes #9635 

<img width="925" alt="Screenshot 2024-04-18 at 2 43 09 PM" src="https://github.com/enso-org/enso/assets/6566674/fbdce484-ac0b-4e30-8577-1c9dc419dffe">
2024-04-24 13:40:42 +02:00
Adam Obuchowicz
70985932b1
Selection panel (#9771)
Fixes #9519

[Screencast from 2024-04-23 12-57-01.webm](https://github.com/enso-org/enso/assets/3919101/873925db-1c9b-43e5-8144-6503c362baa0)

# Important Notes
I decided to go against our refinement notes, as in the action the blinking does not look bad, and seeing "live" how many nodes are selected may be useful.
2024-04-24 08:56:44 +00:00
Jaroslav Tulach
ff62c1e25f
Access non-self arguments when widget annotations are computed (#9410) 2024-04-24 03:58:32 +02:00
AdRiley
fa6b7f859f
Add new icons (#9756)
Restore, Clone, Group (Only Group is mine the others were already in Figma)

![image](https://github.com/enso-org/enso/assets/1720119/f74c3afa-f490-427a-b675-584077b202bb)
2024-04-20 09:48:58 +00:00
Kaz Wesley
6426478c97
Copy/paste improvements (#9734)
Copying nodes:
- Multiple nodes supported.
- Node comments and user-specified colors included.
- Google Sheets data can be pasted to produce a `Table` node, handled the same way as Excel data.

# Important Notes
- Fix E2E tests on OS X.
- Add E2E and unit tests for clipboard.
- Use the lexer to test text escaping; fix text escaping issues and inconsistencies.
2024-04-19 16:33:51 +00:00
somebody1234
7c571bd460
Fix opening templates on Local Backend (#9748)
- Close #9747
- Fix creating projects from templates on Local Backend

# Important Notes
None
2024-04-19 14:07:23 +00:00
Adam Obuchowicz
de406c69fa
Automatic reconnect with Language Server. (#9691)
Fixes #8520

If the websocket is closed not by us, we automatically try to reconnect with it, and initialize the protocol again. **Restoring state (execution contexts, attached visualizations) is not part of this PR**.

It's a part of making IDE work after hibernation (or LS crash).

# Important Notes
It required somewhat heavy refactoring:
1. I decided to use an existing implementation of reconnecting websocket. Replaced (later discovered by me) our implementation.
2. The LanguageServer class now handles both reconnecting and re-initializing - that make usage of it simpler (no more `Promise<LanguageServer>` - each method will just wait for (re)connection and initialization.
3. The stuff in `net` src's module was partially moved to shared's counterpart (with tests). Merged `exponentialBackoff` implementations, which also brought me to
4. Rewriting LS client, so it returns Result instead of throwing, what is closer our desired state, and allows us using exponentialBackoff method without any wrappers.
2024-04-19 13:39:45 +00:00
James Dunkerley
16126a0c71
Working through various issues from OKR / blog use. (#9739)
- Fixed `list_directory` so that it works with defaults and uses the `Folder_Browse`.
![image](https://github.com/enso-org/enso/assets/4699705/cf8eb187-a1fe-4eb7-a017-e7bb40e30e12)
- Adjusted types of `order_by` in `Aggregate_Column.First` and `Aggregate_Column.Last` so supports single `Sort_Column`.
- Adjusted types of `order_by` in `Aggregate_Column.First` and `Aggregate_Column.Last` so an empty Vector is valid (treated as Nothing).
- Adjusted `Count_Distinct` so if an empty set of columns then equivalent to `Count`.
- Use the multi-select widget for `columns` in `Count_Distinct`.
![image](https://github.com/enso-org/enso/assets/4699705/86e8f3c1-9cbe-4fb3-b6fd-43b937346082)
- Sort the widget for `order_by` in `First` / `Last`.
![image](https://github.com/enso-org/enso/assets/4699705/d624544c-6f4d-42ef-bb97-79b68aa60569)
- Bug fix for widgets with both tagValues and dynamic data. (Thanks @farmaazon).
- Use the multi-select for various things.
2024-04-18 21:50:20 +00:00
Sergei Garin
30a80db4b0
Refetch user session when it expires (#9632) 2024-04-16 11:21:26 +00:00
Ilya Bogdanov
7e345075b3
Implement special handling of subapplications when collecting MethodCallInfo (#9677)
Fixes on of the issues in #9354

Stale method call info for inner sub-application was causing additional argument placeholders on the node for certain expressions. Now it is fixed:
1. We only create function widget for the most top-level expression in the prefix application chain.
2. We reuse method call info from inner expressions, assuming it will be always correct for our purposes.

https://github.com/enso-org/enso/assets/6566674/91d2b4ba-a789-4c7b-b40c-f09ac45da7f0
2024-04-16 10:39:04 +00:00
Paweł Grabarz
0ee113a4d9
Disconnect nodes when deleted (#9659)
Fixes #9315

https://github.com/enso-org/enso/assets/919491/8551c901-4bef-4a7a-bfb6-10578f0c125a
2024-04-16 08:11:31 +00:00
Paweł Grabarz
9d2d9038c9
Fix spurious gui e2e dropdown test failures (#9697)
In GUI E2E `widgets.spec.ts`, be more specific about which tested dropdowns should be visible. Since the tested node actually receives two dropdowns, the test could fail by detecting both and expecting only one. Since we already have a very specific selector for the dropdown we are testing, use it instead of fresh global locator.
2024-04-15 16:05:14 +00:00
Ilya Bogdanov
59a9c8e59c
Fix node placement (#9696)
Fixes #9689

We should consider visualization size in all cases. `visibleArea` has multiple usages, but they all seem to benefit from the change (e.g. zoom to selected will also consider visualization sizes).

https://github.com/enso-org/enso/assets/6566674/3c9ae4a9-27f5-4736-83b5-4b3a500564e7
2024-04-15 13:18:52 +00:00
Paweł Grabarz
3b21f5579f
Fix node arguments hiding animation, clipping and dropdown styles. (#9685)
Fixes #9492

Implemented generic component for flawless size-based transitions, then used it for hiding arguments and dropdown animation. That replaced the `max-size`-based CSS animation that caused original issue. Refactored dropdown positioning to avoid further issues related to animation overflow clipping. The dropdown also got a bit of a lift to fit closer to styles in current Figma designs.

https://github.com/enso-org/enso/assets/919491/e85fd68c-b2e8-4d58-90e1-4fd7b33f1c9b
2024-04-12 13:44:13 +00:00
Nikita Pekin
f80e0052cc
refr(enso-org/cloud-v2#1088): Make Project fields camelCase (#9653) 2024-04-11 20:02:29 +00:00
somebody1234
3ecc3aebd0
Option to use Data Link in new project (#9644)
- Close https://github.com/enso-org/cloud-v2/issues/1161
- Add context menu option (and associated shortcut) to open a Data Link in a new project

# Important Notes
- The corresponding backend endpoints do not yet exist. The frontend currently passes an additional parameter `dataLinkId: string | null` to the backend's `create_project` endpoint. Note that this is inconsistent with the rest of the backend's terminology which calls Data Links `connector`s, so the parameter name might want to be changed.
2024-04-11 17:13:59 +00:00
Kaz Wesley
b631745c1d
Interaction resumption (#9621)
Prevent interactions such as an open dropdown from being disrupted by the temporary state of absent type information occurring after an edit.

https://github.com/enso-org/enso/assets/1047859/bcc7fa02-847f-4cd0-b9fc-3186a97c5816

All widget-edit interactions that are active when a component is to be unmounted save state and are suspended. When a new component defining a `WidgetEditHandler` is instantiated, if the component is found to be equivalent to a component that was suspended, and no other interaction has been initiated in the interim, the interaction is restarted using the suspended state.

# Important Notes
- Fix a bug caused by a variable tracking an interaction's active state getting out of sync with the interaction. `WidgetEditHandler` now provides a reactive `active` property; using it is simpler and avoids this type of bug in the future.
- Fix a flickering bug that sometimes made it hard to open dropdowns by clicking the arrow.
2024-04-11 15:39:16 +00:00
Paweł Grabarz
922ac66baf
working hot reload for widget definitions (#9657)
Fixed a long-standing annoyance that widgets weren't fully hot-reloadable. Now when the widget definition (e.g. `score` function) is modified, it is hot-reloaded and new version immediately takes effect.

https://github.com/enso-org/enso/assets/919491/8e6d5a67-68ec-4353-8235-32657b32e2ec

# Important Notes
Because of how HMR API works, it needs to be passed from each widget module to the `widgetDefinition` function as an argument. When not provided, the definition will not be hot-reloadable (but the widget will still work as it used to).
2024-04-11 14:11:34 +00:00
Ilya Bogdanov
7e810feed9
Display parens in groups (#9678)
Fixes another point in #9354

Displays parens for Group AST (except top-level arguments).

<img width="630" alt="Screenshot 2024-04-11 at 3 08 01 PM" src="https://github.com/enso-org/enso/assets/6566674/8e3be87a-975b-404e-8a15-2752bd94cd4c">
2024-04-11 11:49:14 +00:00
Adam Obuchowicz
0bc7cb54eb
Change window title (#9676)
Fixes #9665

To Enso.

![image](https://github.com/enso-org/enso/assets/3919101/d5f29b9f-2509-4bd9-899a-ae5988b8089f)
2024-04-11 10:59:49 +00:00
somebody1234
0fcb005ff8
Fix dropdowns no longer opening after first open (#9668)
- Fix https://github.com/enso-org/cloud-v2/issues/1178
- Fix dropdowns not reopening after a third click (open -> close -> should open again)

# Important Notes
None
2024-04-10 13:28:49 +00:00
Sergei Garin
21ede86242
Use secret.path rather than secret.id in data link editor (#9667) 2024-04-10 12:52:35 +00:00
Sergei Garin
24644c41a2
Undelete user flow (#9601)
#### Tl;dr
Closes: enso-org/cloud-v2#863
This PR adds the ability to restore user account after deletion(So called soft-deletion)

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

#### TODO: video

</p>
</details>

---

#### Context:
This PR closes enso-org/cloud-v2#863, and it's a frontend part of the issue.

#### This Change:
1) Change the texts in settings, clarifying that a user can restore his account in 14 days after deletion.
2) Adds a new page (`/restore-account`)
3) If the user logs into the soft-deleted account, the app navigates him to the restore page.
4) The user can't interact with the dashboard until he restores the account(If the user navigates to the dashboard, the app will redirect him back to the restore page)
5) On the restore page the user can click a "Restore" button to restore his account or log out.
6) If the user restores his account, the app navigates him to the dashboard.

#### Test Plan:
1. Try to delete the account and log back in, expect to see the restore page
2. Try to navigate to protected pages(dashboard, settings, etc)
3. Try to restore the account
4. Try to log out on the restore page
5. (ideally) try to restore the account after 14 days :)

---
2024-04-10 10:11:48 +00:00
Sergei Garin
775ca3722a
Disable everything except restore / hard delete in trash (#9575)
Closes: enso-org/cloud-v2#1084

Tl;dr: This PR disable almost all actions in trash folder, except restore/hard delete.
Context:
Currently, we can do a lot of actions it trash folder: arrange files in folders, create new folders, edit files and so on. We want to disable most of these actions.


This Change:

- Disables d&d support within trash folder, but leaves the ability to drag thigs back to home folder.
- Disables most of the keyboard shortcuts(copy,paste,new...etc) except hard delete/restore
- Disables launching projects
- Disables rename
- Disables assigning labels
- Disabled editing the description & sharing




https://github.com/enso-org/enso/assets/61194245/35c6532d-719f-46b2-a2f7-b54b54856bbd





Test Plan:

This PR expects thorough testing to make sure we have disabled everything except hard delete/restore and the same way we didn't break the home folder :)
2024-04-10 09:31:46 +00:00
Nikita Pekin
7cf512ec6b
impr(enso-org/cloud-v2#1047): Enable Sentry distributed tracing (#9661)
Enables distributed tracing for Sentry. Enables profiling information collection for calls to backend APIs, which means that traces/errors can be correlated across the frontend and backend now.
2024-04-09 16:02:31 +00:00
Paweł Grabarz
4bf79776c5
Store graph viewport in client local storage (#9651)
Fixes #6250

With this change, I've also slightly refactored the graph editor component by grouping related functionality into neat block and moving already loosely coupled groups to separate files. Further work will be needed to simplify it, but it is a good first step.

https://github.com/enso-org/enso/assets/919491/fedce111-ea79-463f-a543-da3ecce28bf5
2024-04-09 12:02:11 +00:00
Sergei Garin
2c78f4eefd
Add prefixes for cloud url params (#9649)
This PR adds an ability to exclude some keys in URLSearchParams from being parsed by GUI.
2024-04-09 07:38:06 +00:00
Ilya Bogdanov
8aef2146db
Use predefined zoom levels (#9585)
Fixes one subtask of #9354

https://github.com/enso-org/enso/assets/6566674/3418d31e-2d80-48b2-ba8b-9e000b09cf14
2024-04-08 11:12:53 +00:00
Ilya Bogdanov
e174dee1bf
Fix documentation panel layout (#9615)
Fixes #9414

`.argument` class was not scoped and broke documentation panel.


<img width="439" alt="Screenshot 2024-04-03 at 3 06 43 PM" src="https://github.com/enso-org/enso/assets/6566674/fe94a668-8125-452c-b038-196e5a10657c">
2024-04-08 11:06:00 +00:00