github MrLesk/Backlog.md v1.50.0

5 hours ago

v1.50.0

Highlights

  • Reworked TUI task composer: reliable editing (backspace, delete, caret-aware input), Tab/Shift+Tab field navigation, and a fixed status picker (#833)
  • Dependency readiness in the TUI and browser: see at a glance whether a task is blocked or ready to pick up, with fail-closed handling of ambiguous IDs (#873, with @cottrell)
  • Hide empty board columns in the TUI: the hideEmptyColumns setting now drives the TUI board too, with a Shift+H quick toggle persisted to config (#889, with @janosmiko)
  • Task IDs auto-link in the web UI: task IDs mentioned in markdown become deep links to the task (#865, with @cottrell)
  • defaultAssignee is now honored on task creation across CLI, TUI, web, and MCP (#867), with explicit unassign everywhere: -a "" on the CLI, an empty list on web/MCP, and a prefilled removable chip in the web create form (#880, #886)
  • Concurrent edits fail fast instead of losing data: a second writer gets a clear error instead of silently overwriting (#860)
  • backlog decision list joins the CLI (#871)

Behavior changes

  • Invalid config now stops Backlog with a clear error. Malformed YAML (for example statuses: ["To Do]) or wrong-typed values (for example statuses: To Do) abort with Backlog could not start because <file> has an invalid value for "<key>": ... instead of silently applying defaults. Previously one malformed key could also silently corrupt how other valid keys parsed (#877, #882)
  • Bare numeric task IDs resolve consistently. backlog task edit 597 now works in projects with a custom ID prefix, matching task view; ambiguous IDs fail closed everywhere, including dependency and parent-filter resolution, and task demote / draft archive / draft promote now exit non-zero when the ID does not resolve (#881)
  • Explicit empty means unassigned. POST /api/tasks with assignee: [] now creates an unassigned task instead of applying the default; absent still means "apply the default" (#880)
  • Empty value clears on edit. task edit --dep "", --ref "", and --doc "" now clear the list, matching -a "" and the --clear-* flags; on create an empty value is still rejected (#890, #878)
  • Shell completions fail closed when BACKLOG_CWD points at an invalid directory instead of serving data from the shell's cwd (#876)

Fixes

  • The web task list now fits laptop screens without horizontal scroll: content-sized columns with a flexible Title, trimmed page padding, a filter bar that stays on one line, subtle themed scrollbars site-wide, and a visible border on the task modal (#894)
  • TUI footer filter hints show the correct keys for each view, in the filter-bar order (#892, #893)
  • Web board drag-and-drop no longer breaks when hideEmptyColumns is on; hidden columns appear as drop targets mid-drag (#891, with @janosmiko)
  • TUI operations run against the right project when launched from a subdirectory or with BACKLOG_CWD set; previously the board could render one project and write to another (#876, #859)
  • Document watcher: no more endless retries on doc-1.md-style filenames, and renames with zero-padded IDs reconcile correctly (#887)
  • doc create --plain works, doc list handles the legacy docs layout, the TUI restores the previous terminal title on exit (including tmux), and piped backlog board shows the real project name (#879)
  • vim keys: j/k stay inside lists at navigation boundaries (#866) and now also navigate the filter popups (#888, with @janosmiko)
  • Repeated -l flags and empty --dep/--ref values are handled correctly on task create and draft create; --depends-on and --dep values merge instead of silently dropping one (#878)
  • Frontmatter parsing is immune to a parser-cache poisoning class that could return stale task data (#875)
  • Multi-assignee parity for task create (#858), clearable defaultEditor (#855), incremental --add-ref/--remove-ref flags (#870), and dependency/reference/documentation clearing via --clear-* flags (#840, #862)
  • Ambiguous document and decision identities fail closed with doctor diagnostics instead of guessing (#872, #874)
  • TUI window titles include the project name (#863); the Rosetta probe no longer leaks stderr on Apple Silicon (#857); terminal browser initialization errors release the shared loading state (#842)

Documentation

  • backlog_directory is now documented accurately, with a corrected README example (#885, @pxmpsdev's first contribution)
  • Real-newline handling documented for every multiline Markdown flag (#864)

Security

  • All open Dependabot alerts resolved; the mermaid bump was verified against npm attestations and SLSA provenance (#868)

New Contributors

Full Changelog: v1.49.3...v1.50.0

Don't miss a new Backlog.md release

NewReleases is sending notifications on new releases.