Rebrand Clawdbot → Moltbot, change hotkey to Ctrl+Alt+Shift+C

- Replace all 'Clawdbot' references with 'Moltbot' in UI strings
- Change global hotkey from Ctrl+Shift+Space to Ctrl+Alt+Shift+C
- Update user-agent to moltbot-windows-tray/1.0.0
- Remove stale build.bat, workflows/, ISSUE_TEMPLATE/ from old repo
This commit is contained in:
Scott Hanselman 2026-01-28 20:45:04 -08:00
parent 85263a7a8a
commit 67fb2a498e
11 changed files with 23 additions and 235 deletions

View File

@ -202,7 +202,7 @@ public class MoltbotGatewayClient : IDisposable
version = "1.0.0",
platform = "windows",
mode = "cli",
displayName = "Clawdbot Windows Tray"
displayName = "Moltbot Windows Tray"
},
role = "operator",
scopes = new[] { "operator.admin", "operator.approvals", "operator.pairing" },
@ -211,7 +211,7 @@ public class MoltbotGatewayClient : IDisposable
permissions = new { },
auth = new { token = _token },
locale = "en-US",
userAgent = "clawdbot-windows-tray/1.0.0"
userAgent = "moltbot-windows-tray/1.0.0"
}
};
await SendRawAsync(JsonSerializer.Serialize(msg));
@ -811,7 +811,7 @@ public class MoltbotGatewayClient : IDisposable
if (lower.Contains("build") || lower.Contains("ci ") ||
lower.Contains("deploy"))
return ("🔨 Build", "build");
return ("🤖 Clawdbot", "info");
return ("🤖 Moltbot", "info");
}
// --- Utility ---

View File

