An open-source, cross-platform terminal for seamless workflows
Go to file
Sylvie Crowe 2913babea7
Sudo Caching (#573)
* feat: share sudo between pty sessions

This is a first pass at a feature to cache the sudo password and share
it between different pty sessions. This makes it possible to not require
manual password entry every time sudo is used.

* feat: allow error handling and canceling sudo cmds

This adds the missing functionality that prevented failed sudo commands
from automatically closing.

* feat: restrict sudo caching to dev mode for now

* modify fullCmdStr not pk.Command

* refactor: condense ecdh encryptor creation

This refactors the common pieces needed to create an encryptor from an
ecdh key pair into a common function.

* refactor: rename promptenc to waveenc

* feat: add command to clear sudo password

We currently do not provide use of the sudo -k and sudo -K commands to
clear the sudo password. This adds a /sudo:clear command to handle it in
the meantime.

* feat: add kwarg to force sudo

In cases where parsing for sudo doesn't work, this provides an alternate
wave kwarg to use instead. It can be used with [sudo=1] at the beginning
of a command.

* refactor: simplify sudoArg parsing

* feat: allow user to clear all sudo passwords

This introduces the "all" kwarg for the sudo:clear command in order to
clear all sudo passwords.

* fix: handle deadline with real time

Golang's time module uses monatomic time by default, but that is not
desired for the password timeout since we want the timer to continue
even if the computer is asleep. We now avoid this by directly comparing
the unix timestamps.

* fix: remove sudo restriction to dev mode

This allows it to be used in regular builds as well.

* fix: switch to password timeout without wait group

This removes an unnecessary waiting period for sudo password entry.

* fix: update deadline in sudo:clear

This allows sudo:clear to cancel the goroutine for watching the password
timer.

* fix: pluralize sudo:clear message when all=1

This changes the output message for /sudo:clear to indicate multiple
passwords cleared if the all=1 kwarg is used.

* fix: use GetRemoteMap for getting remotes in clear

The sudo:clear command was directly looping over the GlobalStore.Map
which is not thread safe. Switched to GetRemoteMap which uses a lock
internally.

* fix: allow sudo metacmd to set sudo false

This fixes the logic for resolving if a command is a sudo command. This
change makes it possible for the sudo metacmd kwarg to force sudo to be
false.
2024-04-16 16:58:17 -07:00
.github Add scripthaus to path for Build Helper workflow (#458) 2024-03-14 12:23:35 -07:00
.testdriver test pr branch (#376) 2024-03-04 21:06:10 -08:00
.vscode only run prettier on js/ts/css/less files 2024-01-29 13:35:09 -08:00
acknowledgements Fix another acknowledgements readme typo (#431) 2024-03-11 17:46:43 -07:00
assets Keybind UI utils (#487) 2024-03-22 17:58:06 -07:00
buildres output dl links (#414) 2024-03-08 15:16:55 -08:00
housekeeping Create MacOS Universal Build (#62) 2023-11-05 00:00:47 -07:00
public Clean up styling and focus behavior for cmdinput (#546) 2024-04-04 19:29:43 -07:00
src add k8s context/namespace to prompt (#576) 2024-04-16 13:22:58 -07:00
waveshell Sudo Caching (#573) 2024-04-16 16:58:17 -07:00
wavesrv Sudo Caching (#573) 2024-04-16 16:58:17 -07:00
webpack import aliass and configuration updates (#291) 2024-02-12 22:47:51 -08:00
.gitignore Support Linux packaging via electron-builder (#371) 2024-03-04 22:03:53 -08:00
.prettierignore add prettier to package.json 2023-08-21 21:33:47 -07:00
.prettierrc.json add prettier to package.json 2023-08-21 21:33:47 -07:00
build-linux.md fix directory names in build-linux.md. also fix reload accelerator for Linux (keybindings) 2024-02-15 10:01:18 -08:00
BUILD.md removed unecessary electron-rebuild steps (#439) 2024-03-12 13:12:40 -06:00
CODE_OF_CONDUCT.md PE 178 Add OSS files (#50) 2023-10-28 13:16:50 -07:00
CONTRIBUTING.md Tidy up contribution guide 2023-11-08 14:10:31 -05:00
electron-builder.config.js Add pacman artifact and update product tagline (#412) 2024-03-08 14:05:21 -08:00
go.work Update dependencies (#383) 2024-03-05 16:12:52 -08:00
go.work.sum update go.sum files (#391) 2024-03-06 14:47:41 -08:00
LICENSE Add Apache 2.0 License 2023-10-16 15:22:41 -07:00
NOTICE add notice and license in package.json 2023-10-16 15:21:21 -07:00
package.json new sidebar UI (#567) 2024-04-10 22:15:11 -07:00
README.md adding new screenshot to readme (#437) 2024-03-12 11:56:47 -06:00
scripthaus.md bump version to v0.7.2, bump waveshell version to 0.6 (#512) 2024-03-27 14:27:55 -07:00
SECURITY.md PE 178 Add OSS files (#50) 2023-10-28 13:16:50 -07:00
tsconfig.json global shortcut for wave (#287) 2024-02-13 17:43:02 -08:00
version.js Get version for build-universal from the build-helper output, use package.json for all versioning (#321) 2024-02-23 17:44:00 -08:00
webpack.config.js big update for webpack configs. use --env to select environment. now dev/prod will combine both web and electron webpack environments 2023-10-25 13:32:15 -07:00
yarn.lock Bump tar from 6.2.0 to 6.2.1 (#568) 2024-04-10 23:46:43 -07:00

Wave Terminal Logo

Wave Terminal

Wave is an open-source AI-native terminal built 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.

  • 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
  • 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

Installation

Wave Terminal works with MacOS and Linux.

Install Wave Terminal from: www.waveterm.dev/download

Also available as a homebrew cask for MacOS:

brew install --cask wave

Building from Source

Contributing

Wave uses Github Issues for issue tracking.

Find more information in our Contributions Guide, which includes: