* have initial run-command return faster to the frontend for quicker updating. cuts time from 70-80ms down to 20ms for an average command
* remove wlogs
* more logging cleanup
* fix focus for when start cmd returns an error
* initial
* save work, starting to add backend types
* save work
* save work
* Add EphemeralWriteCloser
* Command pipes thru, triggers infinite loop
* save debugging
* fix bad merge
* save debug statements
* fixing spaghetti
* clean up code
* got cwd override working
* Add separate paths for stdout and stderr writers
* fix stdout/stderr
* env vars are now working
* revert waveshell changes
* Making EphemeralWriteCloser into a more generic BufferedPipe
* formatting
* comment
* delete unused package
* more naming changes
* add package comment
* add UsePty to EphemeralRunOpts
* document UsePty
* ensure only one downstream writer can read from the buffer
* store pointer to syncs
* remove inshellisense stuff for now
* remove debugs
* revert yarn
* remove unnecessary debugs in main-server
* more debugging removed
* revert tsconfig
* init
* use setStyleVar
* backend implementation. scrope level terminal theming.
* only invoke this.applyTermTheme for keys that are updated. command runner for global term theme
* invoke applyTermTheme for global terminal themes as well
* fix nil error
* fix issue were theme can't be found
* fix issue where selected termtheme is not set as default value
* term theme switcher for session
* do not force reload after setting css vars
* fix issues. screenview terminal theme switcher
* remove debugging code
* move getTermThemes to util
* fix global theme reset
* fix workspace theme reset
* fix screenview terminal theme reset issue
* cleanup
* do not apply theme if theme hasn't changed
* do not apply theme if theme hasn't changed in workspace view
* cleanup
* cleanup
* force reload terminal
* fix inconsistency
* fix reset issue
* add a mobx reaction so that theming working when switching sessions
* workig reset
* simplify and cleanup
* refactor
* working global and session terminal theming
* add check
* perf improvement
* more perf improvements
* put reaction componentDidUpdate to make sure ref is already associated to the element
* cleanup
* fix issue where session theme is overriden by global theme on reload
* reduce flickering on reload
* more on reducing flickering on reload
* cleanup
* more cleanup
* fix file not found when no global theme is set
* screen level terminal theming
* update comment
* re-render terminal in history view. cleanup.
* cleanup
* merge main
* remote statemap from waveshell server (diff against initial state)
* move ShellStatePtr from sstore to packet so it can be passed over the wire
* add finalstatebaseptr to cmddone
* much improved diff computation code on wavesrv side
* fix displayname -- now using hash
* add comments, change a couple msh.WriteToPtyBuffer calls to log.Printfs
A recent change made it possible to get stuck in a loop when connecting
to a remote. This reverts the part of it that caused this while
retaining the other behavior. This makes it possible to add to blank
known_host files again. It also adds a printout to display when a
connection is complete.
* upped max length
* added client:get and client:info, upped max length of baseurl
* added openai prefix for consistency
* updated client:show command and removed client:get and client:info
* working on re-init when you create a tab. some refactoring of existing reinit to make the messaging clearer. auto-connect, etc.
* working to remove the 'default' shell states out of MShellProc. each tab should have its own state that gets set on open.
* refactor newtab settings into individual components (and move to a new file)
* more refactoring of tab settings -- use same control in settings and newtab
* have screensettings use the same newtab settings components
* use same conn dropdown, fix classes, update some of the confirm messages to be less confusing (replace screen with tab)
* force a cr on a new tab to initialize state in a new line. poc right now, need to add to new workspace workflow as well
* small fixups
* remove nohist from GetRawStr, make const
* update hover behavior for tabs
* fix interaction between change remote dropdown, cmdinput, error handling, and selecting a remote
* only switch screen remote if the activemainview is session (new remote flow). don't switch it if we're on the connections page which is confusing. also make it interactive
* fix wording on tos modal
* allow empty workspaces. also allow the last workspace to be deleted. (prep for new startup sequence where we initialize the first session after tos modal)
* add some dead code that might come in use later (when we change how we show connection in cmdinput)
* working a cople different angles. new settings tab-pulldown (likely orphaned). and then allowing null activeScreen and null activeSession in workspaceview (show appropriate messages, and give buttons to create new tabs/workspaces). prep for new startup flow
* don't call initActiveShells anymore. also call ensureWorkspace() on TOS close
* trying to use new pulldown screen settings
* experiment with an escape keybinding
* working on tab settings close triggers
* close tab settings on tab switch
* small updates to tos popup, reorder, update button text/size, small wording updates
* when deleting a screen, send SIGHUP to all running commands
* not sure how this happened, lineid should not be passed to setLineFocus
* remove context timeouts for ReInit (it is now interactive, so it gets canceled like a normal command -- via ^C, and should not timeout on its own)
* deal with screen/session tombstones updates (ignore to quite warning)
* remove defaultfestate from remote
* fix issue with removing default ris
* remove dead code
* open the settings pulldown for new screens
* update prompt to show when the shell is still initializing (or if it failed)
* switch buttons to use wave button class, update messages, and add warning for no shell state
* all an override of rptr for dyncmds. needed for the 'connect' command (we need to set the rptr to the *new* connection rather than the old one)
* remove old commented out code
* save work
* Add native theme support
* update index
* update var name
* remove comment
* fix code setting
* bump render version on change
* remove themeutil
* fix error logs in scws
* new RpcFollowUpPacketType
* make the rpc/followup handlers generic on the server side -- using new RpcHandlers map and RpcFollowUpPacketType
* rpcinputpacket for passing user input back through to reinit command
* add WAVETERM_DEV env var in dev mode
* remove unused code, ensure mshell and rcfile directory on startup (prevent root clobber with sudo)
* combine all feinput into one function msh.HandleFeInput, and add a new concept of input sinks for special cases (like reinit)
* allow reset to accept user input (to get around interactive initialization problems)
* tone down the selection background highlight color on dark mode. easier to read selected text
* fix command focus and done focus issues with dynamic (non-run) commands
* add 'module' as a 'rtnstate' command (#478)
* reinitialize shells in parallel, fix timeouts, better error messages
* reset command now initiates and completes async so there is feedback that something is happening when it takes a long time
* switch from standard rpc to rpciter
* checkpoint on reinit -- stream output, stats packet, logging to cmd pty, new endBytes for EOF
* make generic versions of endbytes scanner and channel output funcs
* update bash to use more modern state parsing (tricks learned from zsh)
* verbose mode, fix stats output message
* add a diff when verbose mode is on
* checkpoint. track zmodloads, get the expanded PS1 value, change how we store and deal with 'prompt vars', add commands to track k8s context
* fix some warnings, change IsPVar to IsExtVar, checkpoint
* parse zmodloads into state
* restore zmodloads, be more careful around readonly variable setting to avoid errors
* datepicker. add electron-rebuild sa dev dependency
* comments
* use <If> component for conditional renders
* invoke callback on month change
* individual inputs for date parts
* keyboard support for input
* more on keyboard support
* dynamic setting of input width based on their text value
* remove error if fromts is out of range
* format is optional
* undo electron-rebuild
* init
* model
* pass model
* increase snap threshold
* move saving of state to model. backend implementation
* fix wrong clientdata prop
* right header space for right sidebar toggles
* button component refactor
* set default classname to primary
* remove debugging code
* hide trigger for now
* disable right sidebar in production (only show on dev for now)
* remove two unused packet types, remove unused detatched command code
* CmdStart is invalid in this command loop
* slight refactor, remove closure funcs
* pass rct through to 'handle' funcs
* deal with rct (running command), update handler funcs accordingly
* update for runningcmdtype to be a pointer in the map (for updates)
* lots of changes related to ephemeral commands (for sync), checkpoint
* fix ephemeral setting
* sync shell state when you switch to a new tab
We use AppleLocale to get the desired language when running on macos.
Unfortunately, if a region is set, the locale is not equivalent to the
LANG environment variable. It appends an extra region field that we did
not previously filter out. This change ensures that it will be filtered
out when present.
* first pass of slash commands
* added mainview slashcommand
* added focus cmd input, added sleep
* addressed review comments
* addressed feedback
* demo idea of changing hide do cmd+m, can remove if we decide we don't like it
* added new keybinding for minimize
* addressed feedback
* added hide label
* fix hide (use app.hid(), not window.hide()
* fix history keybinding, make mainview command consistent
* fix: set golbal ssh config to correct path
This adds the missing "etc" directory to the path for the global config
file.
* chore: update auth mode tooltip
This just changes the text to be slightly more accurate to the current
behavior.
* feat: add box to disable waveshell install modal
This hooks in to the existing don't show this again code that pops up
when creating a modal.
* refactor: remove install modal in remote creation
There used to be a modal that popped up while installing a remote that
informed the user that waveshell gets installed on their remote. Since
we have a new modal that pops up at the time of install, the older modal
can be removed.
* fix: allow user to cancel ssh dial
The new ssh code broke dial for invalid urls since the context did not
cancel the dial or any associated user input. This change reconnects
the context along with the context for installing waveshell.
* style: widen the rconndetail modal
The rconndetail modal is currently narrower than the xtermjs element
which results in awkward scrolling if a line is long. This change makes
the width auto so it can size itself as needed.
* add a max-width for safety
* Unify color definitions and clean up light mode
* consolidate form colors
* increase border thickness on dropdown and text
* remove dev conditional for theme
* fix secondary form element color
* increase dropdown border thickness
* fix history textinput
* make warning a bit darker
* attempt to fix rotate icons
* fix line actions bg
* fix terminal colors
* fix broken history colors
* fix textinput label padding
* fix bottom negative margin
* updates for prompt colors. darken magenta, grey out the whites slightly, and sneak in a change for git co.
* clean up prompt.tsx
* fixing wobbly icons
* center svg icon, simplify meta-line1
* checkpoint some ideas on a new branch
* checkpoint on new errors / errorcode passing
* get CodedError piped all the way through to infomsg
* implement a /reset:cwd command to deal with cases when the cwd is invalid. other assorted debugging, utility, and fixups
* on invalid cwd, show message to run /reset:cwd
* fix: allow ssh user to use numbers/capital letters
Prior to this change, usernames could not start with numbers and could
not contain capital letters at all. Note that the username can also
start with capital letters.
* fix: update ssh_config with IdentityFiles fix
This adds the update that provides the ssh2 defaults for IdentityFiles.
This will allow the usual defaults to be searched when none are
explicitly provided.
* fix: overwrite identity files instead of appending
This change makes it so a waveterm configured identity file will
overwrite the one in the config instead of attempting to append it. This
matches the behavior of openssh.
* style: use regular font for markdown user input
This makes the Markdown User Input indistinct from user input without
markdown. It changes the font and makes a couple small adjustments to
the font size and line height.
* fix: use font property instead of font-family
The markdown css for User Input can be simplified with the font being
set by the "font" property rather than the "font-family" property.
* feat: allow user input verification for install
Depending on the method of installing waveshell, it may be desired to
pop up a modal for user verification. This is a first pass at handling
these special cases. The focus is on installing while previously
connected and auto installing while connecting.
* chore: update mshell to waveshell in error msg
* fix: run waveshell remotely with chosen shell
This ensures that the appropriate shell is used to run the waveshell
command remotely. It hasn't made a difference in my experience but is
desired in order to match the local launch.
* chore: simplify command to run waveshell remotely
This change removes the extra check for a directory and just tries to
run the command instead. It pipes the usual error to null and prints an
init packet instead.
* fix: prevent wavesrv crash during bad connection
The waveshell launch can fail in two different ways. If it has a
recoverable failure, it will attempt to reinstall waveshell. If not, it
is supposed to print an error. The unrecoverable case was causing a
segfault due to a misnamed variable. This change corrects it.
* fix: correct auto install user input modal
The previous combination of flags to catch auto install did not work
properly. This corrects them.
* chore: add "s" to countdown for user input timer
Makes it clear that the countdown is seconds.
* fix: remove auto password entry for sudo remote
The auto password entry for sudo remotes printed an error that was not
in response to the user input. To avoid this confusion, it has been
removed entirely.
* feat: add auto focus to user input modal
This automatically moves the cursor to the text box when the modal pops
up.
* feat: handle enter/escape keys for password entry
The password modal previously had to have buttons clicked to close it.
This change allows the user to close it with whatever is bound to escape
and to submit with whatever is bound to enter.
* chore: update an any type to correct type
* fix: correct keyboard event type from last commit
* fix: check identity files are readable early
Previously, an invalid identity file would send a dummy signer if the
file didn't exist. This resulted in extra sign in attempts that have no
chance of success. This could cause someone to get locked out of a
connection because of too many failed attempts. By performing the check
early, we no longer have to make these extra attempts.
* fix: only check global known hosts as root
The root user should not be able to write to a local known_hosts file.
If it does, it risks overwriting the default global behavior for only
the root user. This problem would only occur if waveterm was launched as
root, but we should protect against it just in case.
* feat: add remote name for remote password prompt
This change clarifies the remote name for password and keyboard
interactive prompts. It displays a message that authentication has been
requested from <hostname>. It is not added to publickey passphrase since
those phrases are specific to the key and not the remote.
* revert "simplify cmd to run waveshell remotely"
This reverts commit 4e5eea51b6.
* init
* init
* theme override mechanism by changing href value in header link tag
* remove debugging code
* remove debugging code. no need to force rerender
* remove overrides.less
* get some light colors showing in light theme
* refactor launch code to integrate install easier
The previous set up of launch was difficult to navigate. This makes it
much clearer which will make the auto install flow easier to manage.
* feat: integrate auto install into new ssh setup
This change makes it possible to auto install using the ssh library
instead of making a call to the ssh cli command. This will auto install
if the installed waveshell version is incorrect or cannot be found.
* chore: clean up some lints for sshclient
There was a context that didn't have it's cancel function deferred and
an error that wasn't being handle. They're fixed now.
* fix: disconnect client if requested or launch fail
A recent commit made it so a client remained part of the MShellProc
after being disconnected. This is undesireable since a manual
disconnection indicates that the user will need to enter their
credentials again if required. Similarly, if the launch fails with an
error, the expectation is that credentials will have to be entered
again.
* fix: use legacy timer for the time being
The legacy timer frustrates me because it adds a lot of state to the
MShellProc struct that is complicated to manage. But it currently works,
so I will be keeping it for the time being.
* fix: change separator between remoteref and name
With the inclusion of the port number in the canonical id, the :
separator between the remoteref and remote name causes problems if the
port is parsed instead. This changes it to a # in order to avoid this
conflict.
* fix: check for null when closing extra files
It is possible for the list of extra files to contain null files. This
change ensures the null files will not be erroneously closed.
* fix: change connecting method to show port once
With port added to the canonicalname, it no longer makes sense to append
the port afterward.
* feat: use user input modal for sudo connection
The sudo connection used to have a unique way of entering a password.
This change provides an alternative method using the user input modal
that the other connection methods use. It does not work perfectly with
this revision, but the basic building blocks are in place. It needs a
few timer updates to be complete.
* fix: remove old timer to prevent conflicts with it
With this change the old timer is no longer needed. It is not fully
removed yet, but it is disabled so as to not get in the way.
Additionally, error handling has been slightly improved.
There is still a bug where an incorrect password prints a new password
prompt after the error message. That needs to be fixed in the future.