@ -9,16 +9,16 @@ using System.Windows.Forms;
namespace MoltbotTray;
/// <summary>
/// Handles clawdbot:// URI scheme registration and processing.
/// Matches macOS deep link support (clawdbot://agent?message=...)
/// Handles moltbot:// URI scheme registration and processing.
/// Matches macOS deep link support (moltbot://agent?message=...)
/// </summary>
public static class DeepLinkHandler
{
private const string UriScheme = "Moltbot";
private const string FriendlyName = "Clawdbot Agent Command";
private const string FriendlyName = "Moltbot Agent Command";
/// <summary>
/// Registers the clawdbot:// URI scheme in the Windows registry.
/// Registers the moltbot:// URI scheme in the Windows registry.
/// Requires elevation for HKCR, falls back to HKCU.
/// </summary>
public static void RegisterUriScheme()
@ -72,8 +72,8 @@ public static class DeepLinkHandler
}
/// <summary>
/// Processes a clawdbot:// deep link.
/// Supports: clawdbot://agent?message=...&sessionKey=...&channel=...
/// Processes a moltbot:// deep link.
/// Supports: moltbot://agent?message=...&sessionKey=...&channel=...
/// </summary>
public static async Task ProcessDeepLinkAsync(Uri uri, MoltbotGatewayClient client)
{
@ -110,8 +110,8 @@ public static class DeepLinkHandler
{
var preview = message.Length > 100 ? message[..100] + "…" : message;
var result = MessageBox.Show(
$"A deep link wants to send this message to Clawdbot:\n\n\"{preview}\"\n\nAllow?",
"Clawdbot Deep Link",
$"A deep link wants to send this message to Moltbot:\n\n\"{preview}\"\n\nAllow?",
"Moltbot Deep Link",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);

View File

@ -6,7 +6,7 @@ namespace MoltbotTray;
/// <summary>
/// Registers a system-wide hotkey that works even when the app is not focused.
/// Default: Ctrl+Shift+Space to open Quick Send.
/// Default: Ctrl+Alt+Shift+C to open Quick Send.
/// </summary>
public class GlobalHotkey : IDisposable
{
@ -17,9 +17,10 @@ public class GlobalHotkey : IDisposable
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
private const int HotkeyId = 9001;
private const uint MOD_ALT = 0x0001;
private const uint MOD_CONTROL = 0x0002;
private const uint MOD_SHIFT = 0x0004;
private const uint VK_SPACE = 0x20;
private const uint VK_C = 0x43;
private readonly HotkeyWindow _window;
private bool _registered;
@ -35,9 +36,9 @@ public class GlobalHotkey : IDisposable
{
try
{
_registered = RegisterHotKey(_window.Handle, HotkeyId, MOD_CONTROL | MOD_SHIFT, VK_SPACE);
_registered = RegisterHotKey(_window.Handle, HotkeyId, MOD_CONTROL | MOD_ALT | MOD_SHIFT, VK_C);
if (_registered)
Logger.Info("Global hotkey registered: Ctrl+Shift+Space");
Logger.Info("Global hotkey registered: Ctrl+Alt+Shift+C");
else
Logger.Warn("Failed to register global hotkey (may be in use by another app)");
return _registered;

View File

@ -1,45 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**System Information:**
- Windows version: [e.g. Windows 10 21H2, Windows 11 22H2]
- .NET version (if known): [e.g. .NET 10.0.1]
- Clawdbot version: [e.g. 1.2.3]
- Gateway URL: [e.g. ws://localhost:18789 or remote]
**Gateway Information:**
- Is Clawdbot gateway running? [Yes/No]
- Gateway location: [WSL2, remote server, etc.]
- Can you connect to gateway from browser? [Yes/No]
- Gateway logs (if available): [paste relevant logs]
**Additional context**
Add any other context about the problem here.
**Configuration**
- Auto-start enabled: [Yes/No]
- Notifications enabled: [Yes/No]
- First time setup: [Yes/No]
- Custom gateway URL: [Yes/No]

View File

@ -1,32 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Use case**
Describe how this feature would be used and who would benefit from it.
**Implementation ideas**
If you have ideas about how this could be implemented, please share them.
**Additional context**
Add any other context or screenshots about the feature request here.
**Priority**
How important is this feature to you?
- [ ] Nice to have
- [ ] Would be very useful
- [ ] Critical for my workflow

View File

@ -21,7 +21,7 @@ public partial class QuickSendDialog : Form
private void InitializeComponent()
{
// Form properties
Text = "Quick Send — Clawdbot";
Text = "Quick Send — Moltbot";
Size = new Size(500, 220);
StartPosition = FormStartPosition.CenterScreen;
FormBorderStyle = FormBorderStyle.FixedDialog;
@ -34,7 +34,7 @@ public partial class QuickSendDialog : Form
// Label
var label = new Label
{
Text = "Send a message to Clawdbot:",
Text = "Send a message to Moltbot:",
Location = new Point(12, 12),
Size = new Size(460, 20),
Font = new Font("Segoe UI", 9.5F, FontStyle.Regular)

View File

@ -44,7 +44,7 @@ public class StatusDetailForm : Form
private void InitializeComponent()
{
Text = "Clawdbot Status";
Text = "Moltbot Status";
Size = new Size(520, 500);
MinimumSize = new Size(400, 350);
StartPosition = FormStartPosition.CenterScreen;

View File

@ -209,8 +209,8 @@ public class TrayApplication : ApplicationContext
SafeDestroyIcon(oldIcon);
var tooltip = _currentActivity?.Kind != ActivityKind.Idle && !string.IsNullOrEmpty(_currentActivity?.DisplayText)
? $"Clawdbot — {_currentActivity.DisplayText}"
: $"Clawdbot — {status}";
? $"Moltbot — {_currentActivity.DisplayText}"
: $"Moltbot — {status}";
_notifyIcon.Text = tooltip.Length > 63 ? tooltip[..63] : tooltip;
}

View File

@ -9,7 +9,7 @@ using System.Windows.Forms;
namespace MoltbotTray;
/// <summary>
/// Embeds the Clawdbot WebChat UI via WebView2, matching the macOS native chat panel.
/// Embeds the Moltbot WebChat UI via WebView2, matching the macOS native chat panel.
/// </summary>
public class WebChatForm : Form
{
@ -47,7 +47,7 @@ public class WebChatForm : Form
private void InitializeComponent()
{
Text = "Clawdbot Chat";
Text = "Moltbot Chat";
Size = new Size(520, 750);
MinimumSize = new Size(380, 450);
StartPosition = FormStartPosition.CenterScreen;

View File

@ -1,49 +0,0 @@
@echo off
setlocal
echo ===================================
echo Clawdbot Windows Tray - Build
echo ===================================
echo.
:: Detect architecture
if "%PROCESSOR_ARCHITECTURE%"=="ARM64" (
set RID=win-arm64
) else (
set RID=win-x64
)
echo Architecture: %RID%
echo.
:: Build
echo [1/3] Building Debug...
dotnet build -c Debug -r %RID%
if errorlevel 1 goto :error
echo.
echo [2/3] Building Release...
dotnet build -c Release -r %RID%
if errorlevel 1 goto :error
echo.
echo [3/3] Publishing self-contained...
dotnet publish -c Release -r %RID% --self-contained -p:PublishSingleFile=true -o publish
if errorlevel 1 goto :error
echo.
echo ===================================
echo Build complete!
echo Output: publish\MoltbotTray.exe
echo Architecture: %RID%
echo ===================================
goto :end
:error
echo.
echo BUILD FAILED
exit /b 1
:end
endlocal

View File

@ -1,87 +0,0 @@
name: Build and Release
on:
push:
branches: [ main ]
tags: [ 'v*' ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: windows-latest
strategy:
matrix:
rid: [win-x64, win-arm64]
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
- name: Restore dependencies
run: dotnet restore -r ${{ matrix.rid }}
- name: Build Debug
run: dotnet build --no-restore -c Debug -r ${{ matrix.rid }}
- name: Build Release
run: dotnet build --no-restore -c Release -r ${{ matrix.rid }}
- name: Publish Self-Contained
run: dotnet publish -c Release -r ${{ matrix.rid }} --self-contained -p:PublishSingleFile=true -o publish-${{ matrix.rid }}
- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: clawdbot-windows-tray-${{ matrix.rid }}
path: publish-${{ matrix.rid }}/
release:
needs: build
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download x64 artifact
uses: actions/download-artifact@v4
with:
name: clawdbot-windows-tray-win-x64
path: artifacts/win-x64
- name: Download arm64 artifact
uses: actions/download-artifact@v4
with:
name: clawdbot-windows-tray-win-arm64
path: artifacts/win-arm64
- name: Create Release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: |
artifacts/win-x64/MoltbotTray.exe
artifacts/win-arm64/MoltbotTray.exe
body: |
## Clawdbot Windows Tray ${{ github.ref_name }}
### Downloads
- **x64**: `MoltbotTray.exe` (Intel/AMD 64-bit)
- **arm64**: `MoltbotTray.exe` (ARM64 — Windows on ARM)
### Requirements
- Windows 10 version 1903 or later
- [WebView2 Runtime](https://developer.microsoft.com/en-us/microsoft-edge/webview2/) (for embedded chat)
- Clawdbot gateway running on your network
### Quick Start
1. Download the executable for your architecture
2. Run `MoltbotTray.exe`
3. Right-click tray icon → Settings
4. Enter your gateway URL and token