Add a Closed column to Tasks subtask rows, showing date + source directly

Each Done row now carries closedDate/closedSource fields and a new
"Closed" table column (date + source, blank for Still open/Ongoing rows).
Progress Log stays as the cross-track aggregated view -- this makes each
card fully self-contained on its own too, rather than requiring a trip to
Notes or Progress Log to see when/why something closed.
This commit is contained in:
beantownbabe committed 2026-08-25 11:03:07 +02:00
1 parent c3dd685511
commit 6f8a5e2bc7
1 file changed
+10 -9
+10 -9
View File
@@ -6364,7 +6364,7 @@
label: "Outreach",
subtasks: [
{ subtask: "PE-company LinkedIn sends", ask: "Send the 12 PE-company LinkedIn connection requests — drafts ready and verified", kpi: "—", status: "Still open, manual send still pending with Mckinley" },
{ subtask: "13-company backlog", ask: "WBG Device Manufacturer, Device Testing, Radiation Hardness — verified named contact and role for each", kpi: "13/13", status: "Done" },
{ subtask: "13-company backlog", ask: "WBG Device Manufacturer, Device Testing, Radiation Hardness — verified named contact and role for each", kpi: "13/13", status: "Done", closedDate: "2026-08-25", closedSource: "Peter's weekly task" },
{ subtask: "Duplicate file cleanup", ask: "Contact_List_Phase1_Mckinley (1).xlsx and Updated_Contact_List_Phase1_Mckinley (1).xlsx — both harmless leftovers", kpi: "—", status: "Still open, low priority" }
],
notes: [
@@ -6406,7 +6406,7 @@
id: "open-items-crm-research",
label: "CRM Research",
subtasks: [
{ subtask: "Requirements Definition", ask: "Work Package", kpi: "2026-08-18 → 2026-08-22", status: "Done" },
{ subtask: "Requirements Definition", ask: "Work Package", kpi: "2026-08-18 → 2026-08-22", status: "Done", closedDate: "2026-08-22", closedSource: "Peter's weekly task" },
{ subtask: "Candidate Research & Vendor Verification", ask: "Work Package", kpi: "2026-08-22 → 2026-08-27", status: "Still open" },
{ subtask: "Pricing & Cost Comparison", ask: "Work Package", kpi: "2026-08-27 → 2026-08-29", status: "Still open" },
{ subtask: "Dashboard Build (CRM Research Page)", ask: "Work Package", kpi: "2026-08-29 → 2026-08-30", status: "Still open" },
@@ -6435,7 +6435,7 @@
id: "open-items-market-intelligence",
label: "Market Intelligence",
subtasks: [
{ subtask: "Prospect Scout built and populated", ask: "New capability under Market Intelligence, mirroring Conference Scout's pattern — 73 companies/institutions across 6 categories, 60/73 enriched with named contacts", kpi: "73 companies", status: "Done" }
{ subtask: "Prospect Scout built and populated", ask: "New capability under Market Intelligence, mirroring Conference Scout's pattern — 73 companies/institutions across 6 categories, 60/73 enriched with named contacts", kpi: "73 companies", status: "Done", closedDate: "2026-08-22", closedSource: "Mckinley-directed" }
],
notes: [
{ date: "2026-08-22", source: "Mckinley-directed", text: "Prospect Scout built and populated: new Prospect Scout capability built under Market Intelligence, mirroring Conference Scout's pattern. Two research sweeps produced 73 companies/institutions across 6 categories (Semiconductor Materials & Substrates, Power Electronics, WBG Device Manufacturer, Device Testing, Radiation Hardness, Research & Collaborations) — 68 genuinely new beyond Peter's original 25-company list. Outreach then enriched all 73 with named contacts: 60/73 now have a verified contact and role. Standout find: Thu Nhi Tran Caliste, Industrial Liaison Engineer on ESRF's BM05 beamline — a near-perfect match for TXproducts' X-ray topography service." }
@@ -6464,10 +6464,10 @@
id: "week-2026-08-17",
label: "Week of 17–21 Aug 2026",
subtasks: [
{ subtask: "PE companies", ask: "Search LinkedIn for employees of power electronics companies from Peter's market research", kpi: ">10 people", status: "Done" },
{ subtask: "SPIE attendees", ask: "Check whether employees of those same PE companies attend SPIE O&P 2026", kpi: ">10", status: "Done" },
{ subtask: "Message draft", ask: "Design first-contact info material to send", kpi: ">2", status: "Done" },
{ subtask: "IPP for CRM", ask: "Define CRM requirements, stay solution-unbiased", kpi: "—", status: "Done" },
{ subtask: "PE companies", ask: "Search LinkedIn for employees of power electronics companies from Peter's market research", kpi: ">10 people", status: "Done", closedDate: "2026-08-21", closedSource: "Peter's weekly task" },
{ subtask: "SPIE attendees", ask: "Check whether employees of those same PE companies attend SPIE O&P 2026", kpi: ">10", status: "Done", closedDate: "2026-08-21", closedSource: "Peter's weekly task" },
{ subtask: "Message draft", ask: "Design first-contact info material to send", kpi: ">2", status: "Done", closedDate: "2026-08-21", closedSource: "Peter's weekly task" },
{ subtask: "IPP for CRM", ask: "Define CRM requirements, stay solution-unbiased", kpi: "—", status: "Done", closedDate: "2026-08-21", closedSource: "Peter's weekly task" },
{ subtask: "LinkedIn Posts", ask: "Continue posts per the Canva whiteboard", kpi: "4 posts", status: "Ongoing" }
],
notes: [
@@ -6584,11 +6584,12 @@
body = "<p class=\"narrative\">No open items right now.</p>";
} else {
var rows = entry.subtasks.map(function (s) {
return "<tr><td>" + tasksEsc(s.subtask) + "</td><td>" + tasksEsc(s.ask) + "</td><td>" + tasksEsc(s.kpi) + "</td><td>" + taskStatusIcon(s.status) + tasksEsc(s.status) + "</td></tr>";
var closed = s.closedDate ? tasksEsc(s.closedDate) + " · " + tasksEsc(s.closedSource) : "";
return "<tr><td>" + tasksEsc(s.subtask) + "</td><td>" + tasksEsc(s.ask) + "</td><td>" + tasksEsc(s.kpi) + "</td><td>" + taskStatusIcon(s.status) + tasksEsc(s.status) + "</td><td>" + closed + "</td></tr>";
}).join("");
body =
"<table class=\"crm-detail-table\">" +
"<thead><tr><th>Subtask</th><th>Ask</th><th>KPI</th><th>Status</th></tr></thead>" +
"<thead><tr><th>Subtask</th><th>Ask</th><th>KPI</th><th>Status</th><th>Closed</th></tr></thead>" +
"<tbody>" + rows + "</tbody>" +
"</table>";
}