Commit Graph

20 Commits

Author SHA1 Message Date
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
9cf4847a34
Keyboard navigation between components (#9499)
- Close https://github.com/enso-org/cloud-v2/issues/982
- Add keyboard navigation via arrows between different components
- This is achieved by a `Navigator2D` class which keeps track of the closest adjacent elements.

Other changes:
- Switch much of the codebase to use `react-aria-components`
- This *should* (but does not necessarily) give us improved accessibility for free.
- Refactor various common styles into styled components
- `FocusArea` to perform automatic registration with `Navigator2D`
- `Button` and `UnstyledButton` to let buttons participate in keyboard navigation
- `HorizontalMenuBar` - used for buttons below the titles in the Drive page, Keyboard Shortcuts settings page, and Members List settings page
- `SettingsPage` in the settings pages
- `SettingsSection` in the settings page to wrap around `FocusArea` and the heading for each section
- Add debugging utilities
- Add debugging when `body` has the `data-debug` attribute: `document.body.dataset.debug = ''`
- This adds rings around elements (all with different colors):
- That are `FocusArea`s. `FocusArea` is a wrapper component that makes an element participate in `Navigator2D`.
- That are `:focus`ed, and that are `:focus-visible`
- That are `.focus-child`. This is because keyboard navigation via arrows ***ignores*** all focusable elements that are not `.focus-child`.
- Debug `Navigator2D` neighbors when `body` has the `debug-navigator2d` attribute: `document.body.dataset.debugNavigator2d = ''`
- This highlights neighbors of the currently focused element. This is a separate debug option because computing neighbors is potentially quite expensive.

# Important Notes
- ⚠️ Modals and the authentication flow are not yet fully tested.
- Up+Down to navigate through suggestions has been disabled to improve UX when accidentally navigating upwards to the assets search bar.
- There are a number of *known* issues with keyboard navigation. For the most part it's because a proper solution will be quite difficult.
- Focus is lost when a column (from the extra columns selector) is toggled - because the button stops existing
- It's not possible to navigate to the icons on the assets table - so it's current not possible to *hide* columns via the keyboard
- Neighbors of the extra columns selector are not ideal (both when it is being navigated from, and when it is being navigated to)
- The suggestions in the `AssetSearchBar` aren't *quite* fully integrated with arrow keyboard navigation.
- This is *semi*-intentional. I think it makes a lot more sense to integrate them in, *however* it stays like this for now largely because I think pressing `ArrowUp` then `ArrowDown` from the assets table should return to the assets table
- Likewise for the assets table. The reason here, however, is because we want multi-select. While `react-aria-components` has lists which support multi-select, it doesn't allow programmatic focus control, making it not particularly ideal, as we want to focus the topmost element when navigating in from above.
- Clicking on the "New Folder" icon (and the like) do not focus on the newly created child. This one should be pretty easy to do, but I'm not sure whether it's the right thing to do.
2024-04-05 07:21:02 +00:00
somebody1234
3c5e15bbbd
Prevent context menus from going off the left side of the screen (#9567)
- Occurs when right clicking near the left side of the screen.

# Important Notes
None
2024-04-01 09:05:49 +00:00
somebody1234
770e18768a
Move all user-facing text to a central location (#8831)
- Closes https://github.com/enso-org/cloud-v2/issues/861
- Adds a `getText` function and React Context to abstract away all text that is shown to users

The main immediate benefit is making all text much more discoverable - both being able to know of every piece of text used across the entire application, and making it a lot easier to refactor certain strings when needed rather than having to hunt for strings to replace (and potentially miss one).

The longer term benefit is that this will make it easy to add localization, by simply adding another JSON file with the same keys as the existing one, and adding a little bit of logic.

# Important Notes
None
2024-03-25 08:13:24 +00:00
Sergei Garin
7c3e316239
Diff editor (#9458)
Closes  enso-org/cloud#940
2024-03-23 18:44:56 +00:00
somebody1234
4379df7c2d
"Activity log" settings page (#9311)
- Close https://github.com/enso-org/cloud-v2/issues/942
- Add "Activity log" settings page
- Show info common between all events
- Specific event info NOT added yet as the appropriate info is currently lacking
- Add support for multi-select in dropdowns (required for the "Activity log" settings page)
- Animate opening of dropdowns

# Important Notes
None
2024-03-19 06:17:28 +00:00
somebody1234
2ec7817068
Refactor CSS; address some design issues (#9260)
- Implement https://github.com/enso-org/cloud-v2/issues/924
- Refactor all numbers out to CSS variables
- Implement some issues raised in the design meeting
- The columns selector now only contains *hidden* columns, rather than all of them.
- Unified opacity for active (100%), selectable and hovered (75%), selectable (50%) and disabled (30%)
- Easily configurable if we want to change it in the future, so the specific values don't matter too much for now.
- Always show asset right panel if it is enabled - display placeholder text if <1 or >1 asset is selected
- Hide docs icon that was in the top right assets menubar (next to the gear icon for asset settings) (as backend functionality has yet to be implemented)
- Clicking a user in the "Shared with" column now adds them to the search as `owner:<username>`
- Add a gap between adjacent rows. This makes each row more visually distinct when many rows are selected
- Center the left column (the first column) of the context menu below the mouse, rather than centering the entire context menu.
- Fix regressions caused by CSS refactor
- Make keyboard selection indicator for asset rows rounded again
- Other misc. fixes and improvements
- Slightly modified styling of chat reaction bar
- Hide the row containing the "New Project" button in the cloud drive, when not in the "Home" drive tab
- Animate rotation of column sort arrow when clicking on a column to change the sort order
- Consistent duration of arrow rotation animation for folder arrows, column sort arrows, chat thread list arrows
- Consistent icon for sort arrow for folders and the chat thread list
- Minor adjustment of styles for optional properties in the Data Link input

Not included in this PR:
- Custom (HTML) scrollbars for consistency across all browsers and all OSes (except perhaps touchscreens)
- Potentially time-consuming to look for a library (and not quite trivial to implement ourselves)
- Columns sliding left as they expand and right as they collapse
- Also non-trivial, especially when taking into account horizontal scrolling.
- Fixing styles to closer resemble Figma design
- As (kinda) mentioned in the meeting - ideally it should be pixel perfect, *but* value consistency with other spacings, opacities etc. over being 100% pixel-perfect
- However, it has *partly* been done - mostly for the home page. It's entirely possible that changes made afterwards broke the spacing again though.

# Important Notes
None
2024-03-13 10:32:05 +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
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
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
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
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
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
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
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
2142e7d273
Fix secrets, add "update secret" endpoint, fix search bar RWD (#8713)
- Fix https://github.com/enso-org/cloud-v2/issues/828
- Fix appearance of search bar on small screens
- Close https://github.com/enso-org/cloud-v2/issues/830
- Rename "Data Connector" back to "Secret" for now
- Fix "create secret" endpoint
- Add "update secret" endpoint
- Repurpose "create secret" modal to also be usable for updating secrets
- Add new context menu option for editing secrets
- Add new shortcut (<kbd>Ctrl</kbd>+<kbd>E</kbd>) for editing secrets
- Add double-click trigger for editing secrets
- Fix https://github.com/enso-org/cloud-v2/issues/831
- Add the redirect, that was previously missing (only present in the very old dashboard)
- Fix https://github.com/enso-org/cloud-v2/issues/835
- Fix search query not updating when clicking label in sidebar
- Fix search query breaking when clicking a suggested label, after tabbing into a selection
- Fix https://github.com/enso-org/cloud-v2/issues/839
- Make search query refresh when pressing <kbd>Enter</kbd>
- Fix some buggy behavior when applying autocomplete

# Important Notes
None
2024-01-10 21:17:14 +00:00
somebody1234
405f4be605
Project Description/Settings sidebar (#7612)
- Closes https://github.com/enso-org/cloud-v2/issues/629
- Project Description/Settings sidebar

# Important Notes
⚠️ This is blocked by backend support for asset descriptions.

When the sidebar is opening, there is one jumpy animation:
- The search bar switches from being centered in the screen, to having an equal gap between itself and its siblings
2023-11-30 12:40:01 +00:00
somebody1234
1e93e69523
Improve label interactions (#8417)
- Fixes https://github.com/enso-org/cloud-v2/issues/781
- Implement parser for search query
- Change all UI (labels column, labels side panel, searcher in top bar) to use search query parser
- Change "remove label from asset" to right click
- Also add a tooltip to notify user that right click removes the label
- Change click action on label on asset, to toggle the label from the search
- Stop sending the list of labels for filtering on the server side

Unrelated changes:
- Switch dashboard dev server to use Vite. All other servers should be unaffected.
- `ide watch` works
- `ide build` works
- `gui watch` works
- `dashboard build` works

# Important Notes
There are quite a lot of new interactions with the search bar which should probably all be tested.
2023-11-29 17:29:25 +00:00