Commit Graph

417 Commits

Author SHA1 Message Date
Evan Simkowitz
aa77b2c259
Pinned tabs (#1375)
![image](https://github.com/user-attachments/assets/a4072368-b204-4eed-bb65-8e3884687f9a)

This functions very similarly to VSCode's pinned tab feature. To pin a
tab, you can right-click on it and select "Pin tab" from the context
menu. Once pinned, a tab will be fixed to the left-most edge of the tab
bar, in order of pinning. Pinned tabs can be dragged around like any
others. If you drag an unpinned tab into the pinned tabs section (any
index less than the highest-index pinned tab), it will be pinned. If you
drag a pinned tab out of the pinned tab section, it will be unpinned.
Pinned tabs' close button is replaced with a persistent pin button,
which can be clicked to unpin them. This adds an extra barrier to
accidentally closing a pinned tab. They can still be closed from the
context menu.
2024-12-04 13:34:22 -08:00
Evan Simkowitz
a72d3e5c7a
Add recursive flag to prevent unwanted deletion of parents while they're already being deleted (#1378)
When a tab was being deleted, for instance, the last block that got
deleted would cascade to delete its parent tab, even though the
`DeleteTab` function was already going to do this. This would produce DB
collisions that would put the app into a bad state. Now we pass a
`recursive` flag that is used to determine whether to perform the
recursive close of the parents.

Also updates `DeleteWorkspace` so that named workspaces will always be
deleted if they're empty, even if `force` is false
2024-12-03 18:39:06 -08:00
Evan Simkowitz
90e31dfa48
Delete a tab when it's out of blocks, cascade to window (#1374)
Updates `DeleteBlock` to close its parent tab if the tab has no more
blocks. This will also cascade to close the workspace if it no longer
has any tabs, same for window.

I had to move some block-related functionality around on the backend.
2024-12-03 09:38:46 -08:00
Evan Simkowitz
04c4f0a203
Create and rename files and dirs in dirpreview (#1156)
New context menu options are available in the directory preview to
create and rename files and directories

It's missing three pieces of functionality, none of which are a
regression:
- Editing or creating an entry does not update the focused index. Focus
index right now is pretty dumb, it doesn't factor in the column sorting
so if you change that, the selected item will change to whatever is now
at that index. We should update this so we use the actual file name to
determine which element to focus and let the table determine which index
to then highlight given the current sorting algo
- Open in native preview should not be an option on remote connections
with the exception of WSL, where it should resolve the file in the
Windows filesystem, rather than the WSL one
- We should catch CRUD errors in the dir preview and display a popup
2024-12-02 22:23:44 -08:00
Evan Simkowitz
0ec60f5a7b
Fix switch workspace (#1370) 2024-12-02 14:52:34 -08:00
Evan Simkowitz
f368a61c70
Fix close active tab behavior (#1367)
This fixes a bug where closing the active tab would clean up the closed
tab view before switching to an un-closed tab view, putting the window
into an unrecoverable state. This also moves around some of the CloseTab
logic so that it's more standardized and reduces unnecessary
frontend-backend comms and DB writes
2024-12-02 12:59:03 -08:00
Evan Simkowitz
7e49e14977
Fix initialdata bug (#1365)
There was a bug in main-server where we were returning Window from
EnsureInitialData and then overwriting the layout on the active tab. The
return values from this function are unclear. Some of the initial data
was being set in the wcore.EnsureInitialData and some was being set in
main, so I've moved all the logic into EnsureInitialData and now it just
returns error.
2024-12-02 11:44:08 -08:00
Evan Simkowitz
82f53dc1fb
Workspaces are back! (#1282) 2024-12-02 10:56:56 -08:00
Sylvie Crowe
24103213aa
SSH without using WSH (#1355) 2024-11-27 16:52:00 -08:00
Mike Sawka
b6ce2cd022
misc v0.9.3 fixes -- numToString, block counts, fix docsite images/video (#1354) 2024-11-25 18:07:29 -08:00
Evan Simkowitz
7054b17eb3
Better fix for presets on Windows (#1336) 2024-11-21 12:58:03 -08:00
Mike Sawka
3136291140
temp oid in client (can use with wavefile) (#1329) 2024-11-20 18:48:46 -08:00
Sylvie Crowe
c003ddff83
Quick Ssh Fix/Logging (#1328)
This adds two things:
- prints a log error if the user isn't parsed properly in ssh
- ensures that a host isn't reused when sending to the conn list
2024-11-20 18:11:47 -08:00
Mike Sawka
360964d4ba
panic handlers everywhere (#1327) 2024-11-20 18:05:13 -08:00
Mike Sawka
24807cfd34
add display resolutions to activity updates, update docs (#1323) 2024-11-19 19:41:53 -08:00
Sylvie Crowe
958a5ece10
Documentation Pictures (#1324)
Adds pictures and videos to documentation for clarity
2024-11-19 19:34:50 -08:00
Mike Sawka
271d8e2e9c
wsh getva, setvar, and file commands (#1317) 2024-11-19 17:20:47 -08:00
Evan Simkowitz
0acad2fbe2
Fix reading presets dir on Windows (#1322)
Nested directories in the embedded FS always expect a `/`, even on
Windows. This adds a fallback in `readConfigFileFS` to try swapping the
path separators if we get an "invalid argument" error from `Read`
2024-11-19 15:21:23 -08:00
Evan Simkowitz
416ba8d5da
Add settings to control the size of the magnified/ephemeral nodes and their blur (#1319) 2024-11-18 14:41:09 -08:00
Mike Sawka
784bc89588
allow resolving 'ws' and 'client' as blockids (#1316) 2024-11-18 10:27:23 -08:00
Mike Sawka
1210313d2b
activity updates (#1302) 2024-11-15 16:09:26 -08:00
Mike Sawka
e6d7f74964
working on a buffered log viewer class (#1301) 2024-11-15 14:02:33 -08:00
Mike Sawka
c4d7779003
wsh ai file attachments -- renderer in waveai (#1281) 2024-11-14 16:20:33 -08:00
Mike Sawka
631fad23d8
add new vdom.H() func and Filter/FilterIdx (#1291) 2024-11-14 16:19:21 -08:00
Mike Sawka
8b672211a9
move vdomclient to waveapp (#1290) 2024-11-14 13:32:58 -08:00
Evan Simkowitz
6216dca17a
Fix docsite path error in docsite.go (#1272)
The docsite path was being initialized as a global variable. This wasn't
an issue before we were caching and unsetting the env vars, but now that
`wavebase.GetWaveAppPath()` returns the contents of the cached variable,
we need to read its value at runtime, since it won't be set at the time
the global variable is initialized.
2024-11-12 12:30:37 -08:00
Mike Sawka
95fd00617e
fixes for o1 models (#1269) 2024-11-11 17:11:09 -08:00
Mike Sawka
3fc45c63f3
vdom terminal toolbar (#1263) 2024-11-11 13:11:09 -08:00
Mike Sawka
de902ec2b7
ai backend refactor + claude/anthropic API support (#1262) 2024-11-11 11:39:08 -08:00
Mike Sawka
38eeba5bd2
set maxcompletiontokens (#1260) 2024-11-11 10:52:59 -08:00
Mike Sawka
045405aa5e
new wsh ai command (#1257) 2024-11-08 16:34:50 -08:00
Mike Sawka
2c055b56d0
new resolver formats (tab:N), and also make the structure of the resolvers much more robust (#1254) 2024-11-08 15:48:54 -08:00
Mike Sawka
7afb9c5803
fix default config error (#1255) 2024-11-08 15:09:19 -08:00
Mike Sawka
c34a5912e7
return clientid in WaveInfoData, print for wsh version -v (#1252) 2024-11-08 14:19:56 -08:00
Evan Simkowitz
3216bc2389
Use one unified widgets.json file for managing widgets in the sidebar (#1250)
Renames defaultwidgets.json file in defaultconfig to widgets.json and
removes references to defaultwidgets in the codebase and documentation.

Going forward, users will see one unified list of widgets in the sidebar
with no separator between default and custom widgets. Users can manually
move any edits to their defaultwidgets.json file into their widgets.json
file to get back their overrides.
2024-11-08 14:14:59 -08:00
Mike Sawka
e3370ebe6d
customization docs (#1231) 2024-11-07 16:05:42 -08:00
Mike Sawka
f50ce9565c
VDom 11 (#1224)
* Fix VDom url caching -- use regular requests 
* new boilerplate to make writing apps easier
* render-blocking global styles (to prevent render flash)
* bug fixes and new functionality etc.
2024-11-07 00:07:23 -08:00
Mike Sawka
42e85aea6f
VDom 10 (#1206)
* get RefOperations and RefUpdates working. 
* implement a <canvas> API that can be called using RefOperations
* prop to disable rehype/markdown (memory leak)
2024-11-05 23:07:45 -08:00
Mike Sawka
61d6b4d8eb
VDom 9 (#1205)
Lots of quality of life improvements (and bug fixes):
* Class(), ClassIf(), ClassIfElse() methods
* <wave:style> that can use a file vdom:/// url
* UseStateWithFn() to allow for functional setters
* If, IfElse, and ForEach for vdom construction
* batched updates for large updates -- streaming -- to get around packet size issues
* more flexible file sending code, for []byte, io.Reader, fs.File, and a fileName (with optional MimeType)
* fix the vdom:// protocol handler to work with fetch
* updated wshcmd-html for new best practices
2024-11-05 15:52:59 -08:00
Mike Sawka
91c293e4be
VDom 8 (#1202)
* new vdomevents to support click, change, keydown, etc. easier type
signature
* can now pass a prop type instead of always converting to
map[string]any
* implement DefineComponent to allow easier vdom creation using a
component function directly
* separate vdomclient Make from Connect
* lots of bug fixes to get everything working again
* PStyle and special "style" attribute handling
2024-11-04 12:52:36 -08:00
Mike Sawka
eeda49bbde
vdom 7 (#1180) 2024-11-02 10:58:13 -07:00
Evan Simkowitz
4a09c06021
Use native title bar for all platforms while we fix Window Controls Overlay (#1193) 2024-11-01 12:19:49 -07:00
Mike Sawka
8893a42cd6
wsh version -v (to print config/data dirs and updater-channel) (#1190) 2024-11-01 10:20:15 -07:00
Mike Sawka
b945a8d039
restore old tab naming logic (#1186)
fixes the tab naming confusion going on in #1167
2024-11-01 09:41:23 -07:00
Mike Sawka
473225d94b
issue squashing #1175 #1038 #1086 #1081 #1066 #1020 (#1177) 2024-10-31 12:34:30 -07:00
Evan Simkowitz
502f9515d8
Two extremely low-hanging fruit tests generated by GitHub Workspace (#1172) 2024-10-30 20:19:22 -07:00
Sylvie Crowe
94eb165346
fix: ignore the match statement in ssh config (#1155)
This change will skip over match statements in the ssh config without
panicking. Note that this change still does not add match statement
parsing--it merely makes it possible to continue parsing if the match
keyword is present.
2024-10-27 20:35:19 -07:00
Mike Sawka
7e6f96348f
fix for waveterm environment variables leaking from prod to dev (#1153) 2024-10-27 13:12:41 -07:00
Mike Sawka
416c26c1cd
vdom 5 (#1143) 2024-10-25 13:45:00 -07:00
Sylvie Crowe
ac6f9a05d4
ProxyJump Support (#1107)
This adds basic ProxyJump support for handling ssh connections.
2024-10-25 12:14:40 -07:00
Mike Sawka
369fababa6
tab updates (#1134) 2024-10-24 23:16:44 -07:00
sawka
e1d538ed8b merge v0.8.13 changes 2024-10-24 17:02:35 -07:00
Mike Sawka
7a90754377
fix shutdown logic for macos/linux (#1128) 2024-10-24 16:07:18 -07:00
Mike Sawka
1742c19e13
resize terminal on restoring state (#1100) (backport from dev0.9) (#1116) 2024-10-24 11:01:58 -07:00
Sylvie Crowe
bf5bf6f00c
fix: allow capital letters on host match (#1117)
While matching [user@]host[:port], we previously did not allow capital
letters in host.

While this makes sense for a hostname, it does not make sense to make
that restriction for a host. Since this can match on both, we must widen
it to accept characters allowed in host.
2024-10-24 10:58:31 -07:00
Mike Sawka
7afd19f000
on windows, must close the new temp file before removing it (#1115)
Closes #1114
2024-10-24 09:46:52 -07:00
Mike Sawka
701d93884d
vdom 4 (#1110) 2024-10-23 22:47:29 -07:00
Sylvie Crowe
8248637e00
WSL Integration (#1031)
Adds support for connecting to local WSL installations on Windows.

(also adds wshrpcmmultiproxy / connserver router)
2024-10-23 22:43:17 -07:00
Mike Sawka
fa160313ea
resize terminal on restoring state (#1100) 2024-10-22 12:50:44 -07:00
Mike Sawka
bba49fb6db
remove global variables from wconfig so we don't call wavebase (#1098) 2024-10-22 10:02:15 -07:00
sawka
cf1b082c10 Merge remote-tracking branch 'origin/main' into dev-v0.9 2024-10-22 09:59:15 -07:00
Evan Simkowitz
33f05c6e0c
Update data and config paths to match platform defaults (#1047)
Going forward for new installations, config and data files will be
stored at the platform default paths, as defined by
[env-paths](https://www.npmjs.com/package/env-paths).

For backwards compatibility, if the `~/.waveterm` or `WAVETERM_HOME`
directory exists and contains valid data, it will be used. If this check
fails, then `WAVETERM_DATA_HOME` and `WAVETERM_CONFIG_HOME` will be
used. If these are not defined, then `XDG_DATA_HOME` and
`XDG_CONFIG_HOME` will be used. Finally, if none of these are defined,
the [env-paths](https://www.npmjs.com/package/env-paths) defaults will
be used.

As with the existing app, dev instances will write to `waveterm-dev`
directories, while all others will write to `waveterm`.
2024-10-22 09:26:58 -07:00
Evan Simkowitz
39fff9ecfd
Allow separate directories for each config part, add dropdown for editing AI presets (#1074)
Adds new functionality on the backend that will merge any file from the
config directory that matches `<partName>.json` or `<partName>/*.json`
into the corresponding config part (presets, termthemes, etc.). This
lets us separate the AI presets into `presets/ai.json` so that we can
add a dropdown in the AI preset selector that will directly open the
file so a user can edit it more easily. Right now, this will create a
preview block in the layout, but in the future we can look into making
this block disconnected from the layout.

If you put AI presets in the regular presets.json file, it will still
work, since all the presets get merged. Same for any other config part.
2024-10-21 16:51:18 -07:00
Evan Simkowitz
1fc6dd7c1a
Fix code scanning alert no. 50: Size computation for allocation may overflow (#1088)
Fixes
[https://github.com/wavetermdev/waveterm/security/code-scanning/50](https://github.com/wavetermdev/waveterm/security/code-scanning/50)

To fix the problem, we need to ensure that the size computation for the
allocation does not overflow. This can be achieved by validating the
length of `barr` before performing the arithmetic operation. We will set
a maximum allowable size for `barr` to ensure that the sum of
`oscPrefixLen(oscNum)` and `len(barr)` does not exceed the maximum value
for an `int`.

1. Define a maximum allowable size for `barr` (e.g., 64 MB).
2. Check the length of `barr` against this maximum size before
performing the allocation.
3. If `barr` exceeds the maximum size, return an error.


_Suggested fixes powered by Copilot Autofix. Review carefully before
merging._

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2024-10-21 14:05:52 -07:00
Evan Simkowitz
4f035e1e8a
Merge branch 'main' into dev-v0.9 2024-10-18 14:39:48 -07:00
Evan Simkowitz
ab16baed3e
Fix edge case with Wave Proxy AI preset (#1073)
If a user has changed the global AI settings and added a different base
url, the Wave Proxy preset would not work because it doesn't unset all
the AI settings.
2024-10-18 14:27:48 -07:00
Evan Simkowitz
de004a3cdf
Remove ollama AI preset (#1068)
I added this as an example, but it fails if the user doesn't have ollama
and/or llama:3.1 so I'm removing it
2024-10-18 12:33:08 -07:00
Mike Sawka
62a1149a8d
fix websocket reconnect error (#1064) 2024-10-18 12:05:20 -07:00
sawka
0590ba2509 merge main to dev 0.9 2024-10-18 09:29:39 -07:00
Mike Sawka
dc70ab4014
ws reconnection bug + clean up logging (#1058) 2024-10-17 23:42:55 -07:00
Sylvie Crowe
a5999aa02a
Plot Sysinfo (#1054)
Expands the cpuplot with memory plots and individual cpu plots. Also
improves the styling and handling of multiple plots.
2024-10-17 15:19:13 -07:00
Mike Sawka
46783ba315
vdom 3 (#1033) 2024-10-17 14:50:36 -07:00
Mike Sawka
c1c90bb4f8
browser view (#1005) 2024-10-17 14:34:02 -07:00
Mike Sawka
a629b28194
implement a config error button + message modal that shows the errors (#1030) 2024-10-14 14:57:12 -07:00
Mike Sawka
a15b339f39
implement copy on select for terminal (#1029) 2024-10-14 10:05:38 -07:00
Evan Simkowitz
0b88fa590d
Move AI model configs to presets and add a dropdown to swap between configs (#1024) 2024-10-12 18:40:14 -04:00
Sylvie Crowe
1354c34921
fix: add conn prefix to askbeforewshinstall flag (#1013) 2024-10-10 17:23:27 -07:00
Mike Sawka
3d2d68bc73
fix initial size of windows (#1011) 2024-10-10 16:12:56 -07:00
Sylvie Crowe
f3e0ba8148
Add Don't Ask Again Checkbox for Wsh Install (#1010)
This provides a checkbox when installing wsh that will prevent the
message from popping up in the future. It can also be disabled by adding
`"askbeforewshinstall": false` to the config file.
2024-10-10 15:50:46 -07:00
Evan Simkowitz
64084d3e27
Remove global.ts dependency from emain (#1003)
Removes global atoms dependency from emain by moving WOS to grab the
globalAtoms from window, if present. Also removes interdependency
between wshrpcutil and wps

Also adds showmenubar setting for Windows and Linux
2024-10-10 10:12:42 -07:00
Mike Sawka
4f00595311
allow ai defaults to be overridden by block meta (#1000) 2024-10-09 15:16:35 -07:00
Sylvie Crowe
9dd4188810
fix: add error messages to ai chat (#999)
This will print error messages to the chat when there is an error
getting an ai response. The actual content of the responses are not
forwarded to the models in future requests.

<img width="389" alt="Screenshot 2024-10-09 at 2 36 13 PM"
src="https://github.com/user-attachments/assets/e6c6b1c1-fa19-4456-be3b-596feaeaafed">
2024-10-09 14:50:56 -07:00
Mike Sawka
f33028af1d
azure ai support (#997) 2024-10-09 13:36:02 -07:00
Evan Simkowitz
b81ab63ddc
Fix 404 for docsite subpages when hard reloading app (#995)
This adds a custom resolver to the docsite server to fall back to .html
addresses when it gets a not found for a given path. This fixes an issue
where subpages would return a 404 after a hard reload of the frontend. I
also added an effect that will run on startup to resolve the latest
docsite url and set it in the metadata, since the backend port changes
on every run of the app. I also made it so that setting the default
homepage in the webview widget will also unset any block-specific
homepage.
2024-10-09 12:42:33 -07:00
Sylvie Crowe
9f57d2d46b
fix: do not canonicalize hostname in list (#994)
This removes the brackets for connections with non-standard ports in the
dropdown list.
2024-10-09 11:08:07 -07:00
Sylvie Crowe
c5527dd87b
Add a Notification Subcommand to Wsh (#985)
This allows users to use the `wsh notify` command to make a popup
notification, even from a remote connection.
2024-10-08 10:22:17 -07:00
Evan Simkowitz
e2bd3cd94a
Add per-block WebView homepage setting, help view is now just a skinned webview (#982)
Adds a meta field `pinnedurl` that can be set to override the
`web:defaulturl` setting for a given block. Also adds a home button to
the webview to reset the block url to the homepage

The help view is now an extension of the webview with some of the chrome
removed.

Also updates the cookie dependency to resolve a vulnerability
2024-10-07 17:20:18 -07:00
Mike Sawka
447596b5e7
new config preview:showhiddenfiles and term:theme (#981) 2024-10-07 14:08:57 -07:00
GeekGao
9d4df934c9
Update termthemes.json. Added new theme: One Dark Pro (#976)
One Dark Pro is one of the most popular themes in VSCode.
2024-10-07 10:06:49 -07:00
Mike Sawka
92fd371fc9
term scrollback size and reduce cache frequency (#978) 2024-10-07 09:51:23 -07:00
Mike Sawka
d9d19f8368
allow metadata to override the frame title, icon, and text (#972) 2024-10-06 22:08:26 -07:00
Mike Sawka
f835441507
fix wsh output. all output is run through sprintf, so escape properly (#971) 2024-10-06 21:50:11 -07:00
GeekGao
f1fe401dbe
Update termthemes.json (#966)
Add a new theme 'WarmYellow'
2024-10-06 13:08:12 -07:00
Mike Sawka
b490113a87
change cursorAccent to cursor to match xtermjs. (#968)
also add more feedback for waveai -- tooltips + icon for local/cloud.
also use 'ai:name' correctly
2024-10-06 12:42:25 -07:00
Mike Sawka
e795f75bbb
only use filemutex for windows (#960) 2024-10-04 12:20:52 -07:00
Evan Simkowitz
74cda378f8
Embed static copy of docsite for help view (#949)
This will take the latest artifact from the waveterm-docs repo and embed
it in the app binary. When the help view is launched, it will be served
from our backend. If the embedded copy doesn't exist, such as in
unpackaged versions of the app or in locally packaged versions, it will
use the hosted site instead.

There is a sibling PR in the docs repository to build the embedded
version of the app (strips out some external links, removes Algolia
DocSearch, updates the baseUrl)
https://github.com/wavetermdev/waveterm-docs/pull/46
2024-10-03 20:28:05 -07:00
Mike Sawka
57c2f02c9d
add some fun new background presets (#930) 2024-10-02 11:03:37 -07:00
Mike Sawka
2fa88c4e50
add term:localshellopts (#914) 2024-09-30 21:19:07 -07:00
Sylvie Crowe
7b56b0fb00
ExpandHomeDir Fix on Windows (#909)
fix: check for backslash when expanding the home directory (~ character
-> full path)
2024-09-30 14:50:40 -07:00
Mike Sawka
6665e2d96e
better shellopts for commands and login/interactive shells (#907) 2024-09-30 12:36:05 -07:00