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
2 changes: 1 addition & 1 deletion frontend/app/onboarding/onboarding-common.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright 2026, Command Line Inc.
// SPDX-License-Identifier: Apache-2.0

export const CurrentOnboardingVersion = "v0.14.2";
export const CurrentOnboardingVersion = "v0.14.3";

export function OnboardingGradientBg() {
return (
Expand Down
4 changes: 2 additions & 2 deletions frontend/app/onboarding/onboarding-upgrade-patch.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -133,10 +133,10 @@ export const UpgradeOnboardingVersions: VersionConfig[] = [
version: "v0.14.1",
content: () => <UpgradeOnboardingModal_v0_14_1_Content />,
prevText: "Prev (v0.14.0)",
nextText: "Next (v0.14.2)",
nextText: "Next (v0.14.3)",
},
{
version: "v0.14.2",
version: "v0.14.3",
content: () => <UpgradeOnboardingModal_v0_14_2_Content />,
prevText: "Prev (v0.14.1)",
},
Expand Down
6 changes: 5 additions & 1 deletion frontend/app/onboarding/onboarding-upgrade-v0142.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ const UpgradeOnboardingModal_v0_14_2_Content = () => {
<div className="text-secondary leading-relaxed mb-4">
<p className="mb-0">
Wave v0.14.2 introduces a new block badge system for at-a-glance status, along with directory
preview improvements and bug fixes.
preview improvements and bug fixes. v0.14.3 is a patch release fixing a showstopper bug in
onboarding.
</p>
</div>

Expand Down Expand Up @@ -62,6 +63,9 @@ const UpgradeOnboardingModal_v0_14_2_Content = () => {
<div className="text-foreground text-base font-semibold leading-[18px]">Other Changes</div>
<div className="text-secondary leading-5">
<ul className="list-disc list-outside space-y-1 pl-5">
<li>
<strong>[v0.14.3] </strong>[bugfix] Fixed a showstopper onboarding bug
</li>
<li>
<strong>Directory Preview</strong> - Improved mod time formatting, zebra-striped rows,
better default sort, and YAML file support
Expand Down
4 changes: 2 additions & 2 deletions frontend/app/onboarding/onboarding.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ const InitPage = ({

const acceptTos = () => {
if (!clientData?.tosagreed) {
fireAndForget(services.ClientService.AgreeTos);
fireAndForget(() => services.ClientService.AgreeTos());
}
if (telemetryEnabled) {
WorkspaceLayoutModel.getInstance().setAIPanelVisible(true);
Expand Down Expand Up @@ -325,7 +325,7 @@ const NewInstallOnboardingModal = () => {
let pageComp: React.JSX.Element = null;
switch (pageName) {
case "init":
pageComp = <InitPage isCompact={isCompact} telemetryUpdateFn={services.ClientService.TelemetryUpdate} />;
pageComp = <InitPage isCompact={isCompact} telemetryUpdateFn={(value) => services.ClientService.TelemetryUpdate(value)} />;
break;
case "notelemetrystar":
pageComp = <NoTelemetryStarPage isCompact={isCompact} />;
Expand Down
64 changes: 32 additions & 32 deletions frontend/app/store/services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,18 @@ export class BlockServiceType {
// queue a layout action to cleanup orphaned blocks in the tab
// @returns object updates
CleanupOrphanedBlocks(tabId: string): Promise<void> {
return callBackendService(this.waveEnv, "block", "CleanupOrphanedBlocks", Array.from(arguments))
return callBackendService(this?.waveEnv, "block", "CleanupOrphanedBlocks", Array.from(arguments))
}
GetControllerStatus(arg2: string): Promise<BlockControllerRuntimeStatus> {
return callBackendService(this.waveEnv, "block", "GetControllerStatus", Array.from(arguments))
return callBackendService(this?.waveEnv, "block", "GetControllerStatus", Array.from(arguments))
}

// save the terminal state to a blockfile
SaveTerminalState(blockId: string, state: string, stateType: string, ptyOffset: number, termSize: TermSize): Promise<void> {
return callBackendService(this.waveEnv, "block", "SaveTerminalState", Array.from(arguments))
return callBackendService(this?.waveEnv, "block", "SaveTerminalState", Array.from(arguments))
}
SaveWaveAiData(arg2: string, arg3: WaveAIPromptMessageType[]): Promise<void> {
return callBackendService(this.waveEnv, "block", "SaveWaveAiData", Array.from(arguments))
return callBackendService(this?.waveEnv, "block", "SaveWaveAiData", Array.from(arguments))
}
}

Expand All @@ -51,22 +51,22 @@ export class ClientServiceType {

// @returns object updates
AgreeTos(): Promise<void> {
return callBackendService(this.waveEnv, "client", "AgreeTos", Array.from(arguments))
return callBackendService(this?.waveEnv, "client", "AgreeTos", Array.from(arguments))
}
FocusWindow(arg2: string): Promise<void> {
return callBackendService(this.waveEnv, "client", "FocusWindow", Array.from(arguments))
return callBackendService(this?.waveEnv, "client", "FocusWindow", Array.from(arguments))
}
GetAllConnStatus(): Promise<ConnStatus[]> {
return callBackendService(this.waveEnv, "client", "GetAllConnStatus", Array.from(arguments))
return callBackendService(this?.waveEnv, "client", "GetAllConnStatus", Array.from(arguments))
}
GetClientData(): Promise<Client> {
return callBackendService(this.waveEnv, "client", "GetClientData", Array.from(arguments))
return callBackendService(this?.waveEnv, "client", "GetClientData", Array.from(arguments))
}
GetTab(arg1: string): Promise<Tab> {
return callBackendService(this.waveEnv, "client", "GetTab", Array.from(arguments))
return callBackendService(this?.waveEnv, "client", "GetTab", Array.from(arguments))
}
TelemetryUpdate(arg2: boolean): Promise<void> {
return callBackendService(this.waveEnv, "client", "TelemetryUpdate", Array.from(arguments))
return callBackendService(this?.waveEnv, "client", "TelemetryUpdate", Array.from(arguments))
}
}

Expand All @@ -82,32 +82,32 @@ export class ObjectServiceType {

// @returns blockId (and object updates)
CreateBlock(blockDef: BlockDef, rtOpts: RuntimeOpts): Promise<string> {
return callBackendService(this.waveEnv, "object", "CreateBlock", Array.from(arguments))
return callBackendService(this?.waveEnv, "object", "CreateBlock", Array.from(arguments))
}

// @returns object updates
DeleteBlock(blockId: string): Promise<void> {
return callBackendService(this.waveEnv, "object", "DeleteBlock", Array.from(arguments))
return callBackendService(this?.waveEnv, "object", "DeleteBlock", Array.from(arguments))
}

// get wave object by oref
GetObject(oref: string): Promise<WaveObj> {
return callBackendService(this.waveEnv, "object", "GetObject", Array.from(arguments))
return callBackendService(this?.waveEnv, "object", "GetObject", Array.from(arguments))
}

// @returns objects
GetObjects(orefs: string[]): Promise<WaveObj[]> {
return callBackendService(this.waveEnv, "object", "GetObjects", Array.from(arguments))
return callBackendService(this?.waveEnv, "object", "GetObjects", Array.from(arguments))
}

// @returns object updates
UpdateObject(waveObj: WaveObj, returnUpdates: boolean): Promise<void> {
return callBackendService(this.waveEnv, "object", "UpdateObject", Array.from(arguments))
return callBackendService(this?.waveEnv, "object", "UpdateObject", Array.from(arguments))
}

// @returns object updates
UpdateObjectMeta(oref: string, meta: MetaType): Promise<void> {
return callBackendService(this.waveEnv, "object", "UpdateObjectMeta", Array.from(arguments))
return callBackendService(this?.waveEnv, "object", "UpdateObjectMeta", Array.from(arguments))
}
}

Expand All @@ -122,7 +122,7 @@ export class UserInputServiceType {
}

SendUserInputResponse(arg1: UserInputResponse): Promise<void> {
return callBackendService(this.waveEnv, "userinput", "SendUserInputResponse", Array.from(arguments))
return callBackendService(this?.waveEnv, "userinput", "SendUserInputResponse", Array.from(arguments))
}
}

Expand All @@ -137,22 +137,22 @@ export class WindowServiceType {
}

CloseWindow(windowId: string, fromElectron: boolean): Promise<void> {
return callBackendService(this.waveEnv, "window", "CloseWindow", Array.from(arguments))
return callBackendService(this?.waveEnv, "window", "CloseWindow", Array.from(arguments))
}
CreateWindow(winSize: WinSize, workspaceId: string): Promise<WaveWindow> {
return callBackendService(this.waveEnv, "window", "CreateWindow", Array.from(arguments))
return callBackendService(this?.waveEnv, "window", "CreateWindow", Array.from(arguments))
}
GetWindow(windowId: string): Promise<WaveWindow> {
return callBackendService(this.waveEnv, "window", "GetWindow", Array.from(arguments))
return callBackendService(this?.waveEnv, "window", "GetWindow", Array.from(arguments))
}

// set window position and size
// @returns object updates
SetWindowPosAndSize(windowId: string, pos: Point, size: WinSize): Promise<void> {
return callBackendService(this.waveEnv, "window", "SetWindowPosAndSize", Array.from(arguments))
return callBackendService(this?.waveEnv, "window", "SetWindowPosAndSize", Array.from(arguments))
}
SwitchWorkspace(windowId: string, workspaceId: string): Promise<Workspace> {
return callBackendService(this.waveEnv, "window", "SwitchWorkspace", Array.from(arguments))
return callBackendService(this?.waveEnv, "window", "SwitchWorkspace", Array.from(arguments))
}
}

Expand All @@ -168,50 +168,50 @@ export class WorkspaceServiceType {

// @returns CloseTabRtn (and object updates)
CloseTab(workspaceId: string, tabId: string, fromElectron: boolean): Promise<CloseTabRtnType> {
return callBackendService(this.waveEnv, "workspace", "CloseTab", Array.from(arguments))
return callBackendService(this?.waveEnv, "workspace", "CloseTab", Array.from(arguments))
}

// @returns tabId (and object updates)
CreateTab(workspaceId: string, tabName: string, activateTab: boolean): Promise<string> {
return callBackendService(this.waveEnv, "workspace", "CreateTab", Array.from(arguments))
return callBackendService(this?.waveEnv, "workspace", "CreateTab", Array.from(arguments))
}

// @returns workspaceId
CreateWorkspace(name: string, icon: string, color: string, applyDefaults: boolean): Promise<string> {
return callBackendService(this.waveEnv, "workspace", "CreateWorkspace", Array.from(arguments))
return callBackendService(this?.waveEnv, "workspace", "CreateWorkspace", Array.from(arguments))
}

// @returns object updates
DeleteWorkspace(workspaceId: string): Promise<string> {
return callBackendService(this.waveEnv, "workspace", "DeleteWorkspace", Array.from(arguments))
return callBackendService(this?.waveEnv, "workspace", "DeleteWorkspace", Array.from(arguments))
}

// @returns colors
GetColors(): Promise<string[]> {
return callBackendService(this.waveEnv, "workspace", "GetColors", Array.from(arguments))
return callBackendService(this?.waveEnv, "workspace", "GetColors", Array.from(arguments))
}

// @returns icons
GetIcons(): Promise<string[]> {
return callBackendService(this.waveEnv, "workspace", "GetIcons", Array.from(arguments))
return callBackendService(this?.waveEnv, "workspace", "GetIcons", Array.from(arguments))
}

// @returns workspace
GetWorkspace(workspaceId: string): Promise<Workspace> {
return callBackendService(this.waveEnv, "workspace", "GetWorkspace", Array.from(arguments))
return callBackendService(this?.waveEnv, "workspace", "GetWorkspace", Array.from(arguments))
}
ListWorkspaces(): Promise<WorkspaceListEntry[]> {
return callBackendService(this.waveEnv, "workspace", "ListWorkspaces", Array.from(arguments))
return callBackendService(this?.waveEnv, "workspace", "ListWorkspaces", Array.from(arguments))
}

// @returns object updates
SetActiveTab(workspaceId: string, tabId: string): Promise<void> {
return callBackendService(this.waveEnv, "workspace", "SetActiveTab", Array.from(arguments))
return callBackendService(this?.waveEnv, "workspace", "SetActiveTab", Array.from(arguments))
}

// @returns object updates
UpdateWorkspace(workspaceId: string, name: string, icon: string, color: string, applyDefaults: boolean): Promise<void> {
return callBackendService(this.waveEnv, "workspace", "UpdateWorkspace", Array.from(arguments))
return callBackendService(this?.waveEnv, "workspace", "UpdateWorkspace", Array.from(arguments))
}
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/tsgen/tsgen.go
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ func GenerateMethodSignature(serviceName string, method reflect.Method, meta tsg
}

func GenerateMethodBody(serviceName string, method reflect.Method, meta tsgenmeta.MethodMeta) string {
return fmt.Sprintf(" return callBackendService(this.waveEnv, %q, %q, Array.from(arguments))\n", serviceName, method.Name)
return fmt.Sprintf(" return callBackendService(this?.waveEnv, %q, %q, Array.from(arguments))\n", serviceName, method.Name)
}

func GenerateServiceClass(serviceName string, serviceObj any, tsTypesMap map[reflect.Type]string) string {
Expand Down
Loading