Skip to content

Remove waveai#3317

Closed
whoisjeremylam wants to merge 19 commits into
wavetermdev:mainfrom
whoisjeremylam:remove-waveai
Closed

Remove waveai#3317
whoisjeremylam wants to merge 19 commits into
wavetermdev:mainfrom
whoisjeremylam:remove-waveai

Conversation

@whoisjeremylam
Copy link
Copy Markdown

@whoisjeremylam whoisjeremylam commented May 18, 2026

Permanently remove wave ai components

- Add local Go 1.26.2 and Zig 0.14.0 installs (gitignored)
- Add @go-task/cli as local npm dependency
- Update Taskfile.yml to use {{.GO}} and {{.ZIG}} vars instead of PATH
- Add go.mod stub in golang dir to prevent module scan errors
- Add manual macOS build workflow (.github/workflows/build-macos.yml)
- Update AGENTS.md with dev environment notes
- Add fork notes to README.md
- Add .pi/ to .gitignore
- Delete deploy-docsite.yml, testdriver-build.yml, testdriver.yml
- Change codeql.yml to manual trigger only
Completely removes all telemetry collection, local storage, and cloud upload
functionality per the remove-telemetry spec.

Key changes:
- Delete pkg/telemetry/, pkg/telemetry/telemetrydata/, pkg/wcloud/
- Remove telemetry loops and event recording from cmd/server/main-server.go
- Remove 5 telemetry RPC commands and ActivityUpdate type from wshrpc layer
- Remove telemetry call sites from wcore, conncontroller, wslconn, jobcontroller,
  aiusechat, panichandler, clientservice
- Remove TelemetryClear/TelemetryEnabled from SettingsConfig and regenerate
  metaconsts.go, gotypes.d.ts, services.ts, wshclientapi.ts, wshclient.go
- Remove wsh CLI activity tracking (activityWrap, sendActivity)
- Remove frontend recordTEvent, ActivityCommand, RecordTEventCommand call sites
- Remove Electron activity tracking (logActiveState, sendDisplaysTDataEvent,
  increment-term-commands IPC)
- Simplify onboarding: remove telemetry toggle, NoTelemetryStarPage, and
  telemetry consent flow
- Delete telemetry docs (telemetry.mdx, telemetry-old.mdx)
- Add migration to drop db_tevent and db_activity tables

Compilation fixes:
- Restore services import in onboarding.tsx for AgreeTos
- Fix emain/preload.ts and emain-ipc.ts corruption from incrementTermCommands
  removal (restore nativePaste, openBuilder, saveTextFile, setIsActive)
- Fix malformed custom.d.ts type declaration
- Replace remaining telemetry:enabled reads in AI panel files with true
…sections

- Promote Fork Notes to ## Fork Notes immediately after intro paragraph
- Remove FOSSA badge, upstream Roadmap, Links, Sponsoring sections
- Remove Free Beta AI credits reference (upstream cloud service)
- Remove upstream download/docs links from Installation section
- Remove entire ## Wave AI section
- Remove AI references from intro and Key Features (Wave AI, AI assistants, AI chat widget)
- Update Fork Notes: 'reduced AI features' -> 'remove unnecessary AI features'
- Focus README on terminal, SSH, and file management capabilities
Root cause: CloseTab launched an explicit goroutine calling
DestroyBlockController while DeleteTab -> DeleteBlock ->
BlockCloseEvent triggered the same destruction again,
causing concurrent double-Stop on ShellController and
DurableShellController.

Fixes:
- Remove redundant DestroyBlockController goroutine from CloseTab
- Add sync.Once to ShellProc.Close() as defense-in-depth
- Add trace logging for interactive diagnosis
- Add 14 unit tests covering the race conditions

Resolves: .pi/specs/bug-tabclose-crash.md
Logging was added to verify the fix; crash confirmed resolved
interactively. Stripping to avoid polluting production logs.
… frontend

- Remove AIPanel from builder-workspace.tsx, replace with placeholder div
- Remove WaveAIModel imports from builder-buildpanel.tsx and builder-previewtab.tsx
- Remove 'Add to Context' and 'Send Output to AI' from builder build panel
- Simplify builder-previewtab ErrorStateView (remove AI streaming check/buttons)
- Move formatFileSize from @/app/aipanel/ai-utils to @/util/util
- Update builder-filestab.tsx formatFileSize import to @/util/util
- Simplify BuilderFocusType to 'app' only, remove setWaveAIFocused()
- Remove 'AI Presets' deprecated config entry and validateAiJson from waveconfig-model.ts
- Remove inWaveAI parameter and WaveAI navigation branch from layoutModel.ts
- Update keymodel.ts switchNodeFocusInDirection call site
- Remove setWaveAIOpen from preview-electron-api.ts mock
- Remove dead rateLimitInfoAtom declaration from global-atoms.ts
The inner PanelGroup (holding VTabBar + AIPanel side-by-side) was removed
in Phase A, but the VTabBar's <Panel> wrapper was accidentally left intact,
creating an invalid react-resizable-panels structure: a <Panel> inside
another <Panel> with no <PanelGroup> parent. This caused the library to
fail layout calculations and collapse all panels to zero size, producing
a completely blank app window.

