Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions emain/updater.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ export class Updater {

// Only update the release channel if it's specified, otherwise use the one configured in the updater.
autoUpdater.channel = getUpdateChannel(settings);
autoUpdater.allowDowngrade = false;

autoUpdater.removeAllListeners();

Expand Down
31 changes: 17 additions & 14 deletions frontend/app/onboarding/onboarding-upgrade-minor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -124,19 +124,25 @@ const UpgradeOnboardingMinor = () => {
<div className="flex justify-center">
<Logo />
</div>
<div className="text-center text-[25px] font-normal text-foreground">Welcome to Wave v0.13!</div>
<div className="text-center text-[25px] font-normal text-foreground">Welcome to Wave v0.14!</div>
</header>
<OverlayScrollbarsComponent
className="flex-1 overflow-y-auto min-h-0"
options={{ scrollbars: { autoHide: "never" } }}
>
<div className="flex flex-col items-center gap-3 w-full mb-2 unselectable">
<div className="flex flex-col items-center gap-4 text-center">
<div className="flex h-[52px] px-3 items-center rounded-lg bg-hover text-accent text-[24px]">
<i className="fa fa-sparkles" />
<span className="font-bold ml-2 font-mono">Wave AI</span>
<div className="flex flex-col items-center gap-4">
<div className="flex flex-row gap-4 items-center">
<div className="flex h-[52px] px-3 items-center rounded-lg bg-hover text-accent text-[24px]">
<i className="fa fa-sparkles" />
<span className="font-bold ml-2 font-mono">Wave AI</span>
</div>
<div className="flex h-[52px] px-3 items-center rounded-lg bg-hover text-[18px]">
<i className="fa-sharp fa-solid fa-shield text-sky-500" />
<span className="font-bold ml-2 text-accent">Durable SSH Sessions</span>
</div>
</div>
<div className="text-secondary leading-relaxed max-w-[600px]">
<div className="text-secondary leading-relaxed max-w-[600px] text-left">
<p className="mb-4">
Wave AI is your terminal assistant with full context. It can read your terminal
output, analyze widgets, read and write files, and help you solve
Expand All @@ -147,13 +153,10 @@ const UpgradeOnboardingMinor = () => {
supports local models and bring-your-own-key! Use Ollama, LM Studio, vLLM,
OpenRouter, or any OpenAI-compatible provider.
</p>
<p className="py-3 px-2 border border-border rounded-md bg-hover/30">
Wave AI is in beta with included AI credits while we refine the experience. We're
actively improving it and would love your feedback in{" "}
<a target="_blank" href="https://discord.gg/XfvZ334gwU" className="hover:underline">
Discord
</a>
.
<p className="mb-4">
<span className="font-semibold text-foreground">New in v0.14:</span> Durable SSH
sessions survive network drops, laptop sleep, and restarts — all without tmux or
screen.
</p>
</div>
</div>
Expand All @@ -162,7 +165,7 @@ const UpgradeOnboardingMinor = () => {

<div className="flex flex-col items-center gap-3 text-center max-w-[550px]">
<div className="text-foreground text-base">Thanks for being an early Wave adopter! ⭐</div>
<div className="text-secondary text-sm">
<div className="text-secondary text-sm text-left">
A GitHub star shows your support for Wave (and open-source) and helps us reach more
developers.
</div>
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion pkg/shellexec/conninterface.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,16 @@

type CmdWrap struct {
Cmd *exec.Cmd
IsShell bool
WaitOnce *sync.Once
WaitErr error
pty.Pty
}

func MakeCmdWrap(cmd *exec.Cmd, cmdPty pty.Pty) CmdWrap {
func MakeCmdWrap(cmd *exec.Cmd, cmdPty pty.Pty, isShell bool) CmdWrap {
return CmdWrap{
Cmd: cmd,
IsShell: isShell,
WaitOnce: &sync.Once{},
Pty: cmdPty,
}
Expand Down Expand Up @@ -90,6 +92,8 @@
}
if runtime.GOOS == "windows" {
cw.Cmd.Process.Signal(os.Interrupt)
} else if cw.IsShell {
syscall.Kill(cw.Cmd.Process.Pid, syscall.SIGHUP)

Check failure on line 96 in pkg/shellexec/conninterface.go

View workflow job for this annotation

GitHub Actions / Build for TestDriver.ai

undefined: syscall.Kill
} else {
cw.Cmd.Process.Signal(syscall.SIGTERM)
}
Expand Down
9 changes: 6 additions & 3 deletions pkg/shellexec/shellexec.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ func StartWslShellProcNoWsh(ctx context.Context, termSize waveobj.TermSize, cmdS
if err != nil {
return nil, err
}
cmdWrap := MakeCmdWrap(ecmd, cmdPty)
cmdWrap := MakeCmdWrap(ecmd, cmdPty, true)
return &ShellProc{Cmd: cmdWrap, ConnName: conn.GetName(), CloseOnce: &sync.Once{}, DoneCh: make(chan any)}, nil
}

Expand Down Expand Up @@ -287,7 +287,7 @@ func StartWslShellProc(ctx context.Context, termSize waveobj.TermSize, cmdStr st
if err != nil {
return nil, err
}
cmdWrap := MakeCmdWrap(ecmd, cmdPty)
cmdWrap := MakeCmdWrap(ecmd, cmdPty, true)
return &ShellProc{Cmd: cmdWrap, ConnName: conn.GetName(), CloseOnce: &sync.Once{}, DoneCh: make(chan any)}, nil
}

Expand Down Expand Up @@ -593,7 +593,9 @@ func StartLocalShellProc(logCtx context.Context, termSize waveobj.TermSize, cmdS
}
shellType := shellutil.GetShellTypeFromShellPath(shellPath)
shellOpts = append(shellOpts, cmdOpts.ShellOpts...)
var isShell bool
if cmdStr == "" {
isShell = true
if shellType == shellutil.ShellType_bash {
// add --rcfile
// cant set -l or -i with --rcfile
Expand Down Expand Up @@ -622,6 +624,7 @@ func StartLocalShellProc(logCtx context.Context, termSize waveobj.TermSize, cmdS
shellutil.UpdateCmdEnv(ecmd, map[string]string{"ZDOTDIR": shellutil.GetLocalZshZDotDir()})
}
} else {
isShell = false
shellOpts = append(shellOpts, "-c", cmdStr)
ecmd = exec.Command(shellPath, shellOpts...)
ecmd.Env = os.Environ()
Expand Down Expand Up @@ -685,7 +688,7 @@ func StartLocalShellProc(logCtx context.Context, termSize waveobj.TermSize, cmdS
if err != nil {
return nil, err
}
cmdWrap := MakeCmdWrap(ecmd, cmdPty)
cmdWrap := MakeCmdWrap(ecmd, cmdPty, isShell)
return &ShellProc{Cmd: cmdWrap, ConnName: connName, CloseOnce: &sync.Once{}, DoneCh: make(chan any)}, nil
}

Expand Down
Loading