@nowline/export-xlsx 0.5.1 → 0.7.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOzD,MAAM,WAAW,WAAW;IACxB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,SAAS,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,wBAAsB,UAAU,CAC5B,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,WAAgB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAuBrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQzD,MAAM,WAAW,WAAW;IACxB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,SAAS,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,wBAAsB,UAAU,CAC5B,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,WAAgB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAuCrB"}
package/dist/index.js CHANGED
@@ -22,6 +22,7 @@
22
22
  // consecutive calls with identical inputs produce byte-identical
23
23
  // output. See `zip-normalize.ts` for the patcher.
24
24
  import { displayLabel, getProp, getProps, roadmapTitle } from '@nowline/export-core';
25
+ import { scheduleRoadmap } from '@nowline/layout';
25
26
  import ExcelJS from 'exceljs';
26
27
  import { durationLiteralToText, durationToWorkingDays } from './duration.js';
27
28
  import { normalizeZipTimestamps } from './zip-normalize.js';
@@ -34,11 +35,21 @@ export async function exportXlsx(inputs, options = {}) {
34
35
  wb.created = generated;
35
36
  wb.modified = generated;
36
37
  wb.title = roadmapTitle(inputs.ast.roadmapDecl ?? undefined);
38
+ const schedule = scheduleRoadmap(inputs.ast, inputs.resolved, { today: inputs.today });
37
39
  buildRoadmapSheet(wb, inputs, generated);
38
- buildItemsSheet(wb, inputs.ast);
39
- buildMilestonesSheet(wb, inputs.ast);
40
- buildAnchorsSheet(wb, inputs.ast);
41
- buildPeopleAndTeamsSheet(wb, inputs.ast);
40
+ buildItemsSheet(wb, inputs.ast, schedule);
41
+ const hasMilestones = inputs.ast.roadmapEntries.some((e) => e.$type === 'MilestoneDeclaration');
42
+ if (hasMilestones) {
43
+ buildMilestonesSheet(wb, inputs.ast, schedule);
44
+ }
45
+ const hasAnchors = inputs.ast.roadmapEntries.some((e) => e.$type === 'AnchorDeclaration');
46
+ if (hasAnchors) {
47
+ buildAnchorsSheet(wb, inputs.ast, schedule);
48
+ }
49
+ const hasPeopleOrTeams = inputs.ast.roadmapEntries.some((e) => e.$type === 'PersonDeclaration' || e.$type === 'TeamDeclaration');
50
+ if (hasPeopleOrTeams) {
51
+ buildPeopleAndTeamsSheet(wb, inputs.ast);
52
+ }
42
53
  const buf = (await wb.xlsx.writeBuffer());
43
54
  const bytes = Buffer.isBuffer(buf)
44
55
  ? new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)
