* save work
* reusable StyleBlock component
* StyleBlock in elements dir
* root level
* ability to inherit root styles
* change prop from classname to selector
* selector should always be :root
* remove selector prop from StyleBlock
* working
* cleanup
* loadThemeStyles doesn't have to be async
* revert changes in tabs2.less
* remove old implementation
* cleanup
* remove file from another branch
* fix issue where line in history view doesn't reflect the terminal theme
* add key and value validation
* add label to tab settings terminal theme dropdown
* save work
* save work
* save work
* working
* trigger componentDidUpdate when switching tabs and sessions
* cleanup
* save work
* save work
* use UpdatePacket for theme changes as well
* make methods cohesive
* use themes coming from backend
* reload terminal when styel block is unmounted and mounted
* fix validation
* re-render terminal when theme is updated
* remove test styles
* cleanup
* more cleanup
* revert unneeded change
* more cleanup
* fix type
* more cleanup
* render style blocks in the header instead of body using portal
* add ability to reuse and dispose TermThemes instance and file watcher
* remove comment
* minor change
* separate filewatcher as singleton
* do not render app when term theme style blocks aren't rendered first
* only render main when termstyles have been rendered already
* add comment
* use DoUpdate to send themes to front-end
* support to watch subdirectories
* added support for watch subdirectories
* make watcher more flexible so it can be closed anywhere
* cleanup
* undo the app/main split
* use TermThemesType in creating initial value for Themes field
* simplify code
* fix issue where dropdown label doesn't float when the theme selected is Inherit
* remove unsed var
* start watcher in main, merge themes (don't overwrite) on event.
* ensure terminal-themes directory is created on startup
* ah, wait for termThemes to be set (the connect packet needs to have been processed to proceed with rendering)
* fix: ignore computer sleep for telemetry clock
This uses unix time with regular integer comparisons to prevent the
telemetry clock from needing to wait for 8 hours of the program running.
Now, it only needs to wait 8 real-time hours instead.
* drop telemetry time to 4 hours, tick every 10 minutes
* 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.
* add command validation to shellapi. mock out bash/zsh versions
* implement validate command fn bash and zsh
* test validate command
* change rtnstate commands to always end with a builtin, so we always get our exit trap to run
* simplify the rtnstate modification, don't add the 'wait' (as this is a different problem/feature)
* update schema
* fix: add vix for missing known_hosts file
In a recent cleanup, I accidentally deleted this fix from before. This
adds it back.
* chore: clarify that the ssh should use private key
* 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