Skip to content

Commit 2d3dca6

Browse files
author
Jalileh
committed
Merge remote-tracking branch 'upstream/main'
2 parents 2cc2241 + c1cf539 commit 2d3dca6

File tree

9 files changed

+251
-128
lines changed

9 files changed

+251
-128
lines changed

ROADMAP.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Wave Terminal Roadmap
2+
3+
This roadmap outlines major upcoming features and improvements for Wave Terminal. As with any roadmap, priorities and timelines may shift as development progresses.
4+
5+
Want input on the roadmap? Join the discussion on [Discord](https://discord.gg/XfvZ334gwU).
6+
7+
## v0.11
8+
9+
Targeting a release during the week of Jan 13th 2024, betas possible at the end of the prior week.
10+
11+
Legend: ✅ Done | 🔧 In Progress | 🔷 Planned | 🤞 Stretch Goal
12+
13+
- 🔷 File/Directory Preview improvements
14+
- 🔷 Remote S3 bucket browsing (directory + files)
15+
- 🔷 Drag & drop between preview blocks
16+
- 🔷 Drag into a preview directory from the native file browser or desktop to copy a file
17+
- 🔷 EC-TIME timeout when transferring large files
18+
- 🤞 log viewer
19+
- 🤞 binary viewer
20+
- 🔷 Wave Apps (Go SDK)
21+
- 🔷 Fixes for reducing 2FA requests on connect
22+
- 🔷 Frontend Only Widgets, React + Babel Transpiling in an iframe/webview
23+
- 🔧 WebLinks in the terminal working again
24+
- 🔧 Search in Web Views
25+
- 🔷 Search in the Terminal
26+
- 🔷 Custom init files for widgets and terminal blocks
27+
- 🔷 Multi-Input between terminal blocks on the same tab
28+
- 🔧 Gemini AI support
29+
- 🔷 Monaco Theming
30+
- 🤞 Log Viewer (stretch)
31+
- 🤞 Blockcontroller fixes for terminal escape sequences
32+
- 🤞 Explore VSCode Extension Compatibility with standalone Monaco Editor (language servers)
33+
- 🔷 Various Connection Bugs + Improvements
34+
- 🔧 More Connection Config Options
35+
36+
## Future Releases
37+
38+
Check back soon for longer-term roadmap items.

docs/docs/config.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ wsh editconfig
5050
| editor:minimapenabled | bool | set to false to disable editor minimap |
5151
| editor:stickyscrollenabled | bool | enables monaco editor's stickyScroll feature (pinning headers of current context, e.g. class names, method names, etc.), defaults to false |
5252
| editor:wordwrap | bool | set to true to enable word wrapping in the editor (defaults to false) |
53+
| preview:showhiddenfiles | bool | set to false to disable showing hidden files in the directory preview (defaults to true) |
5354
| markdown:fontsize | float64 | font size for the normal text when rendering markdown in preview. headers are scaled up from this size, (default 14px) |
5455
| markdown:fixedfontsize | float64 | font size for the code blocks when rendering markdown in preview (default is 12px) |
5556
| web:openlinksinternally | bool | set to false to open web links in external browser |

frontend/app/view/term/term.scss

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,23 @@
3636
overflow: hidden;
3737
}
3838

39-
.term-cmd-toolbar {
40-
display: flex;
41-
flex-direction: row;
42-
height: 24px;
43-
border-bottom: 1px solid var(--border-color);
44-
overflow: hidden;
45-
align-items: center;
46-
47-
.term-cmd-toolbar-text {
48-
font: var(--fixed-font);
49-
flex-grow: 1;
50-
overflow: hidden;
51-
text-overflow: ellipsis;
52-
white-space: nowrap;
53-
padding: 0 5px;
54-
}
55-
}
39+
.term-cmd-toolbar {
40+
display: flex;
41+
flex-direction: row;
42+
height: 24px;
43+
border-bottom: 1px solid var(--border-color);
44+
overflow: hidden;
45+
align-items: center;
46+
47+
.term-cmd-toolbar-text {
48+
font: var(--fixed-font);
49+
flex-grow: 1;
50+
overflow: hidden;
51+
text-overflow: ellipsis;
52+
white-space: nowrap;
53+
padding: 0 5px;
54+
}
55+
}
5656

5757
.term-connectelem {
5858
flex-grow: 1;
@@ -126,10 +126,27 @@
126126
}
127127
}
128128

