From 41110204519782990a2713a1d3541a025cda98d5 Mon Sep 17 00:00:00 2001 From: Robin Choice Date: Wed, 20 May 2026 16:28:42 +0200 Subject: [PATCH] feat: auto-seed today's cards on page load (2026-05-20) Seeder runs once per CARD_SEED_VERSION, adds tasks to Ready columns across tiefgang, psk, k4, pleasance, privat, einzelunternehmer, musichub, doener. Co-Authored-By: Claude Sonnet 4.6 --- index.html | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index e444df8..020d5c2 100644 --- a/index.html +++ b/index.html @@ -2381,15 +2381,40 @@ if (window.location.protocol === 'file:') { loadGroups(); loadBoardOrder(); loadState(); +seedCards(); renderSidebar(); loadIdeas(); renderIdeas(); show('doener'); setView('overview'); +// ── CARD SEEDER ────────────────────────────────────────────────────────────── +const CARD_SEED_VERSION = '2026-05-20-a'; +function seedCards() { + if (localStorage.getItem('kanban_cards_seeded') === CARD_SEED_VERSION) return; + const batch = { + tiefgang: ['4 Songs mit KI-Tools mastern','4 Songs in die Cloud hochladen'], + psk: ['Control Chart ↔ Agent Chart gegenüberstellen','Gyra aufhübschen — neues Beispiel (SLA + Definition of Workflow)','Stammbaum: Lean → Agil → Kanban → Scrum','Lead Time & Flow Efficiency — kurzer Abriss','Frage 185: 3 vs. 5 Feedback Loops in Scrum klären','SLE-Formel zugänglich erklären'], + k4: ['PSK-Karten aus Board entfernen','Kontext durchforsten + neue Karten anlegen'], + pleasance: ['DNS: api-Subdomain eintragen','Resend + Kontaktformular-E-Mail testen'], + privat: ['Roborock starten','Wäsche anschmeißen'], + einzelunternehmer: ['Lexoffice: Stand prüfen'], + musichub: ['Status quo klären','Neues Sprint Goal definieren'], + doener: ['App-Store-Launch als Sprint Goal definieren'], + }; + Object.entries(batch).forEach(([id, tasks]) => { + if (!BOARDS[id]) return; + const ready = BOARDS[id].cols.find(c => c.id === 'ready'); + if (!ready) return; + tasks.forEach(t => { if (!ready.tasks.find(c => c.t === t)) ready.tasks.push({t}); }); + }); + saveState(); + localStorage.setItem('kanban_cards_seeded', CARD_SEED_VERSION); +} + // ── EXPORT / IMPORT ────────────────────────────────────────────────────────── function exportState() { - const keys = ['kanban_v2','kanban_groups','kanban_board_order','kanban_ideas','kanban_ideas_seeded']; + const keys = ['kanban_v2','kanban_groups','kanban_board_order','kanban_ideas','kanban_ideas_seeded','kanban_cards_seeded']; const snap = {}; keys.forEach(k => { const v = localStorage.getItem(k); if (v !== null) snap[k] = v; }); const blob = new Blob([JSON.stringify(snap, null, 2)], {type:'application/json'});