From 3da0861eb02b686dca3c50315616f8a9f577438a Mon Sep 17 00:00:00 2001 From: sawka Date: Wed, 15 Oct 2025 18:41:31 -0700 Subject: [PATCH 1/3] exclude autoupdate channel in custom settings --- pkg/wconfig/settingsconfig.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/wconfig/settingsconfig.go b/pkg/wconfig/settingsconfig.go index 5c33e69fe9..14a7014157 100644 --- a/pkg/wconfig/settingsconfig.go +++ b/pkg/wconfig/settingsconfig.go @@ -832,7 +832,7 @@ func (fc *FullConfigType) CountCustomAIPresets() int { } // CountCustomSettings returns the number of settings in the user's settings file. -// This excludes telemetry:enabled which doesn't count as a customization. +// This excludes telemetry:enabled and autoupdate:channel which don't count as customizations. func CountCustomSettings() int { // Load user settings userSettings, _ := ReadWaveHomeConfigFile("settings.json") @@ -840,10 +840,10 @@ func CountCustomSettings() int { return 0 } - // Count all keys except telemetry:enabled + // Count all keys except telemetry:enabled and autoupdate:channel count := 0 for key := range userSettings { - if key == "telemetry:enabled" { + if key == "telemetry:enabled" || key == "autoupdate:channel" { continue } count++ From d2d7811185ef72d96e40470c377e1c46633686a7 Mon Sep 17 00:00:00 2001 From: sawka Date: Wed, 15 Oct 2025 20:44:25 -0700 Subject: [PATCH 2/3] better url and github star tracking --- frontend/app/modals/about.tsx | 8 ++++--- .../app/onboarding/onboarding-upgrade.tsx | 14 ++++++++++- frontend/app/onboarding/onboarding.tsx | 14 ++++++++--- frontend/types/gotypes.d.ts | 1 + package-lock.json | 4 ++-- pkg/telemetry/telemetrydata/telemetrydata.go | 23 +++++++++++-------- 6 files changed, 45 insertions(+), 19 deletions(-) diff --git a/frontend/app/modals/about.tsx b/frontend/app/modals/about.tsx index 348a63d591..739efc5e4f 100644 --- a/frontend/app/modals/about.tsx +++ b/frontend/app/modals/about.tsx @@ -36,7 +36,7 @@ const AboutModal = ({}: AboutModalProps) => {
{ Github { Acknowledgements
-
© {currentDate.getFullYear()} Command Line Inc.
+
+ © {currentDate.getFullYear()} Command Line Inc. +
); diff --git a/frontend/app/onboarding/onboarding-upgrade.tsx b/frontend/app/onboarding/onboarding-upgrade.tsx index be46238964..2de94f1e75 100644 --- a/frontend/app/onboarding/onboarding-upgrade.tsx +++ b/frontend/app/onboarding/onboarding-upgrade.tsx @@ -51,16 +51,24 @@ const UpgradeOnboardingModal = () => { }, []); const handleStarClick = async () => { + RpcApi.RecordTEventCommand(TabRpcClient, { + event: "onboarding:githubstar", + props: { "onboarding:githubstar": "star" }, + }, { noresponse: true }); const clientId = globalStore.get(atoms.clientId); await RpcApi.SetMetaCommand(TabRpcClient, { oref: WOS.makeORef("client", clientId), meta: { "onboarding:githubstar": true }, }); - window.open("https://github.com/wavetermdev/waveterm", "_blank"); + window.open("https://github.com/wavetermdev/waveterm?ref=upgrade", "_blank"); setPageName("features"); }; const handleAlreadyStarred = async () => { + RpcApi.RecordTEventCommand(TabRpcClient, { + event: "onboarding:githubstar", + props: { "onboarding:githubstar": "already" }, + }, { noresponse: true }); const clientId = globalStore.get(atoms.clientId); await RpcApi.SetMetaCommand(TabRpcClient, { oref: WOS.makeORef("client", clientId), @@ -70,6 +78,10 @@ const UpgradeOnboardingModal = () => { }; const handleMaybeLater = async () => { + RpcApi.RecordTEventCommand(TabRpcClient, { + event: "onboarding:githubstar", + props: { "onboarding:githubstar": "later" }, + }, { noresponse: true }); const clientId = globalStore.get(atoms.clientId); await RpcApi.SetMetaCommand(TabRpcClient, { oref: WOS.makeORef("client", clientId), diff --git a/frontend/app/onboarding/onboarding.tsx b/frontend/app/onboarding/onboarding.tsx index 31fde305fd..186bb2bb8a 100644 --- a/frontend/app/onboarding/onboarding.tsx +++ b/frontend/app/onboarding/onboarding.tsx @@ -72,7 +72,11 @@ const InitPage = ({ isCompact }: { isCompact: boolean }) => {
- +
@@ -81,7 +85,11 @@ const InitPage = ({ isCompact }: { isCompact: boolean }) => {
We're open source and committed to providing a free terminal for individual users. Please show your support by giving us a star on{" "} - + Github (wavetermdev/waveterm)
@@ -152,7 +160,7 @@ const NoTelemetryStarPage = ({ isCompact }: { isCompact: boolean }) => { oref: WOS.makeORef("client", clientId), meta: { "onboarding:githubstar": true }, }); - window.open("https://github.com/wavetermdev/waveterm", "_blank"); + window.open("https://github.com/wavetermdev/waveterm?ref=not", "_blank"); setPageName("features"); }; diff --git a/frontend/types/gotypes.d.ts b/frontend/types/gotypes.d.ts index 3b88370c4a..123576e21c 100644 --- a/frontend/types/gotypes.d.ts +++ b/frontend/types/gotypes.d.ts @@ -953,6 +953,7 @@ declare global { "conn:conntype"?: string; "onboarding:feature"?: "waveai" | "magnify" | "wsh"; "onboarding:version"?: string; + "onboarding:githubstar"?: "already" | "star" | "later"; "display:height"?: number; "display:width"?: number; "display:dpr"?: number; diff --git a/package-lock.json b/package-lock.json index 54a16f19ba..47927e13fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "waveterm", - "version": "0.12.0-beta.3", + "version": "0.12.0-beta.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "waveterm", - "version": "0.12.0-beta.3", + "version": "0.12.0-beta.4", "hasInstallScript": true, "license": "Apache-2.0", "workspaces": [ diff --git a/pkg/telemetry/telemetrydata/telemetrydata.go b/pkg/telemetry/telemetrydata/telemetrydata.go index 6b3a90e908..5865bedc46 100644 --- a/pkg/telemetry/telemetrydata/telemetrydata.go +++ b/pkg/telemetry/telemetrydata/telemetrydata.go @@ -34,6 +34,7 @@ var ValidEventNames = map[string]bool{ "onboarding:start": true, "onboarding:skip": true, "onboarding:fire": true, + "onboarding:githubstar": true, } type TEvent struct { @@ -81,16 +82,18 @@ type TEventProps struct { AppFirstDay bool `json:"app:firstday,omitempty"` AppFirstLaunch bool `json:"app:firstlaunch,omitempty"` - ActionInitiator string `json:"action:initiator,omitempty" tstype:"\"keyboard\" | \"mouse\""` - PanicType string `json:"debug:panictype,omitempty"` - BlockView string `json:"block:view,omitempty"` - AiBackendType string `json:"ai:backendtype,omitempty"` - AiLocal bool `json:"ai:local,omitempty"` - WshCmd string `json:"wsh:cmd,omitempty"` - WshHadError bool `json:"wsh:haderror,omitempty"` - ConnType string `json:"conn:conntype,omitempty"` - OnboardingFeature string `json:"onboarding:feature,omitempty" tstype:"\"waveai\" | \"magnify\" | \"wsh\""` - OnboardingVersion string `json:"onboarding:version,omitempty"` + ActionInitiator string `json:"action:initiator,omitempty" tstype:"\"keyboard\" | \"mouse\""` + PanicType string `json:"debug:panictype,omitempty"` + BlockView string `json:"block:view,omitempty"` + AiBackendType string `json:"ai:backendtype,omitempty"` + AiLocal bool `json:"ai:local,omitempty"` + WshCmd string `json:"wsh:cmd,omitempty"` + WshHadError bool `json:"wsh:haderror,omitempty"` + ConnType string `json:"conn:conntype,omitempty"` + + OnboardingFeature string `json:"onboarding:feature,omitempty" tstype:"\"waveai\" | \"magnify\" | \"wsh\""` + OnboardingVersion string `json:"onboarding:version,omitempty"` + OnboardingGithubStar string `json:"onboarding:githubstar,omitempty" tstype:"\"already\" | \"star\" | \"later\""` DisplayHeight int `json:"display:height,omitempty"` DisplayWidth int `json:"display:width,omitempty"` From 0000b689a34bfa606d8976325b61935f4da437fc Mon Sep 17 00:00:00 2001 From: sawka Date: Wed, 15 Oct 2025 20:51:02 -0700 Subject: [PATCH 3/3] add wsh blocks to release notes and wsh-reference, also mention wsh ai in the rl --- docs/docs/releasenotes.mdx | 2 ++ docs/docs/wsh-reference.mdx | 38 +++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/docs/docs/releasenotes.mdx b/docs/docs/releasenotes.mdx index 0d9e83fad1..402e28162c 100644 --- a/docs/docs/releasenotes.mdx +++ b/docs/docs/releasenotes.mdx @@ -16,6 +16,7 @@ Wave Terminal v0.12.0 introduces a completely redesigned AI experience powered b - **New Slide-Out Chat Panel** - Access Wave AI via hotkeys (Cmd-Shift-A or Ctrl-Shift-0) from the left side of your screen - **Multi-Modal Input** - Support for images, PDFs, and text file attachments - **Drag & Drop Files** - Simply drag files into the chat to attach them +- **Command-Line Integration** - Send files and command output directly to Wave AI using `wsh ai` - **Smart Context Switching** - Enable Wave AI to see into your widgets and file system - **Built-in Tools:** - Web search capabilities @@ -30,6 +31,7 @@ For more information and upcoming features, visit our [Wave AI documentation](ht **Other Improvements:** - New onboarding flow showcasing block magnification, Wave AI, and wsh view/edit capabilities +- New `wsh blocks list` command for listing and filtering blocks by workspace, tab, or view type - Continued migration from SCSS to Tailwind v4 - Package upgrades and dependency updates - Internal code cleanup and refactoring diff --git a/docs/docs/wsh-reference.mdx b/docs/docs/wsh-reference.mdx index d484d9fe3f..3136fcc06d 100644 --- a/docs/docs/wsh-reference.mdx +++ b/docs/docs/wsh-reference.mdx @@ -857,4 +857,42 @@ The command will show you the full path to: Use the `-t` flag with the log path to quickly view recent log entries without having to open the full file. This is particularly useful for troubleshooting. ::: +--- + +## blocks + +The `blocks` command provides operations for listing and querying blocks across workspaces, windows, and tabs. Primarily useful for debugging and scripting. + +### list + +```sh +wsh blocks list [flags] +``` + +List all blocks with optional filtering by workspace, window, tab, or view type. Output can be formatted as a table (default) or JSON for scripting. + +Flags: +- `--workspace ` - restrict to specific workspace id +- `--window ` - restrict to specific window id +- `--tab ` - restrict to specific tab id +- `--view ` - filter by view type (term, web, preview, edit, sysinfo, waveai) +- `--json` - output results as JSON +- `--timeout ` - RPC timeout in milliseconds (default: 5000) + +Examples: + +```sh +# List all blocks +wsh blocks list + +# List only terminal blocks +wsh blocks list --view=term + +# Filter by workspace +wsh blocks list --workspace=12d0c067-378e-454c-872e-77a314248114 + +# Output as JSON for scripting +wsh blocks list --json +``` +