Compare commits

..

6 Commits

Author SHA1 Message Date
sawka d3eac06d7a remove chatty logging 2024-05-02 15:45:27 -07:00
sawka 5ad6a803b0 bump to v0.7.5 2024-05-02 15:39:54 -07:00
sawka bd366e99f3 add onClose back in to infomsg view 2024-05-02 15:31:56 -07:00
sawka 4cb89e02df use cmdinput keybindings even when auxview info is open 2024-05-02 15:26:17 -07:00
sawka c711d32f54 bump version to v0.7.4 2024-05-01 21:07:48 -07:00
sawka 89f117b922 remove k8s prompt commands (performance issue) 2024-05-01 21:06:57 -07:00
139 changed files with 11076 additions and 33856 deletions
-16
View File
@@ -1,16 +0,0 @@
{
"name": "Wave Terminal Dev Container",
"dockerComposeFile": "../docker-compose.yml",
"service": "wave",
"workspaceFolder": "/app/waveterm",
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.shell.linux": "/bin/bash",
"extensions": ["golang.go", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode"]
}
}
},
"runServices": ["dbus"],
"postAttachCommand": "scripthaus run webpack-watch"
}
-21
View File
@@ -1,21 +0,0 @@
# Ignore node_modules and other dependencies
node_modules
.yarn
# Ignore build directories
build
dist
# Ignore logs and temporary files
logs
*.log
*.tmp
# Ignore test and coverage files
coverage
test-results
# Ignore OS-specific files
.DS_Store
Thumbs.db
+3 -11
View File
@@ -16,10 +16,6 @@ jobs:
arch: "amd64"
runner: "ubuntu-latest"
scripthaus: "build-package-linux"
- platform: "linux"
arch: "arm64"
runner: ubuntu-24.04-arm64-16core
scripthaus: "build-package-linux"
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v4
@@ -32,8 +28,6 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -y libarchive-tools libopenjp2-tools rpm
- name: Install FPM # The version of FPM that comes bundled with electron-builder doesn't include a Linux ARM target. Installing Gems onto the runner is super quick so we'll just do this for all targets.
run: sudo gem install fpm
- uses: actions/setup-go@v5
with:
go-version: ${{env.GO_VERSION}}
@@ -51,20 +45,18 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: ${{env.NODE_VERSION}}
- name: Install yarn
run: |
corepack enable
yarn install
cache: "yarn"
- name: Set Version
id: set-version
run: |
VERSION=$(node -e 'console.log(require("./version.js"))')
echo "WAVETERM_VERSION=${VERSION}" >> "$GITHUB_OUTPUT"
- name: Install Yarn Dependencies
run: yarn --frozen-lockfile
- name: Build ${{ matrix.platform }}/${{ matrix.arch }}
run: scripthaus run ${{ matrix.scripthaus }}
env:
GOARCH: ${{ matrix.arch }}
USE_SYSTEM_FPM: true # Ensure that the installed version of FPM is used rather than the bundled one.
CSC_LINK: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_CERTIFICATE}}
CSC_KEY_PASSWORD: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_CERTIFICATE_PWD }}
APPLE_ID: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_NOTARIZATION_APPLE_ID }}
+39 -24
View File
@@ -1,38 +1,35 @@
name: TestDriver.ai Regression Testing - Waveterm
name: TestDriver.ai Regression Testing
on:
push:
branches:
- main
pull_request:
branches:
- main
schedule:
- cron: 0 21 * * *
workflow_dispatch: null
push:
branches:
- main
pull_request:
branches:
- main
schedule:
- cron: 0 21 * * *
workflow_dispatch: null
permissions:
contents: read # To allow the action to read repository contents
pull-requests: write # To allow the action to create/update pull request comments
contents: read # To allow the action to read repository contents
pull-requests: write # To allow the action to create/update pull request comments
jobs:
test:
name: "TestDriver"
name: TestDriver
runs-on: ubuntu-latest
steps:
- uses: dashcamio/testdriver@main
id: testdriver
with:
version: v3.6.5
key: ${{secrets.DASHCAM_API}}
version: v2.10.2
prerun: |
rm ~/Desktop/WITH-LOVE-FROM-AMERICA.txt
cd ~/actions-runner/_work/testdriver/testdriver/
brew install go
brew tap scripthaus-dev/scripthaus
brew install corepack
brew install scripthaus
corepack enable
yarn install
npm install -g yarn
scripthaus run build-backend
echo "Yarn"
yarn
@@ -43,8 +40,26 @@ jobs:
echo "Starting Electron"
scripthaus run electron 1>/dev/null 2>&1 &
echo "Electron Done"
cd /Users/ec2-user/Downloads/td/
npm rebuild
exit
exit
prompt: |
1. /run /Users/ec2-user/actions-runner/_work/testdriver/testdriver/.testdriver/wave1.yml
1. wait 10 seconds
1. click "Continue"
1. click "Create new tab"
1. validate that overlapping text does not appear in the application
1. focus the Wave input with the keyboard shorcut Command + I
1. type 'ls' into the input
1. press return
1. validate Wave shows the result of 'ls'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: peter-evans/create-or-update-comment@v4
if: ${{always()}}
with:
issue-number: ${{ github.event.pull_request.number }}
body: |
## TestDriver Summary
${{ steps.testdriver.outputs.markdown }}
${{ steps.testdriver.outputs.summary }}
reactions: |
+1
-1
-9
View File
@@ -22,12 +22,3 @@ test/
.vscode/
make/
waveterm-builds.zip
# Yarn Modern
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
+17
View File
@@ -0,0 +1,17 @@
rm ~/Desktop/WITH-LOVE-FROM-AMERICA.txt
cd ~/actions-runner/_work/testdriver/testdriver/
brew install go
brew tap scripthaus-dev/scripthaus
brew install scripthaus
npm install -g yarn
scripthaus run build-backend
echo "Yarn"
yarn
echo "Rebuild"
scripthaus run electron-rebuild
echo "Webpack"
scripthaus run webpack-build
echo "Starting Electron"
scripthaus run electron 1>/dev/null 2>&1 &
echo "Electron Done"
exit
-29
View File
@@ -1,29 +0,0 @@
steps:
- step:
- command: focus-application
name: Electron
- command: hover-text
text: Get Started
action: click
- command: hover-text
text: Settings
action: click
- command: hover-text
text: 13px
action: click
- command: hover-text
text: 12px
action: click
- command: hover-text
text: Dark
action: click
- command: hover-text
text: Light
action: click
- command: hover-text
text: workspace-1
action: click
- step:
- command: assert
expect: the terminal is white
-1
View File
@@ -1 +0,0 @@
nodeLinker: node-modules
+11 -19
View File
@@ -11,43 +11,35 @@ If you install the production version of Wave, you'll see a semi-transparent gra
Download and install Go (must be at least go 1.18):
```sh
```
brew install go
```
Download and install ScriptHaus (to run the build commands):
```sh
```
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).
- Node can be installed from [https://nodejs.org](https://nodejs.org).
- npm can install yarn using:
We use Yarn Modern to manage our packages. The recommended way to install Yarn Modern is using Corepack, a new utility shipped by NodeJS that lets you manage your package manager versioning as you would any packages.
If you installed NodeJS from the official feed (via the website or using NVM), this should come preinstalled. If you use Homebrew or some other feed, you may need to manually install Corepack using `npm install -g corepack`.
For more information on Corepack, check out [this link](https://yarnpkg.com/corepack).
Once you've verified that you have Corepack installed, run the following script to set up Yarn for the repository:
```sh
corepack enable
yarn install
```
npm install -g yarn
```
## Clone the Repo
```sh
```
git clone git@github.com:wavetermdev/waveterm.git
```
## Building WaveShell / WaveSrv
```sh
```
scripthaus run build-backend
```
@@ -57,7 +49,7 @@ This builds the Golang backends for Wave. The binaries will put in waveshell/bin
Install modules (we use yarn):
```sh
```
yarn
```
@@ -65,7 +57,7 @@ yarn
We use webpack to build both the React and Electron App Wrapper code. They are both run together using:
```sh
```
scripthaus run webpack-watch
```
@@ -73,7 +65,7 @@ scripthaus run webpack-watch
Now that webpack is running (and watching for file changes) we can finally run the WaveTerm Dev Client! To start the client run:
```sh
```
scripthaus run electron
```
-25
View File
@@ -1,25 +0,0 @@
FROM ubuntu:latest
WORKDIR /app
RUN apt update && \
apt install -y golang-go nodejs npm libgtk2.0-0t64 libgtk-3-0t64 libgbm-dev libnotify-dev libnss3 libxss1 libasound2t64 libxtst6 xauth xvfb && \
npm install -g corepack
RUN corepack enable && \
yarn install
RUN git clone https://github.com/scripthaus-dev/scripthaus.git
WORKDIR /app/scripthaus
RUN CGO_ENABLED=1 go build -o scripthaus cmd/main.go && \
cp scripthaus /usr/local/bin
WORKDIR /app
RUN mkdir waveterm
WORKDIR /app/waveterm
COPY . .
ENV GOFLAGS="-buildvcs=false"
ENV DISPLAY=":0"
RUN useradd -ms /bin/bash wave
+1 -1
View File
@@ -1,5 +1,5 @@
# Open-Source Acknowledgements
We make use of many amazing open-source projects to build Wave Terminal. We automatically generate license reports via FOSSA to comply with the license distribution requirements of our dependencies. Below is a summary of the licenses used by our product. For a full report, see [here](https://app.fossa.com/reports/24d13570-624b-4450-8c22-756e513060c9?full=true) (the page may take 20-30s to load).
We make use of many amazing open-source projects to build Wave Terminal. We automatically generate license reports via FOSSA to comply with the license distribution requirements of our dependencies. Below is a summary of the licenses used by our product. Clicking on the image will take you to the full report on FOSSA's website.
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fwavetermdev%2Fwaveterm.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fwavetermdev%2Fwaveterm?ref=badge_large)
+4 -4
View File
@@ -285,6 +285,10 @@
"keys": ["Ctrl:r"],
"commandStr": ["/history"]
},
{
"command": "cmdinput:openAIChat",
"keys": ["Ctrl:Space"]
},
{
"command": "history:closeHistory",
"keys": ["Ctrl:g", "Ctrl:c"]
@@ -328,9 +332,5 @@
{
"command": "codeedit:togglePreview",
"keys": ["Cmd:p"]
},
{
"command": "rightsidebar:toggle",
"keys": ["Cmd:Shift:Space"]
}
]
+10 -13
View File
@@ -34,23 +34,20 @@ You'll now have to move the built `scripthaus` binary to a directory in your pat
sudo cp scripthaus /usr/local/bin
```
## Install nodejs and yarn
## Install nodejs, npm, and yarn
You also need a relatively modern nodejs with npm and yarn installed.
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):
Node can be installed from [https://nodejs.org](https://nodejs.org).
```
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
source ~/.bashrc
nvm install v20.8.1
```
We use Yarn Modern to manage our packages. The recommended way to install Yarn Modern is using Corepack, a new utility shipped by NodeJS that lets you manage your package manager versioning as you would any packages.
Now we can install yarn:
If you installed NodeJS from the official feed (via the website or using NVM), this should come preinstalled. If you use Homebrew or some other feed, you may need to manually install Corepack using `npm install -g corepack`.
For more information on Corepack, check out [this link](https://yarnpkg.com/corepack).
Once you've verified that you have Corepack installed, run the following script to set up Yarn for the repository:
```sh
corepack enable
yarn install
```
npm install -g yarn
```
## Clone the Wave Repo
-18
View File
@@ -1,18 +0,0 @@
version: '3.8'
services:
wave:
build:
context: .
dockerfile: Dockerfile
container_name: waveterminal
environment:
- DISPLAY=${DISPLAY}
- NODE_ENV=development
volumes:
- /tmp/.X11-unix:/tmp/.X11-unix
- .:/app/waveterm
stdin_open: true
tty: true
ports:
- "3000:3000"
-14710
View File
File diff suppressed because it is too large Load Diff
+53 -57
View File
@@ -6,7 +6,7 @@
},
"productName": "Wave",
"description": "An Open-Source, AI-Native, Terminal Built for Seamless Workflows",
"version": "0.7.6",
"version": "0.7.5",
"main": "dist/emain.js",
"license": "Apache-2.0",
"repository": {
@@ -18,98 +18,94 @@
"appId": "dev.commandline.waveterm"
},
"dependencies": {
"@lexical/react": "^0.17.0",
"@monaco-editor/react": "^4.6.0",
"@lexical/react": "^0.14.3",
"@monaco-editor/react": "^4.5.1",
"@table-nav/core": "^0.0.7",
"@table-nav/react": "^0.0.7",
"@tanstack/match-sorter-utils": "^8.19.4",
"@tanstack/react-table": "^8.20.1",
"@withfig/autocomplete": "^2.672.0",
"@tanstack/match-sorter-utils": "^8.8.4",
"@tanstack/react-table": "^8.10.3",
"autobind-decorator": "^2.4.0",
"base64-js": "^1.5.1",
"clsx": "^2.1.1",
"dayjs": "^1.11.12",
"dompurify": "^3.1.6",
"electron-squirrel-startup": "^1.0.1",
"electron-updater": "^6.3.2",
"framer-motion": "^10.18.0",
"classnames": "^2.3.1",
"dayjs": "^1.11.3",
"dompurify": "^3.0.2",
"electron-squirrel-startup": "^1.0.0",
"electron-updater": "^6.1.8",
"framer-motion": "^10.16.16",
"lexical": "0.14.5",
"mobx": "6.12.5",
"mobx-react": "^7.6.0",
"mobx": "6.12",
"mobx-react": "^7.5.0",
"monaco-editor": "0.48.0",
"mustache": "^4.2.0",
"node-fetch": "^3.3.2",
"overlayscrollbars": "^2.10.0",
"overlayscrollbars-react": "^0.5.6",
"node-fetch": "^3.2.10",
"overlayscrollbars": "^2.6.1",
"overlayscrollbars-react": "^0.5.5",
"papaparse": "^5.4.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-markdown": "^9.0.1",
"react": "^18.1.0",
"react-dom": "^18.1.0",
"react-markdown": "^9.0.0",
"remark": "^15.0.1",
"remark-gfm": "^4.0.0",
"sprintf-js": "^1.1.3",
"throttle-debounce": "^5.0.2",
"tinycolor2": "^1.6.0",
"sprintf-js": "^1.1.2",
"throttle-debounce": "^5.0.0",
"tsx-control-statements": "^5.1.1",
"uuid": "^9.0.1",
"winston": "^3.13.1",
"uuid": "^9.0.0",
"winston": "^3.8.2",
"xterm": "^5.3.0",
"xterm-addon-serialize": "^0.11.0",
"xterm-addon-web-links": "^0.9.0",
"xterm-addon-webgl": "^0.16.0"
},
"devDependencies": {
"@babel/cli": "^7.24.8",
"@babel/core": "^7.25.2",
"@babel/cli": "^7.17.10",
"@babel/core": "^7.18.2",
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-proposal-decorators": "^7.24.7",
"@babel/plugin-proposal-decorators": "^7.18.2",
"@babel/plugin-proposal-private-methods": "^7.18.6",
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
"@babel/plugin-transform-react-jsx": "^7.25.2",
"@babel/plugin-transform-runtime": "^7.24.7",
"@babel/preset-env": "^7.25.3",
"@babel/preset-react": "^7.24.7",
"@babel/preset-typescript": "^7.24.7",
"@babel/plugin-transform-react-jsx": "^7.17.12",
"@babel/plugin-transform-runtime": "^7.23.4",
"@babel/preset-env": "^7.18.2",
"@babel/preset-react": "^7.23.3",
"@babel/preset-typescript": "^7.17.12",
"@electron/rebuild": "^3.6.0",
"@svgr/webpack": "^8.1.0",
"@types/classnames": "^2.3.1",
"@types/electron": "^1.6.10",
"@types/node": "^22.1.0",
"@types/papaparse": "^5.3.14",
"@types/react": "^18.3.3",
"@types/semver": "^7.5.8",
"@types/sprintf-js": "^1.1.4",
"@types/throttle-debounce": "^5.0.2",
"@types/tinycolor2": "^1.4.6",
"@types/uuid": "^9.0.8",
"@types/webpack-env": "^1.18.5",
"@withfig/autocomplete-types": "^1.31.0",
"@types/node": "^20.11.0",
"@types/papaparse": "^5.3.10",
"@types/react": "^18.0.12",
"@types/semver": "^7.5.6",
"@types/sprintf-js": "^1.1.3",
"@types/throttle-debounce": "^5.0.1",
"@types/uuid": "^9.0.7",
"@types/webpack-env": "^1.18.3",
"babel-loader": "^9.1.3",
"babel-plugin-jsx-control-statements": "^4.1.2",
"copy-webpack-plugin": "^12.0.2",
"css-loader": "^7.1.2",
"electron": "^31.3.1",
"copy-webpack-plugin": "^12.0.0",
"css-loader": "^7.1.0",
"electron": "^30.0.1",
"electron-builder": "^24.13.3",
"electron-builder-squirrel-windows": "25.0.0-alpha.10",
"electron-builder-squirrel-windows": "^24.13.3",
"file-loader": "^6.2.0",
"http-server": "^14.1.1",
"less": "^4.2.0",
"less-loader": "^12.2.0",
"less": "^4.1.2",
"less-loader": "^12.0.0",
"lodash-webpack-plugin": "^0.11.6",
"mini-css-extract-plugin": "^2.9.0",
"mini-css-extract-plugin": "^2.6.0",
"prettier": "^2.8.8",
"raw-loader": "^4.0.2",
"react-split-it": "^2.0.0",
"style-loader": "4.0.0",
"typescript": "^5.5.4",
"webpack": "^5.93.0",
"webpack-bundle-analyzer": "^4.10.2",
"typescript": "^5.0.0",
"webpack": "^5.73.0",
"webpack-bundle-analyzer": "^4.10.1",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^5.0.4",
"webpack-merge": "^5.10.0",
"yaml": "^2.5.0"
"webpack-merge": "^5.8.0",
"yaml": "^2.4.0"
},
"scripts": {
"postinstall": "electron-builder install-app-deps"
},
"packageManager": "yarn@4.1.1"
}
}
-1
View File
@@ -170,7 +170,6 @@
--cmdinput-button-bg-color: var(--tab-green);
--cmdinput-disabled-bg-color: var(--app-text-bg-disabled-color);
--cmdinput-history-bg-color: var(--app-bg-color);
--cmdinput-ghost-text-color: rgb(145, 150, 144);
/* screen view color */
--screen-view-text-caption-color: rgb(139, 145, 138);
-1
View File
@@ -50,7 +50,6 @@
--modal-header-bottom-border-color: rgba(0, 0, 0, 0.3);
/* cmd input */
--cmdinput-ghost-text-color: rgb(116, 116, 116);
/* scroll colors */
--scrollbar-background-color: var(--app-bg-color);
+12
View File
@@ -115,3 +115,15 @@ scripthaus run fullbuild-waveshell
echo building wavesrv
scripthaus run build-wavesrv
```
```bash
# @scripthaus command generate-license-disclaimers
DISCLAIMER_DIR="./acknowledgements"
DISCLAIMER_OUTPUT_DIR="$DISCLAIMER_DIR/disclaimers"
if [ -d "$DISCLAIMER_OUTPUT_DIR" ]; then
rm -rf "$DISCLAIMER_OUTPUT_DIR"
fi
mkdir "$DISCLAIMER_OUTPUT_DIR"
go run github.com/google/go-licenses@latest report ./wavesrv/... ./waveshell/... --template "$DISCLAIMER_DIR/go_licenses_report.tpl" --ignore github.com/wavetermdev/waveterm > "$DISCLAIMER_OUTPUT_DIR/backend.md"
yarn licenses generate-disclaimer > "$DISCLAIMER_OUTPUT_DIR/frontend.md"
```
+11 -18
View File
@@ -4,7 +4,7 @@
import * as React from "react";
import * as mobxReact from "mobx-react";
import * as mobx from "mobx";
import { clsx } from "clsx";
import cn from "classnames";
import { boundMethod } from "autobind-decorator";
import { If } from "tsx-control-statements/components";
@@ -31,20 +31,12 @@ class App extends React.Component<{}, {}> {
dcWait: OV<boolean> = mobx.observable.box(false, { name: "dcWait" });
mainContentRef: React.RefObject<HTMLDivElement> = React.createRef();
termThemesLoaded: OV<boolean> = mobx.observable.box(false, { name: "termThemesLoaded" });
chatFocusTimeoutId: NodeJS.Timeout = null;
constructor(props: {}) {
super(props);
if (GlobalModel.isDev) document.body.classList.add("is-dev");
}
componentWillUnmount() {
if (this.chatFocusTimeoutId) {
clearTimeout(this.chatFocusTimeoutId);
this.chatFocusTimeoutId = null;
}
}
@boundMethod
handleContextMenu(e: any) {
let isInNonTermInput = false;
@@ -76,15 +68,16 @@ class App extends React.Component<{}, {}> {
@boundMethod
openMainSidebar() {
GlobalModel.mainSidebarModel.setCollapsed(false);
const mainSidebarModel = GlobalModel.mainSidebarModel;
const width = mainSidebarModel.getWidth(true);
mainSidebarModel.saveState(width, false);
}
@boundMethod
openRightSidebar() {
GlobalModel.rightSidebarModel.setCollapsed(false);
this.chatFocusTimeoutId = setTimeout(() => {
GlobalModel.inputModel.setChatSidebarFocus();
}, 100);
const rightSidebarModel = GlobalModel.rightSidebarModel;
const width = rightSidebarModel.getWidth(true);
rightSidebarModel.saveState(width, false);
}
@boundMethod
@@ -140,7 +133,7 @@ class App extends React.Component<{}, {}> {
const rightSidebarCollapsed = GlobalModel.rightSidebarModel.getCollapsed();
const activeMainView = GlobalModel.activeMainView.get();
const lightDarkClass = GlobalModel.isDarkTheme.get() ? "is-dark" : "is-light";
const mainClassName = clsx(
const mainClassName = cn(
"platform-" + platform,
{
"mainsidebar-collapsed": mainSidebarCollapsed,
@@ -166,13 +159,13 @@ class App extends React.Component<{}, {}> {
</div>
</div>
</If>
<If condition={rightSidebarCollapsed && activeMainView == "session"}>
<div className="right-sidebar-triggers" title="Open Wave AI (Cmd-Shift-Space)">
<If condition={GlobalModel.isDev && rightSidebarCollapsed && activeMainView == "session"}>
<div className="right-sidebar-triggers">
<Button
className="secondary ghost right-sidebar-trigger"
onClick={this.openRightSidebar}
>
<i className="fa-sharp fa-regular fa-sparkles"></i>
<i className="fa-sharp fa-solid fa-sidebar-flip"></i>
</Button>
</div>
</If>

Some files were not shown because too many files have changed in this diff Show More