129+
.term-scrollbar-show-observer {
130+
z-index: calc(var(--zindex-xterm-viewport-overlay) - 1);
131+
position: absolute;
132+
top: 0;
133+
right: 0;
134+
height: 100%;
135+
width: 12px;
136+
}
137+
138+
.term-scrollbar-hide-observer {
139+
z-index: calc(var(--zindex-xterm-viewport-overlay) + 1);
140+
display: none;
141+
position: absolute;
142+
top: 0;
143+
left: 0;
144+
height: 100%;
145+
width: calc(100% - 12px);
146+
}
147+
129148
.terminal {
130149
.xterm-viewport {
131-
z-index: var(--zindex-xterm-viewport-overlay);
132-
133150
&::-webkit-scrollbar {
134151
width: 6px;
135152
height: 6px;

frontend/app/view/term/term.tsx

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -848,7 +848,19 @@ const TerminalView = ({ blockId, model }: TerminalViewProps) => {
848848
termModeRef.current = termMode;
849849
}, [termMode]);
850850

851-
let stickerConfig = {
851+
const scrollbarHideObserverRef = React.useRef<HTMLDivElement>(null);
852+
const onScrollbarShowObserver = React.useCallback(() => {
853+
const termViewport = viewRef.current.getElementsByClassName("xterm-viewport")[0] as HTMLDivElement;
854+
termViewport.style.zIndex = "var(--zindex-xterm-viewport-overlay)";
855+
scrollbarHideObserverRef.current.style.display = "block";
856+
}, []);
857+
const onScrollbarHideObserver = React.useCallback(() => {
858+
const termViewport = viewRef.current.getElementsByClassName("xterm-viewport")[0] as HTMLDivElement;
859+
termViewport.style.zIndex = "auto";
860+
scrollbarHideObserverRef.current.style.display = "none";
861+
}, []);
862+
863+
const stickerConfig = {
852864
charWidth: 8,
853865
charHeight: 16,
854866
rows: model.termRef.current?.terminal.rows ?? 24,
@@ -862,7 +874,14 @@ const TerminalView = ({ blockId, model }: TerminalViewProps) => {
862874
<TermStickers config={stickerConfig} />
863875
<TermToolbarVDomNode key="vdom-toolbar" blockId={blockId} model={model} />
864876
<TermVDomNode key="vdom" blockId={blockId} model={model} />
865-
<div key="conntectElem" className="term-connectelem" ref={connectElemRef}></div>
877+
<div key="conntectElem" className="term-connectelem" ref={connectElemRef}>
878+
<div className="term-scrollbar-show-observer" onPointerOver={onScrollbarShowObserver} />
879+
<div
880+
ref={scrollbarHideObserverRef}
881+
className="term-scrollbar-hide-observer"
882+
onPointerOver={onScrollbarHideObserver}
883+
/>
884+
</div>
866885
</div>
867886
);
868887
};

frontend/types/gotypes.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ declare global {
290290
type ConnKeywords = {
291291
"conn:wshenabled"?: boolean;
292292
"conn:askbeforewshinstall"?: boolean;
293+
"conn:overrideconfig"?: boolean;
293294
"display:hidden"?: boolean;
294295
"display:order"?: number;
295296
"term:*"?: boolean;

pkg/remote/connutil.go

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"os/user"
1414
"path/filepath"
1515
"regexp"
16-
"strconv"
1716
"strings"
1817

1918
"github.com/wavetermdev/waveterm/pkg/panichandler"
@@ -27,16 +26,8 @@ func ParseOpts(input string) (*SSHOpts, error) {
2726
if m == nil {
2827
return nil, fmt.Errorf("invalid format of user@host argument")
2928
}
30-
remoteUser, remoteHost, remotePortStr := m[1], m[2], m[3]
29+
remoteUser, remoteHost, remotePort := m[1], m[2], m[3]
3130
remoteUser = strings.Trim(remoteUser, "@")
32-
var remotePort int
33-
if remotePortStr != "" {
34-
var err error
35-
remotePort, err = strconv.Atoi(remotePortStr)
36-
if err != nil {
37-
return nil, fmt.Errorf("invalid port specified on user@host argument")
38-
}
39-
}
4031

4132
return &SSHOpts{SSHHost: remoteHost, SSHUser: remoteUser, SSHPort: remotePort}, nil
4233
}
@@ -341,7 +332,7 @@ func IsPowershell(shellPath string) bool {
341332

342333
func NormalizeConfigPattern(pattern string) string {
343334
userName, err := WaveSshConfigUserSettings().GetStrict(pattern, "User")
344-
if err != nil {
335+
if err != nil || userName == "" {
345336
log.Printf("warning: error parsing username of %s for conn dropdown: %v", pattern, err)
346337
localUser, err := user.Current()
347338
if err == nil {

0 commit comments

Comments
 (0)