diff --git a/migrations/0006_roadmap_considering.sql b/migrations/0006_roadmap_considering.sql new file mode 100644 index 0000000..d3428e3 --- /dev/null +++ b/migrations/0006_roadmap_considering.sql @@ -0,0 +1,40 @@ +-- Roadmap status enum gains a fourth value `considering` for items that are +-- under discussion but not yet committed to. Same migration also renames +-- the existing `beta` value to `in_beta` so the canonical names line up +-- with the v4 spec (no second display label layer needed). +-- +-- SQLite can't widen a CHECK constraint in place, so this is a full table +-- rebuild. roadmap_attributions has an ON DELETE CASCADE FK to +-- roadmap_items(id), so foreign keys are toggled off around the rebuild to +-- preserve attribution rows across the DROP/RENAME. + +PRAGMA foreign_keys = OFF; + +CREATE TABLE roadmap_items_new ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + title TEXT NOT NULL, + description TEXT NOT NULL DEFAULT '', + status TEXT NOT NULL DEFAULT 'exploring' + CHECK(status IN ('shipping','in_beta','exploring','considering')), + target TEXT, + display_order INTEGER NOT NULL DEFAULT 0, + shipped_at TEXT, + created_at TEXT NOT NULL DEFAULT (datetime('now')), + updated_at TEXT NOT NULL DEFAULT (datetime('now')) +); + +INSERT INTO roadmap_items_new + (id, title, description, status, target, display_order, shipped_at, created_at, updated_at) +SELECT + id, title, description, + CASE status WHEN 'beta' THEN 'in_beta' ELSE status END, + target, display_order, shipped_at, created_at, updated_at +FROM roadmap_items; + +DROP TABLE roadmap_items; +ALTER TABLE roadmap_items_new RENAME TO roadmap_items; + +CREATE INDEX idx_roadmap_status ON roadmap_items(status, display_order); +CREATE INDEX idx_roadmap_shipped ON roadmap_items(shipped_at); + +PRAGMA foreign_keys = ON; diff --git a/scripts/seed-roadmap.js b/scripts/seed-roadmap.js index 06abe6f..27879c2 100644 --- a/scripts/seed-roadmap.js +++ b/scripts/seed-roadmap.js @@ -30,7 +30,7 @@ const md = readFileSync(mdPath, 'utf8'); // schema's three statuses. In-progress items are actively being built and // tested with pilots → beta. Next/Later are roadmap intent, not started → exploring. const SECTION_STATUS = { - 'In progress': { status: 'beta', target: null }, + 'In progress': { status: 'in_beta', target: null }, 'Next': { status: 'exploring', target: 'Next quarter' }, 'Later': { status: 'exploring', target: 'Later this year' }, }; diff --git a/src/components/MembershipCard.astro b/src/components/MembershipCard.astro index 3e018e3..fdaee04 100644 --- a/src/components/MembershipCard.astro +++ b/src/components/MembershipCard.astro @@ -51,7 +51,7 @@ const tags = readFocusTags(member.focus_tags);