- Replace nested <Panel> with plain <div> in workspace.tsx
- Remove vtabPanelRef and ImperativePanelHandle import
- Remove syncPanelCollapse() and related refs in workspace-layout-model.ts
Remove getShellIntegrationIconButton() implementation (sparkle/Claude logo
and Wave AI tooltips) and replace with no-op stub returning null.

- Remove TermClaudeIcon import from term-model.ts
- Underlying shell integration protocol (OSC 16162) left intact; could be
  reused later for pi coding agent support (documented in .pi/decisions.md)

Docs: Add .pi/decisions.md with Claude Code integration analysis
Move all fork planning docs into the active working directory:
- Copy specs (remove-waveai, remove-telemetry, portforwarding, bug-tabclose-crash)
- Copy context.md, index.md, todos.md
- Merge decisions.md: prepend original ADRs (fork purpose, .pi/ hub, port forwarding
  config-first approach, tab-close crash fix, secret store keep) with today's
  Claude Code integration analysis for future pi agent support
- Delete docs/docs/waveai.mdx, waveai-modes.mdx, ai-presets.mdx
- Delete schema/waveai.json, schema/aipresets.json
- Remove AI config rows from docs/docs/config.mdx (ai:*, waveai:*, app:hideaibutton)
- Clean AI references from gettingstarted.mdx, index.mdx, wsh-reference.mdx
- Truncate releasenotes.mdx to v0.14.x, strip all AI mentions
- Fix misleading AI text in builder-previewtab.tsx EmptyStateView
- Remove AI schema generation from generateschema (Phase B.12 fix)
- Add sharp dependency for vite image optimizer
Removes AI RPC handlers, client helpers, web endpoints, and dead packages
that were missed in the original Phase B implementation.

Specific changes:
- wshrpctypes.go: remove 7 AI interface methods + 6 AI data types
- wshserver.go: remove 5 AI RPC handlers + aiusechat/chatstore/uctypes imports
- wshclient.go: remove 8 AI client helper functions + uctypes import
- web.go: remove /api/post-chat-message and /wave/aichat endpoints
- main-server.go: remove aiusechat.InitAIModeConfigWatcher() call
- wshcmd-blocks.go: remove waveai from view filter help/validation
- filebackup.go: rename waveai-backups -> file-backups
- wpstypes.go: remove Event_WaveAIRateLimit and Event_AIModeConfig
- tsgenevent.go: remove WaveAI event data mappings
- tsgen.go: remove uctypes/AIModeConfigUpdate from ExtraTypes
- Delete pkg/aiusechat/ (entire directory, ~8.5K lines)
- Delete cmd/testai/, cmd/testopenai/, cmd/testsummarize/
- Delete cmd/wsh/cmd/wshcmd-ai.go (entire wsh ai command)

Also updates .pi/todos.md to reflect Phase D as next active task.
Comprehensive removal of orphaned Wave AI code after Phase A/B/C cleanup:

Frontend:
- Delete frontend/app/aipanel/ (entire directory, 17 files)
- Delete frontend/app/view/waveai/ (deprecated view)
- Delete frontend/app/view/aifilediff/ (deprecated view)
- Delete frontend/app/view/waveconfig/waveaivisual.tsx
- Delete frontend/app/onboarding/fakechat.tsx
- Delete frontend/preview/previews/waveai.preview.tsx
- Delete frontend/preview/previews/aifilediff.preview.tsx + util + test

