{new Date(error.timestamp).toLocaleTimeString()}
diff --git a/src/renderer/global.d.ts b/src/renderer/global.d.ts
index 0499684c10..3967c7604c 100644
--- a/src/renderer/global.d.ts
+++ b/src/renderer/global.d.ts
@@ -441,6 +441,7 @@ interface MaestroAPI {
agentId: string;
sessionId?: string;
timestamp: number;
+ rateLimitResetAt?: number;
raw?: {
exitCode?: number;
stderr?: string;
diff --git a/src/renderer/hooks/agent/useAgentListeners.ts b/src/renderer/hooks/agent/useAgentListeners.ts
index 1bd66c73fa..ab9e8dee58 100644
--- a/src/renderer/hooks/agent/useAgentListeners.ts
+++ b/src/renderer/hooks/agent/useAgentListeners.ts
@@ -1122,6 +1122,7 @@ export function useAgentListeners(deps: UseAgentListenersDeps): void {
agentId: error.agentId,
sessionId: error.sessionId,
timestamp: error.timestamp,
+ rateLimitResetAt: error.rateLimitResetAt,
raw: error.raw,
parsedJson: error.parsedJson,
};
diff --git a/src/shared/types.ts b/src/shared/types.ts
index 7de98589fb..550671b4a5 100644
--- a/src/shared/types.ts
+++ b/src/shared/types.ts
@@ -193,6 +193,9 @@ export interface AgentError {
/** Timestamp when the error occurred */
timestamp: number;
+ /** Epoch ms when rate limit resets (parsed from error text, e.g. "resets 3pm") */
+ rateLimitResetAt?: number;
+
/** Original error data for debugging (stderr, exit code, etc.) */
raw?: {
exitCode?: number;
From cc95b66d7cabf67e9cf97f909cb0c07fff8f5da6 Mon Sep 17 00:00:00 2001
From: ProaFilippi
Date: Mon, 30 Mar 2026 23:57:37 -0500
Subject: [PATCH 02/23] fix(agentStore): implement robust auto-retry loop for
rate-limits
---
src/renderer/stores/agentStore.ts | 81 +++++++++++++++++++++++++++++++
1 file changed, 81 insertions(+)
diff --git a/src/renderer/stores/agentStore.ts b/src/renderer/stores/agentStore.ts
index b651724264..605354bba2 100644
--- a/src/renderer/stores/agentStore.ts
+++ b/src/renderer/stores/agentStore.ts
@@ -30,6 +30,7 @@ import { createTab, getActiveTab } from '../utils/tabHelpers';
import { getStdinFlags } from '../utils/spawnHelpers';
import { generateId } from '../utils/ids';
import { useSessionStore } from './sessionStore';
+import { useSettingsStore } from './settingsStore';
import { DEFAULT_IMAGE_ONLY_PROMPT } from '../hooks/input/useInputProcessing';
import { maestroSystemPrompt } from '../../prompts';
import { substituteTemplateVariables } from '../utils/templateVariables';
@@ -204,7 +205,87 @@ export const useAgentStore = create()((set, get) => ({
},
retryAfterError: (sessionId) => {
+ const session = getSession(sessionId);
+ if (!session) return;
+
+ // 1. Clear the error state (sets session to idle)
get().clearAgentError(sessionId);
+
+ // 2. Find the target tab so we can grab the last user message
+ const targetTabId = session.agentErrorTabId;
+ const targetTab = targetTabId
+ ? session.aiTabs.find((tab) => tab.id === targetTabId)
+ : getActiveTab(session);
+
+ if (!targetTab) return;
+
+ // 3. Find the last user string in the logs
+ const logs = targetTab.logs || [];
+ const lastUserLog = [...logs].reverse().find((l) => l.source === 'user');
+
+ if (!lastUserLog || !lastUserLog.text) {
+ console.warn('[retryAfterError] No user message found to retry.');
+ return;
+ }
+
+ // 4. Re-construct a QueuedItem 'message' to re-dispatch.
+ // By sending it as a 'message' (even if it originally was a command),
+ // we avoid double-substituting template variables, as the text in the log
+ // is already the final rendered prompt. Also, processQueuedItem does not
+ // push duplicate logs for 'message' types.
+ const queuedItem: QueuedItem = {
+ id: generateId(),
+ timestamp: Date.now(),
+ tabId: targetTab.id,
+ type: 'message',
+ text: lastUserLog.text,
+ images: lastUserLog.images,
+ tabName:
+ targetTab.name ||
+ (targetTab.agentSessionId ? targetTab.agentSessionId.split('-')[0].toUpperCase() : 'New'),
+ readOnlyMode: targetTab.readOnlyMode,
+ };
+
+ // 5. Gather required deps (we only strictly need conductorProfile for plain messages)
+ const settings = useSettingsStore.getState();
+ const deps: ProcessQueuedItemDeps = {
+ conductorProfile: settings.conductorProfile,
+ customAICommands: settings.customAICommands,
+ speckitCommands: [],
+ openspecCommands: [],
+ bmadCommands: [],
+ };
+
+ // 6. Reset session to busy/thinking state so the UI reflects the retry
+ useSessionStore.getState().setSessions((prev) =>
+ prev.map((s) => {
+ if (s.id !== sessionId) return s;
+ const updatedAiTabs = s.aiTabs?.map((tab) =>
+ tab.id === targetTab.id
+ ? {
+ ...tab,
+ state: 'busy' as const,
+ thinkingStartTime: Date.now(),
+ }
+ : tab
+ );
+ return {
+ ...s,
+ state: 'busy' as SessionState,
+ busySource: 'ai',
+ aiTabs: updatedAiTabs,
+ };
+ })
+ );
+
+ // 7. Dispatch to agent!
+ setTimeout(() => {
+ get()
+ .processQueuedItem(sessionId, queuedItem, deps)
+ .catch((err) => {
+ console.error('[retryAfterError] Failed to retry item:', err);
+ });
+ }, 0);
},
restartAgentAfterError: async (sessionId) => {
From 6f419e55992ca4f9faa692ed069c38a3c2d05f8b Mon Sep 17 00:00:00 2001
From: ProaFilippi
Date: Tue, 31 Mar 2026 08:10:17 -0500
Subject: [PATCH 03/23] fix: address CodeRabbit feedback and migrate rate-limit
settings to per-agent config
---
.../main/parsers/rate-limit-event.test.ts | 4 +-
src/main/agents/definitions.ts | 17 ++++++
src/main/parsers/claude-output-parser.ts | 9 ++-
src/main/parsers/error-patterns.ts | 57 +++++++++----------
src/renderer/components/AgentErrorModal.tsx | 46 +++++++++++++--
src/renderer/stores/agentStore.ts | 8 +--
6 files changed, 100 insertions(+), 41 deletions(-)
diff --git a/src/__tests__/main/parsers/rate-limit-event.test.ts b/src/__tests__/main/parsers/rate-limit-event.test.ts
index fee43ae541..014d4ac65a 100644
--- a/src/__tests__/main/parsers/rate-limit-event.test.ts
+++ b/src/__tests__/main/parsers/rate-limit-event.test.ts
@@ -82,6 +82,8 @@ describe('rate_limit_event caching', () => {
expect(agentError!.type).toBe('rate_limited');
// Should have a reset time from content text parsing
expect(agentError!.rateLimitResetAt).toBeDefined();
- expect(agentError!.rateLimitResetAt).toBeGreaterThan(Date.now() - 86400000); // within last 24h
+ const now = Date.now();
+ expect(agentError!.rateLimitResetAt).toBeGreaterThan(now);
+ expect(agentError!.rateLimitResetAt).toBeLessThan(now + 86400000);
});
});
diff --git a/src/main/agents/definitions.ts b/src/main/agents/definitions.ts
index 8ee7aee686..77abc8f78d 100644
--- a/src/main/agents/definitions.ts
+++ b/src/main/agents/definitions.ts
@@ -139,6 +139,23 @@ export const AGENT_DEFINITIONS: AgentDefinition[] = [
resumeArgs: (sessionId: string) => ['--resume', sessionId], // Resume with session ID
readOnlyArgs: ['--permission-mode', 'plan'], // Read-only/plan mode
readOnlyCliEnforced: true, // CLI enforces read-only via --permission-mode plan
+ configOptions: [
+ {
+ key: 'rateLimitAutoRetry',
+ type: 'checkbox' as const,
+ label: 'Auto-retry on Rate Limit',
+ description: 'Automatically pause and retry when encountering a Claude Code rate limit.',
+ default: true,
+ },
+ {
+ key: 'rateLimitFallbackHours',
+ type: 'number' as const,
+ label: 'Rate Limit Fallback (Hours)',
+ description:
+ 'Wait time to use if the exact rate limit reset time cannot be parsed (leave 0 to disable fallback).',
+ default: 2,
+ },
+ ],
},
{
id: 'codex',
diff --git a/src/main/parsers/claude-output-parser.ts b/src/main/parsers/claude-output-parser.ts
index 19139efbc4..acf4f12e3b 100644
--- a/src/main/parsers/claude-output-parser.ts
+++ b/src/main/parsers/claude-output-parser.ts
@@ -392,7 +392,14 @@ export class ClaudeOutputParser implements AgentOutputParser {
// For rate-limit errors, try to parse the reset time
if (match.type === 'rate_limited') {
- const resetAt = parseRateLimitResetTime(errorText);
+ let resetAt: number | null = null;
+ if (this.lastRateLimitResetAt && this.lastRateLimitResetAt > Date.now()) {
+ resetAt = this.lastRateLimitResetAt;
+ this.lastRateLimitResetAt = null;
+ }
+ if (!resetAt) {
+ resetAt = parseRateLimitResetTime(errorText);
+ }
if (resetAt) {
mixedError.rateLimitResetAt = resetAt;
}
diff --git a/src/main/parsers/error-patterns.ts b/src/main/parsers/error-patterns.ts
index 582e2b08e8..28356484a1 100644
--- a/src/main/parsers/error-patterns.ts
+++ b/src/main/parsers/error-patterns.ts
@@ -1074,47 +1074,46 @@ export function parseRateLimitResetTime(text: string): number | null {
const parts = formatter.formatToParts(now);
const getPart = (type: string) => parseInt(parts.find((p) => p.type === type)?.value || '0', 10);
- const tzYear = getPart('year');
- const tzMonth = getPart('month');
- const tzDay = getPart('day');
const tzHour = getPart('hour');
const tzMinute = getPart('minute');
- const tzSecond = getPart('second');
// Compute the target date in the target timezone.
// Start with today; if that time has already passed, use tomorrow.
- let targetDay = tzDay;
- let targetMonth = tzMonth;
- let targetYear = tzYear;
-
+ let targetDate = now;
const nowMinutes = tzHour * 60 + tzMinute;
const resetMinutes = hours * 60 + minutes;
if (resetMinutes <= nowMinutes) {
// Reset time already passed today — advance to tomorrow
- const tomorrow = new Date(now.getTime() + 86400000);
- const tParts = formatter.formatToParts(tomorrow);
- const tGetPart = (type: string) =>
- parseInt(tParts.find((p) => p.type === type)?.value || '0', 10);
- targetDay = tGetPart('day');
- targetMonth = tGetPart('month');
- targetYear = tGetPart('year');
+ targetDate = new Date(now.getTime() + 86400000);
}
- // Build an ISO-like string for the target time and compute epoch via brute-force offset.
- // We know the wall-clock offset from UTC by comparing now.getTime() with the tz wall clock.
- // Approach: use a reference point to compute the UTC offset of the timezone at 'now'.
- const utcNow = now.getTime();
- // Wall-clock "now" as pseudo-UTC ms (treating tz wall-clock as if it were UTC)
- const wallNowMs = Date.UTC(tzYear, tzMonth - 1, tzDay, tzHour, tzMinute, tzSecond);
- // Offset = wallNowMs - utcNow (positive = timezone is ahead of UTC)
- const tzOffsetMs = wallNowMs - utcNow;
-
- // Compute target wall-clock as pseudo-UTC ms
+ const targetParts = formatter.formatToParts(targetDate);
+ const targetGetPart = (type: string) =>
+ parseInt(targetParts.find((p) => p.type === type)?.value || '0', 10);
+
+ const targetDay = targetGetPart('day');
+ const targetMonth = targetGetPart('month');
+ const targetYear = targetGetPart('year');
+ const targetHour = targetGetPart('hour');
+ const targetMinute = targetGetPart('minute');
+ const targetSecond = targetGetPart('second');
+
+ // Find the UTC offset exactly at the target instant
+ const targetUtcMs = targetDate.getTime();
+ const targetWallMs = Date.UTC(
+ targetYear,
+ targetMonth - 1,
+ targetDay,
+ targetHour,
+ targetMinute,
+ targetSecond
+ );
+ const targetTzOffsetMs = targetWallMs - targetUtcMs;
+
+ // Build the exact wall-clock reset target as pseudo-UTC
const wallTargetMs = Date.UTC(targetYear, targetMonth - 1, targetDay, hours, minutes, 0);
- // Convert back to real UTC by subtracting the offset
- const targetUtcMs = wallTargetMs - tzOffsetMs;
-
- return targetUtcMs;
+ // Revert the offset to get real UTC
+ return wallTargetMs - targetTzOffsetMs;
}
diff --git a/src/renderer/components/AgentErrorModal.tsx b/src/renderer/components/AgentErrorModal.tsx
index b01a51a9bf..6471e553cd 100644
--- a/src/renderer/components/AgentErrorModal.tsx
+++ b/src/renderer/components/AgentErrorModal.tsx
@@ -230,19 +230,53 @@ export function AgentErrorModal({
}
}, [retryAction]);
- // For rate-limited errors: use parsed reset time if available, otherwise default to 60s
- const DEFAULT_RATE_LIMIT_WAIT_MS = 2 * 60 * 60_000; // 2 hours
+ const [autoRetrySettings, setAutoRetrySettings] = useState<{
+ enabled: boolean;
+ fallbackHours: number;
+ } | null>(null);
+
+ useEffect(() => {
+ if (error.type === 'rate_limited') {
+ window.maestro.agents
+ .getConfig(error.agentId)
+ .then((config) => {
+ if (!config) {
+ setAutoRetrySettings({ enabled: true, fallbackHours: 2 });
+ return;
+ }
+
+ setAutoRetrySettings({
+ enabled: config.rateLimitAutoRetry ?? true,
+ fallbackHours: config.rateLimitFallbackHours ?? 2,
+ });
+ })
+ .catch((err) => {
+ console.error('Failed to load agent config for error modal:', err);
+ setAutoRetrySettings({ enabled: true, fallbackHours: 2 });
+ });
+ }
+ }, [error.type, error.agentId]);
+
+ // For rate-limited errors: use parsed reset time if available, otherwise use configured fallback
const rateLimitResetAt = useMemo(() => {
- if (error.type !== 'rate_limited' || !retryAction) return null;
+ if (error.type !== 'rate_limited' || !retryAction || !autoRetrySettings) return null;
+
+ // If auto-retry is explicitly disabled by the user, don't show countdown or auto-retry
+ if (!autoRetrySettings.enabled) return null;
+ // Exact parsed reset time is always preferred
if (error.rateLimitResetAt && error.rateLimitResetAt > Date.now()) {
return error.rateLimitResetAt;
}
- // Fallback: 60 seconds from when the error occurred
- const fallback = error.timestamp + DEFAULT_RATE_LIMIT_WAIT_MS;
+ // If no fallback is configured or available, don't show countdown
+ if (autoRetrySettings.fallbackHours <= 0) return null;
+
+ // Configure fallback using the user's preferred wait time
+ const fallbackWaitMs = autoRetrySettings.fallbackHours * 60 * 60_000;
+ const fallback = error.timestamp + fallbackWaitMs;
return fallback > Date.now() ? fallback : null;
- }, [error.type, error.rateLimitResetAt, error.timestamp, retryAction]);
+ }, [error.type, error.rateLimitResetAt, error.timestamp, retryAction, autoRetrySettings]);
const showCountdown = rateLimitResetAt !== null;
diff --git a/src/renderer/stores/agentStore.ts b/src/renderer/stores/agentStore.ts
index 605354bba2..8d9b8f0744 100644
--- a/src/renderer/stores/agentStore.ts
+++ b/src/renderer/stores/agentStore.ts
@@ -208,10 +208,7 @@ export const useAgentStore = create()((set, get) => ({
const session = getSession(sessionId);
if (!session) return;
- // 1. Clear the error state (sets session to idle)
- get().clearAgentError(sessionId);
-
- // 2. Find the target tab so we can grab the last user message
+ // 1. Find the target tab so we can grab the last user message
const targetTabId = session.agentErrorTabId;
const targetTab = targetTabId
? session.aiTabs.find((tab) => tab.id === targetTabId)
@@ -219,6 +216,9 @@ export const useAgentStore = create()((set, get) => ({
if (!targetTab) return;
+ // 2. Clear the error state (sets session to idle)
+ get().clearAgentError(sessionId);
+
// 3. Find the last user string in the logs
const logs = targetTab.logs || [];
const lastUserLog = [...logs].reverse().find((l) => l.source === 'user');
From 74ea8a8b796bdd82e83da7601348cfb469460996 Mon Sep 17 00:00:00 2001
From: Pedram Amini
Date: Tue, 7 Apr 2026 12:01:37 -0500
Subject: [PATCH 04/23] Added star history
---
README.md | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/README.md b/README.md
index 0463ec2a57..5ce1574d13 100644
--- a/README.md
+++ b/README.md
@@ -181,3 +181,13 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, architecture detai
## License
[AGPL-3.0 License](LICENSE)
+
+## Star History
+
+
+
+
+
+
+
+
From 6ebe46cab296b1c6767bc40a497be336dd526ae8 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
Date: Wed, 8 Apr 2026 04:56:32 +0000
Subject: [PATCH 05/23] docs: sync release notes for v0.16.8-RC
---
docs/releases.md | 494 +++++++++++++++++++++++------------------------
1 file changed, 240 insertions(+), 254 deletions(-)
diff --git a/docs/releases.md b/docs/releases.md
index 36a1f457e7..3b467bc158 100644
--- a/docs/releases.md
+++ b/docs/releases.md
@@ -17,32 +17,32 @@ Maestro can update itself automatically! This feature was introduced in **v0.8.7
**Latest: v0.15.3** | Released April 5, 2026
-# Major 0.15.x Additions
-
-🎶 **Maestro Symphony** — Contribute to open source with AI assistance! Browse curated issues from projects with the `runmaestro.ai` label, clone repos with one click, and automatically process the relevant Auto Run playbooks. Track your contributions, streaks, and stats. You're contributing CPU and tokens towards your favorite open source projects and features.
-
-🎬 **Director's Notes** — Aggregates history across all agents into a unified timeline with search, filters, and an activity graph. Includes an AI Overview tab that generates a structured synopsis of recent work. Off by default, gated behind a new "Encore Features" panel under settings. This is a precursor to an eventual plugin system, allowing for extensions and customizations without bloating the core app.
-
-🏷️ **Conductor Profile** — Available under Settings > General. Provide a short description on how Maestro agents should interface with you.
-
-🧠 **Three-State Thinking Toggle** — The thinking toggle now cycles through three modes: off, on, and sticky. Sticky mode keeps thinking content visible after the response completes. Cycle with CMD/CTRL+SHIFT+K.
-
-🤖 **Factory.ai Droid Support** — Added support for the [Factory.ai](https://factory.ai/product/cli) droid agent. Full session management and output parsing integration.
-
-## Changes in v0.15.3
-
-- **CLI settings management:** Full `maestro-cli settings` command suite — list, get, set, and reset any Maestro setting from the command line. Includes per-agent configuration (custom paths, args, env vars, model overrides). Supports category filtering, verbose descriptions, and machine-readable JSON output for scripting
-- **Live settings reload:** Settings changes made via the CLI are automatically detected by the running desktop app — no restart required
-- **Plan-Mode toggle:** Claude Code and OpenCode agents now show "Plan-Mode" instead of "Read-Only" for the read-only toggle, matching their native terminology
-- **Solarized Dark theme:** New Solarized Dark color theme with tuned contrast for tags, code blocks, and pill labels
-- **Files pane icon theme:** Choose between default and rich icon themes in the files pane — rich theme adds colorful, language-specific icons for 70+ file types and folder categories. Toggle under Settings > Display
-- **Persistent web link:** The web/mobile interface link now persists across app restarts — no need to re-enable it each session
-- **OpenCode v1.2+ session support:** Automatically reads OpenCode's new SQLite session storage format alongside the legacy JSONL format
-- **Group chat @mentions:** Use `@agent-name` syntax in the prompt composer to direct messages to specific agents in group chat
-- **Group chat over SSH:** Group chat synthesis and moderation now run correctly on SSH remote agents instead of always spawning locally
-- **Group chat participant management:** Remove button on participant cards lets you remove stale or unwanted participants from a group chat
-- **Batch resume/abort:** New controls in the right panel for resuming or aborting batch operations
-- **Default worktree directory:** Worktree configuration now defaults to the parent of the agent's working directory instead of blank
+# Major 0.15.x Additions
+
+🎶 **Maestro Symphony** — Contribute to open source with AI assistance! Browse curated issues from projects with the `runmaestro.ai` label, clone repos with one click, and automatically process the relevant Auto Run playbooks. Track your contributions, streaks, and stats. You're contributing CPU and tokens towards your favorite open source projects and features.
+
+🎬 **Director's Notes** — Aggregates history across all agents into a unified timeline with search, filters, and an activity graph. Includes an AI Overview tab that generates a structured synopsis of recent work. Off by default, gated behind a new "Encore Features" panel under settings. This is a precursor to an eventual plugin system, allowing for extensions and customizations without bloating the core app.
+
+🏷️ **Conductor Profile** — Available under Settings > General. Provide a short description on how Maestro agents should interface with you.
+
+🧠 **Three-State Thinking Toggle** — The thinking toggle now cycles through three modes: off, on, and sticky. Sticky mode keeps thinking content visible after the response completes. Cycle with CMD/CTRL+SHIFT+K.
+
+🤖 **Factory.ai Droid Support** — Added support for the [Factory.ai](https://factory.ai/product/cli) droid agent. Full session management and output parsing integration.
+
+## Changes in v0.15.3
+
+- **CLI settings management:** Full `maestro-cli settings` command suite — list, get, set, and reset any Maestro setting from the command line. Includes per-agent configuration (custom paths, args, env vars, model overrides). Supports category filtering, verbose descriptions, and machine-readable JSON output for scripting
+- **Live settings reload:** Settings changes made via the CLI are automatically detected by the running desktop app — no restart required
+- **Plan-Mode toggle:** Claude Code and OpenCode agents now show "Plan-Mode" instead of "Read-Only" for the read-only toggle, matching their native terminology
+- **Solarized Dark theme:** New Solarized Dark color theme with tuned contrast for tags, code blocks, and pill labels
+- **Files pane icon theme:** Choose between default and rich icon themes in the files pane — rich theme adds colorful, language-specific icons for 70+ file types and folder categories. Toggle under Settings > Display
+- **Persistent web link:** The web/mobile interface link now persists across app restarts — no need to re-enable it each session
+- **OpenCode v1.2+ session support:** Automatically reads OpenCode's new SQLite session storage format alongside the legacy JSONL format
+- **Group chat @mentions:** Use `@agent-name` syntax in the prompt composer to direct messages to specific agents in group chat
+- **Group chat over SSH:** Group chat synthesis and moderation now run correctly on SSH remote agents instead of always spawning locally
+- **Group chat participant management:** Remove button on participant cards lets you remove stale or unwanted participants from a group chat
+- **Batch resume/abort:** New controls in the right panel for resuming or aborting batch operations
+- **Default worktree directory:** Worktree configuration now defaults to the parent of the agent's working directory instead of blank
- **Drawfinity in Symphony:** Added Drawfinity to the Symphony project registry
### Previous Releases in this Series
@@ -56,41 +56,41 @@ Maestro can update itself automatically! This feature was introduced in **v0.8.7
**Latest: v0.14.5** | Released January 24, 2026
-Changes in this point release include:
-
-- Desktop app performance improvements (more to come on this, we want Maestro blazing fast) 🐌
-- Added local manifest feature for custom playbooks 📖
-- Agents are now inherently aware of your activity history as seen in the history panel 📜 (this is built-in cross context memory!)
-- Added markdown rendering support for AI responses in mobile view 📱
-- Bugfix in tracking costs from JSONL files that were aged out 🏦
-- Added BlueSky social media handle for leaderboard 🦋
-- Added options to disable GPU rendering and confetti 🎊
-- Better handling of large files in preview 🗄️
-- Bug fix in Claude context calculation 🧮
-- Addressed bug in OpenSpec version reporting 🐛
-
-The major contributions to 0.14.x remain:
-
-🗄️ Document Graphs. Launch from file preview or from the FIle tree panel. Explore relationships between Markdown documents that contain links between documents and to URLs.
-
-📶 SSH support for agents. Manage a remote agent with feature parity over SSH. Includes support for Git and File tree panels. Manage agents on remote systems or in containers. This even works for Group Chat, which is rad as hell.
-
-🧙♂️ Added an in-tab wizard for generating Auto Run Playbooks via `/wizard` or a new button in the Auto Run panel.
-
-# Smaller Changes in 014.x
-
-- Improved User Dashboard, available from hamburger menu, command palette or hotkey 🎛️
-- Leaderboard tracking now works across multiple systems and syncs level from cloud 🏆
-- Agent duplication. Pro tip: Consider a group of unused "Template" agents ✌️
-- New setting to prevent system from going to sleep while agents are active 🛏️
-- The tab menu has a new "Publish as GitHub Gist" option 📝
-- The tab menu has options to move the tab to the first or last position 🔀
-- [Maestro-Playbooks](https://github.com/pedramamini/Maestro-Playbooks) can now contain non-markdown assets 📙
-- Improved default shell detection 🐚
-- Added logic to prevent overlapping TTS notifications 💬
-- Added "Toggle Bookmark" shortcut (CTRL/CMD+SHIFT+B) ⌨️
-- Gist publishing now shows previous URLs with copy button 📋
-
+Changes in this point release include:
+
+- Desktop app performance improvements (more to come on this, we want Maestro blazing fast) 🐌
+- Added local manifest feature for custom playbooks 📖
+- Agents are now inherently aware of your activity history as seen in the history panel 📜 (this is built-in cross context memory!)
+- Added markdown rendering support for AI responses in mobile view 📱
+- Bugfix in tracking costs from JSONL files that were aged out 🏦
+- Added BlueSky social media handle for leaderboard 🦋
+- Added options to disable GPU rendering and confetti 🎊
+- Better handling of large files in preview 🗄️
+- Bug fix in Claude context calculation 🧮
+- Addressed bug in OpenSpec version reporting 🐛
+
+The major contributions to 0.14.x remain:
+
+🗄️ Document Graphs. Launch from file preview or from the FIle tree panel. Explore relationships between Markdown documents that contain links between documents and to URLs.
+
+📶 SSH support for agents. Manage a remote agent with feature parity over SSH. Includes support for Git and File tree panels. Manage agents on remote systems or in containers. This even works for Group Chat, which is rad as hell.
+
+🧙♂️ Added an in-tab wizard for generating Auto Run Playbooks via `/wizard` or a new button in the Auto Run panel.
+
+# Smaller Changes in 014.x
+
+- Improved User Dashboard, available from hamburger menu, command palette or hotkey 🎛️
+- Leaderboard tracking now works across multiple systems and syncs level from cloud 🏆
+- Agent duplication. Pro tip: Consider a group of unused "Template" agents ✌️
+- New setting to prevent system from going to sleep while agents are active 🛏️
+- The tab menu has a new "Publish as GitHub Gist" option 📝
+- The tab menu has options to move the tab to the first or last position 🔀
+- [Maestro-Playbooks](https://github.com/pedramamini/Maestro-Playbooks) can now contain non-markdown assets 📙
+- Improved default shell detection 🐚
+- Added logic to prevent overlapping TTS notifications 💬
+- Added "Toggle Bookmark" shortcut (CTRL/CMD+SHIFT+B) ⌨️
+- Gist publishing now shows previous URLs with copy button 📋
+
Thanks for the contributions: @t1mmen @aejfager @Crumbgrabber @whglaser @b3nw @deandebeer @shadown @breki @charles-dyfis-net @ronaldeddings @jlengrand @ksylvan
### Previous Releases in this Series
@@ -109,22 +109,20 @@ Thanks for the contributions: @t1mmen @aejfager @Crumbgrabber @whglaser @b3nw @d
### Changes
-- TAKE TWO! Fixed Linux ARM64 build architecture contamination issues 🏗️
-
-### v0.13.1 Changes
-
-- Fixed Linux ARM64 build architecture contamination issues 🏗️
-- Enhanced error handling for Auto Run batch processing 🚨
-
-### v0.13.0 Changes
-
-- Added a global usage dashboard, data collection begins with this install 🎛️
-- Added a Playbook Exchange for downloading pre-defined Auto Run playbooks from [Maestro-Playbooks](https://github.com/pedramamini/Maestro-Playbooks) 📕
-- Bundled OpenSpec commands for structured change proposals 📝
-- Added pre-release channel support for beta/RC updates 🧪
-- Implemented global hands-on time tracking across sessions ⏱️
-- Added new keyboard shortcut for agent settings (Opt+Cmd+, | Ctrl+Alt+,) ⌨️
-- Added directory size calculation with file/folder counts in file explorer 📊
+- TAKE TWO! Fixed Linux ARM64 build architecture contamination issues 🏗️
+
+### v0.13.1 Changes
+- Fixed Linux ARM64 build architecture contamination issues 🏗️
+- Enhanced error handling for Auto Run batch processing 🚨
+
+### v0.13.0 Changes
+- Added a global usage dashboard, data collection begins with this install 🎛️
+- Added a Playbook Exchange for downloading pre-defined Auto Run playbooks from [Maestro-Playbooks](https://github.com/pedramamini/Maestro-Playbooks) 📕
+- Bundled OpenSpec commands for structured change proposals 📝
+- Added pre-release channel support for beta/RC updates 🧪
+- Implemented global hands-on time tracking across sessions ⏱️
+- Added new keyboard shortcut for agent settings (Opt+Cmd+, | Ctrl+Alt+,) ⌨️
+- Added directory size calculation with file/folder counts in file explorer 📊
- Added sleep detection to exclude laptop sleep from time tracking ⏰
### Previous Releases in this Series
@@ -138,26 +136,22 @@ Thanks for the contributions: @t1mmen @aejfager @Crumbgrabber @whglaser @b3nw @d
**Latest: v0.12.3** | Released December 28, 2025
-The big changes in the v0.12.x line are the following three:
-
-## Show Thinking
-
-🤔 There is now a toggle to show thinking for the agent, the default for new tabs is off, though this can be changed under Settings > General. The toggle shows next to History and Read-Only. Very similar pattern. This has been the #1 most requested feature, though personally, I don't think I'll use it as I prefer to not see the details of the work, but the results of the work. Just as we work with our colleagues.
-
-## GitHub Spec-Kit Integration
-
-🎯 Added [GitHub Spec-Kit](https://github.com/github/spec-kit) commands into Maestro with a built in updater to grab the latest prompts from the repository. We do override `/speckit-implement` (the final step) to create Auto Run docs and guide the user through their execution, which thanks to Wortrees from v0.11.x allows us to run in parallel!
-
-## Context Management Tools
-
-📖 Added context management options from tab right-click menu. You can now compress, merge, and transfer contexts between agents. You will received (configurable) warnings at 60% and 80% context consumption with a hint to compact.
-
-## Changes Specific to v0.12.3:
-
-- We now have hosted documentation through Mintlify 📚
-- Export any tab conversation as self-contained themed HTML file 📄
-- Publish files as private/public Gists 🌐
-- Added tab hover overlay menu with close operations and export 📋
+The big changes in the v0.12.x line are the following three:
+
+## Show Thinking
+🤔 There is now a toggle to show thinking for the agent, the default for new tabs is off, though this can be changed under Settings > General. The toggle shows next to History and Read-Only. Very similar pattern. This has been the #1 most requested feature, though personally, I don't think I'll use it as I prefer to not see the details of the work, but the results of the work. Just as we work with our colleagues.
+
+## GitHub Spec-Kit Integration
+🎯 Added [GitHub Spec-Kit](https://github.com/github/spec-kit) commands into Maestro with a built in updater to grab the latest prompts from the repository. We do override `/speckit-implement` (the final step) to create Auto Run docs and guide the user through their execution, which thanks to Wortrees from v0.11.x allows us to run in parallel!
+
+## Context Management Tools
+📖 Added context management options from tab right-click menu. You can now compress, merge, and transfer contexts between agents. You will received (configurable) warnings at 60% and 80% context consumption with a hint to compact.
+
+## Changes Specific to v0.12.3:
+- We now have hosted documentation through Mintlify 📚
+- Export any tab conversation as self-contained themed HTML file 📄
+- Publish files as private/public Gists 🌐
+- Added tab hover overlay menu with close operations and export 📋
- Added social handles to achievement share images 🏆
### Previous Releases in this Series
@@ -171,12 +165,12 @@ The big changes in the v0.12.x line are the following three:
**Latest: v0.11.0** | Released December 22, 2025
-🌳 Github Worktree support was added. Any agent bound to a Git repository has the option to enable worktrees, each of which show up as a sub-agent with their own write-lock and Auto Run capability. Now you can truly develop in parallel on the same project and issue PRs when you're ready, all from within Maestro. Huge improvement, major thanks to @petersilberman.
-
-# Other Changes
-
-- @ file mentions now include documents from your Auto Run folder (which may not live in your agent working directory) 🗄️
-- The wizard is now capable of detecting and continuing on past started projects 🧙
+🌳 Github Worktree support was added. Any agent bound to a Git repository has the option to enable worktrees, each of which show up as a sub-agent with their own write-lock and Auto Run capability. Now you can truly develop in parallel on the same project and issue PRs when you're ready, all from within Maestro. Huge improvement, major thanks to @petersilberman.
+
+# Other Changes
+
+- @ file mentions now include documents from your Auto Run folder (which may not live in your agent working directory) 🗄️
+- The wizard is now capable of detecting and continuing on past started projects 🧙
- Bug fixes 🐛🐜🐞
---
@@ -187,14 +181,14 @@ The big changes in the v0.12.x line are the following three:
### Changes
-- Export group chats as self-contained HTML ⬇️
-- Enhanced system process viewer now has details view with full process args 💻
-- Update button hides until platform binaries are available in releases. ⏳
-- Added Auto Run stall detection at the loop level, if no documents are updated after a loop 🔁
-- Improved Codex session discovery 🔍
-- Windows compatibility fixes 🐛
-- 64-bit Linux ARM build issue fixed (thanks @LilYoopug) 🐜
-- Addressed session enumeration issues with Codex and OpenCode 🐞
+- Export group chats as self-contained HTML ⬇️
+- Enhanced system process viewer now has details view with full process args 💻
+- Update button hides until platform binaries are available in releases. ⏳
+- Added Auto Run stall detection at the loop level, if no documents are updated after a loop 🔁
+- Improved Codex session discovery 🔍
+- Windows compatibility fixes 🐛
+- 64-bit Linux ARM build issue fixed (thanks @LilYoopug) 🐜
+- Addressed session enumeration issues with Codex and OpenCode 🐞
- Addressed pathing issues around gh command (thanks @oliveiraantoniocc) 🐝
### Previous Releases in this Series
@@ -210,13 +204,13 @@ The big changes in the v0.12.x line are the following three:
### Changes
-- Add Sentry crashing reporting monitoring with opt-out 🐛
-- Stability fixes on v0.9.0 along with all the changes it brought along, including...
- - Major refactor to enable supporting of multiple providers 👨👩👧👦
- - Added OpenAI Codex support 👨💻
- - Added OpenCode support 👩💻
- - Error handling system detects and recovers from agent failures 🚨
- - Added option to specify CLI arguments to AI providers ✨
+- Add Sentry crashing reporting monitoring with opt-out 🐛
+- Stability fixes on v0.9.0 along with all the changes it brought along, including...
+ - Major refactor to enable supporting of multiple providers 👨👩👧👦
+ - Added OpenAI Codex support 👨💻
+ - Added OpenCode support 👩💻
+ - Error handling system detects and recovers from agent failures 🚨
+ - Added option to specify CLI arguments to AI providers ✨
- Bunch of other little tweaks and additions 💎
### Previous Releases in this Series
@@ -231,19 +225,19 @@ The big changes in the v0.12.x line are the following three:
### Changes
-- Added "Nudge" messages. Short static copy to include with every interactive message sent, perhaps to remind the agent on how to work 📌
-- Addressed various resource consumption issues to reduce battery cost 📉
-- Implemented fuzzy file search in quick actions for instant navigation 🔍
-- Added "clear" command support to clean terminal shell logs 🧹
-- Simplified search highlighting by integrating into markdown pipeline ✨
-- Enhanced update checker to filter prerelease tags like -rc, -beta 🚀
-- Fixed RPM package compatibility for OpenSUSE Tumbleweed 🐧 (H/T @JOduMonT)
-- Added libuuid1 support alongside standard libuuid dependency 📦
-- Introduced Cmd+Shift+U shortcut for tab unread toggle ⌨️
-- Enhanced keyboard navigation for marking tabs unread 🎯
-- Expanded Linux distribution support with smart dependencies 🌐
-- Major underlying code re-structuring for maintainability 🧹
-- Improved stall detection to allow for individual docs to stall out while not affecting the entire playbook 📖 (H/T @mattjay)
+- Added "Nudge" messages. Short static copy to include with every interactive message sent, perhaps to remind the agent on how to work 📌
+- Addressed various resource consumption issues to reduce battery cost 📉
+- Implemented fuzzy file search in quick actions for instant navigation 🔍
+- Added "clear" command support to clean terminal shell logs 🧹
+- Simplified search highlighting by integrating into markdown pipeline ✨
+- Enhanced update checker to filter prerelease tags like -rc, -beta 🚀
+- Fixed RPM package compatibility for OpenSUSE Tumbleweed 🐧 (H/T @JOduMonT)
+- Added libuuid1 support alongside standard libuuid dependency 📦
+- Introduced Cmd+Shift+U shortcut for tab unread toggle ⌨️
+- Enhanced keyboard navigation for marking tabs unread 🎯
+- Expanded Linux distribution support with smart dependencies 🌐
+- Major underlying code re-structuring for maintainability 🧹
+- Improved stall detection to allow for individual docs to stall out while not affecting the entire playbook 📖 (H/T @mattjay)
- Added option to select a static listening port for remote control 🎮 (H/T @b3nw)
### Previous Releases in this Series
@@ -263,40 +257,35 @@ The big changes in the v0.12.x line are the following three:
**Latest: v0.7.4** | Released December 12, 2025
-Minor bugfixes on top of v0.7.3:
-
-# Onboarding, Wizard, and Tours
-
-- Implemented comprehensive onboarding wizard with integrated tour system 🚀
-- Added project-understanding confidence display to wizard UI 🎨
-- Enhanced keyboard navigation across all wizard screens ⌨️
-- Added analytics tracking for wizard and tour completion 📈
-- Added First Run Celebration modal with confetti animation 🎉
-
-# UI / UX Enhancements
-
-- Added expand-to-fullscreen button for Auto Run interface 🖥️
-- Created dedicated modal component and improved modal priority constants for expanded Auto Run view 📐
-- Enhanced user experience with fullscreen editing capabilities ✨
-- Fixed tab name display to correctly show full name for active tabs 🏷️
-- Added performance optimizations with throttling and caching for scrolling ⚡
-- Implemented drag-and-drop reordering for execution queue items 🎯
-- Enhanced toast context with agent name for OS notifications 📢
-
-# Auto Run Workflow Improvements
-
-- Created phase document generation for Auto Run workflow 📄
-- Added real-time log streaming to the LogViewer component 📊
-
-# Application Behavior / Core Fixes
-
-- Added validation to prevent nested worktrees inside the main repository 🚫
-- Fixed process manager to properly emit exit events on errors 🔧
-- Fixed process exit handling to ensure proper cleanup 🧹
-
-# Update System
-
-- Implemented automatic update checking on application startup 🚀
+Minor bugfixes on top of v0.7.3:
+
+# Onboarding, Wizard, and Tours
+- Implemented comprehensive onboarding wizard with integrated tour system 🚀
+- Added project-understanding confidence display to wizard UI 🎨
+- Enhanced keyboard navigation across all wizard screens ⌨️
+- Added analytics tracking for wizard and tour completion 📈
+- Added First Run Celebration modal with confetti animation 🎉
+
+# UI / UX Enhancements
+- Added expand-to-fullscreen button for Auto Run interface 🖥️
+- Created dedicated modal component and improved modal priority constants for expanded Auto Run view 📐
+- Enhanced user experience with fullscreen editing capabilities ✨
+- Fixed tab name display to correctly show full name for active tabs 🏷️
+- Added performance optimizations with throttling and caching for scrolling ⚡
+- Implemented drag-and-drop reordering for execution queue items 🎯
+- Enhanced toast context with agent name for OS notifications 📢
+
+# Auto Run Workflow Improvements
+- Created phase document generation for Auto Run workflow 📄
+- Added real-time log streaming to the LogViewer component 📊
+
+# Application Behavior / Core Fixes
+- Added validation to prevent nested worktrees inside the main repository 🚫
+- Fixed process manager to properly emit exit events on errors 🔧
+- Fixed process exit handling to ensure proper cleanup 🧹
+
+# Update System
+- Implemented automatic update checking on application startup 🚀
- Added settings toggle for enabling/disabling startup update checks ⚙️
### Previous Releases in this Series
@@ -312,40 +301,38 @@ Minor bugfixes on top of v0.7.3:
**Latest: v0.6.1** | Released December 4, 2025
-In this release...
-
-- Added recursive subfolder support for Auto Run markdown files 🗂️
-- Enhanced document tree display with expandable folder navigation 🌳
-- Enabled creating documents in subfolders with path selection 📁
-- Improved batch runner UI with inline progress bars and loop indicators 📊
-- Fixed execution queue display bug for immediate command processing 🐛
-- Added folder icons and better visual hierarchy for document browser 🎨
-- Implemented dynamic task re-counting for batch run loop iterations 🔄
-- Enhanced create document modal with location selector dropdown 📍
-- Improved progress tracking with per-document completion visualization 📈
-- Added support for nested folder structures in document management 🏗️
-
-Plus the pre-release ALPHA...
-
-- Template vars now set context in default autorun prompt 🚀
-- Added Enter key support for queued message confirmation dialog ⌨️
-- Kill process capability added to System Process Monitor 💀
-- Toggle markdown rendering added to Cmd+K Quick Actions 📝
-- Fixed cloudflared detection in packaged app environments 🔧
-- Added debugging logs for process exit diagnostics 🐛
-- Tab switcher shows last activity timestamps and filters by project 🕐
-- Slash commands now fill text on Tab/Enter instead of executing ⚡
-- Added GitHub Actions workflow for auto-assigning issues/PRs 🤖
-- Graceful handling for playbooks with missing documents implemented ✨
-- Added multi-document batch processing for Auto Run 🚀
-- Introduced Git worktree support for parallel execution 🌳
-- Created playbook system for saving run configurations 📚
-- Implemented document reset-on-completion with loop mode 🔄
-- Added drag-and-drop document reordering interface 🎯
-- Built Auto Run folder selector with file management 📁
-- Enhanced progress tracking with per-document metrics 📊
-- Integrated PR creation after worktree completion 🔀
-- Added undo/redo support in document editor ↩️
+In this release...
+- Added recursive subfolder support for Auto Run markdown files 🗂️
+- Enhanced document tree display with expandable folder navigation 🌳
+- Enabled creating documents in subfolders with path selection 📁
+- Improved batch runner UI with inline progress bars and loop indicators 📊
+- Fixed execution queue display bug for immediate command processing 🐛
+- Added folder icons and better visual hierarchy for document browser 🎨
+- Implemented dynamic task re-counting for batch run loop iterations 🔄
+- Enhanced create document modal with location selector dropdown 📍
+- Improved progress tracking with per-document completion visualization 📈
+- Added support for nested folder structures in document management 🏗️
+
+Plus the pre-release ALPHA...
+- Template vars now set context in default autorun prompt 🚀
+- Added Enter key support for queued message confirmation dialog ⌨️
+- Kill process capability added to System Process Monitor 💀
+- Toggle markdown rendering added to Cmd+K Quick Actions 📝
+- Fixed cloudflared detection in packaged app environments 🔧
+- Added debugging logs for process exit diagnostics 🐛
+- Tab switcher shows last activity timestamps and filters by project 🕐
+- Slash commands now fill text on Tab/Enter instead of executing ⚡
+- Added GitHub Actions workflow for auto-assigning issues/PRs 🤖
+- Graceful handling for playbooks with missing documents implemented ✨
+- Added multi-document batch processing for Auto Run 🚀
+- Introduced Git worktree support for parallel execution 🌳
+- Created playbook system for saving run configurations 📚
+- Implemented document reset-on-completion with loop mode 🔄
+- Added drag-and-drop document reordering interface 🎯
+- Built Auto Run folder selector with file management 📁
+- Enhanced progress tracking with per-document metrics 📊
+- Integrated PR creation after worktree completion 🔀
+- Added undo/redo support in document editor ↩️
- Implemented auto-save with 5-second debounce 💾
### Previous Releases in this Series
@@ -360,15 +347,15 @@ Plus the pre-release ALPHA...
### Changes
-- Added "Made with Maestro" badge to README header 🎯
-- Redesigned app icon with darker purple color scheme 🎨
-- Created new SVG badge for project attribution 🏷️
-- Added side-by-side image diff viewer for git changes 🖼️
-- Enhanced confetti animation with realistic cannon-style bursts 🎊
-- Fixed z-index layering for standing ovation overlay 📊
-- Improved tab switcher to show all named sessions 🔍
-- Enhanced batch synopsis prompts for cleaner summaries 📝
-- Added binary file detection in git diff parser 🔧
+- Added "Made with Maestro" badge to README header 🎯
+- Redesigned app icon with darker purple color scheme 🎨
+- Created new SVG badge for project attribution 🏷️
+- Added side-by-side image diff viewer for git changes 🖼️
+- Enhanced confetti animation with realistic cannon-style bursts 🎊
+- Fixed z-index layering for standing ovation overlay 📊
+- Improved tab switcher to show all named sessions 🔍
+- Enhanced batch synopsis prompts for cleaner summaries 📝
+- Added binary file detection in git diff parser 🔧
- Implemented git file reading at specific refs 📁
### Previous Releases in this Series
@@ -383,24 +370,24 @@ Plus the pre-release ALPHA...
### Changes
-- Added Tab Switcher modal for quick navigation between AI tabs 🚀
-- Implemented @ mention file completion for AI mode references 📁
-- Added navigation history with back/forward through sessions and tabs ⏮️
-- Introduced tab completion filters for branches, tags, and files 🌳
-- Added unread tab indicators and filtering for better organization 📬
-- Implemented token counting display with human-readable formatting 🔢
-- Added markdown rendering toggle for AI responses in terminal 📝
-- Removed built-in slash commands in favor of custom AI commands 🎯
-- Added context menu for sessions with rename, bookmark, move options 🖱️
-- Enhanced file preview with stats showing size, tokens, timestamps 📊
-- Added token counting with js-tiktoken for file preview stats bar 🔢
-- Implemented Tab Switcher modal for fuzzy-search navigation (Opt+Cmd+T) 🔍
-- Added Save to History toggle (Cmd+S) for automatic work synopsis tracking 💾
-- Enhanced tab completion with @ mentions for file references in AI prompts 📎
-- Implemented navigation history with back/forward shortcuts (Cmd+Shift+,/.) 🔙
-- Added git branches and tags to intelligent tab completion system 🌿
-- Enhanced markdown rendering with syntax highlighting and toggle view 📝
-- Added right-click context menus for session management and organization 🖱️
+- Added Tab Switcher modal for quick navigation between AI tabs 🚀
+- Implemented @ mention file completion for AI mode references 📁
+- Added navigation history with back/forward through sessions and tabs ⏮️
+- Introduced tab completion filters for branches, tags, and files 🌳
+- Added unread tab indicators and filtering for better organization 📬
+- Implemented token counting display with human-readable formatting 🔢
+- Added markdown rendering toggle for AI responses in terminal 📝
+- Removed built-in slash commands in favor of custom AI commands 🎯
+- Added context menu for sessions with rename, bookmark, move options 🖱️
+- Enhanced file preview with stats showing size, tokens, timestamps 📊
+- Added token counting with js-tiktoken for file preview stats bar 🔢
+- Implemented Tab Switcher modal for fuzzy-search navigation (Opt+Cmd+T) 🔍
+- Added Save to History toggle (Cmd+S) for automatic work synopsis tracking 💾
+- Enhanced tab completion with @ mentions for file references in AI prompts 📎
+- Implemented navigation history with back/forward shortcuts (Cmd+Shift+,/.) 🔙
+- Added git branches and tags to intelligent tab completion system 🌿
+- Enhanced markdown rendering with syntax highlighting and toggle view 📝
+- Added right-click context menus for session management and organization 🖱️
- Improved mobile app with better WebSocket reconnection and status badges 📱
### Previous Releases in this Series
@@ -415,15 +402,15 @@ Plus the pre-release ALPHA...
### Changes
-- Fixed tab handling requiring explicitly selected Claude session 🔧
-- Added auto-scroll navigation for slash command list selection ⚡
-- Implemented TTS audio feedback for toast notifications speak 🔊
-- Fixed shortcut case sensitivity using lowercase key matching 🔤
-- Added Cmd+Shift+J shortcut to jump to bottom instantly ⬇️
-- Sorted shortcuts alphabetically in help modal for discovery 📑
-- Display full commit message body in git log view 📝
-- Added expand/collapse all buttons to process tree header 🌳
-- Support synopsis process type in process tree parsing 🔍
+- Fixed tab handling requiring explicitly selected Claude session 🔧
+- Added auto-scroll navigation for slash command list selection ⚡
+- Implemented TTS audio feedback for toast notifications speak 🔊
+- Fixed shortcut case sensitivity using lowercase key matching 🔤
+- Added Cmd+Shift+J shortcut to jump to bottom instantly ⬇️
+- Sorted shortcuts alphabetically in help modal for discovery 📑
+- Display full commit message body in git log view 📝
+- Added expand/collapse all buttons to process tree header 🌳
+- Support synopsis process type in process tree parsing 🔍
- Renamed "No Group" to "UNGROUPED" for better clarity ✨
### Previous Releases in this Series
@@ -436,15 +423,15 @@ Plus the pre-release ALPHA...
**Latest: v0.2.3** | Released November 29, 2025
-• Enhanced mobile web interface with session sync and history panel 📱
-• Added ThinkingStatusPill showing real-time token counts and elapsed time ⏱️
-• Implemented task count badges and session deduplication for batch runner 📊
-• Added TTS stop control and improved voice synthesis compatibility 🔊
-• Created image lightbox with navigation, clipboard, and delete features 🖼️
-• Fixed UI bugs in search, auto-scroll, and sidebar interactions 🐛
-• Added global Claude stats with streaming updates across projects 📈
-• Improved markdown checkbox styling and collapsed palette hover UX ✨
-• Enhanced scratchpad with search, image paste, and attachment support 🔍
+• Enhanced mobile web interface with session sync and history panel 📱
+• Added ThinkingStatusPill showing real-time token counts and elapsed time ⏱️
+• Implemented task count badges and session deduplication for batch runner 📊
+• Added TTS stop control and improved voice synthesis compatibility 🔊
+• Created image lightbox with navigation, clipboard, and delete features 🖼️
+• Fixed UI bugs in search, auto-scroll, and sidebar interactions 🐛
+• Added global Claude stats with streaming updates across projects 📈
+• Improved markdown checkbox styling and collapsed palette hover UX ✨
+• Enhanced scratchpad with search, image paste, and attachment support 🔍
• Added splash screen with logo and progress bar during startup 🎨
### Previous Releases in this Series
@@ -459,15 +446,15 @@ Plus the pre-release ALPHA...
**Latest: v0.1.6** | Released November 27, 2025
-• Added template variables for dynamic AI command customization 🎯
-• Implemented session bookmarking with star icons and dedicated section ⭐
-• Enhanced Git Log Viewer with smarter date formatting 📅
-• Improved GitHub release workflow to handle partial failures gracefully 🔧
-• Added collapsible template documentation in AI Commands panel 📚
-• Updated default commit command with session ID traceability 🔍
-• Added tag indicators for custom-named sessions visually 🏷️
-• Improved Git Log search UX with better focus handling 🎨
-• Fixed input placeholder spacing for better readability 📝
+• Added template variables for dynamic AI command customization 🎯
+• Implemented session bookmarking with star icons and dedicated section ⭐
+• Enhanced Git Log Viewer with smarter date formatting 📅
+• Improved GitHub release workflow to handle partial failures gracefully 🔧
+• Added collapsible template documentation in AI Commands panel 📚
+• Updated default commit command with session ID traceability 🔍
+• Added tag indicators for custom-named sessions visually 🏷️
+• Improved Git Log search UX with better focus handling 🎨
+• Fixed input placeholder spacing for better readability 📝
• Updated documentation with new features and template references 📖
### Previous Releases in this Series
@@ -486,7 +473,6 @@ Plus the pre-release ALPHA...
All releases are available on the [GitHub Releases page](https://github.com/RunMaestro/Maestro/releases).
Maestro is available for:
-
- **macOS** - Apple Silicon (arm64) and Intel (x64)
- **Windows** - x64
- **Linux** - x64 and arm64, AppImage, deb, and rpm packages
From a136d7dbca235a8ab80358cc6b18a9c2b4f70eae Mon Sep 17 00:00:00 2001
From: Jeff Scott Ward
Date: Thu, 9 Apr 2026 14:30:28 -0400
Subject: [PATCH 06/23] fix: restore repo git hooks and ignore local worktrees
---
.gitignore | 1 +
.prettierignore | 1 +
docs/releases.md | 494 ++++++++++---------
package.json | 2 +-
scripts/setup-git-hooks.mjs | 33 ++
src/__tests__/main/stats/integration.test.ts | 34 +-
6 files changed, 297 insertions(+), 268 deletions(-)
create mode 100644 scripts/setup-git-hooks.mjs
diff --git a/.gitignore b/.gitignore
index 8a66100201..53bf38329b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@ TEMP-REFACTORING-PLAN.md
TEMP-REFACTORING-PLAN-2.md
Auto\ Run\ Docs/
Work\ Trees/
+.worktrees/
community-data/
.mcp.json
specs/
diff --git a/.prettierignore b/.prettierignore
index a877d7bf84..813476ea02 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -2,6 +2,7 @@ dist/
release/
node_modules/
coverage/
+.worktrees/
*.min.js
.gitignore
src/renderer/assets/file-explorer-rich-icons/*.svg
diff --git a/docs/releases.md b/docs/releases.md
index 3b467bc158..36a1f457e7 100644
--- a/docs/releases.md
+++ b/docs/releases.md
@@ -17,32 +17,32 @@ Maestro can update itself automatically! This feature was introduced in **v0.8.7
**Latest: v0.15.3** | Released April 5, 2026
-# Major 0.15.x Additions
-
-🎶 **Maestro Symphony** — Contribute to open source with AI assistance! Browse curated issues from projects with the `runmaestro.ai` label, clone repos with one click, and automatically process the relevant Auto Run playbooks. Track your contributions, streaks, and stats. You're contributing CPU and tokens towards your favorite open source projects and features.
-
-🎬 **Director's Notes** — Aggregates history across all agents into a unified timeline with search, filters, and an activity graph. Includes an AI Overview tab that generates a structured synopsis of recent work. Off by default, gated behind a new "Encore Features" panel under settings. This is a precursor to an eventual plugin system, allowing for extensions and customizations without bloating the core app.
-
-🏷️ **Conductor Profile** — Available under Settings > General. Provide a short description on how Maestro agents should interface with you.
-
-🧠 **Three-State Thinking Toggle** — The thinking toggle now cycles through three modes: off, on, and sticky. Sticky mode keeps thinking content visible after the response completes. Cycle with CMD/CTRL+SHIFT+K.
-
-🤖 **Factory.ai Droid Support** — Added support for the [Factory.ai](https://factory.ai/product/cli) droid agent. Full session management and output parsing integration.
-
-## Changes in v0.15.3
-
-- **CLI settings management:** Full `maestro-cli settings` command suite — list, get, set, and reset any Maestro setting from the command line. Includes per-agent configuration (custom paths, args, env vars, model overrides). Supports category filtering, verbose descriptions, and machine-readable JSON output for scripting
-- **Live settings reload:** Settings changes made via the CLI are automatically detected by the running desktop app — no restart required
-- **Plan-Mode toggle:** Claude Code and OpenCode agents now show "Plan-Mode" instead of "Read-Only" for the read-only toggle, matching their native terminology
-- **Solarized Dark theme:** New Solarized Dark color theme with tuned contrast for tags, code blocks, and pill labels
-- **Files pane icon theme:** Choose between default and rich icon themes in the files pane — rich theme adds colorful, language-specific icons for 70+ file types and folder categories. Toggle under Settings > Display
-- **Persistent web link:** The web/mobile interface link now persists across app restarts — no need to re-enable it each session
-- **OpenCode v1.2+ session support:** Automatically reads OpenCode's new SQLite session storage format alongside the legacy JSONL format
-- **Group chat @mentions:** Use `@agent-name` syntax in the prompt composer to direct messages to specific agents in group chat
-- **Group chat over SSH:** Group chat synthesis and moderation now run correctly on SSH remote agents instead of always spawning locally
-- **Group chat participant management:** Remove button on participant cards lets you remove stale or unwanted participants from a group chat
-- **Batch resume/abort:** New controls in the right panel for resuming or aborting batch operations
-- **Default worktree directory:** Worktree configuration now defaults to the parent of the agent's working directory instead of blank
+# Major 0.15.x Additions
+
+🎶 **Maestro Symphony** — Contribute to open source with AI assistance! Browse curated issues from projects with the `runmaestro.ai` label, clone repos with one click, and automatically process the relevant Auto Run playbooks. Track your contributions, streaks, and stats. You're contributing CPU and tokens towards your favorite open source projects and features.
+
+🎬 **Director's Notes** — Aggregates history across all agents into a unified timeline with search, filters, and an activity graph. Includes an AI Overview tab that generates a structured synopsis of recent work. Off by default, gated behind a new "Encore Features" panel under settings. This is a precursor to an eventual plugin system, allowing for extensions and customizations without bloating the core app.
+
+🏷️ **Conductor Profile** — Available under Settings > General. Provide a short description on how Maestro agents should interface with you.
+
+🧠 **Three-State Thinking Toggle** — The thinking toggle now cycles through three modes: off, on, and sticky. Sticky mode keeps thinking content visible after the response completes. Cycle with CMD/CTRL+SHIFT+K.
+
+🤖 **Factory.ai Droid Support** — Added support for the [Factory.ai](https://factory.ai/product/cli) droid agent. Full session management and output parsing integration.
+
+## Changes in v0.15.3
+
+- **CLI settings management:** Full `maestro-cli settings` command suite — list, get, set, and reset any Maestro setting from the command line. Includes per-agent configuration (custom paths, args, env vars, model overrides). Supports category filtering, verbose descriptions, and machine-readable JSON output for scripting
+- **Live settings reload:** Settings changes made via the CLI are automatically detected by the running desktop app — no restart required
+- **Plan-Mode toggle:** Claude Code and OpenCode agents now show "Plan-Mode" instead of "Read-Only" for the read-only toggle, matching their native terminology
+- **Solarized Dark theme:** New Solarized Dark color theme with tuned contrast for tags, code blocks, and pill labels
+- **Files pane icon theme:** Choose between default and rich icon themes in the files pane — rich theme adds colorful, language-specific icons for 70+ file types and folder categories. Toggle under Settings > Display
+- **Persistent web link:** The web/mobile interface link now persists across app restarts — no need to re-enable it each session
+- **OpenCode v1.2+ session support:** Automatically reads OpenCode's new SQLite session storage format alongside the legacy JSONL format
+- **Group chat @mentions:** Use `@agent-name` syntax in the prompt composer to direct messages to specific agents in group chat
+- **Group chat over SSH:** Group chat synthesis and moderation now run correctly on SSH remote agents instead of always spawning locally
+- **Group chat participant management:** Remove button on participant cards lets you remove stale or unwanted participants from a group chat
+- **Batch resume/abort:** New controls in the right panel for resuming or aborting batch operations
+- **Default worktree directory:** Worktree configuration now defaults to the parent of the agent's working directory instead of blank
- **Drawfinity in Symphony:** Added Drawfinity to the Symphony project registry
### Previous Releases in this Series
@@ -56,41 +56,41 @@ Maestro can update itself automatically! This feature was introduced in **v0.8.7
**Latest: v0.14.5** | Released January 24, 2026
-Changes in this point release include:
-
-- Desktop app performance improvements (more to come on this, we want Maestro blazing fast) 🐌
-- Added local manifest feature for custom playbooks 📖
-- Agents are now inherently aware of your activity history as seen in the history panel 📜 (this is built-in cross context memory!)
-- Added markdown rendering support for AI responses in mobile view 📱
-- Bugfix in tracking costs from JSONL files that were aged out 🏦
-- Added BlueSky social media handle for leaderboard 🦋
-- Added options to disable GPU rendering and confetti 🎊
-- Better handling of large files in preview 🗄️
-- Bug fix in Claude context calculation 🧮
-- Addressed bug in OpenSpec version reporting 🐛
-
-The major contributions to 0.14.x remain:
-
-🗄️ Document Graphs. Launch from file preview or from the FIle tree panel. Explore relationships between Markdown documents that contain links between documents and to URLs.
-
-📶 SSH support for agents. Manage a remote agent with feature parity over SSH. Includes support for Git and File tree panels. Manage agents on remote systems or in containers. This even works for Group Chat, which is rad as hell.
-
-🧙♂️ Added an in-tab wizard for generating Auto Run Playbooks via `/wizard` or a new button in the Auto Run panel.
-
-# Smaller Changes in 014.x
-
-- Improved User Dashboard, available from hamburger menu, command palette or hotkey 🎛️
-- Leaderboard tracking now works across multiple systems and syncs level from cloud 🏆
-- Agent duplication. Pro tip: Consider a group of unused "Template" agents ✌️
-- New setting to prevent system from going to sleep while agents are active 🛏️
-- The tab menu has a new "Publish as GitHub Gist" option 📝
-- The tab menu has options to move the tab to the first or last position 🔀
-- [Maestro-Playbooks](https://github.com/pedramamini/Maestro-Playbooks) can now contain non-markdown assets 📙
-- Improved default shell detection 🐚
-- Added logic to prevent overlapping TTS notifications 💬
-- Added "Toggle Bookmark" shortcut (CTRL/CMD+SHIFT+B) ⌨️
-- Gist publishing now shows previous URLs with copy button 📋
-
+Changes in this point release include:
+
+- Desktop app performance improvements (more to come on this, we want Maestro blazing fast) 🐌
+- Added local manifest feature for custom playbooks 📖
+- Agents are now inherently aware of your activity history as seen in the history panel 📜 (this is built-in cross context memory!)
+- Added markdown rendering support for AI responses in mobile view 📱
+- Bugfix in tracking costs from JSONL files that were aged out 🏦
+- Added BlueSky social media handle for leaderboard 🦋
+- Added options to disable GPU rendering and confetti 🎊
+- Better handling of large files in preview 🗄️
+- Bug fix in Claude context calculation 🧮
+- Addressed bug in OpenSpec version reporting 🐛
+
+The major contributions to 0.14.x remain:
+
+🗄️ Document Graphs. Launch from file preview or from the FIle tree panel. Explore relationships between Markdown documents that contain links between documents and to URLs.
+
+📶 SSH support for agents. Manage a remote agent with feature parity over SSH. Includes support for Git and File tree panels. Manage agents on remote systems or in containers. This even works for Group Chat, which is rad as hell.
+
+🧙♂️ Added an in-tab wizard for generating Auto Run Playbooks via `/wizard` or a new button in the Auto Run panel.
+
+# Smaller Changes in 014.x
+
+- Improved User Dashboard, available from hamburger menu, command palette or hotkey 🎛️
+- Leaderboard tracking now works across multiple systems and syncs level from cloud 🏆
+- Agent duplication. Pro tip: Consider a group of unused "Template" agents ✌️
+- New setting to prevent system from going to sleep while agents are active 🛏️
+- The tab menu has a new "Publish as GitHub Gist" option 📝
+- The tab menu has options to move the tab to the first or last position 🔀
+- [Maestro-Playbooks](https://github.com/pedramamini/Maestro-Playbooks) can now contain non-markdown assets 📙
+- Improved default shell detection 🐚
+- Added logic to prevent overlapping TTS notifications 💬
+- Added "Toggle Bookmark" shortcut (CTRL/CMD+SHIFT+B) ⌨️
+- Gist publishing now shows previous URLs with copy button 📋
+
Thanks for the contributions: @t1mmen @aejfager @Crumbgrabber @whglaser @b3nw @deandebeer @shadown @breki @charles-dyfis-net @ronaldeddings @jlengrand @ksylvan
### Previous Releases in this Series
@@ -109,20 +109,22 @@ Thanks for the contributions: @t1mmen @aejfager @Crumbgrabber @whglaser @b3nw @d
### Changes
-- TAKE TWO! Fixed Linux ARM64 build architecture contamination issues 🏗️
-
-### v0.13.1 Changes
-- Fixed Linux ARM64 build architecture contamination issues 🏗️
-- Enhanced error handling for Auto Run batch processing 🚨
-
-### v0.13.0 Changes
-- Added a global usage dashboard, data collection begins with this install 🎛️
-- Added a Playbook Exchange for downloading pre-defined Auto Run playbooks from [Maestro-Playbooks](https://github.com/pedramamini/Maestro-Playbooks) 📕
-- Bundled OpenSpec commands for structured change proposals 📝
-- Added pre-release channel support for beta/RC updates 🧪
-- Implemented global hands-on time tracking across sessions ⏱️
-- Added new keyboard shortcut for agent settings (Opt+Cmd+, | Ctrl+Alt+,) ⌨️
-- Added directory size calculation with file/folder counts in file explorer 📊
+- TAKE TWO! Fixed Linux ARM64 build architecture contamination issues 🏗️
+
+### v0.13.1 Changes
+
+- Fixed Linux ARM64 build architecture contamination issues 🏗️
+- Enhanced error handling for Auto Run batch processing 🚨
+
+### v0.13.0 Changes
+
+- Added a global usage dashboard, data collection begins with this install 🎛️
+- Added a Playbook Exchange for downloading pre-defined Auto Run playbooks from [Maestro-Playbooks](https://github.com/pedramamini/Maestro-Playbooks) 📕
+- Bundled OpenSpec commands for structured change proposals 📝
+- Added pre-release channel support for beta/RC updates 🧪
+- Implemented global hands-on time tracking across sessions ⏱️
+- Added new keyboard shortcut for agent settings (Opt+Cmd+, | Ctrl+Alt+,) ⌨️
+- Added directory size calculation with file/folder counts in file explorer 📊
- Added sleep detection to exclude laptop sleep from time tracking ⏰
### Previous Releases in this Series
@@ -136,22 +138,26 @@ Thanks for the contributions: @t1mmen @aejfager @Crumbgrabber @whglaser @b3nw @d
**Latest: v0.12.3** | Released December 28, 2025
-The big changes in the v0.12.x line are the following three:
-
-## Show Thinking
-🤔 There is now a toggle to show thinking for the agent, the default for new tabs is off, though this can be changed under Settings > General. The toggle shows next to History and Read-Only. Very similar pattern. This has been the #1 most requested feature, though personally, I don't think I'll use it as I prefer to not see the details of the work, but the results of the work. Just as we work with our colleagues.
-
-## GitHub Spec-Kit Integration
-🎯 Added [GitHub Spec-Kit](https://github.com/github/spec-kit) commands into Maestro with a built in updater to grab the latest prompts from the repository. We do override `/speckit-implement` (the final step) to create Auto Run docs and guide the user through their execution, which thanks to Wortrees from v0.11.x allows us to run in parallel!
-
-## Context Management Tools
-📖 Added context management options from tab right-click menu. You can now compress, merge, and transfer contexts between agents. You will received (configurable) warnings at 60% and 80% context consumption with a hint to compact.
-
-## Changes Specific to v0.12.3:
-- We now have hosted documentation through Mintlify 📚
-- Export any tab conversation as self-contained themed HTML file 📄
-- Publish files as private/public Gists 🌐
-- Added tab hover overlay menu with close operations and export 📋
+The big changes in the v0.12.x line are the following three:
+
+## Show Thinking
+
+🤔 There is now a toggle to show thinking for the agent, the default for new tabs is off, though this can be changed under Settings > General. The toggle shows next to History and Read-Only. Very similar pattern. This has been the #1 most requested feature, though personally, I don't think I'll use it as I prefer to not see the details of the work, but the results of the work. Just as we work with our colleagues.
+
+## GitHub Spec-Kit Integration
+
+🎯 Added [GitHub Spec-Kit](https://github.com/github/spec-kit) commands into Maestro with a built in updater to grab the latest prompts from the repository. We do override `/speckit-implement` (the final step) to create Auto Run docs and guide the user through their execution, which thanks to Wortrees from v0.11.x allows us to run in parallel!
+
+## Context Management Tools
+
+📖 Added context management options from tab right-click menu. You can now compress, merge, and transfer contexts between agents. You will received (configurable) warnings at 60% and 80% context consumption with a hint to compact.
+
+## Changes Specific to v0.12.3:
+
+- We now have hosted documentation through Mintlify 📚
+- Export any tab conversation as self-contained themed HTML file 📄
+- Publish files as private/public Gists 🌐
+- Added tab hover overlay menu with close operations and export 📋
- Added social handles to achievement share images 🏆
### Previous Releases in this Series
@@ -165,12 +171,12 @@ The big changes in the v0.12.x line are the following three:
**Latest: v0.11.0** | Released December 22, 2025
-🌳 Github Worktree support was added. Any agent bound to a Git repository has the option to enable worktrees, each of which show up as a sub-agent with their own write-lock and Auto Run capability. Now you can truly develop in parallel on the same project and issue PRs when you're ready, all from within Maestro. Huge improvement, major thanks to @petersilberman.
-
-# Other Changes
-
-- @ file mentions now include documents from your Auto Run folder (which may not live in your agent working directory) 🗄️
-- The wizard is now capable of detecting and continuing on past started projects 🧙
+🌳 Github Worktree support was added. Any agent bound to a Git repository has the option to enable worktrees, each of which show up as a sub-agent with their own write-lock and Auto Run capability. Now you can truly develop in parallel on the same project and issue PRs when you're ready, all from within Maestro. Huge improvement, major thanks to @petersilberman.
+
+# Other Changes
+
+- @ file mentions now include documents from your Auto Run folder (which may not live in your agent working directory) 🗄️
+- The wizard is now capable of detecting and continuing on past started projects 🧙
- Bug fixes 🐛🐜🐞
---
@@ -181,14 +187,14 @@ The big changes in the v0.12.x line are the following three:
### Changes
-- Export group chats as self-contained HTML ⬇️
-- Enhanced system process viewer now has details view with full process args 💻
-- Update button hides until platform binaries are available in releases. ⏳
-- Added Auto Run stall detection at the loop level, if no documents are updated after a loop 🔁
-- Improved Codex session discovery 🔍
-- Windows compatibility fixes 🐛
-- 64-bit Linux ARM build issue fixed (thanks @LilYoopug) 🐜
-- Addressed session enumeration issues with Codex and OpenCode 🐞
+- Export group chats as self-contained HTML ⬇️
+- Enhanced system process viewer now has details view with full process args 💻
+- Update button hides until platform binaries are available in releases. ⏳
+- Added Auto Run stall detection at the loop level, if no documents are updated after a loop 🔁
+- Improved Codex session discovery 🔍
+- Windows compatibility fixes 🐛
+- 64-bit Linux ARM build issue fixed (thanks @LilYoopug) 🐜
+- Addressed session enumeration issues with Codex and OpenCode 🐞
- Addressed pathing issues around gh command (thanks @oliveiraantoniocc) 🐝
### Previous Releases in this Series
@@ -204,13 +210,13 @@ The big changes in the v0.12.x line are the following three:
### Changes
-- Add Sentry crashing reporting monitoring with opt-out 🐛
-- Stability fixes on v0.9.0 along with all the changes it brought along, including...
- - Major refactor to enable supporting of multiple providers 👨👩👧👦
- - Added OpenAI Codex support 👨💻
- - Added OpenCode support 👩💻
- - Error handling system detects and recovers from agent failures 🚨
- - Added option to specify CLI arguments to AI providers ✨
+- Add Sentry crashing reporting monitoring with opt-out 🐛
+- Stability fixes on v0.9.0 along with all the changes it brought along, including...
+ - Major refactor to enable supporting of multiple providers 👨👩👧👦
+ - Added OpenAI Codex support 👨💻
+ - Added OpenCode support 👩💻
+ - Error handling system detects and recovers from agent failures 🚨
+ - Added option to specify CLI arguments to AI providers ✨
- Bunch of other little tweaks and additions 💎
### Previous Releases in this Series
@@ -225,19 +231,19 @@ The big changes in the v0.12.x line are the following three:
### Changes
-- Added "Nudge" messages. Short static copy to include with every interactive message sent, perhaps to remind the agent on how to work 📌
-- Addressed various resource consumption issues to reduce battery cost 📉
-- Implemented fuzzy file search in quick actions for instant navigation 🔍
-- Added "clear" command support to clean terminal shell logs 🧹
-- Simplified search highlighting by integrating into markdown pipeline ✨
-- Enhanced update checker to filter prerelease tags like -rc, -beta 🚀
-- Fixed RPM package compatibility for OpenSUSE Tumbleweed 🐧 (H/T @JOduMonT)
-- Added libuuid1 support alongside standard libuuid dependency 📦
-- Introduced Cmd+Shift+U shortcut for tab unread toggle ⌨️
-- Enhanced keyboard navigation for marking tabs unread 🎯
-- Expanded Linux distribution support with smart dependencies 🌐
-- Major underlying code re-structuring for maintainability 🧹
-- Improved stall detection to allow for individual docs to stall out while not affecting the entire playbook 📖 (H/T @mattjay)
+- Added "Nudge" messages. Short static copy to include with every interactive message sent, perhaps to remind the agent on how to work 📌
+- Addressed various resource consumption issues to reduce battery cost 📉
+- Implemented fuzzy file search in quick actions for instant navigation 🔍
+- Added "clear" command support to clean terminal shell logs 🧹
+- Simplified search highlighting by integrating into markdown pipeline ✨
+- Enhanced update checker to filter prerelease tags like -rc, -beta 🚀
+- Fixed RPM package compatibility for OpenSUSE Tumbleweed 🐧 (H/T @JOduMonT)
+- Added libuuid1 support alongside standard libuuid dependency 📦
+- Introduced Cmd+Shift+U shortcut for tab unread toggle ⌨️
+- Enhanced keyboard navigation for marking tabs unread 🎯
+- Expanded Linux distribution support with smart dependencies 🌐
+- Major underlying code re-structuring for maintainability 🧹
+- Improved stall detection to allow for individual docs to stall out while not affecting the entire playbook 📖 (H/T @mattjay)
- Added option to select a static listening port for remote control 🎮 (H/T @b3nw)
### Previous Releases in this Series
@@ -257,35 +263,40 @@ The big changes in the v0.12.x line are the following three:
**Latest: v0.7.4** | Released December 12, 2025
-Minor bugfixes on top of v0.7.3:
-
-# Onboarding, Wizard, and Tours
-- Implemented comprehensive onboarding wizard with integrated tour system 🚀
-- Added project-understanding confidence display to wizard UI 🎨
-- Enhanced keyboard navigation across all wizard screens ⌨️
-- Added analytics tracking for wizard and tour completion 📈
-- Added First Run Celebration modal with confetti animation 🎉
-
-# UI / UX Enhancements
-- Added expand-to-fullscreen button for Auto Run interface 🖥️
-- Created dedicated modal component and improved modal priority constants for expanded Auto Run view 📐
-- Enhanced user experience with fullscreen editing capabilities ✨
-- Fixed tab name display to correctly show full name for active tabs 🏷️
-- Added performance optimizations with throttling and caching for scrolling ⚡
-- Implemented drag-and-drop reordering for execution queue items 🎯
-- Enhanced toast context with agent name for OS notifications 📢
-
-# Auto Run Workflow Improvements
-- Created phase document generation for Auto Run workflow 📄
-- Added real-time log streaming to the LogViewer component 📊
-
-# Application Behavior / Core Fixes
-- Added validation to prevent nested worktrees inside the main repository 🚫
-- Fixed process manager to properly emit exit events on errors 🔧
-- Fixed process exit handling to ensure proper cleanup 🧹
-
-# Update System
-- Implemented automatic update checking on application startup 🚀
+Minor bugfixes on top of v0.7.3:
+
+# Onboarding, Wizard, and Tours
+
+- Implemented comprehensive onboarding wizard with integrated tour system 🚀
+- Added project-understanding confidence display to wizard UI 🎨
+- Enhanced keyboard navigation across all wizard screens ⌨️
+- Added analytics tracking for wizard and tour completion 📈
+- Added First Run Celebration modal with confetti animation 🎉
+
+# UI / UX Enhancements
+
+- Added expand-to-fullscreen button for Auto Run interface 🖥️
+- Created dedicated modal component and improved modal priority constants for expanded Auto Run view 📐
+- Enhanced user experience with fullscreen editing capabilities ✨
+- Fixed tab name display to correctly show full name for active tabs 🏷️
+- Added performance optimizations with throttling and caching for scrolling ⚡
+- Implemented drag-and-drop reordering for execution queue items 🎯
+- Enhanced toast context with agent name for OS notifications 📢
+
+# Auto Run Workflow Improvements
+
+- Created phase document generation for Auto Run workflow 📄
+- Added real-time log streaming to the LogViewer component 📊
+
+# Application Behavior / Core Fixes
+
+- Added validation to prevent nested worktrees inside the main repository 🚫
+- Fixed process manager to properly emit exit events on errors 🔧
+- Fixed process exit handling to ensure proper cleanup 🧹
+
+# Update System
+
+- Implemented automatic update checking on application startup 🚀
- Added settings toggle for enabling/disabling startup update checks ⚙️
### Previous Releases in this Series
@@ -301,38 +312,40 @@ Minor bugfixes on top of v0.7.3:
**Latest: v0.6.1** | Released December 4, 2025
-In this release...
-- Added recursive subfolder support for Auto Run markdown files 🗂️
-- Enhanced document tree display with expandable folder navigation 🌳
-- Enabled creating documents in subfolders with path selection 📁
-- Improved batch runner UI with inline progress bars and loop indicators 📊
-- Fixed execution queue display bug for immediate command processing 🐛
-- Added folder icons and better visual hierarchy for document browser 🎨
-- Implemented dynamic task re-counting for batch run loop iterations 🔄
-- Enhanced create document modal with location selector dropdown 📍
-- Improved progress tracking with per-document completion visualization 📈
-- Added support for nested folder structures in document management 🏗️
-
-Plus the pre-release ALPHA...
-- Template vars now set context in default autorun prompt 🚀
-- Added Enter key support for queued message confirmation dialog ⌨️
-- Kill process capability added to System Process Monitor 💀
-- Toggle markdown rendering added to Cmd+K Quick Actions 📝
-- Fixed cloudflared detection in packaged app environments 🔧
-- Added debugging logs for process exit diagnostics 🐛
-- Tab switcher shows last activity timestamps and filters by project 🕐
-- Slash commands now fill text on Tab/Enter instead of executing ⚡
-- Added GitHub Actions workflow for auto-assigning issues/PRs 🤖
-- Graceful handling for playbooks with missing documents implemented ✨
-- Added multi-document batch processing for Auto Run 🚀
-- Introduced Git worktree support for parallel execution 🌳
-- Created playbook system for saving run configurations 📚
-- Implemented document reset-on-completion with loop mode 🔄
-- Added drag-and-drop document reordering interface 🎯
-- Built Auto Run folder selector with file management 📁
-- Enhanced progress tracking with per-document metrics 📊
-- Integrated PR creation after worktree completion 🔀
-- Added undo/redo support in document editor ↩️
+In this release...
+
+- Added recursive subfolder support for Auto Run markdown files 🗂️
+- Enhanced document tree display with expandable folder navigation 🌳
+- Enabled creating documents in subfolders with path selection 📁
+- Improved batch runner UI with inline progress bars and loop indicators 📊
+- Fixed execution queue display bug for immediate command processing 🐛
+- Added folder icons and better visual hierarchy for document browser 🎨
+- Implemented dynamic task re-counting for batch run loop iterations 🔄
+- Enhanced create document modal with location selector dropdown 📍
+- Improved progress tracking with per-document completion visualization 📈
+- Added support for nested folder structures in document management 🏗️
+
+Plus the pre-release ALPHA...
+
+- Template vars now set context in default autorun prompt 🚀
+- Added Enter key support for queued message confirmation dialog ⌨️
+- Kill process capability added to System Process Monitor 💀
+- Toggle markdown rendering added to Cmd+K Quick Actions 📝
+- Fixed cloudflared detection in packaged app environments 🔧
+- Added debugging logs for process exit diagnostics 🐛
+- Tab switcher shows last activity timestamps and filters by project 🕐
+- Slash commands now fill text on Tab/Enter instead of executing ⚡
+- Added GitHub Actions workflow for auto-assigning issues/PRs 🤖
+- Graceful handling for playbooks with missing documents implemented ✨
+- Added multi-document batch processing for Auto Run 🚀
+- Introduced Git worktree support for parallel execution 🌳
+- Created playbook system for saving run configurations 📚
+- Implemented document reset-on-completion with loop mode 🔄
+- Added drag-and-drop document reordering interface 🎯
+- Built Auto Run folder selector with file management 📁
+- Enhanced progress tracking with per-document metrics 📊
+- Integrated PR creation after worktree completion 🔀
+- Added undo/redo support in document editor ↩️
- Implemented auto-save with 5-second debounce 💾
### Previous Releases in this Series
@@ -347,15 +360,15 @@ Plus the pre-release ALPHA...
### Changes
-- Added "Made with Maestro" badge to README header 🎯
-- Redesigned app icon with darker purple color scheme 🎨
-- Created new SVG badge for project attribution 🏷️
-- Added side-by-side image diff viewer for git changes 🖼️
-- Enhanced confetti animation with realistic cannon-style bursts 🎊
-- Fixed z-index layering for standing ovation overlay 📊
-- Improved tab switcher to show all named sessions 🔍
-- Enhanced batch synopsis prompts for cleaner summaries 📝
-- Added binary file detection in git diff parser 🔧
+- Added "Made with Maestro" badge to README header 🎯
+- Redesigned app icon with darker purple color scheme 🎨
+- Created new SVG badge for project attribution 🏷️
+- Added side-by-side image diff viewer for git changes 🖼️
+- Enhanced confetti animation with realistic cannon-style bursts 🎊
+- Fixed z-index layering for standing ovation overlay 📊
+- Improved tab switcher to show all named sessions 🔍
+- Enhanced batch synopsis prompts for cleaner summaries 📝
+- Added binary file detection in git diff parser 🔧
- Implemented git file reading at specific refs 📁
### Previous Releases in this Series
@@ -370,24 +383,24 @@ Plus the pre-release ALPHA...
### Changes
-- Added Tab Switcher modal for quick navigation between AI tabs 🚀
-- Implemented @ mention file completion for AI mode references 📁
-- Added navigation history with back/forward through sessions and tabs ⏮️
-- Introduced tab completion filters for branches, tags, and files 🌳
-- Added unread tab indicators and filtering for better organization 📬
-- Implemented token counting display with human-readable formatting 🔢
-- Added markdown rendering toggle for AI responses in terminal 📝
-- Removed built-in slash commands in favor of custom AI commands 🎯
-- Added context menu for sessions with rename, bookmark, move options 🖱️
-- Enhanced file preview with stats showing size, tokens, timestamps 📊
-- Added token counting with js-tiktoken for file preview stats bar 🔢
-- Implemented Tab Switcher modal for fuzzy-search navigation (Opt+Cmd+T) 🔍
-- Added Save to History toggle (Cmd+S) for automatic work synopsis tracking 💾
-- Enhanced tab completion with @ mentions for file references in AI prompts 📎
-- Implemented navigation history with back/forward shortcuts (Cmd+Shift+,/.) 🔙
-- Added git branches and tags to intelligent tab completion system 🌿
-- Enhanced markdown rendering with syntax highlighting and toggle view 📝
-- Added right-click context menus for session management and organization 🖱️
+- Added Tab Switcher modal for quick navigation between AI tabs 🚀
+- Implemented @ mention file completion for AI mode references 📁
+- Added navigation history with back/forward through sessions and tabs ⏮️
+- Introduced tab completion filters for branches, tags, and files 🌳
+- Added unread tab indicators and filtering for better organization 📬
+- Implemented token counting display with human-readable formatting 🔢
+- Added markdown rendering toggle for AI responses in terminal 📝
+- Removed built-in slash commands in favor of custom AI commands 🎯
+- Added context menu for sessions with rename, bookmark, move options 🖱️
+- Enhanced file preview with stats showing size, tokens, timestamps 📊
+- Added token counting with js-tiktoken for file preview stats bar 🔢
+- Implemented Tab Switcher modal for fuzzy-search navigation (Opt+Cmd+T) 🔍
+- Added Save to History toggle (Cmd+S) for automatic work synopsis tracking 💾
+- Enhanced tab completion with @ mentions for file references in AI prompts 📎
+- Implemented navigation history with back/forward shortcuts (Cmd+Shift+,/.) 🔙
+- Added git branches and tags to intelligent tab completion system 🌿
+- Enhanced markdown rendering with syntax highlighting and toggle view 📝
+- Added right-click context menus for session management and organization 🖱️
- Improved mobile app with better WebSocket reconnection and status badges 📱
### Previous Releases in this Series
@@ -402,15 +415,15 @@ Plus the pre-release ALPHA...
### Changes
-- Fixed tab handling requiring explicitly selected Claude session 🔧
-- Added auto-scroll navigation for slash command list selection ⚡
-- Implemented TTS audio feedback for toast notifications speak 🔊
-- Fixed shortcut case sensitivity using lowercase key matching 🔤
-- Added Cmd+Shift+J shortcut to jump to bottom instantly ⬇️
-- Sorted shortcuts alphabetically in help modal for discovery 📑
-- Display full commit message body in git log view 📝
-- Added expand/collapse all buttons to process tree header 🌳
-- Support synopsis process type in process tree parsing 🔍
+- Fixed tab handling requiring explicitly selected Claude session 🔧
+- Added auto-scroll navigation for slash command list selection ⚡
+- Implemented TTS audio feedback for toast notifications speak 🔊
+- Fixed shortcut case sensitivity using lowercase key matching 🔤
+- Added Cmd+Shift+J shortcut to jump to bottom instantly ⬇️
+- Sorted shortcuts alphabetically in help modal for discovery 📑
+- Display full commit message body in git log view 📝
+- Added expand/collapse all buttons to process tree header 🌳
+- Support synopsis process type in process tree parsing 🔍
- Renamed "No Group" to "UNGROUPED" for better clarity ✨
### Previous Releases in this Series
@@ -423,15 +436,15 @@ Plus the pre-release ALPHA...
**Latest: v0.2.3** | Released November 29, 2025
-• Enhanced mobile web interface with session sync and history panel 📱
-• Added ThinkingStatusPill showing real-time token counts and elapsed time ⏱️
-• Implemented task count badges and session deduplication for batch runner 📊
-• Added TTS stop control and improved voice synthesis compatibility 🔊
-• Created image lightbox with navigation, clipboard, and delete features 🖼️
-• Fixed UI bugs in search, auto-scroll, and sidebar interactions 🐛
-• Added global Claude stats with streaming updates across projects 📈
-• Improved markdown checkbox styling and collapsed palette hover UX ✨
-• Enhanced scratchpad with search, image paste, and attachment support 🔍
+• Enhanced mobile web interface with session sync and history panel 📱
+• Added ThinkingStatusPill showing real-time token counts and elapsed time ⏱️
+• Implemented task count badges and session deduplication for batch runner 📊
+• Added TTS stop control and improved voice synthesis compatibility 🔊
+• Created image lightbox with navigation, clipboard, and delete features 🖼️
+• Fixed UI bugs in search, auto-scroll, and sidebar interactions 🐛
+• Added global Claude stats with streaming updates across projects 📈
+• Improved markdown checkbox styling and collapsed palette hover UX ✨
+• Enhanced scratchpad with search, image paste, and attachment support 🔍
• Added splash screen with logo and progress bar during startup 🎨
### Previous Releases in this Series
@@ -446,15 +459,15 @@ Plus the pre-release ALPHA...
**Latest: v0.1.6** | Released November 27, 2025
-• Added template variables for dynamic AI command customization 🎯
-• Implemented session bookmarking with star icons and dedicated section ⭐
-• Enhanced Git Log Viewer with smarter date formatting 📅
-• Improved GitHub release workflow to handle partial failures gracefully 🔧
-• Added collapsible template documentation in AI Commands panel 📚
-• Updated default commit command with session ID traceability 🔍
-• Added tag indicators for custom-named sessions visually 🏷️
-• Improved Git Log search UX with better focus handling 🎨
-• Fixed input placeholder spacing for better readability 📝
+• Added template variables for dynamic AI command customization 🎯
+• Implemented session bookmarking with star icons and dedicated section ⭐
+• Enhanced Git Log Viewer with smarter date formatting 📅
+• Improved GitHub release workflow to handle partial failures gracefully 🔧
+• Added collapsible template documentation in AI Commands panel 📚
+• Updated default commit command with session ID traceability 🔍
+• Added tag indicators for custom-named sessions visually 🏷️
+• Improved Git Log search UX with better focus handling 🎨
+• Fixed input placeholder spacing for better readability 📝
• Updated documentation with new features and template references 📖
### Previous Releases in this Series
@@ -473,6 +486,7 @@ Plus the pre-release ALPHA...
All releases are available on the [GitHub Releases page](https://github.com/RunMaestro/Maestro/releases).
Maestro is available for:
+
- **macOS** - Apple Silicon (arm64) and Intel (x64)
- **Windows** - x64
- **Linux** - x64 and arm64, AppImage, deb, and rpm packages
diff --git a/package.json b/package.json
index 52540c70b7..a1eff877e6 100644
--- a/package.json
+++ b/package.json
@@ -37,7 +37,7 @@
"package:linux": "node scripts/set-version.mjs npm run build && node scripts/set-version.mjs electron-builder --linux",
"start": "electron .",
"clean": "rm -rf dist release node_modules/.vite",
- "prepare": "husky || true",
+ "prepare": "node scripts/setup-git-hooks.mjs",
"postinstall": "electron-rebuild -f -w node-pty,better-sqlite3",
"lint": "tsc -p tsconfig.lint.json && tsc -p tsconfig.main.json --noEmit && tsc -p tsconfig.cli.json --noEmit",
"lint:eslint": "eslint src/",
diff --git a/scripts/setup-git-hooks.mjs b/scripts/setup-git-hooks.mjs
new file mode 100644
index 0000000000..ef8e86c932
--- /dev/null
+++ b/scripts/setup-git-hooks.mjs
@@ -0,0 +1,33 @@
+import { existsSync } from 'node:fs';
+import { spawnSync } from 'node:child_process';
+
+function runGit(args) {
+ const result = spawnSync('git', args, { stdio: 'pipe', encoding: 'utf8' });
+ if (result.error) throw result.error;
+ if (result.status !== 0) {
+ throw new Error(result.stderr.trim() || `git ${args.join(' ')} failed`);
+ }
+ return result.stdout.trim();
+}
+
+function getGitConfig(key) {
+ const result = spawnSync('git', ['config', '--get', key], { stdio: 'pipe', encoding: 'utf8' });
+ if (result.error) throw result.error;
+ if (result.status !== 0) return '';
+ return result.stdout.trim();
+}
+
+if (!existsSync('.git')) {
+ console.log('[setup-git-hooks] Skipping hook installation because .git is not present.');
+ process.exit(0);
+}
+
+const desiredHooksPath = '.husky';
+const currentHooksPath = getGitConfig('core.hooksPath');
+
+if (currentHooksPath !== desiredHooksPath) {
+ runGit(['config', 'core.hooksPath', desiredHooksPath]);
+ console.log(`[setup-git-hooks] Set core.hooksPath=${desiredHooksPath}`);
+} else {
+ console.log(`[setup-git-hooks] core.hooksPath already set to ${desiredHooksPath}`);
+}
diff --git a/src/__tests__/main/stats/integration.test.ts b/src/__tests__/main/stats/integration.test.ts
index ca5a04b3ed..9fd361eada 100644
--- a/src/__tests__/main/stats/integration.test.ts
+++ b/src/__tests__/main/stats/integration.test.ts
@@ -890,16 +890,12 @@ describe('electron-rebuild verification for better-sqlite3', () => {
it('should have better-sqlite3 native binding in expected location', async () => {
const fs = await import('node:fs');
const path = await import('node:path');
+ const betterSqlitePackagePath = require.resolve('better-sqlite3/package.json');
+ const betterSqliteDir = path.dirname(betterSqlitePackagePath);
// Check if the native binding exists in build/Release (compiled location)
const nativeModulePath = path.join(
- __dirname,
- '..',
- '..',
- '..',
- '..',
- 'node_modules',
- 'better-sqlite3',
+ betterSqliteDir,
'build',
'Release',
'better_sqlite3.node'
@@ -912,16 +908,7 @@ describe('electron-rebuild verification for better-sqlite3', () => {
// If the native module doesn't exist, check if there's a prebuilt binary
if (!exists) {
// Check for prebuilt binaries in the bin directory
- const binDir = path.join(
- __dirname,
- '..',
- '..',
- '..',
- '..',
- 'node_modules',
- 'better-sqlite3',
- 'bin'
- );
+ const binDir = path.join(betterSqliteDir, 'bin');
if (fs.existsSync(binDir)) {
const binContents = fs.readdirSync(binDir);
@@ -937,17 +924,10 @@ describe('electron-rebuild verification for better-sqlite3', () => {
it('should verify binding.gyp exists for native compilation', async () => {
const fs = await import('node:fs');
const path = await import('node:path');
+ const betterSqlitePackagePath = require.resolve('better-sqlite3/package.json');
+ const betterSqliteDir = path.dirname(betterSqlitePackagePath);
- const bindingGypPath = path.join(
- __dirname,
- '..',
- '..',
- '..',
- '..',
- 'node_modules',
- 'better-sqlite3',
- 'binding.gyp'
- );
+ const bindingGypPath = path.join(betterSqliteDir, 'binding.gyp');
// binding.gyp is required for node-gyp compilation
expect(fs.existsSync(bindingGypPath)).toBe(true);
From 403148578c72c3d1b00ac4aa8c4dc7a6f4b8b3d1 Mon Sep 17 00:00:00 2001
From: Jeff Scott Ward
Date: Thu, 9 Apr 2026 13:57:40 -0400
Subject: [PATCH 07/23] fix: polish slash menu and playbooks ui
---
src/renderer/components/AutoRun.tsx | 6 +++---
src/renderer/components/AutoRunExpandedModal.tsx | 6 +++---
src/renderer/components/InputArea.tsx | 8 ++++----
src/renderer/components/SessionList/SessionList.tsx | 8 ++++----
4 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/src/renderer/components/AutoRun.tsx b/src/renderer/components/AutoRun.tsx
index 60b80c9f0b..3b9f0dbcc3 100644
--- a/src/renderer/components/AutoRun.tsx
+++ b/src/renderer/components/AutoRun.tsx
@@ -1761,7 +1761,7 @@ const AutoRunInner = forwardRef(function AutoRunInn
Run
)}
- {/* Playbook Exchange button */}
+ {/* PlayBooks button */}
{onOpenMarketplace && (
)}
{/* Launch Wizard button */}
diff --git a/src/renderer/components/AutoRunExpandedModal.tsx b/src/renderer/components/AutoRunExpandedModal.tsx
index 03139e19dc..c2deaf630e 100644
--- a/src/renderer/components/AutoRunExpandedModal.tsx
+++ b/src/renderer/components/AutoRunExpandedModal.tsx
@@ -401,7 +401,7 @@ export function AutoRunExpandedModal({
Run
)}
- {/* Exchange button */}
+ {/* PlayBooks button */}
{onOpenMarketplace && (
)}