Skip to content

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 16:44
· 255 commits to main since this release
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 Lucide CircleMinus, DUPLICATE uses CirclePercent, both in medium gray. All terminal statuses unblock dependents, trigger parent auto-close, and are rejected by xpo 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 start and xpo merge now use git worktrees by default, making multi-agent and multi-session work safe by design. The primary checkout stays parked on main as the integration hub; each xpo start creates an isolated worktree at .xpo/worktrees/<branch>/; xpo merge runs 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-wt or globally with worktrees: false in config.

    • Hub-rooted storage layer — all issues.db and artifact I/O routes through the primary checkout via git rev-parse --git-common-dir, so MCP servers in worktrees read/write the hub's event log (xpo-580061)
    • xpo start creates worktrees with --force takeover (removes existing worktree), worktree_setup config hook for post-creation build steps (e.g. make deps), and MCP start tool returns worktree_path (xpo-1765ca)
    • xpo merge verifies 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)
  • 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 init and xpo doctor now create/ensure .gitattributes with merge=union for issues.db, preventing merge conflicts on the append-only event log (xpo-c762f7)

  • Generated xpo-workflow skill now includes worktree isolation guidance (start/merge tools, 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 init is now idempotent — re-running on an existing project refreshes agent skill files without overwriting config.yaml, issues.db, or other project state (xpo-cf75df)

Improved

  • xpo init now 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 merge via MCP and REST API now deletes the issue branch by default after merge; pass keep_branch: true to 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_labels config) 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 merge with squash or ff-only strategy no longer overwrites issues.db events on main when worktrees are disabled — performs a line-based union of both versions before committing, matching the merge=union behavior that only fires during 3-way merges (xpo-c58af8)
  • xpo merge now stages .xpo/artifacts/<issue-id>/ (spec, walkthrough, generic artifacts) alongside issues.db in the merge commit — previously left as untracked files on main (xpo-dda39d)
  • Backlog rows now dynamically fit labels into available space (35% of row width budget) with +N overflow, 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 list tool 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)