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:
parent
85263a7a8a
commit
67fb2a498e
@ -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 ---
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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]
|
||||
@ -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
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user