* feat: add gui elements to configure ssh pw cache
This adds a dropdown for on/off/notimeout, a number entry box for a
timeout value, and a toggle for clearing when the computer sleeps.
* fix: improve password timeout entry
This makes the password timeout more consistent by using an inline
settings element. It also creates the inline settings element to parse
the input.
* feat: turn sudo password caching on and off
* feat: use configurable sudo timeout
This makes it possible to control how long waveterm stores your sudo
password. Note that if it changes, it immediately clears the cached
passwords.
* fix: clear existing sudo passwords if switched off
When the sudo password store state is changed to "off", all existing
passwords must immediately be cleared automatically.
* feat: allow clearing sudo passwords on suspend
This option makes it so the sudo passwords will be cleared when the
computer falls asleep. It will never be used in the case where the
password is set to never time out.
* feat: allow notimeout to prevent sudo pw clear
This option allows the sudo timeout to be ignored while it is selected.
* feat: adjust current deadline based on user config
This allows the deadline to update as changes to the config are
happening.
* fix: reject a sudopwtimeout of 0 on the backend
* fix: use the default sudoPwTimeout for empty input
* fix: specify the timeout length is minutes
* fix: store sudopwtimeout in ms instead of minutes
* fix: formatting the default sudo timeout
By changing the order of operations, this no longer shows up as NaN if
the default is used.
* refactor: consolidate inlinesettingstextedit
This removes the number variant and combines them into the same class
with an option to switch between the two behaviors.
* refactor: consolidate textfield and numberfield
This removes the number variant of textfield. The textfield component
can now act as a numberfield when the optional isNumber prop is true.
* added ai timeout setting
* addressed review comments
* fixed baseurl gating for telemetry
* updated copy
* addressed review comments
* removed prefix for client:show and added units to timeout
* changed timeout to use ms precision
* 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)
* Simplify scrollHistoryItemIntoView
* remove unnecessary block argument
* actually the block nearest is necessary, otherwise the scroll will jump even if the item is already in view
* keybinding fixes
* changed screen and session commands to functions rather than slash commands to avoid printing errors
* added a static wait for console commands
* added sleep hardcode
* add an isArray check for commandStr
* Make the auxView tilebar optional and make sure it flows as part of the flexbox
* simplify condition
* fix ai chat scroll direction
* remove unnecessary change
* remove unused class
* create tab context menu (for close tab)
* small update to ctx menu, also make all tab deletes (including keybinding) not popup confirm modal if less than 10 blocks
* starting work on new dynamic context menu system
* untested contextmenu model integrated with electron api
* implement custom line context menu, copy visible output + copy full output
* implement minimize/maximize, restart, and delete
* cop button
* cleanup
* fix wrong type
* updates to try to set the cmdinput position (as well as text). fix button alignment, change checkmark to green (and extend), and remove the transition from parent component and move to copy (sawka)
* 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
* Clean up cmdinput
* Remove unused css styles, clicking on textarea will focus back to textarea without closing history
* cleanup logic for activating textarea
* actions buttons should always show, should properly disable inactive views
* clicking actions toggles the view
* remove titlebar spacer, clean up padding
* Make AIChat and HistoryInfo share a common layout
* fix ai chat scroll
* clean up formatting
* fix chat textarea resizing
* align prompt and input
* update infomsg to use auxview
* update comments
* fix widths and key error
* add todo
* adjust padding for input, remove debug
* Don't capture clicks on the prompt area
* 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
* added domain callback for every layer
* added domain callback for every layer
* switched dump logs to false
* dropdown fixes
* moved uuid back to constructor
Previously, .wave-button had `display: block;` overwriting the expected
`display: flex;`. This resulted in buttons with an icon being aligned
vertically instead of horizontally. This change removes the undesired
`display: block;` so the buttons are formatted horizontally again.
* 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
* Add overlay scrollbar to left sidebar
* Keep active session bolded when mainview is not session
* fix color of scrollbar
* swap expression args
* add active color for scrollbar
* add active/highlight to history, connections, and settings
* 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
* added term keybindings
* removed logs and added a dump logs flag in keyutil
* un capture keys that we aren't using
* moved keybindings to inside terminal
* added utils to get all of the keybinds and pretty print them, for display purposes
* added info section
* clarifying meta and alt behavior
* changed keybinduidescription to keybind config
* first draft at modal keybindings
* added modal keybindings and inline settings text edit keybindings
* added switch for keybindings in modal footer
* removed logs
* remove another console.log
* fix userinput keybindings -- should be generic:cancel for 2nd one
* first commit for textarea keybindings
* added empty onkeydown to get around default behavior for now
* added history keybindings
* removed tab special case
* fix two small issues with keybindings
* remove unused vars
* replace remote status vars with --app-* vars
* replace status indicator vars with --app-* vars
* remove unused vars in default.css
* no need for bg color in view
* use --app* colors for view color
* remove --app-black var
* remove some unused css and divs
* 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
* refactor Button. replace old buttons with Button element
* fix issue with closing alert modal
* make small button a little more round
* hide right sidebar toggle in prod
* Extend bottom border for mainview underneath window controls
* Make sidebar button hover color an accent color
* revert 87 to 88
* make mint less bright on light mode
* revert modal border change
* fix exitcode return to handle signals correctly -- use bash convention of 128 + signum. don't show red error mask for SIGINT or SIGPIPE
* dont show left border for errors unless selected
* 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
* 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
* update mask color for tabswitcher to work on lightmode
* fix background color on code blocks in markdown in light mode
* update wording on disconnected modal (restart wave backend instead of restart server)
* fix tooltip (should be Ctrl-Space)
* cleanup line-height/padding for code blocks
This adds support for Arch Linux via pacman. It also updates the product tagline in package.json and the "About" modal. It also removes the unused "Help" menu and updates the copyright year in About and fixes the window icon display on Linux.