<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Pekan changelog</title>
    <link>https://pekan.cloud/changelog/</link>
    <atom:link href="https://pekan.cloud/feed.xml" rel="self" type="application/rss+xml"/>
    <description>New features, improvements, and fixes in the Pekan desktop app.</description>
    <language>en</language>
    <lastBuildDate>Wed, 02 Sep 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>A cleaner home for agent sessions (v0.212.0)</title>
      <link>https://pekan.cloud/changelog/v0-212-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-212-0/</guid>
      <pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The Agent panel now keeps its session list in an overlay drawer. Open the drawer when you want to switch conversations, then close it to give the active session the full width of the panel. The redesigned list is easier to scan, and the session close action is clearer while staying out of the way during normal work. Images attached to a conversation now appear as thumbnails in the composer before you send them. This makes it easier to confirm that you selected the right screenshots or reference images, especially when a message includes several attachments. The workspace action for opening a session is also more compact, leaving more room for the session title and status. Several reliability and polish fixes are included too. The integrated terminal keeps its intended size more consistently, agent run history is stable across different local time settings, and hosted projects handle a wider range of PostgreSQL queries correctly. Pekan account emails now support verification and password recovery, with clearer sign-in guidance on the account site. The homepage product demo and Getting started path have also been refreshed. Switch agent conversations from a new overlay drawer that leaves more room for the active session. Preview image attachments as thumbnails before sending a message. Use clearer, more compact controls for opening and closing workspace sessions. Improved integrated terminal sizing and agent run-history reliability. Pekan accounts now support email verification and password recovery. Refreshed the homepage product demo and Getting started path.</description>
    </item>
    <item>
      <title>Shortcuts that fit your workflow (v0.211.1)</title>
      <link>https://pekan.cloud/changelog/v0-211-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-211-1/</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Keyboard shortcuts are now customizable. Open Settings and use the new Keyboard Shortcuts section to change the keys for search, workspace actions, the file tree, Diff, task navigation, comments, and terminal clipboard actions. Pekan prevents conflicting combinations in the same context, shows which bindings are custom, and lets you reset one shortcut or restore every default. The shortcut reference in Help updates immediately to match your choices. Agent session tabs in the workspace now stay open when you switch projects and return during the same app session. Each project keeps its own set of session tabs and restores the one you were viewing, so moving between boards no longer makes you rebuild your workspace. Agent transcripts can also receive keyboard focus directly, making long conversations easier to navigate without a mouse. Signed macOS builds can now check for, download, and install future Pekan updates from inside the app. Version 0.211.1 is the bridge release, so it still needs to be installed manually; releases after this one can arrive through the Updates panel. A release only becomes visible after the Windows, macOS, and Linux downloads are all ready, reducing the chance of anyone encountering an incomplete release. The app shell no longer shows a second outer scrollbar on pages with tall content, and the website now gives new users a clearer path from the homepage to the Getting started guide and explains both manual and agent-assisted task creation. Customize app and workspace keyboard shortcuts in Settings, with conflict checks and reset controls. Workspace agent-session tabs stay open when you switch projects and return during the same app session. Signed macOS builds can install future updates through Pekan after this one-time manual bridge release. Releases become visible only after downloads for every platform are ready. Fixed a second outer scrollbar appearing on pages with tall content. Getting started now explains how to create tasks manually or with an agent.</description>
    </item>
    <item>
      <title>Open agent sessions in a workspace tab (v0.210.2)</title>
      <link>https://pekan.cloud/changelog/v0-210-2/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-210-2/</guid>
      <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Live agent sessions can now be opened in a tab in the main workspace, right next to Files and Diff, instead of living only inside their agent panel. Use the new Open in workspace action on any running session to pop it out; opening the same session again just refocuses its existing tab instead of creating a duplicate, and you can keep as many session tabs open at once as you want. The workspace tab and the agent panel show the exact same live session: new messages, streaming output, approval prompts, and status changes appear in both at the same time. Closing a workspace tab only closes that view, the session itself keeps running in its agent panel exactly as before. Several macOS reliability fixes landed together in this release. Pausing or stopping an agent session on macOS now correctly affects every process it spawned, not just the top-level one, so a coding agent that shells out to other tools actually stops when you ask it to. Launching Pekan from the Dock or Finder now finds command-line tools installed through Homebrew, nvm, and similar version managers as reliably as launching it from a terminal. Every macOS build is also checked before release to confirm sign-in and the voice-dictation microphone prompt are both wired up correctly. Pekan is a bit quieter across projects too: task and comment activity on the board now only reaches people actively viewing that project, instead of every open Pekan window regardless of which project it's showing. Finally, the changelog's own pagination is fixed: older release pages like this one now load correctly instead of occasionally 404ing, whether you click through from here, open the link directly, or refresh. Open agent sessions in a workspace tab alongside Files and Diff, kept in sync with the agent panel. Pausing or stopping an agent session on macOS now stops every process it spawned, not just the top-level one. Launching Pekan from the Dock or Finder on macOS finds Homebrew/nvm-installed CLIs as reliably as a terminal launch. Every macOS build now verifies sign-in and microphone permissions before release. Board activity updates are now scoped to the project you're viewing. Fixed changelog pagination pages occasionally returning a 404.</description>
    </item>
    <item>
      <title>Signed and notarized macOS builds (v0.209.2)</title>
      <link>https://pekan.cloud/changelog/v0-209-2/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-209-2/</guid>
      <pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan for macOS is now signed with an Apple Developer ID and notarized by Apple. Downloading the .dmg or .zip and opening Pekan works the normal way now: unzip or mount, drag Pekan into Applications, and launch it. You no longer need to right-click and choose Open to get past Gatekeeper, and you won't see the "Pekan can't be opened because Apple cannot check it for malicious software" or "app is damaged" messages that unsigned builds triggered. If you worked around this on an earlier version by clearing the quarantine flag from Terminal, that step isn't needed going forward. A SHA256SUMS-mac.txt checksum file is still published alongside every release if you'd like to verify a download before running it, but notarization now gives you Apple's own guarantee that the build came from a known publisher and hasn't been tampered with since it was signed. macOS downloads are signed with an Apple Developer ID and notarized by Apple. Opening Pekan on macOS no longer triggers a Gatekeeper warning or needs the right-click-Open workaround.</description>
    </item>
    <item>
      <title>Create tags and milestones without leaving the board (v0.209.0)</title>
      <link>https://pekan.cloud/changelog/v0-209-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-209-0/</guid>
      <pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The Tags and All milestones filters in the Tasks toolbar can now create a new tag or milestone directly, instead of sending you somewhere else to do it. Pick a name, and for tags a color, then the new one becomes the active filter right away, so it's obvious there's nothing in it yet until you tag or link a task to it. That toolbar also reflows properly now: when the Agent panel, Files/Diff panel, sidebar, and terminal are all open at once and narrow the workspace, the milestone and tag controls wrap onto their own row instead of folding over each other. Attaching a task to the Agent panel, whether starting a new session or adding one to a conversation that's already open, now shows which task is attached right away, both in the session header and before you send your first message. It stays visible for the life of the session instead of only appearing once a message has gone out. If you delete an isolated worktree's folder outside Pekan, its entry no longer gets stuck showing missing on disk forever. A Remove from Pekan action clears the leftover registration while keeping the branch and any commits on it intact. The Agent working badge is more reliable now: it lights up from any task update an agent makes, not only from an optional heartbeat. Agents that already know which task to work on can also claim it directly with a new claim_task tool, instead of only being able to ask Pekan to pick one for them. Three macOS-specific issues are fixed: the window's traffic-light controls no longer overlap the app menu and logo, coding agent CLIs installed via Homebrew, nvm, or similar are found again when Pekan is opened from Finder or Spotlight (with a Check again button if one is still missing), and the built-in terminal now opens a shell reliably. The Tags and All milestones filter dropdowns can create a new tag or milestone directly. The Tasks toolbar no longer overlaps at narrow workspace widths. The Agent panel shows the attached task immediately, for the whole session. Worktrees missing on disk can be removed from Pekan without losing their branch or commits. A new claim_task tool lets an agent claim a task it already knows about directly. The Agent working badge now reflects any task update, not just heartbeats. Three macOS fixes: window controls, CLI detection from Finder/Spotlight, and the terminal.</description>
    </item>
    <item>
      <title>Faster boards, safer dependencies (v0.208.0)</title>
      <link>https://pekan.cloud/changelog/v0-208-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-208-0/</guid>
      <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Boards now scale to much larger projects without slowing down. A column that has grown past a couple dozen cards no longer renders every one of them at once: it shows the first batch with a Show more button to reveal the rest, so opening a busy board stays fast. This doesn't affect drag-and-drop or the totals shown in column headers, which still reflect every task, not just what's currently mounted. The Agent button on a task's detail page now visibly does what it always meant to: it prepares that task for your next agent session, or if a session is already open, adds it as a mention to the draft instead of silently doing nothing or replacing what you were already working on. It's relabelled Add to Agent panel to say so, and the panel gets keyboard focus the moment the task is attached, so you can keep going without reaching for the mouse. Setting up a new project's context is faster on desktop: opening the Project Context panel now reads package.json, CLAUDE.md, and README.md from the project folder and pre-fills empty dev, test, and build commands along with any notes it can infer, all left for you to review and adjust before saving. Nothing is overwritten if you've already filled a field in yourself. Task dependencies are more trustworthy now. Creating a dependency that would point a task at itself, duplicate a link that already exists, or close a cycle, such as A depends on B and B depends on A, or a longer chain back to A, is rejected instead of silently accepted, so dependency counts and the graphs built from them can't quietly drift out of sync with reality. Voice requests through Ask Pekan no longer hang indefinitely if the connection stalls: a request that doesn't get a response within 30 seconds now fails cleanly instead of leaving you waiting with no feedback. Board columns now page large lists instead of rendering every card at once. The task-detail Agent button now attaches the task instead of just opening the panel, and is relabelled Add to Agent panel. Project Context auto-detects dev, test, and build commands and notes from your project files on desktop. Creating a dependency that would self-loop, duplicate, or close a cycle is now rejected. A stalled Ask Pekan voice request now times out after 30 seconds instead of hanging.</description>
    </item>
    <item>
      <title>Fewer scores, clearer launches (v0.207.0)</title>
      <link>https://pekan.cloud/changelog/v0-207-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-207-0/</guid>
      <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Review now covers security risk alongside correctness, quality, and regressions, so the separate Security pass action has been retired. Launching Review checks authentication and authorization boundaries, input validation, secret and credential handling, sensitive data exposure, unsafe command or file access, dependency risk, and misuse of trust or permission boundaries, in addition to everything it already looked at. Findings still land as a task comment with the same severity and evidence you're used to, and stay proportional to the change rather than forcing security commentary onto every task. A saved reference to the old Security pass action fails gracefully instead of breaking. The Agent readiness fraction is gone from task cards and task detail. A task missing an optional time or token estimate no longer looks less ready than one that has them, and there's no replacement score to read into. When you actually launch an agent, Pekan still tells you exactly what would stop the run, such as a task blocked by an unresolved dependency, and explains what to do about it instead of showing a checklist. The Agent Action confirmation dialog no longer jumps back to the top or collapses the prompt, execution rules, or command you were reading while it refreshes in the background. Expand Technical details, scroll through a long prompt, and leave the dialog open without losing your place or your selection. You can now set how much a background Claude Code Agent Action is allowed to spend before Pekan stops it, from Settings, instead of a fixed two-dollar limit. Review now includes security checks; the separate Security pass action is gone. No more readiness fraction on task cards or in task detail. A blocked task explains why it can't launch instead of scoring it. The Agent Action dialog keeps its scroll position and expanded Technical details while it refreshes. New Settings option to set the spend limit for background Agent Action runs.</description>
    </item>
    <item>
      <title>A focused public alpha (v0.206.0)</title>
      <link>https://pekan.cloud/changelog/v0-206-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-206-0/</guid>
      <pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The public alpha keeps Pekan focused on the parts of the product that are ready to use today. Roadmap planning, Telemetry usage insights, and the broader Intake experience are not yet available in this build, so you won't run into unfinished menu items, search results, links, or documentation pages for them. This gives the team room to keep improving Roadmap planning, make usage insights trustworthy, and rethink Triage as a broader Intake experience before bringing them to everyone. Local AI usage capture is part of that same pause: it stays unavailable in project settings while Telemetry is refined, so you won't see a setting that has nothing to show yet. Nothing else about your projects, tasks, or existing workflow changes. As Roadmap, Telemetry, and Intake are ready, they'll arrive for everyone with the same care taken to keep the app feeling coherent and uncluttered. Roadmap planning, Telemetry, and Intake are not yet available in the public alpha. No unfinished menu items, search results, links, or documentation pages for those areas. Local AI usage capture stays hidden in project settings until Telemetry is ready. Everything else about your projects, tasks, and workflow is unchanged. These areas will roll out to everyone once they're ready.</description>
    </item>
    <item>
      <title>A more capable and less intrusive Ask Pekan (v0.205.0)</title>
      <link>https://pekan.cloud/changelog/v0-205-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-205-0/</guid>
      <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Ask Pekan can now use your selected local ACP provider as a reasoning layer when the built-in voice router cannot understand a request on its own. This makes the assistant useful beyond task lookup: it can resolve projects and destinations, open the main Pekan pages and project panels, prepare a new terminal, insert a terminal command for review without executing it, or propose starting a visible agent session with workspace access. Potentially destructive actions still stop for explicit confirmation, while unambiguous navigation remains immediate. Settings now lets you choose an installed ACP provider and one of the models that provider actually advertises. Model discovery survives an app restart by restoring the hidden assistant session long enough to load its current configuration. Voice input and assistant output can use different languages. Choose a preferred output language in Settings and Pekan asks the assistant to translate natural-language dictation and prompts while preserving task IDs, names, URLs, file paths, code, commands, and text inside backticks. The global control has moved to the bottom center so it is less likely to cover important controls, includes a microphone icon, and responds to Ctrl or Command plus Shift plus D. Listening, reasoning, and applying are now visibly different states, with an animated reasoning indicator instead of a misleading applying label. Floating status messages can be dismissed, and generic unsupported-task warnings no longer crowd the review card when they do not help explain the request. The composer also has a taller input area and a convenient keyboard shortcut for starting dictation where you are already working. Ask Pekan can use a selected local ACP provider and model for semantic voice requests. Voice requests can navigate Pekan, prepare terminal interactions, and propose visible agent sessions. A preferred output language translates natural-language results while preserving operational text exactly. The centered Ask Pekan control adds a microphone icon, Ctrl or Command plus Shift plus D, and distinct reasoning feedback. Floating assistant messages are dismissible, and unhelpful generic task warnings no longer appear in the review card.</description>
    </item>
    <item>
      <title>Ask Pekan by voice, safer setup repair, and clearer agent sessions (v0.204.0)</title>
      <link>https://pekan.cloud/changelog/v0-204-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-204-0/</guid>
      <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The global voice control is now a single Ask Pekan entry point instead of a set of modes you had to understand before speaking. Pekan infers whether a request should navigate, search, dictate, or propose a board change from the words themselves. You can ask it to open Settings, Help, Activity, Workflows, Agent Actions, a project view, or a task by its display ID, and you can search tasks without first choosing the right mode. Navigation happens immediately when the destination is unambiguous. If a project or task name could mean more than one thing, Pekan presents a short choice instead of guessing. Board changes remain reviewable before they are applied, and the microphone control now uses clear start and stop states rather than requiring a press-and-hold gesture. Codex telemetry is more complete and project setup is less fragile. MCP lifecycle runs can now be correlated with the Codex provider session that produced them, so exact model and token usage can reach the correct scoped or unscoped run after each completed turn. Cumulative usage reports are checkpointed, which makes retries, duplicate hooks, resumed threads, and out-of-order reports safe without double counting. On startup, Pekan also repairs its own project setup files when the fix is known to be safe, including managed configuration, the MCP proxy, agent instructions, and local capture hooks. Anything ambiguous, destructive, remote-managed, or dependent on fresh provider consent is still left for the manual Repair setup flow. Agent work is easier to follow while it is happening. MCP lifecycle runs now publish the same temporary working presence shown for other agent activity, and a new Security pass action gives task-level reviews a focused way to look for concrete security problems without changing code. The Agent Panel also stops showing a previous conversation while a newly selected session is still loading. It displays an explicit loading or unavailable state, clears stale transcript content between sessions, and only shows the composer when the selected session can actually accept a message. Together these changes make the board's activity signal, session history, and available controls reflect the work that is really active rather than the last state the interface happened to render. Ask Pekan now infers voice intent and can open views, projects, tasks, and searches without a mode selector. Codex usage reports correlate with the correct MCP lifecycle run and remain safe across retries and resumed sessions. Pekan safely repairs its managed project setup files on startup while leaving ambiguous changes for manual review. Agent Panel session switches show accurate loading, history, and composer states instead of stale conversation content. MCP lifecycle work publishes task presence, and Security pass is now available as a built-in Agent Action.</description>
    </item>
    <item>
      <title>Current Git branch on the collapsed Project rail (v0.203.0)</title>
      <link>https://pekan.cloud/changelog/v0-203-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-203-0/</guid>
      <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The collapsed Project rail, the vertical strip on the right edge of the Workspace page when the Files/Diff panel is closed, already showed how many files had changed in a linked directory. It now also shows the current Git branch just below that count, so the active branch is visible without reopening the panel. The label sits vertically like the rest of the rail, is truncated so it never widens the fixed-width rail, and carries the full branch name in a tooltip and accessible label for both mouse hover and keyboard focus. Screen readers announce it clearly as the current branch alongside the existing changed-file count. A detached HEAD is represented truthfully rather than pretending to be a branch: it shows a short commit id instead. Directories with no linked path, no Git repository, or where Git could not be queried simply show no label at all rather than a misleading placeholder, and a temporary Git error keeps the rail's layout stable and recovers automatically on the next successful refresh. The branch stays current after a checkout, a new branch, a worktree switch, or any other repository change, using the same background refresh that already keeps the file count up to date, so nothing needs a restart or a manual reload to stay accurate. The collapsed Project rail now shows the current Git branch below the changed-file count. Long branch names are truncated visually, with the full name available via tooltip and accessible label. A detached HEAD shows a short commit id instead of a misleading branch name. The branch updates automatically after checkouts, new branches, worktree switches, and other repository changes, with no restart required.</description>
    </item>
    <item>
      <title>Agent setup guidance, Telemetry capture awareness, and Agent panel fixes (v0.201.0)</title>
      <link>https://pekan.cloud/changelog/v0-201-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-201-0/</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Resuming an Agent panel session after closing it could leave a stale Action needed permission card on screen even though Auto approve was active and the command had already run, and clicking Deny, Allow once, or Always allow did nothing. The cause was a permission request id that could be reused across a reconnect, which let a later resolution update the wrong, already-settled card instead of the live one. Permission and elicitation request ids are now unique per request rather than per connection, so a resumed session's approvals resolve correctly and the on-screen state always matches what actually happened. The Sessions sidebar's collapse toggle also moved to the right edge of its header, matching every other collapsible panel in the app instead of sitting to the left of the label. New projects with a linked directory now get a nudge when Agent setup needs attention. After creating a project or attaching a directory, Pekan runs its existing lightweight setup-health check without touching any files, and shows a compact, dismissible callout when something repairable is missing or stale, such as an out-of-date MCP proxy or agent instructions. The callout never appears just because optional local usage capture is turned off, links straight to Agent setup, and remembers a dismissal until the directory changes or a new issue appears. Completing Repair setup and confirming health clears it automatically. Turning off Capture local AI usage no longer leaves the Telemetry tab's Runs view looking like a project with zero activity. Board Flow and Tasks metrics stay exactly as useful as before, since neither depends on local capture, and the Runs view now explains when local capture is off, keeps any existing or independently reported runs (including Agent Actions) fully visible, and offers a direct Enable capture action into the project's settings. The post-creation planning prompt's dark-theme borders were also fixed: the empty-project button and the Plan with an agent group previously showed a stray near-white outline from an unrecognized CSS class, and now use the same theme-aware borders as every other control. Fixed a bug where resuming an Agent panel session could leave a stale, non-functional permission prompt on screen despite Auto approve being active. Moved the Sessions sidebar's collapse toggle to the right edge of its header, matching other panel toggles. Added a dismissible callout that guides a new project toward completing Agent setup when a repairable issue is found. Telemetry's Runs view now distinguishes disabled local capture from having no activity yet, and offers a direct Enable capture action. Fixed bright, near-white borders on the post-creation planning prompt in dark themes.</description>
    </item>
    <item>
      <title>A complete guide to the Agent Panel (v0.200.1)</title>
      <link>https://pekan.cloud/changelog/v0-200-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-200-1/</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The Pekan documentation now has a dedicated Agent Panel guide for anyone starting or steering a conversational coding session. It walks through installing the Codex ACP or Claude Agent ACP adapter, opening a project-scoped session, choosing read-only or write access, and deciding between reviewing each request and automatic approval. A compact comparison explains when to use the Agent Panel, an Agent Action, or a Workspace terminal, so the differences in interaction, repeatability, and worktree behavior are clear before work begins. The guide follows the whole session lifecycle: attaching task context, understanding the working badge, sending files and messages, answering access prompts and questions, queueing editable follow-ups, stopping a turn, switching through project session history, closing, resuming, and reviewing file or Git changes. It also documents the exact approval boundary, including the important warning that a linked project directory is not an operating-system sandbox for the adapter process or its own tools. Privacy and troubleshooting sections explain what prompts, task context, attachments, project content, and board tools can reach the selected local adapter or provider. They also cover missing adapters, failed starts, projects without a linked directory, non-Git folders, unavailable board tools, refused access, disconnected sessions, and provider-gated commands. The in-app Help page now links directly to this guide, and the related setup, views, and Agent Actions pages point to it without duplicating the full instructions. A task-based Agent Panel guide covering setup, sessions, access, approvals, task context, queues, history, diffs, privacy, and troubleshooting. A compact comparison of Agent Panel sessions, Agent Actions, and Workspace terminal launches. Concrete safety examples distinguish Pekan-mediated scope checks from full operating-system isolation. In-app Help and related website documentation now link directly to the guide.</description>
    </item>
    <item>
      <title>Working badges for the Agent panel and terminal task sessions (v0.200.0)</title>
      <link>https://pekan.cloud/changelog/v0-200-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-200-0/</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The board's green "working" badge previously only lit up for tasks driven by an Agent Action. A task actively being worked from an Agent panel session, or from a terminal session launched against it, showed no live indicator at all, even while the session or process was genuinely running. This release extends the same live presence signal Agent Actions already publish to both of those surfaces, so the badge and its accompanying identity pill now reflect real work happening anywhere in Pekan, not just one launch path. An Agent panel session now publishes presence for the whole turn it has in flight against an attached task, including any pause while it waits on a permission or input request, and clears the moment the turn ends, the session closes, or the app reconnects to a session that is no longer busy. A terminal session launched interactively against a task does the same for as long as its process is alive, and keeps clearing correctly even after navigating away from the Workspace view where the terminal tab lives. Multiple sessions working the same task, or different tasks, are tracked independently, so one session finishing never clears another's badge. Nothing changes about how Agent Actions behave, and no session gains new ownership or claiming behavior: read-only and exploratory sessions show the same transient working indicator as before, without ever changing who a task is assigned to. Agent panel sessions now publish the board's working badge for the task they're attached to while a turn is in flight. Terminal sessions launched against a task publish the same badge for as long as the process is alive, even after navigating away. Multiple concurrent sessions on one task, or across tasks, are tracked independently. No change to Agent Actions or to task claiming and assignment behavior.</description>
    </item>
    <item>
      <title>Dictate messages into the Agent panel composer (v0.199.0)</title>
      <link>https://pekan.cloud/changelog/v0-199-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-199-0/</guid>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The Agent panel composer now offers a microphone control for dictating a message before sending it, reusing the same recording and transcription pipeline that already powers Triage capture rather than building a second one. When the voice add-on is enabled in Settings, a mic button appears beside the attachment control. Clicking it starts recording, visibly indicated on the button itself; clicking again stops the recording and sends it for transcription, while a separate cancel control discards the recording outright without transcribing anything. The transcript is inserted at wherever the cursor was in the draft, so text already typed is preserved rather than replaced, and the result stays fully editable. Nothing is ever sent automatically: review, edit, or delete the dictated text like anything else typed into the composer, then send it the normal way. Because dictation only ever produces ordinary composer text, it works the same regardless of which agent a session is connected to, and a dictated message can be queued exactly like a typed one while a turn is already running. Denied microphone access, a missing microphone, an unconfigured transcription key, an offline connection, and a failed or empty transcription all leave the existing draft untouched and show an actionable message rather than silently failing. The control makes clear that transcription runs through the OpenAI API key and model configured in Settings and may incur its own usage, separate from a Codex or Claude subscription. Recording audio is never written to disk or attached to the session, and the microphone is released as soon as recording stops, the panel closes, the session changes, or the composer unmounts. A microphone control in the Agent composer reuses Pekan's existing dictation pipeline rather than a second implementation. Dictated text is inserted at the caret, preserving anything already typed, and is never sent automatically. Works identically across Codex, Claude Code, Mistral Vibe, and OpenCode sessions, and can be queued while a turn is active. Microphone denial, missing configuration, offline state, and transcription failure all leave the draft untouched with an actionable message. The UI discloses that transcription uses your configured OpenAI API key and may incur its own usage.</description>
    </item>
    <item>
      <title>Slash commands and context compaction in the Agent panel (v0.198.0)</title>
      <link>https://pekan.cloud/changelog/v0-198-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-198-0/</guid>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan now reads the slash commands a connected ACP provider advertises instead of discarding them. Typing / at the start of the Agent composer opens an accessible, keyboard-navigable picker listing every command the active Codex ACP or Claude ACP session currently offers, along with its description and, where relevant, a hint for the text it expects. Selecting a command inserts it into the composer, adding a trailing space only when the command takes further input, so a command like /compact is left ready to send and one that expects an argument is left ready to type. Typing and sending plain text still works exactly as before: the picker is a shortcut, not a requirement. When the connected provider advertises a command literally named compact, a new "Compact context" control appears beside the session's context usage reading. Activating it submits /compact through the same prompt path as any typed message, so Codex ACP and Claude ACP each handle it with their own compaction behavior; Pekan does not implement compaction itself, and it never infers support from which provider is connected or from a built-in command list. The control only appears when the adapter actually offers a compact command, and it is disabled while a turn is already running, so activating it can never be mistaken for compacting mid-turn. It becomes available again once the session goes idle. Advertised command lists are tracked per session and replace the previous list wholesale each time the provider sends an update, so switching between sessions or reconnecting never shows commands left over from a different conversation. An empty, malformed, or duplicated command list is handled without crashing the session or leaving stale entries behind in the picker. Typing / opens an accessible picker of the commands the connected provider actually advertises. Selecting a command inserts it, adding a trailing space only when it expects further input. A "Compact context" control appears only when the provider advertises a compact command, and submits /compact through the normal prompt path. The control is disabled while a turn is active, so it never implies immediate compaction while merely queued. Advertised commands are tracked per session and never leak between sessions.</description>
    </item>
    <item>
      <title>Editable follow-up queues for Agent sessions (v0.197.0)</title>
      <link>https://pekan.cloud/changelog/v0-197-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-197-0/</guid>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. You can now line up the next instructions while an Agent session is still working. Sending during an active turn adds the message to a visible first-in, first-out queue instead of interrupting the agent or making you wait at the composer. Each waiting row shows its place in line, keeps its task context and attachments, and can be edited or removed until dispatch begins. The Stop control remains available beside the new queue action, so preparing later work never takes away control of the turn already running. Pekan owns the queue per session and saves it with the session record. Waiting messages survive panel navigation and an app restart, and they are submitted one at a time only after the previous turn finishes successfully. Repeated completion events cannot send the same item twice. If a connection fails, a restart catches a message during dispatch, or a persistent provider session needs to be resumed, the affected item stays visible with a clear failure state instead of disappearing or moving later messages ahead of it. Failed items can be retried or removed. Editing keeps the original queue position, and deleting an item closes the gap without disturbing the order around it. A message locks as soon as dispatch starts, then moves into the conversation transcript when Pekan hands it to the provider. Cancellation and other non-successful stop reasons leave later messages waiting for an explicit user action, preventing unexpected work from starting after a session was deliberately stopped. Compose and queue follow-up instructions while an Agent turn is active. Edit or remove waiting messages without changing their FIFO position. Queues persist across navigation and restart, with duplicate-dispatch protection. Failed messages stay visible and offer retry or removal controls. Cancellation never launches the next queued instruction automatically.</description>
    </item>
    <item>
      <title>Keyboard shortcuts for the Agent and Files/Diff panels (v0.196.0)</title>
      <link>https://pekan.cloud/changelog/v0-196-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-196-0/</guid>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The Agent and Files/Diff panels can now be toggled without reaching for the mouse. Ctrl+Shift+A (Cmd+Shift+A on macOS) shows or hides the Agent panel, and Ctrl+Shift+E (Cmd+Shift+E) does the same for the Files/Diff panel beside it. Both are app-scoped: they only act while Pekan is focused, and neither registers as a system-wide shortcut, so they never compete with anything else running on the desktop. Toggling a panel never touches what is inside it. An active agent session, an unsaved file, or the file you were reviewing in the diff view all stay exactly as they were because their state remains in the workspace and session stores while the panel is collapsed. Opening a panel back up restores its previous width, its selected tab (Files or Diff), and whatever the session sidebar or file tree had focused, so the shortcut behaves like a show/hide toggle rather than a reset. Focus moves with the panel: opening one lands you on a sensible starting point inside it (the composer for an active agent session, or the focused file or diff row), and closing one returns focus to wherever it was before you opened it. The shortcuts stay out of the way of anything that needs exclusive keyboard input, such as a confirmation dialog or Quick Open, and they do not interfere with typing in the editor, the terminal, or the agent composer. The terminal in particular gets special handling, since terminals otherwise cannot tell Ctrl+Shift+A apart from plain Ctrl+A. The panel toggle buttons and their tooltips, along with the Help page's keyboard-shortcut reference, now show the binding for whichever platform Pekan is running on. Ctrl/Cmd+Shift+A toggles the Agent panel; Ctrl/Cmd+Shift+E toggles the Files/Diff panel. App-scoped only: no system-wide registration, no interference with typing in editors, the terminal, or the agent composer. Closing a panel preserves its session, unsaved files, and view state; reopening restores width, tab, and focus. Tooltips and the Help shortcut reference display the correct binding per platform.</description>
    </item>
    <item>
      <title>A session sidebar for the Agent panel, and access decisions that fold away (v0.195.0)</title>
      <link>https://pekan.cloud/changelog/v0-195-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-195-0/</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The Agent panel now carries its own session list. It is a slim column at the left edge of the panel, about half the visual weight of the Project and Agent sidebars around it, and it lists only the sessions belonging to the project you are in. It is there on the new-session screen and it stays there inside an open conversation, so returning to yesterday's session no longer means pressing the plus button and hoping. The plus button now means exactly what it looks like: start something new. Sessions are ordered by their real latest activity, newest first, and the time each row shows is the same value the order was built from. A finished turn counts as activity, so a conversation the agent worked in for ten minutes no longer sorts as though it went quiet the moment you pressed send. The list reorders itself as work happens, with no need to navigate away or restart. Ties fall back to creation time and then to a stable identifier, so rows never swap places under the pointer. Each finished session can be removed from the history, with a confirmation that says exactly what that means: the conversation and Pekan's record of it are removed, while project files, Git branches and worktrees, linked tasks, and anything the agent already changed are left untouched. A session that is still running cannot be removed at all; its control explains that you close it first. Remove the session you are looking at and the panel lands on the next most recent one, or on the new-session screen when it was the last. The sidebar collapses to a narrow rail that still shows how many conversations the project has, and the choice persists across restarts. On a narrow panel it stays a rail and says so rather than squeezing the conversation. Arrow keys walk the list, Home and End jump to its ends, and the collapse control reports its state to screen readers. Access requests in the conversation have been condensed as well. A request still waiting on you stays fully expanded and is marked as needing action. The moment you answer, it folds into a single row that states the outcome first: allowed once, allowed for this session, denied, or denied for this session. Expanding that row shows the original request, the options that were offered, which one you picked, and a plain statement that the decision has already been sent to the agent and cannot be changed. Requests that never became access are now clearly distinct from those that did. Stopping a turn, a session ending first, a request the agent left unanswerable, a request that could not be put to you, and a choice refused by the session's write scope each get their own summary, and none of them can be mistaken for approval. A session that ends while a request is on screen now settles that request instead of leaving live-looking buttons behind forever. Collapsing keeps your place in the conversation and moves focus to the row rather than dropping it. A collapsible, project-scoped session sidebar in the Agent panel, on both the new-session screen and inside a session. Sessions sort by real latest activity, newest first, and reorder live. Finished sessions can be removed, with a confirmation that spells out what is not touched. Answered access requests collapse to one row that states the outcome. Cancelled, failed and scope-refused requests read distinctly from granted access.</description>
    </item>
    <item>
      <title>Choose where Agent Actions run, and polish comments and scrolling (v0.193.0)</title>
      <link>https://pekan.cloud/changelog/v0-193-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-193-0/</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Agent actions used to force a choice before you opened anything. Running an action from a task menu started a background run, and watching an agent work meant reaching for a separate Terminal command that knew nothing about the action you had in mind. The Agent Action dialog now carries a Launch in terminal checkbox, unchecked by default, so the decision sits next to the provider, the additional instructions and the isolated-worktree option you were already setting. Leave the box unchecked and nothing changes: the action runs in the background and reports into Activity exactly as before. Tick it and the same action opens in a Workspace terminal tab instead, running the provider you selected on the action prompt, the task or project context, and any additional instructions you typed. The isolated-worktree choice still applies, so the session opens either in your project checkout or in the freshly prepared worktree. The confirm button changes to Open in terminal so the outcome is clear before you commit to it, and the option only appears on the desktop app, where there is a terminal to open. Because the launch decision now lives in the dialog, the standalone Terminal entry has been removed from the task card menu. Cancelling the dialog, or a launch that fails because the provider is missing, leaves nothing behind: no background run, no claim on the task, and no abandoned worktree. Separately, posting a task comment no longer shows the comment twice. Pekan was adding the saved comment to the list and then adding the realtime broadcast of that same comment on top of it, so a duplicate pair appeared until you navigated away and back. Comments are now reconciled by their identifier wherever they are shown, which also keeps things correct when the realtime event arrives before the save completes, when an event is delivered more than once, and when the connection reconnects and replays. A comment from another person still appears exactly once, and a failed post leaves the list untouched so you can retry safely. Scrollable panes now keep a continuous themed surface where horizontal and vertical scrollbars meet. Chromium previously painted that small corner with its opaque default, which could appear as a bright white square in dark themes, especially in the source-control diff viewer. The corner now follows the surrounding surface in every theme without changing scrollbar behavior, covering content, or interfering with resize handles. A repository check protects all custom scrollbar styles from regressing, and the diff viewer has coverage for simultaneous horizontal and vertical overflow. Launch in terminal is a checkbox in the Agent Action dialog, unchecked by default. The terminal session receives the action prompt, context, provider, instructions and worktree choice. The separate Terminal item is gone from the task card menu. Posting a comment renders one entry instead of a duplicate pair. Dual-axis scrollbar corners now blend into the surrounding themed surface.</description>
    </item>
    <item>
      <title>Activity now shows every agent run, not only the ones Pekan launched (v0.192.0)</title>
      <link>https://pekan.cloud/changelog/v0-192-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-192-0/</guid>
      <pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The Agents tab on Activity now uses persisted run history as its foundation. That means work started directly from Codex, Claude Code, Mistral Vibe or OpenCode appears alongside runs launched inside Pekan, and the history survives an app restart. The completed-run count in Since your last visit now opens the records behind that count instead of leading to an empty tab when Pekan did not own the original process. Each row keeps the context the agent reported: provider and registered agent, model, project, task, action, start and end times, active duration, terminal result, delivery or review result, and measured tokens and estimated cost. Missing measurements stay visibly unknown rather than turning into zero. Work without a task is labelled Unscoped work, so project-level sessions remain identifiable instead of disappearing. Pekan still adds the richer live layer when it owns the process. Active local runs keep their streaming output and pause or stop controls, while historical and externally started runs show no controls that cannot work. Persisted and live copies are deduplicated, resumed sessions are grouped into readable work periods, and project filtering, pagination and live terminal updates all operate on the same durable feed. Direct Codex, Claude Code, Mistral Vibe and OpenCode sessions appear in Activity. Unscoped work is labelled clearly and retains its known project and telemetry context. Live output and controls stay available only for processes Pekan currently owns. Resumed work periods are grouped, and unknown usage or cost is never shown as zero.</description>
    </item>
    <item>
      <title>Change how an agent session handles approvals without restarting it (v0.191.0)</title>
      <link>https://pekan.cloud/changelog/v0-191-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-191-0/</guid>
      <pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Approval handling used to be decided once, when a session started, and that was that. If you began a conversation on automatic approval and then reached the part where the agent starts changing files, tightening up meant throwing away the session and the transcript with it. The session header now carries a small Approval mode control with two options, Ask each time and Auto approve, showing which one is live and letting you switch at any point. Switching applies to what comes next, and only that. The adapter is not reconnected, the transcript is not cleared, and a turn already in progress keeps running, because the mode is simply how Pekan answers requests as they arrive. A request that is already on screen waiting for you is left exactly where it is: switching to Auto approve will not reach back and answer the question you were reading, and switching to Ask each time will not try to take back an approval that has already been sent. Write scope is unchanged by any of this. A session started read only stays read only in both modes, because automatic approval is only ever allowed to pick from the options the session scope already admits, and an option outside the scope is still shown, explained and refused. Each session keeps its own setting, so collapsing the panel, navigating elsewhere in the app, or switching between two sessions in the same project all leave each conversation with the choice you made for it. Ask each time and Auto approve can be switched mid-session from the session header. The change affects later requests only, and never answers one already waiting for you. No reconnect, no cleared transcript, no interrupted turn. Write scope is still enforced in both modes, and each session keeps its own setting.</description>
    </item>
    <item>
      <title>Agent conversations stop drowning in tool output (v0.190.0)</title>
      <link>https://pekan.cloud/changelog/v0-190-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-190-0/</guid>
      <pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. A long agent session used to give a finished file read exactly as much room on screen as the answer you were waiting for. Tool calls now earn their space. A call that is still pending or running stays open, because that is the live work. A call that failed stays open too, since an error is the one thing nobody should have to click to find. A call that simply succeeded folds into a single row showing its status, what it did, a short result summary, and the time, so scrolling back through a long turn is reading a list rather than wading through output. Everything is still one click away. Any tool call can be opened or closed, including completed ones, with the mouse or the keyboard, and a card you chose to open stays open while the agent keeps revising it. Long text and terminal output now start as a short preview with a Show full output control and a matching Show less, and the count of withheld lines is shown so you know what you are asking for. A proposed file change leads with its file name and how many lines it adds and removes, with the full text behind one control and the existing option to open it in the Files and Diff panel beside the conversation. Runs of three or more completed calls in the same turn collapse further, into one Activity row that says how many there were. Opening it reveals the same compact rows rather than every output at once. Anything that needs you, or is still happening, is deliberately kept out of it: running and failed calls, permission prompts, questions from the agent, plans, and both sides of the conversation all stay in the transcript where you can see them, and a group never spans two of your messages. The transcript still follows new output only while you are at the bottom, and opening a disclosure never yanks the view. The collapsed Agent panel also now shows a robot icon instead of sparkles, matching how the panel is described everywhere else in the app. Completed tool calls collapse to one row; running and failed ones stay open. Long output and diffs start as a bounded preview with Show full output and Show less. Three or more consecutive completed calls fold into a single Activity row. Permission prompts, plans, failures and messages are never hidden inside a group. The collapsed Agent rail uses a robot icon.</description>
    </item>
    <item>
      <title>The task list now opens on what actually moved (v0.189.0)</title>
      <link>https://pekan.cloud/changelog/v0-189-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-189-0/</guid>
      <pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. List view used to open sorted by task ID, oldest first. On a project with a few hundred tasks that meant the top of the list was whatever you created first, which is almost never what you want to look at. It now opens sorted by a new Latest activity column, most recent first, so the work that is actually moving is the work you see. Latest activity means real activity, not just edits. Changing a field, moving a task between columns, assigning it, commenting on it, and starting or finishing an agent run all count. A task nobody has touched yet shows its creation time, so nothing falls out of the ordering. The date is shown in the column itself, in your own locale's format, with the exact timestamp on hover, so the value that explains a task's position is always visible rather than implied. The column keeps working while you do. Comment on a task, move it, or let an agent run against it, and it jumps to the top straight away without a refresh or an app restart. Sorting is still yours to change: click Latest activity to reverse it, or pick any other column as before, and your choice sticks. Filters, milestone selection and paging all keep the ordering and the displayed date correct. List view defaults to Latest activity, newest first, instead of oldest task ID. Activity counts edits, moves, assignments, comments, and agent run boundaries. Tasks reorder live as activity arrives, with no reload. Every other column sort still works, and your explicit choice is respected.</description>
    </item>
    <item>
      <title>Talk to a coding agent inside Pekan, with your tasks as context (v0.188.0)</title>
      <link>https://pekan.cloud/changelog/v0-188-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-188-0/</guid>
      <pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan now has an Agent panel: a real conversation with a coding agent, running on your machine, docked on the right of the project workspace. Ask a question, watch the answer arrive word by word, see the plan it is following, approve or refuse the tools it wants to use, and read the changes it proposes as diffs you can open in the Files panel beside it. The panel sits next to the existing Files and Diff panel rather than replacing it, so you can keep a file open while the conversation continues. Both panels open, close and resize on their own, and each remembers its own width between sessions. The agent itself is not something Pekan hosts. It connects to a locally installed adapter over the Agent Client Protocol, an open standard for editors and coding agents to talk to each other. Adapters for Codex and for Claude are supported to start with, and because the protocol is the interface rather than any one vendor, anything else that speaks it can be added later without new plumbing. Pekan detects which adapters are installed and shows the exact install command for the ones that are not, and it will never download or run one for you. The part that makes this different from a terminal is that Pekan knows what your tasks are. Type an at sign in the message box and a task picker opens, showing each match with its ID, title, project, column and whether it is blocked, so two tasks with the same title stay distinguishable. Pick one and it is attached to that message: the agent receives the task ID, its summary and description, the acceptance criteria written into it, the latest handoff, and a bounded slice of recent comments, all under a stable reference it can cite back to you. If a task you mentioned cannot be found, Pekan refuses to send rather than quietly leaving it out, because an agent answering confidently without the context you asked for is worse than an error message. If a very large task has to be trimmed to fit, you are told what was left out before it goes. Every session starts with an explicit decision about what it may change. Read only lets the agent read and explain but not edit files or run commands, and it is the default: a conversation that turns out to need more can be restarted, one that quietly had more cannot be un-run. Choosing to let it edit the project grants file changes and commands inside that project directory and nothing wider. That choice is then enforced rather than merely recorded, so a read-only session shows an agent request to edit something, explains why it cannot be allowed, and tells the agent no. Stopping works properly too. Cancelling a turn ends it, resolves any pending approval as cancelled, and leaves the session ready for the next message. If the adapter crashes, disappears, or speaks a version Pekan does not understand, you get a plain explanation rather than a hang, and quitting Pekan never leaves an agent process running behind it. Existing agent actions, terminal launches and isolated worktree delivery are untouched and behave exactly as before. A conversational Agent panel docked beside Files and Diff, with both usable at once. Codex and Claude connect through the open Agent Client Protocol; Pekan detects adapters but never installs them. Mention a task with @ to send its full context, including acceptance criteria and recent comments. Every session picks a write scope up front, defaulting to read only, and it is enforced on every request.</description>
    </item>
    <item>
      <title>Side panels you can actually close (v0.187.1)</title>
      <link>https://pekan.cloud/changelog/v0-187-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-187-1/</guid>
      <pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Agent activity, and every panel that slides in from the right edge of the window, now carries a proper Close button in its own header. Until now the Agent activity drawer was pinned to the very top of the window, which put its small close icon directly underneath the Windows minimize, maximize and close buttons. Those buttons are drawn by the operating system on top of the app, so the panel's own control was both hard to see and impossible to click: aiming for it hit the button that quits Pekan instead. The only reliable way out was the Escape key, which is not something a panel should require you to know. The panels now start below the app's title bar, so there is clear space between the panel's controls and the window's own. The close control is a labelled button reading Close, rather than another bare cross competing with the one above it, and it stays fixed in the header while long agent output scrolls underneath. It responds to the mouse, to Enter and to Space, announces itself to screen readers by name ("Close Agent activity", not just "Close"), and shows the same wording as a tooltip on hover. Escape still works, and now behaves more precisely: it closes the panel you are looking at and stops there, instead of also triggering whatever the page behind it does with Escape. When two panels are open, one press closes the newer one. A confirmation dialog opened on top of a panel keeps its own Escape. Closing a panel remains a view change and nothing more, so an agent run keeps going, its output keeps streaming, and reopening the panel shows you the same run and the same history exactly where you left it. Agent activity has a visible, labelled Close button in its header. Right-edge panels no longer sit underneath the native window controls. Escape closes only the panel you are looking at, and closing never stops a run.</description>
    </item>
    <item>
      <title>Published legal terms, a complete file tree, and steadier cloud projects (v0.187.0)</title>
      <link>https://pekan.cloud/changelog/v0-187-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-187-0/</guid>
      <pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan now ships with its first active end-user licence agreement and publishes matching legal pages for the website. The exact approved EULA text is stored as a versioned source, bundled into the desktop app, included beside portable builds, and shown by the Windows installer. Privacy, website terms, licence details, and the EULA are linked from the website footer and from Help in the app. These pages are ready for direct access but intentionally remain excluded from search indexing while the surrounding website design and content are still being prepared for launch. The project file tree now shows every readable file and directory except Git's internal .git folder. Hidden and ignored entries remain available when you need them, with quieter styling so generated files and local configuration do not compete visually with the files you work in most often. This makes the tree a dependable view of the actual checkout instead of a partial view shaped by ignore rules, while preserving the existing file actions and navigation. Cloud projects also remain visible after a local project is renamed. Renaming refreshes the local project catalogue, but that refresh no longer replaces the combined sidebar list with local entries alone. The app keeps cloud-server project snapshots alongside the refreshed local projects, and the new coverage exercises rename and refresh flows so future catalogue changes cannot silently hide remote workspaces again. Together, these changes make the app clearer about its terms, more honest about the files in a project, and more reliable when local and cloud work are used side by side. The approved EULA is active in the app, installer, portable builds, Help, and website. The file tree shows all readable project files except the internal .git directory. Cloud projects stay visible when a local project is renamed.</description>
    </item>
    <item>
      <title>Agent runs that can actually write, and cards that stop claiming they are busy (v0.186.0)</title>
      <link>https://pekan.cloud/changelog/v0-186-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-186-0/</guid>
      <pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Actions that are authorized to change files can now do so when they run against your own project checkout. Until now the permission profile handed to the agent was decided by whether the run used an isolated worktree, not by whether the action was allowed to make changes. Turning isolation off therefore produced a run that had been confirmed as a mutating action but was given a read-only profile, so every attempt to write a file was refused, and because these runs have no terminal for anyone to answer a prompt at, the agent discovered this only after working through the whole task. It reported that it was blocked and left nothing behind. Write permission is now decided by the action itself and scoped by where the run executes. A propose action still cannot change files, and on the providers that can enforce that it is now genuinely enforced rather than merely requested in the instructions. An apply action running in your own checkout gets file-edit access limited to that folder. An apply action in an isolated worktree keeps the broader profile it needs to commit unattended, unchanged. The launch dialog states which of the three you are about to start, in plain words, before you confirm, and a run that would write into a folder that no longer exists is refused up front with the setting to fix, instead of failing minutes later. Separately, the green "working" badge on a task card now means an agent is working on it right now. It used to be derived from the assignee alone, so a card kept pulsing long after its run had finished, and moving the task to Review and back made the badge disappear and return. The badge is now driven by live signals that expire on their own, so it clears promptly when a run succeeds, fails, or is stopped, and it cannot survive a crash or a closed app. A task an agent still owns but is not actively working shows a quiet "owned" badge instead, so you can still see who holds it without being told work is in progress that is not. The Telemetry charts also gained proper tooltips. Hovering or focusing any data point now shows its date or label with exact figures, in the app's own theme rather than an operating system tooltip. The reported-tokens chart breaks each day down by agent, using full numbers rather than the rounded axis format, so two agents a few hundred tokens apart are still distinguishable, and it keeps each agent's legend colour beside its value. Days nobody reported say so rather than showing a zero, and an agent that was silent on a given day is shown as unreported rather than as having used nothing. Every chart is reachable by keyboard: each is a single tab stop, arrow keys move between points, and Escape dismisses.</description>
    </item>
    <item>
      <title>A framework for agreements, notices, and consent (v0.185.0)</title>
      <link>https://pekan.cloud/changelog/v0-185-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-185-0/</guid>
      <pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan now has a proper mechanism for putting legal documents in front of you and recording what you answered. It handles three genuinely different things, and keeps them apart. An agreement, such as a licence, is something you accept before using the app. A notice, such as a revised privacy policy, is something you are told about without being asked to agree; it appears as a banner you can dismiss, and Pekan keeps working the whole time. An optional permission is off unless you switch it on, never bundled into an agreement, and switched back off by the same single control that turned it on. Documents are versioned, and each release names the exact document versions it needs. That is what stops an ordinary update from asking you again: installing a new build with the same requirements produces nothing to answer. When a document genuinely does change, you see a plain summary of what changed before the full text, and the accept button unlocks once you have reached the end of the document. Reaching the end unlocks a button, and Pekan does not treat it as proof that you read anything. No reading time is measured and no scrolling behaviour is recorded. The complete text is bundled with the app, so it works with no internet connection, and you can save, print, or copy it at any time. Declining is a real option rather than a dead end. It leads to a limited screen where you can re-read the document, back your boards up, delete them behind a typed confirmation, or quit. Nothing is deleted just because you declined, and your data stays exactly where it was. Everything you answer is written to a durable record on your own device, kept outside the board database so it survives even if you delete your boards. Settings now has a Legal and consent panel showing every document, your optional permissions, and the full history with the exact version and content fingerprint behind each answer. No documents are configured for this release yet, so nothing is being enforced today; the panel says so, and agreements will appear there once the licence and terms are published. Versioned agreements, notices, and optional consent, each handled on its own terms. An ordinary update never asks you to agree again. Declining keeps your data and leaves backup, deletion, and quit available. Settings shows every document, your permissions, and your full record.</description>
    </item>
    <item>
      <title>Stage all now respects ignored managed files (v0.184.2)</title>
      <link>https://pekan.cloud/changelog/v0-184-2/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-184-2/</guid>
      <pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Stage all files now asks Git to stage the repository as a whole instead of turning every visible status row into an explicit path. This matters for projects where Pekan's managed .mcpekan directory is ignored but still contains a tracked file such as AGENTS.md. Git can update that tracked file normally while leaving ignored runtime files alone, so one ignored directory no longer prevents unrelated modifications, deletions, renames, and new files from reaching the index. Line-ending notices from Git remain visible to Git itself but no longer make a successful operation look like a failure. Repeating Stage all after the eligible changes are already staged is also a safe no-op. If Git genuinely cannot update the index, Pekan now presents a concise Stage all error with the useful Git detail, instead of leading with Electron's remote-method wrapper. Ignored untracked files are never force-added, and unresolved conflict files remain excluded until they are resolved deliberately. Stage all updates tracked files inside ignored directories without adding ignored untracked siblings.</description>
    </item>
    <item>
      <title>Capture settings now explain and repair agent setup (v0.184.1)</title>
      <link>https://pekan.cloud/changelog/v0-184-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-184-1/</guid>
      <pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The Capture local AI usage option now explains exactly what saving it will do. When capture is enabled, Pekan stores provider-reported token aggregates and active working time, then updates its managed agent instructions and supported provider hooks. Prompt and response content is never captured. When capture is disabled, the explanation changes immediately so it is clear that saving removes Pekan's managed telemetry instructions and hooks while retaining telemetry records already stored in the project. Those setup-file updates normally happen automatically, so users do not need to edit AGENTS.md, CLAUDE.md, or provider configuration by hand. If permissions or another filesystem problem prevent the update, Pekan now reports that the project setting was saved but the setup files still need attention. The warning points directly to Agent setup and its Repair setup action, which can safely regenerate only the sections and hooks Pekan owns. Capture changes update managed agent files automatically and show an actionable Repair setup warning if that fails.</description>
    </item>
    <item>
      <title>Agents can now measure their own working time, not just their token spend (v0.184.0)</title>
      <link>https://pekan.cloud/changelog/v0-184-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-184-0/</guid>
      <pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Until now, telemetry for an ordinary terminal session depended entirely on a provider lifecycle hook firing at the end. That works when the provider decides a session is over promptly. It works badly when it does not: a Codex thread can sit open for half an hour after the useful work stopped, and a killed process never fires its hook at all. The result was runs that arrived late, or never, and no honest measure of how long an agent actually worked. Any MCP-connected agent can now bracket its own work explicitly. Call start_run before beginning a unit of work, heartbeat_run about every 60 seconds while working, and end_run when the work succeeds, fails, is cancelled, or needs a person. The server owns every timestamp, so the measurement is comparable across agents and machines rather than dependent on whoever had the most optimistic clock. The design point is that a run is one active work period, not the lifetime of a chat. Ending with needs_input closes the run, so the time a human spends thinking is never counted as agent work. When the answer arrives, the agent opens a new run linked to the previous one: two intervals, with the wait belonging to neither. A run that stops heartbeating for ten minutes is recorded as interrupted, and its measured time is capped at the last confirmed heartbeat rather than at the moment cleanup happened to notice, so an abandoned run costs at most one stale window instead of accruing hours it never worked. That sweep runs at startup too, so runs abandoned while Pekan was closed are settled on the next launch. Work with no task association is stored with no task id and shown as Unscoped work, with its own cost and active time. Pekan still does not create a synthetic board card to hold it, because inventing a task would corrupt task cost, flow, and review attribution for a card nobody asked for. Replays are safe throughout. A stable idempotency key makes a repeated start_run resolve to the same run rather than a second one, and repeating end_run never extends elapsed time. The same key is how a provider hook that fires later enriches the run the lifecycle already created, adding the transcript's exact token usage without writing a duplicate row and without touching the measured time. record_run is unchanged and remains the right tool for hooks and integrations that already hold a finished-run payload. Exactly one recorder owns each run. Pekan-launched Agent Actions stay desktop-owned, their prompts say so explicitly, and the server refuses lifecycle calls against a run that already has another owner. Usage numbers are still only ever recorded when a provider reported them: unknown stays unknown, never zero, never estimated. The telemetry view and the CSV exports now report active working time and wall-clock elapsed as separate, separately-labelled figures, alongside how many runs are active, waiting on a person, or interrupted. Agent setup also separates a configured hook from an actual capture, naming the last successful capture and flagging reports queued but undelivered. Finally, the OpenCode guidance is corrected: only Pekan-launched OpenCode runs are captured automatically, since OpenCode has no project lifecycle hook, and a session you start yourself should use the run lifecycle instead.</description>
    </item>
    <item>
      <title>Checksums now verify with sha256sum as well as Get-FileHash (v0.183.2)</title>
      <link>https://pekan.cloud/changelog/v0-183-2/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-183-2/</guid>
      <pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The SHA256SUMS.txt published with each release was written with Windows line endings, which the standard sha256sum tool cannot read: it treats the invisible carriage return as part of the filename, looks for a file that does not exist, and reports that no file was verified. If you verify downloads from WSL, Git Bash, or a Mac, that is what you would have seen. The file is now written with plain newlines and no byte-order mark, so both the PowerShell Get-FileHash route in the release notes and a direct sha256sum -c run work. The release pipeline checks for a stray carriage return or byte-order mark before publishing, so this cannot return unnoticed. The Windows instructions in the release notes were never affected, and the checksums themselves were always correct. SHA256SUMS.txt now verifies with sha256sum -c, not just PowerShell.</description>
    </item>
    <item>
      <title>The installer filename now matches its checksum (v0.183.1)</title>
      <link>https://pekan.cloud/changelog/v0-183-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-183-1/</guid>
      <pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The 0.183.0 release shipped a checksums file that named the installer with spaces, as Pekan Setup 0.183.0.exe. GitHub rewrites spaces in a downloaded file's name to dots, so what you actually got was Pekan.Setup.0.183.0.exe. The checksum itself was correct, but the verification command in the release notes pointed at a filename that did not exist on your disk, so following the instructions gave you a file-not-found error rather than a matching hash. The installer is now built as Pekan-Setup-&lt;version&gt;.exe, with no spaces anywhere in it, so the name in the checksums file, the name on the release page and the name on your disk are all the same string. The release pipeline now also refuses to publish if any artifact name contains whitespace, so this cannot come back quietly. The installer filename now survives download unchanged, so checksum verification works as documented.</description>
    </item>
    <item>
      <title>Pekan Desktop is now a direct download, and the Download button works again (v0.183.0)</title>
      <link>https://pekan.cloud/changelog/v0-183-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-183-0/</guid>
      <pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan Desktop is in a private alpha for invited testers, and it is distributed as a direct download rather than through an app store. Alongside the Windows installer there is now a portable ZIP, so you can unpack the app to a folder and run it without an installer at all. Every release publishes SHA-256 checksums for both files, and you can verify what you downloaded before you run it with a single Get-FileHash command, which the release notes spell out. The Download button on this site was pointing at the wrong repository and returning nothing. It now points at the releases page that actually receives the builds, as do the links in the docs and on every changelog page. Two things to know before you install. Alpha builds are not code signed yet, so Windows SmartScreen will warn you the first time you run one: choose More info, then Run anyway. And the app does not update itself during the alpha, so when a new version appears you download it and install it over the old one. Your boards carry across. Settings now tells you this directly. The Updates section used to disappear entirely on builds that do not update themselves, which read as though Pekan was quietly keeping itself current. It now states the running version, says the build does not update itself, and tells you your boards are kept when you install a newer one. The getting-started documentation describes all of this too, including what to do if Smart App Control blocks the installer outright. A portable ZIP alongside the Windows installer, for running Pekan without installing it. SHA-256 checksums published with every release so you can verify a download. Settings now says plainly that alpha builds update manually, instead of hiding the section. The Download button and every docs link now point at the right releases page.</description>
    </item>
    <item>
      <title>See what an AI agent will share, and report anything that goes wrong (v0.182.0)</title>
      <link>https://pekan.cloud/changelog/v0-182-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-182-0/</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Every place in Pekan where an AI agent generates content now says so, names the provider, and gives you a plain-language line about what that run can see, right in the launch dialog, before you confirm, not buried behind a details toggle you have to know to open. Breaking a task down, drafting a project plan and refining a Triage capture all show the same disclosure, and the review screens for those proposals now carry a clear AI-generated marker while you edit them, matching what task cards and comments already showed. Alongside that, every surface that shows AI-generated content, task descriptions, comments, handoffs, breakdown and plan proposals, refined Triage items, now has a discoverable Report action next to it, plus a general one from Help. Reporting opens an email addressed to Pekan support with the feature and provider already filled in and space to describe what went wrong; the generated text itself is only attached if you tick a box to include it, so nothing you did not choose to share ever leaves your machine. Column-hook automations that run an agent whenever a task changes columns fire the same way they always have, but the warning shown while you configure one now says plainly which providers it can start and that no one gets asked to confirm each time it fires. Every AI run shows its provider and what it can see before you confirm. A Report action sits next to every piece of AI-generated content, plus a general one in Help. Reports never include the generated text or your project data unless you choose to attach it.</description>
    </item>
    <item>
      <title>Links leave the app instead of opening inside it (v0.181.1)</title>
      <link>https://pekan.cloud/changelog/v0-181-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-181-1/</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan Desktop now draws a hard line between the app window and the rest of the web. The window loads one thing, the board it serves on your own machine, and it will not navigate anywhere else. Links that used to open in a second app window, a link in a task description, a pull request, an attachment you asked to see in a new tab, now open in your normal browser instead, where they belong. Nothing you click disappears, it just arrives in the right place, with your bookmarks, your extensions and your session already there. The reason is worth stating plainly. Pekan can start terminals, run coding agents, edit files and push branches on your behalf, and everything inside the app window is trusted to ask for that. A page fetched from the internet must never inherit that trust, however it got there. So remote pages can no longer be loaded into the window at all, and a link is checked before it is handed to the operating system: ordinary web links and mail links go through, while file paths, script URLs, data URLs, addresses carrying an embedded username and password, and anything else unexpected are refused outright and quietly logged rather than opened. Every request the app window makes of the desktop, opening a terminal, writing a file, running Git, is now checked to confirm it really came from the Pekan window before it runs. The Help, changelog, issue tracker, legal and repository links all behave exactly as before, and signing in still hands you to your browser as usual. Web links, PR links and attachments open in your browser, not in a second app window. The app window can only ever load your own local board. Unsafe addresses are refused before they reach the operating system.</description>
    </item>
    <item>
      <title>Pekan Desktop is heading to the Microsoft Store (v0.181.0)</title>
      <link>https://pekan.cloud/changelog/v0-181-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-181-0/</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan Desktop now builds as a Microsoft Store package alongside the existing direct download. The Store edition is free, unlimited and entirely local: it keeps your board, your projects and your agent runs on your own machine, and it never asks you to create an account. Microsoft signs, hosts and updates it, so installing and staying current takes no more thought than any other Store app. The two editions are built from the same code but are genuinely different products at runtime, decided by a single build-time switch rather than by whatever happens to be set in the environment. In the Store edition the account panel is not merely hidden, the bridge it would talk over is never created, so starting the app and working locally makes no request to any Pekan service. The built-in updater is switched off unconditionally, including for the internal testing flags that can normally turn it on, because Microsoft Store owns updates for that package. Settings says so plainly instead of showing an empty space. One smaller change reaches both editions: the interface fonts are now bundled with the app rather than fetched from Google Fonts on every launch. Pekan renders correctly with no network connection, first paint no longer waits on a third party, and starting the app is not reported to anyone. The packaging path refuses to guess. Store identity, artwork and version mapping are validated before anything is built, so a package can never be produced carrying placeholder details, and a manual workflow builds an inspectable package without ever touching the direct-download update feed. A free, unlimited, account-free local edition built for Microsoft Store. The Store build never contacts Pekan services or runs its own updater. Interface fonts ship with the app, so it renders fully offline.</description>
    </item>
    <item>
      <title>Refinement no longer trusts a failed evidence read (v0.180.1)</title>
      <link>https://pekan.cloud/changelog/v0-180-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-180-1/</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Triage refinement now treats an explicit attachment read failure as stronger evidence than an agent's later claim that it analyzed the file. During the final installed-provider image validation, Codex reported that its Windows sandbox helper could not open the supplied icon, but still returned a plausible proposal naming the icon in analyzedFiles. The proposal looked convincing because it inferred likely visual details, even though the provider log proved that the image tool had failed. Pekan now reconciles those signals before presenting coverage. A file-specific read, open, load, access, permission, missing-file, or image-location failure removes that attachment from analyzedFiles and surfaces it as a not-analyzed ambiguity for review. The check is scoped to the named attachment and the failing output line, so an unrelated tool error does not erase valid evidence coverage. The installed Codex validation was then repeated through its supported image attachment channel and produced accurate, parseable refinement JSON based on the actual image. Explicit file-read failures override hallucinated analyzedFiles claims. Unrelated provider errors do not erase valid attachment coverage. The Windows image refinement path is validated with installed Codex.</description>
    </item>
    <item>
      <title>Usage capture follows you through the whole project (v0.180.0)</title>
      <link>https://pekan.cloud/changelog/v0-180-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-180-0/</guid>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Automatic agent usage capture no longer depends on the folder where a session happens to finish. Claude Code, Codex, and Mistral Vibe can now end at the project root, inside a nested app or package, or in an isolated worktree created by Pekan, and the same project recorder is resolved safely. This fixes missing telemetry and module-not-found diagnostics after an agent changes directories during its work. Project setup now writes a small launcher alongside the existing recorder and registers a shell-safe command that works with Windows drive paths, spaces, Unicode, PowerShell, cmd, and POSIX shells. The launcher accepts only the configured project recorder or a verified Pekan worktree shim, so an unrelated parent directory cannot substitute its own script. Resolver and import failures remain nonfatal to the agent session and report only the relevant stage and project path. Running Repair setup replaces older relative hooks and hooks left behind after a project moves, while preserving unrelated user and plugin hooks. Turning usage capture off removes both old and current Pekan hook forms. The setup health view recognizes configurations that need this migration and gives an actionable repair message. Existing retry queues and stable run identifiers continue unchanged. Usage capture works from nested project folders. Pekan-created isolated worktrees keep using the source recorder. Repair setup migrates old and moved hook configurations safely. Launcher failures never fail the agent session.</description>
    </item>
    <item>
      <title>Public documentation talks about the product, not its source tree (v0.179.1)</title>
      <link>https://pekan.cloud/changelog/v0-179-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-179-1/</guid>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The MCP tool reference is generated automatically from the definitions registered by the Pekan server, which keeps the public documentation aligned with the tools an agent can actually call. The page previously explained that guarantee by publishing the internal repository path of the source file used by the site generator. That path was useful to a contributor working inside the Pekan codebase, but it was an implementation detail with no value to someone connecting an agent. The page now describes the same behavior in product language: the reference comes directly from the live tool definitions when the website is built, so it cannot drift like a hand-maintained list. The internal path has been removed from the page summary, the explanatory note, metadata, and generated copies. The wider public website was also audited for similar references. Paths that tell users where Pekan writes configuration inside their own projects remain, as do required upstream license links and the website's normal asset URLs. Internal build scripts remain unchanged and unpublished. The MCP reference no longer exposes Pekan's repository layout. Automatic generation is still explained clearly. Generated pages and metadata carry the revised copy. Necessary user-project paths and license links remain intact.</description>
    </item>
    <item>
      <title>Refine now shows its work and lets you stop it (v0.179.0)</title>
      <link>https://pekan.cloud/changelog/v0-179-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-179-0/</guid>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Refining a Triage capture is now an explicit workflow instead of a spinner that can sit unchanged for two minutes. Pekan offers only agent providers whose command is available on this computer, lets you choose which one to use, and remembers the last provider that successfully produced a proposal. Before any evidence is disclosed, Pekan verifies the provider command, the project workspace, and the desktop bridge. A missing command or moved project is therefore reported immediately on the capture that needs attention, before any process starts. Once refinement begins, the capture reports whether Pekan is preparing evidence, starting the provider, waiting for its response, or validating the proposal. The elapsed clock starts when the provider process actually starts. The timeout is stated before launch, and a timeout now names both the provider and the time spent waiting. Cancel is available throughout the active run. It resets the card immediately, stops the provider process tree through the desktop bridge, and records cancellation as a neutral outcome rather than presenting it as an error. Leaving Triage or closing Pekan also cleans up the in-flight provider, and other captures explain when one active refinement is temporarily occupying the workflow. Recovery is more useful too. Authentication, usage limits, unavailable models, permissions, missing executables, and process failures each receive specific guidance. Provider output is normalized across prose, fenced JSON, and structured event streams before validation. If a proposal still cannot be parsed, Pekan keeps only a short sanitized diagnostic, never the prompt, attachment contents, local paths, or credentials, and offers Retry with the same provider or Try another provider. Supported files are named before sharing, missing or unreadable files are treated as coverage gaps, and every failure or cancellation leaves the original capture and its attachments untouched. Successful proposals still open inline, remain editable, and can be refined again until you apply or discard them. Choose among the agent providers that are actually installed. See the current stage and elapsed provider time. Cancel refinement and terminate the provider process cleanly. Get provider-specific, actionable recovery guidance. Retry malformed output safely or switch providers. Keep the original capture and evidence through every outcome.</description>
    </item>
    <item>
      <title>Twenty faint tints that were never actually there (v0.178.0)</title>
      <link>https://pekan.cloud/changelog/v0-178-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-178-0/</guid>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The pale outline that made the Refine button look permanently focused had a cause worth chasing, and it turned out to affect a lot more than one button. Pekan's colours are defined once as theme variables, so a single set of screens can render in light, ember, midnight, sepia, and sakura. Tailwind, the styling layer, could read those variables perfectly well for a solid colour, but not for a translucent one: to make a colour 40 percent transparent it needs to take the colour apart into its red, green, and blue components first, and a variable is opaque to it. Faced with that, it did not fall back to the solid colour. It threw the whole instruction away and emitted nothing. The result was a class of styling that had never once appeared on screen. Around twenty places asked for a faint brand tint or a soft translucent panel and got nothing at all, and in the handful of cases where the discarded instruction was the only thing setting a border colour, the browser's own default light grey filled the gap. That grey belongs to no Pekan theme, which is why it looked so wrong against the dark ones. The fix applies the transparency in the browser instead of ahead of time, so the colour stays a variable and keeps switching with your theme, including themes you have edited yourself. Every one of those tints now renders as intended. The selected tag chips and the pressed Wrap toggle in the diff viewer pick up the faint warm wash that marks them as on. The AI disclosure panel, the refined-task review panel, the unread rows in notifications, and the AI-generated badge get a muted brand outline in place of the stray grey one. The roadmap's month header now has a background, so task bars no longer scroll straight through the month labels, and the roadmap toolbar matches every other toolbar in the app. Two places were quietly wrong rather than merely invisible, and were changed rather than switched on. Hovering a row in the roadmap now paints an opaque highlight, because that column stays fixed while the timeline scrolls underneath it and a see-through highlight would have let the bars slide through the row it was pointing at. The Compare and Reload buttons on the file-changed-on-disk banner take the banner's own warning colour instead of the browser grey they had been falling back to. Everything else on screen is untouched: solid colours generate exactly the same styling as before, and the website shares the same colour foundation and renders identically. A new check compiles every translucent colour in the app and on the website and fails the build if any of them produces nothing, so this particular kind of silence cannot come back.</description>
    </item>
    <item>
      <title>Provider cards line up, and Refine looks like the button next to it (v0.177.1)</title>
      <link>https://pekan.cloud/changelog/v0-177-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-177-1/</guid>
      <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The provider cards in the agent action dialog no longer bounce. Each card was a plain button, and a button centres its contents, so a provider with a longer description pushed its own logo and name down while a shorter one sat higher. With four providers side by side the names landed at four different heights. Every card is now built as a column with the logo and name pinned to the top, and the description sits in a reserved three-line area below it, so no single verbose provider can set the height for the whole row. Text that does not fit is still available: a card whose description is clipped reveals the full version on hover and, unlike a browser tooltip, on keyboard focus too. The row also fits its space properly now. Instead of four columns squeezing ever narrower, the cards wrap onto a second line when the window gets small, so nothing overflows sideways and no card shrinks below a comfortable click target. The Refine button in Triage has been brought back in line with the actions beside it. It carried a pale, almost white outline that read as a stuck focus ring, most obviously while it was disabled and showing Refining. That outline was accidental: the intended tint could not be applied to the theme colour it was written against, so the button quietly fell back to a browser default grey that belonged to no theme. Refine now uses the same border, radius, and surface as Review, Snooze, and Decline, and signals that it is agent assisted through its brand coloured icon and label rather than through a different outline. A focus ring appears only for keyboard focus, in brand colour with an offset, so it can never be mistaken for a border again. The loading state swaps the sparkle for a spinner in the same space and reserves room for the longer label in advance, so starting a refinement no longer resizes the button or nudges its neighbours along the row. The styling behind all of these small actions is now shared in one place instead of being copied per button, which is what let them drift apart to begin with. Provider cards share one top baseline whatever the description length. Clipped provider descriptions open in full on hover and on keyboard focus. The provider row wraps instead of overflowing at narrow widths. Refine matches Review, Snooze, and Decline instead of showing a pale border. A focus ring appears only for keyboard focus, clearly distinct from the border. Refining keeps the buttons stable size, so the action row never shifts.</description>
    </item>
    <item>
      <title>OpenCode joins the provider lineup, and agent activity moves to the task header (v0.177.0)</title>
      <link>https://pekan.cloud/changelog/v0-177-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-177-0/</guid>
      <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. OpenCode is now a first-class coding provider alongside Claude Code, Codex CLI, and Mistral Vibe. It appears everywhere a provider can be chosen: agent actions, action generation, task decomposition, project planning, provider mixes, recovery and redispatch, and interactive terminal launches. Tracked runs use the documented non-interactive interface and read its JSON event stream, so live output arrives as a readable transcript rather than raw protocol noise, and the per-step token counts OpenCode reports are added up into one honest run total instead of only the last step being recorded. Where OpenCode reports no model identity, the cost stays unknown rather than being guessed. Project setup registers Pekan as a local MCP server in your OpenCode config, writing only its own entry and leaving the rest of the file, comments included, exactly as you had it. If that file cannot be written, Agent setup shows the snippet to paste in yourself. Provider cards now carry each product mark, so Claude Code, Codex CLI, Mistral Vibe, and OpenCode are recognisable at a glance instead of by reading. The marks are bundled with the app rather than fetched, stay crisp at any display density, and switch variants where a brand needs it so nothing disappears against a dark card. They are decorative for screen readers, since the provider name beside them is already the label, and a mark that fails to load simply leaves the name and the card working. Agent activity has moved out of the bottom of the task page and into the task header. A compact control shows how much has run on the task and whether anything is running right now, and while work is queued or active a slim strip sits under the header with the provider, its state, elapsed time, and a way to jump straight to the live output. Opening any of these slides in a drawer with live output above the full execution history and the CSV export, and the task body keeps its scroll position throughout, so you never lose your place to check on an agent. Escape closes it, focus returns to where it was, and lifecycle changes are announced without narrating every output line. Declined items in Triage now have a defined life. A declined capture stays recoverable for 30 days, with the tab stating the rule and each item showing when it will go. Restoring or accepting cancels the deletion, and declining again starts a fresh 30 days. After the window closes the item is removed for good, whether or not anyone opens the tab, and you can also delete a single item or empty the whole tab immediately behind a confirmation. OpenCode is selectable anywhere a coding provider can be chosen. OpenCode setup writes one entry and preserves the rest of your config. Provider logos on every provider card, in both light and dark themes. Agent activity lives in the task header with a live status strip. Live output and run history open in a drawer without losing your place. Declined triage items are recoverable for 30 days, then removed.</description>
    </item>
    <item>
      <title>Capture work by describing it, with screenshots and recordings (v0.176.0)</title>
      <link>https://pekan.cloud/changelog/v0-176-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-176-0/</guid>
      <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Triage capture is now a single natural-language composer instead of a title field and a note. Describe the issue, the idea, or the work in your own words, and attach whatever evidence you already have. You can paste a screenshot straight from the clipboard, paste files copied in the file manager, drag and drop images, videos, logs, and documents, or pick them from a file dialog. Every attachment shows its name, type, size, and upload state, with a progress bar for large files, plus a retry for a failed upload and a cancel for one still in flight. Videos are first-class evidence: MP4, WebM, and MOV are accepted up to 200 MB each, streamed to storage rather than held in memory, and served with range support so a recording plays and seeks in place while you review it. If the voice add-on is enabled, a microphone sits inside the composer and reuses the same recorder, transcription settings, and permissions as the existing voice capture, so there is one voice path rather than two. The transcript is inserted at your cursor for review and never submits anything on its own, and the global voice hotkey dictates into an open composer instead of starting a competing capture. Pekan records whether a report was typed, dictated, or both, so the Inbox shows how it was made. Recordings exist only long enough to be transcribed: audio is never stored or attached. Nothing is lost when a capture is interrupted. Evidence is saved before anything interprets it, so closing the panel, restarting the app, or a failed AI run all leave the report and its uploads recoverable, and an abandoned draft is cleaned up along with its files. Submitting is idempotent, so a double-click, a retry, or a resubmitted restored draft produces exactly one Triage item. Drafting with AI now reads the evidence. Pekan hands the selected provider only the files it can genuinely open, names that provider and lists those files before anything is shared, and lets you decline. The proposal reports what was actually read: a run that claims to have watched a video it could not open is corrected, and unreadable or unsupported media is surfaced as a coverage gap rather than quietly implied to be understood. The original report and its screenshots stay on screen beside the proposal, every generated field remains editable, and you can answer a clarifying question or add an instruction to regenerate while keeping what you already have. Accepting moves the same record onto the board, so attachments and capture provenance stay intact. Captures still work without AI. With no provider available, or after a failed run, the original report and all of its evidence are retained for manual review or a later retry. One natural-language field replaces the title-and-note capture form. Paste screenshots, paste copied files, drag and drop, or pick files. MP4, WebM, and MOV up to 200 MB, streamed and playable in review. Dictate into the composer and edit the transcript before capturing. Drafts survive a close, a restart, and a failed AI run. The provider and the exact files are disclosed before anything is shared. AI proposals report what was actually read instead of implying more.</description>
    </item>
    <item>
      <title>Reliable delivery checks on Windows (v0.175.3)</title>
      <link>https://pekan.cloud/changelog/v0-175-3/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-175-3/</guid>
      <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Isolated agent work can now complete its delivery checks reliably on Windows. Pekan previously tried to launch the npm command shim as if it were a native executable. Newer Node.js releases reject that process launch with an EINVAL error, so a clean branch could be retained as undelivered even when its translation catalog check passed. Pekan now routes that fixed verification command through the Windows command interpreter while keeping the worktree path outside the command string. This preserves safe handling for project paths that contain spaces or shell metacharacters. The verifier still captures the check's exit status, standard output, standard error, and timeout diagnostics, and non-Windows systems continue to invoke npm directly. New process-level coverage runs the actual launcher from a deliberately awkward temporary path, supplementing the existing mocked success and failure cases. This specifically unblocks automatic run telemetry work completed in an isolated worktree and prevents the delivery status from misrepresenting a Windows launcher problem as an internationalization failure. Windows delivery checks no longer fail with spawn EINVAL. Worktree paths with spaces and shell metacharacters remain safe. Real process-level tests cover the Windows npm launcher. Non-Windows verification behavior remains unchanged.</description>
    </item>
    <item>
      <title>Reliable run capture from isolated worktrees (v0.175.2)</title>
      <link>https://pekan.cloud/changelog/v0-175-2/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-175-2/</guid>
      <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Automatic usage capture now works when Claude Code, Codex, or Mistral Vibe runs inside a Pekan-created isolated worktree. Pekan installs a small ignored launcher that delegates to the source checkout's current recorder, so provider lifecycle hooks no longer fail because record-run.mjs is missing. The launcher points the recorder to the source project's durable state without copying its MCP credential, endpoint configuration, or retry queue into the disposable worktree. A changed local port or rotated token is picked up the next time the hook runs, and pending telemetry remains available after worktree cleanup. Desktop-launched agent runs also have one clear telemetry owner. Pekan's desktop lifecycle recorder remains authoritative, and provider hooks now recognize those managed processes and skip their own recording path. Independently launched terminal sessions continue to be captured in base checkouts and isolated worktrees with stable provider session identifiers. Setup, configuration discovery, and upload failures remain non-fatal and now report a short stage-specific diagnostic, making a capture problem easier to identify without disrupting completed agent work. Claude Code, Codex, and Mistral Vibe hooks work from isolated worktrees. Credentials and live endpoint data stay in the source checkout. Pending telemetry survives worktree removal and retries from durable storage. Desktop-managed runs are recorded exactly once, while external terminal sessions remain automatic.</description>
    </item>
    <item>
      <title>Worktree cleanup protects every checkout (v0.175.1)</title>
      <link>https://pekan.cloud/changelog/v0-175-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-175-1/</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Cleaning up an isolated agent worktree on Windows is now guarded against npm workspace junctions that point into another checkout. Git for Windows can follow those directory links while removing a worktree, which means a link left in node_modules could make cleanup traverse into the primary project directory. Pekan now finds and safely detaches every directory link that resolves outside the worktree before Git is allowed to remove anything. The link itself is removed while its target and all source files remain untouched. Cleanup also verifies that its target is a registered linked worktree inside Pekan's managed worktree directory. The primary checkout is rejected independently at both the controller and Git boundaries, and an unknown or unverifiable target fails closed instead of being removed. Automated tests reproduce the Windows junction behavior with a real temporary Git repository and confirm that the primary checkout survives, while ordinary clean worktrees still clean up normally. External npm workspace junctions are detached safely before worktree removal. The primary checkout cannot be selected as a cleanup target. Unknown and out-of-scope worktree paths fail closed. A real Git regression test protects against the original Windows deletion scenario.</description>
    </item>
    <item>
      <title>Theme-aware status colors across Pekan (v0.175.0)</title>
      <link>https://pekan.cloud/changelog/v0-175-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-175-0/</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Status and emphasis colors throughout the desktop app now follow the active theme. Alerts, validation messages, priority badges, delivery states, destructive actions, informational callouts, and success indicators no longer rely on Tailwind's fixed light palette. Each state instead uses a semantic background, border, and text color defined by the current theme, removing pale blocks and bright outlines from Ember and Midnight while retaining clear distinctions between outcomes such as cancelled and failed, or delivered and needs attention. The same semantic vocabulary now covers every renderer surface, including a dedicated warning border and complete contrast checks for modified, informational, special, warning, and stale states in the custom theme editor. Repeated priority styling has one shared definition, and a repository guard prevents fixed palette classes from returning. Agent worktrees also receive the live run-telemetry hook, and local verification now catches untranslated interface strings before an isolated branch can be reported as delivered. Status and emphasis surfaces adapt cleanly to every shipped light and dark theme. Custom themes warn about unreadable semantic status combinations. A local guard prevents fixed Tailwind color palettes from returning. Isolated agent runs retain telemetry and block delivery on catalog violations.</description>
    </item>
    <item>
      <title>One Activity home for everything new (v0.174.0)</title>
      <link>https://pekan.cloud/changelog/v0-174-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-174-0/</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Activity is now the single place to find work that needs attention, active and completed agent runs, updates, and everything that has changed since your last visit. The separate newspaper button and its slide-over have been removed, leaving one clear header control with one badge. That badge gives urgent actions first priority, followed by active runs, unseen changes, and unread updates, and its screen-reader label explains which state is currently being shown. A compact Since your last visit summary now sits above the existing Activity tabs. Its category buttons take you to the canonical Action needed, Agents, or Updates content instead of repeating event cards in a second feed. The summary follows the project selector, and Mark seen remains an explicit action. Opening or leaving Activity does not acknowledge anything. The badge clears optimistically after acknowledgement and is restored from the durable server boundary if that request fails. Attention cards also use theme-aware semantic surfaces throughout. Critical failures and high-priority warnings keep their urgency through distinct borders, backgrounds, icons, and labels while preserving readable titles, project names, timestamps, and dismiss controls in both light and dark themes. Keyboard focus and accessible navigation remain intact. One Activity header control replaces the separate newspaper digest. Since your last visit is a compact, project-aware summary that routes to canonical feeds. Mark seen keeps its durable, explicit acknowledgement behavior and recovers after request failures. Critical and high attention cards remain readable and visually distinct across themes.</description>
    </item>
    <item>
      <title>Agent run status chips follow your theme (v0.173.3)</title>
      <link>https://pekan.cloud/changelog/v0-173-3/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-173-3/</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The status chips on agent runs used fixed light colours. Running, Paused, Succeeded, Failed and Stopped, along with the delivery and review chips beside them, were written with the same kind of hardcoded pale palette that made the Stop button's border look wrong in dark themes. In a dark theme their borders read as bright outlines and their fills as light blocks, none of which belonged to the surrounding surface. They now use the same theme-defined colours as the rest of the app, so every chip is legible and in keeping whichever theme you run. The three places that show these chips, the Activity runs tab, the Agent runs panel, and the run history on a task, each carried their own copy of the colour list. Those copies had already started to diverge: two used one text shade and the third another, so the same run could look subtly different depending on where you saw it. There is now one definition, which means a chip cannot drift between surfaces again and a future state or a re-themed colour lands everywhere at once. The Retry chip in run history and the Pause and Resume buttons sitting either side of Stop got the same treatment, so a run card no longer mixes themed and unthemed controls. Meaning is preserved throughout. A stopped run stays visually distinct from a failed one, because cancelling a run is not the same as it crashing, and a delivered result still reads differently from one that needs attention. New checks assert that no run chip can reintroduce a fixed palette, that every chip defines its border, fill and text rather than inheriting one from the surface behind it, and that the three surfaces continue to agree. Agent run status, delivery, and review chips use theme colours instead of fixed light ones. No chip shows a near-white border in dark themes any more. The Activity tab, Agent runs panel, and task run history now share one colour definition and can no longer drift apart. The Retry chip and the Pause and Resume buttons beside Stop are themed to match. A stopped run stays visually distinct from a failed one. Tests prevent a fixed palette returning and require every chip to define its own border, fill, and text.</description>
    </item>
    <item>
      <title>Stop controls that belong in every theme (v0.173.2)</title>
      <link>https://pekan.cloud/changelog/v0-173-2/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-173-2/</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The Stop button in Activity now uses Pekan’s theme-aware destructive colors instead of a fixed pale red border. That fixed border looked almost white against dark themes, making the compact control feel disconnected from the rest of the interface. Its border and text now come from the same semantic palette as other destructive actions, while its resting background stays aligned with the surrounding surface. Hover and keyboard focus feedback use the matching destructive background, with a visible focus ring drawn from the destructive text color. Disabled controls retain the same semantic treatment and remain readable. The secondary Agent Runs panel now shares the exact same Stop component, so both places stay visually consistent while continuing to stop a run with one click.</description>
    </item>
    <item>
      <title>Watch an agent work, see who owns the task, and know where the branch goes (v0.173.0)</title>
      <link>https://pekan.cloud/changelog/v0-173-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-173-0/</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Three things about running an agent from Pekan have been quietly unsatisfying, and they turn out to be the same story told three times: the app knew something useful and did not show it. A run was streaming and looked frozen. A run had started and the card looked idle. A branch was pushed and it was not clear what to do next. All three are fixed in this release. Start with the live log. When Pekan launched Claude Code it asked for a single result document, and that is exactly what it got: nothing at all until the process finished, then everything at once. A run that took thirty-seven minutes showed No output received yet for thirty-seven minutes, then filled the window in one go. Nothing was wrong with the run, but there was no way to know that. Tracked Claude runs now ask for a real event stream instead, so the log fills in as the work happens. That raised a second question, because a raw event stream is not pleasant reading. Codex has streamed one for a while and the viewer showed it verbatim: escaped source code, transport bookkeeping, and literal backslash-n where line breaks should be. The viewer now renders a transcript. Each line is either something the agent said, one tool call with the thing that call is about, a result or an error, or the final outcome. A file write shows the path, not the file. A command shows the command, not nine thousand characters of output. Session bookkeeping and rate-limit pings do not appear at all. The exact bytes are never lost. Every log keeps both representations: the readable transcript, and the raw provider stream exactly as it was printed. A Formatted and Raw switch sits above the log, copy follows whichever one you are looking at, and download always gives you the raw stream, because a diagnostic log should never be a summary. Token usage, model identity, and the final result are still parsed from the raw stream, so cost reporting is unchanged. Reopening a finished run re-reads its raw log through the same formatter, so it looks the way it looked live. And when a run genuinely has nothing to show yet, the viewer says the provider is running and counts the elapsed time instead of implying it has stalled. Second: ownership. Whether a task card showed an owner and a working indicator used to depend on whether the launched agent got around to calling the board tools, which is why one provider claimed its task promptly and another sat there anonymous. Pekan knows a run started the moment it spawns the process, so it now records ownership itself. An implementation run on an unassigned task assigns it, and the card lights up straight away, identically for every provider. The rules around that are deliberately narrow. An existing owner is never silently replaced: if a task already belongs to you or to another agent, that assignment stays and the run simply shows up alongside it, so the board says who owns the work and who is currently running on it rather than quietly changing the answer. Read-only actions such as Research and Review never take ownership, because being asked for a code review is not the same as doing the task, though they do show the working indicator while they are active. A launch that fails to start leaves nothing behind. The working indicator is a heartbeat with a short expiry, so it disappears on its own if the app closes or a run is killed, and concurrent or retried runs on the same task each keep their own. The assignment itself stays after the run finishes, as a record of who did the work, and the run's first task comment now states what it did to ownership and why. Third: delivered branches. A successful isolated run used to end at branch pushed, one commit ahead of base, which left you to work out what base meant and which branch this was supposed to return to. Pekan now records the intended target branch when it creates the worktree, alongside the base commit it already recorded. These are different facts and were easy to confuse: the base commit is where the run started, the target branch is where the work belongs, and your own checkout may have moved somewhere else entirely in the meantime. With that recorded, a delivered worktree shows the source branch, the target branch, the commit range, the verification the agent reported, and where the work stands. Create pull request is the primary action, and it targets the branch captured at launch rather than whatever is checked out now. If a pull request already exists you get a link and its state, refreshable from the host, and a pull request that was closed without merging is reported as exactly that rather than as done. Where pull requests are not available, Copy local integration instructions gives you commands you can read: preconditions first, an explicit switch to the named target branch, and cherry-picks by full commit hash rather than a branch name that can move. A run with no recorded target, including one started from a detached HEAD, asks you which branch to use instead of guessing. The safety boundary has not moved. Pekan pushes branches and it stops there. It does not merge, rebase, cherry-pick, force-push, or resolve conflicts on your behalf, and the local instructions are text to copy, never something the app runs for you. Tracked Claude Code runs stream their progress, so the live log fills in during the run instead of all at once at the end. Provider output is rendered as a readable transcript: messages, one line per tool call, errors, and the final result. Large tool payloads and transport-only events stay out of the default view; the raw stream is kept in full. A Formatted and Raw switch controls the log, and download always gives you the exact raw provider output. An active run with nothing to show yet reports that it is waiting, with elapsed time, rather than looking stalled. Launching an implementation run assigns the task and shows the working indicator immediately, the same for every provider. An existing human or agent owner is kept, with the new run shown alongside rather than replacing them. Research, Review, and other read-only actions never take ownership of a task. A failed launch leaves no claim behind, and the working indicator clears on success, failure, cancellation, or app close. Isolated runs record the branch their work should return to, separately from the base commit they started from. A delivered branch offers Create pull request against that captured target, or copyable local instructions when a pull request is not available. Local instructions require a clean checkout, name the target branch explicitly, and cherry-pick by full commit hash. A merged pull request is shown as integrated; one closed without merging is not. Pekan still never merges, rebases, cherry-picks, or force-pushes for you.</description>
    </item>
    <item>
      <title>Worktree cleanup you can verify before it runs (v0.172.0)</title>
      <link>https://pekan.cloud/changelog/v0-172-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-172-0/</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The Worktrees panel now makes age, activity, and cleanup safety visible before you remove anything. Every worktree shows a relative activity time with its exact local date and time available to assistive technology and on hover. New worktrees track meaningful activity from preparation, agent output and completion, delivery attempts, refreshes, folder reveals, and interactive reopens. Older records fall back to their record update or creation time with honest wording, so a metadata timestamp is never presented as proof that someone worked in the branch. Entries are grouped as Active, Needs review, Missing on disk, or Safe to remove, with a plain-language reason on every card. Sorting by oldest or recent activity makes stale worktrees easy to find, but age never grants permission to delete. A clean worktree with no commits ahead of its captured base is safe even when it came from an interactive session. Active runs and terminals, dirty files, commits ahead, failed delivery, and Git state that cannot be verified all stay out of safe cleanup. Clean up safe worktrees opens a preview naming exactly which directories will be removed and how many entries will be skipped. The controller checks every entry again immediately before removal and never uses force. Safe removal deletes only the worktree directory and keeps its local branch. Recoverable work instead offers reveal or interactive inspection, plus a separately named permanent discard that identifies the worktree and branch and summarizes the files or commits that would be lost before asking for confirmation. Permanent discard is the only cleanup path that deletes the local branch. Every worktree shows meaningful recent activity, an exact timestamp, and its creation time when useful. Oldest-first sorting and safety groups make stale work easy to identify without treating age as deletion permission. Bulk cleanup previews verified-safe worktrees, reports skipped entries, re-checks live state, and never forces removal. Safe removal keeps the local branch, while permanent discard explicitly names and deletes both worktree and branch.</description>
    </item>
    <item>
      <title>A calmer close, and sessions that get time to finish (v0.171.0)</title>
      <link>https://pekan.cloud/changelog/v0-171-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-171-0/</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Closing Pekan while an agent was working used to produce a grey Windows message box, and confirming it killed every child process on the spot. Both halves of that have changed. The warning is now part of Pekan. It uses the same modal styling as the rest of the app, and instead of a sentence of prose it lists exactly what is at stake: how many agent runs are active, how many terminal sessions are open, and how many worktree operations are still in flight. Keep Pekan open is the focused action, so pressing Enter by reflex keeps working. Escape, a click outside the modal, and any error in the interface itself all mean the same thing: nothing stops. The native dialog is still there as a fallback for the cases where the interface cannot answer, such as a crashed window, so you always get asked something. Choosing to close now starts a real shutdown phase rather than an instant kill. Pekan stops accepting new runs, terminals, hook commands and worktree operations, then asks the work that is already running to finish. Interactive terminals get a genuine interrupt first, so a coding agent can stop its turn and save its session. Non-interactive runs get the least destructive exit request the platform offers. Preparations and hook commands get their existing cancellation, while a delivery or push already talking to Git is left to complete so you never end up with a half-written push. That wait is bounded at eight seconds, shown in a Stopping active work state that cannot be dismissed. Anything still alive when the deadline passes is force stopped, so the app can never hang on a command that refuses to exit. Whatever was interrupted is then recorded properly: each affected run is closed out as cancelled with an end time, its final output is kept, and the token usage it had already reported is parsed and written before the app quits. Two things are worth being clear about. Windows does not offer proper signal handling for this kind of child process, so a command line tool's own cleanup or telemetry hooks may not get to run before the force stop. And an operating system shutdown or a crash skips this path entirely. Both limits are documented rather than papered over. Everything now goes through one place: the window close button, Alt and F4, Ctrl and W, the menu Quit item, and Restart to update all share the same confirmation and the same cleanup, so there are no duplicate prompts and no chance of cleanup running twice. The existing unsaved editor protection still comes last and still wins: if you cancel it, no process is stopped and the next close asks again. The close warning now uses Pekan styling instead of the operating system message box. It lists live counts of active agent runs, terminal sessions, and in-flight worktree operations. Keep Pekan open is the focused action, and Escape, a backdrop click, or an interface error never stop work. Confirming shows a Stopping active work state and drains sessions for up to eight seconds before force stopping the rest. Terminals receive a real interrupt first, so an interactive agent can save its session before the shell goes away. Interrupted runs are recorded as cancelled with an end time, and pending token usage is written before the app quits. Window close, Alt and F4, menu Quit, and Restart to update all share one confirmation and one cleanup sequence.</description>
    </item>
    <item>
      <title>Agent Actions stay in the modal, not on the move (v0.170.1)</title>
      <link>https://pekan.cloud/changelog/v0-170-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-170-1/</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Opening an Agent Actions launch dialog from a board card now temporarily locks dragging for that card. Previously, the dialog lived inside the same interface tree as the draggable card, so pressing, selecting text, opening technical details, choosing a provider, or confirming a run could also wake the board drag handler behind the overlay. In the worst case, a task could move while you were still configuring its agent run. The card now remains fixed in its original position and column for the complete lifetime of the dialog, and those interactions do not send a task update request. Cancel the dialog, close it, or successfully launch the action and normal dragging returns immediately. The lock is local to the card whose dialog is open, so every other task on the board remains draggable. Existing overlay click protection is unchanged, which means modal interactions still cannot open the task detail view underneath. The task card that opened an Agent Actions dialog cannot be dragged until the dialog closes. Pointer, mouse, keyboard, text-selection, and form interactions in the dialog cannot move the task or trigger a task update. Other cards remain draggable, and the launching card becomes draggable again immediately after close or launch.</description>
    </item>
    <item>
      <title>Documentation, and a tool reference that cannot go stale (v0.170.0)</title>
      <link>https://pekan.cloud/changelog/v0-170-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-170-0/</guid>
      <pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan.cloud now has documentation. Until today the site could tell you what Pekan was and what had shipped in it, but nothing on it explained how to actually do anything: how to install it, how to wire a coding agent to a board, or what any of the views were for. Seven pages at pekan.cloud/docs.html close that gap. The order is deliberate. Getting started covers installing the desktop app, the two local services it starts, creating a first project, and what a task record actually holds. Connect your agent comes second because it is the page that matters most: Pekan is a board people and agents share, and none of that works until an MCP client is pointed at it. That page covers what agent setup writes into your project, how Claude Code, Codex, and Mistral Vibe each connect, why Codex and Vibe go through the stdio proxy rather than a direct URL, and the two failures worth recognising when a connection does not come up. From there, Views tours the board, roadmap, telemetry, triage inbox, workspace editor and terminal, Git, and the workspace-wide activity feed. Workflows and hooks explains reusable column templates, the review and done column roles that let agents talk about your board without knowing your column names, and the five hook actions that fire when a task enters or leaves a column. Agent actions covers the built-in actions and, more importantly, the propose and apply contract that decides whether a launched action may change anything. Roadmap and milestones covers goals, milestones, and why roadmap actions deliberately stop at a proposal. The seventh page is the MCP tool reference, and it is generated rather than written. It reads the tool registrations out of the server source when the site is built, so all 42 tools and their descriptions are the ones the server actually exposes. A hand-maintained list would have started drifting the first time a tool was added or renamed, which is exactly what had already happened to the machine-readable summary the site serves to crawlers: it still advertised two views that were retired some releases ago. That summary has been corrected and now points at the documentation as well. Behind the scenes the site finally became genuinely multi-page, so the navigation and footer moved into single shared partials instead of being copy-pasted per page. One useful side effect: the version number in the navigation is now read from the newest published release rather than typed by hand, which had quietly left it six releases behind. A seven-page documentation section at pekan.cloud/docs.html, with a sidebar, per-page contents, and prev/next navigation. A dedicated guide to connecting Claude Code, Codex, Mistral Vibe, or any other MCP client to a project board. An MCP tool reference generated from the server source, so it cannot drift from the tools the server registers. Documentation written as Markdown in src/docs, built to static pages by the same kind of generator the changelog uses. One shared navigation and footer across the whole site, with the version number derived from the newest release. A corrected machine-readable site summary that no longer lists two retired views.</description>
    </item>
    <item>
      <title>Sakura, a cherry blossom light theme (v0.168.0)</title>
      <link>https://pekan.cloud/changelog/v0-168-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-168-0/</guid>
      <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Sakura joins Light, Ember, Midnight, and Sepia as a built-in theme, and it is light only. It takes its cue from cherry blossom rather than from a tinted grey: page, window chrome, panels, columns, and cards sit on soft blossom neutrals, hover and selection surfaces warm gently toward rose, and text is a deep warm plum that stays crisp on every one of those surfaces. The accent is a muted rose gold, restrained enough to read as chrome rather than decoration, so buttons, the active navigation item, focus rings, and the terminal cursor all stay recognisable without turning the workspace candy pink. Status and Git colours were tuned against that accent rather than inherited from another theme. Success stays green, warning and stale stay amber, and added, deleted, modified, hunk, and untracked lines keep their usual families, so a deleted row is never mistaken for brand chrome. The today and overdue marker was pushed toward vermilion specifically because a red-pink marker sat too close to the rose accent to read at a glance. Sakura is covered by the same automated checks as every other built-in theme: every colour token must be defined, and the key text, control, and status pairings must clear their contrast minimums. Selecting it applies immediately, survives a restart, and works as a light starting point when you duplicate a built-in into a custom theme. The native title bar, Monaco editor, and terminal all follow its light appearance. Pick it in Settings, under Appearance.</description>
    </item>
    <item>
      <title>Custom actions that follow your prompt (v0.167.2)</title>
      <link>https://pekan.cloud/changelog/v0-167-2/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-167-2/</guid>
      <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Custom agent actions no longer have to pretend that every job ends as a task update, a new task, or a project-context change. New actions now default to Not specified (follow prompt), which adds no result-target instruction and lets the action prompt define the work. Project actions can also explicitly target Repository changes when the intended result is code, configuration, a version bump, or Git work. The distinction between result and permission remains visible: Propose produces a reviewable answer without changing the board, files, or Git, while Apply permits only the changes the prompt requests. The action editor now explains Context, Result target, and Behavior directly beneath each choice, and launch confirmation calls out repository and open-ended permissions before a run starts. Workflow hooks have also been narrowed to the automations that earn their place. Add comment, Set priority, Require move note, and Require fields are gone. Change tags, Set assignee, Set dates, Run agent action, and Run project command remain, with stronger warnings around token use, tools, local permissions, and commands that can modify files. Older saved workflows quietly drop retired hooks while preserving supported hooks and semantic destinations. The review role is now simply called Review destination.</description>
    </item>
    <item>
      <title>A copy-link action that only appears when the link works (v0.167.1)</title>
      <link>https://pekan.cloud/changelog/v0-167-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-167-1/</guid>
      <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The Copy link to task action in a task's comment menu used to hand you a URL built from whatever address the app happened to be served from. In the desktop app that address is a loopback port on your own machine, so the link you copied looked like http://localhost:3847/tasks/… and opened nothing at all for the person you sent it to. The action promised sharing and quietly delivered a dead link. It is now offered only where the address is genuinely reachable by someone else: a hosted Pekan deployment, whose own origin is by definition the one your colleague would use. There the copied link is the canonical task URL and opens the right task. In the desktop app the action is simply not shown any more. That is deliberate rather than a limitation we plan to paper over: the desktop knows the API and MCP addresses of the board it is connected to, but never the web address a person would open in a browser, so there is no correct link for it to build. Showing nothing is more honest than showing something that fails after you have already pasted it into a message. Copy comment text is unchanged and still available everywhere.</description>
    </item>
    <item>
      <title>Two fewer places to look, and agent CLIs that connect again (v0.165.0)</title>
      <link>https://pekan.cloud/changelog/v0-165-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-165-0/</guid>
      <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. This release takes two surfaces out of Pekan and folds a third into where it belonged all along. The project Queue is gone. It was a second, hand-maintained ordering of the same tasks that already sit on your board, and because it never claimed, assigned, started, or completed anything, its sequence could quietly drift away from reality without changing a single outcome. Ordering work now happens where it always actually happened: board columns, task priority, dependency edges, and Roadmap milestones. Every task, description, assignment, priority, dependency, milestone link, and activity record is untouched. Only the queue membership and its order were removed, and the migration that drops those tables cannot touch a task, because nothing outside them ever pointed in. Opening an old /queue link lands on the project Tasks view instead of a dead page. The global Review Queue is gone too. A single cross-project inbox implied that every project should feed one mandatory review stage, stripped each item of the local workflow context that makes review meaningful, and in normal use sat empty. Review is now purely project-scoped: your columns, your column hooks, your agent instructions, your completion policy. A project with a Review column moves work into and out of it exactly as before, and move_to_review keeps working wherever a project defines a review destination. A project that never wanted a review stage is no longer nudged toward one. Nothing polls every configured backend for a review count on each navigation any more, and old /reviews links, including saved attention deep links, resolve to Activity, which still lists everything waiting on a person. Timeline is no longer a separate workspace tab. It is now the Activity mode of the Roadmap view, switched with a segmented control in the view header that works exactly like the Board/List toggle on the Tasks tab. Roadmap shows planned dates; Activity shows what actually happened, derived from task events. Each mode keeps its own header controls and counter, only the selected mode fetches data, and your choice is remembered across restarts. Old /timeline links still resolve: they open Roadmap with Activity preselected. Finally, two fixes worth knowing about. Codex CLI and Mistral Vibe sessions could not connect to a hosted board: their generated config pointed straight at the MCP endpoint with no credential attached, so the handshake came back Unauthorized. Both are now registered to run the project's authenticated stdio proxy (the same mechanism Claude Code has always used), which means a rotated token is picked up automatically with no config to rewrite. This also repairs launches into an isolated worktree, which previously had no way to reach the board at all because the generated .mcpekan folder is never part of a worktree. Agent setup flags an old-style entry as stale so re-running setup fixes it. And file tabs in the workspace now close on middle-click, with the same unsaved-changes prompt the close button gives you.</description>
    </item>
    <item>
      <title>One warm dark theme instead of two (v0.162.2)</title>
      <link>https://pekan.cloud/changelog/v0-162-2/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-162-2/</guid>
      <pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The built-in Dark theme has been retired. It had drifted to within a few percent of Ember (same warm charcoal canvas, same amber-orange accent, differing mainly in how dark the window frame sits), and two themes that close apart are a choice nobody can make meaningfully. Ember stays: near-black chrome across the title bar, tab strip, sidebar, and status bar, a warm charcoal workspace, and the brighter ember accent. Light, Midnight, and Sepia are unchanged, so the picker in Settings → Appearance now offers four built-in themes rather than five. If you were using Dark, the app moves you to Ember on the next launch rather than dropping you into a light theme, and remembers it from then on. Custom themes are untouched. Ones you built by duplicating Dark keep every token you saved, still render exactly as before, and their Reset to base button now restores Ember's tokens. Behind the scenes the dark token set still exists as the fallback layer for any custom dark theme, so a custom theme that never defined a token continues to inherit a sensible dark value for it.</description>
    </item>
    <item>
      <title>See what agents are doing before the board changes (v0.162.0)</title>
      <link>https://pekan.cloud/changelog/v0-162-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-162-0/</guid>
      <pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan can now show an agent's live intent before its work produces a comment, assignment, or card move. Agents connected through MCP can announce that they are viewing a task, planning an approach, or editing work. That short-lived state appears as an amber pulse on the task card and in the task-detail header, with the agent name and any concise context available on hover. It is deliberately separate from the green Agent working badge: the existing badge describes a persistent task claim, while presence describes what a live agent session says it is doing right now. Presence never becomes task history and never adds database cleanup work. Each agent session sends a heartbeat with an expiry time; if the process stops, loses its connection, or crashes, the server removes the signal automatically. The desktop also prunes expired state locally, so a missed disconnect event cannot leave a permanent ghost indicator. Reconnecting clients receive a fresh organization-scoped snapshot, and project-scoped MCP credentials cannot publish presence into another project. Agent Setup guidance now explains how clients should heartbeat and clear this state without treating it as a replacement for assignment, progress comments, or handoffs.</description>
    </item>
    <item>
      <title>Real token costs, measured rather than guessed (v0.161.0)</title>
      <link>https://pekan.cloud/changelog/v0-161-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-161-0/</guid>
      <pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan can now capture what a terminal Claude Code session actually cost, without anyone having to estimate anything. When a session ends, a hook reads the transcript Claude Code just wrote, totals the token usage recorded in it, and reports that to your board. The numbers come from the provider's own accounting, so the Telemetry view's Runs tab fills in for sessions the desktop app never launched. For most people, that is nearly all of them. Building it turned up three properties of the transcript format that quietly wreck a naive total, and all three are now handled. Assistant messages are repeated across lines: in one real session, 187 of 466 lines were duplicates, so counting them all inflates usage by more than half. Cache writes carry a time-to-live split, and the one-hour variety bills at twice the base input rate rather than the five-minute rate's 1.25x. And most consequentially, the input token count is the uncached remainder only, not a total: in that same session it read 566 against 67.2 million cache-read tokens. That last point is why the Flow tab still shows plain token counts rather than dollars for most tasks. A single blended token number cannot be priced, even in principle. Input, output, cache reads and cache writes differ by as much as fiftyfold per token, so the mix decides the bill far more than the total does. The same 700,000 tokens can be a few dollars or twenty. Where a captured run exists, the Costliest tasks panel now shows a real metered dollar figure and says how many of the listed tasks it could meter; everywhere else it shows the agent's reported token count, visibly distinct, and labelled as the estimate it is. The pricing catalog was corrected against both providers' published rates in the process. Claude Opus 5 had been carrying Opus 4.1's older, higher numbers; Sonnet 5's introductory pricing is now reflected; Fable 5 was added; and the OpenAI entries were replaced, since the model identifiers they named are no longer in OpenAI's catalog and could never have matched anything a provider reports. A model with no published rate is still stored as unknown rather than guessed: an unpriced run reads "cost unknown", never zero.</description>
    </item>
    <item>
      <title>Telemetry: what your board can already tell you (v0.160.0)</title>
      <link>https://pekan.cloud/changelog/v0-160-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-160-0/</guid>
      <pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan has a new workspace tab, Telemetry, sitting between Roadmap and Timeline. It answers the questions a kanban board is uniquely placed to answer and almost never does: where work actually piles up, how long it really takes, how often it comes back from review, and how far token estimates land from reality. The headline number on most boards will be an uncomfortable one, and that is the point. On the board this was built against, the median task sat in Review for 8.4 days across 195 completions, nearly the entire 8-day median cycle time. Every other stage was measured in minutes or hours. That single bar reframes where the delay lives: not in agents doing the work, but in the wait for a human to look at it. The slowest stage with an adequate sample is flagged as the bottleneck; a single slow outlier never earns the label, because a verdict drawn from one observation is not a verdict. The Flow tab is built entirely from data your board already has. Every metric is derived from column-move history and the actuals agents report when they close a task, so it is dense from the first time you open it: no instrumentation to switch on, no waiting period, nothing to configure. Time in stage, throughput, cycle time, review rework rate, tokens per day split by agent, estimate versus actual, and the token-heaviest tasks are all read back out of history that has been accumulating since the board was created. Numbers are reported the way the rest of Pekan reports them: honestly. A rate with nothing in its sample reads "No data", never "0%". Every stage bar carries the number of observations behind it. The token panels state how many completions actually reported usage (184 of 231, say), so a partially-reported board is never mistaken for a cheap one. And because those token figures are self-reported by the agent that closed the task rather than metered at the provider, they are labelled as estimates and never converted into a dollar figure. A confident-looking cost derived from a guess is worse than no cost at all. The estimate-versus-actual chart plots on a log scale, which turned out to matter more than expected: misses on a real board span a task finishing at a twentieth of its estimate to one finishing at fifty-seven times it. On a linear scale every large miss pins to the same full-width bar and the difference between twice and fifty times disappears. The tile above it reports the median ratio rather than a share-within-a-band, because "4.2× the estimate" tells you what to multiply your next estimate by, while "7% on target" only tells you things are bad. Alongside the view there is a new MCP tool, record_run, which lets an agent report one finished run: provider, model, outcome, and token usage. Runs launched from the desktop were already captured, but a Claude Code or Codex session driving the board from a terminal was invisible to that lifecycle, which is why the Runs tab reads empty on most boards. Agents should call it when a unit of work finishes, and should omit usage entirely when the provider did not report any: an unknown cost is stored as unknown rather than as zero. Newly scaffolded projects get this written into their agent instructions automatically.</description>
    </item>
    <item>
      <title>Two surfaces that had not caught up with the theme (v0.159.3)</title>
      <link>https://pekan.cloud/changelog/v0-159-3/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-159-3/</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Agent run output (the log block that opens under a run on the Activity page and in the Agent runs panel) was painted a fixed near-black with pale blue text, left over from the interface Pekan used before the redesign. It ignored the theme completely, so it stayed the same cold slab whichever theme you picked, and read especially oddly in the light themes. It now uses the theme's own colours and sits recessed inside the card that contains it, so it reads as an inset well of machine output rather than a foreign block. The two copies of it, which had drifted into slightly different styling, are now one component. The Windows caption buttons (minimise, maximise, close) are drawn by the operating system rather than by Pekan, so their background has to be handed to Windows explicitly. Pekan was handing over the panel colour, which matches the header beside them in most themes but not in Ember, where the window frame is deliberately darker than the panels inside it. That left a lighter strip in the top-right corner of every Ember window, against the near-black title bar next to it. The seam is gone. The colour used before the window has finished loading was also warmed, so starting the app no longer flashes a cool white strip. The readability check that guards every built-in theme now covers the log block's text as well, so the pairing cannot quietly drift below the contrast floor in a future palette change, including in any custom theme you build yourself.</description>
    </item>
    <item>
      <title>The Pekan mark turns amber (v0.159.2)</title>
      <link>https://pekan.cloud/changelog/v0-159-2/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-159-2/</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The app icon and the Pekan mark still carried the blue-violet accent the interface moved off in 0.158.0, which left a purple P sitting next to an amber workspace on the taskbar, in the title bar, and on the website tab. The mark is now warm throughout: a warm near-black plate, a warm off-white P, and the amber brand in the bowl with a lighter amber fold catching the light. The shapes are untouched: this is a recolour, not a redraw, so the mark stays recognisable. The accent uses the brand's darker amber rather than the lighter one the dark interface uses. That choice preserves the mark's internal structure: every pair of shapes in the icon keeps the contrast relationship it had before, so the counter of the P stays distinct from the letter around it at small sizes instead of blurring into a single blob. The Windows icon was also rebuilt as a proper multi-resolution file with dedicated 16, 32, 48, 64, 128, and 256 pixel images, where it previously carried a single oversized one, so the taskbar, the alt-tab switcher, and Explorer each get artwork drawn for the size they display. The change reaches everywhere the mark appears: the desktop title bar and Help page, the installer and the executable itself, the website favicon and header, the operator console's brand mark, and the reference artwork in the brand documentation. The alternate logo concepts kept in that documentation were recoloured too, so they no longer show a direction the product has left behind. The teal used in those sheets for agent and connection states stays as it is. That colour is still live in the product and was never part of the old accent.</description>
    </item>
    <item>
      <title>The Files sidebar joins the refreshed design (v0.159.1)</title>
      <link>https://pekan.cloud/changelog/v0-159-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-159-1/</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The right-hand Files sidebar was the one part of the workspace the new design did not reach, and it showed: three stacked header rows (the project name, the Files and Diff switcher, and a row of file actions) where the rest of the window had already collapsed to one. It now matches. A single row carries the Files and Diff switcher on the left, with the changed-file count riding alongside the Diff label, and the new file, new folder, quick open, and refresh actions on the right, at exactly the height of the view header across the pane. The project name moves to its own line below in monospace, alongside the control that collapses the sidebar. The tree itself is tighter and easier to scan. Rows are shorter, indentation is narrower so deep paths stay readable in a narrow sidebar, and filenames are set in IBM Plex Mono while folder names stay in the sans face, the same split between prose and machine output the rest of the refresh uses, which makes the shape of a directory listing obvious at a glance. Git status tints in the tree now come from the shared theme tokens rather than fixed colours, so a modified file no longer borrows the amber the brand accent has taken over, and the tints match the Diff list exactly.</description>
    </item>
    <item>
      <title>A new look for Pekan: warmer, denser, and a new Ember theme (v0.158.0)</title>
      <link>https://pekan.cloud/changelog/v0-158-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-158-0/</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan has been redrawn around a warmer, more deliberate visual language. The interface moves off its blue-violet accent onto a warm neutral base with an amber accent, and the typeface changes from Geist to IBM Plex Sans, with IBM Plex Mono carrying every piece of machine data: task identifiers, dates, estimates, token counts, column counts, and branch state. That split is the point. Prose reads as prose, and anything a machine produced reads as machine output, so you can scan a column for identifiers or costs without reading a single word of a title. The Workspace no longer stacks two header rows. Opening Tasks used to show the word Tasks twice, once in a toolbar and again in the view's own header, and the pair consumed roughly fifty vertical pixels on every screen. There is now one row per view. It carries the view name, a short monospaced summary such as twenty-eight open or two queued, whichever controls that view actually needs, and a single group holding Project context, Worktrees, and Agent setup, with Agent actions as the one accent-filled action on the row. Every view gained that space back for its own content. Board columns now carry a coloured top rail and a compact uppercase header, and cards are tighter: a two-pixel priority tick down the leading edge, the identifier and status chips on one line, and a single monospaced footer holding assignee, dates, estimate, and tokens. The Queue was rebuilt around how it is actually used. Adding work is now a search-as-you-type field rather than a dropdown listing every open task, the whole list sits in one centred column instead of stretching across the window, and a blocked entry is marked with an amber ring and a small chip rather than recolouring the entire row. The Roadmap colours its bars by status rather than priority, since what you scan a timeline for is what is finished, what is waiting on a human, and what is moving. A legend in the header keeps the mapping explicit, milestone rows read as full-width bands, and the today marker is now a dedicated red so it can never be mistaken for a bar. Alongside the refreshed Light, Dark, Midnight, and Sepia themes there is a fifth: Ember. It pairs a near-black window frame (title bar, tab strip, sidebar, and status bar) with a warm charcoal canvas and a brighter amber accent, for a higher-contrast, more focused workspace. Every theme, including Ember, is checked against the same automated readability rules that guard text and control contrast, so nothing in this refresh trades legibility for style. Pick a theme in Settings.</description>
    </item>
    <item>
      <title>More reliable MCP URLs for remote boards (v0.157.5)</title>
      <link>https://pekan.cloud/changelog/v0-157-5/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-157-5/</guid>
      <pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Agent setup for remotely reachable projects now writes the public board address into .mcpekan/config.json. Previously a remote server advertised whatever address it had bound locally, which behind a reverse proxy is a loopback upstream such as http://127.0.0.1:3847/mcp. Repair Agent Setup copied that value verbatim into the project, so a correctly issued access token was paired with an address pointing at the developer's own machine. Coding agents then either failed to connect or reached an unrelated local MCPekan that rejected the token, producing an Unauthorized error that gave no hint the URL was the problem. Remote deployments now declare their public MCP URL explicitly and refuse to start without it, so the failure surfaces once at boot with a clear message instead of silently spreading into every project configuration. The desktop startup sync is also more careful. It refreshes .mcpekan/config.json for local projects on every launch, and it now leaves alone any config that carries a bearer token or points at a remote host. A folder linked to a remotely hosted board keeps its connection details instead of being quietly rewritten to localhost and stripped of its credential.</description>
    </item>
    <item>
      <title>Planning decisions you can answer, and a clearer sign-in handoff (v0.157.1)</title>
      <link>https://pekan.cloud/changelog/v0-157-1/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-157-1/</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Agent-assisted project planning now pauses when the draft raises consequential questions instead of showing them as static text at the end. You can answer each question, ask the selected agent to revise the plan around those decisions, and review the resulting goals, milestones, and tasks before applying anything. If you intentionally want to proceed with unresolved questions, that remains an explicit option. Closing or discarding at this stage cleans up the pending proposal without changing the project. Desktop sign-in now leaves the browser in a useful state after it hands authentication back to Pekan. The account page confirms that sign-in succeeded, tells you to return to the desktop app, and makes it clear that the browser tab or window can be closed. Pekan still opens automatically through the secure custom-protocol callback, with a visible Open Pekan button available if the browser blocks or misses that automatic handoff.</description>
    </item>
    <item>
      <title>Plan a project with an agent, and a roadmap that talks in goals (v0.156.0)</title>
      <link>https://pekan.cloud/changelog/v0-156-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-156-0/</guid>
      <pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. The roadmap now speaks in plain language: a goal is an outcome you want to reach, milestones are the concrete checkpoints toward it, and board tasks link to a milestone to track the real work. "Goal" simply replaces the old "initiative" wording everywhere you see it: your existing roadmap data is untouched and nothing needs migrating. You can create and maintain goals and milestones by hand from the Milestones panel with a new "+ New goal" form, no agent required, and the roadmap's empty state now explains the goal → milestone → task model and offers both a manual start and an agent-assisted one. New projects can now be planned, not just created. After you create a project it is real and usable immediately, and Pekan offers an optional fork: open the empty project right away, or ask an agent to turn a rough idea into a plan. Describe what you want to build and the agent drafts a proposal (goals, milestones, and a set of starter tasks) that you review and edit before anything is written. Uncheck what you don't want, tweak titles and priorities, pick a destination column, then apply it in one atomic step, or discard it and your project is left exactly as it was. The same "Plan with an agent" entry point is available later from an empty roadmap. Under the hood this is a review-before-apply proposal: the plan is generated and validated without touching your board, stored as an editable proposal, and applied in a single transaction that is safe to retry. Agents get matching vocabulary too: new create_goal and update_goal MCP tools (the old initiative tools keep working), and the Plan action now proposes goals and milestones from your project description and existing board work.</description>
    </item>
    <item>
      <title>Review work now leaves a durable trail and self-heals after drift (v0.154.0)</title>
      <link>https://pekan.cloud/changelog/v0-154-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-154-0/</guid>
      <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Delivered agent work that needs a human decision now records a lasting review trail instead of living only in memory. When an isolated run is pushed for review, Pekan writes a review artifact keyed to the task, run, and the immutable base commit it was cut from, and it stamps a plain-language event onto the task timeline, "Delivered work for review", alongside the diff statistics (files changed, insertions, deletions). Re-delivering the same run against the same base resolves to the one existing review rather than piling up duplicates, so the queue stays honest across retries and restarts. Auto-merged clean runs still bypass the queue entirely; only work governed by a human-review policy or explicitly escalated creates a review. Reviews also reconcile themselves against reality. On desktop startup, and again whenever you open the Review Queue, Pekan checks each open review against its worktree and pull request and surfaces explicit drift states when something changed underneath it: a removed worktree, a base that has diverged, or a pull request that was altered outside Pekan. Each newly detected drift is recorded once on the task timeline, "Review needs attention", so a restart that finds the same condition stays quiet instead of spamming, while a genuinely new problem is captured. This is the persistence and reconciliation backbone under the global Review Queue, and it works the same on local SQLite and hosted Postgres.</description>
    </item>
    <item>
      <title>Clearer AI authorship and release notes with permanent homes (v0.153.0)</title>
      <link>https://pekan.cloud/changelog/v0-153-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-153-0/</guid>
      <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan now labels AI-authored work in plain language wherever you read it. Tasks created by an AI agent carry an AI-generated badge on the board, in the task list, and on the task detail page. Agent-written handoffs use the same explicit language, and the Agent Actions library now explains that running an action produces AI-generated output. The distinction is intentional: operational badges can still describe an agent as working or stale, while content labels tell you who created what. Release notes also have permanent, shareable pages. The changelog remains a quick directory of releases, but every entry now links to its own canonical page with structured metadata for search engines and social previews. RSS subscribers receive those stable links too. Major releases are visibly marked, and the release tooling enforces the longer write-up they require. Finally, Pekan's third-party attribution bundle is now available directly on Pekan.cloud instead of sending readers elsewhere for the complete text. The generated page includes all 324 production dependencies, their copyright attribution, and their full license or notice text. CI regenerates the bundle and fails if it drifts or if a dependency introduces an unreviewed or missing license.</description>
    </item>
    <item>
      <title>A global Needs Human feed for agent work (v0.148.0)</title>
      <link>https://pekan.cloud/changelog/v0-148-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-148-0/</guid>
      <pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan now gives agent-driven work one deliberate place to ask for human attention. The new Needs Human feed gathers the conditions that should interrupt you without mixing them into ordinary notifications: delivered changes waiting for review, failed or timed-out agent runs, task claims whose agent has gone quiet, and structured questions that need an answer. A badge in the app header shows the current open count, and selecting an item takes you directly to the relevant review or task. The feed is global across your visible projects, so you no longer have to open each board and scan for something an agent left behind. The feed stays useful by tracking conditions rather than messages. A repeated detector pass does not create duplicate cards, and seeing an item does not dismiss it. Instead, Pekan closes it automatically when the underlying condition is resolved: approve the review, retry a failed run, revive or release a stale claim, or answer the agent's question. Failed-run retries are treated as a chain, so only the latest unresolved failure asks for attention. Ordinary comments and informational notifications remain in their existing inbox and cannot leak into this feed. This separation makes the badge a trustworthy count of open decisions, not another unread counter that steadily grows. You can filter Needs Human by project or by category, and the ordered feed consistently puts the most urgent, longest-waiting work first. Large workspaces load the list in stable pages, while realtime updates refresh the view as source conditions change. The same reconciliation runs periodically in the background and on feed reads, so time-based stale claims appear even when nobody has just changed the board. Keyboard focus, named filter groups, pressed states, live loading status, and descriptive item labels are included for accessible operation. Underneath, SQLite and PostgreSQL share the same persisted attention model and deterministic query contract.</description>
    </item>
    <item>
      <title>Sign in to your Pekan account from Settings (v0.147.0)</title>
      <link>https://pekan.cloud/changelog/v0-147-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-147-0/</guid>
      <pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan now has a proper account section in Settings. It shows who you're signed in as and which plan you're on, in one place, at a glance. Signing in opens your browser, you authenticate on the web the way you would with any other site, and Pekan picks the session back up automatically when you return. There's no password typed into the desktop app, and there's no license key to paste anywhere: your access follows your account. Nothing about this changes the local-first promise. Pekan works fully signed out, and it always will: local projects never touch an account. Signing in is what unlocks the workspace features that live on Pekan's servers. If you only ever work locally, you can ignore this section entirely, and nothing about the way your existing projects behave changes. We paid particular attention to the awkward states. If your connection drops, Pekan keeps working on your last known plan and tells you it's doing so, rather than locking you out of features you're paying for because a network request timed out. If your account has no active plan, you get a plain explanation and a pointer to your plan, not an error. If we can't reach the account service, that's shown as a status, not a failure. In every one of these cases your local projects carry on untouched, and starting the app never depends on being able to reach us. Signing out is instant and reversible, and switching accounts on the same machine just works, without leaving stale credentials behind for the next session to trip over. Entitlement-gated actions now read your actual entitlement rather than guessing from whether a session exists: they tell the difference between "you're signed out" and "you're signed in but your plan doesn't include this", and say which. Your session is stored using your operating system's secure storage, and refreshes quietly in the background.</description>
    </item>
    <item>
      <title>Automatic safety snapshots before big changes (v0.145.0)</title>
      <link>https://pekan.cloud/changelog/v0-145-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-145-0/</guid>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. Pekan now takes an automatic snapshot of your local database right before the handful of actions that can change or remove a lot of data at once, so there's always a recovery point if something goes wrong. Deleting a project (which cascades to every column, task, comment, and attachment inside it) always creates a snapshot first. Large bulk operations (updating, completing, or sending ten or more tasks to review in a single call, the kind of thing an AI agent might do) snapshot before they apply, too. A snapshot is a complete, consistent copy of your board database, written to a managed folder on your machine. It's separate from the manual backups you can already save from Settings: these are app-managed recovery files that Pekan creates for you and prunes automatically, keeping the last ten, nothing older than a week, and staying under a size cap. If a project delete can't be snapshotted for some reason, Pekan blocks the delete rather than risk destroying data without a safety net. You can see and manage your snapshots under Settings → Automatic snapshots. The list shows what each snapshot was for, when it was taken, and how large it is, with a button to reveal the folder in your file browser. To restore one, quit Pekan and swap your live database file for a snapshot copy: the folder view walks you through it. This feature is local-mode only. If you drive coding agents from your board, this is a quiet but meaningful safety net: an agent that fires a large bulk change or an accidental project delete now leaves you a recoverable checkpoint automatically, with no setup required.</description>
    </item>
    <item>
      <title>Sharper Git review and a smoother terminal (v0.144.0)</title>
      <link>https://pekan.cloud/changelog/v0-144-0/</link>
      <guid isPermaLink="true">https://pekan.cloud/changelog/v0-144-0/</guid>
      <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
      <description>Co-authored by AI · Human-reviewed and published by Pekan. This release polishes the workspace tools that let you review and run code without leaving your board. When you link a local folder to a project, Pekan gives you a file browser, an integrated terminal, and a read-only Git tab, so you can go from a task to its code and back in one window. The Git tab now renders working-tree changes more clearly: diffs are easier to scan, and the view stays in sync as you edit. The integrated terminal launches faster and more reliably, so opening a shell in your project directory is close to instant. Alongside these, the build pipeline got a round of reliability fixes. If you use Pekan to coordinate an AI coding agent, these changes make it quicker to check what the agent changed (open the workspace, glance at the Git diff, and run the project) before you move a task to review.</description>
    </item>
  </channel>
</rss>