@@ -84,6 +95,8 @@ const ITEM_HEADERS = [
84
95
  { header: 'Parallel', key: 'parallel', width: 18 },
85
96
  { header: 'Duration', key: 'duration', width: 12 },
86
97
  { header: 'Duration (text)', key: 'durationText', width: 16 },
98
+ { header: 'Start', key: 'start', width: 14 },
99
+ { header: 'End', key: 'end', width: 14 },
87
100
  { header: 'Status', key: 'status', width: 14 },
88
101
  { header: 'Remaining', key: 'remaining', width: 12 },
89
102
  { header: 'Owner', key: 'owner', width: 14 },
@@ -100,15 +113,20 @@ const STATUS_FILLS = {
100
113
  blocked: 'FFFFCDD2', // red
101
114
  planned: 'FFE0E0E0', // grey
102
115
  };
103
- function buildItemsSheet(wb, ast) {
116
+ function buildItemsSheet(wb, ast, schedule) {
104
117
  const sheet = wb.addWorksheet('Items', {
105
118
  views: [{ state: 'frozen', xSplit: 0, ySplit: 1 }],
106
119
  });
107
120
  sheet.columns = [...ITEM_HEADERS];
121
+ // Format the Start/End date columns as ISO dates.
122
+ const startCol = sheet.getColumn('start');
123
+ const endCol = sheet.getColumn('end');
124
+ startCol.numFmt = 'yyyy-mm-dd';
125
+ endCol.numFmt = 'yyyy-mm-dd';
108
126
  const rows = [];
109
127
  for (const entry of ast.roadmapEntries) {
110
128
  if (entry.$type === 'SwimlaneDeclaration') {
111
- collectFromSwimlane(entry, [entry.name ?? ''], rows, '', '');
129
+ collectFromSwimlane(entry, [swimlaneLabel(entry)], rows, '', '', schedule);
112
130
  }
113
131
  }
114
132
  for (const r of rows)
@@ -134,21 +152,29 @@ function buildItemsSheet(wb, ast) {
134
152
  to: { row: Math.max(rows.length + 1, 1), column: ITEM_HEADERS.length },
135
153
  };
136
154
  }
137
- function collectFromSwimlane(lane, breadcrumb, rows, group, parallel) {
155
+ /**
156
+ * Resolve the swimlane's display label for the Swimlane column.
157
+ * Prefers the DSL id (name) for stable cross-sheet joins; falls back to
158
+ * the title when the lane has no id.
159
+ */
160
+ function swimlaneLabel(lane) {
161
+ return lane.name ?? lane.title ?? '';
162
+ }
163
+ function collectFromSwimlane(lane, breadcrumb, rows, group, parallel, schedule) {
138
164
  const breadcrumbStr = breadcrumb.filter((s) => s.length > 0).join('.');
139
165
  for (const child of lane.content) {
140
- addSwimlaneChild(child, breadcrumbStr, group, parallel, rows);
166
+ addSwimlaneChild(child, breadcrumbStr, group, parallel, rows, schedule);
141
167
  }
142
168
  }
143
- function addSwimlaneChild(child, swimlane, group, parallel, rows) {
169
+ function addSwimlaneChild(child, swimlane, group, parallel, rows, schedule) {
144
170
  if (child.$type === 'ItemDeclaration') {
145
- rows.push(itemRow(child, swimlane, group, parallel));
171
+ rows.push(itemRow(child, swimlane, group, parallel, schedule));
146
172
  return;
147
173
  }
148
174
  if (child.$type === 'GroupBlock') {
149
175
  const g = child.name ?? displayLabel(child);
150
176
  for (const grandchild of child.content) {
151
- addGroupChild(grandchild, swimlane, g, parallel, rows);
177
+ addGroupChild(grandchild, swimlane, g, parallel, rows, schedule);
152
178
  }
153
179
  return;
154
180
  }
@@ -156,39 +182,42 @@ function addSwimlaneChild(child, swimlane, group, parallel, rows) {
156
182
  const p = child.name ?? displayLabel(child);
157
183
  for (const grandchild of child.content) {
158
184
  if (grandchild.$type === 'ItemDeclaration') {
159
- rows.push(itemRow(grandchild, swimlane, group, p));
185
+ rows.push(itemRow(grandchild, swimlane, group, p, schedule));
160
186
  }
161
187
  else if (grandchild.$type === 'GroupBlock') {
162
188
  const g = grandchild.name ?? displayLabel(grandchild);
163
189
  for (const inner of grandchild.content) {
164
- addGroupChild(inner, swimlane, g, p, rows);
190
+ addGroupChild(inner, swimlane, g, p, rows, schedule);
165
191
  }
166
192
  }
167
193
  }
168
194
  }
169
195
  }
170
- function addGroupChild(child, swimlane, group, parallel, rows) {
196
+ function addGroupChild(child, swimlane, group, parallel, rows, schedule) {
171
197
  if (child.$type === 'ItemDeclaration') {
172
- rows.push(itemRow(child, swimlane, group, parallel));
198
+ rows.push(itemRow(child, swimlane, group, parallel, schedule));
173
199
  }
174
200
  else if (child.$type === 'GroupBlock') {
175
201
  const sub = child.name ?? displayLabel(child);
176
202
  const nested = group ? `${group}.${sub}` : sub;
177
203
  for (const grandchild of child.content) {
178
- addGroupChild(grandchild, swimlane, nested, parallel, rows);
204
+ addGroupChild(grandchild, swimlane, nested, parallel, rows, schedule);
179
205
  }
180
206
  }
181
207
  else if (child.$type === 'ParallelBlock') {
182
208
  const p = child.name ?? displayLabel(child);
183
209
  for (const grandchild of child.content) {
184
210
  if (grandchild.$type === 'ItemDeclaration') {
185
- rows.push(itemRow(grandchild, swimlane, group, p));
211
+ rows.push(itemRow(grandchild, swimlane, group, p, schedule));
186
212
  }
187
213
  }
188
214
  }
189
215
  }
190
- function itemRow(item, swimlane, group, parallel) {
216
+ function itemRow(item, swimlane, group, parallel, schedule) {
191
217
  const durationLiteral = getProp(item, 'duration') ?? getProp(item, 'size');
218
+ // byNode covers anonymous items; fall back to the id map (same object, just
219
+ // belt-and-suspenders) for named items in case the node reference differs.
220
+ const scheduled = schedule.byNode.get(item) ?? (item.name ? schedule.items.get(item.name) : undefined);
192
221
  return {
193
222
  id: item.name ?? '',
194
223
  title: item.title ?? '',
@@ -197,6 +226,8 @@ function itemRow(item, swimlane, group, parallel) {
197
226
  parallel,
198
227
  duration: durationToWorkingDays(durationLiteral),
199
228
  durationText: durationLiteralToText(durationLiteral),
229
+ start: scheduled?.start,
230
+ end: scheduled?.end,
200
231
  status: getProp(item, 'status') ?? '',
201
232
  remaining: getProp(item, 'remaining') ?? '',
202
233
  owner: getProp(item, 'owner') ?? '',
@@ -208,7 +239,7 @@ function itemRow(item, swimlane, group, parallel) {
208
239
  };
209
240
  }
210
241
  // ---------- Sheet 3: Milestones ----------
211
- function buildMilestonesSheet(wb, ast) {
242
+ function buildMilestonesSheet(wb, ast, schedule) {
212
243
  const sheet = wb.addWorksheet('Milestones', {
213
244
  views: [{ state: 'frozen', xSplit: 0, ySplit: 1 }],
214
245
  });
@@ -216,23 +247,29 @@ function buildMilestonesSheet(wb, ast) {
216
247
  { header: 'ID', key: 'id', width: 18 },
217
248
  { header: 'Title', key: 'title', width: 28 },
218
249
  { header: 'Date', key: 'date', width: 14 },
219
- { header: 'Depends', key: 'depends', width: 28 },
250
+ { header: 'After', key: 'after', width: 28 },
220
251
  ];
252
+ sheet.getColumn('date').numFmt = 'yyyy-mm-dd';
221
253
  for (const entry of ast.roadmapEntries) {
222
254
  if (entry.$type === 'MilestoneDeclaration') {
223
255
  const m = entry;
256
+ // Prefer the explicit date:; fall back to the schedule-computed date.
257
+ // milestoneByNode covers anonymous milestones; milestones map covers named ones.
258
+ const explicitDate = getProp(m, 'date');
259
+ const computedDate = schedule.milestoneByNode.get(m) ??
260
+ (m.name ? schedule.milestones.get(m.name) : undefined);
224
261
  sheet.addRow({
225
262
  id: m.name ?? '',
226
263
  title: m.title ?? '',
227
- date: getProp(m, 'date') ?? '',
228
- depends: getProps(m, 'depends').join('; '),
264
+ date: explicitDate ? new Date(explicitDate) : (computedDate ?? ''),
265
+ after: getProps(m, 'after').join('; '),
229
266
  });
230
267
  }
231
268
  }
232
269
  sheet.getRow(1).font = { bold: true };
233
270
  }
234
271
  // ---------- Sheet 4: Anchors ----------
235
- function buildAnchorsSheet(wb, ast) {
272
+ function buildAnchorsSheet(wb, ast, schedule) {
236
273
  const sheet = wb.addWorksheet('Anchors', {
237
274
  views: [{ state: 'frozen', xSplit: 0, ySplit: 1 }],
238
275
  });
@@ -241,13 +278,16 @@ function buildAnchorsSheet(wb, ast) {
241
278
  { header: 'Title', key: 'title', width: 28 },
242
279
  { header: 'Date', key: 'date', width: 14 },
243
280
  ];
281
+ sheet.getColumn('date').numFmt = 'yyyy-mm-dd';
244
282
  for (const entry of ast.roadmapEntries) {
245
283
  if (entry.$type === 'AnchorDeclaration') {
246
284
  const a = entry;
285
+ const explicitDate = getProp(a, 'date');
286
+ const computedDate = a.name ? schedule.anchors.get(a.name) : undefined;
247
287
  sheet.addRow({
248
288
  id: a.name ?? '',
249
289
  title: a.title ?? '',
250
- date: getProp(a, 'date') ?? '',
290
+ date: explicitDate ? new Date(explicitDate) : (computedDate ?? ''),
251
291
  });
252
292
  }
253
293
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nowline/export-xlsx",
3
- "version": "0.5.1",
4
- "description": "Nowline XLSX exporter five-sheet workbook via ExcelJS",
3
+ "version": "0.7.0",
4
+ "description": "Exports a Nowline roadmap as an Excel workbook.",
5
5
  "license": "Apache-2.0",
6
6
  "engines": {
7
7
  "node": ">=22",
@@ -22,9 +22,9 @@
22
22
  ],
23
23
  "dependencies": {
24
24
  "exceljs": "4.4.0",
25
- "@nowline/export-core": "0.5.1",
26
- "@nowline/core": "0.5.1",
27
- "@nowline/layout": "0.5.1"
25
+ "@nowline/core": "0.7.0",
26
+ "@nowline/export-core": "0.7.0",
27
+ "@nowline/layout": "0.7.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "^25.9.1",
package/src/index.ts CHANGED
@@ -37,6 +37,7 @@ import type {
37
37
  } from '@nowline/core';
38
38
  import type { ExportInputs } from '@nowline/export-core';
39
39
  import { displayLabel, getProp, getProps, roadmapTitle } from '@nowline/export-core';
40
+ import { type RoadmapSchedule, scheduleRoadmap } from '@nowline/layout';
40
41
  import ExcelJS from 'exceljs';
41
42
 
42
43
  import { durationLiteralToText, durationToWorkingDays } from './duration.js';
@@ -64,11 +65,27 @@ export async function exportXlsx(
64
65
  wb.modified = generated;
65
66
  wb.title = roadmapTitle(inputs.ast.roadmapDecl ?? undefined);
66
67
 
68
+ const schedule = scheduleRoadmap(inputs.ast, inputs.resolved, { today: inputs.today });
69
+
67
70
  buildRoadmapSheet(wb, inputs, generated);
68
- buildItemsSheet(wb, inputs.ast);
69
- buildMilestonesSheet(wb, inputs.ast);
70
- buildAnchorsSheet(wb, inputs.ast);
71
- buildPeopleAndTeamsSheet(wb, inputs.ast);
71
+ buildItemsSheet(wb, inputs.ast, schedule);
72
+
73
+ const hasMilestones = inputs.ast.roadmapEntries.some((e) => e.$type === 'MilestoneDeclaration');
74
+ if (hasMilestones) {
75
+ buildMilestonesSheet(wb, inputs.ast, schedule);
76
+ }
77
+
78
+ const hasAnchors = inputs.ast.roadmapEntries.some((e) => e.$type === 'AnchorDeclaration');
79
+ if (hasAnchors) {
80
+ buildAnchorsSheet(wb, inputs.ast, schedule);
81
+ }
82
+
83
+ const hasPeopleOrTeams = inputs.ast.roadmapEntries.some(
84
+ (e) => e.$type === 'PersonDeclaration' || e.$type === 'TeamDeclaration',
85
+ );
86
+ if (hasPeopleOrTeams) {
87
+ buildPeopleAndTeamsSheet(wb, inputs.ast);
88
+ }
72
89
 
73
90
  const buf = (await wb.xlsx.writeBuffer()) as ArrayBuffer | Buffer;
74
91
  const bytes = Buffer.isBuffer(buf)
@@ -119,6 +136,8 @@ const ITEM_HEADERS: ReadonlyArray<{ header: string; key: string; width: number }
119
136
  { header: 'Parallel', key: 'parallel', width: 18 },
120
137
  { header: 'Duration', key: 'duration', width: 12 },
121
138
  { header: 'Duration (text)', key: 'durationText', width: 16 },
139
+ { header: 'Start', key: 'start', width: 14 },
140
+ { header: 'End', key: 'end', width: 14 },
122
141
  { header: 'Status', key: 'status', width: 14 },
123
142
  { header: 'Remaining', key: 'remaining', width: 12 },
124
143
  { header: 'Owner', key: 'owner', width: 14 },
@@ -145,6 +164,8 @@ interface ItemRow {
145
164
  parallel: string;
146
165
  duration: number;
147
166
  durationText: string;
167
+ start: Date | undefined;
168
+ end: Date | undefined;
148
169
  status: string;
149
170
  remaining: string;
150
171
  owner: string;
@@ -155,16 +176,29 @@ interface ItemRow {
155
176
  description: string;
156
177
  }
157
178
 
158
- function buildItemsSheet(wb: ExcelJS.Workbook, ast: NowlineFile): void {
179
+ function buildItemsSheet(wb: ExcelJS.Workbook, ast: NowlineFile, schedule: RoadmapSchedule): void {
159
180
  const sheet = wb.addWorksheet('Items', {
160
181
  views: [{ state: 'frozen', xSplit: 0, ySplit: 1 }],
161
182
  });
162
183
  sheet.columns = [...ITEM_HEADERS];
163
184
 
185
+ // Format the Start/End date columns as ISO dates.
186
+ const startCol = sheet.getColumn('start');
187
+ const endCol = sheet.getColumn('end');
188
+ startCol.numFmt = 'yyyy-mm-dd';
189
+ endCol.numFmt = 'yyyy-mm-dd';
190
+
164
191
  const rows: ItemRow[] = [];
165
192
  for (const entry of ast.roadmapEntries) {
166
193
  if (entry.$type === 'SwimlaneDeclaration') {
167
- collectFromSwimlane(entry as SwimlaneDeclaration, [entry.name ?? ''], rows, '', '');
194
+ collectFromSwimlane(
195
+ entry as SwimlaneDeclaration,
196
+ [swimlaneLabel(entry as SwimlaneDeclaration)],
197
+ rows,
198
+ '',
199
+ '',
200
+ schedule,
201
+ );
168
202
  }
169
203
  }
170
204
  for (const r of rows) sheet.addRow(r);
@@ -191,16 +225,26 @@ function buildItemsSheet(wb: ExcelJS.Workbook, ast: NowlineFile): void {
191
225
  };
192
226
  }
193
227
 
228
+ /**
229
+ * Resolve the swimlane's display label for the Swimlane column.
230
+ * Prefers the DSL id (name) for stable cross-sheet joins; falls back to
231
+ * the title when the lane has no id.
232
+ */
233
+ function swimlaneLabel(lane: SwimlaneDeclaration): string {
234
+ return lane.name ?? lane.title ?? '';
235
+ }
236
+
194
237
  function collectFromSwimlane(
195
238
  lane: SwimlaneDeclaration,
196
239
  breadcrumb: readonly string[],
197
240
  rows: ItemRow[],
198
241
  group: string,
199
242
  parallel: string,
243
+ schedule: RoadmapSchedule,
200
244
  ): void {
201
245
  const breadcrumbStr = breadcrumb.filter((s) => s.length > 0).join('.');
202
246
  for (const child of lane.content) {
203
- addSwimlaneChild(child, breadcrumbStr, group, parallel, rows);
247
+ addSwimlaneChild(child, breadcrumbStr, group, parallel, rows, schedule);
204
248
  }
205
249
  }
206
250
 
@@ -210,15 +254,16 @@ function addSwimlaneChild(
210
254
  group: string,
211
255
  parallel: string,
212
256
  rows: ItemRow[],
257
+ schedule: RoadmapSchedule,
213
258
  ): void {
214
259
  if (child.$type === 'ItemDeclaration') {
215
- rows.push(itemRow(child, swimlane, group, parallel));
260
+ rows.push(itemRow(child, swimlane, group, parallel, schedule));
216
261
  return;
217
262
  }
218
263
  if (child.$type === 'GroupBlock') {
219
264
  const g = child.name ?? displayLabel(child);
220
265
  for (const grandchild of (child as GroupBlock).content as GroupContent[]) {
221
- addGroupChild(grandchild, swimlane, g, parallel, rows);
266
+ addGroupChild(grandchild, swimlane, g, parallel, rows, schedule);
222
267
  }
223
268
  return;
224
269
  }
@@ -226,11 +271,11 @@ function addSwimlaneChild(
226
271
  const p = child.name ?? displayLabel(child);
227
272
  for (const grandchild of (child as ParallelBlock).content) {
228
273
  if (grandchild.$type === 'ItemDeclaration') {
229
- rows.push(itemRow(grandchild, swimlane, group, p));
274
+ rows.push(itemRow(grandchild, swimlane, group, p, schedule));
230
275
  } else if (grandchild.$type === 'GroupBlock') {
231
276
  const g = grandchild.name ?? displayLabel(grandchild);
232
277
  for (const inner of (grandchild as GroupBlock).content as GroupContent[]) {
233
- addGroupChild(inner, swimlane, g, p, rows);
278
+ addGroupChild(inner, swimlane, g, p, rows, schedule);
234
279
  }
235
280
  }
236
281
  }
@@ -243,20 +288,21 @@ function addGroupChild(
243
288
  group: string,
244
289
  parallel: string,
245
290
  rows: ItemRow[],
291
+ schedule: RoadmapSchedule,
246
292
  ): void {
247
293
  if (child.$type === 'ItemDeclaration') {
248
- rows.push(itemRow(child, swimlane, group, parallel));
294
+ rows.push(itemRow(child, swimlane, group, parallel, schedule));
249
295
  } else if (child.$type === 'GroupBlock') {
250
296
  const sub = child.name ?? displayLabel(child);
251
297
  const nested = group ? `${group}.${sub}` : sub;
252
298
  for (const grandchild of (child as GroupBlock).content as GroupContent[]) {
253
- addGroupChild(grandchild, swimlane, nested, parallel, rows);
299
+ addGroupChild(grandchild, swimlane, nested, parallel, rows, schedule);
254
300
  }
255
301
  } else if (child.$type === 'ParallelBlock') {
256
302
  const p = child.name ?? displayLabel(child);
257
303
  for (const grandchild of (child as ParallelBlock).content) {
258
304
  if (grandchild.$type === 'ItemDeclaration') {
259
- rows.push(itemRow(grandchild, swimlane, group, p));
305
+ rows.push(itemRow(grandchild, swimlane, group, p, schedule));
260
306
  }
261
307
  }
262
308
  }
@@ -267,8 +313,13 @@ function itemRow(
267
313
  swimlane: string,
268
314
  group: string,
269
315
  parallel: string,
316
+ schedule: RoadmapSchedule,
270
317
  ): ItemRow {
271
318
  const durationLiteral = getProp(item, 'duration') ?? getProp(item, 'size');
319
+ // byNode covers anonymous items; fall back to the id map (same object, just
320
+ // belt-and-suspenders) for named items in case the node reference differs.
321
+ const scheduled =
322
+ schedule.byNode.get(item) ?? (item.name ? schedule.items.get(item.name) : undefined);
272
323
  return {
273
324
  id: item.name ?? '',
274
325
  title: item.title ?? '',
@@ -277,6 +328,8 @@ function itemRow(
277
328
  parallel,
278
329
  duration: durationToWorkingDays(durationLiteral),
279
330
  durationText: durationLiteralToText(durationLiteral),
331
+ start: scheduled?.start,
332
+ end: scheduled?.end,
280
333
  status: getProp(item, 'status') ?? '',
281
334
  remaining: getProp(item, 'remaining') ?? '',
282
335
  owner: getProp(item, 'owner') ?? '',
@@ -290,7 +343,11 @@ function itemRow(
290
343
 
291
344
  // ---------- Sheet 3: Milestones ----------
292
345
 
293
- function buildMilestonesSheet(wb: ExcelJS.Workbook, ast: NowlineFile): void {
346
+ function buildMilestonesSheet(
347
+ wb: ExcelJS.Workbook,
348
+ ast: NowlineFile,
349
+ schedule: RoadmapSchedule,
350
+ ): void {
294
351
  const sheet = wb.addWorksheet('Milestones', {
295
352
  views: [{ state: 'frozen', xSplit: 0, ySplit: 1 }],
296
353
  });
@@ -298,16 +355,24 @@ function buildMilestonesSheet(wb: ExcelJS.Workbook, ast: NowlineFile): void {
298
355
  { header: 'ID', key: 'id', width: 18 },
299
356
  { header: 'Title', key: 'title', width: 28 },
300
357
  { header: 'Date', key: 'date', width: 14 },
301
- { header: 'Depends', key: 'depends', width: 28 },
358
+ { header: 'After', key: 'after', width: 28 },
302
359
  ];
360
+ sheet.getColumn('date').numFmt = 'yyyy-mm-dd';
361
+
303
362
  for (const entry of ast.roadmapEntries) {
304
363
  if (entry.$type === 'MilestoneDeclaration') {
305
364
  const m = entry as MilestoneDeclaration;
365
+ // Prefer the explicit date:; fall back to the schedule-computed date.
366
+ // milestoneByNode covers anonymous milestones; milestones map covers named ones.
367
+ const explicitDate = getProp(m, 'date');
368
+ const computedDate =
369
+ schedule.milestoneByNode.get(m) ??
370
+ (m.name ? schedule.milestones.get(m.name) : undefined);
306
371
  sheet.addRow({
307
372
  id: m.name ?? '',
308
373
  title: m.title ?? '',
309
- date: getProp(m, 'date') ?? '',
310
- depends: getProps(m, 'depends').join('; '),
374
+ date: explicitDate ? new Date(explicitDate) : (computedDate ?? ''),
375
+ after: getProps(m, 'after').join('; '),
311
376
  });
312
377
  }
313
378
  }
@@ -316,7 +381,11 @@ function buildMilestonesSheet(wb: ExcelJS.Workbook, ast: NowlineFile): void {
316
381
 
317
382
  // ---------- Sheet 4: Anchors ----------
318
383
 
319
- function buildAnchorsSheet(wb: ExcelJS.Workbook, ast: NowlineFile): void {
384
+ function buildAnchorsSheet(
385
+ wb: ExcelJS.Workbook,
386
+ ast: NowlineFile,
387
+ schedule: RoadmapSchedule,
388
+ ): void {
320
389
  const sheet = wb.addWorksheet('Anchors', {
321
390
  views: [{ state: 'frozen', xSplit: 0, ySplit: 1 }],
322
391
  });
@@ -325,13 +394,17 @@ function buildAnchorsSheet(wb: ExcelJS.Workbook, ast: NowlineFile): void {
325
394
  { header: 'Title', key: 'title', width: 28 },
326
395
  { header: 'Date', key: 'date', width: 14 },
327
396
  ];
397
+ sheet.getColumn('date').numFmt = 'yyyy-mm-dd';
398
+
328
399
  for (const entry of ast.roadmapEntries) {
329
400
  if (entry.$type === 'AnchorDeclaration') {
330
401
  const a = entry as AnchorDeclaration;
402
+ const explicitDate = getProp(a, 'date');
403
+ const computedDate = a.name ? schedule.anchors.get(a.name) : undefined;
331
404
  sheet.addRow({
332
405
  id: a.name ?? '',
333
406
  title: a.title ?? '',
334
- date: getProp(a, 'date') ?? '',
407
+ date: explicitDate ? new Date(explicitDate) : (computedDate ?? ''),
335
408
  });
336
409
  }
337
410
  }