-- ========================================== -- Chat Switchboard — 016 Surfaces -- ========================================== -- Surface registry for dynamic surface lifecycle. -- Core surfaces seeded at startup. Extension surfaces uploaded via admin. -- Consolidated v0.28.0: renumbered from 022. -- ========================================== CREATE TABLE IF NOT EXISTS surface_registry ( id TEXT PRIMARY KEY, title TEXT NOT NULL, manifest JSONB NOT NULL DEFAULT '{}', enabled BOOLEAN NOT NULL DEFAULT true, source TEXT NOT NULL DEFAULT 'core', installed_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); COMMENT ON TABLE surface_registry IS 'Registry of all surfaces (core + extension). Controls enable/disable and stores manifest metadata.'; COMMENT ON COLUMN surface_registry.source IS 'core = built-in, extension = uploaded via admin'; COMMENT ON COLUMN surface_registry.enabled IS 'Admin toggle — disabled surfaces redirect to / and hide from nav';