From 9ed58c7e5d3c26b5952e74aeb4bbf4a1f6ba19dd Mon Sep 17 00:00:00 2001 From: NickMonrad Date: Wed, 29 Apr 2026 08:46:49 +1000 Subject: [PATCH 01/15] feat(#229): add TemplateSize column to CSV for template task auto-expand on import Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- server/src/routes/csv.ts | 108 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 100 insertions(+), 8 deletions(-) diff --git a/server/src/routes/csv.ts b/server/src/routes/csv.ts index cceaa94..416eb32 100644 --- a/server/src/routes/csv.ts +++ b/server/src/routes/csv.ts @@ -13,6 +13,7 @@ router.use(authenticate) const CSV_HEADERS = [ 'Type', 'Epic', 'Feature', 'Story', 'Task', 'Template', + 'TemplateSize', 'ResourceType', 'HoursEffort', 'DurationDays', 'Description', 'Assumptions', @@ -35,6 +36,7 @@ interface CsvRow { EpicDependsOn: string FeatureDependsOn: string Template: string + TemplateSize: string ResourceType: string // legacy fields — kept for backwards compat (old CSVs may still have these) HoursExtraSmall: string @@ -63,6 +65,7 @@ export interface StagedRow { epicDependsOn: string[] // array of epic names featureDependsOn: string[] // array of feature names template: string + templateSize: string // 'Small' | 'Medium' | 'Large' | 'XL' | '' resourceType: string // legacy fields kept for backwards compat hoursExtraSmall: number @@ -92,6 +95,20 @@ function parseStatus(val: string | undefined): boolean { return (val?.trim().toLowerCase() === 'inactive') ? false : true } +/** Pick hours from a TemplateTask based on the sizing tier string */ +function pickHours( + task: { hoursSmall: number; hoursMedium: number; hoursLarge: number; hoursExtraLarge: number }, + size: string, +): number { + switch (size.toLowerCase()) { + case 'small': return task.hoursSmall ?? 0 + case 'medium': return task.hoursMedium ?? 0 + case 'large': return task.hoursLarge ?? 0 + case 'xl': return task.hoursExtraLarge ?? 0 + default: return 0 + } +} + /** Prevent CSV formula injection by prefixing dangerous characters with a single quote */ export function sanitizeCsvCell(value: string): string { if (/^[=+\-@\t\r]/.test(value)) { @@ -151,13 +168,13 @@ router.get('/export-csv', asyncHandler(async (req: AuthRequest, res: Response) = if (epics.length === 0) { // blank template with one example row - rows.push(['Task', 'My Epic', 'My Feature', 'My Story', 'My Task', '', 'Developer', '', '', '', '', '', '', '', '', '', '', '']) + rows.push(['Task', 'My Epic', 'My Feature', 'My Story', 'My Task', '', '', 'Developer', '', '', '', '', '', '', '', '', '', '', '']) } else { for (const epic of epics) { // Epic row rows.push([ 'Epic', sanitizeCsvCell(epic.name), '', '', '', - '', '', '', '', + '', '', '', '', '', sanitizeCsvCell(epic.description ?? ''), sanitizeCsvCell(epic.assumptions ?? ''), epic.isActive ? 'active' : 'inactive', '', '', epic.featureMode ?? 'sequential', '', @@ -168,7 +185,7 @@ router.get('/export-csv', asyncHandler(async (req: AuthRequest, res: Response) = // Feature row rows.push([ 'Feature', sanitizeCsvCell(epic.name), sanitizeCsvCell(feature.name), '', '', - '', '', '', '', + '', '', '', '', '', sanitizeCsvCell(feature.description ?? ''), sanitizeCsvCell(feature.assumptions ?? ''), '', feature.isActive ? 'active' : 'inactive', '', '', feature.featureMode ?? 'sequential', @@ -180,6 +197,7 @@ router.get('/export-csv', asyncHandler(async (req: AuthRequest, res: Response) = rows.push([ 'Story', sanitizeCsvCell(epic.name), sanitizeCsvCell(feature.name), sanitizeCsvCell(story.name), '', sanitizeCsvCell(story.appliedTemplate?.name ?? ''), + '', // TemplateSize — UserStory has no sizingTier field; exported blank '', '', '', sanitizeCsvCell(story.description ?? ''), sanitizeCsvCell(story.assumptions ?? ''), '', '', story.isActive ? 'active' : 'inactive', @@ -191,7 +209,8 @@ router.get('/export-csv', asyncHandler(async (req: AuthRequest, res: Response) = for (const task of story.tasks) { rows.push([ 'Task', sanitizeCsvCell(epic.name), sanitizeCsvCell(feature.name), sanitizeCsvCell(story.name), sanitizeCsvCell(task.name), - '', + '', // Template + '', // TemplateSize sanitizeCsvCell(task.resourceType?.name ?? ''), String(task.hoursEffort), String(task.durationDays != null ? Math.round(task.durationDays * 100) / 100 : ''), @@ -271,6 +290,7 @@ router.post('/stage-csv', asyncHandler(async (req: AuthRequest, res: Response) = const rawFeatureMode = raw.FeatureMode?.trim().toLowerCase() || 'sequential' const featureMode = (rawFeatureMode === 'sequential' || rawFeatureMode === 'parallel') ? rawFeatureMode : 'sequential' const template = raw.Template?.trim() ?? '' + const templateSize = raw.TemplateSize?.trim() ?? '' const epicDependsOn = (raw.EpicDependsOn ?? '') .split(',') @@ -305,6 +325,15 @@ router.post('/stage-csv', asyncHandler(async (req: AuthRequest, res: Response) = warnings.push(`Template column is only applied on Story rows — will be ignored for this ${type} row`) } + // TemplateSize validation — only meaningful on Story rows + const validSizes = new Set(['small', 'medium', 'large', 'xl']) + if (type === 'Story' && templateSize && !validSizes.has(templateSize.toLowerCase())) { + warnings.push(`TemplateSize "${templateSize}" is not valid — use Small, Medium, Large, or XL`) + } + if (type !== 'Story' && templateSize) { + warnings.push(`TemplateSize column is only applied on Story rows — will be ignored for this ${type} row`) + } + // Status-on-wrong-type warnings if (type !== 'Epic' && raw.EpicStatus?.trim()) { warnings.push(`EpicStatus is only applied on Epic rows — will be ignored for this ${type} row`) @@ -335,6 +364,7 @@ router.post('/stage-csv', asyncHandler(async (req: AuthRequest, res: Response) = epicDependsOn, featureDependsOn, template, + templateSize, resourceType, hoursExtraSmall: parseNum(raw.HoursExtraSmall), hoursSmall: parseNum(raw.HoursSmall), @@ -466,6 +496,15 @@ router.post('/import-csv', asyncHandler(async (req: AuthRequest, res: Response) const epicMap = new Map() // epic name → epic id const featureMap = new Map() // "epic||feature" → feature id const storyMap = new Map() // "epic||feature||story" → story id + const storyTemplateMap = new Map() + + // Build set of story keys that have at least one Task row in the CSV (used for Gap 1 auto-expand check) + const storyKeysWithTaskRows = new Set() + for (const row of rows) { + if (row.type === 'Task' && row.story) { + storyKeysWithTaskRows.add(`${row.epic}||${row.feature}||${row.story}`) + } + } let epicOrder = await tx.epic.count({ where: { projectId } }) @@ -564,6 +603,7 @@ router.post('/import-csv', asyncHandler(async (req: AuthRequest, res: Response) ? await tx.featureTemplate.findUnique({ where: { name: row.template } }) : null const appliedTemplateId = templateRecord?.id ?? null + const templateSize = isStoryRow ? (row.templateSize ?? '') : '' let story = await tx.userStory.findFirst({ where: { featureId, name: row.story } }) if (!story) { @@ -596,6 +636,44 @@ router.post('/import-csv', asyncHandler(async (req: AuthRequest, res: Response) storiesUpdated++ } storyMap.set(storyKey, story.id) + + // Track template info for Gap 2 (Task rows that need hour backfill) + storyTemplateMap.set(storyKey, { appliedTemplateId, templateSize }) + + // Gap 1: Auto-expand template tasks when no Task rows for this story appear in the CSV + if (appliedTemplateId && templateSize && !storyKeysWithTaskRows.has(storyKey)) { + const tmpl = await tx.featureTemplate.findUnique({ + where: { id: appliedTemplateId }, + include: { tasks: { orderBy: { order: 'asc' } } }, + }) + if (tmpl) { + let taskOrder = await tx.task.count({ where: { userStoryId: story.id } }) + for (const tmplTask of tmpl.tasks) { + const hours = pickHours(tmplTask, templateSize) + const tmplRt = tmplTask.resourceTypeName + ? rtByName.get(tmplTask.resourceTypeName.toLowerCase()) + : undefined + const tmplResourceTypeId = tmplRt?.id ?? null + const tmplHoursPerDay = tmplRt?.hoursPerDay ?? fallbackHoursPerDay + const existingTask = await tx.task.findFirst({ + where: { userStoryId: story.id, name: tmplTask.name }, + }) + if (!existingTask) { + await tx.task.create({ + data: { + name: tmplTask.name, + userStoryId: story.id, + order: taskOrder++, + resourceTypeId: tmplResourceTypeId, + hoursEffort: hours, + durationDays: calcDurationDays(hours, tmplHoursPerDay), + }, + }) + tasksCreated++ + } + } + } + } } const storyId = storyMap.get(storyKey)! @@ -611,6 +689,20 @@ router.post('/import-csv', asyncHandler(async (req: AuthRequest, res: Response) const resourceTypeId = resourceType?.id ?? null const hoursPerDay = resourceType?.hoursPerDay ?? fallbackHoursPerDay + // Gap 2: Backfill hours from template when row hours are blank (0) and story has Template+TemplateSize + let effectiveHoursEffort = row.hoursEffort + if (effectiveHoursEffort === 0) { + const storyTmpl = storyTemplateMap.get(storyKey) + if (storyTmpl?.appliedTemplateId && storyTmpl.templateSize) { + const tmplTask = await tx.templateTask.findFirst({ + where: { templateId: storyTmpl.appliedTemplateId, name: row.task }, + }) + if (tmplTask) { + effectiveHoursEffort = pickHours(tmplTask, storyTmpl.templateSize) + } + } + } + const task = await tx.task.findFirst({ where: { userStoryId: storyId, name: row.task } }) if (!task) { const taskCount = await tx.task.count({ where: { userStoryId: storyId } }) @@ -620,8 +712,8 @@ router.post('/import-csv', asyncHandler(async (req: AuthRequest, res: Response) userStoryId: storyId, order: taskCount, resourceTypeId, - hoursEffort: row.hoursEffort, - durationDays: row.durationDays || calcDurationDays(row.hoursEffort, hoursPerDay), + hoursEffort: effectiveHoursEffort, + durationDays: row.durationDays || calcDurationDays(effectiveHoursEffort, hoursPerDay), description: row.description || null, assumptions: row.assumptions || null, }, @@ -632,8 +724,8 @@ router.post('/import-csv', asyncHandler(async (req: AuthRequest, res: Response) where: { id: task.id }, data: { resourceTypeId, - hoursEffort: row.hoursEffort, - durationDays: row.durationDays || calcDurationDays(row.hoursEffort, hoursPerDay), + hoursEffort: effectiveHoursEffort, + durationDays: row.durationDays || calcDurationDays(effectiveHoursEffort, hoursPerDay), description: row.description || null, assumptions: row.assumptions || null, }, From 9909b30934f358a8d37e9afcb376377570de3290 Mon Sep 17 00:00:00 2001 From: NickMonrad Date: Wed, 29 Apr 2026 08:46:59 +1000 Subject: [PATCH 02/15] feat(#221): add week/month/quarter scale toggle to Timeline Gantt Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- client/src/components/timeline/GanttBar.tsx | 30 +-- client/src/components/timeline/GanttChart.tsx | 211 ++++++++++++++++-- .../timeline/GanttDependencyArrows.tsx | 16 +- client/src/hooks/useGanttLayout.ts | 14 ++ client/src/pages/TimelinePage.tsx | 30 ++- server/src/lib/scopeDocumentRenderer.ts | 66 ++++-- 6 files changed, 299 insertions(+), 68 deletions(-) diff --git a/client/src/components/timeline/GanttBar.tsx b/client/src/components/timeline/GanttBar.tsx index f1871be..2cf8eb5 100644 --- a/client/src/components/timeline/GanttBar.tsx +++ b/client/src/components/timeline/GanttBar.tsx @@ -1,6 +1,6 @@ import type { TimelineEntry } from '../../types/backlog' import type { GanttRow, StoryTimelineEntry, GanttDraggingState } from '../../hooks/useGanttLayout' -import { COL_W, EPIC_ROW_H, FEAT_ROW_H, STORY_ROW_H } from '../../hooks/useGanttLayout' +import { EPIC_ROW_H, FEAT_ROW_H, STORY_ROW_H } from '../../hooks/useGanttLayout' import { getEpicColour } from '../../lib/epicColours' // --------------------------------------------------------------------------- @@ -16,6 +16,7 @@ interface GanttBarProps { y: number weekOffset: number totalWeeks: number + colW: number dragging: GanttDraggingState | null svgColors: SvgColors weeklyDemand: { week: number; resourceTypeName: string; demandDays: number; capacityDays: number }[] @@ -53,6 +54,7 @@ export default function GanttBar({ y, weekOffset, totalWeeks, + colW, dragging, svgColors, weeklyDemand, @@ -67,12 +69,12 @@ export default function GanttBar({ // ── Epic bar ────────────────────────────────────────────────────────────── if (row.type === 'epic') { const colour = getEpicColour(row.epicIdx) - const barW = (row.maxWeek - row.minWeek) * COL_W + const barW = (row.maxWeek - row.minWeek) * colW if (barW <= 0) return null return ( @@ -107,7 +109,7 @@ export default function GanttBar({ const barColor = entry.timelineColour ?? colour.hex const isDragging = dragging?.type === 'feature' && dragging.id === entry.featureId const effectiveStart = isDragging ? dragging!.currentStart : entry.startWeek - const barW = Math.max(entry.durationWeeks * COL_W, 4) + const barW = Math.max(entry.durationWeeks * colW, 4) const isOverAllocated = weeklyDemand.some(d => d.week >= entry.startWeek && d.week < entry.startWeek + entry.durationWeeks && @@ -117,7 +119,7 @@ export default function GanttBar({ return ( {isOverAllocated && ( @@ -170,9 +172,9 @@ export default function GanttBar({ return ( {storyEntry.isManual && ( diff --git a/client/src/components/timeline/GanttChart.tsx b/client/src/components/timeline/GanttChart.tsx index f25c140..579e6c8 100644 --- a/client/src/components/timeline/GanttChart.tsx +++ b/client/src/components/timeline/GanttChart.tsx @@ -3,10 +3,11 @@ import type { TimelineEntry } from '../../types/backlog' import { useIsDark } from '../../hooks/useIsDark' import { useGanttLayout, - COL_W, HEADER_H, + colWForScale, } from '../../hooks/useGanttLayout' import type { + GanttScale, StoryTimelineEntry, FeatureDependency, StoryDependency, @@ -31,6 +32,65 @@ function formatDate(date: Date): string { return `${date.getDate()}/${date.getMonth() + 1}` } +interface GroupBand { label: string; startWeek: number; endWeek: number } + +/** Group totalWeeks into calendar months (or generic Month N if no startDate). */ +function buildMonthGroups(totalWeeks: number, startDate: Date | null): GroupBand[] { + if (!startDate) { + const groups: GroupBand[] = [] + for (let w = 0; w < totalWeeks; w += 4) { + groups.push({ label: `Month ${Math.floor(w / 4) + 1}`, startWeek: w, endWeek: Math.min(w + 4, totalWeeks) }) + } + return groups + } + const MONTHS = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] + const groups: GroupBand[] = [] + let currentKey = -1 + let groupStart = 0 + for (let w = 0; w <= totalWeeks; w++) { + const d = addDays(startDate, w * 7) + const key = d.getFullYear() * 100 + d.getMonth() + if (w === totalWeeks || key !== currentKey) { + if (w > 0 && currentKey !== -1) { + const sd = addDays(startDate, groupStart * 7) + groups.push({ label: `${MONTHS[sd.getMonth()]} ${sd.getFullYear()}`, startWeek: groupStart, endWeek: w }) + } + currentKey = key + groupStart = w + } + } + return groups +} + +/** Group totalWeeks into calendar quarters (or generic QN if no startDate). */ +function buildQuarterGroups(totalWeeks: number, startDate: Date | null): GroupBand[] { + if (!startDate) { + const groups: GroupBand[] = [] + for (let w = 0; w < totalWeeks; w += 13) { + groups.push({ label: `Q${Math.floor(w / 13) + 1}`, startWeek: w, endWeek: Math.min(w + 13, totalWeeks) }) + } + return groups + } + const groups: GroupBand[] = [] + let currentKey = -1 + let groupStart = 0 + for (let w = 0; w <= totalWeeks; w++) { + const d = addDays(startDate, w * 7) + const qNum = Math.floor(d.getMonth() / 3) + const key = d.getFullYear() * 10 + qNum + if (w === totalWeeks || key !== currentKey) { + if (w > 0 && currentKey !== -1) { + const qDisplay = (currentKey % 10) + 1 + const year = Math.floor(currentKey / 10) + groups.push({ label: `Q${qDisplay} ${year}`, startWeek: groupStart, endWeek: w }) + } + currentKey = key + groupStart = w + } + } + return groups +} + // --------------------------------------------------------------------------- // Props // --------------------------------------------------------------------------- @@ -42,6 +102,7 @@ interface GanttChartProps { epicDependencies?: EpicDependency[] totalWeeks: number projectStartDate: Date | null + scale?: GanttScale onDragFeature: (featureId: string, newStartWeek: number) => void onDragStory: (storyId: string, newStartWeek: number) => void onAddFeatureDep: (featureId: string, dependsOnId: string) => void @@ -76,6 +137,7 @@ export default function GanttChart({ epicDependencies = [], totalWeeks, projectStartDate, + scale = 'week', onDragFeature, onDragStory, onMoveEpic, @@ -94,6 +156,8 @@ export default function GanttChart({ weekOffset = 0, bufferWeeks = 0, }: GanttChartProps) { + // Derived column width for the active scale + const colW = colWForScale(scale) const [expandedFeatures, setExpandedFeatures] = useState>(new Set()) const [expandedEpics, setExpandedEpics] = useState>(new Set()) @@ -157,7 +221,7 @@ export default function GanttChart({ useEffect(() => { function onMouseMove(e: MouseEvent) { if (!dragging) return - const deltaWeeks = (e.clientX - dragging.startX) / COL_W + const deltaWeeks = (e.clientX - dragging.startX) / colW const snapped = Math.max(0, Math.round((dragging.origStart + deltaWeeks) / 0.2) * 0.2) setDragging(d => (d ? { ...d, currentStart: snapped } : null)) } @@ -193,6 +257,20 @@ export default function GanttChart({ // ----------------------------------------------------------------------- // Render // ----------------------------------------------------------------------- + + // Pre-compute month / quarter groups for header rendering + const monthGroups = useMemo( + () => buildMonthGroups(totalWeeks, projectStartDate), + [totalWeeks, projectStartDate], + ) + const quarterGroups = useMemo( + () => buildQuarterGroups(totalWeeks, projectStartDate), + [totalWeeks, projectStartDate], + ) + + // Two-row header mid-line Y position + const HEADER_MID = 24 + return (
- + {/* Background fill */} - + {/* Onboarding zone */} {weekOffset > 0 && ( - - Onboarding ({weekOffset}w) - )} @@ -248,33 +327,33 @@ export default function GanttChart({ {/* Buffer zone */} {bufferWeeks > 0 && ( - - - Buffer ({bufferWeeks}w) - )} - {/* Week header + vertical grid lines */} - {Array.from({ length: totalWeeks }, (_, i) => ( + {/* ── Week scale header ── */} + {scale === 'week' && Array.from({ length: totalWeeks }, (_, i) => ( - - W{i + 1} {projectStartDate && ( - {formatDate(addDays(projectStartDate, i * 7))} @@ -282,8 +361,99 @@ export default function GanttChart({ ))} + {/* ── Month scale header: top row = month label, bottom row = week-within-month ── */} + {scale === 'month' && ( + <> + {/* Mid-header separator */} + + {monthGroups.map((mg, gi) => { + const groupX = mg.startWeek * colW + const groupW = (mg.endWeek - mg.startWeek) * colW + return ( + + {/* Month group left border (full height) */} + + {/* Month label in top row */} + + {mg.label} + + {/* Week columns within month */} + {Array.from({ length: mg.endWeek - mg.startWeek }, (_, wi) => { + const wx = (mg.startWeek + wi) * colW + return ( + + {wi > 0 && ( + + )} + + {wi + 1} + + + ) + })} + + ) + })} + + )} + + {/* ── Quarter scale header: top row = quarter label, bottom row = month abbrev ── */} + {scale === 'quarter' && ( + <> + {/* Mid-header separator */} + + {/* Quarter group labels and their left-border */} + {quarterGroups.map((qg, qi) => { + const groupX = qg.startWeek * colW + const groupW = (qg.endWeek - qg.startWeek) * colW + return ( + + + + {qg.label} + + + ) + })} + {/* Month bands in bottom row */} + {monthGroups.map((mg, mi) => { + const groupX = mg.startWeek * colW + const groupW = (mg.endWeek - mg.startWeek) * colW + const MONTH_ABBREVS = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] + const monthAbbrev = projectStartDate + ? MONTH_ABBREVS[addDays(projectStartDate, mg.startWeek * 7).getMonth()] + : `M${mi + 1}` + return ( + + + {/* Week grid lines within month */} + {Array.from({ length: mg.endWeek - mg.startWeek }, (_, wi) => wi > 0 && ( + + ))} + + {monthAbbrev} + + + ) + })} + + )} + {/* Header bottom border */} - {/* Row bars */} @@ -297,6 +467,7 @@ export default function GanttChart({ y={y} weekOffset={weekOffset} totalWeeks={totalWeeks} + colW={colW} dragging={dragging} svgColors={svgColors} weeklyDemand={weeklyDemand} diff --git a/client/src/components/timeline/GanttDependencyArrows.tsx b/client/src/components/timeline/GanttDependencyArrows.tsx index 26c1d85..1ea8a16 100644 --- a/client/src/components/timeline/GanttDependencyArrows.tsx +++ b/client/src/components/timeline/GanttDependencyArrows.tsx @@ -6,7 +6,7 @@ import type { EpicDependency, GanttDraggingState, } from '../../hooks/useGanttLayout' -import { COL_W, FEAT_ROW_H, STORY_ROW_H, EPIC_ROW_H, DEP_ARROW_COLOR } from '../../hooks/useGanttLayout' +import { FEAT_ROW_H, STORY_ROW_H, EPIC_ROW_H, DEP_ARROW_COLOR } from '../../hooks/useGanttLayout' // --------------------------------------------------------------------------- // Helpers @@ -29,6 +29,7 @@ interface GanttDependencyArrowsProps { epicById: Map rowY: Map weekOffset: number + colW: number dragging: GanttDraggingState | null } @@ -44,6 +45,7 @@ export default function GanttDependencyArrows({ epicById, rowY, weekOffset, + colW, dragging, }: GanttDependencyArrowsProps) { return ( @@ -69,9 +71,9 @@ export default function GanttDependencyArrows({ const predStart = predDragging ? dragging!.currentStart : predEntry.startWeek const succStart = succDragging ? dragging!.currentStart : succEntry.startWeek - const x1 = (predStart + weekOffset + predEntry.durationWeeks) * COL_W + const x1 = (predStart + weekOffset + predEntry.durationWeeks) * colW const y1 = predY + FEAT_ROW_H / 2 - const x2 = (succStart + weekOffset) * COL_W + const x2 = (succStart + weekOffset) * colW const y2 = succY + FEAT_ROW_H / 2 return ( @@ -102,9 +104,9 @@ export default function GanttDependencyArrows({ const predStart = predDragging ? dragging!.currentStart : predEntry.startWeek const succStart = succDragging ? dragging!.currentStart : succEntry.startWeek - const x1 = (predStart + weekOffset + predEntry.durationWeeks) * COL_W + const x1 = (predStart + weekOffset + predEntry.durationWeeks) * colW const y1 = predY + STORY_ROW_H / 2 - const x2 = (succStart + weekOffset) * COL_W + const x2 = (succStart + weekOffset) * colW const y2 = succY + STORY_ROW_H / 2 return ( @@ -130,9 +132,9 @@ export default function GanttDependencyArrows({ const succY = rowY.get(`epic-${dep.epicId}`) if (predY === undefined || succY === undefined) return null - const x1 = (predEpic.startWeek + weekOffset + predEpic.durationWeeks) * COL_W + const x1 = (predEpic.startWeek + weekOffset + predEpic.durationWeeks) * colW const y1 = predY + EPIC_ROW_H / 2 - const x2 = (succEpic.startWeek + weekOffset) * COL_W + const x2 = (succEpic.startWeek + weekOffset) * colW const y2 = succY + EPIC_ROW_H / 2 return ( diff --git a/client/src/hooks/useGanttLayout.ts b/client/src/hooks/useGanttLayout.ts index fedea5f..e6516d9 100644 --- a/client/src/hooks/useGanttLayout.ts +++ b/client/src/hooks/useGanttLayout.ts @@ -66,6 +66,20 @@ export interface GanttDraggingState { currentStart: number } +// --------------------------------------------------------------------------- +// Scale type +// --------------------------------------------------------------------------- +export type GanttScale = 'week' | 'month' | 'quarter' + +/** Returns the pixel width per week for the given scale. */ +export function colWForScale(scale: GanttScale): number { + switch (scale) { + case 'month': return 28 + case 'quarter': return 16 + default: return 64 + } +} + // --------------------------------------------------------------------------- // Layout constants (shared across Gantt sub-components) // --------------------------------------------------------------------------- diff --git a/client/src/pages/TimelinePage.tsx b/client/src/pages/TimelinePage.tsx index c5af10d..80cdf7c 100644 --- a/client/src/pages/TimelinePage.tsx +++ b/client/src/pages/TimelinePage.tsx @@ -10,6 +10,8 @@ import GanttChart from '../components/timeline/GanttChart' import ResourceHistogram from '../components/timeline/ResourceHistogram' import TimelineTooltip from '../components/timeline/TimelineTooltip' import { getEpicColour } from '../lib/epicColours' +import type { GanttScale } from '../hooks/useGanttLayout' +import { colWForScale } from '../hooks/useGanttLayout' const CATEGORY_HEADER_BG: Record = { ENGINEERING: 'bg-blue-100', @@ -259,6 +261,12 @@ export default function TimelinePage() { const rlKey = `timeline.resourceLevel.${projectId}` const [resourceLevel, setResourceLevel] = useState(() => localStorage.getItem(rlKey) === 'true') + const SCALE_KEY = 'gantt-scale' + const [ganttScale, setGanttScale] = useState( + () => (localStorage.getItem(SCALE_KEY) as GanttScale | null) ?? 'week', + ) + const ganttColW = colWForScale(ganttScale) + // Scroll sync refs for Gantt + Histogram right panels const ganttScrollRef = useRef(null) const histScrollRef = useRef(null) @@ -893,8 +901,23 @@ export default function TimelinePage() { {/* Gantt chart */}
-
+

Gantt Chart

+ {/* Scale toggle */} +
+ {(['week', 'month', 'quarter'] as const).map(s => ( + + ))} +
{isLoading &&
Loading…
} @@ -914,6 +937,7 @@ export default function TimelinePage() { storyDependencies={timeline.storyDependencies} totalWeeks={totalWeeks} projectStartDate={projectStartDate} + scale={ganttScale} onDragFeature={(featureId, newStartWeek) => { const entry = timeline.entries.find(e => e.featureId === featureId) if (!entry) return @@ -962,7 +986,7 @@ export default function TimelinePage() { weeklyDemand={timeline.weeklyDemand} weeklyCapacity={timeline.weeklyCapacity} totalWeeks={totalWeeks} - colW={64} + colW={ganttColW} labelW={300} weekOffset={timeline.onboardingWeeks ?? 0} scrollContainerRef={histScrollRef} @@ -975,7 +999,7 @@ export default function TimelinePage() { `) - // Week/month labels in header + // Month-scale header: two-row layout (top = month label, bottom = week-within-month) + // Build month groups + interface MonthGroupSvg { label: string; startWeek: number; endWeek: number } + const monthGroupsSvg: MonthGroupSvg[] = [] + const MONTH_NAMES = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] + if (td.startDate) { - let lastMonth = -1 - for (let w = 0; w < totalWeeks; w++) { + let currentMonthKey = -1 + let groupStart = 0 + for (let w = 0; w <= totalWeeks; w++) { const d = weekToDate(w) - if (!d) break - const month = d.getMonth() - if (month !== lastMonth) { - lastMonth = month - const x = LABEL_W + w * COL_W + 3 - parts.push(`${monthLabel(d)}`) - // tick mark at month boundary - const lineX = LABEL_W + w * COL_W - parts.push(``) + const monthKey = d ? d.getFullYear() * 100 + d.getMonth() : -999 + if (w === totalWeeks || monthKey !== currentMonthKey) { + if (w > 0 && currentMonthKey !== -1) { + const startD = weekToDate(groupStart)! + const label = `${MONTH_NAMES[startD.getMonth()]} ${String(startD.getFullYear()).slice(2)}` + monthGroupsSvg.push({ label, startWeek: groupStart, endWeek: w }) + } + currentMonthKey = monthKey + groupStart = w } } } else { - for (let w = 0; w < totalWeeks; w += 2) { - const x = LABEL_W + w * COL_W + 3 - parts.push(`Wk ${w + 1}`) + for (let w = 0; w < totalWeeks; w += 4) { + const monthNum = Math.floor(w / 4) + 1 + monthGroupsSvg.push({ label: `Month ${monthNum}`, startWeek: w, endWeek: Math.min(w + 4, totalWeeks) }) } } - // Week numbers row (bottom of header) - for (let w = 0; w < totalWeeks; w++) { - const x = LABEL_W + w * COL_W - parts.push(`${w + 1}`) + // Mid-header separator line + const MID_Y = Math.floor(HEADER_H / 2) + 2 + parts.push(``) + + // Render month groups: top-row label + bottom-row week numbers + for (const mg of monthGroupsSvg) { + const groupX = LABEL_W + mg.startWeek * COL_W + const groupW = (mg.endWeek - mg.startWeek) * COL_W + // Full-height group separator + parts.push(``) + // Month label centred in top row + const labelX = groupX + groupW / 2 + parts.push(`${esc(mg.label)}`) + // Week-within-month numbers in bottom row + for (let wi = 0; wi < mg.endWeek - mg.startWeek; wi++) { + const wx = LABEL_W + (mg.startWeek + wi) * COL_W + if (wi > 0) { + parts.push(``) + } + parts.push(`${wi + 1}`) + } } // Render epic groups and feature rows From 0495e0b6d1954349b262cac1ccd887f9aaeb2b40 Mon Sep 17 00:00:00 2001 From: NickMonrad Date: Wed, 29 Apr 2026 09:45:22 +1000 Subject: [PATCH 03/15] =?UTF-8?q?fix(#229):=20add=20XS=20tier=20to=20Templ?= =?UTF-8?q?ateSize=20=E2=80=94=20matches=20all=205=20template=20sizing=20l?= =?UTF-8?q?evels?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- server/src/routes/csv.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/server/src/routes/csv.ts b/server/src/routes/csv.ts index 416eb32..8afa97a 100644 --- a/server/src/routes/csv.ts +++ b/server/src/routes/csv.ts @@ -65,7 +65,7 @@ export interface StagedRow { epicDependsOn: string[] // array of epic names featureDependsOn: string[] // array of feature names template: string - templateSize: string // 'Small' | 'Medium' | 'Large' | 'XL' | '' + templateSize: string // 'XS' | 'Small' | 'Medium' | 'Large' | 'XL' | '' resourceType: string // legacy fields kept for backwards compat hoursExtraSmall: number @@ -97,10 +97,11 @@ function parseStatus(val: string | undefined): boolean { /** Pick hours from a TemplateTask based on the sizing tier string */ function pickHours( - task: { hoursSmall: number; hoursMedium: number; hoursLarge: number; hoursExtraLarge: number }, + task: { hoursExtraSmall: number; hoursSmall: number; hoursMedium: number; hoursLarge: number; hoursExtraLarge: number }, size: string, ): number { switch (size.toLowerCase()) { + case 'xs': return task.hoursExtraSmall ?? 0 case 'small': return task.hoursSmall ?? 0 case 'medium': return task.hoursMedium ?? 0 case 'large': return task.hoursLarge ?? 0 @@ -326,9 +327,9 @@ router.post('/stage-csv', asyncHandler(async (req: AuthRequest, res: Response) = } // TemplateSize validation — only meaningful on Story rows - const validSizes = new Set(['small', 'medium', 'large', 'xl']) + const validSizes = new Set(['xs', 'small', 'medium', 'large', 'xl']) if (type === 'Story' && templateSize && !validSizes.has(templateSize.toLowerCase())) { - warnings.push(`TemplateSize "${templateSize}" is not valid — use Small, Medium, Large, or XL`) + warnings.push(`TemplateSize "${templateSize}" is not valid — use XS, Small, Medium, Large, or XL`) } if (type !== 'Story' && templateSize) { warnings.push(`TemplateSize column is only applied on Story rows — will be ignored for this ${type} row`) From fcc1a0765ab194ad2fd38ff032891c5b37461996 Mon Sep 17 00:00:00 2001 From: NickMonrad Date: Wed, 29 Apr 2026 09:48:26 +1000 Subject: [PATCH 04/15] feat: improve empty backlog CSV template with column descriptions and example rows Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- server/src/routes/csv.ts | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/server/src/routes/csv.ts b/server/src/routes/csv.ts index 8afa97a..e1a65db 100644 --- a/server/src/routes/csv.ts +++ b/server/src/routes/csv.ts @@ -168,8 +168,36 @@ router.get('/export-csv', asyncHandler(async (req: AuthRequest, res: Response) = } if (epics.length === 0) { - // blank template with one example row - rows.push(['Task', 'My Epic', 'My Feature', 'My Story', 'My Task', '', '', 'Developer', '', '', '', '', '', '', '', '', '', '', '']) + // Description row — explains each column + rows.push([ + 'Type: Epic | Feature | Story | Task', + 'Epic name (required on all rows)', + 'Feature name (required on Feature/Story/Task rows)', + 'Story name (required on Story/Task rows)', + 'Task name (required on Task rows)', + 'Template name to link to story (Story rows only)', + 'Template size tier: XS | Small | Medium | Large | XL (Story rows only — auto-expands tasks)', + 'Resource type name (Task rows only)', + 'Hours of effort (Task rows only)', + 'Duration in days — auto-calculated if blank (Task rows only)', + 'Description (rich text supported)', + 'Assumptions (rich text supported)', + 'Epic status: active | inactive', + 'Feature status: active | inactive', + 'Story status: active | inactive', + 'Epic feature mode: sequential | parallel', + 'Feature story mode: sequential | parallel', + 'Epic dependencies: comma-separated epic names this epic depends on', + 'Feature dependencies: comma-separated feature names this feature depends on', + ]) + // Example Epic row + rows.push(['Epic', 'Platform Setup', '', '', '', '', '', '', '', '', 'Core infrastructure and environment setup', '', 'active', '', '', 'sequential', '', '', '']) + // Example Feature row + rows.push(['Feature', 'Platform Setup', 'Authentication', '', '', '', '', '', '', '', 'Login and registration flows', '', '', 'active', '', '', 'sequential', '', '']) + // Example Story row (with template) + rows.push(['Story', 'Platform Setup', 'Authentication', 'User can log in', '', 'Login Flow', 'Medium', '', '', '', 'As a user I can log in with email and password', '', '', '', 'active', '', '', '', '']) + // Example Task row + rows.push(['Task', 'Platform Setup', 'Authentication', 'User can log in', 'Backend API', '', '', 'Developer', '8', '', '', '', '', '', '', '', '', '', '']) } else { for (const epic of epics) { // Epic row From b8746eb181c6a59018e46271b415f20468734610 Mon Sep 17 00:00:00 2001 From: NickMonrad Date: Wed, 29 Apr 2026 10:09:19 +1000 Subject: [PATCH 05/15] fix: schedule cycle-stuck features and scope FeatureDependsOn to same epic - Scheduler: after Kahn's topological sort, features with unresolvable inDegrees (stuck in cycles) are now scheduled at a fallback start week derived from their epic's position in the sequential chain. Previously they were silently dropped, causing 222/228 features to never appear on the timeline. - CSV import: FeatureDependsOn name lookup is now scoped to the current row's epic instead of searching all features in the project. This prevents cross-epic name collisions when multiple epics share identical feature names (e.g. every epic has 'Infrastructure & Environment'). Previously, the last feature with that name (across all epics) was matched, creating backward cross-epic dependencies that caused cycles. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- server/src/routes/csv.ts | 15 +++++++++------ server/src/routes/timeline.ts | 31 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/server/src/routes/csv.ts b/server/src/routes/csv.ts index e1a65db..5619792 100644 --- a/server/src/routes/csv.ts +++ b/server/src/routes/csv.ts @@ -785,19 +785,22 @@ router.post('/import-csv', asyncHandler(async (req: AuthRequest, res: Response) } // ── Feature dependencies ────────────────────────────────────────────────── - // Build name→id map from what was just created/updated - const featureNameToId = new Map() + // Build epic-scoped name→id map: epicName → (featureName → featureId) + // Scoping to the same epic prevents cross-epic name collisions when templates + // share identical feature names (e.g. every epic has "Infrastructure & Environment") + const featureNameByEpic = new Map>() for (const [featureKey, featureId] of featureMap.entries()) { - // featureKey is "epicName||featureName" — extract just the feature name - const featureName = featureKey.split('||')[1] - if (featureName) featureNameToId.set(featureName, featureId) + const [epicName, featureName] = featureKey.split('||') + if (!featureNameByEpic.has(epicName)) featureNameByEpic.set(epicName, new Map()) + featureNameByEpic.get(epicName)!.set(featureName, featureId) } for (const row of rows) { if (row.type !== 'Feature' || !row.featureDependsOn?.length) continue const featureId = featureMap.get(`${row.epic}||${row.feature}`) if (!featureId) continue + const epicFeatures = featureNameByEpic.get(row.epic) ?? new Map() for (const depName of row.featureDependsOn) { - const depFeatureId = featureNameToId.get(depName) + const depFeatureId = epicFeatures.get(depName) if (!depFeatureId || depFeatureId === featureId) continue await tx.featureDependency.upsert({ where: { featureId_dependsOnId: { featureId, dependsOnId: depFeatureId } }, diff --git a/server/src/routes/timeline.ts b/server/src/routes/timeline.ts index 3cdf21d..e3707d8 100644 --- a/server/src/routes/timeline.ts +++ b/server/src/routes/timeline.ts @@ -752,6 +752,37 @@ router.post('/schedule', asyncHandler(async (req: AuthRequest, res: Response) => } } + // Fallback: if any features weren't processed (cycle or unresolvable deps), + // schedule them at the end of their epic's predecessor chain so nothing is silently dropped + if (processed.length < allFeatures.length) { + // Compute max finishWeek for each epic among features that *were* processed + const epicMaxFinish = new Map() + for (const f of allFeatures) { + const fw = finishWeeks.get(f.id) + if (fw === undefined) continue + const prev = epicMaxFinish.get(f.epic.id) ?? 0 + if (fw > prev) epicMaxFinish.set(f.epic.id, fw) + } + // For each unscheduled feature: start at max(epic anchor, all prev-epic finishes) + for (const f of allFeatures) { + if (startWeeks.has(f.id)) continue + let earliest = f.epic.timelineStartWeek ?? 0 + // Walk the sorted epic chain up to this epic and find the latest finish + for (const prevEpic of sortedEpics) { + if (prevEpic.order >= f.epic.order) break + const prevFinish = epicMaxFinish.get(prevEpic.id) ?? 0 + if (prevFinish > earliest) earliest = prevFinish + } + startWeeks.set(f.id, earliest) + finishWeeks.set(f.id, earliest + featureDurationWeeks(f)) + processed.push(f.id) + // Update epicMaxFinish so subsequent features in the same epic can build on this + const cur = epicMaxFinish.get(f.epic.id) ?? 0 + const newFinish = earliest + featureDurationWeeks(f) + if (newFinish > cur) epicMaxFinish.set(f.epic.id, newFinish) + } + } + // Tracks actual per-week resource consumption from the levelling simulation // key: `${rtName}|${week}` → days consumed; populated only when resourceLevel=true const weeklyConsumptionMap = new Map() From 761b1cec9c9d8675adca79147d8ab91276d43c9f Mon Sep 17 00:00:00 2001 From: NickMonrad Date: Wed, 29 Apr 2026 10:32:10 +1000 Subject: [PATCH 06/15] feat: support cross-epic FeatureDependsOn in CSV via qualified format - Export: cross-epic deps now written as 'EpicName: FeatureName' so they round-trip correctly on re-import - Import staging: validates qualified 'EpicName: FeatureName' entries against the known epic/feature pairs in the import - Import commit: resolves 'EpicName: FeatureName' via cross-epic lookup; plain feature names continue to resolve within the same epic only - Empty CSV template: updated description column for FeatureDependsOn to document both formats; added example rows showing same-epic dep ('Authentication') and cross-epic dep ('Platform Setup: Authentication') Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- server/src/routes/csv.ts | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/server/src/routes/csv.ts b/server/src/routes/csv.ts index 5619792..c0f7ad2 100644 --- a/server/src/routes/csv.ts +++ b/server/src/routes/csv.ts @@ -158,12 +158,17 @@ router.get('/export-csv', asyncHandler(async (req: AuthRequest, res: Response) = const featureDepsRaw = await prisma.featureDependency.findMany({ where: { feature: { epic: { projectId: req.params.projectId as string } } }, - include: { dependsOn: { select: { name: true } } }, + include: { + feature: { select: { epicId: true } }, + dependsOn: { select: { name: true, epicId: true, epic: { select: { name: true } } } }, + }, }) const featureDepNames = new Map() for (const d of featureDepsRaw) { const arr = featureDepNames.get(d.featureId) ?? [] - arr.push(d.dependsOn.name) + // Use qualified "EpicName: FeatureName" format for cross-epic deps so they round-trip correctly + const isCrossEpic = d.feature.epicId !== d.dependsOn.epicId + arr.push(isCrossEpic ? `${d.dependsOn.epic.name}: ${d.dependsOn.name}` : d.dependsOn.name) featureDepNames.set(d.featureId, arr) } @@ -188,12 +193,15 @@ router.get('/export-csv', asyncHandler(async (req: AuthRequest, res: Response) = 'Epic feature mode: sequential | parallel', 'Feature story mode: sequential | parallel', 'Epic dependencies: comma-separated epic names this epic depends on', - 'Feature dependencies: comma-separated feature names this feature depends on', + 'Feature dependencies: comma-separated feature names this feature depends on (same-epic: "FeatureName"; cross-epic: "EpicName: FeatureName")', ]) // Example Epic row rows.push(['Epic', 'Platform Setup', '', '', '', '', '', '', '', '', 'Core infrastructure and environment setup', '', 'active', '', '', 'sequential', '', '', '']) - // Example Feature row + rows.push(['Epic', 'Mobile App', '', '', '', '', '', '', '', '', 'Mobile front-end layer', '', 'active', '', '', 'sequential', '', 'Platform Setup', '']) + // Example Feature rows — same-epic dep, then cross-epic dep rows.push(['Feature', 'Platform Setup', 'Authentication', '', '', '', '', '', '', '', 'Login and registration flows', '', '', 'active', '', '', 'sequential', '', '']) + rows.push(['Feature', 'Platform Setup', 'User Profile', '', '', '', '', '', '', '', 'User profile management', '', '', 'active', '', '', 'sequential', '', 'Authentication']) + rows.push(['Feature', 'Mobile App', 'Login Screen', '', '', '', '', '', '', '', 'Mobile login UI', '', '', 'active', '', '', 'sequential', '', 'Platform Setup: Authentication']) // Example Story row (with template) rows.push(['Story', 'Platform Setup', 'Authentication', 'User can log in', '', 'Login Flow', 'Medium', '', '', '', 'As a user I can log in with email and password', '', '', '', 'active', '', '', '', '']) // Example Task row @@ -412,6 +420,8 @@ router.post('/stage-csv', asyncHandler(async (req: AuthRequest, res: Response) = // Cross-row dependency name validation (warnings only — import still proceeds) const knownEpicNames = new Set(staged.filter(r => r.type === 'Epic').map(r => r.epic)) const knownFeatureNames = new Set(staged.filter(r => r.type === 'Feature').map(r => r.feature)) + // Build "EpicName||FeatureName" set for cross-epic qualified lookup + const knownEpicFeaturePairs = new Set(staged.filter(r => r.type === 'Feature').map(r => `${r.epic}||${r.feature}`)) for (const row of staged) { for (const depName of row.epicDependsOn) { if (!knownEpicNames.has(depName)) { @@ -419,7 +429,15 @@ router.post('/stage-csv', asyncHandler(async (req: AuthRequest, res: Response) = } } for (const depName of row.featureDependsOn) { - if (!knownFeatureNames.has(depName)) { + const colonIdx = depName.indexOf(': ') + if (colonIdx !== -1) { + // Cross-epic qualified format: "EpicName: FeatureName" + const epicPart = depName.slice(0, colonIdx) + const featPart = depName.slice(colonIdx + 2) + if (!knownEpicFeaturePairs.has(`${epicPart}||${featPart}`)) { + row.warnings.push(`FeatureDependsOn: '${depName}' not found in this import`) + } + } else if (!knownFeatureNames.has(depName)) { row.warnings.push(`FeatureDependsOn: '${depName}' not found in this import`) } } @@ -800,7 +818,16 @@ router.post('/import-csv', asyncHandler(async (req: AuthRequest, res: Response) if (!featureId) continue const epicFeatures = featureNameByEpic.get(row.epic) ?? new Map() for (const depName of row.featureDependsOn) { - const depFeatureId = epicFeatures.get(depName) + // Support "EpicName: FeatureName" for cross-epic deps; plain name = same-epic + let depFeatureId: string | undefined + const colonIdx = depName.indexOf(': ') + if (colonIdx !== -1) { + const epicPart = depName.slice(0, colonIdx) + const featPart = depName.slice(colonIdx + 2) + depFeatureId = featureNameByEpic.get(epicPart)?.get(featPart) + } else { + depFeatureId = epicFeatures.get(depName) + } if (!depFeatureId || depFeatureId === featureId) continue await tx.featureDependency.upsert({ where: { featureId_dependsOnId: { featureId, dependsOnId: depFeatureId } }, From 0ee60318340a4ffa692ec77dc245a86f5c492573 Mon Sep 17 00:00:00 2001 From: NickMonrad Date: Wed, 29 Apr 2026 10:46:34 +1000 Subject: [PATCH 07/15] fix: invalidate epicDeps and feature-deps caches after CSV import After a successful CSV import, the epicDeps and feature-deps React Query caches were not invalidated, so newly imported dependencies were invisible until a full page reload. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- client/src/pages/BacklogPage.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/pages/BacklogPage.tsx b/client/src/pages/BacklogPage.tsx index 015433b..def67e6 100644 --- a/client/src/pages/BacklogPage.tsx +++ b/client/src/pages/BacklogPage.tsx @@ -71,6 +71,8 @@ export default function BacklogPage() { qc.invalidateQueries({ queryKey: ['backlog', projectId] }) qc.invalidateQueries({ queryKey: ['timeline', projectId] }) qc.invalidateQueries({ queryKey: ['resource-profile', projectId] }) + qc.invalidateQueries({ queryKey: ['epicDeps', projectId] }) + qc.invalidateQueries({ queryKey: ['feature-deps', projectId] }) } // Backlog-only invalidation: for metadata-only mutations (name, description, assumptions) From ee41294b2f2a9614f26a84a70a45f4f9ddcf1996 Mon Sep 17 00:00:00 2001 From: NickMonrad Date: Wed, 29 Apr 2026 10:50:18 +1000 Subject: [PATCH 08/15] fix: two-line epic label in timeline for longer titles Move feature mode, schedule mode, and dep chips to a second line under the epic title. Bump EPIC_ROW_H from 36 to 52px to fit. Title now has full label width without truncation competition. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../components/timeline/GanttLabelPanel.tsx | 251 +++++++++--------- client/src/hooks/useGanttLayout.ts | 2 +- 2 files changed, 128 insertions(+), 125 deletions(-) diff --git a/client/src/components/timeline/GanttLabelPanel.tsx b/client/src/components/timeline/GanttLabelPanel.tsx index b1c0334..18dd063 100644 --- a/client/src/components/timeline/GanttLabelPanel.tsx +++ b/client/src/components/timeline/GanttLabelPanel.tsx @@ -70,7 +70,7 @@ export default function GanttLabelPanel({
setExpandedEpics(prev => { const next = new Set(prev) @@ -80,134 +80,137 @@ export default function GanttLabelPanel({ }) } > - {/* Epic reorder arrows */} - {onMoveEpic && ( -
e.stopPropagation()} + {/* Line 1: reorder + toggle + title */} +
+ {onMoveEpic && ( +
e.stopPropagation()} + > + + +
+ )} + {isOpen ? '▼' : '▶'} + - - -
- )} - {isOpen ? '▼' : '▶'} - +
+ + {/* Line 2: feature mode + schedule mode + dep chips */} +
e.stopPropagation()} > - {row.epicName} - - {/* Feature mode button */} - {onUpdateEpicMode && ( - - )} - {/* Schedule mode button */} - {onUpdateEpicScheduleMode && ( - - )} - {/* Epic dependency chips + picker */} - {onAddEpicDep && ( -
e.stopPropagation()} - > - {/* existing dep chips */} - {epicDependencies - .filter(d => d.epicId === row.epicId) - .map(d => { - const depName = allEpicRows.find(r => r.epicId === d.dependsOnId)?.epicName ?? d.dependsOnId - return ( - - →{depName.slice(0, 6)} - - + {/* Feature mode button */} + {onUpdateEpicMode && ( + + )} + {/* Schedule mode button */} + {onUpdateEpicScheduleMode && ( - {/* dropdown picker */} - {depPickerEpicId === row.epicId && ( -
- {allEpicRows - .filter(r => r.epicId !== row.epicId && !epicDependencies.some(d => d.epicId === row.epicId && d.dependsOnId === r.epicId)) - .map(r => ( - + )} + {/* Epic dependency chips + picker */} + {onAddEpicDep && ( +
+ {epicDependencies + .filter(d => d.epicId === row.epicId) + .map(d => { + const depName = allEpicRows.find(r => r.epicId === d.dependsOnId)?.epicName ?? d.dependsOnId + return ( + - {r.epicName} - - ))} - {allEpicRows.filter(r => r.epicId !== row.epicId && !epicDependencies.some(d => d.epicId === row.epicId && d.dependsOnId === r.epicId)).length === 0 && ( - No epics available - )} -
- )} -
- )} + →{depName.slice(0, 8)} + + + ) + })} + + {depPickerEpicId === row.epicId && ( +
+ {allEpicRows + .filter(r => r.epicId !== row.epicId && !epicDependencies.some(d => d.epicId === row.epicId && d.dependsOnId === r.epicId)) + .map(r => ( + + ))} + {allEpicRows.filter(r => r.epicId !== row.epicId && !epicDependencies.some(d => d.epicId === row.epicId && d.dependsOnId === r.epicId)).length === 0 && ( + No epics available + )} +
+ )} +
+ )} +
) } diff --git a/client/src/hooks/useGanttLayout.ts b/client/src/hooks/useGanttLayout.ts index e6516d9..1607e8a 100644 --- a/client/src/hooks/useGanttLayout.ts +++ b/client/src/hooks/useGanttLayout.ts @@ -84,7 +84,7 @@ export function colWForScale(scale: GanttScale): number { // Layout constants (shared across Gantt sub-components) // --------------------------------------------------------------------------- export const COL_W = 64 -export const EPIC_ROW_H = 36 +export const EPIC_ROW_H = 52 export const FEAT_ROW_H = 36 export const STORY_ROW_H = 28 export const HEADER_H = 44 From 015cb1713baf8516715df7ce1851e66fd4f835ea Mon Sep 17 00:00:00 2001 From: NickMonrad Date: Wed, 29 Apr 2026 10:52:18 +1000 Subject: [PATCH 09/15] fix: timeline uses full browser width, wider label panel - Remove max-w-7xl constraint on TimelinePage main wrapper so the Gantt chart stretches to fill the full viewport width - Widen LABEL_W from 300 to 380px for longer epic names Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- client/src/hooks/useGanttLayout.ts | 2 +- client/src/pages/TimelinePage.tsx | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/client/src/hooks/useGanttLayout.ts b/client/src/hooks/useGanttLayout.ts index 1607e8a..9240532 100644 --- a/client/src/hooks/useGanttLayout.ts +++ b/client/src/hooks/useGanttLayout.ts @@ -88,7 +88,7 @@ export const EPIC_ROW_H = 52 export const FEAT_ROW_H = 36 export const STORY_ROW_H = 28 export const HEADER_H = 44 -export const LABEL_W = 300 +export const LABEL_W = 380 export const DEP_ARROW_COLOR = '#9ca3af' // --------------------------------------------------------------------------- diff --git a/client/src/pages/TimelinePage.tsx b/client/src/pages/TimelinePage.tsx index 80cdf7c..cdc11d7 100644 --- a/client/src/pages/TimelinePage.tsx +++ b/client/src/pages/TimelinePage.tsx @@ -367,6 +367,8 @@ export default function TimelinePage() { } } + const initialScheduleDone = useRef(false) + const { data: project } = useQuery({ queryKey: ['project', projectId], queryFn: () => api.get(`/projects/${projectId}`).then(r => r.data), @@ -399,6 +401,16 @@ export default function TimelinePage() { } }, [editingFeatureId, timeline]) + // Auto-schedule on page load so features added via CSV import always appear. + // The scheduler is idempotent — manual overrides are preserved. + useEffect(() => { + if (!initialScheduleDone.current && timeline !== undefined && project !== undefined) { + initialScheduleDone.current = true + const body = project.startDate ? { startDate: project.startDate.slice(0, 10), resourceLevel } : { resourceLevel } + scheduleTimeline.mutate(body) + } + }, [timeline, project]) + const invalidate = () => qc.invalidateQueries({ queryKey: ['timeline', projectId] }) const scheduleTimeline = useMutation({ @@ -691,7 +703,7 @@ export default function TimelinePage() { Timeline } > -
+

Timeline Planner

From e50518d6b9621d97821147d5355e2e263e3a8177 Mon Sep 17 00:00:00 2001 From: NickMonrad Date: Wed, 29 Apr 2026 10:53:53 +1000 Subject: [PATCH 10/15] feat: add top scrollbar to Gantt chart synced with bottom Adds a 12px mirror div above the GanttChart that scrolls in sync with the main chart and histogram scrollbars so users can scroll horizontally from the top without scrolling to the bottom first. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- client/src/pages/TimelinePage.tsx | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/client/src/pages/TimelinePage.tsx b/client/src/pages/TimelinePage.tsx index cdc11d7..1bbd86b 100644 --- a/client/src/pages/TimelinePage.tsx +++ b/client/src/pages/TimelinePage.tsx @@ -270,6 +270,7 @@ export default function TimelinePage() { // Scroll sync refs for Gantt + Histogram right panels const ganttScrollRef = useRef(null) const histScrollRef = useRef(null) + const topScrollRef = useRef(null) const isSyncingScroll = useRef(false) // Ref for PNG export — wraps the entire Gantt+histogram+named resources section @@ -278,18 +279,27 @@ export default function TimelinePage() { const handleGanttScroll = useCallback(() => { if (isSyncingScroll.current) return isSyncingScroll.current = true - if (histScrollRef.current && ganttScrollRef.current) { - histScrollRef.current.scrollLeft = ganttScrollRef.current.scrollLeft - } + const sl = ganttScrollRef.current?.scrollLeft ?? 0 + if (histScrollRef.current) histScrollRef.current.scrollLeft = sl + if (topScrollRef.current) topScrollRef.current.scrollLeft = sl isSyncingScroll.current = false }, []) const handleHistScroll = useCallback(() => { if (isSyncingScroll.current) return isSyncingScroll.current = true - if (ganttScrollRef.current && histScrollRef.current) { - ganttScrollRef.current.scrollLeft = histScrollRef.current.scrollLeft - } + const sl = histScrollRef.current?.scrollLeft ?? 0 + if (ganttScrollRef.current) ganttScrollRef.current.scrollLeft = sl + if (topScrollRef.current) topScrollRef.current.scrollLeft = sl + isSyncingScroll.current = false + }, []) + + const handleTopScroll = useCallback(() => { + if (isSyncingScroll.current) return + isSyncingScroll.current = true + const sl = topScrollRef.current?.scrollLeft ?? 0 + if (ganttScrollRef.current) ganttScrollRef.current.scrollLeft = sl + if (histScrollRef.current) histScrollRef.current.scrollLeft = sl isSyncingScroll.current = false }, []) @@ -942,6 +952,15 @@ export default function TimelinePage() { {!isLoading && timeline?.entries && timeline.entries.length > 0 && (
+ {/* Top mirror scrollbar — synced with the Gantt scroll container */} +
+
+
Date: Wed, 29 Apr 2026 10:58:41 +1000 Subject: [PATCH 11/15] fix: flip dep picker dropdown upward for bottom epics in timeline Last 4 epics now open the dependency dropdown upward (bottom-full) so it isn't hidden behind the resource demand histogram. Also adds max-h-64 + overflow-y-auto so large epic lists scroll within the dropdown instead of overflowing off-screen. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- client/src/components/timeline/GanttLabelPanel.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/timeline/GanttLabelPanel.tsx b/client/src/components/timeline/GanttLabelPanel.tsx index 18dd063..01a091a 100644 --- a/client/src/components/timeline/GanttLabelPanel.tsx +++ b/client/src/components/timeline/GanttLabelPanel.tsx @@ -188,7 +188,7 @@ export default function GanttLabelPanel({ title="Add dependency" >+ {depPickerEpicId === row.epicId && ( -
+
= row.epicCount - 4 ? 'bottom-full mb-1' : 'top-full mt-1'} left-0 z-50 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded shadow-lg py-1 min-w-[140px] max-h-64 overflow-y-auto`}> {allEpicRows .filter(r => r.epicId !== row.epicId && !epicDependencies.some(d => d.epicId === row.epicId && d.dependsOnId === r.epicId)) .map(r => ( From 10fd27ad7f1296cccb44ab3837a2cadf93925254 Mon Sep 17 00:00:00 2001 From: NickMonrad Date: Wed, 29 Apr 2026 10:59:59 +1000 Subject: [PATCH 12/15] feat: add search filter to epic dependency picker in timeline Dropdown now has an auto-focused search input at the top that filters the epic list by name. Search resets each time the picker is opened. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../components/timeline/GanttLabelPanel.tsx | 65 +++++++++++++------ 1 file changed, 46 insertions(+), 19 deletions(-) diff --git a/client/src/components/timeline/GanttLabelPanel.tsx b/client/src/components/timeline/GanttLabelPanel.tsx index 01a091a..2f0ee71 100644 --- a/client/src/components/timeline/GanttLabelPanel.tsx +++ b/client/src/components/timeline/GanttLabelPanel.tsx @@ -44,6 +44,12 @@ export default function GanttLabelPanel({ }: GanttLabelPanelProps) { // track which epic row has its dep-picker dropdown open const [depPickerEpicId, setDepPickerEpicId] = useState(null) + const [depPickerSearch, setDepPickerSearch] = useState('') + + function openDepPicker(epicId: string) { + setDepPickerEpicId(prev => prev === epicId ? null : epicId) + setDepPickerSearch('') + } // derive the full list of epic rows for the dep dropdown const allEpicRows = rows.filter((r): r is Extract => r.type === 'epic') @@ -183,29 +189,50 @@ export default function GanttLabelPanel({ ) })} {depPickerEpicId === row.epicId && ( -
= row.epicCount - 4 ? 'bottom-full mb-1' : 'top-full mt-1'} left-0 z-50 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded shadow-lg py-1 min-w-[140px] max-h-64 overflow-y-auto`}> - {allEpicRows - .filter(r => r.epicId !== row.epicId && !epicDependencies.some(d => d.epicId === row.epicId && d.dependsOnId === r.epicId)) - .map(r => ( - - ))} - {allEpicRows.filter(r => r.epicId !== row.epicId && !epicDependencies.some(d => d.epicId === row.epicId && d.dependsOnId === r.epicId)).length === 0 && ( - No epics available - )} +
= row.epicCount - 4 ? 'bottom-full mb-1' : 'top-full mt-1'} left-0 z-50 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded shadow-lg py-1 min-w-[200px] max-h-72 flex flex-col`}> +
+ setDepPickerSearch(e.target.value)} + onClick={e => e.stopPropagation()} + className="w-full text-xs px-2 py-1 border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-700 dark:text-gray-300 placeholder-gray-400 focus:outline-none focus:ring-1 focus:ring-blue-400" + /> +
+
+ {allEpicRows + .filter(r => + r.epicId !== row.epicId && + !epicDependencies.some(d => d.epicId === row.epicId && d.dependsOnId === r.epicId) && + r.epicName.toLowerCase().includes(depPickerSearch.toLowerCase()) + ) + .map(r => ( + + ))} + {allEpicRows.filter(r => + r.epicId !== row.epicId && + !epicDependencies.some(d => d.epicId === row.epicId && d.dependsOnId === r.epicId) && + r.epicName.toLowerCase().includes(depPickerSearch.toLowerCase()) + ).length === 0 && ( + No epics found + )} +
)}
From fd01babee8a8a3e678ba32fb9f71e5e1f83ece90 Mon Sep 17 00:00:00 2001 From: NickMonrad Date: Wed, 29 Apr 2026 11:01:38 +1000 Subject: [PATCH 13/15] fix: PNG export and top scrollbar width respect current scale Export was hardcoded to COL_W=64 (week scale) regardless of the active Week/Month/Quarter toggle, causing excess whitespace in month/quarter exports. Now uses ganttColW (scale-aware) and LABEL_W. Top mirror scrollbar width also corrected to use LABEL_W constant. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- client/src/pages/TimelinePage.tsx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/client/src/pages/TimelinePage.tsx b/client/src/pages/TimelinePage.tsx index 1bbd86b..a846c08 100644 --- a/client/src/pages/TimelinePage.tsx +++ b/client/src/pages/TimelinePage.tsx @@ -11,7 +11,7 @@ import ResourceHistogram from '../components/timeline/ResourceHistogram' import TimelineTooltip from '../components/timeline/TimelineTooltip' import { getEpicColour } from '../lib/epicColours' import type { GanttScale } from '../hooks/useGanttLayout' -import { colWForScale } from '../hooks/useGanttLayout' +import { colWForScale, LABEL_W } from '../hooks/useGanttLayout' const CATEGORY_HEADER_BG: Record = { ENGINEERING: 'bg-blue-100', @@ -318,10 +318,9 @@ export default function TimelinePage() { const container = ganttContainerRef.current if (!container) return - // Exact dimensions: all panels share labelW=300 and colW=64 - const EXPORT_LABEL_W = 300 - const EXPORT_COL_W = 64 - const fullWidth = EXPORT_LABEL_W + totalWeeks * EXPORT_COL_W + // Exact dimensions: label panel + chart columns at the current scale + const EXPORT_LABEL_W = LABEL_W + const fullWidth = EXPORT_LABEL_W + totalWeeks * ganttColW const fullHeight = container.scrollHeight // Dark-mode aware background colour — read from DOM since handler is outside hook scope @@ -959,7 +958,7 @@ export default function TimelinePage() { style={{ height: 12 }} onScroll={handleTopScroll} > -
+
Date: Wed, 29 Apr 2026 15:10:13 +1000 Subject: [PATCH 14/15] feat(#221,#229): timeline scale/year, allocation editing, CSV TemplateSize, Gantt UX polish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add week/month/quarter/year scale toggle to Timeline Gantt - Year scale: H1/H2 top row, Q1-Q4 bottom row, 8px/week column width - TemplateSize column in backlog CSV — auto-expand template tasks on import (XS/S/M/L/XL) - Cross-epic FeatureDependsOn in CSV import via qualified format (Epic::Feature) - Allocation mode (T&M/Full Project/Timeline) and % editing in Resource Counts panel - Start/end week inputs for Timeline allocation mode named resources - Expand All / Collapse All toggle in Gantt label panel header - Dep picker search filter on epic dependency dropdown - Top mirror scrollbar synced with Gantt horizontal scroll - Full-width Gantt layout (removes empty side margins) - Onboarding/buffer zone date calculation fix (computeDates now applies onboardingWeeks offset) - Adaptive zone labels at compressed scales (Onboarding / Onbrd / O) - Fix label column width alignment (LABEL_W=380 applied to ResourceHistogram and NamedResourcesPanel) - Fix histogram bars invisible at year scale (proportional inset instead of hardcoded 8px) - Fix auto-reschedule on resource changes — only fires on first run (entries.length === 0) - Fix expand/collapse state reset on timeline refetch — use knownEpicIds ref to track seen epics - Fix named resource T&M histogram showing full pool demand per row — divide by person count - PNG export and top scrollbar width respect active scale Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- README.md | 12 +- client/src/components/timeline/GanttChart.tsx | 142 ++++++++++++++++-- .../components/timeline/GanttLabelPanel.tsx | 28 +++- .../components/timeline/ResourceHistogram.tsx | 5 +- client/src/hooks/useGanttLayout.ts | 3 +- client/src/pages/TimelinePage.tsx | 120 ++++++++++++--- client/src/types/backlog.ts | 3 + docs/screenshots/backlog.png | Bin 59336 -> 63849 bytes docs/screenshots/effort-review.png | Bin 57152 -> 58607 bytes docs/screenshots/projects.png | Bin 366214 -> 363334 bytes docs/screenshots/resource-profile.png | Bin 122822 -> 133459 bytes docs/screenshots/templates.png | Bin 30737 -> 151596 bytes docs/screenshots/timeline.png | Bin 42173 -> 45448 bytes server/src/routes/timeline.ts | 18 ++- 14 files changed, 275 insertions(+), 56 deletions(-) diff --git a/README.md b/README.md index 5cee216..e030981 100644 --- a/README.md +++ b/README.md @@ -219,6 +219,7 @@ Day rates per resource type (global defaults + project overrides) and cost colum | Doc Generator v2 (continued) — redesigned Documents page (generation panel + document grid), Gantt chart section (server-side SVG), sections metadata on document cards, project name in label/filename, HTML preserved in CSV export for round-trip fidelity | #166 | | Quick wins — dark mode description contrast, project settings tax/onboarding fields, backlog feature mode (sequential/parallel) badges, scope toggle pill redesign, CSV import row colouring, unrated resource warning improvements; Gantt PDF sanitize-html fix + landscape page; pin axios to 1.14.0 (supply chain safety) | #220 | | Backlog dependency tracking — EpicDependency schema + API (circular dep detection), epic dep hard constraints in timeline scheduler, epic dep arrows on Timeline Gantt, dep selector UI on backlog epic/feature rows, EpicDependsOn/FeatureDependsOn columns in CSV import/export | #228 | +| Timeline scale toggle (week/month/quarter/year), cross-epic FeatureDependsOn in CSV, TemplateSize column in backlog CSV for template task auto-expand; Year scale (H1/H2 top row, Q1–Q4 bottom row); allocation mode/% + timeline start/end weeks in Resource Counts; Expand All / Collapse All toggle; dep picker search filter; top scrollbar mirror; full-width Gantt layout; named resource per-person T&M histogram; onboarding/buffer zone calc fix; auto-reschedule prevention on resource changes | #TBD | --- @@ -233,17 +234,6 @@ Day rates per resource type (global defaults + project overrides) and cost colum | # | Title | |---|---| | [#108](https://github.com/NickMonrad/monrad-estimator/issues/108) | docs: comprehensive functional specification (`docs/FUNCTIONAL_SPEC.md`) | -| [#109](https://github.com/NickMonrad/monrad-estimator/issues/109) | Global Customer entity (name, description, account code, CRM link) + link to projects | -| [#57](https://github.com/NickMonrad/monrad-estimator/issues/57) | Template tasks: assumptions + description fields | -| [#61](https://github.com/NickMonrad/monrad-estimator/issues/61) | Template tasks: percentage-based tasks (% of cumulative totals) | -| [#56](https://github.com/NickMonrad/monrad-estimator/issues/56) | Clone project | -| [#64](https://github.com/NickMonrad/monrad-estimator/issues/64) | Global configuration menu (resource types, templates, overhead defaults) | -| [#23](https://github.com/NickMonrad/monrad-estimator/issues/23) | Global default overheads, inheritable per project | -| [#46](https://github.com/NickMonrad/monrad-estimator/issues/46) | Soft-delete templates with restore | -| [#62](https://github.com/NickMonrad/monrad-estimator/issues/62) | Refactor: flatMap in effort.ts + snapshots.ts | -| [#19](https://github.com/NickMonrad/monrad-estimator/issues/19) | Apply template button — improve discoverability | -| [#69](https://github.com/NickMonrad/monrad-estimator/issues/69) | GST configurable rate per project via Project Settings (ex-GST/inc-GST totals already ship in Resource Profile; rate UI missing) | -| [#229](https://github.com/NickMonrad/monrad-estimator/issues/229) | CSV import: auto-expand template tasks and backfill estimates from template sizing (requires new TemplateSize column) | ### 🚀 Feature ideas | # | Title | diff --git a/client/src/components/timeline/GanttChart.tsx b/client/src/components/timeline/GanttChart.tsx index 579e6c8..dcf3ede 100644 --- a/client/src/components/timeline/GanttChart.tsx +++ b/client/src/components/timeline/GanttChart.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useMemo } from 'react' +import { useState, useEffect, useMemo, useRef } from 'react' import type { TimelineEntry } from '../../types/backlog' import { useIsDark } from '../../hooks/useIsDark' import { @@ -91,6 +91,36 @@ function buildQuarterGroups(totalWeeks: number, startDate: Date | null): GroupBa return groups } +/** Group totalWeeks into half-year bands (H1/H2). */ +function buildHalfYearGroups(totalWeeks: number, startDate: Date | null): GroupBand[] { + if (!startDate) { + const groups: GroupBand[] = [] + for (let w = 0; w < totalWeeks; w += 26) { + const half = Math.floor(w / 26) + groups.push({ label: `H${(half % 2) + 1}`, startWeek: w, endWeek: Math.min(w + 26, totalWeeks) }) + } + return groups + } + const groups: GroupBand[] = [] + let currentKey = -1 + let groupStart = 0 + for (let w = 0; w <= totalWeeks; w++) { + const d = addDays(startDate, w * 7) + const half = d.getMonth() < 6 ? 0 : 1 + const key = d.getFullYear() * 10 + half + if (w === totalWeeks || key !== currentKey) { + if (w > 0 && currentKey !== -1) { + const halfNum = (currentKey % 10) + 1 + const year = Math.floor(currentKey / 10) + groups.push({ label: `H${halfNum} ${year}`, startWeek: groupStart, endWeek: w }) + } + currentKey = key + groupStart = w + } + } + return groups +} + // --------------------------------------------------------------------------- // Props // --------------------------------------------------------------------------- @@ -160,11 +190,33 @@ export default function GanttChart({ const colW = colWForScale(scale) const [expandedFeatures, setExpandedFeatures] = useState>(new Set()) const [expandedEpics, setExpandedEpics] = useState>(new Set()) + // Tracks ALL epic IDs ever seen — separate from expandedEpics so "Collapse All" doesn't + // make every epic look "new" on the next entries refetch. + const knownEpicIds = useRef>(new Set()) - // Initialise expandedEpics with all unique epic IDs whenever entries change useEffect(() => { const ids = new Set(entries.map(e => e.epicId)) - setExpandedEpics(ids) + if (knownEpicIds.current.size === 0 && ids.size > 0) { + // First load — expand all and record as known + knownEpicIds.current = new Set(ids) + setExpandedEpics(ids) + } else if (ids.size > 0) { + // Only auto-expand epics that are genuinely new (not seen before) + const newIds: string[] = [] + for (const id of ids) { + if (!knownEpicIds.current.has(id)) { + newIds.push(id) + knownEpicIds.current.add(id) + } + } + if (newIds.length > 0) { + setExpandedEpics(prev => { + const merged = new Set(prev) + for (const id of newIds) merged.add(id) + return merged + }) + } + } }, [entries]) const [tooltip, setTooltip] = useState<{ x: number; y: number; content: string } | null>(null) @@ -267,6 +319,10 @@ export default function GanttChart({ () => buildQuarterGroups(totalWeeks, projectStartDate), [totalWeeks, projectStartDate], ) + const halfYearGroups = useMemo( + () => buildHalfYearGroups(totalWeeks, projectStartDate), + [totalWeeks, projectStartDate], + ) // Two-row header mid-line Y position const HEADER_MID = 24 @@ -314,11 +370,19 @@ export default function GanttChart({ - - - Onboarding ({weekOffset}w) - + {weekOffset * colW >= 28 && ( + <> + + + {weekOffset * colW >= 80 + ? `Onboarding (${weekOffset}w)` + : weekOffset * colW >= 40 + ? `Onbrd` + : `O`} + + + )} @@ -330,13 +394,21 @@ export default function GanttChart({ - - - Buffer ({bufferWeeks}w) - + {bufferWeeks * colW >= 28 && ( + <> + + + {bufferWeeks * colW >= 64 + ? `Buffer (${bufferWeeks}w)` + : bufferWeeks * colW >= 36 + ? `Buf` + : `B`} + + + )} @@ -452,6 +524,46 @@ export default function GanttChart({ )} + {/* ── Year scale header: top row = half-year, bottom row = quarter abbrev ── */} + {scale === 'year' && ( + <> + + {/* Half-year group labels */} + {halfYearGroups.map((hg, hi) => { + const groupX = hg.startWeek * colW + const groupW = (hg.endWeek - hg.startWeek) * colW + return ( + + + + {hg.label} + + + ) + })} + {/* Quarter bands in bottom row */} + {quarterGroups.map((qg, qi) => { + const groupX = qg.startWeek * colW + const groupW = (qg.endWeek - qg.startWeek) * colW + // Extract just the quarter number for the abbreviated label + const qLabel = qg.label.startsWith('Q') ? qg.label.split(' ')[0] : qg.label + return ( + + + + {qLabel} + + + ) + })} + + )} + {/* Header bottom border */} diff --git a/client/src/components/timeline/GanttLabelPanel.tsx b/client/src/components/timeline/GanttLabelPanel.tsx index 2f0ee71..910132e 100644 --- a/client/src/components/timeline/GanttLabelPanel.tsx +++ b/client/src/components/timeline/GanttLabelPanel.tsx @@ -53,6 +53,12 @@ export default function GanttLabelPanel({ // derive the full list of epic rows for the dep dropdown const allEpicRows = rows.filter((r): r is Extract => r.type === 'epic') + + // Expand / Collapse All toggle state + const allEpicIds = allEpicRows.map(r => r.epicId) + const allExpanded = allEpicIds.length > 0 && allEpicIds.every(id => expandedEpics.has(id)) + const allCollapsed = allEpicIds.length > 0 && allEpicIds.every(id => !expandedEpics.has(id)) + return (
Feature + + {/* Expand All / Collapse All pill toggle */} + {allEpicIds.length > 0 && ( +
+ + +
+ )}
{/* Label rows */} diff --git a/client/src/components/timeline/ResourceHistogram.tsx b/client/src/components/timeline/ResourceHistogram.tsx index ad8ebaa..994bfed 100644 --- a/client/src/components/timeline/ResourceHistogram.tsx +++ b/client/src/components/timeline/ResourceHistogram.tsx @@ -258,8 +258,9 @@ export default function ResourceHistogram({ const cap = capacityLookup.get(`${w}|${rt.name}`) ?? 0 const barH = Math.min(demand * scale, BAR_MAX_H + 6) - const barX = (w + weekOffset) * colW + 4 - const barW = colW - 8 + const inset = Math.min(4, Math.max(1, Math.floor(colW / 4))) + const barX = (w + weekOffset) * colW + inset + const barW = Math.max(1, colW - inset * 2) const barY = rowY + ROW_H - 6 - barH const fill = barColour(demand, cap) diff --git a/client/src/hooks/useGanttLayout.ts b/client/src/hooks/useGanttLayout.ts index 9240532..95f7c55 100644 --- a/client/src/hooks/useGanttLayout.ts +++ b/client/src/hooks/useGanttLayout.ts @@ -69,13 +69,14 @@ export interface GanttDraggingState { // --------------------------------------------------------------------------- // Scale type // --------------------------------------------------------------------------- -export type GanttScale = 'week' | 'month' | 'quarter' +export type GanttScale = 'week' | 'month' | 'quarter' | 'year' /** Returns the pixel width per week for the given scale. */ export function colWForScale(scale: GanttScale): number { switch (scale) { case 'month': return 28 case 'quarter': return 16 + case 'year': return 8 default: return 64 } } diff --git a/client/src/pages/TimelinePage.tsx b/client/src/pages/TimelinePage.tsx index a846c08..86d37e4 100644 --- a/client/src/pages/TimelinePage.tsx +++ b/client/src/pages/TimelinePage.tsx @@ -159,9 +159,12 @@ function NamedResourcesPanel({ const rtDemand = demandByRt.get(rtName) if (isEffort && rtDemand) { - // T&M: render a demand-following mini histogram + // T&M: render a demand-following mini histogram per person. + // weeklyDemand tracks the whole resource type pool, so divide by + // the number of named resources to get each person's share. + const personCount = Math.max(people.length, 1) const ROW_H = 28 - const maxCap = Math.max(...Array.from(rtDemand.values()).map(d => d.capacity), 1) + const maxCap = Math.max(...Array.from(rtDemand.values()).map(d => d.capacity / personCount), 1) return (
{ const d = rtDemand.get(w) if (!d || d.demand <= 0) return null - const pct = Math.min(d.demand / maxCap, 1) + const personDemand = d.demand / personCount + const personCap = d.capacity / personCount + const pct = Math.min(personDemand / maxCap, 1) const barH = Math.max(Math.round(pct * ROW_H), 2) return ( @@ -191,7 +196,7 @@ function NamedResourcesPanel({ onMouseEnter={(e) => setTooltip({ x: e.clientX, y: e.clientY, - content: `${nr.name} · T&M\nWk ${w}: ${d.demand.toFixed(1)} / ${d.capacity.toFixed(1)} days (${Math.round(d.demand / d.capacity * 100)}%)`, + content: `${nr.name} · T&M\nWk ${w}: ${personDemand.toFixed(1)} / ${personCap.toFixed(1)} days (${Math.round(personDemand / personCap * 100)}%)`, })} onMouseMove={(e) => setTooltip(prev => prev ? { ...prev, x: e.clientX, y: e.clientY } : prev)} onMouseLeave={() => setTooltip(null)} @@ -410,13 +415,15 @@ export default function TimelinePage() { } }, [editingFeatureId, timeline]) - // Auto-schedule on page load so features added via CSV import always appear. - // The scheduler is idempotent — manual overrides are preserved. + // Auto-schedule on page load ONLY if no entries exist yet (first run for new projects). + // For projects with existing entries, the user drives rescheduling via the button. useEffect(() => { if (!initialScheduleDone.current && timeline !== undefined && project !== undefined) { initialScheduleDone.current = true - const body = project.startDate ? { startDate: project.startDate.slice(0, 10), resourceLevel } : { resourceLevel } - scheduleTimeline.mutate(body) + if (timeline.entries.length === 0) { + const body = project.startDate ? { startDate: project.startDate.slice(0, 10), resourceLevel } : { resourceLevel } + scheduleTimeline.mutate(body) + } } }, [timeline, project]) @@ -548,7 +555,7 @@ export default function TimelinePage() { if (data.dayRate !== undefined) payload.dayRate = data.dayRate return api.put(`/projects/${projectId}/resource-types/${id}`, payload).then(r => r.data) }, - onSuccess: () => qc.invalidateQueries({ queryKey: ['resource-types', projectId] }), + onSuccess: () => { qc.invalidateQueries({ queryKey: ['resource-types', projectId] }); setScheduleStale(true) }, }) const addNamedResource = useMutation({ @@ -559,6 +566,7 @@ export default function TimelinePage() { }).then(r => r.data), onSuccess: () => { qc.invalidateQueries({ queryKey: ['timeline', projectId] }) + setScheduleStale(true) }, }) @@ -567,6 +575,16 @@ export default function TimelinePage() { api.delete(`/projects/${projectId}/resource-types/${rtId}/named-resources/${nrId}`).then(r => r.data), onSuccess: () => { qc.invalidateQueries({ queryKey: ['timeline', projectId] }) + setScheduleStale(true) + }, + }) + + const updateNamedResource = useMutation({ + mutationFn: ({ rtId, nrId, allocationMode, allocationPercent, allocationStartWeek, allocationEndWeek }: { rtId: string; nrId: string; allocationMode: string; allocationPercent: number; allocationStartWeek?: number | null; allocationEndWeek?: number | null }) => + api.patch(`/projects/${projectId}/resource-types/${rtId}/named-resources/${nrId}`, { allocationMode, allocationPercent, allocationStartWeek, allocationEndWeek }).then(r => r.data), + onSuccess: () => { + qc.invalidateQueries({ queryKey: ['timeline', projectId] }) + setScheduleStale(true) }, }) @@ -813,7 +831,7 @@ export default function TimelinePage() { {/* Stale schedule banner */} {scheduleStale && (
- ⚠ Dependencies or epic mode changed — re-run Auto-schedule to apply. + ⚠ Schedule may be stale (dependencies, epic mode, or resourcing changed) — re-run Auto-schedule to apply. @@ -874,14 +892,78 @@ export default function TimelinePage() { {nrs.length > 0 && (
{nrs.map((nr, i) => ( -
- {nr.name} - {nr.startWeek != null && W{nr.startWeek}–{nr.endWeek ?? '∞'}} - {nr.allocationPct}% +
+ {nr.name} + {/* Mode selector */} + {nr.id && ( + + )} + {/* % input — only shown for non-EFFORT modes */} + {nr.id && (nr.allocationMode ?? 'EFFORT') !== 'EFFORT' && ( +
+ { + const val = Math.min(100, Math.max(1, parseInt(e.target.value) || 100)) + updateNamedResource.mutate({ rtId: rt.id, nrId: nr.id!, allocationMode: nr.allocationMode ?? 'EFFORT', allocationPercent: val }) + }} + className="w-12 text-xs border border-gray-200 dark:border-gray-600 rounded px-1 py-0 text-right bg-white dark:bg-gray-700 text-gray-700 dark:text-gray-300" + /> + % +
+ )} + {/* Start/end week — only for TIMELINE mode */} + {nr.id && nr.allocationMode === 'TIMELINE' && ( +
+ W + { + const val = e.target.value.trim() === '' ? null : Math.max(1, parseInt(e.target.value) || 1) + updateNamedResource.mutate({ rtId: rt.id, nrId: nr.id!, allocationMode: 'TIMELINE', allocationPercent: nr.allocationPercent ?? 100, allocationStartWeek: val }) + }} + className="w-10 text-xs border border-gray-200 dark:border-gray-600 rounded px-1 py-0 text-right bg-white dark:bg-gray-700 text-gray-700 dark:text-gray-300 placeholder-gray-300" + /> + + { + const val = e.target.value.trim() === '' ? null : Math.max(1, parseInt(e.target.value) || 1) + updateNamedResource.mutate({ rtId: rt.id, nrId: nr.id!, allocationMode: 'TIMELINE', allocationPercent: nr.allocationPercent ?? 100, allocationEndWeek: val }) + }} + className="w-10 text-xs border border-gray-200 dark:border-gray-600 rounded px-1 py-0 text-right bg-white dark:bg-gray-700 text-gray-700 dark:text-gray-300 placeholder-gray-300" + /> +
+ )} + {/* remove button */} {nr.id && ( )} @@ -926,7 +1008,7 @@ export default function TimelinePage() {

Gantt Chart

{/* Scale toggle */}
- {(['week', 'month', 'quarter'] as const).map(s => ( + {(['week', 'month', 'quarter', 'year'] as const).map(s => ( ))}
@@ -1017,7 +1099,7 @@ export default function TimelinePage() { weeklyCapacity={timeline.weeklyCapacity} totalWeeks={totalWeeks} colW={ganttColW} - labelW={300} + labelW={LABEL_W} weekOffset={timeline.onboardingWeeks ?? 0} scrollContainerRef={histScrollRef} onScroll={handleHistScroll} @@ -1030,7 +1112,7 @@ export default function TimelinePage() { namedResources={timeline.namedResources} totalWeeks={totalWeeks} colW={ganttColW} - labelW={300} + labelW={LABEL_W} weeklyDemand={timeline.weeklyDemand} weekOffset={timeline.onboardingWeeks ?? 0} /> diff --git a/client/src/types/backlog.ts b/client/src/types/backlog.ts index 4c7b567..612d756 100644 --- a/client/src/types/backlog.ts +++ b/client/src/types/backlog.ts @@ -180,6 +180,9 @@ export interface NamedResourceEntry { endWeek: number | null allocationPct: number allocationMode?: string + allocationPercent?: number + allocationStartWeek?: number | null + allocationEndWeek?: number | null } export interface TimelineSummary { diff --git a/docs/screenshots/backlog.png b/docs/screenshots/backlog.png index 2c698e3e8f5fab8c513f7005505cd7df443917b5..3990374a7f07c1d88941318c9c15db68101cb7b7 100644 GIT binary patch literal 63849 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

p3PdolE;E1H`Z4#b((6( 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 diff --git a/docs/screenshots/effort-review.png b/docs/screenshots/effort-review.png index da8f21d17d859b02d6fb663cac36471290a4035f..d9a5acba8ef16e78c2c1b8101fa0c15b1e2f5ac8 100644 GIT binary patch literal 58607 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 HZgGDA7f5iF literal 57152 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 z�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

4Hz0{lz+TFb@Tb>j`+1gtY*ib0Lh$?s(xJ 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�{J5ugFd{NEE+)-@^s@yZwHK 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

CLrhWygUfW20xPO9?-7rDTJp7ndGf&1-Vc4 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 sNG<($bis|7jjsbzjK;ZBy{5e&J#N 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