v1.8.0
June 2026
CurrentPublic betaKnow what your day costs. Events that clean themselves up.
Added
- →Time estimates on tasks. Set how long something will take using preset chips in the detail panel — 15m, 30m, 1h, 1.5h, 2h, 4h. Click the active chip to clear it. Stored in minutes so estimates are easy to sum.
- →Capacity banner in the today view. A live summary above the task list shows total estimated time for actionable tasks ("⏱ 5h 30m estimated") plus a count of tasks with no estimate set — so you know at a glance how loaded the day actually is.
- →Capacity summary in morning_briefing. The MCP tool now returns a capacity object with estimated_minutes, tasks_with_estimate, and tasks_without_estimate summed across overdue and due-today work. Agents can answer "how screwed are we today?" without doing their own math.
- →Time estimate badge on task rows. When an estimate is set, a ⏱ Xh Ym chip appears next to the energy indicator in the task list.
- →Event done button. A ✓ button on every calendar event card lets you mark it complete instantly without opening the detail panel.
- →Event auto-complete. Timed events whose end time has passed are automatically marked done on the next today-view load — no manual cleanup needed at the end of the day. Past-day events are also swept. All-day events are left for manual action.
Changed
- →Reading-lane tasks excluded from operational briefings. morning_briefing, afternoon_briefing, and get_overdue_tasks now exclude task_type=reading tasks by default. Reading items were surfacing as overdue action items in daily agent briefings and causing confusion.
- →task_type and tags added to all compact MCP SELECT outputs so agents can filter edge cases that reach them through other tools.
Fixed
- →MCP create_task and update_task now persist time_estimate instead of only exposing it in the tool schemas, so external agents can reliably write task estimates after an MCP restart.
v1.7.0
May 2026
Public betaTask search. Find anything, instantly.
Added
- →Task search bar in the Priority view. Type to filter the current screen live — matches against title, description, notes, context, project, tags, source URL, and AI context across all tasks currently loaded.
- →Search all mode. Toggle from "This screen" to "Search all" to hit the backend and find matching tasks across every status — Active, Backlog, Snoozed, Done, Archived — all grouped clearly in the results pane.
- →/ keyboard shortcut. Press / from anywhere in the Priority view to jump directly to the search bar without reaching for the mouse. Listed in the ? shortcut reference overlay.
Changed
- →Project Dashboard now surfaces context-level agents — agents registered with a context but not pinned to a specific project — grouped alongside that context's project list. Context groups sort by the order you registered them.
v1.6.0
May 2026
Public betaRemote instances, Linux headless servers, trust signals, and built-in agent operations.
Added
- →Qalatra Server: a headless HTTP API runtime that owns SQLite, MCP startup, background workers, agent jobs, heartbeats, attachments, backups, tokens, and encryption key access.
- →Settings -> Instances: the desktop app can connect to the local Qalatra Server or switch to a saved remote server URL and bearer token.
- →Linux headless install scripts: bootstrap a dedicated agent box on Debian/Ubuntu, rebuild native modules for system Node, install a user systemd service, and optionally expose the API through a Qalatra-only Cloudflare Tunnel.
- →Agent IDE: separate Terminals and Files views for remote boxes. Terminal sessions are backed by tmux so they can keep running after the client disconnects, and Files provides authenticated workspace browsing plus text editing.
- →Registered-agent terminal launch: start a terminal in an agent folder from a searchable picker grouped by context, project, and agent name.
- →Trust signals for tasks: hard deadlines, stale review indicators, and dependency blocking relationships.
- →Capability registry and daily-note memory search so agents can advertise what they do and recover relevant historical notes more reliably.
- →Automatic attachment recovery for local files mentioned in agent comments, even when the agent did not explicitly attach the file through MCP.
- →Token management: create, list, revoke, and expire full-access client tokens for desktop and future remote clients.
Changed
- →The UI data path moves from Electron data IPC to authenticated /api/v1 HTTP endpoints. Electron still handles desktop shell work such as updater, terminal, menus, file-open events, and local server lifecycle.
- →MCP remains local-only on port 3457. The public tunnel exposes only the Qalatra API on port 3456 and relies on Qalatra bearer tokens, not Cloudflare Access login pages.
- →Task rows no longer render every attachment and link chip. The overview stays scannable, while links and attachments remain available in the task detail panel.
- →Linux server installs now require tmux, create ~/workspaces by default, and refresh npm dependencies every time the installer runs so existing headless boxes can be updated safely.
Removed
- →The temporary /api/rpc bridge is removed. Clients use named API endpoints instead of channel-based RPC.
v1.5.4
May 2026
Public betaAgent session surfacing. Configurable agent timeouts. MCP done-task visibility fix.
Added
- →Resume session button in the task detail panel. When an agent job finishes (done or failed), a "Resume session" button appears if the job has a session ID. Clicking it opens your terminal to the agent's working directory and runs claude --resume {session_id} — dropping you directly into an interactive continuation of that agent session without having to copy IDs or navigate folders manually.
Changed
- →Agent timeout is now configurable per-agent via the timeout_minutes field in agent.config. Previously every agent was hard-capped at 15 minutes regardless of the task. Agents running long research or generation tasks can now be given more runway.
- →Sidebar badge moved from the Code section to Priority. The badge counts active agent jobs — those are tasks in the Priority queue, not coding tasks — so the indicator now appears next to the section it actually reflects.
Fixed
- →Tasks marked done via the MCP update_task tool were disappearing from the done view. The tool was setting last_touched_ai but not last_touched_human on the done transition — and the done view filters by last_touched_human. Agent-completed tasks now appear correctly alongside manually-completed ones.
- →Missive icon was a generic email envelope. Now shows the real Missive crossed-M brand logo.
v1.5.3
May 2026
Public betaClock-aligned heartbeats. Real platform icons. Links and Attachments, properly organized.
Added
- →Heartbeat clock alignment (minute_offset). Sub-daily heartbeats can now be pinned to specific clock positions. Set interval=30, offset=0 and the agent fires at :00 and :30 past every hour. Set offset=15 and it fires at :15 and :45. Set interval=60, offset=30 and it fires at :30 past every hour. Without an offset the agent fires relative to whenever it was created — with one, it snaps to the clock. The offset picker appears automatically in both the create and edit forms whenever you pick an interval that supports it (30 min through 12 hours).
Changed
- →Links and Attachments now have their own labeled section headers in the task detail panel. Previously the platform chips (Missive, Notion, Asana…) floated above Attachments with no heading. Now: Links header with a + button shows all platform chips beneath it; Attachments header with the paperclip button shows doc links and uploaded files beneath it.
- →Agent list in Settings redesigned as a responsive card grid grouped by context then project. Context groups are collapsible — state persists across sessions via localStorage. Agents that belong to a specific project appear under a project sub-header; context-wide agents are listed directly under the context. Previously it was a flat list with no grouping.
- →Platform icons updated to use real brand assets. Asana now shows the three-circle logo with the brand's yellow-to-red radial gradient. Notion now shows the correct N lettermark (the blocky diagonal N from the official brand, not a generic zig-zag). Missive now shows the crossed-M logo (two diagonal strokes with outward curves at the top) instead of a generic email envelope.
Fixed
- →Clicking a link in task descriptions or notes was opening the URL inside the Electron window — navigating away from the app. External http/https links now always open in the system browser via Electron's will-navigate handler.
- →MCP server hangs on long-running tool calls. The previous timeout called req.destroy() which closed the HTTP layer but left the SSE socket alive, so the connection kept blocking. The fix calls req.socket.destroy() to sever the underlying TCP connection, paired with a httpServer.setTimeout() backstop. A /health endpoint was also added so uptime checks don't need a tool round-trip.
v1.5.2
May 2026
Public betaWindows CI fixed. Recurrence now accepts full RRULE strings.
Fixed
- →check-imports.mjs crashed on Windows CI runners with "Cannot parse files: section from electron-builder.yml". The script was reading CRLF line endings verbatim — the regex expected Unix newlines and never matched. Line endings are now normalized before parsing, so the pre-build guard works correctly on both macOS and Windows.
Changed
- →create_task and update_task MCP tools now explicitly document RRULE string support in the recurrence field. Passing FREQ=WEEKLY;BYDAY=MO pins a weekly task to Monday regardless of when it's completed — the backend already supported full RRULE strings, but the tool description only listed the four shorthand values (daily, weekdays, weekly, monthly), so Claude wouldn't use the more precise form.
v1.5.1
May 2026
Public betaEncryption module bundled correctly. CI now catches missing files before build.
Fixed
- →crypto.js was missing from the electron-builder files list. The app would crash on launch after a clean install because the encryption module wasn't included in the bundle. Added check-imports.mjs — a pre-build script that walks all Electron entry-point imports and verifies every file is covered by the builder's files list. CI now catches missing bundled files before the expensive code-sign and notarize cycle.
v1.5.0
May 2026
Public betaYour data, encrypted. Settings, organized. Backups that just work.
Added
- →Encrypted cloud backups. Qalatra now backs up your task database to a dedicated R2 bucket using AES-256-GCM client-side encryption — the key never leaves your machine unencrypted. Backups fire automatically every hour, on app quit, and on demand from Settings. 30-day retention is enforced automatically. Restore from any backup with a single click; the app applies it on the next launch.
- →Encryption key management. Generate a 32-byte key stored in macOS Keychain via Electron safeStorage. Export it as base64 to store in 1Password or on a recovery drive. Import it on a new machine to restore access to your encrypted data. Encryption is optional — the app works without a key, but backups and attachment uploads will be unencrypted.
- →Encrypted attachments. Files uploaded to R2 after generating a key are encrypted before upload. Opening an encrypted attachment downloads and decrypts it locally before opening — nothing unencrypted touches the cloud.
- →Settings export / import. Export all your settings (S3 credentials, bucket names, agent config) as JSON for your recovery kit. Import JSON on a new machine to restore configuration instantly.
- →Settings redesigned as a full-screen tabbed view. Settings is now a proper sidebar section — same navigation as Priority, Code, and Reading. Five tabs: General (appearance, terminal, MCP), Storage (S3/attachment config), Encryption & Backup, Contexts, and Agents (with a Rescan button).
- →Agent dropdown optgroups. The Projects and Agents selectors in the task detail panel now use subheadings — Code Repos vs Projects, and Context-wide vs Project-specific — so you can tell at a glance which tier an option belongs to.
- →Heartbeat log expansion. Long agent run results in the Heartbeats history are truncated to a preview with a "show more" toggle to reveal the full output inline.
Fixed
- →Agent filtering in detail panel. Agents from unrelated projects were appearing in the agent dropdown when a task had a project set. The fix: only the explicit project field in agent.config is used for filtering — no folder-name fallback that could match incorrectly.
- →Boolean fields in update_task crashing. Passing inbox: true from Claude MCP threw a SQLite binding error ("unsupported parameter type"). Booleans are now coerced to 0/1 before binding in both the IPC handler and the MCP tool.
v1.4.2
May 2026
Public betaMCP works in dev without manual rebuilds. Recurring tasks keep their checklists.
Fixed
- →Dev MCP server ABI mismatch. After pnpm run electron-dev, the MCP server was crashing because rebuild:electron compiled better-sqlite3 for Electron's ABI, then the server ran under system Node with a different ABI. The dev server now uses the same Electron binary (ELECTRON_RUN_AS_NODE=1) as the production launchd service — one rebuild step covers everything. No manual npm rebuild needed.
- →Recurring tasks now carry forward their notes field and attached links. Previously, completing a recurring task would spawn the next occurrence with only the title, description, priority, context, and agent assignment — the task's checklist or notes were silently dropped. Timestamped note entries (the comments log) still clear on each recurrence, which is correct.
v1.4.1
May 2026
Public betaMCP server now runs on the right runtime — permanently.
Fixed
- →MCP server native module ABI mismatch. The launchd MCP service was running under system Node, but better-sqlite3 inside the app bundle is compiled for Electron's Node runtime. These ABIs diverge whenever Electron updates, causing all MCP calls to fail. The service now uses the Electron binary itself (with ELECTRON_RUN_AS_NODE=1) so the runtime always matches the bundled module — regardless of what Node.js version is installed on the system. The fix is automatic on next app launch.
v1.4.0
May 2026
Public betaNavigate your entire task list without touching the mouse.
Added
- →Keyboard shortcuts — navigate the full app without a mouse. Number keys 1–7 jump directly to any sidebar section (Priority, Code, Reading, Projects, Backlog, Habits, Heartbeats). Press j / k to move through task rows; c to complete the selected task; b to send it to the backlog. d opens Daily Note, , (comma) opens Settings, t toggles the terminal. Press ? at any time to show the full shortcut reference.
- →Shortcut reference overlay — press ? to reveal a clean reference card listing every shortcut, organized by Navigation, Tasks, and Help categories. Click anywhere outside or press Escape to dismiss.
- →Play button for agent tasks — tasks created with a code agent assignment now sit in your inbox until you click ▶. Clicking Play routes the task to the Code view and queues the agent job. Previously, MCP-created tasks with task_type=coding would auto-route immediately with no user confirmation.
v1.3.1
May 2026
Public betaAgents that run while you sleep. An MCP server that outlasts the window.
Added
- →Heartbeats — persistent scheduled agents that fire on a fixed interval. Configure a Claude Code agent path and a prompt; Qalatra queues the job, runs it, and tracks done/failed/pending counts. Intervals range from every 5 minutes to daily at a specific time (e.g. "every day at 8:00 AM"). Pause and resume without losing the schedule.
- →Heartbeats view — new ⚡ sidebar section. Create, configure, and monitor all heartbeat agents from one place. Shows live countdown to next run, run history counts, and inline toggle to pause/resume. Full edit form with agent picker and interval selector.
- →MCP server as a persistent system service (production). On first launch, Qalatra installs the MCP server as a macOS login item (launchd). It starts on boot, stays running whether or not the Electron window is open, and survives Electron restarts. App updates automatically reload the service — no manual steps. Claude's MCP connection is always alive.
- →MCP heartbeat tools — `create_heartbeat`, `list_heartbeats`, `update_heartbeat`, `delete_heartbeat`, `toggle_heartbeat`, `list_heartbeat_jobs`. Claude can now configure and monitor scheduled background agents entirely via MCP.
- →`assigned_agent` field on tasks. Tracks which agent is assigned to a task for filtering and display.
Fixed
- →Stale MCP server processes from previous sessions are now automatically evicted on startup. Previously, a leftover process would hold port 3457 and force a manual kill before the app could connect.
- →MCP server no longer runs inside Electron's utility process, eliminating the native module ABI mismatch that caused DB failures after certain Node version changes.
v1.2.2
May 2026
Public betaA new sidebar. A new way to route work. Everything in its place.
Added
- →Left sidebar navigation. Replaces the top tab bar with a persistent 160px sidebar: Priority, Code, Reading, Projects, Backlog, Habits. Handles the macOS traffic-light drag zone cleanly. Active agent count badge on the Code item.
- →Reading view. New task_type = 'reading' routes tasks — articles, docs, anything to read later — to a dedicated 📖 Reading section and off Priority. Assign via the detail panel or via MCP.
- →Task type toggle in the detail panel. Any task now shows a Type row with ⌨ Coding and 📖 Reading pills. One click routes the task to the right view; click again to reset. Hidden for events and reminders.
- →Code view with Idle section. Tasks with task_type = 'coding' now show in three sections: Running, Queued, and Idle. Previously, coding tasks with no active agent job were silently invisible. Fixed.
- →MCP server auto-restart via launchd. A launchd plist supervises the MCP server at port 3457 — crashes recover in under 5 seconds. Port conflicts now retry every 30s instead of crashing. New ping tool lets agents verify MCP is alive before starting a pipeline run.
- →Project combobox in new-task form. The project field is now a context-aware combobox: options are filtered to projects assigned to the selected context. Free-text entry still works for new project names.
- →Live agent filtering in new-task form. The agent dropdown narrows in real time as context and project change. Selecting a context or project immediately removes agents that don't match.
- →Projects dashboard. New ⊞ Projects view groups all active tasks by context → project, with per-project agent lists and recent completed tasks.
Fixed
- →Code view was empty when coding tasks had no active agent job. Running/Queued sections rendered fine; Idle tasks were fetched but never displayed.
- →Changing context in the new-task form left a stale project and agent selection that didn't belong to the new context.
v1.1.0
May 2026
Public betaA new name. The same conviction — your tasks, your machine, your agent.
Added
- →MCP server on localhost:3457. Thirty-four tools covering tasks, daily notes, habits, agents, and calendar. Any MCP-aware CLI agent — Claude Code, Cursor, Aider, or your own — connects with one command.
- →Background agent dispatch. Assign an agent.config to any task; Qalatra spawns it in a sandboxed runner, streams stdout into the task detail panel, and marks the task complete on exit. Failures surface with the real error, not a banner.
- →Scheduled agents. Drop a cron expression in agent.config and the agent runs on your local timezone — morning briefing at 8am, weekly review Sunday at 5pm, or whatever you need. Output routes to the task detail or today's daily note.
- →Daily notes with wikilinks. One markdown file per day, auto-created, full-text indexed. Your agent reads yesterday's via mcp:read_daily_note("yesterday"). Link tasks, people, and projects inline with [[brackets]].
- →Habit tracker with year-view. Name, cadence, streak — nothing else. Agent-readable via mcp:list_habits_today. Miss a day and the streak shows as broken but your best streak is preserved.
- →Inbox triage. New tasks land in Inbox until you give them a context and priority. ⌘⇧I to process. Your agent can triage the inbox for you.
- →Agent output_rules. Define regex patterns in agent.config — when a job completes, Qalatra matches agent stdout and can automatically attach deep links back to external resources.
- →Link chips in task detail. Attached URLs render as labeled chips (Asana, Linear, GitHub, Missive, etc.) in both the task row and detail panel.
- →Integrated terminal. Backtick to toggle; fullscreen with ⌘⇧↑. CWD follows your project. Docked or floating.
- →Light and dark mode with configurable color tokens. Follows your system preference by default; override per-session. Persisted in a cookie.
- →Universal macOS build. One DMG, arm64 and x64. Apple Silicon native.
Changed
- →Renamed from task-os to qalatra. Existing databases migrate automatically on first launch — no action needed.
- →MCP server binds to 127.0.0.1 only. If you were forwarding the port for remote dev, use an SSH tunnel instead.
- →Priority sort factors in agent availability. Tasks with an idle agent assigned bubble up.
- →Daily notes default template now includes a ## agent section the morning briefing writes to.