Commit Graph

718 Commits

Author SHA1 Message Date
Sylvie Crowe
6d32ae856c
Reveal Parent Directories in External Applications (#1791)
Adds context menu options to the directory preview to open the parent
directory in the native file viewer. Additionally, it adds context menu
options in the block header to open either a parent directory or a
different type of file in an external default application. These context
menu items are only available for local directory previews.
2025-01-22 19:09:07 -08:00
Mike Sawka
e3a9b80df5
return true (cancel) the enter key event in typeahead (#1804) 2025-01-22 18:22:45 -08:00
Sylvie Crowe
e2800b39b6
S3 Frontend (#1723)
Adds the following changes to the frontend as a part of the S3 Feature.
- Refactor of the Connections Typeahead to make the code easier to read
and navigate
- Adds a new section for s3 profiles to be added to the dropdown
2025-01-22 18:16:39 -08:00
Evan Simkowitz
a1f97bd91c
Fix border radii for webview container (#1803) 2025-01-22 18:15:42 -08:00
Evan Simkowitz
4abf839e39
Fix directory preview table padding (#1802) 2025-01-22 17:58:31 -08:00
Mike Sawka
735d963aae
actually call the getter (#1800) 2025-01-22 17:50:02 -08:00
Mike Sawka
68cf3fd412
fix statfile atom dependencies via formatRemoteUri (#1797) 2025-01-22 17:42:53 -08:00
Evan Simkowitz
62eec93b17
Improve preview and web widget padding (#1796)
Removes the padding for most of the specialized previews, moves where
it's defined for the directory preview so that the header borders extend
to the edge of the block
2025-01-22 17:08:25 -08:00
Evan Simkowitz
11fec5695c
wsh file overhaul without cross-remote copy and S3 (#1790) 2025-01-22 14:50:09 -08:00
Mike Sawka
84d4191a9d
ctrl-shift state fix + add new keybindings to docs (#1792) 2025-01-22 09:53:18 -08:00
Sylvie Crowe
8a853ded56
fix: connection status map wrapped in atom (#1783)
This wraps the connection status map in an atom so it properly updates
when an individual connection status changes.
2025-01-20 21:45:45 -08:00
Sylvie Crowe
5f65d85d00
fix: shrink the ssh connection box when no error (#1781)
This removes the rendering of the overlay scrollbars component when
there are no error messages to scroll.
2025-01-20 19:33:28 -08:00
Evan Simkowitz
900f4a3ff7
Add tab bar instructions to docsite (#1779)
Adds instructions for using the tab bar, moves tab layout docs to new
location with redirect, adds instructions for magnifying a block, cleans
up intro text.
2025-01-20 15:29:23 -08:00
Sylvie Crowe
4ad7b99251
Known Hosts User Input Fix (#1778)
This handles ambiguous cases where the context that determines the block
id of a command is not provided.
2025-01-20 14:38:40 -08:00
Sylvie Crowe
42766d096a
fix: wsh error copy rewrite (#1770)
The previous version of this was giving undefined values for some users.
This rewrites it and removes an unnecessary memo that may have been
causing the issue.
2025-01-17 19:19:56 -08:00
Sylvie Crowe
618f5f879c
Add a Scrollbar to the SSH Error Popup (#1741)
This modifies the SSH error popup in the following ways:
- adds a scrollbar to the error message so it is easily viewed
- overlays a copy button so it's easy to copy
2025-01-16 18:33:50 -08:00
Mike Sawka
9dc9066a81
conn updates 5 (#1755)
* token swap
* setting environment variables for different local/remote shells
* bug fixes for init scripts
* more logging
* update connserver startup flow
2025-01-16 11:17:29 -08:00
Sylvie Crowe
e555eaa765
Limit User Input Modal to One Window (#1730)
When a connection request is made from a block, only ask for user input
in the window that made the request.
2025-01-15 18:55:12 -08:00
Sylvie Crowe
309571e288
fix: yvalMeta .name null check (#1740)
While it is rare, we have had users report an error where the access of
`.name` in SingleLinePlot causes a bug. The only time this could happen
would be a null `yvalMeta`. This makes it so the .name check is skipped
if yvalMeta is null. Addresses #1724.
2025-01-15 18:54:15 -08:00
Evan Simkowitz
8cf0b31858
Fix dir preview table header width so it still expands to fill whole view (#1737)
My last fix to set `width: fit-content` for the dir preview table header
ended up meaning that if the widget is wider than the table, the header
wouldn't extend to the full width of the widget. Now it will.
2025-01-14 22:52:57 -08:00
Mike Sawka
a24fe750c5
conn updates 4 (#1726) 2025-01-14 14:09:26 -08:00
Sylvie Crowe
a44a1a4b4b
Remove Old Prototype Plot (#1721)
Removes obsolete plot widget from a prototype version of the app.
2025-01-13 11:55:04 -08:00
Sylvie Crowe
99e122d724
RcFileInstall RPC Command (#1720)
Creates an RPC command for installing shell rcfiles instead of relying
on a separate installation session.
2025-01-12 16:31:00 -08:00
Sylvie Crowe
0174e7cd07
RemoteInfo Rpc (#1719)
Adds an Rpc Command for getting RemoteInfo. This is used to replace the
session that was used to determine the shell on remote machines.
2025-01-12 15:22:07 -08:00
Sylvie Crowe
5a7771bf40
Update Wsh Command (#1715)
This adds an RPC command for updating wsh on a remote machine without
starting a new session. It is not being used yet, but will be used for
connections using a single server in the future.
2025-01-10 21:29:06 -08:00
Mike Sawka
ba5f929b3f
conn updates 3 (#1711)
lots of misc connection refactoring / fixes:

* adds blocklogger as a way to writing logging information from the backend directly to the a terminal block
* use blocklogger in conncontroller
* use blocklogger in sshclient
* fix remote name in password prompt
* use sh -c to get around shell weirdness
* remove cmd.exe special cases
* use GetWatcher().GetFullConfig() rather than re-reading the config file
* change order of things we do when establishing a connection.  ask for wsh up front.  then do domain socket, then connserver
* reduce number of sessions required in the common case when wsh is already installed.  running the connserver is now a "multi-command" which checks if it is installed, then asks for the version
* send jwt token over stdin instead of in initial command string
* fix focus bug for frontend conn modal
* track more information in connstatus
* simplify wshinstall function
* add nowshreason
* other misc cleanup
2025-01-10 14:09:32 -08:00
Sylvie Crowe
a3cbcc5a77
Widget Config Magnify (#1689)
Introduces a configuration option to widgets to allow them to magnify on
startup.
2025-01-08 15:02:55 -08:00
Evan Simkowitz
5c3eba2644
Fix directory preview head width (#1691)
The head was set to `100%`, which meant that it only was as wide as the
viewport, rather than its contents, which can overflow. Now, the width
is `fit-content`, which allows it to overflow with its contents so that
the background and border extend the full width.
2025-01-07 17:17:28 -08:00
Mike Sawka
55f03730bc
add term:allowbracketedpaste, default false (#1688) 2025-01-07 10:55:26 -08:00
Evan Simkowitz
b51ff834b2
Happy new year! (#1684)
Update all 2024 references to 2025
2025-01-04 20:56:57 -08:00
Mike Sawka
4fd6d36d8e
conn updates 2 (#1660)
* use pwsh over powershell if installed (on windows) for default shell
* refactor blockcontroller.DoRunShellCommand into a "setup" and "manage" phase
* fix wshcmd-conn to also disconnect wsl connections
* new genconn interfaces to make a standardized environment to run SSH/WSL commands via `sh -c`.  also create better quoting functions that are composable
* replace html/template with text/template for shell command templating (avoids special chars getting turned into HTML entities, breaking the commands)
* do not reinstall wsh if the installed version has a higher version (prevents flip-flopping on shared systems)
* simplify clientOs/clientArch detection.  use `uname -sm`.  also validate the os/arch combo as compatible with our builds.
* replace CpHostToRemote with CpWshToRemote. hard codes wsh paths inside of the function instead of having them passed in (quoting restrictions)
* new SyncBuffer class to use with commands that properly synchronizes Writes/String output
* fix setTermSize to actually update DB with terminal size
2025-01-02 14:15:32 -08:00
Mike Sawka
3fc400960b
terminal multi-input for tab (#1643) 2025-01-02 10:06:47 -08:00
Evan Simkowitz
a2974a3e6d
Fix escape getting eaten by global event handler (#1668)
The terminal keydown handler was set to filter out all key bindings that
have a registered global handler, regardless of whether they actually
propagated or not. This allowed the global handlers to still work
despite the terminal input having precedence, but it also meant that
global key bindings that were invalid for the current context would
still get eaten and not sent to stdin.

Now, the terminal keydown handler will directly call the global handlers
so we can actually see whether or not the global key binding is valid.
If the global handler is valid, it'll be processed immediately and stdin
won't receive the input. If it's not handled, we'll let xterm pass it to
stdin. Because anything xterm doesn't handle gets sent to the
globally-registered version of the handler, we need to make sure we
don't do extra work to process an input we've already checked. We'll
store the last-handled keydown event as a static variable so we can
dedupe later calls for the same event to prevent doing double work.
2025-01-02 08:38:07 -08:00
Evan Simkowitz
035e0b9840
Fix the progressbar component (#1661)
The progress bar styling was broken and was showing as zero-height
2025-01-01 11:27:46 -08:00
Evan Simkowitz
da2291f889
Terminal search (#1654)
This adds support for searching the terminal buffer using the
`@xterm/addon-search` library. It also adds three options for searching:
regex, case-sensitive, and whole-word. These can be included or excluded
from the search options for `useSearch` depending on whether the search
backend supports it.


![image](https://github.com/user-attachments/assets/e0b7e2ed-641b-463f-94a2-f24969fb3b06)

I didn't like any of the Font Awesome icons for these toggles so until
we have time to make some of our own icons that better match the Font
Awesome style, I've appropriated VSCode's icons from their [codicons
font](https://github.com/microsoft/vscode-codicons).

To implement the toggle-able buttons for these options, I've introduced
a new HeaderElem component, `ToggleIconButton`. This is styled similarly
to `IconButton`, but when you hover over it, it also shows a highlighted
background and when active, it shows as fully-opaque and with an
accented border.

Also removes the `useDismiss` behavior for the search box to better
match behavior in other apps.

Also fixes the scrollbar observer from my previous PR so it's wider.
2025-01-01 10:43:02 -08:00
Mike Sawka
91a54442b7
implement web:hidenav (#1639), and file:/// urls (#1638) (#1645) 2024-12-30 16:51:00 -08:00
Yacoub
0890475a60
Deleting current workspace switches to another instead of closing [ backend implementation ] (#1623)
I did not mean to close the previous pr, anyway i tried to implement
what you suggested, the backend now does most of it
and DeleteWorkspace will return an unclaimed id and avoid closing the
window.

```go 
        const moveToNewWorkspace = await WorkspaceService.DeleteWorkspace(workspaceId) 
        console.log("delete-workspace done", workspaceId, ww?.waveWindowId);
        if (ww?.workspaceId == workspaceId){
            if ( workspaceList?.length > 1 ) {
                   await ww.switchWorkspace(moveToNewWorkspace)
            } else {
                    console.log("delete-workspace closing window", workspaceId, ww?.waveWindowId);
                    ww.destroy();
            }
        }
    });
```


![unknown_2024 12 26-17
05](https://github.com/user-attachments/assets/9c8455e5-b71c-479d-a15c-ee5c99c7a909)
![unknown_2024 12 26-17
06](https://github.com/user-attachments/assets/5dbf63bc-1ffd-4088-abc0-7c02fac9af94)

---------

Co-authored-by: Evan Simkowitz <esimkowitz@users.noreply.github.com>
2024-12-29 09:58:29 -08:00
Evan Simkowitz
477052e8fc
Web Search (#1631)
Adds support for Cmd:f, Ctrl:f, and Alt:f to activate search in the Web
and Help widgets
2024-12-29 09:58:11 -08:00
Evan Simkowitz
93b9432f99
Add support for Google AI models (#1612) 2024-12-27 14:52:38 -05:00
Red J Adaya
45d6f5b969
progressbar component (#1556) 2024-12-27 09:48:53 -08:00
Mike Sawka
73561dc12d
new utility fn, deepCompareReturnPrev. use for settings prefix atom to do a deep equal (#1630) 2024-12-26 11:09:48 -08:00
Evan Simkowitz
b7a5dea0a0
Fix Term Widget not registering pointer events (#1614)
This is a bit janky. The problem is that we were placing the
`xterm-viewport` div, which contains the scroll observer for the xterm
contents, at a higher z-index than the xterm contents, meaning that the
contents couldn't register any pointer events. If we don't put a
z-index, though, the scroll bar can't accept pointer events. To get
around this, I've added two observer divs, which control whether the
contents or the viewport have pointer event priority. The first div, the
`term-scrollbar-show-observer`, sits above where the scrollbar will be
rendered. When the user hovers over it, it will cause the viewport div
to move to a z-index above the contents. It will also enable a second
div, the `term-scrollbar-hide-observer`, which sits above the viewport
and the term contents, but not blocking the scrollbar. When the user
hovers over this div (indicating their mouse has left the scrollbar),
the viewport div is moved back to its original z-index and the hide
observer is set to `display: none`. This gives pointer event priority
back to the contents div.

This resolves an issue where the user could not click links in the
terminal output.

Resolves #1357
2024-12-23 23:35:51 -05:00
Evan Simkowitz
dbacae8a99
Rename outdated WaveAI types (#1609)
A bunch of the Wave AI types still mentioned OpenAI. Now that most of
them are being used for multiple AI backends, we need to update the
names to be more generic.
2024-12-23 10:55:04 -08:00
Evan Simkowitz
4280a0981f
Fix more WaveAI scroll issues (#1597)
This adds a split atom for the messages so that the WaveAI component and
the ChatWindow component don't actually need to watch changes to all of
the messages. This makes the repaining a lot less expensive and makes it
easier to scroll while new messages come in.

I also increased the tolerance on the `determineUnsetScroll` callback so
that the bottom message won't get unattached as easily.
2024-12-20 14:01:19 -08:00
Evan Simkowitz
e0c875afeb
Remove WaveAI dynamic height adjustment, use pure CSS, also fix scrolling (#1594)
This makes the chat window flex-grow so we no longer need to manually
fix its height. It also cleans up some other styling.

It also fixes the scroll handlers so we detect when the user is at the
bottom of the chat window so we can follow the latest message. It also
fixes some circular references in the callbacks that were causing React
to bug out.
2024-12-20 11:49:29 -08:00
Evan Simkowitz
cf578b1d89
Allow empty workspace name while editing workspace (#1592)
Fixes a bug where if you deleted all but one character in the workspace
name, you couldn't delete the final character. To fix this, I have made
the workspace editor save a separate entry from the backend. The backend
will also only update its DB value and notify the frontend if something
was actually edited. If you delete all the characters in the name and
don't put anything new in, though, the name will be whatever the last
character you had was, since the name of a saved workspace cannot be
empty.
2024-12-20 08:55:28 -08:00
Sylvie Crowe
9f9190b93c
fix: dynamically determine the chat window height (#1588)
The AI chat window was not allowing the user to resize it due to an
interacting scss class being removed. This replaces the max-height from
the removed class with a dynamic calculation to resize properly.
2024-12-20 03:18:44 -08:00
Sylvie Crowe
2c5aae1a98
fix: bound code editor font size (#1581) 2024-12-19 14:10:19 -08:00
Evan Simkowitz
009bd39cb0
Search box component (#1579) 2024-12-19 13:49:48 -08:00
Sylvie Crowe
0f15e4ff56
fix: bound custom fontsizes between 6 and 64 (#1577)
Adds bounding for markdown (and AI) fontsize and fixedfontsize.
2024-12-19 13:01:12 -08:00