diff --git a/features/codeedit.mdx b/features/codeedit.mdx index b04e8f8..5ad2c44 100644 --- a/features/codeedit.mdx +++ b/features/codeedit.mdx @@ -8,23 +8,25 @@ icon: 'code' Codeedit is built using [Monaco](https://microsoft.github.io/monaco-editor/) (the editor that powers VS Code) and allows you to view and edit files inline using a rich, native UI. It brings to your terminal an unparalleled editing experience with features such as syntax highlighting, code folding, code completion, find and replace, and much more. -### Using Codeedit +## Using Codeedit ``` -Usage: codeedit [filename] /codeedit [filename] [lang=javascript] codeedit [filename] [lang=json] codeedit hello.json ``` -Both with and without the slash are allowed. Filename resolves against the current remote and current working directory. +Both with and without the slash are allowed. The option `filename` resolves against the current remote and current working directory. -### Shortcuts -Below is a list of the currently available keyboard shortcuts for Codeedit. We are committed to enhancing Codeedit's capabilities and will update this list as new functionalities become available. Please revisit this page for the latest updates. +## Shortcuts +Below is a list of the currently available keyboard shortcuts for Codeedit. - `Cmd-S` - Saves current file - `Cmd-D` - Closes the editor. Note, users will be prompted with whether or not they'd like to save before closing. - `Cmd-F` - Search the current file for a string using _whole word_, _regex_ and _match case_ options. `Cmd-F` also supports _find and replace_ by simply clicking the green dropdown arrow in the find box. -**Note:** Codeedit also includes a live preview feature for Markdown files. To activate, open a Markdown file in Codeedit and click the `show preview` button located in the top right corner. This feature enables simultaneous editing and rendering, offering a side-by-side view of your Markdown source and its live output for efficient and immediate feedback. +We are committed to enhancing Codeedit's capabilities and will update this list as new functionalities become available. Please revisit this page for the latest updates. + +Codeedit also includes a live preview feature for Markdown files. To activate, open a Markdown file in Codeedit and click the `show preview` button located in the top right corner. This feature enables simultaneous editing and rendering, offering a side-by-side view of your Markdown source and its live output for efficient and immediate feedback. + -**Note:** See [codeview](#codeview) to view files in a _view only_ mode using the same native UI. +**Note:** See [codeview](/reference/slashcommands#codeview) to view files in a _view only_ mode using the same native UI. diff --git a/features/connections.mdx b/features/connections.mdx index d9070de..8abe0e1 100644 --- a/features/connections.mdx +++ b/features/connections.mdx @@ -3,30 +3,34 @@ title: 'Connections' description: 'Run commands on remote machines' icon: 'map' --- - ## Connections - -So far we've been running commands on our local computer. Wave of course supports regular ssh (as a block) that you can run to log into remote machines but regular ssh connections suffer from two problems -- (1) you can get disconnected, and (2) no universal history. To get the most out of Wave you need to set up a Wave "connection". This functions as a virtual SSH connection that can recover from disconnects, save your environment (working directory, environment variables, functions, etc.), and save its history. +Wave enhances SSH by offering connections that stay alive across sessions, maintaining your environment and history, unlike traditional SSH that might disconnect and lacks universal command history. Setting up a Wave connection creates a resilient virtual SSH connection, preserving your session details and command logs. ### Security +> Wave was designed with security in mind. It uses standard SSH for all remote machine authentication, without relying on any proprietary authentication schemes. Communication is exclusively handled through stdout and stdin, ensuring that the helper running on the remote machine _never_ has to open any ports or require additional privileges. -> Wave was designed with security in mind. All authentication to remote machines is done using standard SSH (Prompt does not implement any special authentication scheme of its own). All communication is done via stdout and stdin, so the helper that runs on the remote machine will *never* open any ports, or need any additional privledges. +To set up a new connection, navigate to "Connections" on the left sidebar and click "New Connection". Fill out the required _user_ and _host details_, then select your "Auth Mode". -To do that you need to create a new connection for the machine that you are logging into. Click "Connections" in the left sidebar. From there click on "Add Connection". Prompt uses regular SSH to make its connections. Use the "authmode" dropdown to add an ssh key (equivalent to "-i") and/or a password (note that ssh keys are more secure than passwords, and we recommend that you always use keys to log into your servers and not password authentication). If your connection is not standard, and requires some other type of authentication or a changing password (OTP), you'll have to select "connectmode" as "manual". + + +Wave utilizes standard SSH, offering the choice of an SSH key (akin to "-i") or a password for authentication—SSH keys are favored for their increased security. For unique authentication needs or OTP, switch "connectmode" to "manual". - -To allow for persistent connections, Wave will install a helper on the remote machine (waveshell). This helper *only* communicates via stdin and stdout to Wave. It does not open any ports or network connections, does not need any additional permissions, and will only write to the disk if you are running detached commands (special types of commands that can stay running even when Wave is disconnected). The helper program is also open-source, written in Go, and can be found in the waveterm GitHub repo in the waveshell directory. To re-install the helper run the meta-command ```/connection:install```. - +To ensure persistent connections, Wave installs a helper (waveshell) on the remote machine. This helper communicates with Wave via _stdin_ and _stdout_, requiring no extra permissions, opening no ports, and writing to disk only for detached commands. Waveshell is open-source, written in Go, and can be found in the waveterm [GitHub repo](https://github.com/wavetermdev/waveterm/tree/main/waveshell) in the _waveshell_ directory. To reinstall, use `/connection:install`. -## Using Connections +## Importing SSH Configurations -Now that we've set up our first remote connection we can use it. In any screen you can use the `cr` command. `cr` will change your connection (like `cd` can change directories). You just type `cr [remotename-or-alias]` and you'll see your prompt change to reflect that you're now running commands against the selected connection. Note that a screen can have a mix of commands from local or from a remote connection (you can see the connection that ran the command in the prompt). +To simplify setting up your connections, Wave let's you import your existing SSH configurations using the [Import Config](/features/sshconfig-imports) feature, avoiding the need to manually recreate connections. To access this feature, select the "Connections" button in the left-hand sidebar and then select "Import Config." -Every session and tab can now switch to the newly added connection using `cr`. Every tab keeps its own remote state, so you might have different current working directories in each tab (just like a local connection). +Note this feature can also be invoked from the CLI directly by running `/remote:parse` ([reference](/reference/slashcommands#remote-parse)) -Let's say I have a remote named "server01". If I `cr server01` I get a complete virtual environment working on server01. `cd` or exporting an environment variable are all sticky to that tab. I can create an additional virtual environment by using a colon: `cr server01:2` will change to the server01 remote to a named session "2". Any number of virtual environments can be made in a tab for each remote and all will be independent. +### Using Connections -To reset a remote back to its initial login state, use the meta-command `/reset` (or just `reset`) (useful if you've recently updated your `.bashrc` or `.bash_profile`. +Once a Wave connection is established, switching between connections is simple. Use the `cr` command, akin to `cd` in functionality, by typing `cr [remotename-or-alias]`. Your prompt updates, indicating you’re executing commands on the selected connection, allowing for a blend of local and remote commands. +Each session and tab can switch to new connections with `cr`, maintaining their unique remote states—including different working directories—mirroring local session behavior. + +For instance, executing `cr server01` places you in server01's environment. Operations like `cd` or setting variables are specific to that tab. To initiate another environment within the tab, `cr server01:2` generates a separate workspace "2". This setup permits multiple, isolated environments for each remote within a tab. + +To reset a remote to its initial login state use the `/reset` command. This can be useful after updating your `.bashrc`, `.zshrc` or similar. \ No newline at end of file diff --git a/features/history.mdx b/features/history.mdx index 0446448..90fedc3 100644 --- a/features/history.mdx +++ b/features/history.mdx @@ -4,9 +4,23 @@ description: 'Make the most of persistent, context rich history' icon: 'scroll' --- -## Command History -To access standard command history, you can press UpArrow just like in your normal terminal. These commands are filtered to be from the current screen and the current remote. +## Introduction -But Wave keeps command history across all remotes, all tabs, and all sessions so you can easily recall a command you may have run in a separate tab or on a different machine to run. You enter history search using “Ctrl-R” or “Cmd-H”. From there you can still hit up or down arrow to navigate your history, but there are additional filters. You can toggle search to include all remotes, everything in your current session, or your global history. +Navigating your command history efficiently is crucial for productivity in any terminal environment. Wave's advanced history features allow you to seamlessly access and manage your past commands not just within the current session but across all workspaces and devices. -> Wave keeps metadata for *all* commands that you run through it, including current working directory, status code, command duration, time, remote, etc. +## History for Current Tab (CTRL + R) + +To access the command history specific to your current tab, you can utilize the `CTRL + R` shortcut. This action opens a history search mode where previously executed commands in the current tab are available. Simply start typing to filter through the command history based on your input, and use the Up and Down Arrow keys to navigate through the filtered results. + +Users can also easily toggle history for the current tab, current workspace, or globally by using the `CMD + S` shortcut while using the using this feature. + + + +## History for All Tabs and Workspaces (CMD + H) + +For a more extensive search across all remotes, tabs, and sessions, use the `CMD + H` shortcut. This powerful feature brings up a global history search, allowing you to access any command you've previously run, regardless of the tab or workspace it was executed in. Similar to the tab-specific history search, you can filter through your entire command history with ease. + +Additionally, Wave provides filters to narrow down your search to include commands from all remotes, the current session, or your entire global history, enhancing your ability to quickly find and reuse complex commands. + + +Wave's commitment to improving command line efficiency is evident in its robust history features. By storing metadata for each command—including the working directory, status code, duration, time, and associated remote—Wave ensures that every command you need is just a few keystrokes away, complete with the context you need to use them effectively. \ No newline at end of file diff --git a/images/connections.gif b/images/connections.gif new file mode 100644 index 0000000..4428a47 Binary files /dev/null and b/images/connections.gif differ diff --git a/images/history_cmdh.gif b/images/history_cmdh.gif new file mode 100644 index 0000000..989493f Binary files /dev/null and b/images/history_cmdh.gif differ diff --git a/images/history_ctrlr.gif b/images/history_ctrlr.gif new file mode 100644 index 0000000..60cf0b5 Binary files /dev/null and b/images/history_ctrlr.gif differ diff --git a/mint.json b/mint.json index 40babb1..961f4ae 100644 --- a/mint.json +++ b/mint.json @@ -62,8 +62,7 @@ "features/history", "features/images", "features/connections", - "features/appearance", - "features/sshconfig-imports" + "features/appearance" ] }, {