Compare commits

..

2 Commits

Author SHA1 Message Date
sawka dc0d713413 small fix for openai chat styles 2024-03-08 10:32:32 -08:00
sawka 7e0722275b addLineForCmd should only increment for running commands. also openai lines should increment 2024-03-08 10:29:02 -08:00
23 changed files with 115 additions and 2427 deletions
+1 -1
View File
@@ -27,7 +27,7 @@ jobs:
if: matrix.platform == 'linux'
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -y libarchive-tools libopenjp2-tools rpm
sudo apt-get install rpm
- uses: actions/setup-go@v5
with:
go-version: ${{env.GO_VERSION}}
-23
View File
@@ -1,23 +0,0 @@
name: Publish a new release
on:
release:
types: [published]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Get the version
id: get_version
run: |
VERSION=$(node -e 'console.log(require("./version.js"))')
echo "WAVETERM_VERSION=${VERSION}" >> "$GITHUB_OUTPUT"
- name: Copy staged artifacts to the release bucket
run: |
. ./buildres/publish-from-staging.sh
env:
AWS_ACCESS_KEY_ID: "${{ secrets.S3_USERID }}"
AWS_SECRET_ACCESS_KEY: "${{ secrets.S3_SECRETKEY }}"
AWS_DEFAULT_REGION: us-west-2
- name: Publish to Ubuntu PPA
+3 -4
View File
@@ -9,7 +9,7 @@
# Wave Terminal
Wave is an open-source AI-native terminal built for seamless workflows.
An 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.
@@ -17,14 +17,13 @@ Wave isn't just another terminal emulator; it's a rethink on how terminals are b
- 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
- CodeEdit, to edit local and remote files with a VSCode-like inline editor
- AI Integration with ChatGPT (or ChatGPT compatible APIs) to help write commands and get answers inline
![WaveTerm Screenshot](./assets/wave-screenshot.jpeg)
## Installation
Wave Terminal works with MacOS and Linux.
Wave Terminal works with MacOS and Linux (preliminary).
Install Wave Terminal from: [www.waveterm.dev/download](https://www.waveterm.dev/download)
@@ -50,7 +49,7 @@ brew install --cask wave
## Contributing
Wave uses Github Issues for issue tracking.
Wave uses Github Project for tracking issues.
Find more information in our [Contributions Guide](CONTRIBUTING.md), which includes:
+2 -2
View File
@@ -11,9 +11,9 @@ The license disclaimers for the backend are generated using the [go-licenses](ht
The license disclaimers for the frontend are generated using the [`yarn licenses` tool](https://classic.yarnpkg.com/lang/en/docs/cli/licenses/). This outputs to the file [`frontend.md`](./disclaimers/frontend.md).
These disclaimer files linked above will be periodically regenerated to reflect new dependencies.
These three disclaimer files linked above will be periodically regenerated to reflect new dependencies.
The [`scripthaus.md` file](../scripthaus.md) contains scripts to generate the disclaimers and package them. To manually generate the disclaimers, run the following from the repository root directory:
The [`scripthaus.md` file](../scripthaus.md) contains scripts to genrate the disclaimers and package them. To manually generate the disclaimers, run the following from the repository root directory:
```bash
scripthaus run generate-license-disclaimers
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -13,4 +13,4 @@ fi
DOWNLOAD_DIR=$VERSION-staged
rm -rf $DOWNLOAD_DIR
mkdir -p $DOWNLOAD_DIR
aws s3 cp s3://waveterm-github-artifacts/staging/$VERSION/ $DOWNLOAD_DIR/ --recursive --profile $AWS_PROFILE
aws s3 cp s3://waveterm-github-artifacts/staging/$VERSION/ $DOWNLOAD_DIR/ --recursive
+1 -10
View File
@@ -9,13 +9,4 @@ if [ -z "$VERSION" ]; then
exit
fi
ORIGIN="waveterm-github-artifacts/staging/$VERSION/"
DESTINATION="dl.waveterm.dev/releases/"
OUTPUT=$(aws s3 cp s3://$ORIGIN s3://$DESTINATION --recursive --profile $AWS_PROFILE)
for line in $OUTPUT; do
PREFIX=${line%%${DESTINATION}*}
SUFFIX=${line:${#PREFIX}}
echo "https://$SUFFIX"
done
aws s3 cp s3://waveterm-github-artifacts/staging/$VERSION/ s3://dl.waveterm.dev/releases/ --recursive
+1 -1
View File
@@ -73,7 +73,7 @@ const config = {
executableName: pkg.productName,
category: "TerminalEmulator",
icon: "public/waveterm.icns",
target: ["zip", "deb", "rpm", "AppImage", "pacman"],
target: ["zip", "deb", "rpm", "AppImage"],
synopsis: pkg.description,
description: null,
desktop: {
+1 -1
View File
@@ -5,7 +5,7 @@
"email": "info@commandline.dev"
},
"productName": "Wave",
"description": "An Open-Source, AI-Native, Terminal Built for Seamless Workflows",
"description": "An open-source, cross-platform, AI-integrated, modern terminal for seamless workflows.",
"version": "0.7.0",
"main": "dist/emain.js",
"license": "Apache-2.0",
-1
View File
@@ -60,7 +60,6 @@
--app-panel-bg-color-dev: rgb(21, 23, 48);
--app-icon-color: rgb(139, 145, 138);
--app-icon-hover-color: #fff;
--app-selected-mask-color: rgba(255, 255, 255, 0.06);
/* icon colors */
-3
View File
@@ -17,7 +17,6 @@
--app-panel-bg-color-dev: #e0e0e0;
--app-icon-color: rgb(80, 80, 80);
--app-icon-hover-color: rgb(100, 100, 100);
--app-selected-mask-color: rgba(0, 0, 0, 0.06);
--input-bg-color: #eeeeee;
@@ -51,8 +50,6 @@
--form-element-disabled-text-color: #b7b7b7;
--form-element-placeholder-color: #b7b7b7;
--markdown-bg-color: rgb(0, 0, 0, 0.1);
/* modal colors */
--modal-header-bottom-border-color: rgba(0, 0, 0, 0.3);
+14 -16
View File
@@ -8,6 +8,19 @@
margin-bottom: 10px;
}
code {
background-color: var(--markdown-bg-color);
color: var(--app-text-color);
font-family: var(--termfontfamily);
border-radius: 4px;
}
code.inline {
padding-top: 0;
padding-bottom: 0;
font-family: var(--termfontfamily);
}
.title {
color: var(--app-text-color);
margin-top: 16px;
@@ -49,29 +62,14 @@
pre {
background-color: var(--markdown-bg-color);
margin: 4px 10px 4px 10px;
padding: 0.7em;
padding: 6px 6px 6px 10px;
border-radius: 4px;
code {
background-color: transparent;
padding: 0;
line-height: normal;
}
}
pre.selected {
outline: 2px solid var(--markdown-outline-color);
}
code {
color: var(--app-text-color);
font-family: var(--termfontfamily);
border-radius: 4px;
background-color: var(--markdown-bg-color);
padding: 0.15em 0.5em;
line-height: 1.5;
}
.title {
font-weight: semibold;
padding-top: 6px;
+1 -1
View File
@@ -24,7 +24,7 @@ function HeaderRenderer(props: any, hnum: number): any {
}
function CodeRenderer(props: any): any {
return <code>{props.children}</code>;
return <code className={cn({ inline: props.inline })}>{props.children}</code>;
}
@mobxReact.observer
+3 -6
View File
@@ -75,7 +75,6 @@ class AboutModal extends React.Component<{}, {}> {
}
render() {
const currentDate = new Date();
return (
<Modal className="about-modal">
<Modal.Header onClose={this.closeModal} title="About" />
@@ -87,9 +86,9 @@ class AboutModal extends React.Component<{}, {}> {
<div className="text-wrapper">
<div>Wave Terminal</div>
<div className="text-standard">
Open-Source AI-Native Terminal
Modern Terminal for
<br />
Built for Seamless Workflows
Seamless Workflow
</div>
</div>
</div>
@@ -123,9 +122,7 @@ class AboutModal extends React.Component<{}, {}> {
Acknowledgements
</LinkButton>
</div>
<div className="about-section text-standard">
&copy; {currentDate.getFullYear()} Command Line Inc.
</div>
<div className="about-section text-standard">&copy; 2023 Command Line Inc.</div>
</div>
</Modal>
);
+1 -1
View File
@@ -90,7 +90,7 @@ class DisconnectedModal extends React.Component<{}, {}> {
onClick={this.restartServer}
leftIcon={<i className="fa-sharp fa-solid fa-triangle-exclamation"></i>}
>
Restart Wave Backend
Restart Server
</Button>
</div>
</Modal>
+1 -1
View File
@@ -74,7 +74,7 @@
.focused-option {
border: 1px solid rgba(241, 246, 243, 0.15);
border-radius: 4px;
background: var(--app-selected-mask-color);
background: rgba(255, 255, 255, 0.06);
}
}
}
+1 -1
View File
@@ -161,7 +161,7 @@ class CmdInput extends React.Component<{}, {}> {
</CenteredIcon>
</div>
</If>
<div key="ai" title="Wave AI (Ctrl-Space)" className="cmdinput-icon" onClick={this.clickAIAction}>
<div key="ai" title="Wave AI (Cmd-Space)" className="cmdinput-icon" onClick={this.clickAIAction}>
<i className="fa-sharp fa-regular fa-sparkles fa-fw" />
</div>
<div
+4 -4
View File
@@ -279,6 +279,9 @@ const menuTemplate: Electron.MenuItemConstructorOptions[] = [
{
role: "windowMenu",
},
{
role: "help",
},
];
const menu = electron.Menu.buildFromTemplate(menuTemplate);
@@ -327,10 +330,7 @@ function createMainWindow(clientData: ClientDataType | null): Electron.BrowserWi
height: bounds.height,
minWidth: 800,
minHeight: 600,
icon:
unamePlatform == "linux"
? path.join(getElectronAppBasePath(), "public/logos/wave-logo-dark.png")
: undefined,
icon: unamePlatform == "linux" ? "public/logos/wave-logo-dark.png" : undefined,
webPreferences: {
preload: path.join(getElectronAppBasePath(), DistDir, "preload.js"),
},
+9 -30
View File
@@ -36,7 +36,6 @@ import { Cmd } from "./cmd";
import { GlobalCommandRunner } from "./global";
import { clearMonoFontCache, getMonoFontSize } from "@/util/textmeasure";
import type { TermWrap } from "@/plugins/terminal/term";
import * as util from "@/util/util";
type SWLinePtr = {
line: LineType;
@@ -144,8 +143,6 @@ class Model {
});
this.ws.reconnect();
this.keybindManager = new KeybindManager();
this.readConfigKeybindings();
this.initSystemKeybindings();
this.inputModel = new InputModel(this);
this.pluginsModel = new PluginsModel(this);
this.bookmarksModel = new BookmarksModel(this);
@@ -174,6 +171,13 @@ class Model {
}
return fontSize;
});
this.keybindManager.registerKeybinding("system", "electron", "any", (waveEvent) => {
if (this.keybindManager.checkKeyPressed(waveEvent, "system:toggleDeveloperTools")) {
getApi().toggleDeveloperTools();
return true;
}
return false;
});
getApi().onTCmd(this.onTCmd.bind(this));
getApi().onICmd(this.onICmd.bind(this));
getApi().onLCmd(this.onLCmd.bind(this));
@@ -204,31 +208,6 @@ class Model {
};
}
readConfigKeybindings() {
const url = new URL(this.getBaseHostPort() + "/config/keybindings.json");
let prtn = fetch(url, { method: "get", body: null, headers: this.getFetchHeaders() });
prtn.then((resp) => {
if (resp.status == 404) {
return [];
} else if (!resp.ok) {
util.handleNotOkResp(resp, url);
}
return resp.json();
}).then((userKeybindings) => {
this.keybindManager.setUserKeybindings(userKeybindings);
});
}
initSystemKeybindings() {
this.keybindManager.registerKeybinding("system", "electron", "any", (waveEvent) => {
if (this.keybindManager.checkKeyPressed(waveEvent, "system:toggleDeveloperTools")) {
getApi().toggleDeveloperTools();
return true;
}
return false;
});
}
static getInstance(): Model {
if (!(window as any).GlobalModel) {
(window as any).GlobalModel = new Model();
@@ -1319,7 +1298,7 @@ class Model {
};
/**
console.log(
"CMD"
"CMD",
pk.metacmd + (pk.metasubcmd != null ? ":" + pk.metasubcmd : ""),
pk.args,
pk.kwargs,
@@ -1547,7 +1526,7 @@ class Model {
.then((resp) => {
if (!resp.ok) {
badResponseStr = sprintf(
"Bad fetch response for /apiread-file: %d %s",
"Bad fetch response for /api/read-file: %d %s",
resp.status,
resp.statusText
);

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