dotmd-cli 0.76.0 → 0.76.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dotmd-cli",
3
- "version": "0.76.0",
3
+ "version": "0.76.2",
4
4
  "description": "CLI for managing markdown documents with YAML frontmatter — index, query, validate, graph, export, lifecycle, and AI summaries.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/new.mjs CHANGED
@@ -101,7 +101,16 @@ const BUILTIN_TEMPLATES = {
101
101
  'related_plans:',
102
102
  'related_docs:',
103
103
  ].join('\n'),
104
- body: (t, ctx) => `
104
+ body: (t, ctx) => {
105
+ // Same full-body shortcut the plan templates use, and for the same
106
+ // reason: a body that already authors `## Section` headings is a complete
107
+ // document, not section-content for one slot. Nesting it under `## Overview`
108
+ // produced a second `# Title` under the scaffold's, a placeholder summary
109
+ // line above the author's own opening, and the skeleton's trailing
110
+ // sections after a document that had already ended.
111
+ const authored = fullBodyShortcut(t, ctx?.bodyInput);
112
+ if (authored !== null) return authored;
113
+ return `
105
114
  # ${t}
106
115
 
107
116
  > One-line summary of what this doc covers.
@@ -116,7 +125,8 @@ ${ctx?.bodyInput?.trim() ?? ''}
116
125
 
117
126
  ## Related Documentation
118
127
 
119
- `,
128
+ `;
129
+ },
120
130
  },
121
131
  plan: {
122
132
  description: 'Execution plan — build-up shape (Problem → Phases → Closeout) with phase status markers and Version History',
package/src/section.mjs CHANGED
@@ -65,7 +65,7 @@ export function findSection(sections, name) {
65
65
  // Within each tier the order is still priority order, which decides a heading
66
66
  // carrying more than one mark.
67
67
  const GLYPH_PATTERNS = [
68
- { kind: 'shipped', re: /(✅|☑|✔)/ },
68
+ { kind: 'shipped', re: /(✅|☑|✔|✓)/ },
69
69
  { kind: 'skipped', re: /(⏭)/ },
70
70
  { kind: 'in-progress', re: /(🟡|🔄)/ },
71
71
  { kind: 'blocked', re: /(🚧|🔴)/ },
@@ -109,7 +109,7 @@ export function detectMarker(heading) {
109
109
  // and the space, is not \s, and ends the run — so a heading led by the
110
110
  // emoji-presentation form was not a phase heading at all, while the bare
111
111
  // codepoint was. Reported by the owner, 2026-08-16.
112
- const PHASE_DECORATION = String.raw`[\s>*_~\`#-]*(?:[✅🚧⬜🟡⏭☑✔◻☐⬛🔴🔄][︎️]?\s*)*`;
112
+ const PHASE_DECORATION = String.raw`[\s>*_~\`#-]*(?:[✅🚧⬜🟡⏭☑✔✓◻☐⬛🔴🔄][︎️]?\s*)*`;
113
113
  const PHASE_LEAD = new RegExp(`^${PHASE_DECORATION}phase\\b`, 'i');
114
114
 
115
115
  // "Phase 3 outcome" is commentary ABOUT a phase, not a phase. Counting it