Commit Graph

1097 Commits

Author SHA1 Message Date
Sergei Garin
f68365f7a3
Use Iss field instead of domain as a refresh URL (#9380) 2024-03-12 13:52:41 +00:00
Kaz Wesley
39976be267
More type-checking for concrete children (#9375)
Introduce a concrete NodeChild subtype; use it to statically check for the kind of bug that #9357 fixed.
2024-03-12 13:44:00 +00:00
Sergei Garin
6bf37b3d17
Update ~/.enso/credentials file (#9287)
* Pass additional metadata to ~/.enso/credentials

* support old and new credentials format

* fix some issues after the review

* use domain instead of iss field

* small fixes

* rename Uri -> Url

* rename cognito -> Cognito

* remove unneeded file

---------

Co-authored-by: Radosław Waśko <radoslaw.wasko@enso.org>
2024-03-12 12:41:47 +03:00
Adam Obuchowicz
a01aeab3a4
Fix AST spacing (#9366)
Fixes #9357

The main issue was the spread operator using at the wrong place in functions overriding spacing of nodes. The bug, to be visible, required copying AST node before, because during copying `whitespace` field was explicitly set to undefined (in opposite to being unset), what in turns make spread overriding the value set by those functions.

# Important Notes
* To enable VSCode debugging, added a workspace for vitest and fix any relative path to be working-dir independent.
2024-03-12 01:57:29 +00:00
Radosław Waśko
c401694fa9
Add missing icon to Excel DataLink schema (#9370)
I forgot to do this in the previous PR #9346, so following up.
2024-03-11 22:46:01 +00:00
James Dunkerley
29784de391
Fix issues with labels in qualified entry names. (#9368)
- Use label for entries by qualified name.
![image](https://github.com/enso-org/enso/assets/4699705/e299dae7-7165-4bde-a055-dc5c05326a15)
2024-03-11 22:27:59 +00:00
Radosław Waśko
e98306f170
Excel DataLink (#9346)
- Adds the Excel format as one of the formats supported when creating a data link.
- The data link can choose to read the file as a workbook, or read a sheet or range from it as a table, like `Excel_Format`.
- Also updated Delimited format dialog to allow customizing the quote style.
2024-03-11 16:12:12 +00:00
Kaz Wesley
1f6db1ef43
Move selections to a new layer (#9344)
Move selections to a new Vue component so that they don't interfere with clicking on edges.

https://github.com/enso-org/enso/assets/1047859/190006df-1402-4a5f-9117-f43788fa4187

# Important Notes
- The new `GraphNodeSelection` components are drawn in a `GraphNodeSelections` container. They are created by the `GraphNode`s and teleported so that the node can set properties directly.
2024-03-11 15:40:16 +00:00
Sergei Garin
b2215bed2c
Fix broken login flow (#9352) 2024-03-11 15:26:59 +00:00
Ilya Bogdanov
38ffcd09de
Use vue’s Transitions for animation of the placeholders (#9335)
Closes #9333

https://github.com/enso-org/enso/assets/6566674/705e23c2-0ee0-40b0-9919-9c320f8788c5
2024-03-11 13:29:53 +00:00
Ilya Bogdanov
793fb8f48e
Use labels from the engine if they are available (#9290)
Fix small regression on develop for dropdown labels.

<img width="645" alt="Screenshot 2024-03-05 at 7 09 22 PM" src="https://github.com/enso-org/enso/assets/6566674/caec9cbc-ef8d-4ac2-8ec1-cf2de909f2d4">
2024-03-11 10:56:56 +00:00
Kaz Wesley
8e437fa52a
Ast.Vector (#9328)
Add `Vector` AST type, corresponding to the `RawAst.Tree.Array` type (name `Array` not used for obvious reasons).

This is the first step of #5138.

### Important Notes

- Switched some string-based vector construction to `Vector.new`, improving type-safety.
- The `Ast` changes are covered by the round-trip tests; the use-site changes have been tested manually.
2024-03-08 15:14:06 -05:00
James Dunkerley
2df2d958ed
Correct bug with qualified name of Float. (#9341)
Numeric Input wasn't showing up for floats.
2024-03-08 19:11:23 +00:00
Kaz Wesley
dcad48e66f
Add-node buttons (#9247)
Introduce add-node button below circular menu or open visualization.

https://github.com/enso-org/enso/assets/1047859/aa6cedba-ca7e-44c5-ab27-2f5d5f9421e8
2024-03-08 19:00:39 +00:00
Kaz Wesley
614a5a610b
Zoom steps (#9327)
When zooming with Ctrl+wheel, used fixed-factor steps instead of scroll wheel rate information.

Fixes #9177.

Important Notes
  - Wheel events are distinguished from trackpad gestures, so that OS X pinch-zoom still works nicely.
  - When zooming with the mouse wheel, scale factor is rounded (geometrically) to the nearest power of √2, and then stepped up or down by the same factor; this ensures that round values like 100% are never skipped over.
  - Added directed-clamping logic, so that if the zoom is moved outside the clamping range of a zoom-method, it can be stepped back into range without jumping.
2024-03-08 13:33:54 -05:00
Paweł Grabarz
cee795b5e3
fix text caret not showing for empty input (#9336)
Fixes #9331

Fixed issues with wrong initial size and missing edit caret in text widgets.

<img width="311" alt="image" src="https://github.com/enso-org/enso/assets/919491/44f257cc-18a1-4a9f-9ae0-c1dd9b86674e">

# Important Notes
Automated tests for font loading/initial size will follow shortly. The text caret is not really testable, since it is a hosted object visual issue.
2024-03-08 18:03:23 +00:00
Ilya Bogdanov
df72b38f60
Visualizations fixes follow-up (#9252)
Addressing review suggestions from #9130

- Removing `N` binding
- Removing duplicated `Toggle fullscreen vis` binding

A few important differences from the suggested implementation:
1. There is no easy way to implement `nextType` on GraphEditor – we simply don’t have the required API
2. The keydown handler in `GraphVisualization` must be defined on window level still, otherwise it won’t get keydown events unless visualization is focused, and thus `nextType` won’t work because of (1)

No visual changes to the IDE.
2024-03-08 15:59:15 +00:00
Ilya Bogdanov
ed46fdcf18
Disable qualified name substitution (#9286)
As discussed in discord: https://discord.com/channels/401396655599124480/1201853512409939968/1214547995207663646
2024-03-08 12:57:20 +00:00
somebody1234
6c2b2383d3
Change "Override Execution Context" button to "Record" button on nodes (#9188)
- Close #9164
- Fix appearance of Record/Record Once icon in top menu
- Change icon for overriding execution context to record icon
- Unconditionally show per-node record icon if it is set
- Remove the ability to override the execution context to disabled
- Fix the icon for nodes with an overridden execution context always being the Enso icon

# Important Notes
None
2024-03-08 04:31:32 +00:00
somebody1234
d2f6b1026a
Refactor configuration keys out of repository (#8895)
- Close https://github.com/enso-org/cloud-v2/issues/866
- Remove *all* references to client keys and API base URLs from the codebase.
- The app can still be built by external contributors. *However*, the cloud backend (among some other things) will be completely disabled, as the required keys and base URLs will be missing.
- Add entry to `.gitignore` to allow `*.env` files in `app/ide-desktop/lib/dashboard/`

# Important Notes
- Tested (no `.env`; `.env` with prod backend; `.pbuchu.env`) on:
- `npm run dev` in `app/ide-desktop/lib/dashboard/`
- `./run ide build`
- `./run ide2 build`
- `./run gui watch`
2024-03-08 03:14:26 +00:00
somebody1234
0b271d4b04
Minor improvements (#9187)
- Close https://github.com/enso-org/cloud-v2/issues/918
- Close https://github.com/enso-org/cloud-v2/issues/920

# Important Notes
None
2024-03-08 03:04:13 +00:00
James Dunkerley
c7d693dfc8
Move Standard.Database.Data to Standard.Database. (#9321)
Moves the types out of `Data`.
2024-03-07 14:43:38 +00:00
Michael Mauderer
7c68bf170d
Remove gui1 codebase (#9242)
Removes the old GUI1 code base and reduces the Rust code footprint by removing unused code.

# Important Notes
Updates build scripts and reformats part of the codebase with the autoformatter.
2024-03-07 02:20:21 +00:00
Kaz Wesley
79a6a6a1c0
Pan to CB (#9273)
When the CB is opened, pan to show it.

Large screen:
<video src="https://github.com/enso-org/enso/assets/1047859/1a07c8cc-5818-420a-9fb3-1d1cb308cb87">

Small screen:
<video src="https://github.com/enso-org/enso/assets/1047859/a9f18df5-c0ca-426c-959a-bda5cd077541">

# Important Notes
A prioritized-coordinates approach is used to adjust panning goals based on screen space:
- Fitting the input area is highest-priority.
- If possible, the whole component panel area will be fit.
- If possible, the visualization preview will be fit.
- If there's extra room, margins will be included; the top and left are prioritized because those margins prevent overlap with fixed UI elements.
2024-03-06 20:09:56 +00:00
Paweł Grabarz
b7a8909818
Vue dependency update, better selection performance, visible quotes in text inputs (#9204)
- Improved performance by batching simulatenous node edits, including metadata updates when dragging many selected nodes together.
- Updated Vue to new version, allowing us to use `defineModel`.
- Fixed #9161
- Unified all handling of auto-blur by making `useAutoBlur` cheap to register - all logic goes through a single window event handler.
- Combined all `ResizeObserver`s into one.
- Fixed the behaviour of repeated toast messages. Now only the latest compilation status is visible at any given time, and the errors disappear once compilation passes.
- Actually fixed broken interaction of node and visualization widths. There no longer is a style feedback loop and the visible node backdrop width no longer jumps or randomly fails to update.
2024-03-06 15:34:07 +00:00
James Dunkerley
d4b2390fc1
Small change limiting the number of decimal places to 12 digits. (#9298)
Format numbers in the ag-grid so we don't get loads on pointless digits.
![image](https://github.com/enso-org/enso/assets/4699705/0731af47-1e7e-46f5-8bf3-5503ab74a8e3)
2024-03-06 14:08:43 +00:00
Radosław Waśko
e37862b09d
Implement a Data Link for Postgres (#9269)
- Closes #9124
2024-03-06 11:57:12 +00:00
Adam Obuchowicz
d2a0bdd9cd
Restore whenReady, as I do not see the freeze (#9262)
When cleaning up board, I stumbled upon https://github.com/enso-org/enso/issues/5851 I tried to replace whenReady, and it just worked. Perhaps the freeze was fixed during some electron version bump.

Tests on other platforms (I'm using Garuda Linux) advised.

Fixes #5851
2024-03-06 11:04:54 +00:00
somebody1234
d481ccac94
Extract tests to their own files (#9229)
Move tests to their own files, for consistency

# Important Notes
None
2024-03-06 09:53:12 +00:00
somebody1234
1cc7ca1338
Fix typechecking (#9279)
- Fix issue where `playwright-report/` is being typechecked by `npm run typecheck` in the dashboard, causing CI to fail
- Attempt to fix flaky dashboard test

# Important Notes
To test that typechecking isn't completely broken, it's recommended to intentionally create a type error in the dashboard code base.
2024-03-06 08:20:08 +00:00
somebody1234
618080b803
Hard delete of items in Trash (#9091)
- Close https://github.com/enso-org/cloud-v2/issues/698
- Requires https://github.com/enso-org/cloud-v2/pull/905

# Important Notes
None
2024-03-06 03:12:14 +00:00
Kaz Wesley
b0842feea2
Hide placeholders (#9246)
* New menuVisible logic

* Hide placeholders unless sole selected node, required argument, or requested by dynamic config
2024-03-05 09:16:38 -05:00
Adam Obuchowicz
ba9b7f199a
E2E test fixing and bring back reports (#9238)
After investigating some errors, I found another two missing awaits in our tests. Because those are so easy to overlook, I added a lint rule which makes failure on unhandled promise (for e2e tests only).

Also, enabled HTML reports again, with traces this time, to enable closer investigation of any failure in the future. @mwu-tow added code for uploading them in GH.
2024-03-05 07:06:11 +00:00
Ilya Bogdanov
9ee4348ee5
Add delete node icon to circular menu (#9264)
Closes #9168, also adds `Show full menu` icon back and hides `edit comment`.

https://github.com/enso-org/enso/assets/6566674/43af88a7-2b08-4f7d-8f4a-f47b41e51b2e
2024-03-04 16:05:56 +00:00
Ilya Bogdanov
6f4963d7d1
Add imports on editing nodes (#9253)
Closes #9241

Demonstration with import conflict resolution:


https://github.com/enso-org/enso/assets/6566674/2397ecf1-7d77-4fa9-93bc-15b81d7fd042
2024-03-04 14:43:15 +00:00
Michael Mauderer
94666e6727
Dropdown widget improvements. (#9186)
Closes  #8995

[Peek 2024-03-01 16-06.webm](https://github.com/enso-org/enso/assets/1428930/3f62aad8-8426-4f8f-b49e-57769b22bfb4)
2024-03-04 12:54:38 +00:00
Ilya Bogdanov
3be5e585f2
Imports conflict resolution (#9093)
Closes #5353


When name conflict is detected, we use fully qualified name instead of the usual one.

https://github.com/enso-org/enso/assets/6566674/2dab40ce-b925-4443-ab37-acd0a8968e47
2024-03-04 11:17:53 +00:00
somebody1234
b4cea527db
Add Warning indicator. (#9160)
- Close #9125
- Display the new warning icon to the left of the node, when the node is not being hovered over.

# Important Notes
None
2024-03-04 10:16:08 +00:00
Kaz Wesley
44a1d9138b
Create and edit comments (#9230)
* CodeEditor: Fix dynamic imports

* Doc editing: AST support

* Doc editing

* Button and comment creation

* Fix concrete syntax edge case

* Remove testing code

* Fix
2024-03-01 12:56:18 -05:00
Kaz Wesley
ac4bbd89c7
Close dropdowns (#9206)
Fixes #7562. Close a dropdown when:
- A click outside the dropdown occurs
- `Esc` is pressed
- Any other `Interaction` is started (i.e. using a shortcut)

# Important Notes
- Simplifies `Interaction` API and uses it for closing/canceling CB as well as dropdowns.
- Adjusted some event handlers so that handled clicks don't also register as GraphEditor background clicks.
- Introduces a CSS approach to prevent unwanted text-selections; we were doing it with JS until my previous PR, and the JS solution was breaking things.
2024-03-01 17:49:23 +00:00
Adam Obuchowicz
55f3820cf9
Fix selection tests (#9240)
Sometimes our test realizes, that `currentTarget` of `MouseEvent` is a read-only property. I have no idea why it does not do it every time, but this fix should work.
2024-03-01 15:51:33 +00:00
Radosław Waśko
4316709379
Implementing reading Data Links (#9215)
- Close #9123
2024-03-01 15:33:21 +00:00
Adam Obuchowicz
cabd3ac072
Turn off flaky test (#9232) 2024-03-01 13:37:46 +01:00
Ilya Bogdanov
c44b7f2c2d
Small visualization fixes (#9130)
Closes #9009

- [x] Fixed big white space above full screen viz.
- [x] Escape closes the full screen visualization.
- [x] Viz shortcuts (Shift-Space for toggling fullscreen vis, Ctrl-Space for switching vis type) are implemented.
- [x] The width of visualizations is preserved across project reopens (do we need height as well?)

New video:


https://github.com/enso-org/enso/assets/6566674/d9036ce9-57a4-429b-9bd9-6392782136ea

Older videos:

https://github.com/enso-org/enso/assets/6566674/d7129307-0626-4343-8a76-b9bf764c6a5b


https://github.com/enso-org/enso/assets/6566674/0518d3d8-9ed1-4e6c-bbe0-b7ed00bf7db3

# Important Notes
- Metadata format changed in backward-compatible way
2024-02-29 16:37:40 +00:00
Kaz Wesley
d7e8f271eb
Ensure objects obtained from Y.Js are not modified (#9217)
Y.Js caches values it returns from getters, so they must not be modified. Use `DeepReadonly` to protect values returned from `Y.Map`s in AST logic.
2024-02-29 16:22:33 +00:00
Kaz Wesley
b027a7ee92
Display comments (#9218)
Introduce basic display of node documentation-comments.

![image](https://github.com/enso-org/enso/assets/1047859/b1960097-d265-4d77-a924-fd3c309dc3fd)

Part of #9162.

# Important Notes
- Add synchronization of `documentation` updates to the GraphDB; add a type assertion that ensures `Node` synchronization is updated when new fields are added to `Node`.
- Introduce read-only comment rendering.
2024-02-29 15:42:11 +00:00
Adam Obuchowicz
874e9efe74
Add workaround for huge idmap diffs (#9207)
Fixes probably #9198 See [this comment](https://github.com/enso-org/enso/issues/9198#issuecomment-1968484269) for justification. TLDR: the diff algorithm is too slow for our huge idmap.

The proper fix would be to reduce idmap size. Expect tasks for that soon.
2024-02-29 14:42:59 +00:00
somebody1234
0a28d91d35
Switch to AJV for validating JSON Schema (#9191)
As ~~requested~~ suggested by @radeusgd

# Important Notes
None
2024-02-29 10:36:47 +00:00
Kaz Wesley
97033a2ff4
Represent documentation in AST, load into Node (#9205)
Part of #9162.

- Add support for representing and interpreting the full text-literal/documentation syntax (escape codes, platform-independent newlines, string interpolations); build on generalized operations for structured-fields that will simplify future representation of other types like `Vector`.
- Load parsed and interpreted node documentation into `Node`s.
2024-02-28 20:43:23 +01:00
somebody1234
fecdd534b1
Fix Component Browser aliases (#9163)
- Fix #9107
- Allow matching initials of aliases
- Allow matching spaces instead of underscores (aliases use spaces, not underscores)
- Fix only the first alias being detected. This is due to incorrect docs parsing keeping the leading space - `foo, bar` turns into `["foo", " bar"]`

# Important Notes
None
2024-02-28 15:33:22 +00:00
Adam Obuchowicz
c69ba4ee70
Fix area select regression (#9197)
Fixes #9182

Now we are careful when to handle events - before or after updating intersected set.

Added general E2E and detailed unit tests for selecting.

Also discovered, that sometimes the test are running while nodes are not yet in right positions. Added an instruction ensuring the position is right.
2024-02-28 13:14:48 +00:00
somebody1234
d232b9252c
Re-enable vibrancy and add support for Linux (#9003)
- Fixes support for vibrancy
- Disable background when vibrancy is enabled
- Minor refactors to pass the relevant config option to dashboard, so that the dashboard knows whether vibrancy is enabled
- Enable vibrancy on Linux if a special environment variable is set

# Important Notes
- MUST be tested on macOS
- Windows *does not support resizing* when vibrancy is enabled. This is a limitation of Windows - see [this issue](https://github.com/electron/electron/issues/6107).
2024-02-28 13:01:03 +00:00
Kaz Wesley
edb349f8fc
Allow setting CB viz type; determine default from suggestion type info. (#9196)
Fixes #8570.

- Visualization type can be set per suggestion entry.
- Default visualization type for each suggestion is determined by suggestion type info.

# Important Notes
Previewing non-default visualizations seems to be broken (#9194), but this PR updates the GUI to select visualization types appropriately.
2024-02-27 15:49:56 +00:00
somebody1234
e59b422612
"Keyboard shortcuts" settings page (#9071)
- Close https://github.com/enso-org/cloud-v2/issues/896
- Add new settings page for viewing and editing keyboard shortcuts
- Refactor shortcut manager to resemble GUI2's shortcuts module
- Minor refactor moving `dashboard/layouts/dashboard` to `dashboard/layouts`; and moving all moals to `dashboard/modals`

# Important Notes
- The modal for capturing keyboard shortcuts has not been tested on macOS.
2024-02-27 12:52:21 +00:00
Kaz Wesley
e4383cb3bd
Fix CB reloading when vis-selector opened (#9192)
Fixes a bug blocking #8570.
2024-02-26 20:41:47 +00:00
somebody1234
a7251eb8d4
Improve mouse and keyboard UX (#9100)
- Close https://github.com/enso-org/cloud-v2/issues/914
- Add selection brush for selecting multiple assets using mouse
- Port selection brush over from GUI2
- Support <kbd>Ctrl</kbd>-select to select multiple ranges
- Add various actions when *exactly one* asset is selected:
- <kbd>Enter</kbd> for various assets to trigger their double-click actions
- Projects are opened
- Directories are toggled open/closed
- Secrets show the "upsert secret modal"
- <kbd>ArrowLeft</kbd> now collapses the selected folder
- <kbd>ArrowRight</kbd> now expands the selected folder
- <kbd>ArrowUp</kbd> and <kbd>ArrowDown</kbd> change the selected asset to the previous/next asset
- The newly selected asset (technically: any asset that is the only selected asset, whether this is a result of a drag, mouse click, or keypress) is automatically smoothly scrolled to.
- Improvements to the search bar
- <kbd>Escape</kbd> cancels tabbing through suggestions (and discards the selected suggestion)
- <kbd>ArrowUp</kbd> and <kbd>ArrowDown</kbd> behave like <kbd>Shift</kbd>+<kbd>Tab</kbd> and <kbd>Tab</kbd> to move to the previous/next suggestion respectively
- <kbd>Shift</kbd>+<kbd>ArrowUp</kbd> and <kbd>Shift</kbd>+<kbd>ArrowDown</kbd> to select multiple assets using the keyboard
- <kbd>Ctrl</kbd>+<kbd>Space</kbd> to toggle assets using the keyboard
- <kbd>Escape</kbd> to deselect all assets
- Add CSS-only focus ring to highlight most recently selected item, but only when navigating via keyboard
- Enter and double-click to temporarily open the sidebar to edit a Data Link

Optional features that have not yet been implemented:
- Move the "update secret" modal to the sidebar as well

# Important Notes
None
2024-02-26 16:49:49 +00:00
somebody1234
86d268b198
Fix type error caused by bad merge (#9189) 2024-02-26 17:40:52 +01:00
somebody1234
d71e8c4742
Move "change password" to settings (#9079)
- Close https://github.com/enso-org/cloud-v2/issues/893
- Remove "Change Password" modal
- Remove "Change Password" option from user menu
- Add "Change Password" section to "General -> Account" in settings

# Important Notes
None
2024-02-26 15:50:00 +00:00
somebody1234
207f6a06e5
Fix E2E tests (#9185)
- Fix #9184
- It turns out the logic for handling macOS was already present elsewhere - and even *in the same file*! It seems like this was an oversight

# Important Notes
None
2024-02-26 15:34:43 +00:00
somebody1234
65f66fabb6
Remove forceCreate from backend requests; minor bugfixes (#9074)
- Remove unused `forceCreate` parameter from backend requests
- Also undo bad change to behavior of sorting assets:
- https://github.com/enso-org/enso/pull/7540#issuecomment-1683699696
- Fix https://github.com/enso-org/cloud-v2/issues/910
- Closing a project now doesn't close other projects.
- Unable to properly test, as I cannot get the second project to open
- Fix https://github.com/enso-org/cloud-v2/issues/908
- Use the `download` module that already exists to download the app...
- Add correct arrow icon for collapsing/expanding folders
- Turns out this icon had always existed, and I just didn't see it for the longest time
- Hide irrelevant parts of search bar on Local Backend
- The row of labels
- `no:`, `has:`, `label:`, `-label:`, `description:`, `-description:` (and their corresponding autocomplete entries)
- Also change text to say "Type to search for projects." because the other asset types mentioned do not (and will never) exist on the Local Backend.
- Fix search bar eating up `"` and ` ` keypresses
- Fix icons for Data Links and Secrets being swapped in `AssetIcon`

# Important Notes
- The fix for https://github.com/enso-org/cloud-v2/issues/908 has not been tested on Safari (I don't have a macOS machine.)
2024-02-26 15:10:38 +00:00
somebody1234
4e8f066ec0
Use backend errors in toast notifications (#9078)
Adds the `message` returned by the backend to the toast notification, so that the user gets a more detailed error message.

# Important Notes
- Not sure what's the best way to properly test this, as for a lot of the backend endpoints there is no easy way to (even intentionally) trigger them from the frontend, because the frontend does a decent amount of validation as well.
2024-02-26 14:51:44 +00:00
Kaz Wesley
92624126ba
Fix minor visual glitch in record-control background (#9170)
Before:
![image](https://github.com/enso-org/enso/assets/1047859/dcf083b2-c169-42a9-a120-4aa730f05962)

After:
![image](https://github.com/enso-org/enso/assets/1047859/7d9b774a-1ccd-4225-9a2d-a313e40e0c4f)
2024-02-26 08:38:43 +00:00
Kaz Wesley
245ec7afe8
Replace execution context controls with record mode controls (#9133)
Closes #8673. Stacked on #9132.

Before:
![image](https://github.com/enso-org/enso/assets/1047859/1b1ca9f4-eda9-45fd-bec1-cd7e255112fa)
![image](https://github.com/enso-org/enso/assets/1047859/b8cf6de1-d75c-48d0-ac0d-9e6e0c659dd4)

After:
![image](https://github.com/enso-org/enso/assets/1047859/91d13862-96e7-4175-a61e-40aecd6d62b0)
![image](https://github.com/enso-org/enso/assets/1047859/ef20511f-00f2-4042-b4d4-97728817500b)

# Important Notes
- The model has been refactored from execution-modes (live/design) to record-mode (on/off) up to the point of the project store, where it's translated (since the backend still uses the live/design concepts).
2024-02-23 20:10:43 +00:00
James Dunkerley
880562a503
Add comment, warning, error icons. (#9169)
Add some state icons.
![image](https://github.com/enso-org/enso/assets/4699705/ab4060f5-7814-4a0d-a0af-bb775235ff98)
2024-02-23 17:25:17 +00:00
Kaz Wesley
9c872c653e
Checkbox shows argument name if not already shown (#9146)
Fixes #9002. This is not a great solution; doing this properly would require some refactoring of widget selection. Proposal:  #9145.
2024-02-23 15:48:10 +00:00
Adam Obuchowicz
8c286da21b
Proper fix for editing node (#9153)
The replacement for https://github.com/enso-org/enso/pull/9144

We try to match bindings using "buttons" field, but it in fact does not contain the just-released buttons.

# Important Notes
I added tests for editing node. Also, I decided that the cursor position should be at the end of line when starting editing by clicking at "edit" icon.
2024-02-23 14:54:34 +00:00
Kaz Wesley
bc99941736
Move project name (#9132)
Closes #8672.

Before:
![image](https://github.com/enso-org/enso/assets/1047859/9d95178f-24c1-4e82-bf90-a37c3d1ca450)

After:
![image](https://github.com/enso-org/enso/assets/1047859/84e6dae9-e309-46c5-9be8-6b82dcb9ddc4)

# Important Notes
- The execution context controls are no longer aligned nicely, but we are about to make major changes to their display anyway: #8673
2024-02-23 13:48:33 +00:00
Kaz Wesley
990ba2fc64
Fix flickering when resizing visualization (#9147) 2024-02-23 08:47:57 -05:00
Kaz Wesley
d650798898
Display alias when searching by alias (#9148)
* Display alias when searching by alias

* Fix tests
2024-02-23 08:47:11 -05:00
somebody1234
bdebe904b3
Make alt key keep dropdown open (#9157)
- Fix #9083

# Important Notes
None
2024-02-23 13:41:58 +00:00
Adam Obuchowicz
e7a9221618
Fix escaping \ (#9155)
Fixes #9151

In one of my previous PRs I merged two `escape` implementations having exactly the same documentation. However, one of it missed escaping `\` character.

# Important Notes
One test even expected that `\` are _not_ escaped, but I doubt it should, given the above bug report?
2024-02-23 12:10:45 +00:00
Michael Mauderer
a900fb5c43
Add docs to highlight order of processing dirty nodes in readFunctionAst. (#9141) 2024-02-23 11:19:35 +00:00
Nikita Pekin
5e4a7cf01c
Add Stripe for Billing Support (#8841)
* feat: Stripe billing support

Squashed commit of the following:

commit b7ab361d2e2a3b11819ee0c964dd25dde2850eac
Author: Nikita Pekin <nikita@frecency.com>
Date:   Wed Jan 10 04:14:14 2024 -0500

    fixes

commit 2b7f525be95d8d9e50dea9c5f31828dc2c823eae
Merge: 717fba94a1 942e6c2305
Author: Nikita Pekin <nikita@frecency.com>
Date:   Mon Jan 8 08:54:15 2024 -0500

    Merge branch 'develop' into wip/np/payment-page-2

commit 717fba94a1b900318ae7d32664b1cb292cb47364
Author: Nikita Pekin <nikita@frecency.com>
Date:   Mon Jan 8 08:32:38 2024 -0500

    fix

commit 66a278effddfe57d326acfe93b9fd6ce9f849a65
Author: Nikita Pekin <nikita@frecency.com>
Date:   Mon Jan 8 06:10:37 2024 -0500

    rename endpoints

commit 05ca2276d796d5431a19623f18d97503d730746c
Author: Nikita Pekin <nikita@frecency.com>
Date:   Thu Jan 4 03:13:07 2024 -0500

    update for new API

commit ecc65a4b3bbf8167c91eb9cc9a71f05367ee41f6
Author: Nikita Pekin <nikita@frecency.com>
Date:   Tue Jan 2 09:02:23 2024 -0500

    make subscribe appear in app

commit 048883e343cc42ba75e2e1ebbfa50b9d3033255c
Author: Nikita Pekin <nikita@frecency.com>
Date:   Mon Jan 1 05:13:04 2024 -0500

    unify pricename and price

commit 5439299eaa01732bcee3204c72987845a569029b
Author: Nikita Pekin <nikita@frecency.com>
Date:   Sun Dec 31 22:57:52 2023 -0500

    rename checkout sessions endpoint

commit 67537302f9183918272324723b34e26659d10dbe
Author: Nikita Pekin <nikita@frecency.com>
Date:   Sun Dec 31 22:57:44 2023 -0500

    fix session ID

commit 637968331bf3d2c10b9c6130ae994529b9606fdd
Author: Nikita Pekin <nikita@frecency.com>
Date:   Sun Dec 31 19:59:29 2023 -0500

    fix stripe JS

commit 051a01e1988f62931e2b7f3f436b6490a09602e0
Author: Nikita Pekin <nikita@frecency.com>
Date:   Sat Dec 30 23:32:41 2023 -0500

    tmp: add AWS profile and refactor

commit 9f4199b22dfc5565bea737e31f8d379e098712a7
Author: somebody1234 <ehern.lee@gmail.com>
Date:   Sat Nov 4 04:49:29 2023 +1000

    Fix `ALL_PATHS_REGEX`

commit 4b53bcf7f82fe30c21db013d01dae58e20afb605
Author: somebody1234 <ehern.lee@gmail.com>
Date:   Mon Dec 18 17:15:33 2023 +1000

    Expose `unauthenticatedBackend` from backend context

commit 8d554ac16747392c9cd5d10a2c3ad6d79afb7268
Author: somebody1234 <ehern.lee@gmail.com>
Date:   Mon Dec 18 17:12:17 2023 +1000

    Add methods for making HTTP requests to unauthenticated backend

commit 2010890cbd38bff31b18e0847ea22a5b71f926d1
Author: somebody1234 <ehern.lee@gmail.com>
Date:   Mon Dec 18 17:04:49 2023 +1000

    Add unauthenticated backend

commit 04ac84533bee493194e32129f934ccd9c1df78d6
Merge: 1fa45bc73c d4714af826
Author: somebody1234 <ehern.lee@gmail.com>
Date:   Mon Dec 18 16:26:27 2023 +1000

    Merge branch 'develop' into wip/np/payment-page-2

commit 1fa45bc73cbbf50e53c6f3273559210e85b66c7e
Author: Nikita Pekin <nikita@frecency.com>
Date:   Sun Nov 12 07:01:45 2023 +0000

    tmp: Complete checkoutSession flow

commit 30ec2792256db5b2b448119b07213b79e3f8a3c5
Author: somebody1234 <ehern.lee@gmail.com>
Date:   Wed Nov 1 19:20:15 2023 +1000

    Initial Stripe integration

* revert requestedPlan changes

* switch to path from query

* Prettier

* Fix type error

* Switch environment back to production

* Fix errors

* Fix dev server by removing COOP/COEP/CORP on the dev server specifically

* Redirect after upgrading plan is successful

* Fix errors; fix initial size of Subscribe page

---------

Co-authored-by: somebody1234 <ehern.lee@gmail.com>
2024-02-22 19:56:36 +03:00
Adam Obuchowicz
7f5b2edbf5
Fix interfering click handlers (#9127)
Fixes one failure in #8942 which caught a real issue: clicks at various panels were triggering many handlers at once, often unexpectedly - for example quick clicking at breadcrumbs (and automatic tests always click fast) we could also trigger getting out the current node.

Therefore, I added `stopPropagation` for all mouse events on "panel" level + where I think the event should be considered "handled" and no longer bother anyone. Also, to unify things, most actions are for `click` event.

Additionally I spotted and fixed some issues:
* When "clicking-off" Component Browser, it creates new node only if anything was actually typed in (no more dangling `operatorX.` nodes)
* Filtering now works for operators
* When, after opening CB with source node, user starts typing operator, we replace dot with space
* Fixed our shortcut handler, so it works properly with `click` event.
* Fixed problems with defocusing input in CB when clicking at links.

# Important Notes
I removed `PointerMain` binding for deselectAll, because it was triggered every time did the area selection.
2024-02-22 15:18:28 +00:00
Kaz Wesley
323d46ec4e
Add property test for textChangeToEdits and applyTextEdits. (#9131)
Add a test for some functionality introduced in #9055.
2024-02-21 21:48:37 +00:00
Kaz Wesley
fdec1d0671
Self-arrows: Distinguish self arguments (#9116)
Distinguish self arguments; render edges to them as arrows, and use icons for their widgets.
2024-02-21 08:40:08 -08:00
Kaz Wesley
01fc65eec5
Self-argument arrows: New edge rendering mode (#9099)
Self-argument arrow rendering
2024-02-21 09:43:22 -05:00
somebody1234
c60d1ba36d
Fix bug in map visualization (#9119)
- Fix a bug where longitude was used as both latitude and longitude, due to a typo....

# Important Notes
- As our Mapbox token is no longer valid, the map visualization no longer works, even with this fix. As a result, this cannot be tested properly.
- However, this can still be tested somewhat, by seeing that the error is no longer present in the repro:
- Open the `Colorado COVID` template
- Open the viz on this node (at the bottom right of graph. it may help to zoom out using Ctrl+Shift+A.):
![image](https://github.com/enso-org/enso/assets/4046547/54849e5f-8a53-4f5b-8bdf-f08fe8ca51f0)
- Compare the errors logged in the console between `develop`, and this branch. This branch should not have the error about `lat` (latitude) being out of range.
2024-02-21 12:21:20 +00:00
Michael Mauderer
6c4c791d87
Display warnings on components (#9108)
Closes #8678

[Peek 2024-02-20 12-45.webm](https://github.com/enso-org/enso/assets/1428930/6bb6c4ad-5507-4b11-b2c9-b295bf10c745)
2024-02-21 11:40:07 +00:00
Paweł Grabarz
d415d133bb
Fix node edits (#9111)
* Prevent duplication of external IDs in syncTree

* trim component browser accepted value

* use flush post for visualization data watcher

* do not create empty nodes when closing component browser

* Lint

---------

Co-authored-by: Kaz <kaz@lambdaverse.org>
2024-02-20 16:40:50 -05:00
Michael Mauderer
e264189f6a
New ... menu in the top bar with zoom controls (#9073)
Closes #8614

https://github.com/enso-org/enso/assets/1428930/8b5b47e4-5ce5-4bf0-a42f-0b6c3d7d9323
2024-02-20 15:44:49 +00:00
mwu
3a2ca2ae0f we don't need to hardcode version numbers probably 2024-02-20 16:32:04 +01:00
Kaz Wesley
c811a5ae8b
Enable the Code Editor, with new apply-text-edits algo. (#9055)
- Fix the UI problems with our CodeMirror integration (Fixed view stability; Fixed a focus bug; Fixed errors caused by diagnostics range exceptions; Fixed linter invalidation--see https://discuss.codemirror.net/t/problem-trying-to-force-linting/5823; Implemented edit-coalescing for performance).
- Introduce an algorithm for applying text edits to an AST. Compared to the GUI1 approach, the new algorithm supports deeper identity-stability for expressions (which is important for subexpression metadata and Y.Js sync), as well as reordered-subtree identification.
- Enable the code editor.
2024-02-19 23:57:42 +00:00
Kaz Wesley
d75523b46f
Render target attachment bit as part of port. (#9068)
Fixes one issue from #8139.

Before:
![image](https://github.com/enso-org/enso/assets/1047859/1db71cda-7f9e-4d15-ac0f-14cb3c0b7c09)

After:
![image](https://github.com/enso-org/enso/assets/1047859/c5aafc56-d81d-447e-b725-fcb2e30b3c4e)
2024-02-19 20:02:29 +00:00
AdRiley
27ec236c19
rename database Table to DB_Table (#9067)
Rename database.Table to database.DB_Table to avoid name collisions as part of https://github.com/enso-org/enso/issues/8981
2024-02-19 17:31:58 +00:00
Kaz Wesley
760afbc7f4
Render unconnected edges above nodes. (#9069)
Fixes one issue from #8139.

Before:
![image](https://github.com/enso-org/enso/assets/1047859/b6d05734-f186-4213-b943-81fd868cf565)

After:
![image](https://github.com/enso-org/enso/assets/1047859/4e42907f-8579-4869-99a3-74aac920e65b)
2024-02-19 15:12:15 +00:00
somebody1234
50d5f32570
Fix dashboard tests (#9050)
Fixes issues that were causing CI to fail.

# Important Notes
None
2024-02-19 11:47:48 +00:00
Adam Obuchowicz
fddfa1150a
Fix for adding node in collapsed functions (#9060)
Fixes #9049

There were still some stubs left in node creation code.

# Important Notes
I haven't added any tests, as unit testing the graph store is very difficult - it has much tangled logic there. I'm going to try to untangle it a bit, but in a separate PR.
2024-02-19 09:14:46 +00:00
Michael Mauderer
6746bdc148
Implement full wheel component menu (#9029)
Closes #8612.


[Peek 2024-02-12 14-11.webm](https://github.com/enso-org/enso/assets/1428930/504a0e17-9d75-46b2-b5e9-d23ec09d6613)

# Important Notes
The `...` menu was added at the top of the menu as there is less visual interference with an opened visualisation.
2024-02-15 14:01:38 +00:00
Michał Wawrzyniec Urbańczyk
06c8776099
CI: Fix macOS notarization (#9066) 2024-02-15 11:53:51 +01:00
Adam Obuchowicz
8489316d83
WidgetFunction: merge dynamic config for a call with inherited one (#9042)
Fixes #9008

Now, even if we inherit FunctionCall config from parent widget (e.g. drop down), we still ask for config of the current call and try to merge them (preferring the inherited parameters).
2024-02-14 23:05:45 +00:00
Kaz Wesley
cfe3d99da0
Fix Code Editor click (#9051)
Clearing the selection on mouseup breaks the CodeMirror integration. Adding this exception for contenteditable elements would fix it. Is this compatible with whatever this event handler is needed for?
2024-02-14 17:27:27 +00:00
Adam Obuchowicz
ee381369b0
Remove vite-plugin-top-level-await plugin (#9038)
We've used the vite-plugin-top-level-await to support top level await. But most of them were removed anyway, because the ide-desktop/lib/client is bundled as CJS and use some of gui2 code. And the plugin [is causing problems](https://github.com/Menci/vite-plugin-top-level-await/issues/25), [also in our CI](https://github.com/enso-org/enso/actions/runs/7842841953/job/21402194728?pr=9013#step:8:458)
2024-02-14 09:42:37 +00:00
AdRiley
5c7947ce60
Rename database column to DB_Column (#9046)
Rename database column to DB_Column to avoid name collisions as part of https://github.com/enso-org/enso/issues/8981
2024-02-14 09:11:52 +00:00
somebody1234
92f420efec
Add "Invite" button on top right (#8987)
- Implement https://github.com/enso-org/cloud-v2/issues/884
- Add an "Invite" button that is present when the "Share" button is not present

# Important Notes
None
2024-02-13 12:17:45 +00:00
Adam Obuchowicz
36722eaf55
Retry E2E tests on CI (#9040)
To guard us from flaky tests, CI will run every test three times and fail if _any_ of the run fails.

This way we hope most flakiness will be catch before merging PR.

Configured dashboard in the same way.
2024-02-13 11:43:56 +00:00
somebody1234
f7a84d06e4
Organization settings page (#8960)
- Close https://github.com/enso-org/cloud-v2/issues/840
- Add organization page
- Add wrappers for required API endpoints (get, update, delete org; upload org picture)

# Important Notes
None
2024-02-13 09:21:40 +00:00
somebody1234
ecc434e788
Fix dashboard issues (#9015)
- Fix https://github.com/enso-org/cloud-v2/issues/892
- Fix listing recent projects (currently errors ⚠️)
- Fix "update" action in the "duplicate files found when uploading" modal doing nothing, when overwriting a file newly created in the current session
- Remove dropzone (very oudated) in favor of dropping directly onto directory rows
- Fix various issues with dragging
- Fix all spinners not animating on Firefox
- Fix column selector disappearing all the way to the right on Firefox
- Change auto-generated name of duplicate files from `foo (2)` to `foo 2`

# Important Notes
None
2024-02-12 14:07:58 +00:00
somebody1234
a8d5dcceac
Fix chat styling; fix focus issues in chat (#8988)
- Implement https://github.com/enso-org/cloud-v2/issues/885
- Adjust chat styling to match more with the rest of the `ide2` Figma design (and the screenshots from the original issue...)

# Important Notes
None
2024-02-12 12:48:08 +00:00
Adam Obuchowicz
a0029f2451
Small boolean widget tweaks (#8994)
Fixes #8962
2024-02-12 11:33:03 +00:00
Ilya Bogdanov
e1943bdd49
Properly propagate dynamic configuration inside dropdown widget (#8983)
Closes #8932

Now we use a bit more robust mechanism for passing dynamic configuration down the widget tree inside dropdowns, no longer relying on the `label`s used for dropdown items.

Curiously, we still need to use a hotfix implemented earlier, as we won’t have info about the currently selected item otherwise. Highlight for the currently selected item is not crucial as proper dynamic config, so we can leave with the current solution in the meantime.

No visual changes to the IDE, apart from fixed highlight for currently selected item.

# Important Notes
Target branch: #8950, for easier testing.
2024-02-12 10:17:29 +00:00
somebody1234
129022ae12
Support for creating and editing Data Links (#8882)
- Close https://github.com/enso-org/cloud-v2/issues/734
- Add modal to create a new Data Link
- Add the same input to the asset right panel
- Add entries on context menu and Drive Bar
- The shortcut is <kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>Alt</kbd>+<kbd>N</kbd>
- Add (and use) corresponding backend endpoints

# Important Notes
- All UI is currently generated based off of a single-source-of-truth JSON Schema file.
- JSON Schema was chosen for a few reasons:
- trivial to parse (it's plain JSON)
- sufficiently powerful (supports unions (used in the initial schema), objects, and singleton/literal types)
- but still quite simple (this makes it easier to implement various utilities for, because there are fewer cases to cover)
- Note that it is definitely possible to change this. The original suggestion was a TypeScript file, which can definitely be done even using just the `typescript` package itself - I just prefer to avoid adding another step in the build process, especially one that depends on the `typescript` package at runtime.
- Note also that we *do* actually bundle transpilers as part of the visualization loading code in GUI2 - so for now at least, the size of the dependency isn't a primary concern, but rather just the mental overhead of having another dependency for this one specific task.
2024-02-12 10:05:30 +00:00
James Dunkerley
aed59d316d
Text Editor shows up for Text only parameters. (#9014)
- Fix type name so that Text Editor shows for parameters.
- Following on from #9010, now show the default text values.
![image](https://github.com/enso-org/enso/assets/4699705/da68fec4-25b9-4e04-ba13-a2d112cf67c9)
2024-02-09 17:26:15 +00:00
Ilya Bogdanov
6881bc844e
Fix eslints in the project (#9005)
When using `npm run lint`, there are a lot of warnings for the last couple of weeks, and it is really annoying because I keep skipping important warnings for my files.
2024-02-09 11:22:33 +01:00
Adam Obuchowicz
1c46eecd90
Dispose ydocs provider when closing app (#8990) 2024-02-08 18:39:05 +04:00
Michael Mauderer
1619b2d64f
New scenarios for e2 e tests: Loading Table Visualization & Fullscreen Vis (#8989)
Adds e2e test for table visualisation and full-screen visualisaiton.
2024-02-08 12:17:56 +00:00
James Dunkerley
93f2a44633
Add some ICON tags and a few new Icons. (#8996)
- Apply @Cassandra-Clark's ICON tags to the library code.

- Fix bug with Table viz not showing row count in dropdown list. **Doesn't fix defect with dropdown not changing data.**
![image](https://github.com/enso-org/enso/assets/4699705/dfbdba91-5f4f-4c89-8ae8-f30156047162)

- Added missing icons.
![image](https://github.com/enso-org/enso/assets/4699705/145191cd-d31a-45f1-8bb2-fcc3cf0f1207)
![image](https://github.com/enso-org/enso/assets/4699705/2a8e0530-2470-4ec8-b836-57bed8520c28)
2024-02-08 09:56:57 +00:00
Ilya Bogdanov
851791183d
Add a small arrow for dropdowns (#8950)
A **temporary** solution for #8949. Not pretty, but it solves the issue for now.

https://github.com/enso-org/enso/assets/6566674/d8b28c60-b210-486f-8c93-c6041a2062e3
2024-02-07 14:59:02 +00:00
somebody1234
784d06912f
Make (almost) all interfaces readonly (#8800)
This is not strictly necessary (as indicated by the fact that no actual logic needed to be changed), but it doesn't hurt to make this change.
- Make (almost) all `interface`s `readonly`
- Some of them are *not* readonly; this is intentional as those *do* need to be mutated
- A `no-restricted-syntax` lint rule has been added, but only for `interfaces` - it has been added neither for `classes` nor for `readonly T[]`
- A lint rule for `extends React.PropsWithChildren` instead of `extends Readonly<React.PropsWithChildren>` would be easy to add though...

# Important Notes
- There should be no logic changes, so QA shouldn't need to test anything in particular.
2024-02-07 11:26:59 +00:00
somebody1234
2db13bd168
Fix saved project validation (#8951)
Fix an oversight of project validation disallowing `accessToken: null`, which will be the case when in offline mode/not logged in.

# Important Notes
None
2024-02-07 10:47:04 +00:00
Kaz Wesley
e0ba39ed3e
Introduce SourceDocument for text edit support (#8957)
Introduce `SourceDocument`, a reactive source code representation that can be synced from a `MutableModule`. `SourceDocument` replaces various logic for tracking source code and spans--most importantly, `ReactiveModule`. There is no longer any reactively-tracked `Module`, per-se: Changes to the `MutableModule` attached to the synchronized `ydoc` are pushed as Y.Js events to the `SourceDocument` and `GraphDb`, which are reactively tracked. This avoids a problem in the upcoming text-synchronization (next PR) that was caused by a reactive back channel bypassing the `GraphDb` and resulting in observation of inconsistent states.

Stacked on #8956. Part of #8238.
2024-02-06 16:44:24 +00:00
Michael Mauderer
678270ac69
New scenarios for E2E tests - Interactions with Edges (#8917)
Adds e2e test for interactions with edges.
2024-02-06 16:15:00 +00:00
somebody1234
8bfdf0063a
Bump expect timeout and add retries for dashboard E2E tests (#8939)
- Fix flaky dashboard E2E tests that occur because of timeouts

# Important Notes
None
2024-02-06 15:52:03 +00:00
Kaz Wesley
06f18864f4
Refactoring before text edits (#8956)
Changes in preparation for #8238 features.

# Important Notes
Changed edit APIs:
- **`graph.astModule` is deprecated.** It will be removed in my next PR.
- Prefer `graph.edit` to start and commit an edit.
- Use `graph.startEdit` / `graph.commitEdit` if the edit can't be confined to one scope.
2024-02-06 14:43:17 +00:00
Adam Obuchowicz
6517384bbb
Interpret documented nodes properly (#8978)
When a node has documentation, it becomes a special "Documented" AST node.
2024-02-06 10:45:16 +00:00
Adam Obuchowicz
e88d8d8756
Fix vector widget in non-argument literal (#8972)
Fix vector widget not appearing in non-argument list literals. Added tests for showing widgets for various literals.
2024-02-06 09:43:38 +00:00
Paweł Grabarz
d418a02014
Update icon definitions to new figma export format (#8860)
Related to #8387

Updated icons file to match the export format of figma plugin.
2024-02-05 15:29:45 +00:00
Adam Obuchowicz
fa4b980d67
Reduce test flakiness (#8947)
Probably fixes the first point in #8942

My guess is that the mockExpressionUpdate may be not set in cases when the test runs before App mounting. To make sure all the setup is done, we wait for `App` widget to being mounted before proceeding.

# Important Notes
This PR also change the way we run test's server. Before it was always a production build, but this makes development iteration long. Now we test production build only on CI or when `PROD=true` env variable is set.
2024-02-05 14:20:24 +00:00
Ilya Bogdanov
801cc7b37d
Fix dangling node connection (#8902)
Fixes #8871

The issue was caused by invalid port registration. Because of the existing context switch expression (which is not visible in GUI),  the port incorrectly considered itself to belong to another node. This happened because the port was only aware of the visible part of the node’s AST and considered it the whole node.

There are two fixes in this PR. Either of them fixes the issue, and they are both implemented for robustness:
1. We provide `nodeId` information to the widget tree, so it no longer assumes the node ID from AST.
2. The order of checks in `getPortNodeId` is swapped. Now we first search by AST, only then try to look up the port. It makes sense to me because the AST is a single root of truth, and we should only rely on registered ports if AST does not exist (which happens for unconnected ports).
2024-02-05 10:49:55 +01:00
Adam Obuchowicz
1a8b82e237
Another set of small fixes (#8946)
* `Enter` key accepts the edit in Numeric and Text input
* Newly added node are selected
* Placement of new nodes takes opened visualizations into account.

[Screencast from 2024-02-02 13-02-26.webm](https://github.com/enso-org/enso/assets/3919101/0f328824-1cbc-4b07-988e-dbf17b94dc2f)
2024-02-02 18:11:28 +01:00
Adam Obuchowicz
8eeef71c26
Fix loading wasm for ydocs server (#8952)
#8893 introduced a fatal regression for old IDE + new IDE also does not work on every system.

The fix:
1. Don't assume that WASM needed by ydocs server is bundled
2. Don't assume we know its exact name.
2024-02-02 17:01:58 +01:00
Ilya Bogdanov
45221d9167
A quick fix for incorrectly working dropdowns. (#8933)
Partial fix for #8932 

https://github.com/enso-org/enso/assets/6566674/75a878fb-891b-44fc-bdfd-c3cbb90c9f35

This is not a correct fix, as comparing strings is not what we really want, but it should fix most of use cases.
2024-02-02 15:55:22 +01:00
Kaz Wesley
343a644051
Syntactic synchronization, automatic parentheses, metadata in Ast (#8893)
- Synchronize Y.Js clients by AST (implements #8237).
- Before committing an edit, insert any parentheses-nodes needed for the concrete syntax to reflect tree structure (fixes #8884).
- Move `externalId` and all node metadata into a Y.Map owned by each `Ast`. This allows including metadata changes in an edit, enables Y.Js merging of changes to different metadata fields, and will enable the use of Y.Js objects in metadata. (Implements #8804.)

### Important Notes

- Metadata is now set and retrieved through accessors on the `Ast` objects.
- Since some metadata edits need to take effect in real time (e.g. node dragging), new lower-overhead APIs (`commitDirect`, `skipTreeRepair`) are provided for careful use in certain cases.
- The client is now bundled as ESM.
- The build script cleans up git-untracked generated files in an outdated location, which fixes lint errors related to `src/generated` that may occur when switching branches.
2024-02-02 10:22:18 +01:00
Adam Obuchowicz
ed65af7005
CB preview debounce (#8909)
To make engine's life a bit easier, we added 200ms debounce to CB preview updates.
2024-02-01 17:37:00 +00:00
Michał Wawrzyniec Urbańczyk
9a2bb19a89
CI: Native aarch64 macOS builds, refactoring workflow generation (#8864)
This PR adds a native aarch64 target to our release process.

It also includes refactoring of workflow generation and minor tweaks:
* removing some workarounds in the generated action code that are not needed anymore;
* some version bumps that are harmless;
* release builds have cleaning enabled unconditionally.
2024-02-01 13:53:50 +01:00
somebody1234
4f7032f966
Add dashboard tests to GUI2 CI; fix dashboard tests (#8922)
- Close #8911
- Add dashboard unit tests to GUI2 CI
- Add dashboard E2E tests to GUI2 CI
- Fix (minor) issues in dashboard unit tests

# Important Notes
None
2024-02-01 11:03:58 +00:00
somebody1234
41c7b5afb4
Version panel (#8746)
- Closes https://github.com/enso-org/cloud-v2/issues/784
- Add version panel

# Important Notes
- The backend sends an `isLatest` field in the response, but this is currently *not* shown in the UI because I think it isn't particularly useful.
- Versions are displayed in descending order (most recent first)
- Versions have hover effects, but there is not yet any relevant behavior that can be triggered on click.
- The versions breadcrumbs control displays the version number in the Figma design, however it is not yet returned by the cloud backend (and should ideally not take an extra request)
2024-02-01 08:47:43 +00:00
Michael Mauderer
1ba28a3c5c
New scenarios for E2E tests - Displaying Edges (#8904)
Adds e2e test for rendering edges.
2024-01-31 13:42:36 +00:00
somebody1234
cbf6d41e4c
More E2E tests; export default classes from modules (#8730)
This is a prerequisite for adding a CI action for E2E tests.

- Fix E2E tests
- Remove visual regression testing (VRT) and associated fixtures (screenshots) for now
- Switch dashboard almost fully to Vite, from ESBuild, to match GUI2's build tooling.
- Add some new E2E tests:
- Creating assets
- Deleting assets
- Creating assets from the samples on the home page
- Sort assets
- Includes fixes for sorting:
- Group sorted assets by type again (regression) (see https://github.com/enso-org/cloud-v2/issues/554)
- Make sorting by title, case insensitive. This is because it is more intuitive for non-programmers if all items with uppercase names *aren't* separated from those with lowercase names - especially since the Windows FS is case-insensitive.
- Normalization of Unicode letters is *not* currently being done. It can potentially be added later.
- Double-clicking *anywhere* on a directory row now expands it. Previously it was only being expanded when double clicking
- Add recursive label adding/removal to mirror backend
- Note: The current implementation is not exactly the same as the backend's implementation.
- Fix https://github.com/enso-org/cloud-v2/issues/872
- Unset "saved project details" (for opening the last open project) if fetching it produces an error.

# Important Notes
- All tests pass. (run `npm run test:e2e` in `app/ide-desktop/lib/dashboard`)
- All `npm` commands should be run in `app/ide-desktop/lib/dashboard`. `dashboard:*` npm scripts have been removed from `app/ide-desktop` to prevent a mess.
- `npm run dev` confirmed to still work. Note that it has not been changed as it was already using Vite.
- `npm run build` now uses `vite build`. This has been tested using a local HTTP server that supports `404.html`.
- Other cases have been tested:
- `npm run test:e2e` works (all tests pass)
- `./run ide build` works
- `./run ide watch` works
- `./run ide2 build` works
- `./run gui watch` works
2024-01-31 11:35:41 +00:00
Ilya Bogdanov
057bf17ffb
Fix wrapping in doc panel (#8887)
Fixes soft-wrapping of lines in documentation panel.
2024-01-30 15:05:39 +01:00
Ilya Bogdanov
ad6348a12a
Text input widget (#8873)
Closes #8823

https://github.com/enso-org/enso/assets/6566674/966576ec-6507-401c-98d3-bd71c2ffc6b2

Adds a basic text widget for text literals. 

### Important Notes

Several known restrictions:
- Separators would always be replaced with single quotation marks. All types of separators in Enso are supported though, and they would be correctly escaped if needed.
- Logic for widget selection probably needs refinement (works for text literals and `Text` types, but does not work for `Text | Integer`, for example)
- **(!)** There is a very annoying issue when the input field suddenly loses focus, closing the editing mode and discarding any changes. Debugging shows that it happens when we receive an engine update (and probably recreate the node component/widget tree (???)). It requires a separate investigation.
2024-01-30 15:05:28 +01:00
Adam Obuchowicz
2ca4fe94e2
Fix breadcrumbs navigation (#8874)
Fixes #8756

The items were added to stack in wrong order (I wonder how on earth it worked with the engine).
2024-01-29 10:53:44 +00:00
Michael Mauderer
abe0875072
New scenarios for E2E - Displaying proper types on nodes on hover (#8856)
Adds a new test scenario that checks that types are correctly set and displayed after an expression update. Includes checking the string set on the node as well as showing the type label when hovering the output port of a node.
2024-01-29 10:37:44 +00:00
Adam Obuchowicz
ad7fad42fa
Make run button execute in live mode (#8876)
What can I say? It's not quite a bug. Rather a wrong implementation

Anyway, fixes #8810
2024-01-29 09:50:52 +00:00
Adam Obuchowicz
057245ea5e
Fix nested drop downs + test scenarios for drop-down and vector widgets. (#8859)
Part of #8518
Closes #8822

The drop downs were missing, because WidgetFunction had a higher score than them and took precedence. The fix was to adjust scores, so drop down is before both argument name and function. Generally, any widget expecting to "overlap" existing code (and possibly further widgets) should go before WidgetFunction.

# Important Notes
* Extended mockExpressionUpdate to accept a subexpression of a node. Also, I removed it from GraphDb - I want this function to have as little impact on app code as possible.
2024-01-26 17:18:27 +00:00
Kaz Wesley
a04385a6a4
New AST APIs (#8851)
Introduce new AST APIs. They will be used for synchronization in the next PR.

# Important Notes
- `Module.edit` now clones a YDoc containing all the module's data; the resulting `MutableModule` can be edited with mutation APIs.
- Every AST type now has a mutable subtype. These `MutableAst` types expose all editing operations that were previously in `MutableModule`, such as `replace`; they also provide field setters.
2024-01-26 11:32:35 +00:00
Adam Obuchowicz
5dd2dc1c93
Fix gui2 typecheck (#8870) 2024-01-26 09:15:01 +01:00
Ilya Bogdanov
6f51894273
Align collapsed node to the leftmost selected one (#8844)
As discussed on the latest demo.


https://github.com/enso-org/enso/assets/6566674/c68f1df4-285e-413b-b05e-13394dffe3bd
2024-01-25 16:19:41 +01:00
somebody1234
6e7672a424
Add settings page; add endpoints for deleting user and uploading profile picture (#8720)
- Depends on unmerged backend features:
- https://github.com/enso-org/cloud-v2/issues/832
- https://github.com/enso-org/cloud-v2/issues/833
- Close https://github.com/enso-org/cloud-v2/issues/829
- Add scaffold for settings page
- Add endpoint for deleting user
- Add endpoint for uploading profile picture
- Modify API types to add profile picture to user info
- Add shortcuts:
- <kbd>Cmd</kbd>+<kbd>,</kbd> to open settings page (shortcut taken from VS Code)
- <kbd>Esc</kbd> to close settings page
- ℹ️ Note that, while the settings page is considered as a page by the logic, it is not saved for the next session, as the settings page should be a transitional page (it should only ever be open to do one specific task, and then immediately closed again)
- Partly implement https://github.com/enso-org/cloud-v2/issues/840
- Add "members" tab with member list
- Add "Invite Users" button to be able to invite multiple users
- Misc. QoL improvements
- Deselect selections when clicking away from the selection

# Important Notes
None
2024-01-25 15:10:51 +00:00
Adam Obuchowicz
3a849ea01b
Connection and visualization fixes (#8803)
Fixes several points from #8745
* Brought back cursor pointer in full screen visualization
* Changed behavior of edge disconnected from one side: Esc will bring the connection back, while click will remove it (and start creating new node if the source was connected).
* When hovering connection, the "active" part (i.e. the part which will be the hanging connection after click) is in normal color, and the rest is dimmed.

[Screencast from 2024-01-19 09-06-48.webm](https://github.com/enso-org/enso/assets/3919101/6df28a9c-51b3-4f98-be10-a35275eac800)
2024-01-25 14:18:26 +00:00
Ilya Bogdanov
a3873b9565
Numeric input widget (#8837)
Closes #8751
Closes #8752

- The numeric widget allows the use of the input field after clicking with LMB
- Slider is only visible if the engine provides widget configuration with set limits (see below for testing)
- Setting value outside limits is possible
- For now, to distinguish drag from click, we compare relative mouse movement on the mouse up event. We might benefit from using a timer instead, but let’s see how good it is now.
- Changes after demo
- No more input validation. You can enter literally anything and it would be accepted.
- Updates debouncing – the code is updated on defocus or when slider dragging has finished.


https://github.com/enso-org/enso/assets/6566674/b3580083-c678-4734-881c-97f8ac56176b
2024-01-25 09:41:37 +00:00
somebody1234
899f7e4e61
Fix offline detection (#8829)
- Closes https://github.com/enso-org/cloud-v2/issues/860

# Important Notes
None
2024-01-25 06:36:03 +00:00
Kaz Wesley
f88bd90ebb
Refactor for YJs AST (#8840)
Some refactoring separated from #8825 for easier review.

# Important Notes
**ID types**

The new *synchronization IDs* will replace `ExprId` for `Ast` references in frontend logic. `ExprId` (now called `ExternalId`) is now used only for module serialization and engine communication. The graph database will maintain an index that is used to translate at the boundaries. For now, this translation is implemented as a type cast, as the IDs have the same values until the next PR.

- `AstId`: Identifies an `Ast` node.
- `NodeId`: A subtype of `AstId`.
- `ExternalId`: UUID used for serialization and engine communication.

**Other changes**:

- Immediate validation of `Owned` usage.
- Eliminate `Ast.RawCode`.
- Prepare to remove `IdMap` from yjsModel.
2024-01-24 19:22:05 +00:00
Adam Obuchowicz
f5c02d36e2
Fix addRequiredImport so it is not fooled by existing module changes (#8813)
A follow-up of [this comment](https://github.com/enso-org/enso/pull/8740#discussion_r1452282468)

`addRequiredImport` now reads the existing import from the edit instead of taking them from the current module. This way, it will consider any imports added so far as part of this edit.
2024-01-24 12:03:25 +00:00
somebody1234
0a493de012
Update uploaded files (#8797)
- Close https://github.com/enso-org/cloud-v2/issues/856
- Implement upload for existing files
- This is triggered by uploading a file with the same name.
- Add a modal that allows the user to select whether to rename or update the file, for each conflicting file

# Important Notes
- There are a *lot* of buttons in the modal. Any ideas on how to make this screen clearer/simpler/easier to understand would be greatly appreciated.
- There are currently a few minor backend issues preventing all functionality from fully working:
- Projects currently cannot be updated due to a bug
- Neither files nor projects can be uploaded if their name contains `()` - e.g. `foo (2).txt`
2024-01-23 09:55:15 +00:00
somebody1234
5f1333a519
Change dashboard to use 2 spaces for indentation (#8798)
This makes it consistent with the indentation style of GUI2.

# Important Notes
- This commit *will* need to be added to [`.git-blame-ignore-revs`](https://github.com/enso-org/enso/blob/develop/.git-blame-ignore-revs) *after* it is merged.
- This shouldn't need any particular QA (although QA doesn't hurt), as the only thing that was done is a `npx prettier -w .`, meaning that there should be zero logic changes.
2024-01-22 21:26:15 +00:00
somebody1234
bd4f46499f
Remove underscores from default project and folder names (#8819)
- Closes https://github.com/enso-org/cloud-v2/issues/857
- Changes format for new folders from `New_Folder_1` to `New Folder 1`
- Changes format for new projects from `New_Project_1` to `New Project 1`
- Uses names for projects created from templates, rather than `Upper_Snake_Case`d IDs

# Important Notes
- Folders containing spaces work fine on cloud backend
- ⚠️ Unable to test opening a project with a space in its name on the cloud backend.
- Projects containing spaces work (open, edit, and execute fine on local backend
2024-01-22 11:38:15 +00:00
somebody1234
d16a645e8e
Prevent dragging rows when editing, and when on local backend (#8747)
- Fix https://github.com/enso-org/cloud-v2/issues/848
- Disables dragging rows when a row is being edited
- Also disables dragging rows on the local backend, as folders are not yet supported there
- Fix other issues found (not sure if they were introduced by this PR):
- Cut (Cmd+X) does not fade out assets
- Cancelling editing names actually still renames the asset
- Cut/Copy/Paste/Undo shortcuts when renaming *also* trigger "copy assets" (etc.) shortcuts
- Apply suggested QoL improvement:
- Disallow renaming an asset to a blank name (a name consisting only of whitespace). Current (new) behavior is to silently revert the asset name to its original name.

# Important Notes
None
2024-01-22 11:06:45 +00:00
Ilya Bogdanov
d5d4793e0e
Positioning for nodes created when collapsing (#8771)
Closes #8699


https://github.com/enso-org/enso/assets/6566674/82e1bdb3-3f37-4122-9e73-92d39acd0f13
2024-01-18 14:30:13 +00:00
Ilya Bogdanov
f96e5dddd6
e2e tests for collapsing and entering nodes (#8758)
Related to https://github.com/enso-org/enso/issues/8518

These tests already caught one regression in nav breadcrumbs: https://github.com/enso-org/enso/issues/8756

It also provides API for mocking expression updates for arbitrary nodes on the screen. The implementation is a bit convoluted and includes setting a callback on `window`, but it looks like the only possible solution given our architecture and playwright restrictions.
2024-01-18 13:45:18 +00:00