github MrLesk/Backlog.md v1.54.0

3 hours ago

v1.54.0

Breaking changes

  • Complete is removed. backlog task complete and MCP task_complete no longer perform an operation. Mark finished work Done, then use backlog task archive <id> or MCP task_archive to take it off the board.
  • Archive now preserves identity and links. Archiving no longer releases the task ID or removes dependencies and references. Archived tasks are read-only; restore them before editing. To permanently remove a task and release its ID, archive it first, then use backlog task delete <id>. Delete has no second confirmation prompt. An archived dependency is satisfied only when it is in the configured final status.
  • Cleanup uses archive/tasks, replacing the completed-folder flow. Update scripts that expect cleanup to write into completed. Existing completed-folder records remain readable as archived tasks. backlog doctor previews the migration; --fix applies it alongside its normal duplicate-ID repairs.
  • Default task ordering and page contents change. Task lists use ordinal, then configured priority, then ID. Plain pagination selects tasks from the sorted list before grouping them by status, matching JSON. Update scripts that depend on the previous order or page contents; concatenating plain pages no longer reproduces one uninterrupted grouped list.
  • Commands needing unavailable input now fail. cleanup requires interactive input and output. init exits nonzero when required answers cannot be obtained. Scripts must fully specify initialization inputs.
  • Previously accepted malformed or ambiguous edits now fail. Malformed dependency values, unsupported marks during indexed checklist edits, wrong-typed HTTP Definition of Done indices, and ambiguous replacements of legacy task sections are rejected before writing. Repair the reported data or section boundaries before retrying.

Highlights

  • Archive replaces Complete, with restore and delete: tasks in any status can be archived while keeping their ID, record, dependencies, and references. Archived tasks remain viewable and are read-only. backlog task restore <id> returns a task with the same ID and status. backlog task delete <id> permanently removes an archived task, cleans links from other tasks and drafts, and refuses deletion while subtasks still exist. The ID becomes reusable once no other branch or worktree holds it. (#1094, #1095, #1096)

    Migration: task complete and MCP task_complete are removed. Mark finished work Done, then archive it during cleanup. Existing completed folders remain readable as archived storage; backlog doctor --fix moves those files into archive/tasks. An archived dependency counts as satisfied only when it is in the final status.

  • Archive, restore, and delete documents and decisions from the CLI. Documents also gain the same MCP operations, and both web detail pages gain an Archive button. Archiving preserves the file and reserves its ID; deletion requires archiving first and has no second prompt. Commands report affected task and draft documentation links for you to update. (#1106, #1107, #1108, #1109)

  • Add or remove individual documentation links with --add-doc and --remove-doc on task and draft edits. Both accept repeated or comma-separated values. --doc remains replacement of the full list. (#1044, @BetExchange91)

  • Change a decision’s status from the CLI with backlog decision edit <id> -s <status>. Status remains free-form, and the rest of the decision file is preserved. (#1088)

  • Clearer acceptance-criteria progress: web board cards and All Tasks rows show the ring in every status when criteria exist. List rings sit beside the title without increasing row height, and titles stay aligned with large counts. In Progress TUI rows replace the ASCII bar with a pie glyph and checked/total count, preserving colors and task-ID alignment. (#1082, #996)

  • Last-updated dates on web board cards, beside creation dates. Both use the shared compact date style: recent dates are relative, older dates use the configured date format, and hovering shows the full stored UTC value. (#1084)

Behavior changes

  • Consistent task ordering and pagination: default CLI, JSON, MCP, and TUI task ordering uses ordinal, then configured priority, then ID. The TUI follows plain output’s status groups. --max-count and --skip select the same tasks in plain and JSON output before status grouping. Browser priority sorting breaks ties by ID. TUI priority arrows also work with custom priority lists and have an ASCII fallback. (#1087, #1092)

  • Unavailable interactive input fails clearly: init exits nonzero when required answers cannot be obtained. cleanup requires both input and output to be interactive terminals and fails without archiving anything otherwise. (#1012, #1097)

Fixes

  • Creating tasks, drafts, documents, or decisions no longer deletes or replaces existing records when filenames and stored IDs disagree. (#1099)
  • Missing storage directories are created when needed, fixing create and move commands in fresh clones. (#1029)
  • Replacing or clearing a legacy description, plan, notes, or final summary refuses ambiguous boundaries instead of deleting a following custom section. The error explains how to repair the section markers. (#1113)
  • Malformed dependency values and unsupported checklist marks are rejected before destructive edits. HTTP task updates reject malformed Definition of Done indices instead of silently ignoring them. (#1031, #1033, #1011)
  • Rejected task and draft edits explicitly report No changes were applied. only when nothing was saved. Partial multi-task edits and saved changes followed by a Git commit failure are reported accurately. (#1086)
  • Finite CLI list output reaches slow pipe readers completely instead of being truncated on exit. (#1041)
  • Re-running init preserves a cleared default editor instead of restoring $EDITOR or $VISUAL. (#1083)
  • TUI keyboard and mouse navigation work after closing the editor, with selection retained across refreshes. (#1089)
  • Web Markdown previews render angle brackets inside inline code and code blocks correctly; HTML-like content remains literal text. (#1085)
  • Generated task comments no longer turn ordinary text and author/date metadata into Markdown headings. (#1114)
  • Auto-commit preserves moved symbolic links correctly and clearly reports when a record changed but its Git commit failed. (#1105)

Build and tooling

  • Upgrade to Bun 1.4.3 and refresh dependencies. Standalone executables use bytecode for faster startup. Linux and Windows x64 builds use Bun’s unified targets, with older-CPU checks retained. (#1077, #1078, #1079)
  • bun run check:types uses Bun’s built-in TypeScript checker. Independent CI and release steps run in parallel. (#1081, #1112)

Documentation

  • CLI and MCP guides explain the final archive, restore, and delete workflow. The README adds the optional Groma.md integration and a link to Backlog.md’s architecture map.

New Contributors

Full Changelog: v1.53.0 → v1.54.0

Don't miss a new Backlog.md release

NewReleases is sending notifications on new releases.