v2.0.0
What's Changed
- feat(#189): migrate to monorepo structure by @dnsquared in #192
- feat(#190): extract core package from CLI by @dnsquared in #194
- feat(#195): refactor shipper core to async by @dnsquared in #198
- fix(#193): unify command mode handling by @dnsquared in #199
- feat: add retry logic for transient gh CLI failures by @dnsquared in #202
- chore(#204): migrate shipper worktree hook config to file-based hook by @dnsquared in #206
- refactor(core): make @dnsquared/shipper-core electron-safe by @dnsquared in #207
- feat(#205): use XML envelope for formatIssue and formatPR output by @dnsquared in #209
- feat(lock): add heartbeat to renew lock during long runs by @dnsquared in #211
- feat(core): add listIssues() function for structured issue data by @dnsquared in #210
- feat(#212): add configurable agent timeout for stuck commands by @dnsquared in #222
- feat(#213): update setup and plan prompts to allow new dependency installation by @dnsquared in #221
- feat(#214): add environment failure escape hatch to agent prompts by @dnsquared in #224
- feat(#215): add --agent flag to commands for per-invocation agent override by @dnsquared in #225
- feat(#216): add --add-dir for Codex worktree git metadata access by @dnsquared in #226
- fix(groom): prohibit decomposition questions and add confirmation gate by @dnsquared in #227
- feat: replace 'pitch' terminology with 'request' across codebase by @dnsquared in #228
- feat(plan): add gitignore audit step to prevent worktree mismatch spirals by @dnsquared in #229
- fix(#220): remove scripts/ from .shipper/.gitignore template by @dnsquared in #230
- feat(reset): clean up local branches and worktrees by @dnsquared in #234
- feat(desktop): scaffold Electron desktop app (#196) by @dnsquared in #236
- fix(core): log gh retry command and stderr (#231) by @dnsquared in #235
- fix(init): eliminate retry noise by syncing labels with --force by @dnsquared in #237
- refactor(#238): consolidate label definitions into single source of truth by @dnsquared in #246
- docs(#241): add settings schema and troubleshooting to setup prompts by @dnsquared in #249
- docs(#243): sync README, CLAUDE.md, and state-machine.md with current codebase by @dnsquared in #259
- fix(ship): add merge-state pre-checks to ship --merge by @dnsquared in #256
- fix(ship): replace review-cycle cap with total-transition cap by @dnsquared in #261
- feat(core): move git transport operations out of sandboxed agent by @dnsquared in #266
- feat(desktop): adopt shadcn/ui for UI components by @dnsquared in #267
- fix(scripts): return comment databaseId from gh-api-get-review-threads by @dnsquared in #274
- fix(#258): complete shipper:failed label integration by @dnsquared in #276
- feat(unlock): add --stale flag to clear all stale locks by @dnsquared in #272
- feat(core): sandbox-proof worktree environments for package manager caches by @dnsquared in #273
- feat(settings): support model override in command settings by @dnsquared in #275
- feat(desktop): restyle app with retro terminal theme by @dnsquared in #277
- refactor(lint): enable strict preset and promote warnings to errors (#278) by @dnsquared in #281
- feat(ship): park sequential auto issues during pr-remediate waits by @dnsquared in #271
- feat(desktop): add test infrastructure and baseline test (#282) by @dnsquared in #284
- feat(test): add code coverage measurement for unit tests by @dnsquared in #288
- feat(cli): separate blocked and failed issue list sections by @dnsquared in #287
- feat(desktop): support multiple repos with tab UX by @dnsquared in #286
- fix(ship): stop auto loop on shipper:new regression (#270) by @dnsquared in #285
- feat(core): add push retry loop in withGitTransport by @dnsquared in #295
- fix(core): redirect XDG_CACHE_HOME into worktree by @dnsquared in #297
- chore(core): move worktree caches under .shipper/tmp (#300) by @dnsquared in #302
- fix(reset): preserve branches when resetting to implemented by @dnsquared in #303
- docs(session-debugger): use static skill paths (#290) by @dnsquared in #301
- feat(desktop): convert issue list to kanban pipeline board by @dnsquared in #304
- feat(core): add file-based output protocol infrastructure (#248) by @dnsquared in #307
- feat(prompts): surface pre-push hook checks in planner verification by @dnsquared in #310
- refactor(prompts): migrate design/plan/implement/unblock to output protocol by @dnsquared in #312
- feat(core): add priority labels that influence grooming and auto-selection by @dnsquared in #313
- refactor(settings): remove deprecated hooks property by @dnsquared in #311
- refactor(prompts): migrate pr_open/pr_review to file protocol (#251) by @dnsquared in #315
- feat(worktree): move groom, design, plan, pr-review to worktrees (#316) by @dnsquared in #320
- refactor(#252): restructure pr_remediate into multi-pass loop by @dnsquared in #321
- feat(prompts): add opt-in agent feedback section to stage comments by @dnsquared in #314
- refactor(#279): enable type-aware linting by @dnsquared in #318
- fix(prompts): add file-output gitignore guardrail (#317) by @dnsquared in #322
- refactor(lint): add targeted lint rules (#280) by @dnsquared in #323
- feat(core): add session logging infrastructure for headless runs by @dnsquared in #325
- feat(#326): add agent as alias for setup command by @dnsquared in #329
- chore(#328): remove dead bundled scripts by @dnsquared in #330
- fix(#331): scaffold shipper input and output dirs by @dnsquared in #333
- docs(#327): audit and update all user-facing documentation by @dnsquared in #335
- fix(#332): skip successful auto issues on re-selection by @dnsquared in #334
- feat(#336): add --mode support to ship and next commands by @dnsquared in #342
- feat(#338): add retry loop for malformed agent output by @dnsquared in #345
- feat(#343): enrich ci-status.json with step names and log URLs by @dnsquared in #346
- fix(#344): recover push retries with fetch and rebase by @dnsquared in #348
- feat(#339): move desktop terminal into collapsible right-hand drawer by @dnsquared in #351
- feat(#347): add duplicate issue handling to grooming prompts by @dnsquared in #353
- feat(#350): allow common build-time asset domains in sandbox by @dnsquared in #354
- feat(#340): add multi-session terminal tabs with idle indicator by @dnsquared in #355
- feat(#341): add Groom button to desktop pipeline issue cards by @dnsquared in #360
- feat(#356): log all ship runs, not just parallel mode by @dnsquared in #363
- feat(#357): rework pr review prompt to eliminate rubber-stamp approvals by @dnsquared in #364
- fix(#361): handle pr-remediate push failures gracefully by @dnsquared in #365
- fix(#359): use git rev-parse for worktree hook detection in plan prompts by @dnsquared in #366
- fix(#362): use explicit force-with-lease refspecs from first push by @dnsquared in #367
- feat(#368): add desktop adopt issue action by @dnsquared in #375
- feat(#370): replace desktop retro theme with papery UI by @dnsquared in #378
- fix(#372): eliminate beforeAll build in CLI tests by @dnsquared in #379
- feat(#373): add desktop overflow menu with reset action by @dnsquared in #388
- feat(#371): add Ship card action to desktop issue cards by @dnsquared in #395
- feat(#376): add output retry and log file to auto unblock by @dnsquared in #396
- style(#381): add cursor-pointer to interactive elements in desktop app by @dnsquared in #397
- fix(#380): make adopt dialog issue list scroll when overflowing by @dnsquared in #398
- feat(#386): add commit and push to shipper init by @dnsquared in #399
- fix(#390): use fixed 240px width for pipeline columns and attention cards by @dnsquared in #400
- fix(#389): show stageless failed/blocked issues in issue list by @dnsquared in #401
- feat(#385): prevent duplicate PTY sessions for the same issue by @dnsquared in #402
- feat(#384): restyle repo tabs to browser-tab pattern by @dnsquared in #403
- fix(#392): allow shipper:failed-only issues to reset to any stage by @dnsquared in #404
- feat(#394): replace papery desktop theme with nautical design by @dnsquared in #405
- feat(#387): add init action with uninitialized-state detection to desktop by @dnsquared in #406
- docs(#377): add explicit result.json example to unblock prompts by @dnsquared in #407
- feat(#382): add spinner and progress counter to adopt-all button by @dnsquared in #408
- feat(#374): add drag-and-drop reset between pipeline columns by @dnsquared in #409
- feat(#412): lock desktop issue operations by @dnsquared in #415
- feat(#414): add mandatory environmental assumptions dimension by @dnsquared in #416
- fix(#417): clean worktree before git push in transport operations by @dnsquared in #419
- feat(#418): force interactive grooming in ship for new issues by @dnsquared in #420
- feat(#421): run non-interactive desktop commands headlessly by @dnsquared in #422
- fix(#423): show final unblock outcome per issue by @dnsquared in #425
- feat(#424): track and display token usage per stage by @dnsquared in #426
- feat(#427): allow bare shipper new to start interactive session by @dnsquared in #438
- feat(#431): add repo selector to new issue modal by @dnsquared in #441
- feat(#433): show shipping issues in kanban with animation and stop button by @dnsquared in #442
- feat(#435): rerun installCommand after base-branch rebase by @dnsquared in #444
- feat(#428): move repo actions into tab context by @dnsquared in #445
- feat(#434): add desktop auto-ship toggle by @dnsquared in #446
- feat(#430): close issues as not planned from pipeline view by @dnsquared in #447
- feat(#432): move background action cards to left drawer queue by @dnsquared in #448
- feat(#429): add desktop unlock action for locked issues by @dnsquared in #449
- feat(#437): add desktop auto-merge toggle for ship by @dnsquared in #450
- fix(#436): validate accept payloads in processResult by @dnsquared in #451
- fix(#452): enforce shipper gitignore on tracked artifacts by @dnsquared in #457
- feat(#454): remediate post-rebase install failures by @dnsquared in #458
- feat(#456): feed pre-push hook failures back to agent for remediation by @dnsquared in #459
- feat(#410): add GitHub Copilot CLI as a supported agent by @dnsquared in #443
- feat(#453): make init autocommit and push opt-in by @dnsquared in #460
- feat(#455): add copy button to action queue log viewer by @dnsquared in #461
- fix(#464): sync worktree branch with remote before base-branch rebase by @dnsquared in #470
- fix(#465): unify output validation and retry for standard stages by @dnsquared in #467
- fix(#463): truncate oversized agent transport input by @dnsquared in #471
- fix(#468): use pushWithRetry in pr-remediate by @dnsquared in #472
- fix(#469): respect copilot interactive mode by @dnsquared in #473
- fix(#466): converge pr-remediate onto shared validation path by @dnsquared in #476
- fix(#474): add 'no commit found' to gh permanent error patterns by @dnsquared in #478
- fix(#475): bail out of check polling on persistent fetch failures by @dnsquared in #479
- fix(#477): rerun failed CI on no-op remediation passes by @dnsquared in #486
- fix(#480): verify merge success before reverting labels by @dnsquared in #488
- fix(#482): bail out of pr-remediate when rebase drops all commits by @dnsquared in #489
- refactor(#483): remove redundant read-the-issue prompt instructions by @dnsquared in #490
- refactor(#484): clarify PR context source instructions in pr_review prompt by @dnsquared in #491
- fix(#485): remove internal path reference from setup prompts by @dnsquared in #492
- refactor(#487): clarify pr remediate context source instructions by @dnsquared in #493
- fix(#481): refuse force-pushing zero-ahead branches by @dnsquared in #494
Full Changelog: v1.0.0...v2.0.0