Commit Graph

686 Commits

Author SHA1 Message Date
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
Mike Sawka
8a22149f2f
fix markdown last margin (#1575) 2024-12-19 12:41:03 -08:00
Evan Simkowitz
12d58c90a7
Make TOS modal buttons larger (#1573) 2024-12-19 12:16:03 -08:00
Mike Sawka
eff12635d7
transparent terminal themes (#1561) 2024-12-19 10:41:28 -08:00
Evan Simkowitz
0a3dadb628
Add wsh wavepath command for getting Wave paths (#1545) 2024-12-17 14:11:40 -08:00
Mike Sawka
95b1767c45
fix terminal escape sequence printing bug (#1544)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Bug Fixes**
- Improved handling of terminal data processing by ensuring it only
occurs when the terminal is fully initialized.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-12-17 11:55:34 -08:00
Evan Simkowitz
78f3cd0472
Synchronize workspace edits across windows, close window when workspace is deleted (#1540) 2024-12-16 21:54:13 -08:00
Evan Simkowitz
1ba370e4dd
Fix iconbutton styling (#1538) 2024-12-16 18:31:01 -08:00
Sylvie Crowe
71961b373f
Extra Font Size Controls (#1537)
This adds:
- "editor:fontsize" to modify the code editor's font size
- "ai:fontsize" to modify the ai widget's font size (for general text)
- "ai:fixedfontsize" to modify the ai widget's fixed font size (for code
fragments)
2024-12-16 18:23:42 -08:00
Evan Simkowitz
8a5ef4cb3e
Update button class name so it doesn't conflict with Monaco (#1536)
Avoids this: 

![image](https://github.com/user-attachments/assets/49b214e4-7dde-4c3a-be5d-0de7afe30dcc)
2024-12-16 18:10:06 -08:00
Mike Sawka
f1cd6b933d
relative markdown text (#1489) 2024-12-16 16:04:07 -08:00
Mike Sawka
38deb28da5
webview zoom (#1531) 2024-12-16 14:16:21 -08:00
Evan Simkowitz
ec4f6c01de
Create workspace will always create a saved workspace (#1509)
Also moves icon and color definitions to the backend and makes it so the
new workspaces get created with a different icon color for each index.

If an ephemeral window has more than one tab, always create a new window
when switching workspaces

Also fixes workspace accelerators on macOS
2024-12-12 17:21:09 -08:00
Evan Simkowitz
a9eeb55021
Fix inconsistent tab sizing between views (#1502)
The windowdrag right spacer was acting erratic. It's also not necessary,
since we can just use margins to let the banner buttons fill empty space
so they float to the right side of the tab bar. Without it, though, I
had to add more padding for the add tab button so it has more room.
2024-12-11 18:25:36 -08:00
Evan Simkowitz
9ce0093751
Fix errors in loading of help view (#1501)
When clicking on one of the cards from the home page of the docsite and
when initially loading the home page of the docsite, the webviewTag was
emitting a `did-frame-navigate` event, which we weren't tracking. This
meant that we were not properly recording that a navigation had
occurred. This caused three separate issues:

- We were never setting the meta url for the block, which meant that
when you navigated to a different tab or reloaded the app, you'd lose
what page you were last on.
- The site would reload after we fixed a broken docsite url, but we
wouldn't remove the error text that blocks the broken site.
- Clicking on the "open in external browser" button wouldn't do
anything.
2024-12-11 16:09:47 -08:00
Mike Sawka
f4de338bc3
add a refocus at the end of wave reinit (#1499) 2024-12-11 13:13:40 -08:00
Evan Simkowitz
4918737044
Remove unnecessary log (#1498) 2024-12-11 12:54:23 -08:00
Evan Simkowitz
4070abadde
Squash some leftover bugs (#1495)
Only create new tab in `CheckAndFixWindow` if no tabs or pinned tabs
exist

Update `resolvers.resolveTabNum` to account for pinned tabs

Remove obsolete and unused `wstore.DeleteTab`

Only show accelerators for first 9 workspaces in workspace app menu to
be consistent with other keybindings

Fix tabbar spacing to remove min size for drag right spacer, account for
workspace switcher button size

Fix updatebanner size calculations
2024-12-11 12:52:15 -08:00
Mike Sawka
164c15f1b2
create ref in model, also remove isRunning (#1496) 2024-12-11 12:26:56 -08:00
Evan Simkowitz
d975869542
Stop event propagation for contextmenu show event (#1493) 2024-12-11 11:03:30 -08:00
Evan Simkowitz
7ecdf249bd
Remove some unnecessary logs from webview (#1490) 2024-12-11 10:39:12 -08:00
Evan Simkowitz
6684a5c2b8
Only call WebViewModel.handleNavigate for main frame navigations (#1488)
Navigation events are issued not just for main page navigations, but
also for iframes, among other things. With our old behavior, if an
iframe tries to load in a webpage, we would update the webview url and
make the iframe the primary page, which is wrong. Now, we only do this
for main frame navigations.

closes #1487
2024-12-11 10:33:37 -08:00
Mike Sawka
4fccd71227
minor docs fixups (consistency) (#1480) 2024-12-10 18:03:48 -08:00
Evan Simkowitz
c8bcf08fff
Workspace doc, moving around images (#1479)
Also adds missing global keybindings.

Also reorders docs in the sidebar, introduces new mechanisms for
indicating how an img should float in a document, and adds a `<div
style="clear: both">` before every heading.
2024-12-10 17:43:56 -08:00
Mike Sawka
41f960c60c
fix for tabs out of order in tabbar (#1478) 2024-12-10 16:33:55 -08:00
Evan Simkowitz
c95f3b2283
Fix unawaited promises in dir preview (#1474) 2024-12-10 15:13:11 -08:00
Sylvie Crowe
e49480e628
Fix Preview for Uninitialized Connections (#1473)
If a connection had not been previously initialized, selecting it in the
preview dropdown was bug-prone. This ensures the connection is complete
before checking the mimetype and selecting the type of preview.
2024-12-10 15:03:35 -08:00
Evan Simkowitz
c2312f1c7f
Make default workspace icon the Wave logo (#1470)
I made our logo a custom icon in Font Awesome so we can add it to our
workspace switcher as the default icon
2024-12-10 13:54:11 -08:00
Mike Sawka
8957e0405a
try to fix drag region above tabs (#1466)
just a temporary fix for now, needs a more extensive fix later
2024-12-10 12:50:58 -08:00
Evan Simkowitz
712f9d9706
Use highlight.js scss instead of css in markdown styling (#1468) 2024-12-10 12:47:39 -08:00
Evan Simkowitz
9ab7b25aa1
Move markdown css import so it doesn't affect Storybook (#1465) 2024-12-10 12:38:49 -08:00
Evan Simkowitz
f7875bc4f0
Auto-select workspace name (#1464) 2024-12-10 12:26:42 -08:00
Evan Simkowitz
bedea6d3be
Show hover effect on dragging tab (#1459) 2024-12-10 11:41:37 -08:00