This PR changes ModelUpdate mechanism from a statically-typed struct to an interface, allowing us to define the update mechanism and the update types separately. This sets us up to move app logic and update mechanisms into separate packages. Ultimately, sstore will only define low-level persistence logic.
* split settings modals
* init
* init
* remove styles not related to checkbox
* remove styles not related to CmdStrCode
* renderCmdText doesn't need styles
* remove styles not related to dropdown
* IconButton doesn't need styles because it extends Button
* remove old connections
* InfoMessage conmponent no longer needed
* fix import error
* remove styles not related to InlineSettingsTextEdit
* remove styles not related to InputDecoration
* LinkButton doesn't need styles cos it's extends Button component
* remove styles not related to markdown
* remove styles not related to modal
* NumberField doesn't need styles cos it extends TextField
* remove styles not related to PasswordField
* RemoteStatusLight no longer used. It's replaced by Status component.
* remove styles not related to ResizableSidebar
* SettingsError doesn't need styles cos it uses classnames in app.less
* remove styles not related to Status
* remove styles not related to TextField
* remove styles not related to Toggle
* remove styles not related to Tooltip
* init
* cleanup bookmarks model
* cleanup clientsettingsview model
* cleanup cmd model
* remove dayjs import from bookmarks model
* cleanup commandrunner model
* cleanup historyview model
* cleanup input model
* cleanup linecontainer model
* cleanup mainsidebar model
* cleanup main model
* cleanup plugins model
* cleanup remote model
* cleanup screen model
* cleanup screenlines model
* cleanup session model
* cleanup screenlinecontainer model
* cleanup connectionsview model
* add index.ts inside model dir
* replace /model_old imports with /model
* rename model to models
* move model_old to models
* fix ptyDataSource errors
* split models/model
* working on cmd restart logic
* button to restart command
* bind Cmd-R to restart selected command, and Cmd-Shift-R to restart last command. Browser Refresh is now Option-R. also fix 'clear' command to not delete running commands (like archive). some small changes to keyboard utility code to always set 'alt' and 'meta' appropriately. use 'cmd' and 'option' for crossplatform bindings
* focus restarted line
* update termopts, use current winsize to set termopts for new command
* add cmd.restartts to track restart time
* display restarted time in line w/ tooltip with original time
* add restartts to line:show
* first pass of copy file
* first pass fixing up function
* first pass fixing key press
* fixed up key press parsing
* reverted cmdrunner.go
* fixed cmdrunner.go again :p
* fixed cmdrunner again lol
* Add job status indicators to tabs within a workspace (#232)
Adds job status indicators that will show any updates to running commands while you are focused away from a tab. These will show up as status icons in the tab view.
These indicators will reset for a given tab when you focus back to it.
I've updated the inner formatting of the tab to use flexboxes, allowing the title to display more text when there are no icons to display.
Also includes some miscellaneous for-loop pattern improvements in model.ts and removing of unused variables, etc.
* first pass fixing key press
* added key util check file
* addressed rebase artifacts
* fixed more rebase artifacts
* fixed keybindings
* removed log
* fixed a ton of rebase artifacts
* fixed a ton of rebase artifacts
* added cmd maps to altKey if not on macos
* fixed platform check code and fixed some small bugs
* remove byte sanitization for user commands
When serializing jsonBytes in packet.go::MarshalPacket, a step existed
that attempted to manually sanitize the bytes before sending them. This
was initially done to avoid invalid characters in json; however, go
should handle this for us. But this sanitization broke
internationalization because it excluded characters required for unicode
in other languages. Because of that, it has been removed.
* properly decode non-ascii on frontend
The functions atob and btoa do not convert base 64 to strings in the
expected way. The base64ToArray function handles it properly but other
cases do not. These other cases have been replaced with a helper
function that makes use of the base64-js package. This package has
already been included as a dependency of another package we use, but it
was added to the package.json file to make the inclusion explicit.
* automatically set/share LANG var with waveshell
Waveterm previously did not set the LANG environment variable which
caused problems for international users. On Linux, this is done
automatically, but it needs to be done manually on macos.
Even on linux, the wavesrv LANG variable is shared with waveshell to
ensure the same one is used on remotes.
* only set the lang var if not previously set
In order to prevent waveterm from overriding the lang var entirely, this
ensures that it is only manually determined if it hasn't previously been
set.
* use envMap instead of os to determine var
This is slightly more performant and relies more directly on our code
instead of external code.
* register cmd+p shortcut
* tab switcher modal
* initial implementation
* tab switcher modal content
* fix styles
* fix scroll bugs
* set selected index when clicking option
* hover effect for options
* switch when Enter key is pressed
* remove fuse.js
* only use switchscreen for switching sessions and tabs
* var naming changes
* fix multiple focused options on mouse hover
* fix duplicate focused options and scrollbar
* clean imports
* fix wrong function name
* merge color styles in app.less
* remove debugging code
* use For component when iterating thru options
* minor style fix
* remove mouse interaction, keep focusedIdx in bounds, increase max number of tabs shown, small layout adjustment for big tab names (and more space for icon)
* migrate screen settings modal to new modals system
* use screen member var in the methods
* migrate session settings modal to new modal system
* use Modal component in session settings modal
* migrate line settings modal to new modals system
* use Modal component in line settings modal
* migrate client settings modal to new modals framework
* set alert modal width to 500px
* remove screen settings modal after deletion
* use Dropdown component for connnections dropdown
* use Dropdown component for connections dropdown in new tab flow
* replace InfoMessage with Tooltip
* use Dropdown for fontsize dropdown
* use Dropdown for renderer dropdown
* fix dropdown width issue on new tab container
* fix class names concatenation
* fix dropdown width issue in screen settings modal
* init
* init
* error handling
* use css
* minor improvements
* fix some issues and tabicon init
* show error indicator when empty and is required
* debounce input
* fix decorator linting issue
* icon system init
* fix bugs
* color custom icons and fix regression
* remove debugging code
* remove @tab-magenta. fix formatting.
* swap magenta for mint
* change tab color order
* update newtab screen to make it match the figma mockup (still waiting on UI for name)
* fix all typescript errors
* update for new build
* remove old import