Skip to content

Commit ea68aec

Browse files
authored
v0.13 Release Notes, Docs Updates, Onboarding Updates (#2642)
1 parent 323db7f commit ea68aec

29 files changed

+549
-135
lines changed

ROADMAP.md

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ Wave Terminal's AI assistant is already powerful and continues to evolve. Here's
1313
### AI Provider Support
1414

1515
- ✅ OpenAI (including gpt-5 and gpt-5-mini models)
16+
- ✅ Google Gemini (v0.13)
17+
- ✅ OpenRouter and custom OpenAI-compatible endpoints (v0.13)
18+
- ✅ Azure OpenAI (modern and legacy APIs) (v0.13)
19+
- ✅ Local AI models via Ollama, LM Studio, vLLM, and other OpenAI-compatible servers (v0.13)
1620

1721
### Context & Input
1822

@@ -32,33 +36,28 @@ Wave Terminal's AI assistant is already powerful and continues to evolve. Here's
3236

3337
### AI Configuration & Flexibility
3438

35-
- 🔷 BYOK (Bring Your Own Key) - Use your own API keys for any supported provider
39+
- ✅ BYOK (Bring Your Own Key) - Use your own API keys for any supported provider (v0.13)
40+
- ✅ Local AI agents - Run AI models locally on your machine (v0.13)
3641
- 🔧 Enhanced provider configuration options
3742
- 🔷 Context (add markdown files to give persistent system context)
3843

3944
### Expanded Provider Support
4045

41-
Top priorities are Claude (for better coding support), and the OpenAI Completions API which will allow us to interface with
42-
many more local/open models.
43-
4446
- 🔷 Anthropic Claude - Full integration with extended thinking and tool use
45-
- 🔷 OpenAI Completions API - Support for older model formats
46-
- 🤞 Google Gemini - Complete integration
47-
- 🤞 Local AI agents - Run AI models locally on your machine
4847

4948
### Advanced AI Tools
5049

5150
#### File Operations
5251

53-
- 🔧 AI file writing with intelligent diff previews
54-
- 🔧 Rollback support for AI-made changes
52+
- AI file writing with intelligent diff previews
53+
- Rollback support for AI-made changes
5554
- 🔷 Multi-file editing workflows
5655
- 🔷 Safe file modification patterns
5756

5857
#### Terminal Command Execution
5958

6059
- 🔧 Execute commands directly from AI
61-
- 🔧 Intelligent terminal state detection
60+
- Intelligent terminal state detection
6261
- 🔧 Command result capture and parsing
6362

6463
### Remote & Advanced Capabilities

cmd/server/main-server.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/wavetermdev/waveterm/pkg/panichandler"
2323
"github.com/wavetermdev/waveterm/pkg/remote/conncontroller"
2424
"github.com/wavetermdev/waveterm/pkg/remote/fileshare/wshfs"
25+
"github.com/wavetermdev/waveterm/pkg/secretstore"
2526
"github.com/wavetermdev/waveterm/pkg/service"
2627
"github.com/wavetermdev/waveterm/pkg/telemetry"
2728
"github.com/wavetermdev/waveterm/pkg/telemetry/telemetrydata"
@@ -224,18 +225,25 @@ func updateTelemetryCounts(lastCounts telemetrydata.TEventProps) telemetrydata.T
224225
customWidgets := fullConfig.CountCustomWidgets()
225226
customAIPresets := fullConfig.CountCustomAIPresets()
226227
customSettings := wconfig.CountCustomSettings()
228+
customAIModes := fullConfig.CountCustomAIModes()
227229

228230
props.UserSet = &telemetrydata.TEventUserProps{
229231
SettingsCustomWidgets: customWidgets,
230232
SettingsCustomAIPresets: customAIPresets,
231233
SettingsCustomSettings: customSettings,
234+
SettingsCustomAIModes: customAIModes,
235+
}
236+
237+
secretsCount, err := secretstore.CountSecrets()
238+
if err == nil {
239+
props.UserSet.SettingsSecretsCount = secretsCount
232240
}
233241

234242
if utilfn.CompareAsMarshaledJson(props, lastCounts) {
235243
return lastCounts
236244
}
237245
tevent := telemetrydata.MakeTEvent("app:counts", props)
238-
err := telemetry.RecordTEvent(ctx, tevent)
246+
err = telemetry.RecordTEvent(ctx, tevent)
239247
if err != nil {
240248
log.Printf("error recording counts tevent: %v\n", err)
241249
}

docs/docs/releasenotes.mdx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,33 @@ sidebar_position: 200
66

77
# Release Notes
88

9+
### v0.13.0 — Dec 8, 2025
10+
11+
**Wave v0.13 Brings Local AI Support, BYOK, and Unified Configuration**
12+
13+
Wave v0.13 is a major release that opens up Wave AI to local models, third-party providers, and bring-your-own-key (BYOK) configurations. This release also includes a completely redesigned configuration system and several terminal improvements.
14+
15+
**Local AI & BYOK Support:**
16+
- **OpenAI-Compatible API** - Wave now supports any provider or local server using the `/v1/chat/completions` endpoint, enabling use of Ollama, LM Studio, vLLM, OpenRouter, and countless other local and hosted models
17+
- **Google Gemini Integration** - Native support for Google's Gemini models with a dedicated API adapter
18+
- **Provider Presets** - Simplified configuration with built-in presets for OpenAI, OpenRouter, Google, Azure, and custom endpoints
19+
- **Multiple AI Modes** - Easily switch between different models and providers with a unified interface
20+
- See the new [Wave AI Modes documentation](https://docs.waveterm.dev/waveai-modes) for configuration examples and setup guides
21+
22+
**Unified Configuration Widget:**
23+
- **New Config Interface** - Replaced the basic JSON editor with a dedicated configuration widget accessible from the sidebar
24+
- **Better Organization** - Browse and edit different configuration types (general settings, AI modes, secrets) with improved validation and error handling
25+
- **Integrated Secrets Management** - Access Wave's secret store directly from the config widget for secure credential management
26+
27+
**Terminal Improvements:**
28+
- **Bracketed Paste Mode** - Now enabled by default to improve multi-line paste behavior and compatibility with tools like Claude Code
29+
- **Windows Paste Fix** - Ctrl+V now works as a standard paste accelerator on Windows
30+
- **SSH Password Management** - Store SSH connection passwords in Wave's secret store to avoid re-typing credentials
31+
32+
**Other Changes:**
33+
- Package updates and dependency upgrades
34+
- Various bug fixes and stability improvements
35+
936
### v0.12.5 — Nov 24, 2025
1037

1138
Quick patch release to fix paste behavior on Linux (prevent raw HTML from getting pasted to the terminal).

docs/docs/secrets.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { VersionBadge } from "@site/src/components/versionbadge";
88

99
# Secrets
1010

11-
<VersionBadge version="v0.13" />
11+
<VersionBadge version="v0.13" noLeftMargin={true} />
1212

1313
Wave Terminal provides a secure way to store sensitive information like passwords, API keys, and tokens. Secrets are stored encrypted in your system's native keychain (macOS Keychain, Windows Credential Manager, or Linux Secret Service), ensuring your sensitive data remains protected.
1414

docs/docs/waveai-modes.mdx

Lines changed: 117 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ id: "waveai-modes"
44
title: "Wave AI (Local Models + BYOK)"
55
---
66

7+
import { VersionBadge } from "@site/src/components/versionbadge";
8+
9+
<VersionBadge version="v0.13" noLeftMargin={true}/>
10+
711
Wave AI supports custom AI modes that allow you to use local models, custom API endpoints, and alternative AI providers. This gives you complete control over which models and providers you use with Wave's AI features.
812

913
## Configuration Overview
@@ -15,7 +19,7 @@ AI modes are configured in `~/.config/waveterm/waveai.json`.
1519
2. Select "Settings" from the menu
1620
3. Choose "Wave AI Modes" from the settings sidebar
1721

18-
**Or edit from the command line:**
22+
**Or launch from the command line:**
1923
```bash
2024
wsh editconfig waveai.json
2125
```
@@ -43,83 +47,51 @@ Wave AI supports the following API types:
4347
- **`openai-responses`**: Uses the `/v1/responses` endpoint (modern API for GPT-5+ models)
4448
- **`google-gemini`**: Google's Gemini API format (automatically set when using `ai:provider: "google"`, not typically used directly)
4549

46-
## Configuration Structure
50+
## Global Wave AI Settings
4751

48-
### Minimal Configuration (with Provider)
52+
You can configure global Wave AI behavior in your Wave Terminal settings (separate from the mode configurations in `waveai.json`).
4953

50-
```json
51-
{
52-
"mode-key": {
53-
"display:name": "Qwen (OpenRouter)",
54-
"ai:provider": "openrouter",
55-
"ai:model": "qwen/qwen-2.5-coder-32b-instruct"
56-
}
57-
}
58-
```
54+
### Setting a Default AI Mode
5955

60-
### Full Configuration (all fields)
56+
After configuring a local model or custom mode, you can make it the default by setting `waveai:defaultmode` in your Wave Terminal settings.
6157

62-
```json
63-
{
64-
"mode-key": {
65-
"display:name": "Display Name",
66-
"display:order": 1,
67-
"display:icon": "icon-name",
68-
"display:description": "Full description",
69-
"ai:provider": "custom",
70-
"ai:apitype": "openai-chat",
71-
"ai:model": "model-name",
72-
"ai:thinkinglevel": "medium",
73-
"ai:endpoint": "http://localhost:11434/v1/chat/completions",
74-
"ai:azureapiversion": "v1",
75-
"ai:apitoken": "your-token",
76-
"ai:apitokensecretname": "PROVIDER_KEY",
77-
"ai:azureresourcename": "your-resource",
78-
"ai:azuredeployment": "your-deployment",
79-
"ai:capabilities": ["tools", "images", "pdfs"]
80-
}
81-
}
82-
```
58+
:::important
59+
Use the **mode key** (the key in your `waveai.json` configuration), not the display name. For example, use `"ollama-llama"` (the key), not `"Ollama - Llama 3.3"` (the display name).
60+
:::
8361

84-
### Field Reference
62+
**Using the settings command:**
63+
```bash
64+
wsh setconfig waveai:defaultmode="ollama-llama"
65+
```
8566

86-
| Field | Required | Description |
87-
|-------|----------|-------------|
88-
| `display:name` | Yes | Name shown in the AI mode selector |
89-
| `display:order` | No | Sort order in the selector (lower numbers first) |
90-
| `display:icon` | No | Icon identifier for the mode |
91-
| `display:description` | No | Full description of the mode |
92-
| `ai:provider` | No | Provider preset: `openai`, `openrouter`, `google`, `azure`, `azure-legacy`, `custom` |
93-
| `ai:apitype` | No | API type: `openai-chat`, `openai-responses`, or `google-gemini` (defaults to `openai-chat` if not specified) |
94-
| `ai:model` | No | Model identifier (required for most providers) |
95-
| `ai:thinkinglevel` | No | Thinking level: `low`, `medium`, or `high` |
96-
| `ai:endpoint` | No | *Full* API endpoint URL (auto-set by provider when available) |
97-
| `ai:azureapiversion` | No | Azure API version (for `azure-legacy` provider, defaults to `2025-04-01-preview`) |
98-
| `ai:apitoken` | No | API key/token (not recommended - use secrets instead) |
99-
| `ai:apitokensecretname` | No | Name of secret containing API token (auto-set by provider) |
100-
| `ai:azureresourcename` | No | Azure resource name (for Azure providers) |
101-
| `ai:azuredeployment` | No | Azure deployment name (for `azure-legacy` provider) |
102-
| `ai:capabilities` | No | Array of supported capabilities: `"tools"`, `"images"`, `"pdfs"` |
103-
| `waveai:cloud` | No | Internal - for Wave Cloud AI configuration only |
104-
| `waveai:premium` | No | Internal - for Wave Cloud AI configuration only |
67+
**Or edit settings.json directly:**
68+
1. Click the settings (gear) icon in the widget bar
69+
2. Select "Settings" from the menu
70+
3. Add the `waveai:defaultmode` key to your settings.json:
71+
```json
72+
"waveai:defaultmode": "ollama-llama"
73+
```
10574

106-
### AI Capabilities
75+
This will make the specified mode the default selection when opening Wave AI features.
10776

108-
The `ai:capabilities` field specifies what features the AI mode supports:
77+
### Hiding Wave Cloud Modes
10978

110-
- **`tools`** - Enables AI tool usage for file reading/writing, shell integration, and widget interaction
111-
- **`images`** - Allows image attachments in chat (model can view uploaded images)
112-
- **`pdfs`** - Allows PDF file attachments in chat (model can read PDF content)
79+
If you prefer to use only your local or custom models and want to hide Wave's cloud AI modes from the mode dropdown, set `waveai:showcloudmodes` to `false`:
11380

114-
**Provider-specific behavior:**
115-
- **OpenAI and Google providers**: Capabilities are automatically configured based on the model. You don't need to specify them.
116-
- **OpenRouter, Azure, Azure-Legacy, and Custom providers**: You must manually specify capabilities based on your model's features.
81+
**Using the settings command:**
82+
```bash
83+
wsh setconfig waveai:showcloudmodes=false
84+
```
11785

118-
:::warning
119-
If you don't include `"tools"` in the `ai:capabilities` array, the AI model will not be able to interact with your Wave terminal widgets, read/write files, or execute commands. Most AI modes should include `"tools"` for the best Wave experience.
120-
:::
86+
**Or edit settings.json directly:**
87+
1. Click the settings (gear) icon in the widget bar
88+
2. Select "Settings" from the menu
89+
3. Add the `waveai:showcloudmodes` key to your settings.json:
90+
```json
91+
"waveai:showcloudmodes": false
92+
```
12193

122-
Most models support `tools` and can benefit from it. Vision-capable models should include `images`. Not all models support PDFs, so only include `pdfs` if your model can process them.
94+
This will hide Wave's built-in cloud AI modes, showing only your custom configured modes.
12395

12496
## Local Model Examples
12597

@@ -132,7 +104,7 @@ Most models support `tools` and can benefit from it. Vision-capable models shoul
132104
"ollama-llama": {
133105
"display:name": "Ollama - Llama 3.3",
134106
"display:order": 1,
135-
"display:icon": "llama",
107+
"display:icon": "microchip",
136108
"display:description": "Local Llama 3.3 70B model via Ollama",
137109
"ai:apitype": "openai-chat",
138110
"ai:model": "llama3.3:70b",
@@ -420,3 +392,81 @@ If you get "model not found" errors:
420392
- Use `openai-chat` for Ollama, LM Studio, custom endpoints, and most cloud providers
421393
- Use `openai-responses` for newer OpenAI models (GPT-5+) or when your provider specifically requires it
422394
- Provider presets automatically set the correct API type when needed
395+
396+
## Configuration Reference
397+
398+
### Minimal Configuration (with Provider)
399+
400+
```json
401+
{
402+
"mode-key": {
403+
"display:name": "Qwen (OpenRouter)",
404+
"ai:provider": "openrouter",
405+
"ai:model": "qwen/qwen-2.5-coder-32b-instruct"
406+
}
407+
}
408+
```
409+
410+
### Full Configuration (all fields)
411+
412+
```json
413+
{
414+
"mode-key": {
415+
"display:name": "Display Name",
416+
"display:order": 1,
417+
"display:icon": "icon-name",
418+
"display:description": "Full description",
419+
"ai:provider": "custom",
420+
"ai:apitype": "openai-chat",
421+
"ai:model": "model-name",
422+
"ai:thinkinglevel": "medium",
423+
"ai:endpoint": "http://localhost:11434/v1/chat/completions",
424+
"ai:azureapiversion": "v1",
425+
"ai:apitoken": "your-token",
426+
"ai:apitokensecretname": "PROVIDER_KEY",
427+
"ai:azureresourcename": "your-resource",
428+
"ai:azuredeployment": "your-deployment",
429+
"ai:capabilities": ["tools", "images", "pdfs"]
430+
}
431+
}
432+
```
433+
434+
### Field Reference
435+
436+
| Field | Required | Description |
437+
|-------|----------|-------------|
438+
| `display:name` | Yes | Name shown in the AI mode selector |
439+
| `display:order` | No | Sort order in the selector (lower numbers first) |
440+
| `display:icon` | No | Icon identifier for the mode (can use any [FontAwesome icon](https://fontawesome.com/search), use the name without the "fa-" prefix). Default is "sparkles" |
441+
| `display:description` | No | Full description of the mode |
442+
| `ai:provider` | No | Provider preset: `openai`, `openrouter`, `google`, `azure`, `azure-legacy`, `custom` |
443+
| `ai:apitype` | No | API type: `openai-chat`, `openai-responses`, or `google-gemini` (defaults to `openai-chat` if not specified) |
444+
| `ai:model` | No | Model identifier (required for most providers) |
445+
| `ai:thinkinglevel` | No | Thinking level: `low`, `medium`, or `high` |
446+
| `ai:endpoint` | No | *Full* API endpoint URL (auto-set by provider when available) |
447+
| `ai:azureapiversion` | No | Azure API version (for `azure-legacy` provider, defaults to `2025-04-01-preview`) |
448+
| `ai:apitoken` | No | API key/token (not recommended - use secrets instead) |
449+
| `ai:apitokensecretname` | No | Name of secret containing API token (auto-set by provider) |
450+
| `ai:azureresourcename` | No | Azure resource name (for Azure providers) |
451+
| `ai:azuredeployment` | No | Azure deployment name (for `azure-legacy` provider) |
452+
| `ai:capabilities` | No | Array of supported capabilities: `"tools"`, `"images"`, `"pdfs"` |
453+
| `waveai:cloud` | No | Internal - for Wave Cloud AI configuration only |
454+
| `waveai:premium` | No | Internal - for Wave Cloud AI configuration only |
455+
456+
### AI Capabilities
457+
458+
The `ai:capabilities` field specifies what features the AI mode supports:
459+
460+
- **`tools`** - Enables AI tool usage for file reading/writing, shell integration, and widget interaction
461+
- **`images`** - Allows image attachments in chat (model can view uploaded images)
462+
- **`pdfs`** - Allows PDF file attachments in chat (model can read PDF content)
463+
464+
**Provider-specific behavior:**
465+
- **OpenAI and Google providers**: Capabilities are automatically configured based on the model. You don't need to specify them.
466+
- **OpenRouter, Azure, Azure-Legacy, and Custom providers**: You must manually specify capabilities based on your model's features.
467+
468+
:::warning
469+
If you don't include `"tools"` in the `ai:capabilities` array, the AI model will not be able to interact with your Wave terminal widgets, read/write files, or execute commands. Most AI modes should include `"tools"` for the best Wave experience.
470+
:::
471+
472+
Most models support `tools` and can benefit from it. Vision-capable models should include `images`. Not all models support PDFs, so only include `pdfs` if your model can process them.

docs/docs/waveai.mdx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,32 @@ Supports text files, images, PDFs, and directories. Use `-n` for new chat, `-s`
7474
File system operations require explicit approval. You control all file access.
7575
:::
7676

77+
## Local Models & BYOK
78+
79+
Wave AI supports using your own AI models and API keys:
80+
81+
- **Local Models**: Run AI models locally with [Ollama](https://ollama.ai), [LM Studio](https://lmstudio.ai), [vLLM](https://docs.vllm.ai), and other OpenAI-compatible servers
82+
- **BYOK (Bring Your Own Key)**: Use your own API keys with OpenAI, OpenRouter, Google AI (Gemini), Azure OpenAI, and other cloud providers
83+
- **Multiple Modes**: Configure and switch between multiple AI providers and models
84+
- **Privacy**: Keep your data local or use your preferred cloud provider
85+
86+
See the [**Local Models & BYOK guide**](./waveai-modes.mdx) for complete configuration instructions, examples, and troubleshooting.
87+
7788
## Privacy
7889

90+
**Default Wave AI Service:**
7991
- Messages are proxied through the Wave Cloud AI service (powered by OpenAI's APIs). Please refer to OpenAI's privacy policy for details on how they handle your data.
8092
- Wave does not store your chats, attachments, or use them for training
8193
- Usage counters included in anonymous telemetry
8294
- File access requires explicit approval
8395

96+
**Local Models & BYOK:**
97+
- When using local models, your chat data never leaves your machine
98+
- When using BYOK with cloud providers, requests are sent directly to your chosen provider
99+
- Refer to your provider's privacy policy for details on how they handle your data
100+
84101
:::info Under Active Development
85-
Wave AI is in active beta with included AI credits while we refine the experience. BYOK will be available once we've stabilized core features and gathered feedback on what works best. Share feedback in our [Discord](https://discord.gg/XfvZ334gwU).
102+
Wave AI is in active beta with included AI credits while we refine the experience. Share feedback in our [Discord](https://discord.gg/XfvZ334gwU).
86103

87104
**Coming Soon:**
88105
- **Remote File Access**: Read files on SSH-connected systems

0 commit comments

Comments
 (0)