Repository navigation
v1.1.0
Added
-
Terminal statuses: CANCELED and DUPLICATE (xpo-a18d46) — two new terminal statuses alongside DONE, with
IsTerminal()/IsCompleted()helpers replacing hardcoded DONE checks across the entire codebase. CANCELED uses LucideCircleMinus, DUPLICATE usesCirclePercent, both in medium gray. All terminal statuses unblock dependents, trigger parent auto-close, and are rejected byxpo start. Only DONE counts toward velocity and burndown. Includes "Show empty groups" toggle in backlog View Options and a column visibility dropdown in the Board view. -
"Done" view tab (xpo-65e8e3) — dedicated backlog tab showing only completed issues, sorted by most recently completed first. Tab order: All Issues → Backlog → Active → Done. Supports flat/nested toggle with independent localStorage persistence.
-
Hierarchy toggle for backlog views (xpo-9091b7) — per-view toggle (nested/flat) in a new View Options dropdown, persisted in localStorage per tab. Nested mode renders full parent-child trees with ghost parents (interleaved by sort order) and ghost children for cross-status context. Flat mode renders all issues at depth 0 grouped by parent with breadcrumbs. Ghost rows use prefixed DnD IDs to avoid duplicate registration. Dragging a parent across status groups shows the cascade "Update sub-issues?" prompt. View options dropdown consolidates layout, expand/collapse, and sort controls behind a single Settings icon.
-
Expand All / Collapse All icon buttons in the backlog toolbar for toggling all parent issue nodes at once (xpo-b44c4c)
-
Worktree-based concurrent workflows (xpo-f7ea12) —
xpo startandxpo mergenow use git worktrees by default, making multi-agent and multi-session work safe by design. The primary checkout stays parked onmainas the integration hub; eachxpo startcreates an isolated worktree at.xpo/worktrees/<branch>/;xpo mergeruns from the hub and cleans up the worktree automatically. All issue events serialize through the hub so the web board reflects real-time state from every agent. Opt out per-command with--no-wtor globally withworktrees: falsein config.- Hub-rooted storage layer — all
issues.dband artifact I/O routes through the primary checkout viagit rev-parse --git-common-dir, so MCP servers in worktrees read/write the hub's event log (xpo-580061) xpo startcreates worktrees with--forcetakeover (removes existing worktree),worktree_setupconfig hook for post-creation build steps (e.g.make deps), and MCPstarttool returnsworktree_path(xpo-1765ca)xpo mergeverifies hub is on the default branch, skips checkout, removes worktree after merge regardless of--keep-branch, and relaxes clean check to allow uncommitted.xpo/events (xpo-f96832)
- Hub-rooted storage layer — all
-
Review view for branches with uncommitted changes — shows working-tree diff in the merge view even before committing, with merge disabled and guidance to commit first (xpo-4295bf)
-
xpo initandxpo doctornow create/ensure.gitattributeswithmerge=unionforissues.db, preventing merge conflicts on the append-only event log (xpo-c762f7) -
Generated
xpo-workflowskill now includes worktree isolation guidance (start/mergetools, worktree path usage, parallel issue isolation) and an explicit review gate after the completion comment — agents must wait for user tophat before writing walkthrough, committing, or merging (xpo-cf75df) -
xpo initis now idempotent — re-running on an existing project refreshes agent skill files without overwritingconfig.yaml,issues.db, or other project state (xpo-cf75df)
Improved
xpo initnow replaces stale agent instructions instead of skipping files that already have them; heading changed from "Exponential Agent Instructions" to "Agent Instructions"; both old and new headings are detected for backward compatibility (xpo-8f7b7a)xpo mergevia MCP and REST API now deletes the issue branch by default after merge; passkeep_branch: trueto opt out (xpo-408db9)- Render cap for Board (50 per column) and Backlog (100 per group) views — reduces DOM nodes for large projects while keeping all counts and stats accurate; "+N more" button reveals the rest (xpo-f16a94)
- Label ordering: metadata labels now sort alphabetically to the left, primary labels (matching
default_labelsconfig) sort to the right in backlog, board, and detail views (xpo-e928c1) - Markdown rendering: tables now have full grid borders, cell padding, and distinct header row; headings use graduated top margins for visual hierarchy; lists are nearly flush with body text; overall vertical rhythm between paragraphs, code blocks, and blockquotes increased for better readability (xpo-dbd580)
- Issue detail scrollbar moved to the right edge of the viewport; property sidebar is now sticky-positioned and scrolls independently on short screens (xpo-a8be39)
- Activity timeline system entries (status changes, merges, artifact updates) now render with tighter vertical spacing; comment cards retain generous margins (xpo-13153f)
Fixed
xpo mergewith squash or ff-only strategy no longer overwritesissues.dbevents onmainwhen worktrees are disabled — performs a line-based union of both versions before committing, matching themerge=unionbehavior that only fires during 3-way merges (xpo-c58af8)xpo mergenow stages.xpo/artifacts/<issue-id>/(spec, walkthrough, generic artifacts) alongsideissues.dbin the merge commit — previously left as untracked files onmain(xpo-dda39d)- Backlog rows now dynamically fit labels into available space (35% of row width budget) with
+Noverflow, adapting as the window resizes; board cards cap at 2 (xpo-5f9ee7) - Sub-issues table rows no longer wrap when issues have many labels; shows first 2 labels with "+N" for the rest (xpo-ff3cb7)
- Notification inbox labels no longer overflow when issues have many labels (xpo-7eff79)
- MCP
listtool now returns issues in user-defined sort order instead of creation order (xpo-2792c3) - Epic "Update sub-issues?" dialog no longer resets completed children; detail view now shows the same cascade prompt as the backlog (xpo-886099)
- Sub-issues preview in cascade dialog caps labels at 2 (primary first), truncates long titles, and scrolls when the list is long (xpo-ee99a5)
- Drag-and-drop no longer accidentally changes parent relationships; Alt is now required for nesting and unparenting (xpo-cd0f62)
- Alt parent/unparent now works in Active and Backlog views: nest highlight responds to mid-drag Alt press, ghost parent indicator placement fixed, and "Remove from parent" added to the right-click context menu (xpo-9859c9)
- Ghost parent row no longer duplicates popovers when the real parent is also visible in a different status group (xpo-377101)
- Status group header story points no longer include completed children or double-count parents; DONE parents show delivered points (xpo-dbdfd3)
- Scroll position now resets to top when navigating between issues via arrow keys or prev/next buttons (xpo-a6a17e)