Go Backend:
- Remove AiSettingsType, GetAiSettings(), MergeAiSettings() from settingsconfig.go
- Remove all AI fields from SettingsType (AiClear, AiPreset, AiApiType, etc.)
- Remove AIModeConfigType, AIModeConfigUpdate structs
- Remove WaveAIModes from FullConfigType
- Remove CountCustomAIPresets(), CountCustomAIModes() methods
- Remove AI meta fields from waveobj.MetaTSType (wtypemeta.go)
- Remove AI fields from waveobj.ObjRTInfo (objrtinfo.go)
- Delete pkg/wconfig/defaultconfig/waveai.json
- Delete pkg/wconfig/defaultconfig/presets/ai.json
- Clean AI defaults from pkg/wconfig/defaultconfig/settings.json
- Fix embed directive in defaultconfig.go (removed all:*/*.json subdir pattern)

TypeScript:
- Remove setWaveAIOpen and AIModeConfigWithMode from custom.d.ts
- Regenerate gotypes.d.ts, waveevent.d.ts, wshclientapi.ts (auto-cleaned)
- Regenerate metaconsts.go (auto-cleaned)
- Regenerate schema/settings.json (auto-cleaned)

Verification:
- go build ./... passes cleanly
- task generate produces no AI-related output
- Zero AI references remain in pkg/, cmd/, frontend/app/, frontend/preview/
Additional cleanup found during verification sweep:

- Remove dangling waveAIButtonRef and hideAiButton from tabbar.tsx
  (ref was never attached to any DOM element, always null)
- Remove app:hideaibutton from tabbarenv.ts, vtabbarenv.ts type unions
- Remove hideAiButton state/checkbox from tabbar.preview.tsx, vtabbar.preview.tsx
- Remove AppHideAiButton field from SettingsType
- Remove app:hideaibutton default from settings.json
- Remove WaveAI keybindings from docs/docs/keybindings.mdx
- Regenerate gotypes.d.ts, metaconsts.go, schema/settings.json
@CLAassistant
Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 18, 2026

Important

Review skipped

Too many files!

This PR contains 226 files, which is 76 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8444d03d-a07a-4fc6-8fe6-7f87922b2731

📥 Commits

Reviewing files that changed from the base of the PR and between 021db67 and 92506fd.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (226)
  • .github/workflows/build-macos.yml
  • .github/workflows/codeql.yml
  • .github/workflows/deploy-docsite.yml
  • .github/workflows/testdriver-build.yml
  • .github/workflows/testdriver.yml
  • .gitignore
  • .pi/context.md
  • .pi/decisions.md
  • .pi/index.md
  • .pi/specs/bug-tabclose-crash.md
  • .pi/specs/portforwarding.md
  • .pi/specs/remove-telemetry.md
  • .pi/specs/remove-waveai.md
  • .pi/todos.md
  • AGENTS.md
  • README.md
  • Taskfile.yml
  • cmd/generatego/main-generatego.go
  • cmd/generateschema/main-generateschema.go
  • cmd/server/main-server.go
  • cmd/testai/main-testai.go
  • cmd/testai/testschema.json
  • cmd/testopenai/main-testopenai.go
  • cmd/testsummarize/main-testsummarize.go
  • cmd/wsh/cmd/wshcmd-ai.go
  • cmd/wsh/cmd/wshcmd-badge.go
  • cmd/wsh/cmd/wshcmd-blocks.go
  • cmd/wsh/cmd/wshcmd-debug.go
  • cmd/wsh/cmd/wshcmd-debugterm.go
  • cmd/wsh/cmd/wshcmd-deleteblock.go
  • cmd/wsh/cmd/wshcmd-editconfig.go
  • cmd/wsh/cmd/wshcmd-editor.go
  • cmd/wsh/cmd/wshcmd-file.go
  • cmd/wsh/cmd/wshcmd-focusblock.go
  • cmd/wsh/cmd/wshcmd-getmeta.go
  • cmd/wsh/cmd/wshcmd-getvar.go
  • cmd/wsh/cmd/wshcmd-launch.go
  • cmd/wsh/cmd/wshcmd-notify.go
  • cmd/wsh/cmd/wshcmd-root.go
  • cmd/wsh/cmd/wshcmd-run.go
  • cmd/wsh/cmd/wshcmd-secret.go
  • cmd/wsh/cmd/wshcmd-setbg.go
  • cmd/wsh/cmd/wshcmd-setconfig.go
  • cmd/wsh/cmd/wshcmd-setmeta.go
  • cmd/wsh/cmd/wshcmd-setvar.go
  • cmd/wsh/cmd/wshcmd-ssh.go
  • cmd/wsh/cmd/wshcmd-tabindicator.go
  • cmd/wsh/cmd/wshcmd-term.go
  • cmd/wsh/cmd/wshcmd-termscrollback.go
  • cmd/wsh/cmd/wshcmd-view.go
  • cmd/wsh/cmd/wshcmd-wavepath.go
  • cmd/wsh/cmd/wshcmd-web.go
  • cmd/wsh/cmd/wshcmd-wsl.go
  • db/migrations-wstore/000012_drop_telemetry.down.sql
  • db/migrations-wstore/000012_drop_telemetry.up.sql
  • docs/docs/ai-presets.mdx
  • docs/docs/config.mdx
  • docs/docs/faq.mdx
  • docs/docs/gettingstarted.mdx
  • docs/docs/index.mdx
  • docs/docs/keybindings.mdx
  • docs/docs/releasenotes.mdx
  • docs/docs/telemetry-old.mdx
  • docs/docs/telemetry.mdx
  • docs/docs/waveai-modes.mdx
  • docs/docs/waveai.mdx
  • docs/docs/wsh-reference.mdx
  • emain/emain-activity.ts
  • emain/emain-ipc.ts
  • emain/emain-tabview.ts
  • emain/emain-window.ts
  • emain/emain.ts
  • emain/preload.ts
  • frontend/app/aipanel/ai-utils.ts
  • frontend/app/aipanel/aidroppedfiles.tsx
  • frontend/app/aipanel/aifeedbackbuttons.tsx
  • frontend/app/aipanel/aimessage.tsx
  • frontend/app/aipanel/aimode.tsx
  • frontend/app/aipanel/aipanel-contextmenu.ts
  • frontend/app/aipanel/aipanel.tsx
  • frontend/app/aipanel/aipanelheader.tsx
  • frontend/app/aipanel/aipanelinput.tsx
  • frontend/app/aipanel/aipanelmessages.tsx
  • frontend/app/aipanel/airatelimitstrip.tsx
  • frontend/app/aipanel/aitooluse.tsx
  • frontend/app/aipanel/aitypes.ts
  • frontend/app/aipanel/byokannouncement.tsx
  • frontend/app/aipanel/restorebackupmodal.tsx
  • frontend/app/aipanel/telemetryrequired.tsx
  • frontend/app/aipanel/waveai-focus-utils.ts
  • frontend/app/aipanel/waveai-model.tsx
  • frontend/app/app.tsx
  • frontend/app/block/blockenv.ts
  • frontend/app/block/blockframe-header.tsx
  • frontend/app/block/blockframe.tsx
  • frontend/app/block/blockregistry.ts
  • frontend/app/block/blockutil.tsx
  • frontend/app/block/connectionbutton.tsx
  • frontend/app/block/durable-session-flyover.tsx
  • frontend/app/modals/about.tsx
  • frontend/app/monaco/schemaendpoints.ts
  • frontend/app/onboarding/fakechat.tsx
  • frontend/app/onboarding/onboarding-durable.tsx
  • frontend/app/onboarding/onboarding-features.tsx
  • frontend/app/onboarding/onboarding-starask.tsx
  • frontend/app/onboarding/onboarding-upgrade-minor.tsx
  • frontend/app/onboarding/onboarding.tsx
  • frontend/app/store/focusManager.ts
  • frontend/app/store/global-atoms.ts
  • frontend/app/store/global.ts
  • frontend/app/store/keymodel.ts
  • frontend/app/store/services.ts
  • frontend/app/store/tabrpcclient.ts
  • frontend/app/store/wshclientapi.ts
  • frontend/app/tab/tab.tsx
  • frontend/app/tab/tabbar.tsx
  • frontend/app/tab/tabbarenv.ts
  • frontend/app/tab/tabcontextmenu.ts
  • frontend/app/tab/vtabbar.tsx
  • frontend/app/tab/vtabbarenv.ts
  • frontend/app/view/aifilediff/aifilediff.tsx
  • frontend/app/view/term/osc-handlers.ts
  • frontend/app/view/term/term-model.ts
  • frontend/app/view/waveai/waveai.tsx
  • frontend/app/view/waveconfig/waveaivisual.tsx
  • frontend/app/view/waveconfig/waveconfig-model.ts
  • frontend/app/view/waveconfig/waveconfigenv.ts
  • frontend/app/workspace/widgets.tsx
  • frontend/app/workspace/workspace-layout-model.ts
  • frontend/app/workspace/workspace.tsx
  • frontend/builder/builder-buildpanel.tsx
  • frontend/builder/builder-workspace.tsx
  • frontend/builder/store/builder-focusmanager.ts
  • frontend/builder/tabs/builder-filestab.tsx
  • frontend/builder/tabs/builder-previewtab.tsx
  • frontend/layout/lib/layoutModel.ts
  • frontend/preview/mock/defaultconfig.ts
  • frontend/preview/mock/mockwaveenv.ts
  • frontend/preview/mock/preview-electron-api.ts
  • frontend/preview/previews/aifilediff.preview-util.ts
  • frontend/preview/previews/aifilediff.preview.test.ts
  • frontend/preview/previews/aifilediff.preview.tsx
  • frontend/preview/previews/onboarding.preview.tsx
  • frontend/preview/previews/tabbar.preview.tsx
  • frontend/preview/previews/vtabbar.preview.tsx
  • frontend/preview/previews/waveai.preview.tsx
  • frontend/types/custom.d.ts
  • frontend/types/gotypes.d.ts
  • frontend/types/waveevent.d.ts
  • frontend/util/util.ts
  • frontend/wave.ts
  • package.json
  • pkg/aiusechat/aiutil/aiutil.go
  • pkg/aiusechat/anthropic/anthropic-backend.go
  • pkg/aiusechat/anthropic/anthropic-backend_test.go
  • pkg/aiusechat/anthropic/anthropic-convertmessage.go
  • pkg/aiusechat/chatstore/chatstore.go
  • pkg/aiusechat/gemini/doc.go
  • pkg/aiusechat/gemini/gemini-backend.go
  • pkg/aiusechat/gemini/gemini-convertmessage.go
  • pkg/aiusechat/gemini/gemini-types.go
  • pkg/aiusechat/google/doc.go
  • pkg/aiusechat/google/google-summarize.go
  • pkg/aiusechat/google/google-summarize_test.go
  • pkg/aiusechat/openai/openai-backend.go
  • pkg/aiusechat/openai/openai-convertmessage.go
  • pkg/aiusechat/openai/openai-util.go
  • pkg/aiusechat/openai/stream-sample.txt
  • pkg/aiusechat/openai/tool-sample.txt
  • pkg/aiusechat/openaichat/openaichat-backend.go
  • pkg/aiusechat/openaichat/openaichat-convertmessage.go
  • pkg/aiusechat/openaichat/openaichat-types.go
  • pkg/aiusechat/toolapproval.go
  • pkg/aiusechat/tools.go
  • pkg/aiusechat/tools_builder.go
  • pkg/aiusechat/tools_readdir.go
  • pkg/aiusechat/tools_readdir_test.go
  • pkg/aiusechat/tools_readfile.go
  • pkg/aiusechat/tools_screenshot.go
  • pkg/aiusechat/tools_term.go
  • pkg/aiusechat/tools_tsunami.go
  • pkg/aiusechat/tools_web.go
  • pkg/aiusechat/tools_writefile.go
  • pkg/aiusechat/uctypes/uctypes.go
  • pkg/aiusechat/usechat-backend.go
  • pkg/aiusechat/usechat-mode.go
  • pkg/aiusechat/usechat-prompts.go
  • pkg/aiusechat/usechat-utils.go
  • pkg/aiusechat/usechat.go
  • pkg/aiusechat/usechat_mode_test.go
  • pkg/blockcontroller/blockcontroller_test.go
  • pkg/filebackup/filebackup.go
  • pkg/jobcontroller/jobcontroller.go
  • pkg/panichandler/panichandler.go
  • pkg/remote/conncontroller/conncontroller.go
  • pkg/service/clientservice/clientservice.go
  • pkg/service/workspaceservice/workspaceservice.go
  • pkg/shellexec/shellexec.go
  • pkg/telemetry/telemetry.go
  • pkg/telemetry/telemetrydata/telemetrydata.go
  • pkg/tsgen/tsgen.go
  • pkg/tsgen/tsgenevent.go
  • pkg/waveobj/metaconsts.go
  • pkg/waveobj/objrtinfo.go
  • pkg/waveobj/wtypemeta.go
  • pkg/wcloud/wcloud.go
  • pkg/wcloud/wclouddata.go
  • pkg/wconfig/defaultconfig/defaultconfig.go
  • pkg/wconfig/defaultconfig/presets/ai.json
  • pkg/wconfig/defaultconfig/settings.json
  • pkg/wconfig/defaultconfig/waveai.json
  • pkg/wconfig/metaconsts.go
  • pkg/wconfig/settingsconfig.go
  • pkg/wcore/block.go
  • pkg/wcore/layout.go
  • pkg/wcore/wcore.go
  • pkg/wcore/workspace.go
  • pkg/web/web.go
  • pkg/wps/wpstypes.go
  • pkg/wshrpc/wshclient/wshclient.go
  • pkg/wshrpc/wshrpctypes.go
  • pkg/wshrpc/wshserver/wshserver.go
  • pkg/wslconn/wslconn.go
  • schema/aipresets.json
  • schema/settings.json
  • schema/waveai.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@whoisjeremylam
Copy link
Copy Markdown
Author

sorry, this was supposed to be on my fork

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants