chore: rebrand to Agent Orchestrator + fix pragma busy_timeout crash
Rebrand all user-visible BTerminal references to Agent Orchestrator (window title, product name, identifier, status bar, updater URL, context registration, CLAUDE.md branch reference). Fix critical btmsg/bttask crash: pragma_update uses execute() internally but PRAGMA busy_timeout returns a result row, causing "Execute returned results" error that silently broke all CommsTab message loading. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a313da8892
commit
4fee567dd9
8 changed files with 19 additions and 18 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
# BTerminal — Claude Behavioral Guide
|
# Agent Orchestrator — Claude Behavioral Guide
|
||||||
|
|
||||||
## Workflow
|
## Workflow
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
## Rules
|
## Rules
|
||||||
|
|
||||||
- Do not modify v1 code (`bterminal.py`) unless explicitly asked — it is production-stable.
|
- Do not modify v1 code (`bterminal.py`) unless explicitly asked — it is production-stable.
|
||||||
- v2/v3 work goes on the `v2-mission-control` branch, not master.
|
- v2/v3 work goes on the `dexter_changes` branch (repo: agent-orchestrator), not master.
|
||||||
- v2 architecture decisions must reference `docs/task_plan.md` Decisions Log.
|
- v2 architecture decisions must reference `docs/task_plan.md` Decisions Log.
|
||||||
- v3 architecture decisions must reference `docs/v3-task_plan.md` Decisions Log.
|
- v3 architecture decisions must reference `docs/v3-task_plan.md` Decisions Log.
|
||||||
- When adding new decisions, append to the Decisions Log table with date.
|
- When adding new decisions, append to the Decisions Log table with date.
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>BTerminal</title>
|
<title>Agent Orchestrator</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ fn open_db() -> Result<Connection, String> {
|
||||||
.map_err(|e| format!("Failed to open btmsg.db: {e}"))?;
|
.map_err(|e| format!("Failed to open btmsg.db: {e}"))?;
|
||||||
conn.query_row("PRAGMA journal_mode=WAL", [], |_| Ok(()))
|
conn.query_row("PRAGMA journal_mode=WAL", [], |_| Ok(()))
|
||||||
.map_err(|e| format!("Failed to set WAL mode: {e}"))?;
|
.map_err(|e| format!("Failed to set WAL mode: {e}"))?;
|
||||||
conn.pragma_update(None, "busy_timeout", 5000)
|
conn.query_row("PRAGMA busy_timeout = 5000", [], |_| Ok(()))
|
||||||
.map_err(|e| format!("Failed to set busy_timeout: {e}"))?;
|
.map_err(|e| format!("Failed to set busy_timeout: {e}"))?;
|
||||||
Ok(conn)
|
Ok(conn)
|
||||||
}
|
}
|
||||||
|
|
@ -480,7 +480,7 @@ fn open_db_or_create() -> Result<Connection, String> {
|
||||||
|
|
||||||
conn.query_row("PRAGMA journal_mode=WAL", [], |_| Ok(()))
|
conn.query_row("PRAGMA journal_mode=WAL", [], |_| Ok(()))
|
||||||
.map_err(|e| format!("Failed to set WAL mode: {e}"))?;
|
.map_err(|e| format!("Failed to set WAL mode: {e}"))?;
|
||||||
conn.pragma_update(None, "busy_timeout", 5000)
|
conn.query_row("PRAGMA busy_timeout = 5000", [], |_| Ok(()))
|
||||||
.map_err(|e| format!("Failed to set busy_timeout: {e}"))?;
|
.map_err(|e| format!("Failed to set busy_timeout: {e}"))?;
|
||||||
|
|
||||||
// Create tables if they don't exist (same schema as Python btmsg CLI)
|
// Create tables if they don't exist (same schema as Python btmsg CLI)
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ fn open_db() -> Result<Connection, String> {
|
||||||
.map_err(|e| format!("Failed to open btmsg.db: {e}"))?;
|
.map_err(|e| format!("Failed to open btmsg.db: {e}"))?;
|
||||||
conn.query_row("PRAGMA journal_mode=WAL", [], |_| Ok(()))
|
conn.query_row("PRAGMA journal_mode=WAL", [], |_| Ok(()))
|
||||||
.map_err(|e| format!("Failed to set WAL mode: {e}"))?;
|
.map_err(|e| format!("Failed to set WAL mode: {e}"))?;
|
||||||
conn.pragma_update(None, "busy_timeout", 5000)
|
conn.query_row("PRAGMA busy_timeout = 5000", [], |_| Ok(()))
|
||||||
.map_err(|e| format!("Failed to set busy_timeout: {e}"))?;
|
.map_err(|e| format!("Failed to set busy_timeout: {e}"))?;
|
||||||
|
|
||||||
// Migration: add version column if missing
|
// Migration: add version column if missing
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "bterminal",
|
"productName": "agent-orchestrator",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"identifier": "com.dexterfromlab.bterminal",
|
"identifier": "com.dexterfromlab.agent-orchestrator",
|
||||||
"build": {
|
"build": {
|
||||||
"frontendDist": "../dist",
|
"frontendDist": "../dist",
|
||||||
"devUrl": "http://localhost:9700",
|
"devUrl": "http://localhost:9700",
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
"app": {
|
"app": {
|
||||||
"windows": [
|
"windows": [
|
||||||
{
|
{
|
||||||
"title": "BTerminal",
|
"title": "Agent Orchestrator",
|
||||||
"width": 1920,
|
"width": 1920,
|
||||||
"height": 1080,
|
"height": 1080,
|
||||||
"resizable": true,
|
"resizable": true,
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
"plugins": {
|
"plugins": {
|
||||||
"updater": {
|
"updater": {
|
||||||
"endpoints": [
|
"endpoints": [
|
||||||
"https://github.com/DexterFromLab/BTerminal/releases/latest/download/latest.json"
|
"https://github.com/DexterFromLab/agent-orchestrator/releases/latest/download/latest.json"
|
||||||
],
|
],
|
||||||
"dialog": true,
|
"dialog": true,
|
||||||
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEJCRkZEMERDMTUwMzY5MjIKUldRaWFRTVYzTkQvdTYwRDh6YStaSE9rWUZYYkRGd3UvVUcydE1IQVdTM29uNTRPTlpjQmFqVFEK"
|
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEJCRkZEMERDMTUwMzY5MjIKUldRaWFRTVYzTkQvdTYwRDh6YStaSE9rWUZYYkRGd3UvVUcydE1IQVdTM29uNTRPTlpjQmFqVFEK"
|
||||||
|
|
@ -50,7 +50,7 @@
|
||||||
],
|
],
|
||||||
"category": "DeveloperTool",
|
"category": "DeveloperTool",
|
||||||
"shortDescription": "Multi-session Claude agent dashboard",
|
"shortDescription": "Multi-session Claude agent dashboard",
|
||||||
"longDescription": "BTerminal is a terminal emulator with integrated Claude AI agent sessions, SSH management, and a tiling pane layout. Built with Tauri, Svelte 5, and xterm.js.",
|
"longDescription": "Agent Orchestrator is a multi-project agent dashboard with integrated Claude AI sessions, SSH management, and multi-agent orchestration. Built with Tauri, Svelte 5, and xterm.js.",
|
||||||
"linux": {
|
"linux": {
|
||||||
"deb": {
|
"deb": {
|
||||||
"depends": [
|
"depends": [
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
loading = true;
|
loading = true;
|
||||||
try {
|
try {
|
||||||
// Register project if not already (INSERT OR IGNORE)
|
// Register project if not already (INSERT OR IGNORE)
|
||||||
await ctxRegisterProject(projectName, `BTerminal project: ${projectName}`, projectCwd);
|
await ctxRegisterProject(projectName, `Agent Orchestrator project: ${projectName}`, projectCwd);
|
||||||
|
|
||||||
const [ctx, shared, sums] = await Promise.all([
|
const [ctx, shared, sums] = await Promise.all([
|
||||||
ctxGetContext(projectName),
|
ctxGetContext(projectName),
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@
|
||||||
</button>
|
</button>
|
||||||
<span class="sep"></span>
|
<span class="sep"></span>
|
||||||
{/if}
|
{/if}
|
||||||
<span class="item version">BTerminal v3</span>
|
<span class="item version">Agent Orchestrator v3</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,8 +54,8 @@
|
||||||
try {
|
try {
|
||||||
agents = await getGroupAgents(groupId);
|
agents = await getGroupAgents(groupId);
|
||||||
channels = await getChannels(groupId);
|
channels = await getChannels(groupId);
|
||||||
} catch {
|
} catch (e) {
|
||||||
// btmsg.db might not exist
|
console.error('[CommsTab] loadData failed:', e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -70,8 +70,8 @@
|
||||||
} else if (currentView.type === 'channel') {
|
} else if (currentView.type === 'channel') {
|
||||||
channelMessages = await getChannelMessages(currentView.channelId, 100);
|
channelMessages = await getChannelMessages(currentView.channelId, 100);
|
||||||
}
|
}
|
||||||
} catch {
|
} catch (e) {
|
||||||
// silently fail
|
console.error('[CommsTab] loadMessages failed:', e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -91,7 +91,8 @@
|
||||||
$effect(() => {
|
$effect(() => {
|
||||||
void groupId;
|
void groupId;
|
||||||
if (groupId) {
|
if (groupId) {
|
||||||
ensureAdmin(groupId).catch(() => {});
|
console.log('[CommsTab] groupId:', groupId);
|
||||||
|
ensureAdmin(groupId).catch((e) => console.error('[CommsTab] ensureAdmin failed:', e));
|
||||||
loadData();
|
loadData();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue