diff --git a/BUILD.md b/BUILD.md
index 5a19eb3fd..165489fa8 100644
--- a/BUILD.md
+++ b/BUILD.md
@@ -1,28 +1,31 @@
# Build Instructions for Wave Terminal
-These instructions are for setting up the build on MacOS.
+These instructions are for setting up the build on MacOS.
If you're developing on Linux please use the [Linux Build Instructions](./build-linux.md).
## Running the Development Version of Wave
-If you install the production version of Wave, you'll see a semi-transparent sidebar, and the data for Wave is stored in the directory ~/.waveterm. The development version has a blue sidebar and stores its data in ~/.waveterm-dev. This allows the production and development versions to be run simultaneously with no conflicts. If the dev database is corrupted by development bugs, or the schema changes in development it will not affect the production copy.
+If you install the production version of Wave, you'll see a semi-transparent gray sidebar, and the data for Wave is stored in the directory ~/.waveterm. The development version has a blue sidebar and stores its data in ~/.waveterm-dev. This allows the production and development versions to be run simultaneously with no conflicts. If the dev database is corrupted by development bugs, or the schema changes in development it will not affect the production copy.
## Prereqs and Tools
Download and install Go (must be at least go 1.18):
+
```
brew install go
```
Download and install ScriptHaus (to run the build commands):
+
```
brew tap scripthaus-dev/scripthaus
brew install scripthaus
```
You also need a relatively modern nodejs with npm and yarn installed.
- * Node can be installed from [https://nodejs.org](https://nodejs.org).
- * npm can install yarn using:
+
+- Node can be installed from [https://nodejs.org](https://nodejs.org).
+- npm can install yarn using:
```
npm install -g yarn
@@ -40,16 +43,17 @@ git clone git@github.com:wavetermdev/waveterm.git
scripthaus run build-backend
```
-This builds the Golang backends for Wave. The binaries will put in waveshell/bin and wavesrv/bin respectively. If you're working on a new plugin or other pure frontend changes to Wave, you won't need to rebuild these unless you pull new code from the Wave Repository.
+This builds the Golang backends for Wave. The binaries will put in waveshell/bin and wavesrv/bin respectively. If you're working on a new plugin or other pure frontend changes to Wave, you won't need to rebuild these unless you pull new code from the Wave Repository.
## One-Time Setup
Install modules (we use yarn):
+
```
yarn
```
-Electron also requires specific builds of node_modules to work (because Electron embeds a specific node.js version that might not match your development node.js version). We use a special electron command to cross-compile those modules:
+Electron also requires specific builds of node_modules to work (because Electron embeds a specific node.js version that might not match your development node.js version). We use a special electron command to cross-compile those modules:
```
scripthaus run electron-rebuild
@@ -57,7 +61,7 @@ scripthaus run electron-rebuild
## Running WebPack
-We use webpack to build both the React and Electron App Wrapper code. They are both run together using:
+We use webpack to build both the React and Electron App Wrapper code. They are both run together using:
```
scripthaus run webpack-watch
@@ -65,15 +69,16 @@ scripthaus run webpack-watch
## Running the WaveTerm Dev Client
-Now that webpack is running (and watching for file changes) we can finally run the WaveTerm Dev Client! To start the client run:
+Now that webpack is running (and watching for file changes) we can finally run the WaveTerm Dev Client! To start the client run:
+
```
scripthaus run electron
```
-To kill the client, either exit the Electron App normally or just Ctrl-C the ```scripthaus run electron``` command.
+To kill the client, either exit the Electron App normally or just Ctrl-C the `scripthaus run electron` command.
-Because we're running webpack in watch mode, any changes you make to the typescript will be automatically picked up by the client after a refresh. Note that I've disabled hot-reloading in the webpack config, so to pick up new changes you'll have to manually refresh the WaveTerm Client window. To do that use "Command-Shift-R" (Command-R is used internally by WaveTerm and will not force a refresh).
+Because we're running webpack in watch mode, any changes you make to the typescript will be automatically picked up by the client after a refresh. Note that I've disabled hot-reloading in the webpack config, so to pick up new changes you'll have to manually refresh the WaveTerm Client window. To do that use "Option-R" (Command-R is used internally by WaveTerm and will not force a refresh).
## Debugging the Dev Client
-You can use the regular Chrome DevTools to debug the frontend application. You can open the DevTools using the keyboard shortcut `Cmd-Option-I`.
+You can use the regular Chrome DevTools to debug the frontend application. You can open the DevTools using the keyboard shortcut `Cmd-Option-I`.
diff --git a/README.md b/README.md
index 87e1e0edb..8f0a5a039 100644
--- a/README.md
+++ b/README.md
@@ -1,24 +1,25 @@
-
-# Wave Terminal
+# Wave Terminal
A open-source, cross-platform, AI-integrated, modern terminal for seamless workflows.
-Wave isn't just another terminal emulator; it's a rethink on how terminals are built. Wave combines command line with the power of the open web to help veteran CLI users and new developers alike.
+Wave isn't just another terminal emulator; it's a rethink on how terminals are built. Wave combines command line with the power of the open web to help veteran CLI users and new developers alike.
-* Inline renderers to cut down on context switching. Render code, images, markdown, and CSV files without ever leaving the terminal.
-* Persistent sessions that can restore state across network disconnections and reboots
-* Searchable contextual command history across all remote sessions (saved locally)
-* Workspaces, tabs, and command blocks to keep you organized
-* AI Integration with ChatGPT (or ChatGPT compatible APIs) to help write commands and get answers inline
+- Inline renderers to cut down on context switching. Render code, images, markdown, and CSV files without ever leaving the terminal.
+- Persistent sessions that can restore state across network disconnections and reboots
+- Searchable contextual command history across all remote sessions (saved locally)
+- Workspaces, tabs, and command blocks to keep you organized
+- AI Integration with ChatGPT (or ChatGPT compatible APIs) to help write commands and get answers inline
+
+![WaveTerm Screenshot](./assets/wave-screenshot.jpeg)
## Installation
@@ -27,31 +28,30 @@ Wave Terminal works with MacOS and Linux (preliminary).
Install Wave Terminal from: [www.waveterm.dev/download](https://www.waveterm.dev/download)
Also available as a homebrew cask for MacOS:
+
```
brew install --cask wave
```
## Links
-* Homepage — https://www.waveterm.dev
-* Download Page — https://www.waveterm.dev/download
-* Documentation — https://docs.waveterm.dev/
-* Blog — https://blog.waveterm.dev/
-* Quick Start Guide — https://docs.waveterm.dev/quickstart/
-* Discord Community — https://discord.gg/XfvZ334gwU
+- Homepage — https://www.waveterm.dev
+- Download Page — https://www.waveterm.dev/download
+- Documentation — https://docs.waveterm.dev/
+- Blog — https://blog.waveterm.dev/
+- Quick Start Guide — https://docs.waveterm.dev/quickstart/
+- Discord Community — https://discord.gg/XfvZ334gwU
## Building from Source
-* [MacOS Build Instructions](./BUILD.md)
-* [Linux Build Instructions](./build-linux.md)
+- [MacOS Build Instructions](./BUILD.md)
+- [Linux Build Instructions](./build-linux.md)
## Contributing
-Wave uses Github Project for tracking issues.
+Wave uses Github Project for tracking issues.
Find more information in our [Contributions Guide](CONTRIBUTING.md), which includes:
- * [Ways to contribute](CONTRIBUTING.md#contributing-to-wave-terminal)
- * [Contribution guidelines](CONTRIBUTING.md#before-you-start)
-
-
+- [Ways to contribute](CONTRIBUTING.md#contributing-to-wave-terminal)
+- [Contribution guidelines](CONTRIBUTING.md#before-you-start)
diff --git a/assets/wave-logo_horizontal-coloronblack.svg b/assets/wave-logo_horizontal-coloronblack.svg
new file mode 100644
index 000000000..132c6ad04
--- /dev/null
+++ b/assets/wave-logo_horizontal-coloronblack.svg
@@ -0,0 +1,50 @@
+
+
+
diff --git a/assets/wave-logo_horizontal-coloronwhite.svg b/assets/wave-logo_horizontal-coloronwhite.svg
new file mode 100644
index 000000000..b081eefae
--- /dev/null
+++ b/assets/wave-logo_horizontal-coloronwhite.svg
@@ -0,0 +1,50 @@
+
+
+
diff --git a/assets/wave-screenshot.jpeg b/assets/wave-screenshot.jpeg
new file mode 100644
index 000000000..b1d84ae30
Binary files /dev/null and b/assets/wave-screenshot.jpeg differ
diff --git a/assets/waveterm-logo-with-bg.svg b/assets/waveterm-logo-with-bg.svg
new file mode 100644
index 000000000..0c137c9d7
--- /dev/null
+++ b/assets/waveterm-logo-with-bg.svg
@@ -0,0 +1,29 @@
+
diff --git a/assets/waveterm-logo.png b/assets/waveterm-logo.png
new file mode 100644
index 000000000..daaf606e4
Binary files /dev/null and b/assets/waveterm-logo.png differ
diff --git a/assets/waveterm-logo.svg b/assets/waveterm-logo.svg
new file mode 100644
index 000000000..630fdfa63
--- /dev/null
+++ b/assets/waveterm-logo.svg
@@ -0,0 +1,42 @@
+
+
+
diff --git a/build-linux.md b/build-linux.md
index 63c6b0ee9..c94643b0f 100644
--- a/build-linux.md
+++ b/build-linux.md
@@ -1,16 +1,16 @@
# Build Instructions for Wave Terminal on Linux
-These instructions are for setting up the build on Linux (Ubuntu).
+These instructions are for setting up the build on Linux (Ubuntu).
If you're developing on MacOS please use the [MacOS Build Instructions](./BUILD.md).
If you are working on a different Linux distribution, you may need to adapt some of these instructions to fit your environment.
## Running the Development Version of Wave
-If you install the production version of Wave, you'll see a semi-transparent sidebar, and the data for Wave is stored in the directory ~/prompt. The development version has a red/brown sidebar and stores its data in ~/prompt-dev. This allows the production and development versions to be run simultaneously with no conflicts. If the dev database is corrupted by development bugs, or the schema changes in development it will not affect the production copy.
+If you install the production version of Wave, you'll see a semi-transparent gray sidebar, and the data for Wave is stored in the directory ~/.waveterm. The development version has a blue sidebar and stores its data in ~/.waveterm-dev. This allows the production and development versions to be run simultaneously with no conflicts. If the dev database is corrupted by development bugs, or the schema changes in development it will not affect the production copy.
## Prereqs and Tools
-Download and install Go (must be at least go 1.18). We also need gcc installed to run a CGO build (for Golang).
+Download and install Go (must be at least go 1.18). We also need gcc installed to run a CGO build (for Golang).
zip is required to build linux deployment packages (not required for running and debugging dev builds).
```
@@ -36,7 +36,7 @@ sudo cp scripthaus /usr/local/bin
## Install nodejs, npm, and yarn
-We use [nvm](https://github.com/nvm-sh/nvm) to install nodejs on Linux (you can use an alternate installer if you wish). You must have a relatively recent version of node in order to build the terminal. Different distributions and shells will require different setup instructions. These instructions work for Ubuntu 22 using bash (will install node v20.8.1):
+We use [nvm](https://github.com/nvm-sh/nvm) to install nodejs on Linux (you can use an alternate installer if you wish). You must have a relatively recent version of node in order to build the terminal. Different distributions and shells will require different setup instructions. These instructions work for Ubuntu 22 using bash (will install node v20.8.1):
```
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
@@ -50,10 +50,9 @@ Now we can install yarn:
npm install -g yarn
```
-
## Clone the Wave Repo
-Move out of the `scripthaus` directory if you're still in it. Clone the wave repository into the directory that you'd like to use for development.
+Move out of the `scripthaus` directory if you're still in it. Clone the wave repository into the directory that you'd like to use for development.
```
git clone git@github.com:wavetermdev/waveterm.git
@@ -62,11 +61,12 @@ git clone git@github.com:wavetermdev/waveterm.git
## One-Time Setup
Install Wave modules (we use yarn):
+
```
yarn
```
-Electron also requires specific builds of node_modules to work (because Electron embeds a specific node.js version that might not match your development node.js version). We use a special electron command to cross-compile those modules:
+Electron also requires specific builds of node_modules to work (because Electron embeds a specific node.js version that might not match your development node.js version). We use a special electron command to cross-compile those modules:
```
scripthaus run electron-rebuild
@@ -81,12 +81,11 @@ cd waveterm
scripthaus run build-backend
```
-This builds the Golang backends for Wave. The binaries will put in waveshell/bin and wavesrv/bin respectively. If you're working on a new plugin or other pure frontend changes to Wave, you won't need to rebuild these unless you pull new code from the Wave Repository.
-
+This builds the Golang backends for Wave. The binaries will put in waveshell/bin and wavesrv/bin respectively. If you're working on a new plugin or other pure frontend changes to Wave, you won't need to rebuild these unless you pull new code from the Wave Repository.
## Running WebPack
-We use webpack to build both the React and Electron App Wrapper code. They are both run together using:
+We use webpack to build both the React and Electron App Wrapper code. They are both run together using:
```
scripthaus run webpack-watch
@@ -94,15 +93,16 @@ scripthaus run webpack-watch
## Running the WaveTerm Dev Client
-Now that webpack is running (and watching for file changes) we can finally run the WaveTerm Dev Client! To start the client run:
+Now that webpack is running (and watching for file changes) we can finally run the WaveTerm Dev Client! To start the client run:
+
```
scripthaus run electron
```
-To kill the client, either exit the Electron App normally or just Ctrl-C the ```scripthaus run electron``` command.
+To kill the client, either exit the Electron App normally or just Ctrl-C the `scripthaus run electron` command.
-Because we're running webpack in watch mode, any changes you make to the typescript will be automatically picked up by the client after a refresh. Note that I've disabled hot-reloading in the webpack config, so to pick up new changes you'll have to manually refresh the WaveTerm Client window. To do that use "Command-Shift-R" (Command-R is used internally by Wave and will not force a refresh).
+Because we're running webpack in watch mode, any changes you make to the typescript will be automatically picked up by the client after a refresh. Note that I've disabled hot-reloading in the webpack config, so to pick up new changes you'll have to manually refresh the WaveTerm Client window. To do that use "Command-Shift-R" (Command-R is used internally by Wave and will not force a refresh).
## Debugging the Dev Client
-You can use the regular Chrome DevTools to debug the frontend application. You can open the DevTools using the keyboard shortcut `Cmd-Option-I`.
+You can use the regular Chrome DevTools to debug the frontend application. You can open the DevTools using the keyboard shortcut `Cmd-Option-I`.
diff --git a/src/electron/emain.ts b/src/electron/emain.ts
index faf702d57..da4e34304 100644
--- a/src/electron/emain.ts
+++ b/src/electron/emain.ts
@@ -176,7 +176,7 @@ function readAuthKey() {
}
return authKeyStr.trim();
}
-
+const reloadAcceleratorKey = unamePlatform == "darwin" ? "Option+R" : "Super+R";
let menuTemplate: Electron.MenuItemConstructorOptions[] = [
{
role: "appMenu",
@@ -202,7 +202,7 @@ let menuTemplate: Electron.MenuItemConstructorOptions[] = [
{
role: "viewMenu",
submenu: [
- { role: "reload", accelerator: "Option+R" },
+ { role: "reload", accelerator: reloadAcceleratorKey },
{ role: "toggleDevTools" },
{ type: "separator" },
{ role: "resetZoom" },
diff --git a/waveshell/pkg/shellapi/zshapi.go b/waveshell/pkg/shellapi/zshapi.go
index ac8000cb9..f2222657b 100644
--- a/waveshell/pkg/shellapi/zshapi.go
+++ b/waveshell/pkg/shellapi/zshapi.go
@@ -51,6 +51,7 @@ var ZshIgnoreVars = map[string]bool{
"EPOCHREALTIME": true,
"SHLVL": true,
"TTY": true,
+ "ZDOTDIR": true,
"epochtime": true,
"langinfo": true,
"keymaps": true,
diff --git a/wavesrv/pkg/sstore/sstore.go b/wavesrv/pkg/sstore/sstore.go
index f7a1537ca..386be8abf 100644
--- a/wavesrv/pkg/sstore/sstore.go
+++ b/wavesrv/pkg/sstore/sstore.go
@@ -1541,7 +1541,6 @@ func ResetStatusIndicator(screenId string) error {
func IncrementNumRunningCmds_Update(update *ModelUpdate, screenId string, delta int) {
newNum := ScreenMemIncrementNumRunningCommands(screenId, delta)
- log.Printf("IncrementNumRunningCmds_Update: screenId=%s, newNum=%d\n", screenId, newNum)
AddUpdate(update, ScreenNumRunningCommandsType{
ScreenId: screenId,
Num: newNum,
@@ -1550,7 +1549,6 @@ func IncrementNumRunningCmds_Update(update *ModelUpdate, screenId string, delta
}
func IncrementNumRunningCmds(screenId string, delta int) {
- log.Printf("IncrementNumRunningCmds: screenId=%s, delta=%d\n", screenId, delta)
update := &ModelUpdate{}
IncrementNumRunningCmds_Update(update, screenId, delta)
MainBus.SendUpdate(update)